00001
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 ),
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 ),
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"