kmultitabbar.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _KMultitabbar_h_
00026 #define _KMultitabbar_h_
00027
00028 #include <qscrollview.h>
00029 #include <qvbox.h>
00030 #include <qhbox.h>
00031 #include <qlayout.h>
00032 #include <qstring.h>
00033 #include <qptrlist.h>
00034 #include <qpushbutton.h>
00035
00036 #include <kdelibs_export.h>
00037
00038 class QPixmap;
00039 class QPainter;
00040 class QFrame;
00041
00042 class KMultiTabBarPrivate;
00043 class KMultiTabBarTabPrivate;
00044 class KMultiTabBarButtonPrivate;
00045 class KMultiTabBarInternal;
00046
00054 class KUTILS_EXPORT KMultiTabBar: public QWidget
00055 {
00056 Q_OBJECT
00057 public:
00058 enum KMultiTabBarMode{Horizontal, Vertical};
00059 enum KMultiTabBarPosition{Left, Right, Top, Bottom};
00060
00067 enum KMultiTabBarStyle{VSNET=0, KDEV3=1, KONQSBC=2, KDEV3ICON=3,STYLELAST=0xffff};
00068
00069 KMultiTabBar(KMultiTabBarMode bm,QWidget *parent=0,const char *name=0);
00070 virtual ~KMultiTabBar();
00071
00081 int appendButton(const QPixmap &pic,int id=-1,QPopupMenu* popup=0,const QString& not_used_yet=QString::null);
00085 void removeButton(int id);
00092 int appendTab(const QPixmap &pic,int id=-1,const QString& text=QString::null);
00096 void removeTab(int id);
00102 void setTab(int id ,bool state);
00106 bool isTabRaised(int id) const;
00110 class KMultiTabBarButton *button(int id) const;
00111
00115 class KMultiTabBarTab *tab(int id) const;
00120 void setPosition(KMultiTabBarPosition pos);
00125 KMultiTabBarPosition position() const;
00129 void setStyle(KMultiTabBarStyle style);
00134 KMultiTabBarStyle tabStyle() const;
00138 QPtrList<KMultiTabBarTab>* tabs();
00142 QPtrList<KMultiTabBarButton>* buttons();
00143
00147 void showActiveTabTexts(bool show=true);
00148 protected:
00149 friend class KMultiTabBarButton;
00150 virtual void fontChange( const QFont& );
00151 void updateSeparator();
00152 private:
00153 class KMultiTabBarInternal *m_internal;
00154 QBoxLayout *m_l;
00155 QFrame *m_btnTabSep;
00156 QPtrList<KMultiTabBarButton> m_buttons;
00157 KMultiTabBarPosition m_position;
00158 KMultiTabBarPrivate *d;
00159 };
00160
00164 class KUTILS_EXPORT KMultiTabBarButton: public QPushButton
00165 {
00166 Q_OBJECT
00167 public:
00168 KMultiTabBarButton(const QPixmap& pic,const QString&, QPopupMenu *popup,
00169 int id,QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos, KMultiTabBar::KMultiTabBarStyle style);
00170 KMultiTabBarButton(const QString&, QPopupMenu *popup,
00171 int id,QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos, KMultiTabBar::KMultiTabBarStyle style);
00172 virtual ~KMultiTabBarButton();
00173 int id() const;
00174
00175 public slots:
00180 void setPosition(KMultiTabBar::KMultiTabBarPosition);
00185 void setStyle(KMultiTabBar::KMultiTabBarStyle);
00186
00190 void setText(const QString &);
00191
00192 QSize sizeHint() const;
00193
00194 protected:
00195 KMultiTabBar::KMultiTabBarPosition m_position;
00196 KMultiTabBar::KMultiTabBarStyle m_style;
00197 QString m_text;
00198 virtual void hideEvent( class QHideEvent*);
00199 virtual void showEvent( class QShowEvent*);
00200 private:
00201 int m_id;
00202 KMultiTabBarButtonPrivate *d;
00203 signals:
00208 void clicked(int id);
00209 protected slots:
00210 virtual void slotClicked();
00211 };
00212
00216 class KUTILS_EXPORT KMultiTabBarTab: public KMultiTabBarButton
00217 {
00218 Q_OBJECT
00219 public:
00220 KMultiTabBarTab(const QPixmap& pic,const QString&,int id,QWidget *parent,
00221 KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style);
00222 virtual ~KMultiTabBarTab();
00227 void setState(bool state);
00232 void showActiveTabText(bool show);
00233 void resize(){ setSize( neededSize() ); }
00234 private:
00235 bool m_showActiveTabText;
00236 int m_expandedSize;
00237 KMultiTabBarTabPrivate *d;
00238 protected:
00239 friend class KMultiTabBarInternal;
00240 void setSize(int);
00241 int neededSize();
00242 void updateState();
00243 virtual void drawButton(QPainter *);
00244 virtual void drawButtonLabel(QPainter *);
00245 void drawButtonStyled(QPainter *);
00246 void drawButtonClassic(QPainter *);
00247 protected slots:
00248 virtual void slotClicked();
00249 void setTabsPosition(KMultiTabBar::KMultiTabBarPosition);
00250
00251 public slots:
00252 virtual void setIcon(const QString&);
00253 virtual void setIcon(const QPixmap&);
00254 };
00255
00256 #endif
|