/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_NAVIPI_HXX #define INCLUDED_SW_SOURCE_UIBASE_INC_NAVIPI_HXX #include #include #include #include #include #include #include #include #include #include "conttree.hxx" #include #include class SwWrtShell; class SwNavigationPI; class SwNavigationChild; class SfxBindings; class NumEditAction; class SwView; class SwNavigationConfig; class SfxObjectShellLock; class SfxChildWindowContext; enum class RegionMode; class SpinField; class SwNavHelpToolBox : public ToolBox { VclPtr m_xDialog; virtual void MouseButtonDown(const MouseEvent &rEvt) override; virtual void RequestHelp( const HelpEvent& rHEvt ) override; virtual void dispose() override; public: SwNavHelpToolBox(Window* pParent); void SetDialog(SwNavigationPI* pDialog) { m_xDialog = pDialog; } ~SwNavHelpToolBox() override; }; class SwNavigationPI : public PanelLayout, public SfxControllerItem, public SfxListener { friend class SwNavigationChild; friend class SwContentTree; friend class SwGlobalTree; friend class SwNavigationPIUIObject; VclPtr m_aContentToolBox; VclPtr m_aGlobalToolBox; VclPtr m_xEdit; VclPtr m_aContentBox; VclPtr m_aContentTree; VclPtr m_aGlobalBox; VclPtr m_aGlobalTree; VclPtr m_aDocListBox; Idle m_aPageChgIdle; OUString m_sContentFileName; OUString m_aContextArr[3]; OUString m_aStatusArr[4]; std::unique_ptr m_pxObjectShell; SwView *m_pContentView; SwWrtShell *m_pContentWrtShell; SwView *m_pActContView; SwView *m_pCreateView; VclPtr m_pPopupWindow; VclPtr m_pFloatingWindow; SwNavigationConfig *m_pConfig; SfxBindings &m_rBindings; sal_uInt16 m_nAutoMarkIdx; RegionMode m_nRegionMode; // 0 - URL, 1 - region with link 2 - region without link Size m_aExpandedSize; bool m_bIsZoomedIn : 1; bool m_bGlobalMode : 1; bool IsZoomedIn() const {return m_bIsZoomedIn;} void ZoomOut(); void ZoomIn(); void FillBox(); void MakeMark(); DECL_LINK( DocListBoxSelectHdl, ListBox&, void ); DECL_LINK( ToolBoxSelectHdl, ToolBox *, void ); DECL_LINK( ToolBoxClickHdl, ToolBox *, void ); DECL_LINK( ToolBoxDropdownClickHdl, ToolBox*, void ); DECL_LINK( EditAction, NumEditAction&, void ); DECL_LINK( EditGetFocus, Control&, void ); DECL_LINK( DoneLink, SfxPoolItem *, void ); DECL_LINK( MenuSelectHdl, Menu *, bool ); DECL_LINK( ChangePageHdl, Timer*, void ); DECL_LINK( PageEditModifyHdl, SpinField&, void ); DECL_LINK( PopupModeEndHdl, FloatingWindow*, void ); DECL_LINK( ClosePopupWindow, SfxPopupWindow *, void ); void UsePage(); void SetPopupWindow( SfxPopupWindow* ); protected: // release ObjectShellLock early enough for app end virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override; NumEditAction& GetPageEdit(); void ToggleTree(); void SetGlobalMode(bool bSet) {m_bGlobalMode = bSet;} public: SwNavigationPI(SfxBindings*, vcl::Window*); virtual ~SwNavigationPI() override; virtual void dispose() override; void UpdateListBox(); void MoveOutline(SwOutlineNodes::size_type nSource, SwOutlineNodes::size_type nTarget, bool bWithCilds); virtual void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) override; virtual void StateChanged(StateChangedType nStateChange) override; static OUString CreateDropFileName( TransferableDataHelper& rData ); static OUString CleanEntry(const OUString& rEntry); RegionMode GetRegionDropMode() const {return m_nRegionMode;} void SetRegionDropMode(RegionMode nNewMode); sal_Int8 AcceptDrop(); sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); bool IsGlobalDoc() const; bool IsGlobalMode() const {return m_bGlobalMode;} SwView* GetCreateView() const; void CreateNavigationTool(const tools::Rectangle& rRect, bool bSetFocus, vcl::Window *pParent); FactoryFunction GetUITestFactory() const override; }; class SwNavigationChild : public SfxChildWindowContext { public: SwNavigationChild( vcl::Window* , sal_uInt16 nId, SfxBindings* ); //! soon obsolete ! static SfxChildWindowContext* CreateImpl(vcl::Window *pParent, SfxBindings *pBindings, SfxChildWinInfo* pInfo ); static void RegisterChildWindowContext(SfxModule *pMod); }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */