Merged revisions 1048194 via svnmerge from

https://svn.kde.org/home/kde/branches/kdepim/enterprise/kdepim

........
  r1048194 | tmcguire | 2009-11-12 16:49:05 -0500 (Thu, 12 Nov 2009) | 2 lines
  
  Factor out folder deletion into its own function
........

svn path=/branches/kdepim/enterprise4/kdepim/; revision=1048216
wilder-work
Allen Winter 17 years ago
parent eb1370d23c
commit f2f3805ee7
  1. 1
      archivefolderdialog.cpp
  2. 38
      folderutil.cpp
  3. 13
      folderutil.h
  4. 1
      importarchivedialog.cpp
  5. 28
      kmmainwidget.cpp

@ -56,6 +56,7 @@ ArchiveFolderDialog::ArchiveFolderDialog( QWidget *parent )
int row = 0;
// TODO: better label for "Ok" button
// TODO: Explaination label
// TODO: Use QFormLayout in KDE4

@ -23,6 +23,8 @@
#include "kmfoldercachedimap.h"
#include "kmfoldermgr.h"
#include <kmessagebox.h>
using namespace KMail;
using namespace FolderUtil;
@ -49,7 +51,7 @@ KMFolder *KMail::FolderUtil::createSubFolder( KMFolder *parentFolder, KMFolderDi
}
KMFolderImap* newStorage = static_cast<KMFolderImap*>( newFolder->storage() );
selectedStorage->createFolder(folderName, parent); // create it on the server
newStorage->initializeFrom( selectedStorage, imapPath, QString::null );
newStorage->initializeFrom( selectedStorage, imapPath, QString() );
static_cast<KMFolderImap*>(parentFolder->storage())->setAccount( selectedStorage->account() );
return newFolder;
}
@ -78,4 +80,36 @@ KMFolder *KMail::FolderUtil::createSubFolder( KMFolder *parentFolder, KMFolderDi
}
return newFolder;
}
}
void KMail::FolderUtil::deleteFolder( KMFolder *folderToDelete, QWidget *parent )
{
if ( folderToDelete->hasAccounts() ) {
// this folder has an account, so we need to change that to the inbox
for ( AccountList::Iterator it (folderToDelete->acctList()->begin() ),
end( folderToDelete->acctList()->end() ); it != end; ++it ) {
(*it)->setFolder( kmkernel->inboxFolder() );
KMessageBox::information(
parent,
i18n( "<qt>The folder you deleted was associated with the account "
"<b>%1</b> which delivered mail into it. The folder the account "
"delivers new mail into was reset to the main Inbox folder.</qt>",
(*it)->name() ) );
}
}
if (folderToDelete->folderType() == KMFolderTypeImap)
kmkernel->imapFolderMgr()->remove(folderToDelete);
else if (folderToDelete->folderType() == KMFolderTypeCachedImap) {
// Deleted by user -> tell the account (see KMFolderCachedImap::listDirectory2)
KMFolderCachedImap* storage = static_cast<KMFolderCachedImap*>( folderToDelete->storage() );
KMAcctCachedImap* acct = storage->account();
if ( acct )
acct->addDeletedFolder( folderToDelete );
kmkernel->dimapFolderMgr()->remove(folderToDelete);
}
else if (folderToDelete->folderType() == KMFolderTypeSearch)
kmkernel->searchFolderMgr()->remove(folderToDelete);
else
kmkernel->folderMgr()->remove(folderToDelete);
}

@ -24,6 +24,7 @@
class KMFolder;
class KMFolderDir;
class QString;
class QWidget;
namespace KMail
{
@ -41,12 +42,22 @@ namespace FolderUtil
* @param namespaceName for (d)IMAP folders, the namespace the new folder should be in. Can be empty.
* @param localFolderType for local folders, this determines if the folder should be MBOX or maildir
*
* @return the newly created folder or 0 in case an error occured
* @return the newly created folder or 0 in case an error occurred
*/
KMFolder *createSubFolder( KMFolder *parentFolder, KMFolderDir *parentDir,
const QString &folderName, const QString &namespaceName,
KMFolderType localFolderType );
/**
* Deletes a folder and all its subfolders.
* Handles all types of folders correctly, as well as folders with accounts
*
* @param folderToDelete the folder which is going to be deleted
* @param parent the parent widget, which is used when displaying a messagebox,
* which happens when removing a folder with an associated account
*/
void deleteFolder( KMFolder *folderToDelete, QWidget *parent );
}
}

@ -50,6 +50,7 @@ ImportArchiveDialog::ImportArchiveDialog( QWidget *parent )
// TODO: Explaination label
// TODO: Use QFormLayout in KDE4
// TODO: better label for "Ok" button
QLabel *folderLabel = new QLabel( i18n( "Folder:" ), mainWidget );
mainLayout->addWidget( folderLabel, row, 0 );

@ -136,6 +136,7 @@ using KMail::TemplateParser;
#include "statusbarlabel.h"
#include "archivefolderdialog.h"
#include "importarchivedialog.h"
#include "folderutil.h"
#if !defined(NDEBUG)
#include "sievedebugdialog.h"
@ -1385,32 +1386,7 @@ void KMMainWidget::slotRemoveFolder()
KMessageBox::Notify | KMessageBox::Dangerous )
== KMessageBox::Continue )
{
if ( mFolder->hasAccounts() ) {
// this folder has an account, so we need to change that to the inbox
for ( AccountList::Iterator it (mFolder->acctList()->begin() ),
end( mFolder->acctList()->end() ); it != end; ++it ) {
(*it)->setFolder( kmkernel->inboxFolder() );
KMessageBox::information(this,
i18n("<qt>The folder you deleted was associated with the account "
"<b>%1</b> which delivered mail into it. The folder the account "
"delivers new mail into was reset to the main Inbox folder.</qt>", (*it)->name()));
}
}
if (mFolder->folderType() == KMFolderTypeImap)
kmkernel->imapFolderMgr()->remove(mFolder);
else if (mFolder->folderType() == KMFolderTypeCachedImap) {
// Deleted by user -> tell the account (see KMFolderCachedImap::listDirectory2)
KMFolderCachedImap* storage = static_cast<KMFolderCachedImap*>( mFolder->storage() );
KMAcctCachedImap* acct = storage->account();
if ( acct )
acct->addDeletedFolder( mFolder );
kmkernel->dimapFolderMgr()->remove(mFolder);
}
else if (mFolder->folderType() == KMFolderTypeSearch)
kmkernel->searchFolderMgr()->remove(mFolder);
else
kmkernel->folderMgr()->remove(mFolder);
KMail::FolderUtil::deleteFolder( mFolder, this );
}
}

Loading…
Cancel
Save