• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

kleopatra

  • sources
  • kde-4.12
  • kdepim
  • kleopatra
  • uiserver
assuancommand.h
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset:4 -*-
2  uiserver/assuancommand.h
3 
4  This file is part of Kleopatra, the KDE keymanager
5  Copyright (c) 2007 Klarälvdalens Datakonsult AB
6 
7  Kleopatra is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  Kleopatra is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 
21  In addition, as a special exception, the copyright holders give
22  permission to link the code of this program with any edition of
23  the Qt library by Trolltech AS, Norway (or with modified versions
24  of Qt that use the same license as Qt), and distribute linked
25  combinations including the two. You must obey the GNU General
26  Public License in all respects for all of the code used other than
27  Qt. If you modify this file, you may extend this exception to
28  your version of the file, but you are not obligated to do so. If
29  you do not wish to do so, delete this exception statement from
30  your version.
31 */
32 
33 #ifndef __KLEOPATRA_UISERVER_ASSUANCOMMAND_H__
34 #define __KLEOPATRA_UISERVER_ASSUANCOMMAND_H__
35 
36 #include <utils/pimpl_ptr.h>
37 #include <utils/types.h>
38 
39 #include <gpgme++/global.h>
40 #include <gpgme++/error.h>
41 
42 #ifdef HAVE_ASSUAN2
43 #include <gpg-error.h>
44 
45 #endif
46 #include <kmime/kmime_header_parsing.h>
47 
48 #include <qwindowdefs.h> // for WId
49 
50 #include <boost/shared_ptr.hpp>
51 #include <boost/enable_shared_from_this.hpp>
52 
53 #include <string>
54 #include <map>
55 #include <vector>
56 
57 class QVariant;
58 class QIODevice;
59 class QObject;
60 class QStringList;
61 class QDialog;
62 class QFile;
63 
64 struct assuan_context_s;
65 
66 namespace Kleo {
67 
68  class Input;
69  class Output;
70 
71  class AssuanCommandFactory;
72 
213  class AssuanCommand : public ExecutionContext, public boost::enable_shared_from_this<AssuanCommand> {
214  // defined in assuanserverconnection.cpp!
215  public:
216  AssuanCommand();
217  virtual ~AssuanCommand();
218 
219  int start();
220  void canceled();
221 
222  virtual const char * name() const = 0;
223 
224  class Memento {
225  public:
226  virtual ~Memento() {}
227  };
228 
229  template <typename T>
230  class TypedMemento : public Memento {
231  T m_t;
232  public:
233  explicit TypedMemento( const T & t ) : m_t( t ) {}
234 
235  const T & get() const { return m_t; }
236  T & get() { return m_t; }
237  };
238 
239  template <typename T>
240  static boost::shared_ptr< TypedMemento<T> > make_typed_memento( const T & t ) {
241  return boost::shared_ptr< TypedMemento<T> >( new TypedMemento<T>( t ) );
242  }
243 
244  static int makeError( int code );
245 
246  // convenience methods:
247  enum Mode { NoMode, EMail, FileManager };
248  Mode checkMode() const;
249 
250  enum CheckProtocolOption {
251  AllowProtocolMissing=0x01
252  };
253 
254  GpgME::Protocol checkProtocol( Mode mode, int options=0 ) const;
255 
256  /* reimp */ void applyWindowID( QWidget* w ) const {
257  doApplyWindowID( w );
258  }
259  WId parentWId() const;
260 
261  void setNohup( bool on );
262  bool isNohup() const;
263  bool isDone() const;
264 
265  QString sessionTitle() const;
266  unsigned int sessionId() const;
267 
268  bool informativeRecipients() const;
269  bool informativeSenders() const;
270 
271  const std::vector<KMime::Types::Mailbox> & recipients() const;
272  const std::vector<KMime::Types::Mailbox> & senders() const;
273 
274  bool hasMemento( const QByteArray & tag ) const;
275  boost::shared_ptr<Memento> memento( const QByteArray & tag ) const;
276  template <typename T>
277  boost::shared_ptr<T> mementoAs( const QByteArray & tag ) const {
278  return boost::dynamic_pointer_cast<T>( this->memento( tag ) );
279  }
280  QByteArray registerMemento( const boost::shared_ptr<Memento> & mem );
281  QByteArray registerMemento( const QByteArray & tag, const boost::shared_ptr<Memento> & mem );
282  void removeMemento( const QByteArray & tag );
283  template <typename T>
284  T mementoContent( const QByteArray & tag ) const {
285  if ( boost::shared_ptr< TypedMemento<T> > m = mementoAs< TypedMemento<T> >( tag ) )
286  return m->get();
287  else
288  return T();
289  }
290 
291  bool hasOption( const char * opt ) const;
292  QVariant option( const char * opt ) const;
293  const std::map<std::string,QVariant> & options() const;
294 
295  const std::vector< boost::shared_ptr<Input> > & inputs() const;
296  const std::vector< boost::shared_ptr<Input> > & messages() const;
297  const std::vector< boost::shared_ptr<Output> > & outputs() const;
298 
299  QStringList fileNames() const;
300  unsigned int numFiles() const;
301 
302  void sendStatus( const char * keyword, const QString & text );
303  void sendStatusEncoded( const char * keyword, const std::string & text );
304  void sendData( const QByteArray & data, bool moreToCome=false );
305 
306  int inquire( const char * keyword, QObject * receiver, const char * slot, unsigned int maxSize=0 );
307 
308  void done( const GpgME::Error& err = GpgME::Error() );
309  void done( const GpgME::Error& err, const QString & details );
310  void done( int err ) { done( GpgME::Error(err) ); }
311  void done( int err, const QString & details ) { done( GpgME::Error(err), details ); }
312 
313  private:
314  virtual void doCanceled() = 0;
315  virtual int doStart() = 0;
316 
317  private:
318  void doApplyWindowID( QWidget * w ) const;
319 
320  private:
321  const std::map< QByteArray, boost::shared_ptr<Memento> > & mementos() const;
322 
323  private:
324  friend class ::Kleo::AssuanCommandFactory;
325  class Private;
326  kdtools::pimpl_ptr<Private> d;
327  };
328 
329  class AssuanCommandFactory {
330  public:
331  virtual ~AssuanCommandFactory() {}
332 
333  virtual boost::shared_ptr<AssuanCommand> create() const = 0;
334  virtual const char * name() const = 0;
335 
336 #ifndef HAVE_ASSUAN2
337  typedef int(*_Handler)( assuan_context_s*, char *);
338 #else
339  typedef gpg_error_t(*_Handler)( assuan_context_s*, char *);
340 #endif
341  virtual _Handler _handler() const = 0;
342 
343 #ifndef HAVE_ASSUAN2
344  static int _handle( assuan_context_s*, char *, const char * );
345 #else
346  static gpg_error_t _handle( assuan_context_s*, char *, const char * );
347 #endif
348  };
349 
350  template <typename Command>
351  class GenericAssuanCommandFactory : public AssuanCommandFactory {
352  /* reimp */ AssuanCommandFactory::_Handler _handler() const { return &GenericAssuanCommandFactory::_handle; }
353 #ifndef HAVE_ASSUAN2
354  static int _handle( assuan_context_s* _ctx, char * _line ) {
355 #else
356  static gpg_error_t _handle( assuan_context_s* _ctx, char * _line ) {
357 #endif
358  return AssuanCommandFactory::_handle( _ctx, _line, Command::staticName() );
359  }
360  /* reimp */ boost::shared_ptr<AssuanCommand> create() const { return make(); }
361  /* reimp */ const char * name() const { return Command::staticName(); }
362  public:
363  static boost::shared_ptr<Command> make() { return boost::shared_ptr<Command>( new Command ); }
364  };
365 
366  template <typename Derived, typename Base=AssuanCommand>
367  class AssuanCommandMixin : public Base {
368  protected:
369  /* reimp */ const char * name() const { return Derived::staticName(); }
370  };
371 
372 }
373 
374 #endif /* __KLEOPATRA_UISERVER_ASSUANCOMMAND_H__ */
Kleo::AssuanCommand::isNohup
bool isNohup() const
Definition: assuanserverconnection.cpp:1354
types.h
Kleo::AssuanCommandFactory::~AssuanCommandFactory
virtual ~AssuanCommandFactory()
Definition: assuancommand.h:331
Kleo::AssuanCommandFactory::_handler
virtual _Handler _handler() const =0
Kleo::AssuanCommand::~AssuanCommand
virtual ~AssuanCommand()
Definition: assuanserverconnection.cpp:1110
kdtools::pimpl_ptr< Private >
Kleo::AssuanCommand::FileManager
Definition: assuancommand.h:247
pimpl_ptr.h
Kleo::AssuanCommand::hasMemento
bool hasMemento(const QByteArray &tag) const
Definition: assuanserverconnection.cpp:1183
Kleo::AssuanCommand::AllowProtocolMissing
Definition: assuancommand.h:251
QDialog
Kleo::AssuanCommand::name
virtual const char * name() const =0
Kleo::AssuanCommand::TypedMemento
Definition: assuancommand.h:230
QWidget
Kleo::AssuanCommand::sendStatusEncoded
void sendStatusEncoded(const char *keyword, const std::string &text)
Definition: assuanserverconnection.cpp:1256
Kleo::AssuanCommand::setNohup
void setNohup(bool on)
Definition: assuanserverconnection.cpp:1350
Kleo::AssuanCommand::EMail
Definition: assuancommand.h:247
Kleo::AssuanCommand::memento
boost::shared_ptr< Memento > memento(const QByteArray &tag) const
Definition: assuanserverconnection.cpp:1190
Kleo::AssuanCommandMixin::name
const char * name() const
Definition: assuancommand.h:369
Kleo::AssuanCommand::removeMemento
void removeMemento(const QByteArray &tag)
Definition: assuanserverconnection.cpp:1222
Kleo::AssuanCommand::fileNames
QStringList fileNames() const
Definition: assuanserverconnection.cpp:1244
Kleo::AssuanCommandFactory::create
virtual boost::shared_ptr< AssuanCommand > create() const =0
Kleo::AssuanCommand::senders
const std::vector< KMime::Types::Mailbox > & senders() const
Definition: assuanserverconnection.cpp:1382
Kleo::AssuanCommand::applyWindowID
void applyWindowID(QWidget *w) const
Definition: assuancommand.h:256
Kleo::AssuanCommand::sendData
void sendData(const QByteArray &data, bool moreToCome=false)
Definition: assuanserverconnection.cpp:1263
Kleo::AssuanCommandMixin
Definition: assuancommand.h:367
Kleo::AssuanCommand::Mode
Mode
Definition: assuancommand.h:247
Kleo::AssuanCommand::checkMode
Mode checkMode() const
Definition: assuanserverconnection.cpp:1508
Kleo::GenericAssuanCommandFactory::make
static boost::shared_ptr< Command > make()
Definition: assuancommand.h:363
boost::shared_ptr
Definition: encryptemailcontroller.h:51
Kleo::AssuanCommand::inquire
int inquire(const char *keyword, QObject *receiver, const char *slot, unsigned int maxSize=0)
Definition: assuanserverconnection.cpp:1273
Kleo::AssuanCommand::outputs
const std::vector< boost::shared_ptr< Output > > & outputs() const
Definition: assuanserverconnection.cpp:1240
d
#define d
Definition: adduseridcommand.cpp:90
Kleo::AssuanCommand::make_typed_memento
static boost::shared_ptr< TypedMemento< T > > make_typed_memento(const T &t)
Definition: assuancommand.h:240
Kleo::AssuanCommand::option
QVariant option(const char *opt) const
Definition: assuanserverconnection.cpp:1153
Kleo::AssuanCommand::done
void done(int err, const QString &details)
Definition: assuancommand.h:311
Kleo::AssuanCommand::sessionTitle
QString sessionTitle() const
Definition: assuanserverconnection.cpp:1362
Kleo::AssuanCommand::AssuanCommand
AssuanCommand()
Definition: assuanserverconnection.cpp:1104
Kleo::AssuanCommand::CheckProtocolOption
CheckProtocolOption
Definition: assuancommand.h:250
Kleo::AssuanCommand::sendStatus
void sendStatus(const char *keyword, const QString &text)
Definition: assuanserverconnection.cpp:1252
Kleo::AssuanCommand::recipients
const std::vector< KMime::Types::Mailbox > & recipients() const
Definition: assuanserverconnection.cpp:1378
Kleo::AssuanCommand::NoMode
Definition: assuancommand.h:247
Kleo::AssuanCommandFactory::_handle
static int _handle(assuan_context_s *, char *, const char *)
Definition: assuanserverconnection.cpp:1387
Kleo::AssuanCommand::makeError
static int makeError(int code)
Definition: assuanserverconnection.cpp:1145
Kleo::AssuanCommand::numFiles
unsigned int numFiles() const
Definition: assuanserverconnection.cpp:1248
Kleo::AssuanCommand::done
void done(int err)
Definition: assuancommand.h:310
Kleo::AssuanCommand::parentWId
WId parentWId() const
Definition: assuanserverconnection.cpp:1559
string
const char * string
Definition: verifychecksumscontroller.cpp:511
Kleo::AssuanCommand::inputs
const std::vector< boost::shared_ptr< Input > > & inputs() const
Definition: assuanserverconnection.cpp:1232
Kleo::AssuanCommand::mementoAs
boost::shared_ptr< T > mementoAs(const QByteArray &tag) const
Definition: assuancommand.h:277
Kleo::AssuanCommand::start
int start()
Definition: assuanserverconnection.cpp:1114
Kleo::AssuanCommand
Base class for GnuPG UI Server commands.
Definition: assuancommand.h:213
Kleo::AssuanCommand::Memento
Definition: assuancommand.h:224
Kleo::AssuanCommand::done
void done(const GpgME::Error &err=GpgME::Error())
Definition: assuanserverconnection.cpp:1307
Kleo::AssuanCommand::hasOption
bool hasOption(const char *opt) const
Definition: assuanserverconnection.cpp:1149
Kleo::ExecutionContext
Definition: types.h:65
Kleo::AssuanCommandFactory::_Handler
int(* _Handler)(assuan_context_s *, char *)
Definition: assuancommand.h:337
Kleo::AssuanCommand::canceled
void canceled()
Definition: assuanserverconnection.cpp:1139
Kleo::AssuanCommand::registerMemento
QByteArray registerMemento(const boost::shared_ptr< Memento > &mem)
Definition: assuanserverconnection.cpp:1205
Kleo::AssuanCommand::mementoContent
T mementoContent(const QByteArray &tag) const
Definition: assuancommand.h:284
Kleo::AssuanCommand::TypedMemento::TypedMemento
TypedMemento(const T &t)
Definition: assuancommand.h:233
Kleo::AssuanCommandFactory
Definition: assuancommand.h:329
Kleo::AssuanCommand::checkProtocol
GpgME::Protocol checkProtocol(Mode mode, int options=0) const
Definition: assuanserverconnection.cpp:1533
Kleo::AssuanCommand::sessionId
unsigned int sessionId() const
Definition: assuanserverconnection.cpp:1366
Kleo::AssuanCommand::Memento::~Memento
virtual ~Memento()
Definition: assuancommand.h:226
Kleo::AssuanCommand::informativeSenders
bool informativeSenders() const
Definition: assuanserverconnection.cpp:1370
QIODevice
Kleo::AssuanCommand::informativeRecipients
bool informativeRecipients() const
Definition: assuanserverconnection.cpp:1374
Kleo::AssuanCommandFactory::name
virtual const char * name() const =0
Kleo::AssuanCommand::options
const std::map< std::string, QVariant > & options() const
Definition: assuanserverconnection.cpp:1161
Kleo::Command
Definition: commands/command.h:58
slot
const char * slot
Definition: keytreeview.cpp:360
Kleo::GenericAssuanCommandFactory
Definition: assuancommand.h:351
Kleo::AssuanCommand::messages
const std::vector< boost::shared_ptr< Input > > & messages() const
Definition: assuanserverconnection.cpp:1236
Kleo::AssuanCommand::isDone
bool isDone() const
Definition: assuanserverconnection.cpp:1358
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kleopatra

Skip menu "kleopatra"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal