kmail

kmfolderseldlg.cpp

00001 // kmfolderseldlg.cpp
00002 
00003 #include <config.h>
00004 #include "kmfolderseldlg.h"
00005 #include "kmfolder.h"
00006 #include "kmmainwidget.h"
00007 #include "globalsettings.h"
00008 
00009 #include <kdebug.h>
00010 #include <klineedit.h>
00011 #include <kpopupmenu.h>
00012 #include <kiconloader.h>
00013 
00014 #include <qlayout.h>
00015 #include <qtoolbutton.h>
00016 
00017 
00018 using namespace KMail;
00019 //-----------------------------------------------------------------------------
00020 KMFolderSelDlg::KMFolderSelDlg( KMMainWidget * parent, const QString& caption,
00021     bool mustBeReadWrite, bool useGlobalSettings )
00022   : KDialogBase( parent, "folder dialog", true, caption,
00023                  Ok|Cancel|User1, Ok, true,
00024                  KGuiItem(i18n("&New Subfolder..."), "folder_new",
00025                    i18n("Create a new subfolder under the currently selected folder"))
00026                ), // mainwin as parent, modal
00027     mUseGlobalSettings( useGlobalSettings )
00028 {
00029   KMFolderTree * ft = parent->folderTree();
00030   assert( ft );
00031 
00032   QString preSelection = mUseGlobalSettings ?
00033     GlobalSettings::self()->lastSelectedFolder() : QString::null;
00034   mTreeView = new KMail::SimpleFolderTree( makeVBoxMainWidget(), ft,
00035                                            preSelection, mustBeReadWrite );
00036   init();
00037 }
00038 
00039 //----------------------------------------------------------------------------
00040 KMFolderSelDlg::KMFolderSelDlg( QWidget * parent, KMFolderTree * tree,
00041     const QString& caption, bool mustBeReadWrite, bool useGlobalSettings )
00042   : KDialogBase( parent, "folder dialog", true, caption,
00043                  Ok|Cancel|User1, Ok, true,
00044                  KGuiItem(i18n("&New Subfolder..."), "folder_new",
00045                    i18n("Create a new subfolder under the currently selected folder"))
00046                ), // mainwin as parent, modal
00047     mUseGlobalSettings( useGlobalSettings )
00048 {
00049   QString preSelection = mUseGlobalSettings ?
00050     GlobalSettings::self()->lastSelectedFolder() : QString::null;
00051   mTreeView = new KMail::SimpleFolderTree( makeVBoxMainWidget(), tree,
00052                                            preSelection, mustBeReadWrite );
00053   init();
00054 }
00055 
00056 //-----------------------------------------------------------------------------
00057 void KMFolderSelDlg::init()
00058 {
00059   mTreeView->setFocus();
00060   connect( mTreeView, SIGNAL( doubleClicked( QListViewItem*, const QPoint&, int ) ),
00061            this, SLOT( slotSelect() ) );
00062   connect( mTreeView, SIGNAL( selectionChanged() ),
00063            this, SLOT( slotUpdateBtnStatus() ) );
00064 
00065   readConfig();
00066 }
00067 
00068 //-----------------------------------------------------------------------------
00069 KMFolderSelDlg::~KMFolderSelDlg()
00070 {
00071   const KMFolder * cur = folder();
00072   if ( cur && mUseGlobalSettings ) {
00073     GlobalSettings::self()->setLastSelectedFolder( cur->idString() );
00074   }
00075 
00076   writeConfig();
00077 }
00078 
00079 
00080 //-----------------------------------------------------------------------------
00081 KMFolder * KMFolderSelDlg::folder( void )
00082 {
00083   return ( KMFolder * ) mTreeView->folder();
00084 }
00085 
00086 //-----------------------------------------------------------------------------
00087 void KMFolderSelDlg::setFolder( KMFolder* folder )
00088 {
00089   mTreeView->setFolder( folder );
00090 }
00091 
00092 //-----------------------------------------------------------------------------
00093 void KMFolderSelDlg::slotSelect()
00094 {
00095   accept();
00096 }
00097 
00098 //-----------------------------------------------------------------------------
00099 void KMFolderSelDlg::slotUser1()
00100 {
00101   mTreeView->addChildFolder();
00102 }
00103 
00104 //-----------------------------------------------------------------------------
00105 void KMFolderSelDlg::slotUpdateBtnStatus()
00106 {
00107   enableButton( User1, folder() &&
00108                 ( !folder()->noContent() && !folder()->noChildren() ) );
00109 }
00110 
00111 //-----------------------------------------------------------------------------
00112 void KMFolderSelDlg::setFlags( bool mustBeReadWrite, bool showOutbox,
00113                                bool showImapFolders )
00114 {
00115   mTreeView->reload( mustBeReadWrite, showOutbox, showImapFolders );
00116 }
00117 
00118 void KMFolderSelDlg::readConfig()
00119 {
00120   KConfig *config = KGlobal::config();
00121   config->setGroup( "FolderSelectionDialog" );
00122 
00123   QSize size = config->readSizeEntry( "Size" );
00124   if ( !size.isEmpty() ) resize( size );
00125   else resize( 500, 300 );
00126 
00127   QValueList<int> widths = config->readIntListEntry( "ColumnWidths" );
00128   if ( !widths.isEmpty() ) {
00129     mTreeView->setColumnWidth(mTreeView->folderColumn(), widths[0]);
00130     mTreeView->setColumnWidth(mTreeView->pathColumn(),   widths[1]);
00131   }
00132   else {
00133     int colWidth = width() / 2;
00134     mTreeView->setColumnWidth(mTreeView->folderColumn(), colWidth);
00135     mTreeView->setColumnWidth(mTreeView->pathColumn(),   colWidth);
00136   }
00137 }
00138 
00139 void KMFolderSelDlg::writeConfig()
00140 {
00141   KConfig *config = KGlobal::config();
00142   config->setGroup( "FolderSelectionDialog" );
00143   config->writeEntry( "Size", size() );
00144 
00145   QValueList<int> widths;
00146   widths.push_back(mTreeView->columnWidth(mTreeView->folderColumn()));
00147   widths.push_back(mTreeView->columnWidth(mTreeView->pathColumn()));
00148   config->writeEntry( "ColumnWidths", widths );
00149 }
00150 
00151 
00152 #include "kmfolderseldlg.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys