Don't crash when trying to create the imap resource folders on an online

imap account. Set the account of the newly created folders.

This fixes the crash, but the folders are still not created properly,
especially on startup, as the account is potentially not connected yet.
Will look into that next.

CCMAIL: 85298-done@bugs.kde.org

svn path=/trunk/kdepim/; revision=330304
wilder-work
Till Adam 22 years ago
parent 9b96171159
commit bd2bfe6e2c
  1. 18
      kmailicalifaceimpl.cpp
  2. 3
      kmailicalifaceimpl.h

@ -687,6 +687,7 @@ void KMailICalIfaceImpl::readConfig()
" and the IMAP resource will be disabled").arg(folderParent!=0?folderParent->name():folderParentDir->name()),
i18n("IMAP Resource Folders") ) == KMessageBox::No ) {
mUseResourceIMAP = false;
mFolderParentDir = 0;
mFolderParent = 0;
reloadFolderTree();
return;
@ -694,7 +695,7 @@ void KMailICalIfaceImpl::readConfig()
}
// Check if something changed
if( mUseResourceIMAP && !makeSubFolders && mFolderParent == folderParentDir
if( mUseResourceIMAP && !makeSubFolders && mFolderParentDir == folderParentDir
&& mFolderType == folderType ) {
// Nothing changed
if ( hideFolders != mHideFolders ) {
@ -708,7 +709,8 @@ void KMailICalIfaceImpl::readConfig()
// Make the new settings work
mUseResourceIMAP = true;
mFolderLanguage = folderLanguage;
mFolderParent = folderParentDir;
mFolderParentDir = folderParentDir;
mFolderParent = folderParent;
mFolderType = folderType;
mHideFolders = hideFolders;
@ -757,15 +759,17 @@ KMFolder* KMailICalIfaceImpl::initFolder( KFolderTreeItem::Type itemType,
// Find the folder
KMFolder* folder = 0;
KMFolderNode* node = mFolderParent->hasNamedFolder( folderName( itemType ) );
KMFolderNode* node = mFolderParentDir->hasNamedFolder( folderName( itemType ) );
if( node && !node->isDir() ) folder = static_cast<KMFolder*>(node);
if( !folder ) {
// The folder isn't there yet - create it
folder =
mFolderParent->createFolder( folderName( itemType ), false, type );
if( mFolderType == KMFolderTypeImap )
static_cast<KMFolderImap*>( folder->storage() )->
createFolder( folderName( itemType ) );
mFolderParentDir->createFolder( folderName( itemType ), false, type );
if( mFolderType == KMFolderTypeImap ) {
KMFolderImap* parentFolder = static_cast<KMFolderImap*>( mFolderParent->storage() );
parentFolder->createFolder( folderName( itemType ) );
static_cast<KMFolderImap*>( folder->storage() )->setAccount( parentFolder->account() );
}
}
if( folder->canAccess() != 0 ) {

@ -161,7 +161,8 @@ private:
unsigned int mFolderLanguage;
KMFolderDir* mFolderParent;
KMFolderDir* mFolderParentDir;
KMFolder* mFolderParent;
KMFolderType mFolderType;
// groupware folder icons:

Loading…
Cancel
Save