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 <tqlayout.h>
00015 #include <tqtoolbutton.h>
00016 #include <tqlabel.h>
00017 
00018 
00019 using namespace KMail;
00020 //-----------------------------------------------------------------------------
00021 KMFolderSelDlg::KMFolderSelDlg( KMMainWidget * parent, const TQString& caption,
00022     bool mustBeReadWrite, bool useGlobalSettings )
00023   : KDialogBase( parent, "folder dialog", true, caption,
00024                  Ok|Cancel|User1, Ok, true,
00025                  KGuiItem(i18n("&New Subfolder..."), "folder_new",
00026                    i18n("Create a new subfolder under the currently selected folder"))
00027                ), // mainwin as parent, modal
00028     mUseGlobalSettings( useGlobalSettings )
00029 {
00030   KMFolderTree * ft = parent->folderTree();
00031   assert( ft );
00032 
00033   TQString preSelection = mUseGlobalSettings ?
00034     GlobalSettings::self()->lastSelectedFolder() : TQString();
00035   TQWidget * container = makeVBoxMainWidget();
00036   new TQLabel( i18n("You can start typing to filter the list of folders"), container );
00037   mTreeView = new KMail::SimpleFolderTree( container, ft,
00038                                            preSelection, mustBeReadWrite );
00039   init();
00040 }
00041 
00042 //----------------------------------------------------------------------------
00043 KMFolderSelDlg::KMFolderSelDlg( TQWidget * parent, KMFolderTree * tree,
00044     const TQString& caption, bool mustBeReadWrite, bool useGlobalSettings )
00045   : KDialogBase( parent, "folder dialog", true, caption,
00046                  Ok|Cancel|User1, Ok, true,
00047                  KGuiItem(i18n("&New Subfolder..."), "folder_new",
00048                    i18n("Create a new subfolder under the currently selected folder"))
00049                ), // mainwin as parent, modal
00050     mUseGlobalSettings( useGlobalSettings )
00051 {
00052   TQString preSelection = mUseGlobalSettings ?
00053     GlobalSettings::self()->lastSelectedFolder() : TQString();
00054   TQWidget * container = makeVBoxMainWidget();
00055   new TQLabel( i18n("You can start typing to filter the list of folders"), container );
00056   mTreeView = new KMail::SimpleFolderTree( container, tree,
00057                                            preSelection, mustBeReadWrite );
00058   init();
00059 }
00060 
00061 //-----------------------------------------------------------------------------
00062 void KMFolderSelDlg::init()
00063 {
00064   mTreeView->setFocus();
00065   connect( mTreeView, TQT_SIGNAL( doubleClicked( TQListViewItem*, const TQPoint&, int ) ),
00066            this, TQT_SLOT( slotSelect() ) );
00067   connect( mTreeView, TQT_SIGNAL( selectionChanged() ),
00068            this, TQT_SLOT( slotUpdateBtnStatus() ) );
00069 
00070   readConfig();
00071 }
00072 
00073 //-----------------------------------------------------------------------------
00074 KMFolderSelDlg::~KMFolderSelDlg()
00075 {
00076   const KMFolder * cur = folder();
00077   if ( cur && mUseGlobalSettings ) {
00078     GlobalSettings::self()->setLastSelectedFolder( cur->idString() );
00079   }
00080 
00081   writeConfig();
00082 }
00083 
00084 
00085 //-----------------------------------------------------------------------------
00086 KMFolder * KMFolderSelDlg::folder( void )
00087 {
00088   return ( KMFolder * ) mTreeView->folder();
00089 }
00090 
00091 //-----------------------------------------------------------------------------
00092 void KMFolderSelDlg::setFolder( KMFolder* folder )
00093 {
00094   mTreeView->setFolder( folder );
00095 }
00096 
00097 //-----------------------------------------------------------------------------
00098 void KMFolderSelDlg::slotSelect()
00099 {
00100   accept();
00101 }
00102 
00103 //-----------------------------------------------------------------------------
00104 void KMFolderSelDlg::slotUser1()
00105 {
00106   mTreeView->addChildFolder();
00107 }
00108 
00109 //-----------------------------------------------------------------------------
00110 void KMFolderSelDlg::slotUpdateBtnStatus()
00111 {
00112   enableButton( User1, folder() &&
00113                 ( !folder()->noContent() && !folder()->noChildren() ) );
00114 }
00115 
00116 //-----------------------------------------------------------------------------
00117 void KMFolderSelDlg::setFlags( bool mustBeReadWrite, bool showOutbox,
00118                                bool showImapFolders )
00119 {
00120   mTreeView->reload( mustBeReadWrite, showOutbox, showImapFolders );
00121 }
00122 
00123 void KMFolderSelDlg::readConfig()
00124 {
00125   KConfig *config = KGlobal::config();
00126   config->setGroup( "FolderSelectionDialog" );
00127 
00128   TQSize size = config->readSizeEntry( "Size" );
00129   if ( !size.isEmpty() ) resize( size );
00130   else resize( 500, 300 );
00131 
00132   TQValueList<int> widths = config->readIntListEntry( "ColumnWidths" );
00133   if ( !widths.isEmpty() ) {
00134     mTreeView->setColumnWidth(mTreeView->folderColumn(), widths[0]);
00135     mTreeView->setColumnWidth(mTreeView->pathColumn(),   widths[1]);
00136   }
00137   else {
00138     int colWidth = width() / 2;
00139     mTreeView->setColumnWidth(mTreeView->folderColumn(), colWidth);
00140     mTreeView->setColumnWidth(mTreeView->pathColumn(),   colWidth);
00141   }
00142 }
00143 
00144 void KMFolderSelDlg::writeConfig()
00145 {
00146   KConfig *config = KGlobal::config();
00147   config->setGroup( "FolderSelectionDialog" );
00148   config->writeEntry( "Size", size() );
00149 
00150   TQValueList<int> widths;
00151   widths.push_back(mTreeView->columnWidth(mTreeView->folderColumn()));
00152   widths.push_back(mTreeView->columnWidth(mTreeView->pathColumn()));
00153   config->writeEntry( "ColumnWidths", widths );
00154 }
00155 
00156 
00157 #include "kmfolderseldlg.moc"