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 <tdepopupmenu.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 TDEConfig *config = TDEGlobal::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 TDEConfig *config = TDEGlobal::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"