summaryrefslogtreecommitdiffstats
path: root/fpicker/source/office/breadcrumb.hxx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--fpicker/source/office/breadcrumb.hxx73
1 files changed, 73 insertions, 0 deletions
diff --git a/fpicker/source/office/breadcrumb.hxx b/fpicker/source/office/breadcrumb.hxx
new file mode 100644
index 000000000..9fc66f9bc
--- /dev/null
+++ b/fpicker/source/office/breadcrumb.hxx
@@ -0,0 +1,73 @@
+/* -*- 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 <vcl/weld.hxx>
+#include <map>
+#include <vector>
+
+#define SPACING 6
+
+enum SvtBreadcrumbMode
+{
+ ONLY_CURRENT_PATH = 0,
+ ALL_VISITED = 1
+};
+
+struct BreadcrumbPath
+{
+ BreadcrumbPath(weld::Container* pParent);
+ std::unique_ptr<weld::Builder> m_xBuilder;
+ std::unique_ptr<weld::Container> m_xContainer;
+ std::unique_ptr<weld::LinkButton> m_xLink;
+ std::unique_ptr<weld::Label> m_xSeparator;
+};
+
+class Breadcrumb
+{
+private:
+ weld::Container* m_pParent;
+ int m_nMaxWidth;
+
+ std::vector<std::unique_ptr<BreadcrumbPath>> m_aSegments;
+ std::map<weld::LinkButton*, OUString> m_aUris;
+
+ OUString m_sRootName;
+ OUString m_sClickedURL;
+ OUString m_aCurrentURL;
+
+ SvtBreadcrumbMode m_eMode;
+
+ Link<Breadcrumb*,bool> 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<Breadcrumb*,bool>& 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: */