- fix folder creation

- create one lost+found sub-folder per incident

svn path=/branches/kdepim/enterprise/kdepim/; revision=650440
wilder-work
Volker Krause 19 years ago
parent 792c675bed
commit 217c1e3d2b
  1. 42
      kmfoldercachedimap.cpp

@ -1257,23 +1257,51 @@ void KMFolderCachedImap::uploadNewMessages()
break;
}
KMFolderDir *inboxDir = inboxFolder->child();
assert( inboxDir );
if ( !inboxDir )
if ( !inboxDir && !inboxFolder->storage() )
break;
assert( inboxFolder->storage()->folderType() == KMFolderTypeCachedImap );
// create lost+found folder if needed
KMFolderNode *node;
KMFolder *lfFolder = 0;
if ( !(node = inboxDir->hasNamedFolder( i18n("lost+found") )) ) {
kdDebug(5006) << k_funcinfo << "creating lost+found folder" << endl;
KMFolder *folder = inboxDir->createFolder( i18n("lost+found"), false, folderType() );
folder->storage()->setContentsType( contentsType() );
KMFolder* folder = kmkernel->dimapFolderMgr()->createFolder(
i18n("lost+found"), false, KMFolderTypeCachedImap, inboxDir );
if ( !folder || !folder->storage() )
break;
static_cast<KMFolderCachedImap*>( folder->storage() )->initializeFrom(
static_cast<KMFolderCachedImap*>( inboxFolder->storage() ) );
folder->storage()->setContentsType( KMail::ContentsTypeMail );
folder->storage()->writeConfig();
dest = folder;
lfFolder = folder;
} else {
dest = dynamic_cast<KMFolder*>( node );
kdDebug(5006) << k_funcinfo << "found lost+found folder" << endl;
lfFolder = dynamic_cast<KMFolder*>( node );
}
if ( !dest )
if ( !lfFolder || !lfFolder->createChildFolder() || !lfFolder->storage() )
break;
// create subfolder for this incident
QDate today = QDate::currentDate();
QString baseName = folder()->label() + "-" + QString::number( today.year() )
+ (today.month() < 10 ? "0" : "" ) + QString::number( today.month() )
+ (today.day() < 10 ? "0" : "" ) + QString::number( today.day() );
QString name = baseName;
int suffix = 0;
while ( (node = lfFolder->child()->hasNamedFolder( name )) ) {
++suffix;
name = baseName + '-' + QString::number( suffix );
}
kdDebug(5006) << k_funcinfo << "creating lost+found folder " << name << endl;
dest = kmkernel->dimapFolderMgr()->createFolder( name, false, KMFolderTypeCachedImap, lfFolder->child() );
if ( !dest || !dest->storage() )
break;
static_cast<KMFolderCachedImap*>( dest->storage() )->initializeFrom(
static_cast<KMFolderCachedImap*>( lfFolder->storage() ) );
dest->storage()->setContentsType( contentsType() );
dest->storage()->writeConfig();
manualMove = false;
break;
}

Loading…
Cancel
Save