diff options
Diffstat (limited to 'sw/source/uibase/inc/navmgr.hxx')
-rw-r--r-- | sw/source/uibase/inc/navmgr.hxx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/sw/source/uibase/inc/navmgr.hxx b/sw/source/uibase/inc/navmgr.hxx new file mode 100644 index 000000000..858b990fd --- /dev/null +++ b/sw/source/uibase/inc/navmgr.hxx @@ -0,0 +1,58 @@ +/* -*- 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/. + */ +#ifndef INCLUDED_SW_SOURCE_UIBASE_INC_NAVMGR_HXX +#define INCLUDED_SW_SOURCE_UIBASE_INC_NAVMGR_HXX + +#include <vector> + +#include <unocrsr.hxx> + +class SwWrtShell; +struct SwPosition; +class SwUnoCursor; + +class SwNavigationMgr final : public SfxListener +{ +private: + /* + * List of entries in the navigation history + * Entries are SwUnoCursor because these gets corrected automatically + * when nodes are deleted. + * + * The navigation history behaves as a stack, to which items are added when we jump to a new position + * (e.g. click a link, or double click an entry from the navigator). + * Every use of the back/forward buttons results in moving the stack pointer within the navigation history + */ + typedef std::vector< sw::UnoCursorPointer > Stack_t; + Stack_t m_entries; + Stack_t::size_type m_nCurrent; /* Current position within the navigation history */ + SwWrtShell & m_rMyShell; /* The active shell within which the navigation occurs */ + + void GotoSwPosition(const SwPosition &rPos); + +public: + /* Constructor that initializes the shell to the current shell */ + SwNavigationMgr( SwWrtShell & rShell ); + ~SwNavigationMgr() override; + /* Can we go back in the history ? */ + bool backEnabled() ; + /* Can we go forward in the history ? */ + bool forwardEnabled(); + /* The method that is called when we click the back button */ + void goBack() ; + /* The method that is called when we click the forward button */ + void goForward() ; + /* The method that adds the position pPos to the navigation history */ + bool addEntry(const SwPosition& rPos); + /* to get notified if our cursors self-destruct */ + virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override; +}; +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |