/* -*- 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_SVTOOLS_BREADCRUMB_HXX #define INCLUDED_SVTOOLS_BREADCRUMB_HXX #include #include #include #define SPACING 6 enum SvtBreadcrumbMode { ONLY_CURRENT_PATH = 0, ALL_VISITED = 1 }; struct BreadcrumbPath { BreadcrumbPath(weld::Container* pParent); std::unique_ptr m_xBuilder; std::unique_ptr m_xContainer; std::unique_ptr m_xLink; std::unique_ptr m_xSeparator; }; class Breadcrumb { private: weld::Container* m_pParent; int m_nMaxWidth; std::vector> m_aSegments; std::map m_aUris; OUString m_sRootName; OUString m_sClickedURL; OUString m_aCurrentURL; SvtBreadcrumbMode m_eMode; Link m_aClickHdl; void appendField(); bool showField( unsigned int nIndex, unsigned int nWidthMax ); DECL_LINK(SizeAllocHdl, const Size&, void); DECL_LINK(ClickLinkHdl, weld::LinkButton&, bool); public: Breadcrumb(weld::Container* pParent); ~Breadcrumb(); void EnableFields( bool bEnable ); void connect_clicked( const Link& rLink ); const OUString& GetHdlURL() const; void SetRootName( const OUString& rURL ); void SetURL( const OUString& rURL ); void SetMode( SvtBreadcrumbMode eMode ); }; #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */