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 #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); 00124 void setStyle(KMultiTabBarStyle style); 00128 QPtrList<KMultiTabBarTab>* tabs(); 00132 QPtrList<KMultiTabBarButton>* buttons(); 00133 00137 void showActiveTabTexts(bool show=true); 00138 protected: 00139 friend class KMultiTabBarButton; 00140 virtual void fontChange( const QFont& ); 00141 void updateSeparator(); 00142 private: 00143 class KMultiTabBarInternal *m_internal; 00144 QBoxLayout *m_l; 00145 QFrame *m_btnTabSep; 00146 QPtrList<KMultiTabBarButton> m_buttons; 00147 KMultiTabBarPosition m_position; 00148 KMultiTabBarPrivate *d; 00149 }; 00150 00154 class KUTILS_EXPORT KMultiTabBarButton: public QPushButton 00155 { 00156 Q_OBJECT 00157 public: 00158 KMultiTabBarButton(const QPixmap& pic,const QString&, QPopupMenu *popup, 00159 int id,QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos, KMultiTabBar::KMultiTabBarStyle style); 00160 KMultiTabBarButton(const QString&, QPopupMenu *popup, 00161 int id,QWidget *parent, KMultiTabBar::KMultiTabBarPosition pos, KMultiTabBar::KMultiTabBarStyle style); 00162 virtual ~KMultiTabBarButton(); 00163 int id() const; 00164 00165 public slots: 00170 void setPosition(KMultiTabBar::KMultiTabBarPosition); 00175 void setStyle(KMultiTabBar::KMultiTabBarStyle); 00176 00180 void setText(const QString &); 00181 00182 QSize sizeHint() const; 00183 00184 protected: 00185 KMultiTabBar::KMultiTabBarPosition m_position; 00186 KMultiTabBar::KMultiTabBarStyle m_style; 00187 QString m_text; 00188 virtual void hideEvent( class QHideEvent*); 00189 virtual void showEvent( class QShowEvent*); 00190 private: 00191 int m_id; 00192 KMultiTabBarButtonPrivate *d; 00193 signals: 00198 void clicked(int id); 00199 protected slots: 00200 virtual void slotClicked(); 00201 }; 00202 00206 class KUTILS_EXPORT KMultiTabBarTab: public KMultiTabBarButton 00207 { 00208 Q_OBJECT 00209 public: 00210 KMultiTabBarTab(const QPixmap& pic,const QString&,int id,QWidget *parent, 00211 KMultiTabBar::KMultiTabBarPosition pos,KMultiTabBar::KMultiTabBarStyle style); 00212 virtual ~KMultiTabBarTab(); 00217 void setState(bool state); 00222 void showActiveTabText(bool show); 00223 void resize(){ setSize( neededSize() ); } 00224 private: 00225 bool m_showActiveTabText; 00226 int m_expandedSize; 00227 KMultiTabBarTabPrivate *d; 00228 protected: 00229 friend class KMultiTabBarInternal; 00230 void setSize(int); 00231 int neededSize(); 00232 void updateState(); 00233 virtual void drawButton(QPainter *); 00234 virtual void drawButtonLabel(QPainter *); 00235 void drawButtonStyled(QPainter *); 00236 void drawButtonClassic(QPainter *); 00237 protected slots: 00238 virtual void slotClicked(); 00239 void setTabsPosition(KMultiTabBar::KMultiTabBarPosition); 00240 00241 public slots: 00242 virtual void setIcon(const QString&); 00243 virtual void setIcon(const QPixmap&); 00244 }; 00245 00246 #endif
KDE Logo
This file is part of the documentation for kutils Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Apr 14 00:33:00 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003