00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef KTOOLBAR_H
00025 #define KTOOLBAR_H
00026
00027 #include <qtoolbar.h>
00028 #include <qmainwindow.h>
00029 #include <qcombobox.h>
00030 #include <qmap.h>
00031 #include <qptrlist.h>
00032 #include <kglobal.h>
00033 #include <qguardedptr.h>
00034 #include <qframe.h>
00035 #include <qiconset.h>
00036
00037 class QDomElement;
00038 class QSize;
00039 class QPixmap;
00040 class QPopupMenu;
00041 class QStringList;
00042 class QDomDocument;
00043 class QTimer;
00044
00045 class KLineEdit;
00046 class KToolBar;
00047 class KToolBarButton;
00048 class KToolBoxManager;
00049 class KAnimWidget;
00050 class KPopupMenu;
00051 class KInstance;
00052 class KComboBox;
00053 class KXMLGUIClient;
00054
00055 class KToolBarPrivate;
00056
00057 class KToolBarSeparator : public QFrame
00058 {
00059 Q_OBJECT
00060 public:
00061 KToolBarSeparator( Orientation, bool l, QToolBar *parent, const char* name=0 );
00062
00063 QSize sizeHint() const;
00064 Orientation orientation() const { return orient; }
00065 QSizePolicy sizePolicy() const;
00066 bool showLine() const { return line; }
00067 public slots:
00068 void setOrientation( Orientation );
00069 protected:
00070 void styleChange( QStyle& );
00071 void drawContents( QPainter* );
00072 private:
00073 Orientation orient;
00074 bool line;
00075 };
00076
00077
00103 class KToolBar : public QToolBar
00104 {
00105 Q_OBJECT
00106 Q_ENUMS( IconText BarPosition )
00107 Q_PROPERTY( IconText iconText READ iconText WRITE setIconText )
00108 Q_PROPERTY( BarPosition barPos READ barPos WRITE setBarPos )
00109 Q_PROPERTY( bool fullSize READ fullSize WRITE setFullSize )
00110 Q_PROPERTY( int iconSize READ iconSize WRITE setIconSize )
00111 Q_PROPERTY( QString text READ text WRITE setText )
00112
00113 public:
00114 enum IconText{IconOnly = 0, IconTextRight, TextOnly, IconTextBottom};
00119 enum BarStatus{Toggle, Show, Hide};
00123 enum BarPosition{ Unmanaged, Floating, Top, Bottom, Right, Left, Flat};
00124
00142 KToolBar( QWidget *parent, const char *name = 0, bool honorStyle = false, bool readConfig = true );
00143
00159 KToolBar( QMainWindow *parentWindow, QMainWindow::ToolBarDock dock , bool newLine = false,
00160 const char *name = 0, bool honorStyle = false, bool readConfig = true );
00161
00177 KToolBar( QMainWindow *parentWindow, QWidget *dock, bool newLine = false,
00178 const char *name = 0, bool honorStyle = false, bool readConfig = true );
00179
00183 virtual ~KToolBar();
00184
00205 int insertButton(const QString& icon, int id, bool enabled = true,
00206 const QString& text = QString::null, int index=-1,
00207 KInstance *_instance = KGlobal::instance());
00208
00226 int insertButton(const QString& icon, int id, const char *signal,
00227 const QObject *receiver, const char *slot,
00228 bool enabled = true, const QString& text = QString::null,
00229 int index=-1, KInstance *_instance = KGlobal::instance() );
00230
00255 int insertButton(const QPixmap& pixmap, int id, bool enabled = true,
00256 const QString& text = QString::null, int index=-1 );
00257
00275 int insertButton(const QPixmap& pixmap, int id, const char *signal,
00276 const QObject *receiver, const char *slot,
00277 bool enabled = true, const QString& text = QString::null,
00278 int index=-1 );
00279
00292 int insertButton(const QString& icon, int id, QPopupMenu *popup,
00293 bool enabled, const QString&_text, int index=-1);
00294
00307 int insertButton(const QPixmap& pixmap, int id, QPopupMenu *popup,
00308 bool enabled, const QString&_text, int index=-1);
00309
00322 int insertLined (const QString& text, int id,
00323 const char *signal,
00324 const QObject *receiver, const char *slot,
00325 bool enabled = true,
00326 const QString& toolTipText = QString::null,
00327 int size = 70, int index =-1);
00328
00343 int insertCombo (const QStringList &list, int id, bool writable,
00344 const char *signal, const QObject *receiver,
00345 const char *slot, bool enabled=true,
00346 const QString& tooltiptext=QString::null,
00347 int size=70, int index=-1,
00348 QComboBox::Policy policy = QComboBox::AtBottom);
00349
00359 int insertCombo (const QString& text, int id, bool writable,
00360 const char *signal, QObject *receiver,
00361 const char *slot, bool enabled=true,
00362 const QString& tooltiptext=QString::null,
00363 int size=70, int index=-1,
00364 QComboBox::Policy policy = QComboBox::AtBottom);
00365
00370 int insertSeparator( int index = -1, int id = -1 );
00371
00376 int insertLineSeparator( int index = -1, int id = -1 );
00377
00388 int insertWidget(int id, int width, QWidget *_widget, int index=-1);
00389
00406 int insertAnimatedWidget(int id, QObject *receiver, const char *slot,
00407 const QString& icons, int index = -1);
00408
00417 KAnimWidget *animatedWidget( int id );
00418
00425 void addConnection (int id, const char *signal,
00426 const QObject *receiver, const char *slot);
00430 void setItemEnabled( int id, bool enabled );
00431
00437 void setButtonIcon( int id, const QString& _icon );
00438
00444 void setButtonPixmap( int id, const QPixmap& _pixmap );
00445
00451 void setButtonIconSet( int id, const QIconSet& iconset );
00452
00479 void setDelayedPopup (int id , QPopupMenu *_popup, bool toggle = false);
00480
00494 void setAutoRepeat (int id, bool flag=true);
00495
00496
00500 void setToggle (int id, bool flag = true);
00501
00511 void toggleButton (int id);
00512
00522 void setButton (int id, bool flag);
00523
00529 bool isButtonOn (int id) const;
00530
00536 void setLinedText (int id, const QString& text);
00537
00542 QString getLinedText (int id) const;
00543
00547 void insertComboItem (int id, const QString& text, int index);
00548
00552 void insertComboList (int id, const QStringList &list, int index);
00553
00557 void removeComboItem (int id, int index);
00558
00562 void setCurrentComboItem (int id, int index);
00563
00569 void changeComboItem (int id, const QString& text, int index=-1);
00570
00576 void clearCombo (int id);
00577
00585 QString getComboItem (int id, int index=-1) const;
00586
00598 KComboBox * getCombo(int id);
00599
00612 KLineEdit * getLined (int id);
00613
00626 KToolBarButton * getButton (int id);
00627
00634 void alignItemRight (int id, bool right = true);
00635
00647 QWidget *getWidget (int id);
00648
00662 void setItemAutoSized (int id, bool yes = true);
00663
00669 void clear ();
00670
00676 void removeItem (int id);
00677
00683 void removeItemDelayed (int id);
00684
00688 void hideItem (int id);
00689
00693 void showItem (int id);
00694
00700 int itemIndex (int id);
00701
00706 int idAt(int index);
00707
00720 void setFullSize(bool flag = true);
00721
00726 bool fullSize() const;
00727
00732 void enableMoving(bool flag = true) KDE_DEPRECATED;
00733
00738 void setBarPos (BarPosition bpos);
00739
00744 BarPosition barPos() const;
00745
00754 bool enable(BarStatus stat) KDE_DEPRECATED;
00755
00760 void setMaxHeight (int h) KDE_DEPRECATED;
00761
00768 int maxHeight() KDE_DEPRECATED;
00769
00775 void setMaxWidth (int dw) KDE_DEPRECATED;
00776
00783 int maxWidth() KDE_DEPRECATED;
00784
00791 void setTitle (const QString& _title);
00792
00797 void enableFloating (bool flag) KDE_DEPRECATED;
00798
00810 void setIconText(IconText it);
00811
00812
00819 void setIconText(IconText it, bool update);
00820
00825 IconText iconText() const;
00826
00837 void setIconSize(int size);
00838
00839
00848 void setIconSize(int size, bool update);
00849
00854 int iconSize() const;
00855
00861 void setEnableContextMenu(bool enable = true);
00862
00867 bool contextMenuEnabled() const;
00868
00877 void setItemNoStyle(int id, bool no_style = true);
00878
00879 void setFlat (bool flag);
00880
00885 int count() const;
00886
00892 void saveState();
00893
00894
00898 void saveSettings(KConfig *config, const QString &configGroup);
00899
00904 void applySettings(KConfig *config, const QString &configGroup);
00905
00906
00907
00908
00909
00910
00911
00912
00913
00914
00915
00916
00917
00918
00919 void setXMLGUIClient( KXMLGUIClient *client );
00920
00925 void setText( const QString & txt );
00926
00931 QString text() const;
00932
00933 void setStretchableWidget( QWidget *w );
00934 QSizePolicy sizePolicy() const;
00935 bool highlight() const;
00936 QSize sizeHint() const;
00937 QSize minimumSizeHint() const;
00938 QSize minimumSize() const;
00939
00940 void hide();
00941 void show();
00942
00943 void updateRects( bool = false ) {}
00944
00945 void loadState( const QDomElement &e );
00946 void saveState( QDomElement &e );
00947
00951 void positionYourself( bool force = false);
00952
00953 signals:
00957 void clicked(int id);
00958
00972 void doubleClicked (int id);
00973
00977 void pressed(int);
00978
00982 void released(int);
00983
00993 void toggled(int);
00994
01005 void highlighted(int id, bool isHighlighted);
01006
01015 void highlighted(int id );
01016
01026 void moved( BarPosition );
01027
01035 void modechange ();
01036
01044 void toolbarDestroyed();
01045
01046 public:
01051 static bool highlightSetting();
01052
01057 static bool transparentSetting();
01058
01063 static IconText iconTextSetting();
01064
01065 public slots:
01066 virtual void setIconText( const QString &txt )
01067 { QToolBar::setIconText( txt ); }
01068
01069 protected:
01070 void mousePressEvent( QMouseEvent * );
01071 void childEvent( QChildEvent *e );
01072 void showEvent( QShowEvent *e );
01073 void resizeEvent( QResizeEvent *e );
01074 bool event( QEvent *e );
01075 void applyAppearanceSettings(KConfig *config, const QString &_configGroup, bool forceGlobal = false);
01076 QString settingsGroup() const;
01077
01078 private slots:
01079 void rebuildLayout();
01080 void slotReadConfig ();
01081 void slotAppearanceChanged();
01082 void slotIconChanged(int);
01083 void slotRepaint();
01084 void toolBarPosChanged( QToolBar *tb );
01085 void slotContextAboutToShow();
01086 void slotContextAboutToHide();
01087 void widgetDestroyed();
01088
01089 private:
01090 void init( bool readConfig = true, bool honorStyle = false );
01091 void doConnections( KToolBarButton *button );
01092 void insertWidgetInternal( QWidget *w, int &index, int id );
01093 void removeWidgetInternal( QWidget *w );
01094 void getAttributes( QString &position, QString &icontext, int &index );
01095 int dockWindowIndex();
01096 KPopupMenu *contextMenu();
01097
01098 QMap<QWidget*, int > widget2id;
01099 typedef QMap<int, QWidget* > Id2WidgetMap;
01100 Id2WidgetMap id2widget;
01101 KPopupMenu *context;
01102 QPtrList<QWidget> widgets;
01103 QTimer *layoutTimer;
01104 QGuardedPtr<QWidget> stretchableWidget, rightAligned;
01105 protected:
01106 virtual void virtual_hook( int id, void* data );
01107 private:
01108 KToolBarPrivate *d;
01109 };
01110
01111 #endif