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

List:       kde-commits
Subject:    KDE/kdepim/kleopatra/crypto
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2008-05-16 10:44:26
Message-ID: 1210934666.588146.29146.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 808302 by osterfeld:

fix error reporting for sign/encrypt email
fixes i54

 M  +18 -9     encryptemailcontroller.cpp  
 M  +1 -1      encryptemailcontroller.h  
 M  +14 -4     signemailcontroller.cpp  
 M  +1 -1      signemailcontroller.h  


--- trunk/KDE/kdepim/kleopatra/crypto/encryptemailcontroller.cpp #808301:808302
@@ -76,7 +76,7 @@
 private:
     void slotWizardRecipientsResolved();
     void slotWizardCanceled();
-    void slotTaskDone();
+    void slotTaskDone( const shared_ptr<const Task::Result> & );
 
 private:
     void ensureWizardCreated() const;
@@ -91,6 +91,8 @@
     std::vector< shared_ptr<EncryptEMailTask> > runnable, completed;
     shared_ptr<EncryptEMailTask> cms, openpgp;
     mutable QPointer<EncryptEMailWizard> wizard;
+    int lastError;
+    QString lastErrorString;
 };
 
 EncryptEMailController::Private::Private( Mode m, EncryptEMailController * qq )
@@ -99,7 +101,9 @@
       runnable(),
       cms(),
       openpgp(),
-      wizard()
+      wizard(),
+      lastError( 0 ),
+      lastErrorString()
 {
 
 }
@@ -210,7 +214,7 @@
     d->wizard->setTaskCollection( coll );
     Q_FOREACH( const shared_ptr<Task> & t, tmp )
         connect( t.get(), SIGNAL(result(boost::shared_ptr<const \
                Kleo::Crypto::Task::Result>)),
-             this, SLOT(slotTaskDone()) );
+             this, SLOT(slotTaskDone(boost::shared_ptr<const \
Kleo::Crypto::Task::Result>)) );  d->schedule();
 }
 
@@ -228,11 +232,13 @@
             openpgp = t;
         }
 
-    if ( !cms && !openpgp ) {
-        kleo_assert( runnable.empty() );
+    if ( cms || openpgp )
+        return;
+    kleo_assert( runnable.empty() );
+    if ( lastError )
+        emit q->error( lastError, lastErrorString );
+    else
         emit q->done();
-    }
-    
 }
 
 shared_ptr<EncryptEMailTask> EncryptEMailController::Private::takeRunnable( \
GpgME::Protocol proto ) { @@ -247,7 +253,7 @@
     return result;
 }
 
-void EncryptEMailController::Private::slotTaskDone() {
+void EncryptEMailController::Private::slotTaskDone( const shared_ptr<const \
Task::Result> & result ) {  assert( q->sender() );
     
     // We could just delete the tasks here, but we can't use
@@ -262,7 +268,10 @@
         completed.push_back( openpgp );
         openpgp.reset();
     }
-
+    if ( result->hasError() ) {
+        lastError = result->errorCode();
+        lastErrorString = result->errorString();
+    }
     QTimer::singleShot( 0, q, SLOT(schedule()) );
 }
 
--- trunk/KDE/kdepim/kleopatra/crypto/encryptemailcontroller.h #808301:808302
@@ -104,7 +104,7 @@
         kdtools::pimpl_ptr<Private> d;
         Q_PRIVATE_SLOT( d, void slotWizardRecipientsResolved() )
         Q_PRIVATE_SLOT( d, void slotWizardCanceled() )
-        Q_PRIVATE_SLOT( d, void slotTaskDone() )
+        Q_PRIVATE_SLOT( d, void slotTaskDone( boost::shared_ptr<const \
Kleo::Crypto::Task::Result>) )  Q_PRIVATE_SLOT( d, void schedule() )
     };
 
--- trunk/KDE/kdepim/kleopatra/crypto/signemailcontroller.cpp #808301:808302
@@ -74,7 +74,7 @@
 private:
     void slotWizardSignersResolved();
     void slotWizardCanceled(); // ### extract to base
-    void slotTaskDone();       // ### extract to base
+    void slotTaskDone( const shared_ptr<const Task::Result> & result );       // ### \
extract to base  
 private:
     void ensureWizardCreated(); // ### extract to base
@@ -90,6 +90,8 @@
     shared_ptr<SignEMailTask> cms, openpgp; // ### extract to base
     QPointer<SignEMailWizard> wizard; // ### extract to base
     Protocol protocol;                  // ### extract to base
+    int lastError;
+    QString lastErrorString;
     bool detached : 1;
 };
 
@@ -101,6 +103,7 @@
       openpgp(),
       wizard(),
       protocol( UnknownProtocol ),
+      lastError( 0 ),
       detached( false )
 {
 
@@ -225,7 +228,7 @@
     d->wizard->setTaskCollection( coll );
     Q_FOREACH( const shared_ptr<Task> & t, tmp )
         connect( t.get(), SIGNAL(result(boost::shared_ptr<const \
                Kleo::Crypto::Task::Result>)),
-             this, SLOT(slotTaskDone()) );
+                 this, SLOT(slotTaskDone(result(boost::shared_ptr<const \
Kleo::Crypto::Task::Result>))) );  
     d->schedule();
 }
@@ -253,7 +256,10 @@
             if ( !Q )
                 return;
         }
-        emit q->done();
+        if ( lastError )
+            emit q->error( lastError, lastErrorString );
+        else
+            emit q->done();
     }
     
 }
@@ -272,7 +278,7 @@
 }
 
 // ### extract to base
-void SignEMailController::Private::slotTaskDone() {
+void SignEMailController::Private::slotTaskDone( const shared_ptr<const \
Task::Result> & result ) {  assert( q->sender() );
     
     // We could just delete the tasks here, but we can't use
@@ -288,6 +294,10 @@
         openpgp.reset();
     }
 
+    if ( result->hasError() ) {
+        lastError = result->errorCode();
+        lastErrorString = result->errorString();
+    }
     QTimer::singleShot( 0, q, SLOT(schedule()) );
 }
 
--- trunk/KDE/kdepim/kleopatra/crypto/signemailcontroller.h #808301:808302
@@ -102,7 +102,7 @@
         kdtools::pimpl_ptr<Private> d;
         Q_PRIVATE_SLOT( d, void slotWizardSignersResolved() )
         Q_PRIVATE_SLOT( d, void slotWizardCanceled() )
-        Q_PRIVATE_SLOT( d, void slotTaskDone() )
+        Q_PRIVATE_SLOT( d, void slotTaskDone( boost::shared_ptr<const \
Kleo::Crypto::Task::Result> ) )  Q_PRIVATE_SLOT( d, void schedule() )
     };
 


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

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