[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-i18n-doc
Subject:    Request for permission to commit a string changing bugfix to kmail
From:       Till Adam <till () adam-lilienthal ! de>
Date:       2003-04-28 20:11:13
[Download RAW message or body]

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hey there,

the attached patch keeps kmail from blocking all further messages in the
outbox when sending one message fails. This is already in head but I've been
asked to backport it and commit it, provided you guys ok the commit, as it
changes strings (albeit only a little).

So if you'd kindly inform me if I should commit this, I'd be much obliged.

Please cc me in replies, I'm not on this list.

Cheerio,

Till
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQE+rYritrsWGirveVsRAh23AKCywMfEPYcvG2fvMkh2Ouh7xpp9jQCeOy0z
LoSXxXiNL3WYS//fO9TBIcU=
=5gi2
-----END PGP SIGNATURE-----

["kmailNonBlockingSend_KDE_3_1_BRANCH.diff" (text/x-diff)]

? kmailNonBlockingSend_KDE_3_1_BRANCH.diff
Index: kmsender.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/Attic/kmsender.cpp,v
retrieving revision 1.164.2.5
diff -u -3 -p -r1.164.2.5 kmsender.cpp
--- kmsender.cpp	10 Mar 2003 06:22:17 -0000	1.164.2.5
+++ kmsender.cpp	28 Apr 2003 20:02:38 -0000
@@ -46,6 +46,7 @@ KMSender::KMSender()
   mSendAborted = false;
   mSentMessages = 0;
   mTotalMessages = 0;
+  mFailedMessages = 0;
   mSentBytes = 0;
   mTotalBytes = 0;
 }
@@ -324,16 +325,22 @@ kdDebug(5006) << "KMSender::doSendMsg() 
   }
 
   // See if there is another queued message
-  mCurrentMsg = kernel->outboxFolder()->getMsg(0);
+  mCurrentMsg = kernel->outboxFolder()->getMsg( mFailedMessages );
   if (!mCurrentMsg)
   {
     // no more message: cleanup and done
     if ( ( sentFolder != kernel->sentFolder() ) && ( sentFolder != 0 ) )
         sentFolder->close();
-    if (someSent)
-      setStatusMsg(i18n("%n queued message successfully sent.",
-			"%n queued messages successfully sent.",
-			mSentMessages));
+    if (someSent) {
+      if ( mSentMessages == mTotalMessages ) {
+        setStatusMsg(i18n("%n queued message successfully sent.",
+ 	       	  "%n queued messages successfully sent.",
+ 		  mSentMessages));
+      } else {
+        setStatusMsg(i18n("%1 of %2 queued messages successfully sent.")
+            .arg(mSentMessages).arg( mTotalMessages )); 
+      }
+    }
     cleanup();
     return;
   }
@@ -425,7 +432,7 @@ void KMSender::doSendMsgAux()
 
   mSendProc->preSendInit();
   setStatusMsg(i18n("%3: subject of message","Sending message %1 of %2: %3")
-	       .arg(mSentMessages+1).arg(mTotalMessages)
+	       .arg(mSentMessages+mFailedMessages+1).arg(mTotalMessages)
 	       .arg(mCurrentMsg->subject()));
   if (!mSendProc->send(mCurrentMsg))
   {
@@ -461,6 +468,7 @@ void KMSender::cleanup(void)
 
   mSendAborted = false;
   mSentMessages = 0;
+  mFailedMessages = 0;
   mSentBytes = 0;
   disconnect(KMBroadcastStatus::instance(), SIGNAL(signalAbortRequested()),
     this, SLOT(slotAbortSend()));
@@ -484,31 +492,66 @@ void KMSender::slotIdle()
 {
   assert(mSendProc != 0);
 
-  if (!mSendAborted) {
-      if (mSendProc->sendOk()) {
-	  // sending succeeded
-	  doSendMsg();
-	  return;
-      }
-  }
-
-  // sending of message failed
   QString msg;
   QString errString;
   if (mSendProc)
       errString = mSendProc->message();
 
-  msg = i18n("Sending failed:\n%1\n"
+  if (mSendAborted) {
+    // sending of message aborted 
+    msg = i18n("Sending aborted:\n%1\n"
         "The message will stay in the 'outbox' folder until you either "
         "fix the problem (e.g. a broken address) or remove the message "
-	"from the 'outbox' folder.\n"
-	"Note: Other messages will also be blocked by this message, as "
-	"long as it is in the 'outbox' folder\n"
-	"The following transport protocol was used:\n  %2")
-    .arg(errString)
-    .arg(mMethodStr);
-  if (!errString.isEmpty()) KMessageBox::error(0,msg);
-
+        "from the 'outbox' folder.\n"
+        "The following transport protocol was used:\n  %2")
+      .arg(errString)
+      .arg(mMethodStr);
+    if (!errString.isEmpty()) KMessageBox::error(0,msg);
+  } else {
+    if (!mSendProc->sendOk()) {
+      mCurrentMsg->setTransferInProgress( false );
+      mCurrentMsg = 0;
+      mFailedMessages++;
+      // Sending of message failed.
+      if (!errString.isEmpty()) {
+        int res = KMessageBox::Yes;
+        if (mSentMessages+mFailedMessages != mTotalMessages) {
+          msg = i18n("<p>Sending failed:</p>"
+            "<p>%1</p>"
+            "<p>The message will stay in the 'outbox' folder until you either "
+            "fix the problem (e.g. a broken address) or remove the message "
+            "from the 'outbox' folder.</p>"
+            "<p>The following transport protocol was used:  %2</p>"
+            "<p>Do you want me to continue sending the remaining messages?</p>")
+            .arg(errString)
+            .arg(mMethodStr);
+          res = KMessageBox::warningYesNo( 0 , msg ,
+                  i18n( "Continue sending" ), i18n( "&Continue sending" ), 
+                  i18n("&Abort sending") );
+        } else {
+          msg = i18n("Sending failed:\n%1\n"  
+            "The message will stay in the 'outbox' folder until you either "
+            "fix the problem (e.g. a broken address) or remove the message "
+            "from the 'outbox' folder.\n"
+            "The following transport protocol was used:\n %2")
+            .arg(errString)
+            .arg(mMethodStr);
+          KMessageBox::error(0,msg);
+        }
+        if (res == KMessageBox::Yes) {
+          // Try the next one.
+          doSendMsg();
+          return;
+        } else {
+          setStatusMsg( i18n( "Sending aborted." ) ); 
+        }
+      }
+    } else {
+      // Sending suceeded.
+      doSendMsg();
+      return;
+    }
+  }
   mSendProc->finish(true);
   mSendProc = 0;
   mSendProcStarted = false;
Index: kmsender.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/Attic/kmsender.h,v
retrieving revision 1.39.6.1
diff -u -3 -p -r1.39.6.1 kmsender.h
--- kmsender.h	29 Jan 2003 22:38:39 -0000	1.39.6.1
+++ kmsender.h	28 Apr 2003 20:02:38 -0000
@@ -134,6 +134,7 @@ private:
   KMMessage * mCurrentMsg;
   int mSentMessages, mTotalMessages;
   int mSentBytes, mTotalBytes;
+  int mFailedMessages;
 };
 
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic