00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _KDIALOG_BASE_H_
00024 #define _KDIALOG_BASE_H_
00025
00026 #include <kdialog.h>
00027 #include <kjanuswidget.h>
00028 #include <kguiitem.h>
00029 #include <kstdguiitem.h>
00030 #include <qptrlist.h>
00031 #include <kdemacros.h>
00032
00033 class QPushButton;
00034 class KSeparator;
00035 class KURLLabel;
00036 class QBoxLayout;
00037 class QPixmap;
00038 class KGuiItem;
00043 class KDialogBaseButton;
00044
00049 class KDialogBaseTile;
00050
00193 class KDialogBase : public KDialog
00194 {
00195 Q_OBJECT
00196
00197 public:
00198
00216 enum ButtonCode
00217 {
00218 Help = 0x00000001,
00219 Default = 0x00000002,
00220 Ok = 0x00000004,
00221 Apply = 0x00000008,
00222 Try = 0x00000010,
00223 Cancel = 0x00000020,
00224 Close = 0x00000040,
00225 User1 = 0x00000080,
00226 User2 = 0x00000100,
00227 User3 = 0x00000200,
00228 No = 0x00000080,
00229 Yes = 0x00000100,
00230 Details = 0x00000400,
00231 Filler = 0x40000000,
00232 Stretch = 0x80000000
00233 };
00234
00235 enum ActionButtonStyle
00236 {
00237 ActionStyle0=0,
00238 ActionStyle1,
00239 ActionStyle2,
00240 ActionStyle3,
00241 ActionStyle4,
00242 ActionStyleMAX
00243 };
00244
00254 enum DialogType
00255 {
00256 TreeList = KJanusWidget::TreeList,
00257 Tabbed = KJanusWidget::Tabbed,
00258 Plain = KJanusWidget::Plain,
00259 Swallow = KJanusWidget::Swallow,
00260 IconList = KJanusWidget::IconList
00261 };
00262
00263 public:
00264
00286 KDialogBase( QWidget *parent=0, const char *name=0, bool modal=true,
00287 const QString &caption=QString::null,
00288 int buttonMask=Ok|Apply|Cancel, ButtonCode defaultButton=Ok,
00289 bool separator=false,
00290 const KGuiItem &user1=KGuiItem(),
00291 const KGuiItem &user2=KGuiItem(),
00292 const KGuiItem &user3=KGuiItem() );
00293
00320 KDialogBase( int dialogFace, const QString &caption,
00321 int buttonMask, ButtonCode defaultButton,
00322 QWidget *parent=0, const char *name=0, bool modal=true,
00323 bool separator=false,
00324 const KGuiItem &user1=KGuiItem(),
00325 const KGuiItem &user2=KGuiItem(),
00326 const KGuiItem &user3=KGuiItem() );
00327
00328
00355 KDialogBase( KDialogBase::DialogType dialogFace, WFlags f,
00356 QWidget *parent=0, const char *name=0, bool modal=true,
00357 const QString &caption=QString::null,
00358 int buttonMask=Ok|Apply|Cancel, ButtonCode defaultButton=Ok,
00359 bool separator=false,
00360 const KGuiItem &user1=KGuiItem(),
00361 const KGuiItem &user2=KGuiItem(),
00362 const KGuiItem &user3=KGuiItem() );
00363
00394 KDialogBase( const QString &caption, int buttonMask=Yes|No|Cancel,
00395 ButtonCode defaultButton=Yes, ButtonCode escapeButton=Cancel,
00396 QWidget *parent=0, const char *name=0,
00397 bool modal=true, bool separator=false,
00398 const KGuiItem &yes = KStdGuiItem::yes(),
00399 const KGuiItem &no = KStdGuiItem::no(),
00400 const KGuiItem &cancel = KStdGuiItem::cancel()
00401 );
00402
00406 ~KDialogBase();
00407
00418 void setButtonBoxOrientation( int orientation );
00419
00431 void setEscapeButton( ButtonCode id );
00432
00433
00441 virtual void adjustSize();
00442 virtual QSize sizeHint() const;
00443 virtual QSize minimumSizeHint() const;
00444
00455 QFrame *plainPage();
00456
00484 QFrame *addPage( const QString &itemName,
00485 const QString &header=QString::null,
00486 const QPixmap &pixmap=QPixmap() );
00487
00499 QFrame *addPage( const QStringList &items,
00500 const QString &header=QString::null,
00501 const QPixmap &pixmap=QPixmap() );
00502
00527 QVBox *addVBoxPage( const QString &itemName,
00528 const QString &header=QString::null,
00529 const QPixmap &pixmap=QPixmap() );
00530
00542 QVBox *addVBoxPage( const QStringList &items,
00543 const QString &header=QString::null,
00544 const QPixmap &pixmap=QPixmap() );
00545
00564 QHBox *addHBoxPage( const QString &itemName,
00565 const QString &header=QString::null,
00566 const QPixmap &pixmap=QPixmap() );
00567
00579 QHBox *addHBoxPage( const QStringList &items,
00580 const QString &header=QString::null,
00581 const QPixmap &pixmap=QPixmap() );
00582
00603 QGrid *addGridPage( int n, Orientation dir,
00604 const QString &itemName,
00605 const QString &header=QString::null,
00606 const QPixmap &pixmap=QPixmap() );
00607
00608
00620 QGrid *addGridPage( int n, Orientation dir,
00621 const QStringList &items,
00622 const QString &header=QString::null,
00623 const QPixmap &pixmap=QPixmap() );
00624
00625
00632 void setFolderIcon(const QStringList &path,const QPixmap &pixmap);
00633
00647 QFrame *makeMainWidget();
00648
00662 QVBox *makeVBoxMainWidget();
00663
00677 QHBox *makeHBoxMainWidget();
00678
00696 QGrid *makeGridMainWidget( int n, Orientation dir );
00697
00698
00703 void enableButtonSeparator( bool state );
00704
00715 void showButton( ButtonCode id, bool state );
00716
00725 void showButtonOK( bool state );
00726
00735 void showButtonApply( bool state );
00736
00743 void showButtonCancel( bool state );
00744
00755 bool showPage( int index );
00756
00765 int activePageIndex() const;
00766
00767
00784 int pageIndex( QWidget *widget ) const;
00785
00786
00799 void setMainWidget( QWidget *widget );
00800
00806 QWidget *mainWidget();
00807
00815 void disableResize();
00816
00828 void setInitialSize( const QSize &s, bool noResize=false );
00829
00840 void incInitialSize( const QSize &s, bool noResize=false );
00841
00851 QSize configDialogSize( const QString& groupName ) const;
00852
00864 QSize configDialogSize( KConfig& config, const QString& groupName ) const;
00865
00875 void saveDialogSize( const QString& groupName, bool global=false );
00876
00887 void saveDialogSize( KConfig& config, const QString& groupName,
00888 bool global=false ) const;
00889
00898 void setButtonOK( const KGuiItem &item = KStdGuiItem::ok() );
00899
00915 void setButtonOKText( const QString &text=QString::null,
00916 const QString &tooltip=QString::null,
00917 const QString &quickhelp=QString::null ) KDE_DEPRECATED;
00918
00927 void setButtonApply( const KGuiItem &item = KStdGuiItem::apply() );
00928
00944 void setButtonApplyText( const QString &text=QString::null,
00945 const QString &tooltip=QString::null,
00946 const QString &quickhelp=QString::null ) KDE_DEPRECATED;
00947
00956 void setButtonCancel( const KGuiItem &item = KStdGuiItem::cancel() );
00957
00971 void setButtonCancelText( const QString &text=QString::null,
00972 const QString &tooltip=QString::null,
00973 const QString &quickhelp=QString::null ) KDE_DEPRECATED;
00974
00981 void setButtonText( ButtonCode id, const QString &text );
00982
00989 void setButtonTip( ButtonCode id, const QString &text );
00990
00997 void setButtonWhatsThis( ButtonCode id, const QString &text );
00998
00999
01010 void setTreeListAutoResize( bool state );
01011
01024 void setShowIconsInTreeList(bool state);
01025
01034 void setRootIsDecorated( bool state );
01035
01049 void unfoldTreeList( bool persist = false );
01050
01059 void addWidgetBelowList( QWidget * widget );
01060
01071 void addButtonBelowList( const QString & text, QObject * recv, const char * slot );
01072
01084 void addButtonBelowList( const KGuiItem & guiitem, QObject * recv, const char * slot );
01085
01098 void setIconListAllVisible( bool state );
01099
01105 static bool haveBackgroundTile();
01106
01113 static const QPixmap *backgroundTile();
01118 static const QPixmap *getBackgroundTile() KDE_DEPRECATED;
01119
01127 static void setBackgroundTile( const QPixmap *pix );
01128
01134 void showTile( bool state );
01135
01147 void getBorderWidths( int& ulx, int& uly, int& lrx, int& lry ) const KDE_DEPRECATED;
01148
01160 QRect getContentsRect() const KDE_DEPRECATED;
01161
01179 QSize calculateSize( int w, int h ) const;
01180
01189 QString helpLinkText() const;
01190
01204 QPushButton *actionButton( ButtonCode id );
01205
01206 public slots:
01213 void enableButton( ButtonCode id, bool state );
01214
01220 void enableButtonOK( bool state );
01221
01227 void enableButtonApply( bool state );
01228
01234 void enableButtonCancel( bool state );
01235
01241 void enableLinkedHelp( bool state );
01242
01252 void delayedDestruct();
01253
01262 void setHelpLinkText( const QString &text );
01263
01271 void setHelp( const QString &anchor,
01272 const QString &appname = QString::null );
01273
01277 void helpClickedSlot( const QString & );
01278
01282 void setDetails(bool showDetails);
01283
01290 void setDetailsWidget(QWidget *detailsWidget);
01291
01296 void updateBackground();
01297
01306 void cancel();
01307
01308 signals:
01313 void helpClicked();
01314
01319 void defaultClicked();
01320
01321
01326 void user3Clicked();
01327
01332 void user2Clicked();
01333
01338 void user1Clicked();
01339
01344 void applyClicked();
01345
01350 void tryClicked();
01351
01356 void okClicked();
01357
01362 void yesClicked();
01363
01368 void noClicked();
01369
01374 void cancelClicked();
01375
01380 void closeClicked();
01381
01386 void apply() KDE_DEPRECATED;
01387
01391 void backgroundChanged();
01392
01400 void hidden();
01401
01416 void finished();
01417
01422 void aboutToShowDetails();
01423
01427 void aboutToShowPage(QWidget *page);
01428
01429 protected:
01435 virtual void keyPressEvent( QKeyEvent *e );
01436
01441 virtual void hideEvent( QHideEvent * );
01442
01449 virtual void closeEvent( QCloseEvent *e );
01450
01451 protected slots:
01456 virtual void slotHelp();
01457
01461 virtual void slotDefault();
01462
01467 virtual void slotDetails();
01468
01472 virtual void slotUser3();
01473
01477 virtual void slotUser2();
01478
01482 virtual void slotUser1();
01483
01488 virtual void slotOk();
01489
01493 virtual void slotApply();
01494
01498 virtual void slotTry();
01499
01504 virtual void slotYes();
01505
01510 virtual void slotNo();
01511
01517 virtual void slotCancel();
01518
01523 virtual void slotClose();
01524
01530 virtual void applyPressed() KDE_DEPRECATED;
01531
01535 void updateGeometry();
01536
01544 void slotDelayedDestruct();
01545
01546 private:
01550 void setupLayout();
01551
01557 void makeRelay();
01558
01570 void makeButtonBox( int mask, ButtonCode defaultButton,
01571 const KGuiItem &user1 = KGuiItem(),
01572 const KGuiItem &user2 = KGuiItem(),
01573 const KGuiItem &user3 = KGuiItem() );
01574
01582 void setButtonFocus( QPushButton *p, bool isDefault, bool isFocus );
01583
01589 void printMakeMainWidgetError();
01590
01591 private slots:
01597 void setButtonStyle( int style );
01598
01599
01600 private:
01601 QBoxLayout *mTopLayout;
01602 QWidget *mMainWidget;
01603 KURLLabel *mUrlHelp;
01604 KJanusWidget *mJanus;
01605 KSeparator *mActionSep;
01606
01607 bool mIsActivated;
01608
01609 QString mAnchor;
01610 QString mHelpApp;
01611 QString mHelpLinkText;
01612
01613 static KDialogBaseTile *mTile;
01614 bool mShowTile;
01615
01616 bool mMessageBoxMode;
01617 int mButtonOrientation;
01618 ButtonCode mEscapeButton;
01619
01620 protected:
01621 virtual void virtual_hook( int id, void* data );
01622 private:
01623 class KDialogBasePrivate;
01624 KDialogBasePrivate *d;
01625 };
01626
01627 #endif