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