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

kleopatra

  • sources
  • kde-4.14
  • 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 #ifndef Q_MOC_RUN
51 #include <boost/shared_ptr.hpp>
52 #include <boost/enable_shared_from_this.hpp>
53 #endif
54 
55 #include <string>
56 #include <map>
57 #include <vector>
58 
59 class QVariant;
60 class QIODevice;
61 class QObject;
62 class QStringList;
63 class QDialog;
64 class QFile;
65 
66 struct assuan_context_s;
67 
68 namespace Kleo {
69 
70  class Input;
71  class Output;
72 
73  class AssuanCommandFactory;
74 
215  class AssuanCommand : public ExecutionContext, public boost::enable_shared_from_this<AssuanCommand> {
216  // defined in assuanserverconnection.cpp!
217  public:
218  AssuanCommand();
219  virtual ~AssuanCommand();
220 
221  int start();
222  void canceled();
223 
224  virtual const char * name() const = 0;
225 
226  class Memento {
227  public:
228  virtual ~Memento() {}
229  };
230 
231  template <typename T>
232  class TypedMemento : public Memento {
233  T m_t;
234  public:
235  explicit TypedMemento( const T & t ) : m_t( t ) {}
236 
237  const T & get() const { return m_t; }
238  T & get() { return m_t; }
239  };
240 
241  template <typename T>
242  static boost::shared_ptr< TypedMemento<T> > make_typed_memento( const T & t ) {
243  return boost::shared_ptr< TypedMemento<T> >( new TypedMemento<T>( t ) );
244  }
245 
246  static int makeError( int code );
247 
248  // convenience methods:
249  enum Mode { NoMode, EMail, FileManager };
250  Mode checkMode() const;
251 
252  enum CheckProtocolOption {
253  AllowProtocolMissing=0x01
254  };
255 
256  GpgME::Protocol checkProtocol( Mode mode, int options=0 ) const;
257 
258  /* reimp */ void applyWindowID( QWidget* w ) const {
259  doApplyWindowID( w );
260  }
261  WId parentWId() const;
262 
263  void setNohup( bool on );
264  bool isNohup() const;
265  bool isDone() const;
266 
267  QString sessionTitle() const;
268  unsigned int sessionId() const;
269 
270  bool informativeRecipients() const;
271  bool informativeSenders() const;
272 
273  const std::vector<KMime::Types::Mailbox> & recipients() const;
274  const std::vector<KMime::Types::Mailbox> & senders() const;
275 
276  bool hasMemento( const QByteArray & tag ) const;
277  boost::shared_ptr<Memento> memento( const QByteArray & tag ) const;
278  template <typename T>
279  boost::shared_ptr<T> mementoAs( const QByteArray & tag ) const {
280  return boost::dynamic_pointer_cast<T>( this->memento( tag ) );
281  }
282  QByteArray registerMemento( const boost::shared_ptr<Memento> & mem );
283  QByteArray registerMemento( const QByteArray & tag, const boost::shared_ptr<Memento> & mem );
284  void removeMemento( const QByteArray & tag );
285  template <typename T>
286  T mementoContent( const QByteArray & tag ) const {
287  if ( boost::shared_ptr< TypedMemento<T> > m = mementoAs< TypedMemento<T> >( tag ) )
288  return m->get();
289  else
290  return T();
291  }
292 
293  bool hasOption( const char * opt ) const;
294  QVariant option( const char * opt ) const;
295  const std::map<std::string,QVariant> & options() const;
296 
297  const std::vector< boost::shared_ptr<Input> > & inputs() const;
298  const std::vector< boost::shared_ptr<Input> > & messages() const;
299  const std::vector< boost::shared_ptr<Output> > & outputs() const;
300 
301  QStringList fileNames() const;
302  unsigned int numFiles() const;
303 
304  void sendStatus( const char * keyword, const QString & text );
305  void sendStatusEncoded( const char * keyword, const std::string & text );
306  void sendData( const QByteArray & data, bool moreToCome=false );
307 
308  int inquire( const char * keyword, QObject * receiver, const char * slot, unsigned int maxSize=0 );
309 
310  void done( const GpgME::Error& err = GpgME::Error() );
311  void done( const GpgME::Error& err, const QString & details );
312  void done( int err ) { done( GpgME::Error(err) ); }
313  void done( int err, const QString & details ) { done( GpgME::Error(err), details ); }
314 
315  private:
316  virtual void doCanceled() = 0;
317  virtual int doStart() = 0;
318 
319  private:
320  void doApplyWindowID( QWidget * w ) const;
321 
322  private:
323  const std::map< QByteArray, boost::shared_ptr<Memento> > & mementos() const;
324 
325  private:
326  friend class ::Kleo::AssuanCommandFactory;
327  class Private;
328  kdtools::pimpl_ptr<Private> d;
329  };
330 
331  class AssuanCommandFactory {
332  public:
333  virtual ~AssuanCommandFactory() {}
334 
335  virtual boost::shared_ptr<AssuanCommand> create() const = 0;
336  virtual const char * name() const = 0;
337 
338 #ifndef HAVE_ASSUAN2
339  typedef int(*_Handler)( assuan_context_s*, char *);
340 #else
341  typedef gpg_error_t(*_Handler)( assuan_context_s*, char *);
342 #endif
343  virtual _Handler _handler() const = 0;
344 
345 #ifndef HAVE_ASSUAN2
346  static int _handle( assuan_context_s*, char *, const char * );
347 #else
348  static gpg_error_t _handle( assuan_context_s*, char *, const char * );
349 #endif
350  };
351 
352  template <typename Command>
353  class GenericAssuanCommandFactory : public AssuanCommandFactory {
354  /* reimp */ AssuanCommandFactory::_Handler _handler() const { return &GenericAssuanCommandFactory::_handle; }
355 #ifndef HAVE_ASSUAN2
356  static int _handle( assuan_context_s* _ctx, char * _line ) {
357 #else
358  static gpg_error_t _handle( assuan_context_s* _ctx, char * _line ) {
359 #endif
360  return AssuanCommandFactory::_handle( _ctx, _line, Command::staticName() );
361  }
362  /* reimp */ boost::shared_ptr<AssuanCommand> create() const { return make(); }
363  /* reimp */ const char * name() const { return Command::staticName(); }
364  public:
365  static boost::shared_ptr<Command> make() { return boost::shared_ptr<Command>( new Command ); }
366  };
367 
368  template <typename Derived, typename Base=AssuanCommand>
369  class AssuanCommandMixin : public Base {
370  protected:
371  /* reimp */ const char * name() const { return Derived::staticName(); }
372  };
373 
374 }
375 
376 #endif /* __KLEOPATRA_UISERVER_ASSUANCOMMAND_H__ */
QIODevice
Kleo::AssuanCommand::isNohup
bool isNohup() const
Definition: assuanserverconnection.cpp:1347
QWidget
types.h
Kleo::AssuanCommandFactory::~AssuanCommandFactory
virtual ~AssuanCommandFactory()
Definition: assuancommand.h:333
Kleo::AssuanCommandFactory::_handler
virtual _Handler _handler() const =0
Kleo::AssuanCommand::~AssuanCommand
virtual ~AssuanCommand()
Definition: assuanserverconnection.cpp:1103
kdtools::pimpl_ptr< Private >
Kleo::AssuanCommand::FileManager
Definition: assuancommand.h:249
pimpl_ptr.h
Kleo::AssuanCommand::hasMemento
bool hasMemento(const QByteArray &tag) const
Definition: assuanserverconnection.cpp:1176
Kleo::AssuanCommand::AllowProtocolMissing
Definition: assuancommand.h:253
QByteArray
Kleo::AssuanCommand::name
virtual const char * name() const =0
Kleo::AssuanCommand::TypedMemento
Definition: assuancommand.h:232
Kleo::AssuanCommand::sendStatusEncoded
void sendStatusEncoded(const char *keyword, const std::string &text)
Definition: assuanserverconnection.cpp:1249
Kleo::AssuanCommand::setNohup
void setNohup(bool on)
Definition: assuanserverconnection.cpp:1343
Kleo::AssuanCommand::EMail
Definition: assuancommand.h:249
Kleo::AssuanCommand::memento
boost::shared_ptr< Memento > memento(const QByteArray &tag) const
Definition: assuanserverconnection.cpp:1183
Kleo::AssuanCommandMixin::name
const char * name() const
Definition: assuancommand.h:371
Kleo::AssuanCommand::removeMemento
void removeMemento(const QByteArray &tag)
Definition: assuanserverconnection.cpp:1215
Kleo::AssuanCommand::fileNames
QStringList fileNames() const
Definition: assuanserverconnection.cpp:1237
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:1375
QFile
Kleo::AssuanCommand::applyWindowID
void applyWindowID(QWidget *w) const
Definition: assuancommand.h:258
Kleo::AssuanCommand::sendData
void sendData(const QByteArray &data, bool moreToCome=false)
Definition: assuanserverconnection.cpp:1256
Kleo::AssuanCommandMixin
Definition: assuancommand.h:369
Kleo::AssuanCommand::Mode
Mode
Definition: assuancommand.h:249
Kleo::AssuanCommand::checkMode
Mode checkMode() const
Definition: assuanserverconnection.cpp:1501
Kleo::GenericAssuanCommandFactory::make
static boost::shared_ptr< Command > make()
Definition: assuancommand.h:365
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:1266
Kleo::AssuanCommand::outputs
const std::vector< boost::shared_ptr< Output > > & outputs() const
Definition: assuanserverconnection.cpp:1233
d
#define d
Definition: adduseridcommand.cpp:89
Kleo::AssuanCommand::make_typed_memento
static boost::shared_ptr< TypedMemento< T > > make_typed_memento(const T &t)
Definition: assuancommand.h:242
QObject
Kleo::AssuanCommand::option
QVariant option(const char *opt) const
Definition: assuanserverconnection.cpp:1146
Kleo::AssuanCommand::done
void done(int err, const QString &details)
Definition: assuancommand.h:313
Kleo::AssuanCommand::sessionTitle
QString sessionTitle() const
Definition: assuanserverconnection.cpp:1355
QString
Kleo::AssuanCommand::AssuanCommand
AssuanCommand()
Definition: assuanserverconnection.cpp:1097
Kleo::AssuanCommand::CheckProtocolOption
CheckProtocolOption
Definition: assuancommand.h:252
QStringList
Kleo::AssuanCommand::sendStatus
void sendStatus(const char *keyword, const QString &text)
Definition: assuanserverconnection.cpp:1245
Kleo::AssuanCommand::recipients
const std::vector< KMime::Types::Mailbox > & recipients() const
Definition: assuanserverconnection.cpp:1371
Kleo::AssuanCommand::NoMode
Definition: assuancommand.h:249
Kleo::AssuanCommandFactory::_handle
static int _handle(assuan_context_s *, char *, const char *)
Definition: assuanserverconnection.cpp:1380
Kleo::AssuanCommand::makeError
static int makeError(int code)
Definition: assuanserverconnection.cpp:1138
Kleo::AssuanCommand::numFiles
unsigned int numFiles() const
Definition: assuanserverconnection.cpp:1241
Kleo::AssuanCommand::done
void done(int err)
Definition: assuancommand.h:312
Kleo::AssuanCommand::parentWId
WId parentWId() const
Definition: assuanserverconnection.cpp:1552
string
const char * string
Definition: verifychecksumscontroller.cpp:510
Kleo::AssuanCommand::inputs
const std::vector< boost::shared_ptr< Input > > & inputs() const
Definition: assuanserverconnection.cpp:1225
Kleo::AssuanCommand::mementoAs
boost::shared_ptr< T > mementoAs(const QByteArray &tag) const
Definition: assuancommand.h:279
Kleo::AssuanCommand::start
int start()
Definition: assuanserverconnection.cpp:1107
Kleo::AssuanCommand
Base class for GnuPG UI Server commands.
Definition: assuancommand.h:215
Kleo::AssuanCommand::Memento
Definition: assuancommand.h:226
Kleo::AssuanCommand::done
void done(const GpgME::Error &err=GpgME::Error())
Definition: assuanserverconnection.cpp:1300
slot
const char * slot
Definition: keylistcontroller.cpp:290
Kleo::AssuanCommand::hasOption
bool hasOption(const char *opt) const
Definition: assuanserverconnection.cpp:1142
Kleo::ExecutionContext
Definition: types.h:65
Kleo::AssuanCommandFactory::_Handler
int(* _Handler)(assuan_context_s *, char *)
Definition: assuancommand.h:339
Kleo::AssuanCommand::canceled
void canceled()
Definition: assuanserverconnection.cpp:1132
Kleo::AssuanCommand::registerMemento
QByteArray registerMemento(const boost::shared_ptr< Memento > &mem)
Definition: assuanserverconnection.cpp:1198
QDialog
Kleo::AssuanCommand::mementoContent
T mementoContent(const QByteArray &tag) const
Definition: assuancommand.h:286
Kleo::AssuanCommand::TypedMemento::TypedMemento
TypedMemento(const T &t)
Definition: assuancommand.h:235
Kleo::AssuanCommandFactory
Definition: assuancommand.h:331
Kleo::AssuanCommand::checkProtocol
GpgME::Protocol checkProtocol(Mode mode, int options=0) const
Definition: assuanserverconnection.cpp:1526
Kleo::AssuanCommand::sessionId
unsigned int sessionId() const
Definition: assuanserverconnection.cpp:1359
Kleo::AssuanCommand::Memento::~Memento
virtual ~Memento()
Definition: assuancommand.h:228
Kleo::AssuanCommand::informativeSenders
bool informativeSenders() const
Definition: assuanserverconnection.cpp:1363
Kleo::AssuanCommand::informativeRecipients
bool informativeRecipients() const
Definition: assuanserverconnection.cpp:1367
Kleo::AssuanCommandFactory::name
virtual const char * name() const =0
Kleo::AssuanCommand::options
const std::map< std::string, QVariant > & options() const
Definition: assuanserverconnection.cpp:1154
Kleo::Command
Definition: commands/command.h:58
Kleo::GenericAssuanCommandFactory
Definition: assuancommand.h:353
Kleo::AssuanCommand::messages
const std::vector< boost::shared_ptr< Input > > & messages() const
Definition: assuanserverconnection.cpp:1229
Kleo::AssuanCommand::isDone
bool isDone() const
Definition: assuanserverconnection.cpp:1351
QVariant
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:33:10 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
  • pimprint

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