kutils Library API Documentation

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., 59 Temple Place - Suite 330,
00022     Boston, MA 02111-1307, 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 class QPixmap;
00037 class QPainter;
00038 class QFrame;
00039 
00040 class KMultiTabBarPrivate;
00041 class KMultiTabBarTabPrivate;
00042 class KMultiTabBarButtonPrivate;
00043 class KMultiTabBarInternal;
00044 
00052 class KMultiTabBar: public QWidget
00053 {
00054     Q_OBJECT
00055 public:
00056     enum KMultiTabBarMode{Horizontal, Vertical};
00057     enum KMultiTabBarPosition{Left, Right, Top, Bottom};
00058 
00065     enum KMultiTabBarStyle{VSNET=0, KDEV3=1, KONQSBC=2, KDEV3ICON=3,STYLELAST=0xffff};
00066 
00067     KMultiTabBar(KMultiTabBarMode bm,QWidget *parent=0,const char *name=0);
00068     virtual ~KMultiTabBar();
00069 
00079     int appendButton(const QPixmap &pic,int id=-1,QPopupMenu* popup=0,const QString& not_used_yet=QString::null);
00083     void removeButton(int id);
00090     int appendTab(const QPixmap &pic,int id=-1,const QString& text=QString::null);
00094     void removeTab(int id);
00100     void setTab(int id ,bool state);
00104     bool isTabRaised(int id) const;
00108     class KMultiTabBarButton *button(int id) const;
00109 
00113     class KMultiTabBarTab *tab(int id) const;
00118     void setPosition(KMultiTabBarPosition pos);
00122     void setStyle(KMultiTabBarStyle style);
00126         QPtrList<KMultiTabBarTab>* tabs();
00130     QPtrList<KMultiTabBarButton>* buttons();
00131 
00135     void showActiveTabTexts(bool show=true);
00136 protected:
00137     friend class KMultiTabBarButton;
00138     virtual void fontChange( const QFont& );
00139     void updateSeparator();
00140 private:
00141     class KMultiTabBarInternal *m_internal;
00142     QBoxLayout *m_l;
00143     QFrame *m_btnTabSep;
00144     QPtrList<KMultiTabBarButton> m_buttons;
00145     KMultiTabBarPosition m_position;
00146     KMultiTabBarPrivate *d;
00147 };
00148 
00152 class KMultiTabBarButton: public QPushButton
00153 {
00154     Q_OBJECT
00155 public:
00156     KMultiTabBarButton(const QPixmap& pic,const QString&, QPopupMenu *popup,
00157         int id,QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos, KMultiTabBar::KMultiTabBarStyle style);
00158     KMultiTabBarButton(const QString&, QPopupMenu *popup,
00159         int id,QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos, KMultiTabBar::KMultiTabBarStyle style);
00160     virtual  ~KMultiTabBarButton();
00161     int id() const;
00162 
00163 public slots:
00168     void setPosition(KMultiTabBar::KMultiTabBarPosition);
00173     void setStyle(KMultiTabBar::KMultiTabBarStyle);
00174 
00178     void setText(const QString &);
00179 
00180     QSize sizeHint() const;
00181 
00182 protected:
00183     KMultiTabBar::KMultiTabBarPosition m_position;
00184     KMultiTabBar::KMultiTabBarStyle m_style;
00185     QString m_text;
00186     virtual void hideEvent( class QHideEvent*);
00187     virtual void showEvent( class QShowEvent*);
00188 private:
00189     int m_id;
00190     KMultiTabBarButtonPrivate *d;
00191 signals:
00196     void clicked(int id);
00197 protected slots:
00198     virtual void slotClicked();
00199 };
00200 
00204 class KMultiTabBarTab: public KMultiTabBarButton
00205 {
00206     Q_OBJECT
00207 public:
00208     KMultiTabBarTab(const QPixmap& pic,const QString&,int id,QWidget *parent,
00209         KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style);
00210     virtual ~KMultiTabBarTab();
00215     void setState(bool state);
00220     void showActiveTabText(bool show);
00221     void resize(){ setSize( neededSize() ); }
00222 private:
00223     bool m_showActiveTabText;
00224     int m_expandedSize;
00225     KMultiTabBarTabPrivate *d;
00226 protected:
00227     friend class KMultiTabBarInternal;
00228     void setSize(int);
00229     int neededSize();
00230     void updateState();
00231     virtual void drawButton(QPainter *);
00232     virtual void drawButtonLabel(QPainter *);
00233     void drawButtonStyled(QPainter *);
00234     void drawButtonClassic(QPainter *);
00235 protected slots:
00236     virtual void slotClicked();
00237     void setTabsPosition(KMultiTabBar::KMultiTabBarPosition);
00238 
00239 public slots:
00240     virtual void setIcon(const QString&);
00241     virtual void setIcon(const QPixmap&);
00242 };
00243 
00244 #endif
KDE Logo
This file is part of the documentation for kutils Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Jan 22 16:48:52 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003