[prev in list] [next in list] [prev in thread] [next in thread]
List: kmail-devel
Subject: Patch for review
From: Severin Greimel <greimel-kde () fs-pw ! uni-muenchen ! de>
Date: 2003-11-11 11:52:04
[Download RAW message or body]
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
["kmail.diff" (text/x-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<KMFolderImap*>(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; }
_______________________________________________
KMail Developers mailing list
kmail@kde.org
https://mail.kde.org/mailman/listinfo/kmail
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic