--Boundary-00=_k1Ms/wwWBmp8wQx Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, here's a patch I'd like you to review. First, it addresses the handling of IMAP account system folders (inbox, sent-mail, etc.): - Give them the appropriate icons - Since IMAP account sent-mail folders can have subfolders, use the sent-mail icon for these, too Second, as far as I can tell, the setting of the mUserWhoField of KMFolder didn't work correctly for local folders, because KMFolder::setUserWhoField() depends on KMKernel::the_inboxFolder and the like to be initialized. But this initialization happens in KMKernel::initFolders(), which gets called after the KMFolderMgr calls in KMKernel::init() have already caused KMFolder::setUserWhoField() to be called. I fixed this by calling KMFolder::setUserWhoField() again for these folders in KMKernel::initFolders(). (Maybe I should have rephrased that paragraph somehow...) Third, there is a possibly troublesome change. I've taken away the "folderIsXYFolder" methods from KMKernel, and given them to KMFolder. It may well be that this is too much of a design change and that I'm still lacking the big picture that led to the current design, but it seemed sensible to me. And finally, small changes regarding i18n and the addition of a RMB menu item "Synchronize" for disconnected IMAP accounts. I'd appreciate any feedback. I admit that I've been looking into the KMail code for not more than three days now, so if you think I should not bother you with patches without getting more into it first, I'd appreciate that information as well :) Thanks, Severin --Boundary-00=_k1Ms/wwWBmp8wQx Content-Type: text/x-diff; charset="iso-8859-15"; name="kmail.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="kmail.diff" Index: actionscheduler.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/actionscheduler.cpp,v retrieving revision 1.2 diff -u -3 -p -r1.2 actionscheduler.cpp --- actionscheduler.cpp 29 Oct 2003 02:19:14 -0000 1.2 +++ actionscheduler.cpp 11 Nov 2003 11:36:16 -0000 @@ -558,7 +558,7 @@ void ActionScheduler::moveMessage() mSrcFolder->addMsg( msg ); mIgnore = false; - if (msg && kmkernel->folderIsTrash( folder )) + if (msg && folder->isTrashFolder()) KMFilterAction::sendMDN( msg, KMime::MDN::Deleted ); KMCommand *cmd = new KMMoveCommand( folder, msg ); Index: kmcommands.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmcommands.cpp,v retrieving revision 1.86 diff -u -3 -p -r1.86 kmcommands.cpp --- kmcommands.cpp 11 Nov 2003 01:49:41 -0000 1.86 +++ kmcommands.cpp 11 Nov 2003 11:36:18 -0000 @@ -500,7 +500,7 @@ void KMEditMsgCommand::execute() { KMMessage *msg = retrievedMessage(); if (!msg || !msg->parent() || - !kmkernel->folderIsDraftOrOutbox( msg->parent() )) + !msg->parent()->isDraftOrOutboxFolder() ) return; msg->parent()->removeMsg( msg->parent()->find( msg ) ); Index: kmfiltermgr.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfiltermgr.cpp,v retrieving revision 1.58 diff -u -3 -p -r1.58 kmfiltermgr.cpp --- kmfiltermgr.cpp 6 Nov 2003 09:25:56 -0000 1.58 +++ kmfiltermgr.cpp 11 Nov 2003 11:36:18 -0000 @@ -134,7 +134,7 @@ bool KMFilterMgr::beginFiltering(KMMsgBa int KMFilterMgr::moveMessage(KMMessage *msg) const { if (MessageProperty::filterFolder(msg)->moveMsg( msg ) == 0) { - if ( kmkernel->folderIsTrash( MessageProperty::filterFolder( msg ))) + if ( MessageProperty::filterFolder( msg )->isTrashFolder() ) KMFilterAction::sendMDN( msg, KMime::MDN::Deleted ); } else { kdDebug(5006) << "KMfilterAction - couldn't move msg" << endl; Index: kmfoldercachedimap.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfoldercachedimap.cpp,v retrieving revision 1.33 diff -u -3 -p -r1.33 kmfoldercachedimap.cpp --- kmfoldercachedimap.cpp 3 Nov 2003 10:42:25 -0000 1.33 +++ kmfoldercachedimap.cpp 11 Nov 2003 11:36:19 -0000 @@ -114,7 +114,7 @@ KMFolderCachedImap::KMFolderCachedImap( if (mImapPath.isEmpty()) mImapPath = config->readEntry("ImapPath"); if (aName == "INBOX" && mImapPath == "/INBOX/") { - //mLabel = i18n("inbox"); + mLabel = i18n("inbox"); } mIsSystemFolder = false; mNoContent = config->readBoolEntry("NoContent", FALSE); @@ -353,6 +353,31 @@ int KMFolderCachedImap::rename( const QS CachedImapJob *job = new CachedImapJob( aName, CachedImapJob::tRenameFolder, this ); job->start(); return 0; +} + +//----------------------------------------------------------------------------- +bool KMFolderCachedImap::isInboxFolder() +{ + if ( QString( type() ) == "In" ) return true; + + if( mImapPath == "/INBOX/" ) { + setType("In"); + return true; + } + + return false; +} + +bool KMFolderCachedImap::isTrashFolder() +{ + if ( QString( type() ) == "Tr" ) return true; + + if (account() && account()->trash() == idString()) { + setType("Tr"); + return true; + } + + return false; } void KMFolderCachedImap::setLastUid( ulong uid ) Index: kmfolder.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfolder.cpp,v retrieving revision 1.293 diff -u -3 -p -r1.293 kmfolder.cpp --- kmfolder.cpp 11 Nov 2003 07:14:21 -0000 1.293 +++ kmfolder.cpp 11 Nov 2003 11:36:19 -0000 @@ -777,12 +777,102 @@ const char* KMFolder::type() const return KMFolderNode::type(); } +bool KMFolder::isInboxFolder() +{ + if ( QString( type() ) == "In" ) return true; + + if ( this == kmkernel->inboxFolder() ) { + setType("In"); + return true; + } + + return false; +} + +bool KMFolder::isOutboxFolder() +{ + if ( QString( type() ) == "Out" ) return true; + + if ( this == kmkernel->outboxFolder() ) { + setType( "Out" ); + return true; + } + + return false; +} + +bool KMFolder::isSentMailFolder( bool includeSubFolders ) +{ + if ( (includeSubFolders && QString( type() ) == "StS") || QString( type() ) == "St" ) + return true; + + if ( this == kmkernel->sentFolder() ) { + setType("St"); + return true; + } + + QString idString = this->idString(); + + if ( idString.isEmpty() ) return false; + + // search the identities if the folder matches the sent-folder + const IdentityManager * im = kmkernel->identityManager(); + for( IdentityManager::ConstIterator it = im->begin(); it != im->end(); ++it ) + if ( (*it).fcc() == idString ) { + setType("St"); + return true; + } + + return false; +} + +bool KMFolder::isDraftsFolder() +{ + if ( QString( type() ) == "Df" ) return true; + + if ( this == kmkernel->draftsFolder() ) { + setType("Df"); + return true; + } + + QString idString = this->idString(); + if ( idString.isEmpty() ) return false; + + // search the identities if the folder matches the draft folder + const IdentityManager * im = kmkernel->identityManager(); + for( IdentityManager::ConstIterator it = im->begin(); it != im->end(); ++it ) + if ( (*it).drafts() == idString ) { + setType("Df"); + return true; + } + + return false; + +} + +bool KMFolder::isDraftOrOutboxFolder() +{ + return ( isDraftsFolder() || isOutboxFolder() ); +} + +bool KMFolder::isTrashFolder() +{ + if ( QString( type() ) == "Tr" ) return true; + + if (this == kmkernel->trashFolder() ) { + setType("Tr"); + return true; + } + + return false; +} + //----------------------------------------------------------------------------- QString KMFolder::label() const { if (mIsSystemFolder && !mLabel.isEmpty()) return mLabel; - if (mIsSystemFolder) return i18n(name().latin1()); + if (mIsSystemFolder) return i18n(name().utf8()); return name(); } @@ -1027,17 +1117,7 @@ void KMFolder::setUserWhoField(const QSt if ( whoField.isEmpty() ) { // default setting - const KMIdentity & identity = - kmkernel->identityManager()->identityForUoidOrDefault( mIdentity ); - - if ( mIsSystemFolder && folderType() != KMFolderTypeImap ) - { - // local system folders - if ( this == kmkernel->inboxFolder() || this == kmkernel->trashFolder() ) mWhoField = "From"; - if ( this == kmkernel->outboxFolder() || this == kmkernel->sentFolder() || this == kmkernel->draftsFolder() ) mWhoField = "To"; - - } else if ( identity.drafts() == idString() || identity.fcc() == idString() ) { - // drafts or sent of the identity + if ( isOutboxFolder() || isDraftsFolder() || isSentMailFolder() ) { mWhoField = "To"; } else { mWhoField = "From"; Index: kmfolderimap.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfolderimap.cpp,v retrieving revision 1.143 diff -u -3 -p -r1.143 kmfolderimap.cpp --- kmfolderimap.cpp 8 Nov 2003 14:19:35 -0000 1.143 +++ kmfolderimap.cpp 11 Nov 2003 11:36:20 -0000 @@ -109,6 +109,31 @@ KMMessage* KMFolderImap::getMsg(int idx) } //----------------------------------------------------------------------------- +bool KMFolderImap::isInboxFolder() +{ + if ( QString( type() ) == "In" ) return true; + + if( mImapPath == "/INBOX/" ) { + setType("In"); + return true; + } + + return false; +} + +bool KMFolderImap::isTrashFolder() +{ + if ( QString( type() ) == "Tr" ) return true; + + if (account() && account()->trash() == idString()) { + setType("Tr"); + return true; + } + + return false; +} + +//----------------------------------------------------------------------------- void KMFolderImap::setAccount(KMAcctImap *aAccount) { mAccount = aAccount; Index: kmfoldermaildir.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfoldermaildir.cpp,v retrieving revision 1.70 diff -u -3 -p -r1.70 kmfoldermaildir.cpp --- kmfoldermaildir.cpp 19 Oct 2003 17:07:54 -0000 1.70 +++ kmfoldermaildir.cpp 11 Nov 2003 11:36:20 -0000 @@ -340,7 +340,7 @@ if( fileD0.open( IO_WriteOnly ) ) { msgParent = aMsg->parent(); if (msgParent) { - if (msgParent==this && !kmkernel->folderIsDraftOrOutbox(this)) + if (msgParent==this && !isDraftOrOutboxFolder()) return 0; idx = msgParent->find(aMsg); Index: kmfoldermbox.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfoldermbox.cpp,v retrieving revision 1.88 diff -u -3 -p -r1.88 kmfoldermbox.cpp --- kmfoldermbox.cpp 2 Nov 2003 22:54:15 -0000 1.88 +++ kmfoldermbox.cpp 11 Nov 2003 11:36:21 -0000 @@ -898,7 +898,7 @@ int KMFolderMbox::addMsg(KMMessage* aMsg { if (msgParent==this) { - if (kmkernel->folderIsDraftOrOutbox(this)) + if (isDraftOrOutboxFolder()) //special case for Edit message. { kdDebug(5006) << "Editing message in outbox or drafts" << endl; Index: kmfoldertree.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmfoldertree.cpp,v retrieving revision 1.269 diff -u -3 -p -r1.269 kmfoldertree.cpp --- kmfoldertree.cpp 30 Oct 2003 17:17:58 -0000 1.269 +++ kmfoldertree.cpp 11 Nov 2003 11:36:21 -0000 @@ -62,6 +62,14 @@ KMFolderTreeItem::KMFolderTreeItem( KFol mFolder( folder ) { init(); + + if( parent -> type() == SentMail ) { + setType(SentMail); + folder -> setType( "StS" ); + if ( folder->userWhoField().isEmpty() ) + folder->setUserWhoField( QString::null ); + } + setPixmap( 0, normalIcon() ); } @@ -98,11 +106,12 @@ QPixmap KMFolderTreeItem::normalIcon(int default: icon = "folder";break; } + } else if ( type() == SentMail ) { + icon = "folder_sent_mail"; } else if ( mFolder->isSystemFolder() ) { switch ( type() ) { case Inbox: icon = "folder_inbox"; break; case Outbox: icon = "folder_outbox"; break; - case SentMail: icon = "folder_sent_mail"; break; case Trash: icon = "trashcan_empty"; break; default: icon = kmkernel->iCalIface().folderPixmap( type() ); break; case Drafts: icon = "edit";break; @@ -159,20 +168,25 @@ void KMFolderTreeItem::init() if ( depth() == 0 ) setType(Root); - else if (mFolder->isSystemFolder()) { - if (mFolder == kmkernel->inboxFolder() - || mFolder->folderType() == KMFolderTypeImap) - setType(Inbox); - else if (mFolder == kmkernel->outboxFolder()) - setType(Outbox); - else if (mFolder == kmkernel->sentFolder()) - setType(SentMail); - else if (mFolder == kmkernel->draftsFolder()) - setType(Drafts); - else if (mFolder == kmkernel->trashFolder()) - setType(Trash); - else if(kmkernel->iCalIface().isResourceImapFolder(mFolder)) - setType(kmkernel->iCalIface().folderType(mFolder)); + else if ( mFolder->isInboxFolder() ) { + mFolder -> setSystemFolder( TRUE ); + setType(Inbox); + } else if ( mFolder->isOutboxFolder() ) { + mFolder -> setSystemFolder( TRUE ); + setType(Outbox); + } else if ( mFolder->isSentMailFolder( false ) ) { + mFolder -> setSystemFolder( TRUE ); + setType(SentMail); + } else if ( mFolder->isSentMailFolder() ) { + setType(SentMail); + } else if ( mFolder->isTrashFolder() ) { + mFolder -> setSystemFolder( TRUE ); + setType(Trash); + } else if ( mFolder->isDraftsFolder() ) { + mFolder -> setSystemFolder( TRUE ); + setType(Drafts); + } else if(kmkernel->iCalIface().isResourceImapFolder(mFolder)) { + setType(kmkernel->iCalIface().folderType(mFolder)); } else setRenameEnabled(0, false); } @@ -975,6 +989,9 @@ void KMFolderTree::rightButtonPressed(QL folderMenu->insertItem(SmallIcon("mail_get"), i18n("Check &Mail"), this, SLOT(slotCheckMail())); + } else if (fti->folder()->folderType() == KMFolderTypeCachedImap) { + folderMenu->insertItem(SmallIcon("mail_get"), i18n("&Synchronize"), + fti->folder(), SLOT(processNewMail())); } } else { if ((fti->folder() == kmkernel->outboxFolder()) && (fti->folder()->count()) ) @@ -1010,7 +1027,7 @@ void KMFolderTree::rightButtonPressed(QL folderMenu->insertSeparator(); itemId = folderMenu->insertItem(SmallIcon("edittrash"), - (kmkernel->folderIsTrash(fti->folder())) ? i18n("&Empty") : + (fti->folder()->isTrashFolder()) ? i18n("&Empty") : i18n("&Move All Messages to Trash"), mMainWidget, SLOT(slotEmptyFolder())); folderMenu->setItemEnabled( itemId, fti->folder()->count() > 0 ); Index: kmheaders.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmheaders.cpp,v retrieving revision 1.586 diff -u -3 -p -r1.586 kmheaders.cpp --- kmheaders.cpp 10 Nov 2003 00:47:03 -0000 1.586 +++ kmheaders.cpp 11 Nov 2003 11:36:23 -0000 @@ -941,7 +941,7 @@ void KMHeaders::setFolder (KMFolder *aFo mSortInfo.removed = 0; mFolder = aFolder; mSortInfo.dirty = true; - mOwner->editAction()->setEnabled(mFolder ? (kmkernel->folderIsDraftOrOutbox(mFolder)): false ); + mOwner->editAction()->setEnabled(mFolder ? mFolder->isDraftOrOutboxFolder() : false ); mOwner->replyListAction()->setEnabled(mFolder ? mFolder->isMailingList() : false); if (mFolder) @@ -2207,7 +2207,7 @@ void KMHeaders::selectMessage(QListViewI emit activated(mFolder->getMsg(idx)); } -// if (kmkernel->folderIsDraftOrOutbox(mFolder)) +// if (mFolder->isDraftOrOutboxFolder()) // setOpen(lvi, !lvi->isOpen()); } @@ -2436,7 +2436,7 @@ void KMHeaders::slotRMB() QPopupMenu *msgCopyMenu = new QPopupMenu(menu); KMCopyCommand::folderToPopupMenu( false, this, &mMenuToFolder, msgCopyMenu ); - bool out_folder = kmkernel->folderIsDraftOrOutbox(mFolder); + bool out_folder = mFolder->isDraftOrOutboxFolder(); if ( out_folder ) mOwner->editAction()->plug(menu); else { Index: kmkernel.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmkernel.cpp,v retrieving revision 1.220 diff -u -3 -p -r1.220 kmkernel.cpp --- kmkernel.cpp 10 Nov 2003 19:25:50 -0000 1.220 +++ kmkernel.cpp 11 Nov 2003 11:36:24 -0000 @@ -672,6 +672,8 @@ void KMKernel::initFolders(KConfig* cfg) } the_inboxFolder->setSystemFolder(TRUE); + if ( the_inboxFolder->userWhoField().isEmpty() ) + the_inboxFolder->setUserWhoField( QString::null ); // inboxFolder->open(); the_outboxFolder = the_folderMgr->findOrCreate(cfg->readEntry("outboxFolder", "outbox")); @@ -679,32 +681,36 @@ void KMKernel::initFolders(KConfig* cfg) emergencyExit( i18n("You do not have read/write permission to your outbox folder.") ); } - the_outboxFolder->setType("Out"); the_outboxFolder->setSystemFolder(TRUE); + if ( the_outboxFolder->userWhoField().isEmpty() ) + the_outboxFolder->setUserWhoField( QString::null ); the_outboxFolder->open(); the_sentFolder = the_folderMgr->findOrCreate(cfg->readEntry("sentFolder", "sent-mail")); if (the_sentFolder->canAccess() != 0) { emergencyExit( i18n("You do not have read/write permission to your sent-mail folder.") ); } - the_sentFolder->setType("St"); the_sentFolder->setSystemFolder(TRUE); + if ( the_sentFolder->userWhoField().isEmpty() ) + the_sentFolder->setUserWhoField( QString::null ); // the_sentFolder->open(); the_trashFolder = the_folderMgr->findOrCreate(cfg->readEntry("trashFolder", "trash")); if (the_trashFolder->canAccess() != 0) { emergencyExit( i18n("You do not have read/write permission to your trash folder.") ); } - the_trashFolder->setType("Tr"); the_trashFolder->setSystemFolder(TRUE); + if ( the_trashFolder->userWhoField().isEmpty() ) + the_trashFolder->setUserWhoField( QString::null ); // the_trashFolder->open(); the_draftsFolder = the_folderMgr->findOrCreate(cfg->readEntry("draftsFolder", "drafts")); if (the_draftsFolder->canAccess() != 0) { emergencyExit( i18n("You do not have read/write permission to your drafts folder.") ); } - the_draftsFolder->setType("Df"); the_draftsFolder->setSystemFolder(TRUE); + if ( the_draftsFolder->userWhoField().isEmpty() ) + the_draftsFolder->setUserWhoField( QString::null ); the_draftsFolder->open(); } @@ -1406,52 +1412,6 @@ KMKernel::setCanExpire(bool expire) { bool KMKernel::canExpire() { return allowedToExpire; -} - -/** - * Returns true if the folder is either the outbox or one of the drafts-folders - */ -bool KMKernel::folderIsDraftOrOutbox(const KMFolder * folder) -{ - assert( folder ); - if ( folder == the_outboxFolder || folder == the_draftsFolder ) - return true; - - QString idString = folder->idString(); - if ( idString.isEmpty() ) return false; - - // search the identities if the folder matches the drafts-folder - const IdentityManager * im = identityManager(); - for( IdentityManager::ConstIterator it = im->begin(); it != im->end(); ++it ) - if ( (*it).drafts() == idString ) return true; - return false; -} - -bool KMKernel::folderIsTrash(KMFolder * folder) -{ - assert(folder); - if (folder == the_trashFolder) return true; - if (folder->folderType() != KMFolderTypeImap) return false; - KMFolderImap *fi = static_cast(folder); - if (fi->account() && fi->account()->trash() == fi->idString()) - return true; - return false; -} - -bool KMKernel::folderIsSentMailFolder( const KMFolder * folder ) -{ - assert( folder ); - if ( folder == the_sentFolder ) - return true; - - QString idString = folder->idString(); - if ( idString.isEmpty() ) return false; - - // search the identities if the folder matches the sent-folder - const IdentityManager * im = identityManager(); - for( IdentityManager::ConstIterator it = im->begin(); it != im->end(); ++it ) - if ( (*it).fcc() == idString ) return true; - return false; } IdentityManager * KMKernel::identityManager() { Index: kmmainwidget.cpp =================================================================== RCS file: /home/kde/kdepim/kmail/kmmainwidget.cpp,v retrieving revision 1.113 diff -u -3 -p -r1.113 kmmainwidget.cpp --- kmmainwidget.cpp 8 Nov 2003 16:03:01 -0000 1.113 +++ kmmainwidget.cpp 11 Nov 2003 11:36:25 -0000 @@ -851,7 +851,7 @@ void KMMainWidget::slotEmptyFolder() KMMessage* msg; if (!mFolder) return; - bool isTrash = kmkernel->folderIsTrash(mFolder); + bool isTrash = mFolder->isTrashFolder(); if (mConfirmEmpty) { @@ -1100,7 +1100,7 @@ void KMMainWidget::slotToggleSubjectThre //----------------------------------------------------------------------------- void KMMainWidget::slotMessageQueuedOrDrafted() { - if (!kmkernel->folderIsDraftOrOutbox(mFolder)) + if (!mFolder->isDraftOrOutboxFolder()) return; if (mMsgView) mMsgView->update(true); @@ -1859,7 +1859,7 @@ void KMMainWidget::slotMsgActivated(KMMe return; } - if (kmkernel->folderIsDraftOrOutbox(mFolder)) + if (mFolder->isDraftOrOutboxFolder()) { slotEditMsg(); return; @@ -1921,7 +1921,7 @@ void KMMainWidget::slotMsgPopup(KMMessag return; } - bool out_folder = kmkernel->folderIsDraftOrOutbox(mFolder); + bool out_folder = mFolder->isDraftOrOutboxFolder(); if ( out_folder ) { mEditAction->plug(menu); } @@ -2818,7 +2818,7 @@ void KMMainWidget::updateMessageActions( bool single_actions = count == 1; mEditAction->setEnabled( single_actions && - kmkernel->folderIsDraftOrOutbox(mFolder)); + mFolder->isDraftOrOutboxFolder()); filterMenu()->setEnabled( single_actions ); bounceAction()->setEnabled( single_actions ); @@ -2834,8 +2834,8 @@ void KMMainWidget::updateMessageActions( mSendAgainAction->setEnabled( single_actions && ( mHeaders->currentMsg() && mHeaders->currentMsg()->isSent() ) - || ( mFolder && kmkernel->folderIsDraftOrOutbox( mFolder ) ) - || ( mFolder && kmkernel->folderIsSentMailFolder( mFolder ) ) + || ( mFolder && mFolder->isDraftOrOutboxFolder() ) + || ( mFolder && mFolder->isSentMailFolder() ) ); mSaveAsAction->setEnabled( mass_actions ); bool mails = mFolder && mFolder->count(); @@ -2895,7 +2895,7 @@ void KMMainWidget::updateFolderMenu() mEmptyFolderAction->setEnabled( mFolder ? ( !mFolder->noContent() && ( mFolder->count() > 0 ) ) : false ); - mEmptyFolderAction->setText( (mFolder && kmkernel->folderIsTrash(mFolder)) + mEmptyFolderAction->setText( (mFolder && mFolder->isTrashFolder()) ? i18n("E&mpty Trash") : i18n("&Move All Messages to Trash") ); mRemoveFolderAction->setEnabled( (mFolder && !mFolder->isSystemFolder()) ); mExpireFolderAction->setEnabled( mFolder && mFolder->isAutoExpire() ); Index: kmfoldercachedimap.h =================================================================== RCS file: /home/kde/kdepim/kmail/kmfoldercachedimap.h,v retrieving revision 1.13 diff -u -3 -p -r1.13 kmfoldercachedimap.h --- kmfoldercachedimap.h 3 Nov 2003 10:42:25 -0000 1.13 +++ kmfoldercachedimap.h 11 Nov 2003 11:36:26 -0000 @@ -90,6 +90,9 @@ public: void setImapPath(const QString &path) { mImapPath = path; } QString imapPath() { return mImapPath; } + virtual bool isInboxFolder(); + virtual bool isTrashFolder(); + /** The highest UID in the folder */ void setLastUid( ulong uid ); ulong lastUid(); Index: kmfolder.h =================================================================== RCS file: /home/kde/kdepim/kmail/kmfolder.h,v retrieving revision 1.132 diff -u -3 -p -r1.132 kmfolder.h --- kmfolder.h 9 Nov 2003 22:53:53 -0000 1.132 +++ kmfolder.h 11 Nov 2003 11:36:26 -0000 @@ -286,6 +286,13 @@ public: /** Type of the folder. Inherited. */ virtual const char* type() const; + virtual bool isInboxFolder(); + virtual bool isOutboxFolder(); + virtual bool isSentMailFolder( bool includeSubFolders = TRUE ); + virtual bool isDraftsFolder(); + virtual bool isDraftOrOutboxFolder(); + virtual bool isTrashFolder(); + virtual QCString protocol() const = 0; /** Returns TRUE if accounts are associated with this folder. */ Index: kmfolderimap.h =================================================================== RCS file: /home/kde/kdepim/kmail/kmfolderimap.h,v retrieving revision 1.52 diff -u -3 -p -r1.52 kmfolderimap.h --- kmfolderimap.h 12 Oct 2003 14:11:06 -0000 1.52 +++ kmfolderimap.h 11 Nov 2003 11:36:26 -0000 @@ -92,6 +92,9 @@ public: void setImapPath(const QString &path) { mImapPath = path; } QString imapPath() { return mImapPath; } + virtual bool isInboxFolder(); + virtual bool isTrashFolder(); + /** The highest UID in the folder */ ulong lastUid(); Index: kmkernel.h =================================================================== RCS file: /home/kde/kdepim/kmail/kmkernel.h,v retrieving revision 1.84 diff -u -3 -p -r1.84 kmkernel.h --- kmkernel.h 6 Nov 2003 09:25:56 -0000 1.84 +++ kmkernel.h 11 Nov 2003 11:36:26 -0000 @@ -137,12 +137,6 @@ public: const KURL &messageFile, const KURL::List &attach); void byteArrayToRemoteFile(const QByteArray&, const KURL&, bool overwrite = FALSE); - bool folderIsDraftOrOutbox(const KMFolder *); - bool folderIsTrash(KMFolder *); - /** - * Returns true if the folder is one of the sent-mail folders. - */ - bool folderIsSentMailFolder( const KMFolder * ); KInstance *xmlGuiInstance() { return mXmlGuiInstance; } void setXmlGuiInstance( KInstance *instance ) { mXmlGuiInstance = instance; } --Boundary-00=_k1Ms/wwWBmp8wQx Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ KMail Developers mailing list kmail@kde.org https://mail.kde.org/mailman/listinfo/kmail --Boundary-00=_k1Ms/wwWBmp8wQx--