------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. http://bugs.kde.org/show_bug.cgi?id=111624 burghardt kde org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Additional Comments From burghardt kde org 2005-08-30 22:24 ------- SVN commit 455223 by burghard: Use the correct delimiter for disconnected imap. Refactor this stuff a bit to make the creation of imapPaths easier. BUGS: 111624 M +44 -0 imapaccountbase.cpp M +14 -1 imapaccountbase.h M +1 -14 kmfolderimap.cpp M +3 -3 newfolderdialog.cpp --- branches/KDE/3.5/kdepim/kmail/imapaccountbase.cpp #455222:455223 @ -1263,6 +1263,50 @ return map; } + //------------------------------------------------------------------------------ + QString ImapAccountBase::createImapPath( const QString& parent, + const QString& folderName ) + { + QString newName = parent; + // strip / at the end + if ( newName.endsWith("/") ) { + newName = newName.left( newName.length() - 1 ); + } + // add correct delimiter + QString delim = delimiterForNamespace( parent ); + // should not happen... + if ( delim.isEmpty() ) { + delim = "/"; + } + if ( !newName.endsWith( delim ) && !folderName.startsWith( delim ) ) { + newName = newName + delim; + } + newName = newName + folderName; + // add / at the end + if ( !newName.endsWith("/") ) { + newName = newName + "/"; + } + + return newName; + } + + //------------------------------------------------------------------------------ + QString ImapAccountBase::createImapPath( FolderStorage* parent, + const QString& folderName ) + { + QString path; + if ( parent->folderType() == KMFolderTypeImap ) { + path = static_cast( parent )->imapPath(); + } else if ( parent->folderType() == KMFolderTypeCachedImap ) { + path = static_cast( parent )->imapPath(); + } else { + // error + return path; + } + + return createImapPath( path, folderName ); + } + } // namespace KMail #include "imapaccountbase.moc" --- branches/KDE/3.5/kdepim/kmail/imapaccountbase.h #455222:455223 @ -352,8 +352,21 @ * Returns true if the account has the given capability */ bool hasCapability( const QString& capa ) { - return mCapabilities.contains( capa ); } + return mCapabilities.contains( capa ); } + /** + * Create an IMAP path for a parent folder and a foldername + * Parent and folder are separated with the delimiter of the account + * The path starts and ends with '/' + */ + QString createImapPath( FolderStorage* parent, const QString& folderName ); + + /** + * Create an IMAP path for a parent imapPath and a folderName + */ + QString createImapPath( const QString& parent, const QString& folderName ); + + public slots: /** * Call this to get the namespaces --- branches/KDE/3.5/kdepim/kmail/kmfolderimap.cpp #455222:455223 @ -1622,20 +1622,7 @ } KURL url = mAccount->getUrl(); QString parent = ( parentPath.isEmpty() ? imapPath() : parentPath ); - if ( parent.endsWith("/") ) { - // strip / (which kmail uses this internally) - parent = parent.left( parent.length()-1 ); - } - QString delim = mAccount->delimiterForFolder( this ); - if ( delim.isEmpty() ) { - // better be safe - delim = "/"; - } - if ( !parent.endsWith(delim) ) { - // add the correct delimiter - parent += delim; - } - QString path = parent + name; + QString path = mAccount->createImapPath( parent, name ); if ( askUser ) { path += "/;INFO=ASKUSER"; } --- branches/KDE/3.5/kdepim/kmail/newfolderdialog.cpp #455222:455223 @ -250,7 +250,7 @ if ( mNamespacesComboBox ) { // create folder with namespace parent = anAccount->addPathToNamespace( mNamespacesComboBox->currentText() ); - imapPath = anAccount->addPathToNamespace( parent ) + fldName; + imapPath = anAccount->createImapPath( parent, fldName ); } KMFolderImap* newStorage = static_cast( newFolder->storage() ); selectedStorage->createFolder(fldName, parent); // create it on the server @ -267,8 +267,8 @ newStorage->initializeFrom( selectedStorage ); if ( mNamespacesComboBox ) { // create folder with namespace - QString path = selectedStorage->account()->addPathToNamespace( - mNamespacesComboBox->currentText() ) + fldName; + QString path = selectedStorage->account()->createImapPath( + mNamespacesComboBox->currentText(), fldName ); newStorage->setImapPathForCreation( path ); } success = true; _______________________________________________ KMail developers mailing list KMail-devel@kde.org https://mail.kde.org/mailman/listinfo/kmail-devel