00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef _KJANUS_WIDGET_H_
00021
#define _KJANUS_WIDGET_H_
00022
00023
#include <qptrlist.h>
00024
#include <qpixmap.h>
00025
#include <qsplitter.h>
00026
00027
#include <klistbox.h>
00028
#include <qstringlist.h>
00029
#include <qmap.h>
00030
00031
class KListView;
00032
00033
class QGrid;
00034
class QHBox;
00035
class QLabel;
00036
class QTabWidget;
00037
class QVBox;
00038
class QWidgetStack;
00039
class KSeparator;
00040
class QListViewItem;
00041
class KGuiItem;
00042
00066 class KJanusWidget :
public QWidget
00067 {
00068 Q_OBJECT
00069
00070
private:
00071
class IconListBox :
public KListBox
00072 {
00073
public:
00074 IconListBox(
QWidget *parent=0,
const char *name=0, WFlags f=0 );
00075
void updateMinimumHeight();
00076
void updateWidth();
00077
void invalidateHeight();
00078
void invalidateWidth();
00079
void setShowAll(
bool showAll );
00080
00081
private:
00082
bool mShowAll;
00083
bool mHeightValid;
00084
bool mWidthValid;
00085 };
00086
00087
public:
00088 enum Face
00089 {
00096
TreeList = 0,
00103
Tabbed,
00109
Plain,
00117
Swallow,
00125
IconList
00126 };
00127
00128
public:
00129
00138
KJanusWidget(
QWidget *parent=0,
const char *name=0,
int face=Plain );
00139
00143
~KJanusWidget();
00144
00150
virtual bool showPage(
int index );
00151
00158
virtual int activePageIndex() const;
00159
00166 virtual
bool isValid() const;
00167
00173 virtual
int face() const;
00174
00181 virtual
QSize minimumSizeHint() const;
00182
00189 virtual
QSize sizeHint() const;
00190
00196 virtual
QFrame *plainPage();
00197
00217 virtual
QFrame *addPage(const
QString &item,const
QString &header=
QString::null,
00218 const
QPixmap &pixmap=
QPixmap() );
00219
00234 virtual
QFrame *addPage(const
QStringList &items, const
QString &header=
QString::null,
00235 const QPixmap &pixmap=QPixmap() );
00236
00256 virtual
QVBox *addVBoxPage( const
QString &item,
00257 const
QString &header=
QString::null,
00258 const QPixmap &pixmap=QPixmap() );
00259
00272 virtual
QVBox *addVBoxPage( const
QStringList &items,
00273 const
QString &header=
QString::null,
00274 const QPixmap &pixmap=QPixmap() );
00275
00296 virtual
QHBox *addHBoxPage( const
QString &itemName,
00297 const
QString &header=
QString::null,
00298 const QPixmap &pixmap=QPixmap() );
00299
00312 virtual
QHBox *addHBoxPage( const
QStringList &items,
00313 const
QString &header=
QString::null,
00314 const QPixmap &pixmap=QPixmap() );
00315
00339 virtual
QGrid *addGridPage(
int n, Orientation dir,
00340 const
QString &itemName,
00341 const
QString &header=
QString::null,
00342 const QPixmap &pixmap=QPixmap() );
00343
00356 virtual
QGrid *addGridPage(
int n, Orientation dir,
00357 const
QStringList &items,
00358 const
QString &header=
QString::null,
00359 const QPixmap &pixmap=QPixmap() );
00360
00370
void removePage(
QWidget *page );
00371
00372
00389 virtual
int pageIndex(
QWidget *widget ) const;
00390
00400 virtual
bool setSwallowedWidget(
QWidget *widget );
00401
00412 virtual
void setTreeListAutoResize(
bool state );
00413
00426 virtual
void setShowIconsInTreeList(
bool state);
00427
00436 virtual
void setRootIsDecorated(
bool state );
00437
00451
void unfoldTreeList(
bool persist = false );
00452
00461
void addWidgetBelowList(
QWidget * widget );
00462
00473
void addButtonBelowList( const
QString & text,
QObject * recv,
00474 const
char * slot );
00475
00487
void addButtonBelowList( const KGuiItem & guiitem,
QObject *
00488 recv, const
char * slot );
00489
00502 virtual
void setIconListAllVisible(
bool state );
00503
00509 virtual
void setFolderIcon(const
QStringList &path, const QPixmap &pixmap);
00516
QString pageTitle(
int index) const;
00524
QWidget *pageWidget(
int index) const;
00525
00526 signals:
00527
void aboutToShowPage(
QWidget *page);
00528
00529 public slots:
00533 virtual
void setFocus();
00534
00535 protected:
00540 virtual
void showEvent(
QShowEvent * );
00541
00550 virtual
bool eventFilter(
QObject *o,
QEvent *e );
00551
00552 private slots:
00553
bool slotShowPage();
00554
void slotFontChanged();
00555
void slotItemClicked(
QListViewItem *it);
00556
void pageGone(
QObject *obj);
00557
void slotReopen(
QListViewItem *item);
00558
00559 protected:
00560
bool showPage(
QWidget *w );
00561
void addPageWidget(
QFrame *page, const
QStringList &items,
00562 const
QString &header, const QPixmap &pixmap );
00563
void InsertTreeListItem(const
QStringList &items, const QPixmap &pixmap,
QFrame *page);
00564
QWidget *FindParent();
00565
00566 private:
00567
bool mValid;
00568
00569
00570
QPtrList<
QWidget> *mPageList;
00571
QStringList *mTitleList;
00572
00573
int mFace;
00574
KListView *mTreeList;
00575 IconListBox *mIconList;
00576
QWidgetStack *mPageStack;
00577
QLabel *mTitleLabel;
00578
QTabWidget *mTabControl;
00579
QFrame *mPlainPage;
00580
QWidget *mSwallowPage;
00581
QWidget *mActivePageWidget;
00582
KSeparator *mTitleSep;
00583
QSplitter::ResizeMode mTreeListResizeMode;
00584
bool mShowIconsInTreeList;
00585
QMap<
QListViewItem *,
QWidget *> mTreeListToPageStack;
00586
QMap<
QListBoxItem *,
QWidget *> mIconListToPageStack;
00587
QMap<
QString, QPixmap> mFolderIconMap;
00588
QMap<QString,
QStringList> mChildrenNames;
00589
QMap<QString,
QWidget *> mChildPages;
00590
00591 public:
00592 class IconListItem;
00593 protected:
00594 virtual
void virtual_hook(
int id,
void* data );
00595 private:
00596 class KJanusWidgetPrivate;
00597 KJanusWidgetPrivate *d;
00598 };
00599
00600 #endif