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

List:       kde-commits
Subject:    KDE/kdepim/kleopatra/uiserver
From:       Marc Mutz <mutz () kde ! org>
Date:       2008-02-11 15:13:07
Message-ID: 1202742787.764644.30588.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 773617 by mutz:

Code reorganization, pt.16:

- Disentangle AssuanCommand and Controller



 M  +5 -2      assuancommand.h  
 M  +14 -16    controller.cpp  
 M  +8 -5      controller.h  
 M  +11 -4     encryptemailcontroller.cpp  
 M  +2 -0      encryptemailcontroller.h  
 M  +9 -4      signemailcontroller.cpp  


--- trunk/KDE/kdepim/kleopatra/uiserver/assuancommand.h #773616:773617
@@ -33,10 +33,13 @@
 #ifndef __KLEOPATRA_UISERVER_ASSUANCOMMAND_H__
 #define __KLEOPATRA_UISERVER_ASSUANCOMMAND_H__
 
+#include <uiserver/controller.h>
+
 #include <utils/pimpl_ptr.h>
 
 #include <gpgme++/global.h>
 #include <gpgme++/error.h>
+
 #include <kmime/kmime_header_parsing.h>
 
 #include <boost/shared_ptr.hpp>
@@ -200,7 +203,7 @@
       \endcode
 
     */
-    class AssuanCommand : public boost::enable_shared_from_this<AssuanCommand> {
+    class AssuanCommand : public ExecutionContext, public \
boost::enable_shared_from_this<AssuanCommand> {  // defined in \
assuanserverconnection.cpp!  public:
         AssuanCommand();
@@ -239,7 +242,7 @@
 
         GpgME::Protocol checkProtocol( Mode mode ) const;
 
-        void applyWindowID( QDialog* w ) const {
+        /* reimp */ void applyWindowID( QDialog* w ) const {
             doApplyWindowID( w );
         }
         
--- trunk/KDE/kdepim/kleopatra/uiserver/controller.cpp #773616:773617
@@ -32,12 +32,12 @@
 
 #include "controller.h"
 
-#include "assuancommand.h"
+#include <KWindowSystem>
 
 #include <QDialog>
 #include <QVector>
 
-#include <KWindowSystem>
+#include <boost/weak_ptr.hpp>
 
 using namespace boost;
 using namespace Kleo;
@@ -46,18 +46,17 @@
     friend class ::Kleo::Controller;
     Controller * const q;
 public:
-    explicit Private( const shared_ptr<AssuanCommand> & cmd, Controller * qq );
+    explicit Private( const shared_ptr<const ExecutionContext> & ctx, Controller * \
qq );  
     void applyWindowID( QDialog* dlg );
     
 private:
-    weak_ptr<AssuanCommand> command;
+    weak_ptr<const ExecutionContext> executionContext;
     QVector<QDialog*> idApplied;
-    
 };
 
-Controller::Private::Private( const shared_ptr<AssuanCommand> & cmd, Controller * qq \
                )
-    : q( qq ), command( cmd )
+Controller::Private::Private( const shared_ptr<const ExecutionContext> & ctx, \
Controller * qq ) +    : q( qq ), executionContext( ctx )
 {
 
 }
@@ -66,15 +65,14 @@
 {
     if ( idApplied.contains( dlg ) )
         return;
-    const shared_ptr<AssuanCommand> cmd = command.lock();
-    if ( cmd ) {
-        cmd->applyWindowID( dlg );
+    if ( const shared_ptr<const ExecutionContext> ctx = executionContext.lock() ) {
+        ctx->applyWindowID( dlg );
         idApplied.append( dlg );
     }
 }
 
-Controller::Controller( const shared_ptr<AssuanCommand> & cmd, QObject* parent )
-    : QObject( parent ), d( new Private( cmd, this ) )
+Controller::Controller( const shared_ptr<const ExecutionContext> & ctx, QObject* \
parent ) +    : QObject( parent ), d( new Private( ctx, this ) )
 {
     
 }
@@ -84,15 +82,15 @@
     
 }
 
-void Controller::setCommand( const shared_ptr<AssuanCommand> & cmd )
+void Controller::setExecutionContext( const shared_ptr<const ExecutionContext> & ctx \
)  {
-    d->command = cmd;
+    d->executionContext = ctx;
     d->idApplied.clear();
 }
 
-weak_ptr<AssuanCommand> Controller::command() const
+shared_ptr<const ExecutionContext> Controller::executionContext() const
 {
-    return d->command;
+    return d->executionContext.lock();
 }
 
 void Controller::bringToForeground( QDialog* dlg )
--- trunk/KDE/kdepim/kleopatra/uiserver/controller.h #773616:773617
@@ -38,24 +38,27 @@
 #include <utils/pimpl_ptr.h>
 
 #include <boost/shared_ptr.hpp>
-#include <boost/weak_ptr.hpp>
 
 class QDialog;
 
 namespace Kleo {
 
-    class AssuanCommand;
+    class ExecutionContext {
+    public:
+        virtual ~ExecutionContext() {}
+        virtual void applyWindowID( QDialog * dialog ) const = 0;
+    };
 
     class Controller : public QObject {
         Q_OBJECT
     public:
-        explicit Controller( const boost::shared_ptr<AssuanCommand> & cmd, QObject * \
parent=0 ); +        explicit Controller( const boost::shared_ptr<const \
ExecutionContext> & cmd, QObject * parent=0 );  ~Controller();
 
-        void setCommand( const boost::shared_ptr<AssuanCommand> & cmd );
+        void setExecutionContext( const boost::shared_ptr<const ExecutionContext> & \
cmd );  
     protected:   
-        boost::weak_ptr<AssuanCommand> command() const;
+        boost::shared_ptr<const ExecutionContext> executionContext() const;
  
         void bringToForeground( QDialog* dlg );
         
--- trunk/KDE/kdepim/kleopatra/uiserver/encryptemailcontroller.cpp #773616:773617
@@ -64,7 +64,7 @@
     friend class ::Kleo::EncryptEMailController;
     EncryptEMailController * const q;
 public:
-    explicit Private( EncryptEMailController * qq );
+    explicit Private( const shared_ptr<AssuanCommand> & cmd, EncryptEMailController \
* qq );  
 private:
     void slotWizardRecipientsResolved();
@@ -81,13 +81,15 @@
     void connectTask( const shared_ptr<Task> & task, unsigned int idx );
 
 private:
+    weak_ptr<AssuanCommand> command;
     std::vector< shared_ptr<EncryptEMailTask> > runnable, completed;
     shared_ptr<EncryptEMailTask> cms, openpgp;
     mutable QPointer<SignEncryptWizard> wizard;
 };
 
-EncryptEMailController::Private::Private( EncryptEMailController * qq )
+EncryptEMailController::Private::Private( const shared_ptr<AssuanCommand> & cmd, \
EncryptEMailController * qq )  : q( qq ),
+      command( cmd ),
       runnable(),
       cms(),
       openpgp(),
@@ -97,7 +99,7 @@
 }
 
 EncryptEMailController::EncryptEMailController( const shared_ptr<AssuanCommand> & \
                cmd, QObject * p )
-    : Controller( cmd, p ), d( new Private( this ) )
+    : Controller( cmd, p ), d( new Private( cmd, this ) )
 {
 
 }
@@ -108,6 +110,11 @@
         //d->wizard->close(); ### ?
 }
 
+void EncryptEMailController::setCommand( const shared_ptr<AssuanCommand> & cmd ) {
+    d->command = cmd;
+    setExecutionContext( cmd );
+}
+
 void EncryptEMailController::setProtocol( Protocol proto ) {
     d->ensureWizardCreated();
     const Protocol protocol = d->wizard->presetProtocol();
@@ -149,7 +156,7 @@
 
 void EncryptEMailController::importIO() {
 
-    const shared_ptr<AssuanCommand> cmd = command().lock();
+    const shared_ptr<AssuanCommand> cmd = d->command.lock();
     kleo_assert( cmd );
 
     const std::vector< shared_ptr<Input> > & inputs = cmd->inputs();
--- trunk/KDE/kdepim/kleopatra/uiserver/encryptemailcontroller.h #773616:773617
@@ -55,6 +55,8 @@
         ~EncryptEMailController();
 
         static const char * mementoName() { return "EncryptEMailController"; }
+
+        void setCommand( const boost::shared_ptr<AssuanCommand> & cmd );
         
         void setProtocol( GpgME::Protocol proto );
         const char * protocolAsString() const;
--- trunk/KDE/kdepim/kleopatra/uiserver/signemailcontroller.cpp #773616:773617
@@ -64,7 +64,8 @@
     friend class ::Kleo::SignEMailController;
     SignEMailController * const q;
 public:
-    explicit Private( SignEMailController * qq );
+    explicit Private( const shared_ptr<AssuanCommand> & cmd, SignEMailController * \
qq ); +    ~Private();
 
 private:
     void slotWizardSignersResolved();
@@ -81,6 +82,7 @@
     void connectTask( const shared_ptr<Task> & task, unsigned int idx ); // ### \
extract to base  
 private:
+    weak_ptr<AssuanCommand> command;
     std::vector< shared_ptr<SignEMailTask> > runnable, completed; // ### extract to \
base  shared_ptr<SignEMailTask> cms, openpgp; // ### extract to base
     QPointer<SignEncryptWizard> wizard; // ### extract to base
@@ -88,8 +90,9 @@
     bool detached : 1;
 };
 
-SignEMailController::Private::Private( SignEMailController * qq )
+SignEMailController::Private::Private( const shared_ptr<AssuanCommand> & cmd, \
SignEMailController * qq )  : q( qq ),
+      command( cmd ),
       runnable(),
       cms(),
       openpgp(),
@@ -100,8 +103,10 @@
 
 }
 
+SignEMailController::Private::~Private() {}
+
 SignEMailController::SignEMailController( const boost::shared_ptr<AssuanCommand> & \
                cmd, QObject * p )
-    : Controller( cmd, p ), d( new Private( this ) )
+    : Controller( cmd, p ), d( new Private( cmd, this ) )
 {
 
 }
@@ -159,7 +164,7 @@
 
 // ### extract to base
 void SignEMailController::importIO() {
-    const shared_ptr<AssuanCommand> cmd = command().lock();
+    const shared_ptr<AssuanCommand> cmd = d->command.lock();
     kleo_assert( cmd );
 
     const std::vector< shared_ptr<Input> > & inputs = cmd->inputs();


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

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