nss: upgrade to release 3.73
[LibreOffice.git] / sw / source / uibase / inc / navipi.hxx
blob498a8d3da7c5fdef6f10aeeb8429ee1434e23bcc
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_NAVIPI_HXX
20 #define INCLUDED_SW_SOURCE_UIBASE_INC_NAVIPI_HXX
22 #include <vcl/idle.hxx>
23 #include <svl/lstner.hxx>
24 #include <vcl/transfer.hxx>
25 #include <sfx2/childwin.hxx>
26 #include <sfx2/ctrlitem.hxx>
27 #include <sfx2/tbxctrl.hxx>
28 #include <sfx2/sidebar/ControllerItem.hxx>
29 #include <sfx2/weldutils.hxx>
30 #include <sfx2/sidebar/PanelLayout.hxx>
31 #include "conttree.hxx"
32 #include <ndarr.hxx>
33 #include <memory>
35 class SwWrtShell;
36 class SwNavigationPI;
37 class SwNavigationChild;
38 class SfxBindings;
39 class SwNavigationConfig;
40 class SwView;
41 class SfxObjectShellLock;
42 class SfxChildWindowContext;
43 enum class RegionMode;
44 class SpinField;
46 class SwNavigationPI : public PanelLayout
47 , public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
48 , public SfxListener
50 friend class SwNavigationChild;
51 friend class SwContentTree;
52 friend class SwGlobalTree;
53 friend class SwNavigationPIUIObject;
55 ::sfx2::sidebar::ControllerItem m_aDocFullName;
56 ::sfx2::sidebar::ControllerItem m_aPageStats;
58 std::unique_ptr<weld::Toolbar> m_xContent1ToolBox;
59 std::unique_ptr<weld::Toolbar> m_xContent2ToolBox;
60 std::unique_ptr<weld::Toolbar> m_xContent3ToolBox;
61 std::unique_ptr<weld::Toolbar> m_xContent4ToolBox;
62 std::unique_ptr<weld::Toolbar> m_xContent5ToolBox;
63 std::unique_ptr<weld::Toolbar> m_xContent6ToolBox;
64 std::unique_ptr<ToolbarUnoDispatcher> m_xContent2Dispatch;
65 std::unique_ptr<ToolbarUnoDispatcher> m_xContent3Dispatch;
66 std::unique_ptr<weld::Menu> m_xHeadingsMenu;
67 std::unique_ptr<weld::Menu> m_xDragModeMenu;
68 std::unique_ptr<weld::Menu> m_xUpdateMenu;
69 std::unique_ptr<weld::Menu> m_xInsertMenu;
70 std::unique_ptr<weld::Toolbar> m_xGlobalToolBox;
71 std::unique_ptr<weld::SpinButton> m_xEdit;
72 std::unique_ptr<weld::Widget> m_xContentBox;
73 std::unique_ptr<SwContentTree> m_xContentTree;
74 std::unique_ptr<weld::Widget> m_xGlobalBox;
75 std::unique_ptr<SwGlobalTree> m_xGlobalTree;
76 std::unique_ptr<weld::ComboBox> m_xDocListBox;
77 Idle m_aPageChgIdle;
78 OUString m_sContentFileName;
79 OUString m_aStatusArr[4];
81 std::unique_ptr<SfxObjectShellLock> m_pxObjectShell;
82 SwView *m_pContentView;
83 SwWrtShell *m_pContentWrtShell;
84 SwView *m_pActContView;
85 SwView *m_pCreateView;
87 SwNavigationConfig *m_pConfig;
88 SfxBindings &m_rBindings;
90 RegionMode m_nRegionMode; // 0 - URL, 1 - region with link 2 - region without link
91 Size m_aExpandedSize;
93 bool m_bIsZoomedIn : 1;
94 bool m_bGlobalMode : 1;
96 bool IsZoomedIn() const {return m_bIsZoomedIn;}
97 void ZoomOut();
98 void ZoomIn();
100 void FillBox();
102 DECL_LINK( DocListBoxSelectHdl, weld::ComboBox&, void );
103 DECL_LINK( ToolBoxSelectHdl, const OString&, void );
104 DECL_LINK( ToolBoxClickHdl, const OString&, void );
105 DECL_LINK( ToolBox5DropdownClickHdl, const OString&, void );
106 DECL_LINK( ToolBox6DropdownClickHdl, const OString&, void );
107 DECL_LINK( DoneLink, SfxPoolItem const *, void );
108 DECL_LINK( DropModeMenuSelectHdl, const OString&, void );
109 DECL_LINK( HeadingsMenuSelectHdl, const OString&, void );
110 DECL_LINK( GlobalMenuSelectHdl, const OString&, void );
111 DECL_LINK( ChangePageHdl, Timer*, void );
112 DECL_LINK( PageEditModifyHdl, weld::SpinButton&, void );
113 DECL_LINK( EditActionHdl, weld::Entry&, bool );
114 bool EditAction();
115 void UsePage();
117 protected:
119 // release ObjectShellLock early enough for app end
120 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
122 void ToggleTree();
123 void SetGlobalMode(bool bSet) {m_bGlobalMode = bSet;}
125 public:
127 static VclPtr<vcl::Window> Create(vcl::Window* pParent,
128 const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxFrame,
129 SfxBindings* pBindings);
130 SwNavigationPI(vcl::Window* pParent,
131 const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rxFrame,
132 SfxBindings* _pBindings);
133 virtual ~SwNavigationPI() override;
134 virtual void dispose() override;
136 void UpdateListBox();
137 void MoveOutline(SwOutlineNodes::size_type nSource, SwOutlineNodes::size_type nTarget);
139 virtual void NotifyItemUpdate(const sal_uInt16 nSId,
140 const SfxItemState eState,
141 const SfxPoolItem* pState) override;
143 virtual void GetControlState(const sal_uInt16 /*nSId*/,
144 boost::property_tree::ptree& /*rState*/) override {};
146 virtual void StateChanged(StateChangedType nStateChange) override;
148 static OUString CreateDropFileName( TransferableDataHelper& rData );
149 static OUString CleanEntry(const OUString& rEntry);
151 RegionMode GetRegionDropMode() const {return m_nRegionMode;}
152 void SetRegionDropMode(RegionMode nNewMode);
154 sal_Int8 AcceptDrop();
155 sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt );
157 bool IsGlobalDoc() const;
158 bool IsGlobalMode() const {return m_bGlobalMode;}
160 SwView* GetCreateView() const;
162 FactoryFunction GetUITestFactory() const override;
165 class SwNavigationChild : public SfxChildWindowContext
167 public:
168 SwNavigationChild( vcl::Window* ,
169 sal_uInt16 nId,
170 SfxBindings* );
172 //! soon obsolete !
173 static std::unique_ptr<SfxChildWindowContext> CreateImpl(vcl::Window *pParent,
174 SfxBindings *pBindings, SfxChildWinInfo* pInfo );
175 static void RegisterChildWindowContext(SfxModule *pMod);
178 #endif
180 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */