00001
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);
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