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
00067 class KDEUI_EXPORT KJanusWidget : public QWidget
00068 {
00069 Q_OBJECT
00070
00071 private:
00072 class IconListBox : public KListBox
00073 {
00074 public:
00075 IconListBox( QWidget *parent=0, const char *name=0, WFlags f=0 );
00076 void updateMinimumHeight();
00077 void updateWidth();
00078 void invalidateHeight();
00079 void invalidateWidth();
00080 void setShowAll( bool showAll );
00081
00082 private:
00083 bool mShowAll;
00084 bool mHeightValid;
00085 bool mWidthValid;
00086 };
00087
00088 public:
00089 enum Face
00090 {
00097 TreeList = 0,
00104 Tabbed,
00110 Plain,
00118 Swallow,
00126 IconList
00127 };
00128
00129 public:
00130
00139 KJanusWidget( QWidget *parent=0, const char *name=0, int face=Plain );
00140
00144 ~KJanusWidget();
00145
00151 virtual bool showPage( int index );
00152
00159 virtual int activePageIndex() const;
00160
00167 virtual bool isValid() const;
00168
00174 virtual int face() const;
00175
00182 virtual QSize minimumSizeHint() const;
00183
00190 virtual QSize sizeHint() const;
00191
00197 virtual QFrame *plainPage();
00198
00218 virtual QFrame *addPage(const QString &item,const QString &header=QString::null,
00219 const QPixmap &pixmap=QPixmap() );
00220
00235 virtual QFrame *addPage(const QStringList &items, const QString &header=QString::null,
00236 const QPixmap &pixmap=QPixmap() );
00237
00257 virtual QVBox *addVBoxPage( const QString &item,
00258 const QString &header=QString::null,
00259 const QPixmap &pixmap=QPixmap() );
00260
00273 virtual QVBox *addVBoxPage( const QStringList &items,
00274 const QString &header=QString::null,
00275 const QPixmap &pixmap=QPixmap() );
00276
00297 virtual QHBox *addHBoxPage( const QString &itemName,
00298 const QString &header=QString::null,
00299 const QPixmap &pixmap=QPixmap() );
00300
00313 virtual QHBox *addHBoxPage( const QStringList &items,
00314 const QString &header=QString::null,
00315 const QPixmap &pixmap=QPixmap() );
00316
00340 virtual QGrid *addGridPage( int n, Orientation dir,
00341 const QString &itemName,
00342 const QString &header=QString::null,
00343 const QPixmap &pixmap=QPixmap() );
00344
00357 virtual QGrid *addGridPage( int n, Orientation dir,
00358 const QStringList &items,
00359 const QString &header=QString::null,
00360 const QPixmap &pixmap=QPixmap() );
00361
00371 void removePage( QWidget *page );
00372
00373
00390 virtual int pageIndex( QWidget *widget ) const;
00391
00401 virtual bool setSwallowedWidget( QWidget *widget );
00402
00413 virtual void setTreeListAutoResize( bool state );
00414
00427 virtual void setShowIconsInTreeList(bool state);
00428
00437 virtual void setRootIsDecorated( bool state );
00438
00452 void unfoldTreeList( bool persist = false );
00453
00462 void addWidgetBelowList( QWidget * widget );
00463
00474 void addButtonBelowList( const QString & text, QObject * recv,
00475 const char * slot );
00476
00488 void addButtonBelowList( const KGuiItem & guiitem, QObject *
00489 recv, const char * slot );
00490
00503 virtual void setIconListAllVisible( bool state );
00504
00510 virtual void setFolderIcon(const QStringList &path, const QPixmap &pixmap);
00517 QString pageTitle(int index) const;
00525 QWidget *pageWidget(int index) const;
00526
00527 signals:
00533 void aboutToShowPage(QWidget *page);
00534
00535 public slots:
00539 virtual void setFocus();
00540
00541 protected:
00546 virtual void showEvent( QShowEvent * );
00547
00556 virtual bool eventFilter( QObject *o, QEvent *e );
00557
00558 private slots:
00559 bool slotShowPage();
00560 void slotFontChanged();
00561 void slotItemClicked(QListViewItem *it);
00562 void pageGone(QObject *obj);
00563 void slotReopen(QListViewItem *item);
00564
00565 protected:
00566 bool showPage( QWidget *w );
00567 void addPageWidget( QFrame *page, const QStringList &items,
00568 const QString &header, const QPixmap &pixmap );
00569 void InsertTreeListItem(const QStringList &items, const QPixmap &pixmap, QFrame *page);
00570 QWidget *FindParent();
00571
00572 private:
00573 bool mValid;
00574
00575
00576 QPtrList<QWidget> *mPageList;
00577 QStringList *mTitleList;
00578
00579 int mFace;
00580 KListView *mTreeList;
00581 IconListBox *mIconList;
00582 QWidgetStack *mPageStack;
00583 QLabel *mTitleLabel;
00584 QTabWidget *mTabControl;
00585 QFrame *mPlainPage;
00586 QWidget *mSwallowPage;
00587 QWidget *mActivePageWidget;
00588 KSeparator *mTitleSep;
00589 QSplitter::ResizeMode mTreeListResizeMode;
00590 bool mShowIconsInTreeList;
00591 QMap<QListViewItem *, QWidget *> mTreeListToPageStack;
00592 QMap<QListBoxItem *, QWidget *> mIconListToPageStack;
00593 QMap<QString, QPixmap> mFolderIconMap;
00594 QMap<QString, QStringList> mChildrenNames;
00595 QMap<QString, QWidget *> mChildPages;
00596
00597 public:
00598 class IconListItem;
00599 protected:
00600 virtual void virtual_hook( int id, void* data );
00601 private:
00602 class KJanusWidgetPrivate;
00603 KJanusWidgetPrivate *d;
00604 };
00605
00606 #endif