diff options
Diffstat (limited to 'tdeui/kstatusbar.h')
-rw-r--r-- | tdeui/kstatusbar.h | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/tdeui/kstatusbar.h b/tdeui/kstatusbar.h new file mode 100644 index 000000000..bacc700bb --- /dev/null +++ b/tdeui/kstatusbar.h @@ -0,0 +1,208 @@ +/* This file is part of the KDE libraries + Copyright (C) 1997 Mark Donohoe (donohoe@kde.org) + Copyright (C) 1997, 1998 1998 Sven Radej (sven@lisa.exp.univie.ac.at) + + 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 __KSTATUSBAR_H__ +#define __KSTATUSBAR_H__ + +#include <tqstatusbar.h> +#include <tqintdict.h> +#include <tqlabel.h> +#include <kdelibs_export.h> + +class KStatusBar; + +/** + * Internal label class for use in KStatusBar + * @internal + */ +class KDEUI_EXPORT KStatusBarLabel : public TQLabel +{ + Q_OBJECT + +public: + + + KStatusBarLabel( const TQString& text, int _id, KStatusBar* parent = 0L, const char *name=0L ); + ~KStatusBarLabel () {} + +protected: + + void mousePressEvent (TQMouseEvent* _event); + void mouseReleaseEvent (TQMouseEvent* _event); + +private: + + int id; + +signals: + + void itemPressed (int id); + void itemReleased (int id); +}; + +/** + * @short %KDE statusbar widget + * + * Display status messages. + * + * You can insert text labels or custom widgets. Their geometry is managed + * internally. KStatusBar resizes itself, but positioning is left to + * KMainWindow (or to you, if you don't use KMainWindow ). + * + * A special type of item is a message which is a temporary text-message + * displayed on top of other items in full-width. Messages are visible for + * specified time, or until you call the slot TQStatusBar::clear(). See + * TQStatusBar::message for details. + * + * It is useful to connect the KActionCollection signals to the + * TQStatusBar::message slots. + * + * KStatusBar inherits TQStatusBar, you can freely use all QStatusBar + * methods. + * + * Empty text items are not visible. They will become visible when you change + * (add) text. + * + * @author Mark Donohoe (donohoe@kde.org) Maintained by Sven Radej <radej@kde.org> + + * @see KActionCollection + */ +class KDEUI_EXPORT KStatusBar : public TQStatusBar +{ + Q_OBJECT + +public: + /** + * @deprecated + * WARNING: This enum is only for backward compatibility and it may be removed. + * No method here uses it. + */ + enum BarStatus{ Toggle, Show, Hide }; + + /** + * Constructs a status bar. @p parent is usually KMainWindow. + */ + KStatusBar( TQWidget* parent = 0L, const char* name = 0L ); + + /** + * Destructor. + * + * Deletes all internal objects. + */ + ~KStatusBar(); + + /** + * Inserts a text label into the status bar. + * Parameters @p stretch and @p permanent are passed to + * TQStatusBar::addWidget . + * + * If @p permanent is true, then item will be placed on the far right of + * the statusbar and will never be hidden by TQStatusBar::message. + * + * @param text The label's text string. + * @param id id of item + * @param stretch stretch passed to TQStatusBar::addWidget + * @param permanent is item permanent or not (passed to TQStatusBar::addWidget ) + * + * @see QStatusbar::addWidget + * + */ + void insertItem(const TQString& text, int id, int stretch=0, bool permanent=false ); + + /** + * Inserts a fixed width text label into status bar. The width will be set + * according to @p text, but will remain fixed even if you change text. + * You can change fixed width by calling setItemFixed. + * + * @param text The label's text string + * @param id id of item + * @param permanent permanent flag passed to TQStatusBar::addWidget + */ + inline void insertFixedItem(const TQString& text, int id, bool permanent=false) + { insertItem(text, id, 0, permanent); setItemFixed(id); } + + /** + * Removes an item. + * + * @param id The item to remove. + */ + void removeItem( int id ); + + /** + * @since 3.2 + * + * Returns true if an item with @p id exists already in KStatusBar, + * otherwise returns false. + * + * @param id id of the item + */ + bool hasItem( int id ) const; + + /** + * Changes the text in a status bar field. + * + * The item will be resized to fit the text. If you change text to be empty, + * item will not be visible (untill you add some text). + * + * @param text The label's text string + * @param id The id of item. + */ + void changeItem( const TQString& text, int id ); + + /** + * Sets the tqalignment of item @p id. By default all fields are aligned + * @p AlignHCenter | @p AlignVCenter. See TQLabel::tqsetAlignment for details. + * + */ + void setItemAlignment(int id, int align); + + /** + * Sets item @p id to have fixed width. This cannot be undone, but you can + * always set new fixed width. + * + * @param id id of item + * @param width fixed width in pixels. Default -1 is to adapt to text width. + */ + void setItemFixed(int id, int width=-1); + +signals: + + /** + * Emitted when mouse is pressed over item @p id. + * + * Connect to this signal if you want to respond to mouse press events. + * + */ + void pressed( int ); + + /** + * Emitted when mouse is released over item @p id. + * + * Connect to this signal if you want to respond to mouse release events (clicks). + */ + void released( int ); + +private: + TQIntDict<KStatusBarLabel> items; + class KStatusBarPrivate* d; +}; + +#endif // __KSTATUSBAR_H__ + |