[prev in list] [next in list] [prev in thread] [next in thread]
List: kmail-devel
Subject: Add a KMFolder::needsAsyncRetrieval() function
From: Mario Teijeiro Otero <emeteo () escomposlinux ! org>
Date: 2005-04-23 15:44:17
Message-ID: 200504231744.23408.emeteo () escomposlinux ! org
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
[Attachment #4 (multipart/mixed)]
Over all the code there are some checks like:
thisMsg->parent()->folderType() == KMFolderTypeImap
And really means: thisMsg->parent()->needsAsyncRetrieval().
I added this function to KMFolder that forwards to FolderStorage.This function
returns false except in KMFolderImap that returns true.
I replace all folderType()==KMFolderTypeImap that I can find and the meaning
was needsAsyncRetrieval(). It's possible that I forgot someone or changed
someone wrong ( I didn't control all kmail kernel stuffs, yet ;-). So,
please, review it.
Regards
["needsasyncretrieval.patch" (text/x-diff)]
? .kmmainwin.rc.swp
? .kmreadermainwin.rc.swp
? cscope.out
Index: folderstorage.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/folderstorage.cpp,v
retrieving revision 1.50
diff -u -p -r1.50 folderstorage.cpp
--- folderstorage.cpp 16 Apr 2005 09:33:17 -0000 1.50
+++ folderstorage.cpp 23 Apr 2005 15:33:59 -0000
@@ -295,7 +295,7 @@ bool FolderStorage::canAddMsgNow(KMMessa
// have a parent we want to be able to add it even if it is in transfer.
if (aMsg->transferInProgress() && msgParent)
return false;
- if (!aMsg->isComplete() && msgParent && msgParent->folderType() == KMFolderTypeImap)
+ if (!aMsg->isComplete() && msgParent && msgParent->needsAsyncRetrieval())
{
FolderJob *job = msgParent->createJob(aMsg);
connect(job, SIGNAL(messageRetrieved(KMMessage*)),
Index: folderstorage.h
===================================================================
RCS file: /home/kde/kdepim/kmail/folderstorage.h,v
retrieving revision 1.44
diff -u -p -r1.44 folderstorage.h
--- folderstorage.h 16 Apr 2005 09:33:17 -0000 1.44
+++ folderstorage.h 23 Apr 2005 15:34:00 -0000
@@ -118,6 +118,10 @@ public:
/** Specify, that the folder can't have children */
virtual void setNoChildren( bool aNoChildren );
+ /** Returns if the folder retrieval messages asyncly */
+ virtual bool needsAsyncRetrieval() const { return false;};
+
+
enum ChildrenState {
HasChildren,
HasNoChildren,
Index: kmcommands.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/kmcommands.cpp,v
retrieving revision 1.206
diff -u -p -r1.206 kmcommands.cpp
--- kmcommands.cpp 17 Apr 2005 19:36:18 -0000 1.206
+++ kmcommands.cpp 23 Apr 2005 15:34:02 -0000
@@ -276,7 +276,7 @@ void KMCommand::transferSelectedMsgs()
}
if (!thisMsg) continue;
if ( thisMsg->transferInProgress() &&
- thisMsg->parent()->folderType() == KMFolderTypeImap )
+ thisMsg->parent()->needsAsyncRetrieval() )
{
thisMsg->setTransferInProgress( false, true );
thisMsg->parent()->ignoreJobsForMessage( thisMsg );
@@ -1844,11 +1844,11 @@ KMCommand::Result KMMoveCommand::execute
msg = srcFolder->getMsg(idx);
if ( msg->transferInProgress() &&
- srcFolder->folderType() == KMFolderTypeImap )
+ srcFolder->needsAsyncRetrieval() )
{
// cancel the download
msg->setTransferInProgress( false, true );
- static_cast<KMFolderImap*>(srcFolder->storage())->ignoreJobsForMessage( msg );
+ srcFolder->ignoreJobsForMessage( msg );
}
if (mDestFolder) {
@@ -1887,7 +1887,7 @@ KMCommand::Result KMMoveCommand::execute
} else {
// really delete messages that are already in the trash folder or if
// we are really, really deleting, not just moving to trash
- if (srcFolder->folderType() == KMFolderTypeImap) {
+ if (srcFolder->needsAsyncRetrieval()) {
if (!folderDeleteList[srcFolder])
folderDeleteList[srcFolder] = new QPtrList<KMMessage>;
folderDeleteList[srcFolder]->append( msg );
@@ -1954,7 +1954,7 @@ void KMMoveCommand::slotMsgAddedToDestFo
mLostBoys.remove(serNum);
if ( mLostBoys.isEmpty() ) {
// we are done. All messages transferred to the host succesfully
- if (mDestFolder && mDestFolder->folderType() != KMFolderTypeImap) {
+ if ( mDestFolder && !mDestFolder->needsAsyncRetrieval() ) {
mDestFolder->sync();
completeMove( OK ); // imap ones will be completed via folderComplete
}
Index: kmfolder.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/kmfolder.cpp,v
retrieving revision 1.348
diff -u -p -r1.348 kmfolder.cpp
--- kmfolder.cpp 4 Mar 2005 15:30:40 -0000 1.348
+++ kmfolder.cpp 23 Apr 2005 15:34:02 -0000
@@ -265,6 +265,12 @@ void KMFolder::setNoChildren( bool aNoCh
mStorage->setNoChildren( aNoChildren );
}
+
+bool KMFolder::needsAsyncRetrieval()
+{
+ mStorage->needsAsyncRetrieval();
+}
+
KMMessage* KMFolder::getMsg( int idx )
{
return mStorage->getMsg( idx );
Index: kmfolder.h
===================================================================
RCS file: /home/kde/kdepim/kmail/kmfolder.h,v
retrieving revision 1.171
diff -u -p -r1.171 kmfolder.h
--- kmfolder.h 4 Mar 2005 15:30:40 -0000 1.171
+++ kmfolder.h 23 Apr 2005 15:34:03 -0000
@@ -127,6 +127,9 @@ public:
/** Specify, that the folder can't have children */
void setNoChildren(bool aNoChildren);
+ /** Returns if the folder retrieval the messages asyncly */
+ bool needsAsyncRetrieval();
+
/** Read message at given index. Indexing starts at zero */
KMMessage* getMsg(int idx);
Index: kmfolderimap.h
===================================================================
RCS file: /home/kde/kdepim/kmail/kmfolderimap.h,v
retrieving revision 1.92
diff -u -p -r1.92 kmfolderimap.h
--- kmfolderimap.h 23 Mar 2005 19:02:23 -0000 1.92
+++ kmfolderimap.h 23 Apr 2005 15:34:04 -0000
@@ -132,6 +132,9 @@ public:
/** Read the config file */
virtual void readConfig();
+ /** Returns if the folder retrieval messages asyncly */
+ virtual bool needsAsyncRetrieval() const { return true;};
+
/**
* List a directory and add the contents to kmfoldermgr
* It uses a ListJob to get the folders
Index: kmfoldermbox.cpp
===================================================================
RCS file: /home/kde/kdepim/kmail/kmfoldermbox.cpp,v
retrieving revision 1.114
diff -u -p -r1.114 kmfoldermbox.cpp
--- kmfoldermbox.cpp 31 Mar 2005 20:37:52 -0000 1.114
+++ kmfoldermbox.cpp 23 Apr 2005 15:34:05 -0000
@@ -973,7 +973,7 @@ int KMFolderMbox::addMsg( KMMessage* aMs
msgParent->getMsg( idx );
}
- if (folderType() != KMFolderTypeImap)
+ if ( !needsAsyncRetrieval() )
{
/*
QFile fileD0( "testdat_xx-kmfoldermbox-0" );
[Attachment #8 (application/pgp-signature)]
_______________________________________________
KMail developers mailing list
KMail-devel@kde.org
https://mail.kde.org/mailman/listinfo/kmail-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic