diff --git a/Makefile.am b/Makefile.am index b1e7d9f2a..303c73679 100644 --- a/Makefile.am +++ b/Makefile.am @@ -108,6 +108,7 @@ libkmailprivate_la_SOURCES = kmmessage.cpp kmmainwin.cpp configuredialog.cpp \ composercryptoconfiguration.ui \ warningconfiguration.ui smimeconfiguration.ui annotationjobs.cpp \ accountcombobox.cpp redirectdialog.cpp foldershortcutdialog.cpp \ + folderrequester.cpp \ replyphrases.kcfgc custommimeheader.kcfgc kmail_SOURCES = main.cpp diff --git a/accountdialog.cpp b/accountdialog.cpp index 12eb3821c..bb147b528 100644 --- a/accountdialog.cpp +++ b/accountdialog.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -58,6 +59,10 @@ using KMail::SieveConfigEditor; #include "kmfoldermgr.h" #include "kmservertest.h" #include "protocols.h" +#include "folderrequester.h" +using KMail::FolderRequester; +#include "kmmainwidget.h" +#include "kmfolder.h" #include #include @@ -780,10 +785,10 @@ void AccountDialog::makeImapAccountPage( bool connected ) tabWidget->addTab( page1, i18n("&General") ); int row = -1; - QGridLayout *grid = new QGridLayout( page1, 15, 2, marginHint(), spacingHint() ); - grid->addColSpacing( 1, fontMetrics().maxWidth()*15 ); - grid->setRowStretch( 15, 10 ); - grid->setColStretch( 1, 10 ); + QGridLayout *grid = new QGridLayout( page1, 16, 2, marginHint(), spacingHint() ); + grid->addColSpacing( 1, fontMetrics().maxWidth()*16 ); +// grid->setRowStretch( 15, 10 ); +// grid->setColStretch( 1, 10 ); ++row; QLabel *label = new QLabel( i18n("&Name:"), page1 ); @@ -880,8 +885,8 @@ void AccountDialog::makeImapAccountPage( bool connected ) grid->addMultiCellWidget( mImap.listOnlyOpenCheck, row, row, 0, 1 ); } - ++row; #if 0 + ++row; QHBox* resourceHB = new QHBox( page1 ); resourceHB->setSpacing( 11 ); mImap.resourceCheck = @@ -929,10 +934,13 @@ void AccountDialog::makeImapAccountPage( bool connected ) grid->addWidget( mImap.intervalSpin, row, 1 ); ++row; - mImap.trashCombo = new KMFolderComboBox( page1 ); - mImap.trashCombo->showOutboxFolder( FALSE ); + label = new QLabel( i18n("&Trash folder:"), page1 ); + grid->addWidget( label, row, 0 ); + mImap.trashCombo = new FolderRequester( page1, + kmkernel->getKMMainWidget()->folderTree() ); + mImap.trashCombo->setShowOutbox( false ); + label->setBuddy( mImap.trashCombo ); grid->addWidget( mImap.trashCombo, row, 1 ); - grid->addWidget( new QLabel( mImap.trashCombo, i18n("&Trash folder:"), page1 ), row, 0 ); QWidget *page2 = new QWidget( tabWidget ); tabWidget->addTab( page2, i18n("S&ecurity") ); @@ -1672,9 +1680,9 @@ void AccountDialog::saveSettings() epa.setListOnlyOpenFolders( mImap.listOnlyOpenCheck->isChecked() ); epa.setStorePasswd( mImap.storePasswordCheck->isChecked() ); epa.setPasswd( mImap.passwordEdit->text(), epa.storePasswd() ); - KMFolder *t = mImap.trashCombo->getFolder(); + KMFolder *t = mImap.trashCombo->folder(); if ( t ) - epa.setTrash( mImap.trashCombo->getFolder()->idString() ); + epa.setTrash( mImap.trashCombo->folder()->idString() ); else epa.setTrash( kmkernel->trashFolder()->idString() ); #if 0 @@ -1727,9 +1735,9 @@ void AccountDialog::saveSettings() epa.setOnlySubscribedFolders( mImap.subscribedFoldersCheck->isChecked() ); epa.setStorePasswd( mImap.storePasswordCheck->isChecked() ); epa.setPasswd( mImap.passwordEdit->text(), epa.storePasswd() ); - KMFolder *t = mImap.trashCombo->getFolder(); + KMFolder *t = mImap.trashCombo->folder(); if ( t ) - epa.setTrash( mImap.trashCombo->getFolder()->idString() ); + epa.setTrash( mImap.trashCombo->folder()->idString() ); else epa.setTrash( kmkernel->trashFolder()->idString() ); #if 0 diff --git a/accountdialog.h b/accountdialog.h index 1b186e04a..d17843946 100644 --- a/accountdialog.h +++ b/accountdialog.h @@ -24,7 +24,7 @@ #define _ACCOUNT_DIALOG_H_ #include -#include "kmfoldercombobox.h" +#include class QRegExpValidator; class QCheckBox; @@ -40,6 +40,7 @@ class KMServerTest; class QButtonGroup; namespace KMail { class SieveConfigEditor; + class FolderRequester; } class AccountDialog : public KDialogBase @@ -176,7 +177,7 @@ class AccountDialog : public KDialogBase QRadioButton *authNTLM; QRadioButton *authAnonymous; QPushButton *checkCapabilities; - KMFolderComboBox *trashCombo; + KMail::FolderRequester *trashCombo; }; private slots: diff --git a/configuredialog.cpp b/configuredialog.cpp index d7d64ad14..cca44107c 100644 --- a/configuredialog.cpp +++ b/configuredialog.cpp @@ -46,9 +46,13 @@ #include #include #include +#include "folderrequester.h" +using KMail::FolderRequester; #include "accountcombobox.h" #include "imapaccountbase.h" #include "folderstorage.h" +#include "kmfolder.h" +#include "kmmainwidget.h" using KMail::IdentityListView; using KMail::IdentityListViewItem; @@ -3905,12 +3909,13 @@ MiscPageFolderTab::MiscPageFolderTab( QWidget * parent, const char * name ) // "On startup..." option: hlay = new QHBoxLayout( vlay ); // inherits spacing - mOnStartupOpenFolder = new KMFolderComboBox( this ); + mOnStartupOpenFolder = new FolderRequester( this, + kmkernel->getKMMainWidget()->folderTree() ); label = new QLabel( mOnStartupOpenFolder, i18n("Open this folder on startup:"), this ); hlay->addWidget( label ); hlay->addWidget( mOnStartupOpenFolder, 1 ); - connect( mOnStartupOpenFolder, SIGNAL( activated( int ) ), + connect( mOnStartupOpenFolder, SIGNAL( folderChanged( KMFolder* ) ), this, SLOT( slotEmitChanged( void ) ) ); // "Empty &trash on program exit" option: @@ -3983,8 +3988,8 @@ void MiscPage::FolderTab::save() { general.writeEntry( "empty-trash-on-exit", mEmptyTrashCheck->isChecked() ); general.writeEntry( "confirm-before-empty", mEmptyFolderConfirmCheck->isChecked() ); general.writeEntry( "default-mailbox-format", mMailboxPrefCombo->currentItem() ); - general.writeEntry( "startupFolder", mOnStartupOpenFolder->getFolder() ? - mOnStartupOpenFolder->getFolder()->idString() : QString::null ); + general.writeEntry( "startupFolder", mOnStartupOpenFolder->folder() ? + mOnStartupOpenFolder->folder()->idString() : QString::null ); GlobalSettings::setDelayedMarkAsRead( mDelayedMarkAsRead->isChecked() ); GlobalSettings::setDelayedMarkTime( mDelayedMarkTime->value() ); @@ -4076,11 +4081,12 @@ MiscPageGroupwareTab::MiscPageGroupwareTab( QWidget* parent, const char* name ) // First possibility in the widgetstack: a combo showing the list of all folders // This is used with the ical/vcard storage - mFolderCombo = new KMFolderComboBox( mBox ); + mFolderCombo = new FolderRequester( mBox, + kmkernel->getKMMainWidget()->folderTree() ); mFolderComboStack->addWidget( mFolderCombo, 0 ); QToolTip::add( mFolderCombo, toolTip ); QWhatsThis::add( mFolderCombo, whatsThis ); - connect( mFolderCombo, SIGNAL( activated( int ) ), + connect( mFolderCombo, SIGNAL( folderChanged( KMFolder* ) ), this, SLOT( slotEmitChanged() ) ); // Second possibility in the widgetstack: a combo showing the list of accounts @@ -4242,7 +4248,7 @@ void MiscPage::GroupwareTab::save() { // return 0. In that case we really don't have it enabled QString folderId; if ( format == 0 ) { - KMFolder* folder = mFolderCombo->getFolder(); + KMFolder* folder = mFolderCombo->folder(); if ( folder ) folderId = folder->idString(); } else { diff --git a/configuredialog_p.h b/configuredialog_p.h index dd2160aa3..77ce1bdc9 100644 --- a/configuredialog_p.h +++ b/configuredialog_p.h @@ -32,7 +32,6 @@ class QListBox; class QButtonGroup; class QRegExpValidator; class QVBox; -class KMFolderComboBox; class KMAccount; class KMTransportInfo; class ListView; @@ -52,6 +51,7 @@ namespace KMail { class IdentityDialog; class IdentityListView; class AccountComboBox; + class FolderRequester; } namespace Kleo { class BackendConfigWidget; @@ -846,7 +846,7 @@ protected: QCheckBox *mDelayedMarkAsRead; KIntSpinBox *mDelayedMarkTime; QCheckBox *mShowPopupAfterDnD; - KMFolderComboBox *mOnStartupOpenFolder; + KMail::FolderRequester *mOnStartupOpenFolder; }; class MiscPageGroupwareTab : public ConfigModuleTab { @@ -872,7 +872,7 @@ private: QLabel* mFolderComboLabel; QWidgetStack* mFolderComboStack; - KMFolderComboBox* mFolderCombo; // in the widgetstack + KMail::FolderRequester* mFolderCombo; // in the widgetstack KMail::AccountComboBox* mAccountCombo; // in the widgetstack QCheckBox* mHideGroupwareFolders; diff --git a/kmfolderdia.cpp b/kmfolderdia.cpp index 41a6b037d..f8ba20032 100644 --- a/kmfolderdia.cpp +++ b/kmfolderdia.cpp @@ -48,6 +48,8 @@ #include "kmailicalifaceimpl.h" #include "kmmainwidget.h" #include "globalsettings.h" +#include "folderrequester.h" +using KMail::FolderRequester; #include #include @@ -86,7 +88,8 @@ KMFolderDialog::KMFolderDialog(KMFolder *aFolder, KMFolderDir *aFolderDir, mFolderDir( aFolderDir ), mParentFolder( 0 ), mPositionInFolderList( 0 ), - mIsNewFolder( aFolder == 0 ) + mIsNewFolder( aFolder == 0 ), + mFolderTree( aParent ) { kdDebug(5006)<<"KMFolderDialog::KMFolderDialog()" << endl; @@ -285,9 +288,9 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, QLabel* belongsToLabel = new QLabel( i18n("&Belongs to:" ), fpGroup ); hl->addWidget( belongsToLabel ); - mBelongsToComboBox = new QComboBox(fpGroup); - hl->addWidget( mBelongsToComboBox ); - belongsToLabel->setBuddy( mBelongsToComboBox ); + mBelongsTo = new FolderRequester( fpGroup, mDlg->folderTree() ); + hl->addWidget( mBelongsTo ); + belongsToLabel->setBuddy( mBelongsTo ); //start icons group QGroupBox *iconGroup = new QGroupBox( i18n("Folder Icons"), this, "iconGroup" ); @@ -373,9 +376,9 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, ml->addWidget( mMailboxTypeComboBox ); ml->addStretch( 1 ); - mBelongsToComboBox->insertStringList( mDlg->folderNameList() ); // we want to know if the activated changes - connect( mBelongsToComboBox, SIGNAL(activated(int)), SLOT(slotUpdateItems(int)) ); + connect( mBelongsTo, SIGNAL(folderChanged(KMFolder*)), + SLOT(slotUpdateItems(KMFolder*)) ); QGroupBox *idGroup = new QGroupBox( i18n("Identity" ), this ); idGroup->setColumnLayout( 0, Qt::Vertical ); @@ -547,8 +550,8 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, KMFolder* parentFolder = mDlg->parentFolder(); if ( parentFolder ) { - mBelongsToComboBox->setCurrentItem( mDlg->positionInFolderList() ); - slotUpdateItems( mDlg->positionInFolderList() ); + mBelongsTo->setFolder( parentFolder ); + slotUpdateItems( parentFolder ); } if ( mDlg->folder() ) { @@ -560,7 +563,7 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, case KMFolderTypeSearch: mMailboxTypeComboBox->setCurrentItem( 2 ); belongsToLabel->hide(); - mBelongsToComboBox->hide(); + mBelongsTo->hide(); newmailGroup->hide(); break; case KMFolderTypeMaildir: @@ -573,12 +576,12 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, break; case KMFolderTypeImap: belongsToLabel->setEnabled( false ); - mBelongsToComboBox->setEnabled( false ); + mBelongsTo->setEnabled( false ); mMailboxTypeGroupBox->hide(); break; case KMFolderTypeCachedImap: belongsToLabel->setEnabled( false ); - mBelongsToComboBox->setEnabled( false ); + mBelongsTo->setEnabled( false ); mMailboxTypeGroupBox->hide(); newmailGroup->hide(); break; @@ -595,7 +598,7 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, case KMFolderTypeSearch: mMailboxTypeComboBox->setCurrentItem( 2 ); belongsToLabel->hide(); - mBelongsToComboBox->hide(); + mBelongsTo->hide(); newmailGroup->hide(); break; case KMFolderTypeMaildir: @@ -613,6 +616,9 @@ KMail::FolderDiaGeneralTab::FolderDiaGeneralTab( KMFolderDialog* dlg, break; default: ; } + } else { + // creating new top level local folder + newmailGroup->hide(); } // Musn't be able to edit details for a system folder. @@ -684,11 +690,8 @@ void FolderDiaGeneralTab::slotFolderNameChanged( const QString& str ) } //----------------------------------------------------------------------------- -void FolderDiaGeneralTab::slotUpdateItems ( int current ) +void FolderDiaGeneralTab::slotUpdateItems ( KMFolder* selectedFolder ) { - KMFolder* selectedFolder = 0; - // check if the index is valid (the top level has no entrance in the mDlg->folders()) - if (current > 0) selectedFolder = *mDlg->folders().at(current - 1); if (selectedFolder && (selectedFolder->folderType() == KMFolderTypeImap || selectedFolder->folderType() == KMFolderTypeCachedImap)) { @@ -744,8 +747,7 @@ bool FolderDiaGeneralTab::save() QString acctName; QString fldName, oldFldName; KMFolderDir *selectedFolderDir = &(kmkernel->folderMgr()->dir()); - KMFolder *selectedFolder = 0; - int curFolder = mBelongsToComboBox->currentItem(); + KMFolder *selectedFolder = mBelongsTo->folder(); if( !mDlg->isNewFolder() ) oldFldName = mDlg->folder()->name(); if (!mNameEdit->text().isEmpty()) fldName = mNameEdit->text(); @@ -760,9 +762,8 @@ bool FolderDiaGeneralTab::save() if (mMailboxTypeComboBox->currentItem() == 2) { selectedFolderDir = &(kmkernel->searchFolderMgr()->dir()); } - else if (curFolder != 0) + else if (selectedFolder) { - selectedFolder = *mDlg->folders().at(curFolder - 1); selectedFolderDir = selectedFolder->createChildFolder(); } diff --git a/kmfolderdia.h b/kmfolderdia.h index 678a2deca..36e59e766 100644 --- a/kmfolderdia.h +++ b/kmfolderdia.h @@ -55,6 +55,7 @@ namespace KPIM { class IdentityCombo; } class KMFolderDialog; class KMFolderTree; template class QGuardedPtr; +namespace KMail { class FolderRequester; } namespace KMail { @@ -128,7 +129,7 @@ private slots: * is called if the folder dropdown changes * then we update the other items to reflect the capabilities */ - void slotUpdateItems( int ); + void slotUpdateItems( KMFolder* ); void slotFolderNameChanged( const QString& ); void slotFolderContentsSelectionChanged( int ); @@ -136,13 +137,12 @@ private: void initializeWithValuesFromFolder( KMFolder* folder ); private: - QComboBox *mBelongsToComboBox; + FolderRequester *mBelongsTo; QComboBox *mMailboxTypeComboBox; QComboBox *mShowSenderReceiverComboBox; QComboBox *mContentsComboBox; QGroupBox *mIncidencesForGroup; QComboBox *mIncidencesForComboBox; - QLineEdit *mNameEdit; QLabel *mNormalIconLabel; KIconButton *mNormalIconButton; QLabel *mUnreadIconLabel; @@ -151,6 +151,7 @@ private: QCheckBox *mNewMailCheckBox; QCheckBox *mIgnoreNewMailCheckBox; QCheckBox *mKeepRepliesInSameFolderCheckBox; + KLineEdit *mNameEdit; KPIM::IdentityCombo *mIdentityComboBox; QGroupBox *mMailboxTypeGroupBox; @@ -263,6 +264,8 @@ public: KMFolder* parentFolder() const { return mParentFolder; } int positionInFolderList() const { return mPositionInFolderList; } + KMFolderTree* folderTree() const { return mFolderTree; } + protected slots: void slotChanged( bool ); virtual void slotOk(); @@ -291,6 +294,7 @@ private: QValueVector mTabs; int mDelayedSavingTabs; // this should go into a base class one day + KMFolderTree* mFolderTree; }; #endif /*__KMFOLDERDIA*/ diff --git a/kmfolderseldlg.cpp b/kmfolderseldlg.cpp index 3a84703c7..0e4217c1e 100644 --- a/kmfolderseldlg.cpp +++ b/kmfolderseldlg.cpp @@ -7,9 +7,10 @@ #include "globalsettings.h" #include -#include +#include -#include +#include +#include namespace KMail { @@ -58,28 +59,45 @@ SimpleFolderTree::SimpleFolderTree( QWidget * parent, KMFolderTree * folderTree, const QString & preSelection, bool mustBeReadWrite ) - : KListView( parent ) + : KListView( parent ), mFolderTree( folderTree ) { - assert( folderTree ); - - int columnIdx = addColumn( i18n( "Folder" ) ); + mFolderColumn = addColumn( i18n( "Folder" ) ); setRootIsDecorated( true ); setSorting( -1 ); + reload( mustBeReadWrite, true, true, preSelection ); +} + +void SimpleFolderTree::reload( bool mustBeReadWrite, bool showOutbox, + bool showImapFolders, const QString& preSelection ) +{ + clear(); FolderItem * lastItem = 0; FolderItem * lastTopItem = 0; FolderItem * selectedItem = 0; int lastDepth = 0; - for ( QListViewItemIterator it( folderTree ) ; it.current() ; ++it ) { + QString selected = preSelection; + if ( selected.isEmpty() && folder() ) + selected = folder()->idString(); + + for ( QListViewItemIterator it( mFolderTree ) ; it.current() ; ++it ) + { KMFolderTreeItem * fti = static_cast( it.current() ); + // search folders are never shown if ( !fti || fti->protocol() == KFolderTreeItem::Search ) continue; + // imap folders? + if ( fti->protocol() == KFolderTreeItem::Imap && !showImapFolders ) + continue; + + // the outbox? + if ( fti->type() == KFolderTreeItem::Outbox && !showOutbox ) + continue; + int depth = fti->depth();// - 1; - //kdDebug( 5006 ) << "LastDepth=" << lastDepth << "\tdepth=" << depth - // << "\tname=" << fti->text( 0 ) << endl; FolderItem * item = 0; if ( depth <= 0 ) { // top level - first top level item or after last existing top level item @@ -119,14 +137,14 @@ SimpleFolderTree::SimpleFolderTree( QWidget * parent, } } - item->setText( columnIdx, fti->text( 0 ) ); + item->setText( mFolderColumn, fti->text( 0 ) ); // Make items without folders and top level items unselectable // (i.e. root item Local Folders and IMAP accounts) if ( !fti->folder() || depth == 0 || ( mustBeReadWrite && fti->folder()->isReadOnly() ) ) { item->setSelectable( false ); } else { item->setFolder( fti->folder() ); - if ( preSelection == item->folder()->idString() ) + if ( selected == item->folder()->idString() ) selectedItem = item; } lastItem = item; @@ -143,27 +161,49 @@ SimpleFolderTree::SimpleFolderTree( QWidget * parent, const KMFolder * SimpleFolderTree::folder() const { QListViewItem * item = currentItem(); - if( item ) { + if ( item ) { const KMFolder * folder = static_cast( item )->folder(); if( folder ) return folder; } return 0; } -} // namespace KMail +//----------------------------------------------------------------------------- +void SimpleFolderTree::setFolder( KMFolder *folder ) +{ + for ( QListViewItemIterator it( this ) ; it.current() ; ++it ) + { + const KMFolder *fld = static_cast( it.current() )->folder(); + if ( fld == folder ) + { + setSelected( it.current(), true ); + ensureItemVisible( it.current() ); + } + } +} + +//----------------------------------------------------------------------------- +void SimpleFolderTree::setFolder( const QString& idString ) +{ + setFolder( kmkernel->findFolderById( idString ) ); +} //----------------------------------------------------------------------------- -KMFolderSelDlg::KMFolderSelDlg( KMMainWidget * parent, const QString& caption, bool mustBeReadWrite ) +KMFolderSelDlg::KMFolderSelDlg( KMMainWidget * parent, const QString& caption, + bool mustBeReadWrite, bool useGlobalSettings ) : KDialogBase( parent, "folder dialog", true, caption, - Ok|Cancel, Ok, true ) // mainwin as parent, modal + Ok|Cancel, Ok, true ), // mainwin as parent, modal + mUseGlobalSettings( useGlobalSettings ) { KMFolderTree * ft = parent->folderTree(); assert( ft ); + QString global = mUseGlobalSettings ? + GlobalSettings::lastSelectedFolder() : QString::null; mTreeView = new KMail::SimpleFolderTree( makeVBoxMainWidget(), ft, - GlobalSettings::lastSelectedFolder(), - mustBeReadWrite ); + global, mustBeReadWrite ); + mTreeView->setFocus(); connect( mTreeView, SIGNAL( doubleClicked( QListViewItem*, const QPoint&, int ) ), this, SLOT( slotSelect() ) ); @@ -171,12 +211,30 @@ KMFolderSelDlg::KMFolderSelDlg( KMMainWidget * parent, const QString& caption, b resize(220, 300); } +//----------------------------------------------------------------------------- +KMFolderSelDlg::KMFolderSelDlg( QWidget * parent, KMFolderTree * tree, + const QString& caption, bool mustBeReadWrite, bool useGlobalSettings ) + : KDialogBase( parent, "folder dialog", true, caption, + Ok|Cancel, Ok, true ), // mainwin as parent, modal + mUseGlobalSettings( useGlobalSettings ) +{ + QString global = mUseGlobalSettings ? + GlobalSettings::lastSelectedFolder() : QString::null; + mTreeView = new KMail::SimpleFolderTree( makeVBoxMainWidget(), tree, + global, mustBeReadWrite ); + + mTreeView->setFocus(); + connect( mTreeView, SIGNAL( doubleClicked( QListViewItem*, const QPoint&, int ) ), + this, SLOT( slotSelect() ) ); + + resize(220, 300); +} //----------------------------------------------------------------------------- KMFolderSelDlg::~KMFolderSelDlg() { const KMFolder * cur = folder(); - if ( cur ) { + if ( cur && mUseGlobalSettings ) { GlobalSettings::setLastSelectedFolder( cur->idString() ); } } @@ -188,12 +246,25 @@ KMFolder * KMFolderSelDlg::folder( void ) return ( KMFolder * ) mTreeView->folder(); } +//----------------------------------------------------------------------------- +void KMFolderSelDlg::setFolder( KMFolder* folder ) +{ + mTreeView->setFolder( folder ); +} + //----------------------------------------------------------------------------- void KMFolderSelDlg::slotSelect() { accept(); } - //----------------------------------------------------------------------------- +void KMFolderSelDlg::setFlags( bool mustBeReadWrite, bool showOutbox, + bool showImapFolders ) +{ + mTreeView->reload( mustBeReadWrite, showOutbox, showImapFolders ); +} + +} // namespace KMail + #include "kmfolderseldlg.moc" diff --git a/kmfolderseldlg.h b/kmfolderseldlg.h index 38420c8b7..1552d5630 100644 --- a/kmfolderseldlg.h +++ b/kmfolderseldlg.h @@ -1,14 +1,13 @@ /* KMail Folder Selection Dialog * Pops up a small window with a list of folders and Ok/Cancel buttons. * Author: Stefan Taferner + * Carsten Burghardt */ #ifndef kmfolderseldlg_h #define kmfolderseldlg_h #include #include -#include -#include class KMFolder; class KMFolderTree; @@ -22,32 +21,67 @@ namespace KMail { SimpleFolderTree( QWidget * parent, KMFolderTree * folderTree, const QString & preSelection, bool mustBeReadWrite ); + /** Reload the tree and select what folders to show and what not */ + void reload( bool mustBeReadWrite, bool showOutbox, bool showImapFolders, + const QString& preSelection = QString::null ); + + /** Return the current folder */ const KMFolder * folder() const; + + /** Set the current folder */ + void setFolder( KMFolder* ); + void setFolder( const QString& idString ); + + private: + KMFolderTree* mFolderTree; + int mFolderColumn; }; -} + //----------------------------------------------------------------------------- + class KMFolderSelDlg: public KDialogBase + { + Q_OBJECT -//----------------------------------------------------------------------------- -class KMFolderSelDlg: public KDialogBase -{ - Q_OBJECT + public: + /** + * Constructor with KMMainWidget + * @p parent @em must be a @see KMMainWin, because we + * need its foldertree. + * @param mustBeReadWrite if true, readonly folders are disabled + * @param useGlobalSettings if true, the current folder is read and + * written to GlobalSettings + */ + KMFolderSelDlg( KMMainWidget * parent, const QString& caption, + bool mustBeReadWrite, bool useGlobalSettings = true ); + /** + * Constructor with separate KMFolderTree + * @param mustBeReadWrite if true, readonly folders are disabled + * @param useGlobalSettings if true, the current folder is read and + * written to GlobalSettings + */ + KMFolderSelDlg( QWidget * parent, KMFolderTree * tree, + const QString& caption, bool mustBeReadWrite, + bool useGlobalSettings = true ); -public: - /** Constructor. @p parent @em must be a @see KMMainWin, because we - need its foldertree. - * @param mustBeReadWrite if true, readonly folders are disabled - */ - KMFolderSelDlg( KMMainWidget * parent, const QString& caption, bool mustBeReadWrite ); - virtual ~KMFolderSelDlg(); + virtual ~KMFolderSelDlg(); - /** Returns selected folder */ - virtual KMFolder* folder( void ); + /** Returns selected folder */ + virtual KMFolder* folder( void ); -protected slots: - void slotSelect(); + /** Set selected folder */ + void setFolder( KMFolder* folder ); + + /** Set some flags what folders to show and what not */ + void setFlags( bool mustBeReadWrite, bool showOutbox, bool showImapFolders ); + + protected slots: + void slotSelect(); + + protected: + SimpleFolderTree * mTreeView; + bool mUseGlobalSettings; + }; -protected: - KMail::SimpleFolderTree * mTreeView; -}; +} // namespace KMail #endif /*kmfolderseldlg_h*/ diff --git a/kmmainwidget.cpp b/kmmainwidget.cpp index 4229a4152..e17919552 100644 --- a/kmmainwidget.cpp +++ b/kmmainwidget.cpp @@ -1406,7 +1406,7 @@ void KMMainWidget::slotToggleTotalColumn() //----------------------------------------------------------------------------- void KMMainWidget::slotMoveMsg() { - KMFolderSelDlg dlg( this, i18n("Move Message to Folder"), true ); + KMail::KMFolderSelDlg dlg( this, i18n("Move Message to Folder"), true ); KMFolder* dest; if (!dlg.exec()) return; @@ -1487,7 +1487,7 @@ void KMMainWidget::slotStartWatchGnuPG() //----------------------------------------------------------------------------- void KMMainWidget::slotCopyMsg() { - KMFolderSelDlg dlg( this, i18n("Copy Message to Folder"), true ); + KMail::KMFolderSelDlg dlg( this, i18n("Copy Message to Folder"), true ); KMFolder* dest; if (!dlg.exec()) return;