kmultitabbar.h

00001 /***************************************************************************
00002                           kmultitabbar.h -  description
00003                              -------------------
00004     begin                :  2001
00005     copyright            : (C) 2001,2002,2003 by Joseph Wenninger <jowenn@kde.org>
00006  ***************************************************************************/
00007 
00008 /***************************************************************************
00009     This library is free software; you can redistribute it and/or
00010     modify it under the terms of the GNU Library General Public
00011     License as published by the Free Software Foundation; either
00012     version 2 of the License, or (at your option) any later version.
00013 
00014     This library is distributed in the hope that it will be useful,
00015     but WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017     Library General Public License for more details.
00018 
00019     You should have received a copy of the GNU Library General Public License
00020     along with this library; see the file COPYING.LIB.  If not, write to
00021     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00022     Boston, MA 02110-1301, USA.
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
KDE Home | KDE Accessibility Home | Description of Access Keys