summaryrefslogtreecommitdiffstats
path: root/kparts/statusbarextension.h
diff options
context:
space:
mode:
Diffstat (limited to 'kparts/statusbarextension.h')
-rw-r--r--kparts/statusbarextension.h126
1 files changed, 126 insertions, 0 deletions
diff --git a/kparts/statusbarextension.h b/kparts/statusbarextension.h
new file mode 100644
index 000000000..e6fc0064b
--- /dev/null
+++ b/kparts/statusbarextension.h
@@ -0,0 +1,126 @@
+/* This file is part of the KDE project
+ Copyright (C) 2003 Daniel Molkentin <molkentin@kde.org>
+ Copyright (C) 2003 David Faure <faure@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KPARTS_STATUSBAREXTENSION_H
+#define KPARTS_STATUSBAREXTENSION_H
+
+#include <qwidget.h>
+#include <qvaluelist.h>
+
+#include <kdelibs_export.h>
+
+class KStatusBar;
+class KMainWindow;
+class QEvent;
+
+namespace KParts
+{
+
+ class ReadOnlyPart;
+
+ // Defined in impl
+ class StatusBarItem;
+
+
+ /**
+ * @short An extension for KParts that allows more sophisticated statusbar handling
+ *
+ * Every part can use this class to customize the statusbar as long as it is active.
+ * Add items via addStatusBarItem() and remove an item with removeStatusBarItem().
+ *
+ * IMPORTANT: do NOT add any items immediately after constructing the extension.
+ * Give the application time to set the statusbar in the extension if necessary.
+ *
+ * @since 3.2
+ */
+ class KPARTS_EXPORT StatusBarExtension : public QObject
+ {
+ Q_OBJECT
+
+ public:
+ StatusBarExtension( KParts::ReadOnlyPart *parent, const char *name=0L );
+ ~StatusBarExtension();
+
+ /**
+ * This adds a widget to the statusbar for this part.
+ * If you use this method instead of using statusBar() directly,
+ * this extension will take care of removing the items when the parts GUI
+ * is deactivated and will re-add them when it is reactivated.
+ * The parameters are the same as QStatusBar::addWidget().
+ *
+ * Note that you can't use KStatusBar methods (inserting text items by id)
+ * but you can create a KStatusBarLabel with a dummy id instead, and use
+ * it directly in order to get the same look and feel.
+ *
+ * @param widget the widget to add
+ * @param stretch the stretch factor. 0 for a minimum size.
+ * @param permanent passed to QStatusBar::addWidget as the "permanent" bool.
+ * Note that the item isn't really permanent though, it goes away when
+ * the part is unactivated. This simply controls where temporary messages
+ * hide the @p widget, and whether it's added to the left or to the right side.
+ *
+ * IMPORTANT: do NOT add any items immediately after constructing the extension.
+ * Give the application time to set the statusbar in the extension if necessary.
+ */
+ void addStatusBarItem( QWidget * widget, int stretch, bool permanent );
+
+ /**
+ * Remove a @p widget from the statusbar for this part.
+ */
+ void removeStatusBarItem( QWidget * widget );
+
+ /**
+ * @return the statusbar of the KMainWindow in which this part is currently embedded.
+ * WARNING: this could return 0L
+ */
+ KStatusBar* statusBar() const;
+
+ /**
+ * This allows the hosting application to set a particular KStatusBar
+ * for this part. If it doesn't do this, the statusbar used will be
+ * the one of the KMainWindow in which the part is embedded.
+ * Konqueror uses this to assign a view-statusbar to the part.
+ * The part should never call this method!
+ */
+ void setStatusBar( KStatusBar* status );
+
+ /**
+ * Queries @p obj for a child object which inherits from this
+ * BrowserExtension class. Convenience method.
+ */
+ static StatusBarExtension *childObject( QObject *obj );
+
+ /** @internal */
+ virtual bool eventFilter( QObject *watched, QEvent* ev );
+
+ private:
+
+ QValueList<StatusBarItem> m_statusBarItems; // Our statusbar items
+ mutable KStatusBar* m_statusBar;
+
+ // for future extensions
+ class StatusBarExtensionPrivate;
+ StatusBarExtensionPrivate *d;
+ };
+
+}
+#endif // KPARTS_STATUSBAREXTENSION_H
+
+// vim: ts=2 sw=2 et