summaryrefslogtreecommitdiffstats
path: root/src/libs/widgets/common/sidebar.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/widgets/common/sidebar.h')
-rw-r--r--src/libs/widgets/common/sidebar.h178
1 files changed, 178 insertions, 0 deletions
diff --git a/src/libs/widgets/common/sidebar.h b/src/libs/widgets/common/sidebar.h
new file mode 100644
index 00000000..8d2dc519
--- /dev/null
+++ b/src/libs/widgets/common/sidebar.h
@@ -0,0 +1,178 @@
+/* ============================================================
+ *
+ * This file is a part of digiKam project
+ * http://www.digikam.org
+ *
+ * Date : 2005-03-22
+ * Description : a widget to manage sidebar in gui.
+ *
+ * Copyright (C) 2005-2006 by Joern Ahrens <[email protected]>
+ * Copyright (C) 2006-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * ============================================================ */
+
+/** @file sidebar.h */
+
+#ifndef _SIDEBAR_H_
+#define _SIDEBAR_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// KDE includes.
+
+#include <tdemultitabbar.h>
+
+// Local includes.
+
+#include "digikam_export.h"
+
+class TQSplitter;
+
+namespace Digikam
+{
+
+class SidebarPriv;
+
+/**
+ * This class handles a sidebar view
+ */
+class DIGIKAM_EXPORT Sidebar : public KMultiTabBar
+{
+ TQ_OBJECT
+
+
+public:
+
+ /**
+ * The side where the bar should be visible
+ */
+ enum Side
+ {
+ Left,
+ Right
+ };
+
+ /**
+ * Creates a new sidebar
+ * @param parent sidebar's parent
+ * @param name the name of the widget is used to store its state to config
+ * @param side where the sidebar should be displayed. At the left or right border.
+ * @param minimizedDefault hide the sidebar when the program is started the first time?
+ */
+ Sidebar(TQWidget *parent, const char *name, Side side=Left, bool mimimizedDefault=false);
+ virtual ~Sidebar();
+
+ /**
+ * The width of the widget stack can be changed by a TQSplitter.
+ * @param sp sets the splitter, which should handle the width. The splitter normally
+ * is part of the main view.
+ */
+ void setSplitter(TQSplitter *sp);
+ void setSplitterSizePolicy(TQSizePolicy p);
+
+ TQSplitter* splitter() const;
+
+ /**
+ * Appends a new tab to the sidebar
+ * @param w widget which is activated by this tab
+ * @param pic icon which is shown in this tab
+ * @param title text which is shown it this tab
+ */
+ void appendTab(TQWidget *w, const TQPixmap &pic, const TQString &title);
+
+ /**
+ * Deletes a tab from the tabbar
+ */
+ void deleteTab(TQWidget *w);
+
+ /**
+ * Activates a tab
+ */
+ void setActiveTab(TQWidget *w);
+
+ /**
+ * Returns the currently activated tab, or 0 if no tab is active
+ */
+ TQWidget* getActiveTab();
+
+ /**
+ * Hides the sidebar (display only the activation buttons)
+ */
+ void shrink();
+
+ /**
+ * redisplays the whole sidebar
+ */
+ void expand();
+
+ /**
+ * load the last view state from disk
+ */
+ void loadViewState();
+
+ /**
+ * hide sidebar and backup minimized state.
+ */
+ void backup();
+
+ /**
+ * show sidebar and restore minimized state.
+ */
+ void restore();
+
+ /**
+ * return the visible status of current sidebar tab.
+ */
+ bool isExpanded();
+
+private:
+
+ /**
+ * save the view state to disk
+ */
+ void saveViewState();
+ bool eventFilter(TQObject *o, TQEvent *e);
+ void updateMinimumWidth();
+
+private slots:
+
+ /**
+ * Activates a tab
+ */
+ void clicked(int tab);
+
+ void slotDragSwitchTimer();
+
+signals:
+
+ /**
+ * is emitted, when another tab is activated
+ */
+ void signalChangedTab(TQWidget *w);
+
+ /**
+ * is emitted, when tab is shrink or expanded
+ */
+ void signalViewChanged();
+
+private:
+
+ SidebarPriv* d;
+};
+
+} // namespace Digikam
+
+#endif // _SIDEBAR_H_