kdialogbase.h
00001 /* 00002 * This file is part of the KDE Libraries 00003 * Copyright (C) 1999-2001 Mirko Boehm (mirko@kde.org) and 00004 * Espen Sand (espen@kde.org) 00005 * Holger Freyther <freyther@kde.org> 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public License 00018 * along with this library; see the file COPYING.LIB. If not, write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00020 * Boston, MA 02110-1301, USA. 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 00032 class QPushButton; 00033 class KSeparator; 00034 class KURLLabel; 00035 class QBoxLayout; 00036 class QPixmap; 00037 class KGuiItem; 00042 class KDialogBaseButton; 00043 00048 class KDialogBaseTile; 00049 00191 class KDEUI_EXPORT KDialogBase : public KDialog 00192 { 00193 Q_OBJECT 00194 00195 public: 00196 00197 enum ButtonCode 00198 { 00199 Help = 0x00000001, 00200 Default = 0x00000002, 00201 Ok = 0x00000004, 00202 Apply = 0x00000008, 00203 Try = 0x00000010, 00204 Cancel = 0x00000020, 00205 Close = 0x00000040, 00206 User1 = 0x00000080, 00207 User2 = 0x00000100, 00208 User3 = 0x00000200, 00209 No = 0x00000080, 00210 Yes = 0x00000100, 00211 Details = 0x00000400, 00212 Filler = 0x40000000, 00213 Stretch = 0x80000000, 00214 NoDefault 00215 }; 00216 00217 enum ActionButtonStyle 00218 { 00219 ActionStyle0=0, // KDE std 00220 ActionStyle1, 00221 ActionStyle2, 00222 ActionStyle3, 00223 ActionStyle4, 00224 ActionStyleMAX 00225 }; 00226 00237 enum DialogType 00238 { 00239 TreeList = KJanusWidget::TreeList, 00240 Tabbed = KJanusWidget::Tabbed, 00241 Plain = KJanusWidget::Plain, 00242 Swallow = KJanusWidget::Swallow, 00243 IconList = KJanusWidget::IconList 00244 }; 00245 00246 public: 00247 00270 KDialogBase( QWidget *parent=0, const char *name=0, bool modal=true, 00271 const QString &caption=QString::null, 00272 int buttonMask=Ok|Apply|Cancel, ButtonCode defaultButton=Ok, 00273 bool separator=false, 00274 const KGuiItem &user1=KGuiItem(), 00275 const KGuiItem &user2=KGuiItem(), 00276 const KGuiItem &user3=KGuiItem() ); 00277 00305 KDialogBase( int dialogFace, const QString &caption, 00306 int buttonMask, ButtonCode defaultButton, 00307 QWidget *parent=0, const char *name=0, bool modal=true, 00308 bool separator=false, 00309 const KGuiItem &user1=KGuiItem(), 00310 const KGuiItem &user2=KGuiItem(), 00311 const KGuiItem &user3=KGuiItem() ); 00312 00313 00341 KDialogBase( KDialogBase::DialogType dialogFace, WFlags f, 00342 QWidget *parent=0, const char *name=0, bool modal=true, 00343 const QString &caption=QString::null, 00344 int buttonMask=Ok|Apply|Cancel, ButtonCode defaultButton=Ok, 00345 bool separator=false, 00346 const KGuiItem &user1=KGuiItem(), 00347 const KGuiItem &user2=KGuiItem(), 00348 const KGuiItem &user3=KGuiItem() ); 00349 00381 KDialogBase( const QString &caption, int buttonMask=Yes|No|Cancel, 00382 ButtonCode defaultButton=Yes, ButtonCode escapeButton=Cancel, 00383 QWidget *parent=0, const char *name=0, 00384 bool modal=true, bool separator=false, 00385 const KGuiItem &yes = KStdGuiItem::yes(), // i18n("&Yes") 00386 const KGuiItem &no = KStdGuiItem::no(), // i18n("&No"), 00387 const KGuiItem &cancel = KStdGuiItem::cancel() // i18n("&Cancel") 00388 ); 00389 00393 ~KDialogBase(); 00394 00405 void setButtonBoxOrientation( int orientation ); 00406 00418 void setEscapeButton( ButtonCode id ); 00419 00420 00428 virtual void adjustSize(); 00429 virtual QSize sizeHint() const; 00430 virtual QSize minimumSizeHint() const; 00431 00442 QFrame *plainPage(); 00443 00471 QFrame *addPage( const QString &itemName, 00472 const QString &header=QString::null, 00473 const QPixmap &pixmap=QPixmap() ); 00474 00486 QFrame *addPage( const QStringList &items, 00487 const QString &header=QString::null, 00488 const QPixmap &pixmap=QPixmap() ); 00489 00514 QVBox *addVBoxPage( const QString &itemName, 00515 const QString &header=QString::null, 00516 const QPixmap &pixmap=QPixmap() ); 00517 00529 QVBox *addVBoxPage( const QStringList &items, 00530 const QString &header=QString::null, 00531 const QPixmap &pixmap=QPixmap() ); 00532 00551 QHBox *addHBoxPage( const QString &itemName, 00552 const QString &header=QString::null, 00553 const QPixmap &pixmap=QPixmap() ); 00554 00566 QHBox *addHBoxPage( const QStringList &items, 00567 const QString &header=QString::null, 00568 const QPixmap &pixmap=QPixmap() ); 00569 00590 QGrid *addGridPage( int n, Orientation dir, 00591 const QString &itemName, 00592 const QString &header=QString::null, 00593 const QPixmap &pixmap=QPixmap() ); 00594 00595 00607 QGrid *addGridPage( int n, Orientation dir, 00608 const QStringList &items, 00609 const QString &header=QString::null, 00610 const QPixmap &pixmap=QPixmap() ); 00611 00612 00619 void setFolderIcon(const QStringList &path,const QPixmap &pixmap); 00620 00634 QFrame *makeMainWidget(); 00635 00649 QVBox *makeVBoxMainWidget(); 00650 00664 QHBox *makeHBoxMainWidget(); 00665 00683 QGrid *makeGridMainWidget( int n, Orientation dir ); 00684 00685 00690 void enableButtonSeparator( bool state ); 00691 00702 void showButton( ButtonCode id, bool state ); 00703 00712 void showButtonOK( bool state ); 00713 00722 void showButtonApply( bool state ); 00723 00730 void showButtonCancel( bool state ); 00731 00742 bool showPage( int index ); 00743 00752 int activePageIndex() const; 00753 00754 00771 int pageIndex( QWidget *widget ) const; 00772 00773 00786 void setMainWidget( QWidget *widget ); 00787 00793 QWidget *mainWidget(); 00794 00802 void disableResize(); 00803 00815 void setInitialSize( const QSize &s, bool noResize=false ); 00816 00827 void incInitialSize( const QSize &s, bool noResize=false ); 00828 00836 QSize configDialogSize( const QString& groupName ) const; 00837 00847 QSize configDialogSize( KConfig& config, const QString& groupName ) const; 00848 00858 void saveDialogSize( const QString& groupName, bool global=false ); 00859 00870 void saveDialogSize( KConfig& config, const QString& groupName, 00871 bool global=false ) const; 00872 00882 void setButtonOK( const KGuiItem &item = KStdGuiItem::ok() ); 00883 00899 void setButtonOKText( const QString &text=QString::null, 00900 const QString &tooltip=QString::null, 00901 const QString &quickhelp=QString::null ) KDE_DEPRECATED; 00902 00912 void setButtonApply( const KGuiItem &item = KStdGuiItem::apply() ); 00913 00929 void setButtonApplyText( const QString &text=QString::null, 00930 const QString &tooltip=QString::null, 00931 const QString &quickhelp=QString::null ) KDE_DEPRECATED; 00932 00942 void setButtonCancel( const KGuiItem &item = KStdGuiItem::cancel() ); 00943 00957 void setButtonCancelText( const QString &text=QString::null, 00958 const QString &tooltip=QString::null, 00959 const QString &quickhelp=QString::null ) KDE_DEPRECATED; 00960 00967 void setButtonText( ButtonCode id, const QString &text ); 00968 00975 void setButtonTip( ButtonCode id, const QString &text ); 00976 00983 void setButtonWhatsThis( ButtonCode id, const QString &text ); 00984 00996 void setButtonGuiItem( ButtonCode id, const KGuiItem &item ); 00997 01008 void setTreeListAutoResize( bool state ); 01009 01022 void setShowIconsInTreeList(bool state); 01023 01032 void setRootIsDecorated( bool state ); 01033 01047 void unfoldTreeList( bool persist = false ); 01048 01057 void addWidgetBelowList( QWidget * widget ); 01058 01069 void addButtonBelowList( const QString & text, QObject * recv, const char * slot ); 01070 01082 void addButtonBelowList( const KGuiItem & guiitem, QObject * recv, const char * slot ); 01083 01096 void setIconListAllVisible( bool state ); 01097 01103 static bool haveBackgroundTile(); 01104 01111 static const QPixmap *backgroundTile(); 01116 static const QPixmap *getBackgroundTile() KDE_DEPRECATED; 01117 01125 static void setBackgroundTile( const QPixmap *pix ); 01126 01132 void showTile( bool state ); 01133 01145 void getBorderWidths( int& ulx, int& uly, int& lrx, int& lry ) const KDE_DEPRECATED; 01146 01158 QRect getContentsRect() const KDE_DEPRECATED; 01159 01177 QSize calculateSize( int w, int h ) const; 01178 01187 QString helpLinkText() const; 01188 01202 QPushButton *actionButton( ButtonCode id ); 01203 01204 public slots: 01211 void enableButton( ButtonCode id, bool state ); 01212 01218 void enableButtonOK( bool state ); 01219 01225 void enableButtonApply( bool state ); 01226 01232 void enableButtonCancel( bool state ); 01233 01239 void enableLinkedHelp( bool state ); 01240 01250 void delayedDestruct(); 01251 01260 void setHelpLinkText( const QString &text ); 01261 01274 void setHelp( const QString &anchor, 01275 const QString &appname = QString::null ); 01276 01280 void helpClickedSlot( const QString & ); 01281 01285 void setDetails(bool showDetails); 01286 01293 void setDetailsWidget(QWidget *detailsWidget); 01294 01299 void updateBackground(); 01300 01309 void cancel(); 01310 01311 signals: 01316 void helpClicked(); 01317 01322 void defaultClicked(); 01323 01324 01329 void user3Clicked(); 01330 01335 void user2Clicked(); 01336 01341 void user1Clicked(); 01342 01347 void applyClicked(); 01348 01353 void tryClicked(); 01354 01359 void okClicked(); 01360 01365 void yesClicked(); 01366 01371 void noClicked(); 01372 01377 void cancelClicked(); 01378 01383 void closeClicked(); 01384 01389 void apply(); 01390 01394 void backgroundChanged(); 01395 01403 void hidden(); 01404 01419 void finished(); 01420 01425 void aboutToShowDetails(); 01426 01431 void aboutToShowPage(QWidget *page); 01432 01433 protected: 01439 virtual void keyPressEvent( QKeyEvent *e ); 01440 01445 virtual void hideEvent( QHideEvent * ); 01446 01453 virtual void closeEvent( QCloseEvent *e ); 01454 01455 protected slots: 01460 virtual void slotHelp(); 01461 01465 virtual void slotDefault(); 01466 01471 virtual void slotDetails(); 01472 01476 virtual void slotUser3(); 01477 01481 virtual void slotUser2(); 01482 01486 virtual void slotUser1(); 01487 01492 virtual void slotOk(); 01493 01497 virtual void slotApply(); 01498 01502 virtual void slotTry(); 01503 01508 virtual void slotYes(); 01509 01514 virtual void slotNo(); 01515 01521 virtual void slotCancel(); 01522 01527 virtual void slotClose(); 01528 01534 virtual void applyPressed(); 01535 01539 void updateGeometry(); 01540 01548 void slotDelayedDestruct(); 01549 01550 private: 01554 void setupLayout(); 01555 01561 void makeRelay(); 01562 01575 void makeButtonBox( int mask, ButtonCode defaultButton, 01576 const KGuiItem &user1 = KGuiItem(), 01577 const KGuiItem &user2 = KGuiItem(), 01578 const KGuiItem &user3 = KGuiItem() ); 01579 01587 void setButtonFocus( QPushButton *p, bool isDefault, bool isFocus ); 01588 01594 void printMakeMainWidgetError(); 01595 01596 private slots: 01602 void setButtonStyle( int style ); 01603 01604 01605 private: 01606 QBoxLayout *mTopLayout; 01607 QWidget *mMainWidget; 01608 KURLLabel *mUrlHelp; 01609 KJanusWidget *mJanus; 01610 KSeparator *mActionSep; 01611 01612 bool mIsActivated; 01613 01614 QString mAnchor; 01615 QString mHelpApp; 01616 QString mHelpLinkText; 01617 01618 static KDialogBaseTile *mTile; 01619 bool mShowTile; 01620 01621 bool mMessageBoxMode; 01622 int mButtonOrientation; 01623 ButtonCode mEscapeButton; 01624 01625 protected: 01626 virtual void virtual_hook( int id, void* data ); 01627 private: 01628 class KDialogBasePrivate; 01629 KDialogBasePrivate* const d; 01630 }; 01631 01632 #endif