• 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
kleopatraapplication.cpp
Go to the documentation of this file.
1 /*
2  kleopatraapplication.cpp
3 
4  This file is part of Kleopatra, the KDE keymanager
5  Copyright (c) 2008 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 #include <config-kleopatra.h>
34 
35 #include "kleopatraapplication.h"
36 
37 #include "mainwindow.h"
38 #include "systrayicon.h"
39 #include <smartcard/readerstatus.h>
40 #include <conf/configuredialog.h>
41 
42 #include <utils/gnupg-helper.h>
43 #include <utils/filesystemwatcher.h>
44 #include <utils/kdpipeiodevice.h>
45 #include <utils/log.h>
46 #include <utils/getpid.h>
47 
48 #include <gpgme++/key.h>
49 #include <models/keycache.h>
50 
51 #ifdef HAVE_USABLE_ASSUAN
52 # include <uiserver/uiserver.h>
53 #endif
54 
55 #include <commands/signencryptfilescommand.h>
56 #include <commands/decryptverifyfilescommand.h>
57 #include <commands/lookupcertificatescommand.h>
58 #include <commands/detailscommand.h>
59 
60 #include <KGlobal>
61 #include <KIconLoader>
62 #include <KLocale>
63 #include <KCmdLineOptions>
64 #include <KDebug>
65 #include <KUrl>
66 #include <KWindowSystem>
67 
68 #include <QFile>
69 #include <QDir>
70 #include <QPointer>
71 
72 #include <boost/shared_ptr.hpp>
73 #include <boost/range.hpp>
74 #include <boost/bind.hpp>
75 #include <boost/mem_fn.hpp>
76 
77 #include <memory>
78 
79 using namespace Kleo;
80 using namespace Kleo::Commands;
81 using namespace boost;
82 
83 static void add_resources() {
84  KGlobal::locale()->insertCatalog( QLatin1String("libkleopatra") );
85  KIconLoader::global()->addAppDir( QLatin1String("libkleopatra") );
86  KIconLoader::global()->addAppDir( QLatin1String("kwatchgnupg") );
87  KIconLoader::global()->addAppDir( QLatin1String("kdepim") );
88 }
89 
90 static const struct {
91  const char * option;
92  const char * description;
93  char short_option[4];
94 } kleo_options[] = {
95  { "daemon", I18N_NOOP("Run UI server only, hide main window"), "" },
96  { "openpgp", I18N_NOOP("Use OpenPGP for the following operation"), "p" },
97  { "cms", I18N_NOOP("Use CMS (X.509, S/MIME) for the following operation"), "c" },
98  { "import-certificate", I18N_NOOP("Import certificate file(s)"), "i" },
99  { "encrypt", I18N_NOOP("Encrypt file(s)"), "e" },
100  { "sign", I18N_NOOP("Sign file(s)"), "s" },
101  { "sign-encrypt", I18N_NOOP("Sign and/or encrypt file(s)"), "E" },
102  { "encrypt-sign", I18N_NOOP("Same as --sign-encrypt, do not use"), "" },
103  { "decrypt", I18N_NOOP("Decrypt file(s)"), "d" },
104  { "verify", I18N_NOOP("Verify file/signature"), "V" },
105  { "decrypt-verify", I18N_NOOP("Decrypt and/or verify file(s)"), "D" },
106  { "query <fingerprint>",I18N_NOOP("Search for Certificate by fingerprint"), "q" },
107  { "parent-windowid <windowId>", I18N_NOOP("Parent Window Id for dialogs"), "" },
108  //{ "show-certificate", I18N_NOOP("Show Certificate(s) by fingerprint(s)"), "" },
109 };
110 
111 
112 static KCmdLineOptions make_kleopatra_args() {
113  KCmdLineOptions options;
114 #ifdef HAVE_USABLE_ASSUAN
115  options.add("uiserver-socket <argument>", ki18n("Location of the socket the ui server is listening on" ));
116 #endif
117  for ( unsigned int i = 0 ; i < sizeof kleo_options / sizeof *kleo_options ; ++i ) {
118  if ( *kleo_options[i].short_option )
119  options.add( kleo_options[i].short_option );
120  options.add( kleo_options[i].option, ki18n( kleo_options[i].description ) );
121  }
122  options.add("+[File]", ki18n("File(s) to process"));
123  return options;
124 }
125 
126 // static
127 KCmdLineOptions KleopatraApplication::commandLineOptions() {
128  static KCmdLineOptions options = make_kleopatra_args();
129  return options;
130 }
131 
132 static QList<QByteArray> default_logging_options() {
133  QList<QByteArray> result;
134  result.push_back( "io" );
135  return result;
136 }
137 
138 class KleopatraApplication::Private {
139  friend class ::KleopatraApplication;
140  KleopatraApplication * const q;
141 public:
142  explicit Private( KleopatraApplication * qq )
143  : q( qq ),
144  ignoreNewInstance( true ),
145  firstNewInstance( true )
146  {
147 #ifndef _WIN32_WCE
148  KDAB_SET_OBJECT_NAME( readerStatus );
149 #endif
150 #ifndef QT_NO_SYSTEMTRAYICON
151  KDAB_SET_OBJECT_NAME( sysTray );
152 
153  sysTray.setAnyCardHasNullPin( readerStatus.anyCardHasNullPin() );
154  sysTray.setAnyCardCanLearnKeys( readerStatus.anyCardCanLearnKeys() );
155 
156  connect( &readerStatus, SIGNAL(anyCardHasNullPinChanged(bool)),
157  &sysTray, SLOT(setAnyCardHasNullPin(bool)) );
158  connect( &readerStatus, SIGNAL(anyCardCanLearnKeysChanged(bool)),
159  &sysTray, SLOT(setAnyCardCanLearnKeys(bool)) );
160 #endif
161  }
162 
163 private:
164  void connectConfigureDialog() {
165  if ( configureDialog && q->mainWindow() )
166  connect( configureDialog, SIGNAL(configCommitted()), q->mainWindow(), SLOT(slotConfigCommitted()) );
167  }
168  void disconnectConfigureDialog() {
169  if ( configureDialog && q->mainWindow() )
170  disconnect( configureDialog, SIGNAL(configCommitted()), q->mainWindow(), SLOT(slotConfigCommitted()) );
171  }
172 
173 public:
174  bool ignoreNewInstance;
175  bool firstNewInstance;
176  QPointer<ConfigureDialog> configureDialog;
177  QPointer<MainWindow> mainWindow;
178 #ifndef _WIN32_WCE
179  SmartCard::ReaderStatus readerStatus;
180 #endif
181 #ifndef QT_NO_SYSTEMTRAYICON
182  SysTrayIcon sysTray;
183 #endif
184  shared_ptr<KeyCache> keyCache;
185  shared_ptr<Log> log;
186  shared_ptr<FileSystemWatcher> watcher;
187 
188 public:
189  void setupKeyCache() {
190  keyCache = KeyCache::mutableInstance();
191  watcher.reset( new FileSystemWatcher );
192 
193  watcher->blacklistFiles( gnupgFileBlacklist() );
194  watcher->addPath( gnupgHomeDirectory() );
195  watcher->setDelay( 1000 );
196  keyCache->addFileSystemWatcher( watcher );
197  }
198 
199  void setupLogging() {
200  log = Log::mutableInstance();
201 
202  const QByteArray envOptions = qgetenv( "KLEOPATRA_LOGOPTIONS" );
203  const bool logAll = envOptions.trimmed() == "all";
204  const QList<QByteArray> options = envOptions.isEmpty() ? default_logging_options() : envOptions.split( ',' ) ;
205 
206  const QByteArray dirNative = qgetenv( "KLEOPATRA_LOGDIR" );
207  if ( dirNative.isEmpty() )
208  return;
209  const QString dir = QFile::decodeName( dirNative );
210  const QString logFileName = QDir( dir ).absoluteFilePath( QString::fromLatin1( "kleopatra.log.%1" ).arg( mygetpid() ) );
211  std::auto_ptr<QFile> logFile( new QFile( logFileName ) );
212  if ( !logFile->open( QIODevice::WriteOnly | QIODevice::Append ) ) {
213  kDebug() << "Could not open file for logging: " << logFileName << "\nLogging disabled";
214  return;
215  }
216 
217  log->setOutputDirectory( dir );
218  if ( logAll || options.contains( "io" ) )
219  log->setIOLoggingEnabled( true );
220  qInstallMsgHandler( Log::messageHandler );
221 
222 #ifdef HAVE_USABLE_ASSUAN
223  if ( logAll || options.contains( "pipeio" ) )
224  KDPipeIODevice::setDebugLevel( KDPipeIODevice::Debug );
225  UiServer::setLogStream( log->logFile() );
226 #endif
227 
228  }
229 };
230 
231 
232 KleopatraApplication::KleopatraApplication()
233  : KUniqueApplication(), d( new Private( this ) )
234 {
235  add_resources();
236  d->setupKeyCache();
237  d->setupLogging();
238 #ifndef QT_NO_SYSTEMTRAYICON
239  d->sysTray.show();
240 #endif
241  setQuitOnLastWindowClosed( false );
242  KWindowSystem::allowExternalProcessWindowActivation();
243 }
244 
245 KleopatraApplication::~KleopatraApplication() {
246  // work around kdelibs bug https://bugs.kde.org/show_bug.cgi?id=162514
247  KGlobal::config()->sync();
248 }
249 
250 static QStringList files_from_args( const shared_ptr<const KCmdLineArgs> & args ) {
251  QStringList result;
252  for ( int i = 0, end = args->count() ; i < end ; ++i ) {
253  const KUrl url = args->url(i);
254  if ( url.protocol() == QLatin1String("file") )
255  result.push_back( url.toLocalFile() );
256  }
257  return result;
258 }
259 
260 namespace {
261  typedef void (KleopatraApplication::*Func)( const QStringList &, GpgME::Protocol );
262  struct _Funcs {
263  const char * opt;
264  Func func;
265  };
266 }
267 
268 int KleopatraApplication::newInstance() {
269  kDebug() << "ignoreNewInstance =" << d->ignoreNewInstance;
270  if ( d->ignoreNewInstance )
271  return 0;
272 
273  const shared_ptr<KCmdLineArgs> args( KCmdLineArgs::parsedArgs(), mem_fn( &KCmdLineArgs::clear ) );
274 
275  const QStringList files = files_from_args( args );
276 
277  const bool openpgp = args->isSet( "openpgp" );
278  const bool cms = args->isSet( "cms" );
279 
280  kDebug( openpgp ) << "found OpenPGP";
281  kDebug( cms ) << "found CMS";
282 
283  if ( openpgp && cms ) {
284  kDebug() << "ambigious protocol: --openpgp and --cms";
285  return 1;
286  }
287 
288  // Check for --query command
289  if ( args->isSet( "query" ) ) {
290  const QString fingerPrint = args->getOption( "query" );
291  if ( fingerPrint.isEmpty() ) {
292  kDebug() << "no fingerprint specified: --query";
293  return 1;
294  }
295 
296  // Check for Parent Window id
297  WId parentId = 0;
298  if ( args->isSet( "parent-windowid" ) ) {
299  parentId = args->getOption( "parent-windowid" ).toUInt();
300  }
301 
302  // Search for local keys
303  const GpgME::Key &key = Kleo::KeyCache::instance()->findByKeyIDOrFingerprint( fingerPrint.toLocal8Bit().data() );
304  if ( key.isNull() ) {
305  // Show external search dialog
306  LookupCertificatesCommand * const cmd = new LookupCertificatesCommand( fingerPrint, 0 );
307  if ( parentId != 0 ) {
308  cmd->setParentWId( parentId );
309  };
310  cmd->start();
311  return 0;
312  } else {
313  // show local detail
314  DetailsCommand * const cmd = new DetailsCommand( key, 0 );
315  if ( parentId != 0 ) {
316  cmd->setParentWId( parentId );
317  };
318  cmd->start();
319  return 0;
320  }
321 
322  }
323 
324  static const _Funcs funcs[] = {
325 #ifndef QT_NO_SYSTEMTRAYICON
326  { "import-certificate", &KleopatraApplication::importCertificatesFromFile },
327 #endif
328  { "encrypt", &KleopatraApplication::encryptFiles },
329  { "sign", &KleopatraApplication::signFiles },
330  { "encrypt-sign", &KleopatraApplication::signEncryptFiles },
331  { "sign-encrypt", &KleopatraApplication::signEncryptFiles },
332  { "decrypt", &KleopatraApplication::decryptFiles },
333  { "verify", &KleopatraApplication::verifyFiles },
334  { "decrypt-verify", &KleopatraApplication::decryptVerifyFiles },
335  };
336 
337  const _Funcs * const it1 = std::find_if( begin( funcs ), end( funcs ),
338  boost::bind( &KCmdLineArgs::isSet, args, boost::bind( &_Funcs::opt, _1 ) ) );
339 
340  if ( const Func func = it1 == end( funcs ) ? 0 : it1->func ) {
341  const _Funcs * it2 = std::find_if( it1+1, end( funcs ),
342  boost::bind( &KCmdLineArgs::isSet, args, boost::bind( &_Funcs::opt, _1 ) ) );
343  if ( it2 != end( funcs ) ) {
344  kDebug() << "ambiguous command" << it1->opt << "vs." << it2->opt;
345  return 1;
346  }
347  if ( files.empty() ) {
348  kDebug() << it1->opt << "without arguments";
349  return 1;
350  }
351  kDebug() << "found" << it1->opt;
352  (this->*func)( files, openpgp ? GpgME::OpenPGP : cms ? GpgME::CMS : GpgME::UnknownProtocol );
353  } else {
354  if ( files.empty() ) {
355  if ( ! ( d->firstNewInstance && isSessionRestored() ) ) {
356  kDebug() << "openOrRaiseMainWindow";
357  openOrRaiseMainWindow();
358  }
359  } else {
360  kDebug() << "files without command"; // possible?
361  return 1;
362  }
363  }
364 
365  return 0;
366 }
367 
368 #ifndef QT_NO_SYSTEMTRAYICON
369 const SysTrayIcon * KleopatraApplication::sysTrayIcon() const {
370  return &d->sysTray;
371 }
372 
373 SysTrayIcon * KleopatraApplication::sysTrayIcon() {
374  return &d->sysTray;
375 }
376 #endif
377 
378 const MainWindow * KleopatraApplication::mainWindow() const {
379  return d->mainWindow;
380 }
381 
382 MainWindow * KleopatraApplication::mainWindow() {
383  return d->mainWindow;
384 }
385 
386 void KleopatraApplication::setMainWindow( MainWindow * mainWindow ) {
387  if ( mainWindow == d->mainWindow )
388  return;
389 
390  d->disconnectConfigureDialog();
391 
392  d->mainWindow = mainWindow;
393 #ifndef QT_NO_SYSTEMTRAYICON
394  d->sysTray.setMainWindow( mainWindow );
395 #endif
396 
397  d->connectConfigureDialog();
398 }
399 
400 static void open_or_raise( QWidget * w ) {
401  if ( w->isMinimized() ) {
402  KWindowSystem::unminimizeWindow( w->winId());
403  w->raise();
404  } else if ( w->isVisible() ) {
405  w->raise();
406  } else {
407  w->show();
408  }
409 }
410 
411 void KleopatraApplication::toggleMainWindowVisibility()
412 {
413  if ( mainWindow() ) {
414  mainWindow()->setVisible( !mainWindow()->isVisible() );
415  } else {
416  openOrRaiseMainWindow();
417  }
418 }
419 
420 void KleopatraApplication::restoreMainWindow() {
421  kDebug() << "restoring main window";
422 
423  // Sanity checks
424  if ( !isSessionRestored() ) {
425  kDebug() << "Not in session restore";
426  return;
427  }
428 
429  if ( mainWindow() ) {
430  kDebug() << "Already have main window";
431  return;
432  }
433 
434 
435  MainWindow * mw = new MainWindow;
436  if ( KMainWindow::canBeRestored( 1 ) ) {
437  // restore to hidden state, Mainwindow::readProperties() will
438  // restore saved visibility.
439  mw->restore( 1, false );
440  }
441 
442  mw->setAttribute( Qt::WA_DeleteOnClose );
443  setMainWindow( mw );
444  d->connectConfigureDialog();
445 
446 }
447 
448 void KleopatraApplication::openOrRaiseMainWindow() {
449  MainWindow * mw = mainWindow();
450  if ( !mw ) {
451  mw = new MainWindow;
452  mw->setAttribute( Qt::WA_DeleteOnClose );
453  setMainWindow( mw );
454  d->connectConfigureDialog();
455  }
456  open_or_raise( mw );
457 }
458 
459 void KleopatraApplication::openOrRaiseConfigDialog() {
460  if ( !d->configureDialog ) {
461  d->configureDialog = new ConfigureDialog;
462  d->configureDialog->setAttribute( Qt::WA_DeleteOnClose );
463  d->connectConfigureDialog();
464  }
465  open_or_raise( d->configureDialog );
466 }
467 
468 #ifndef QT_NO_SYSTEMTRAYICON
469 void KleopatraApplication::startMonitoringSmartCard() {
470  d->readerStatus.startMonitoring();
471 }
472 
473 void KleopatraApplication::importCertificatesFromFile( const QStringList & files, GpgME::Protocol /*proto*/) {
474  openOrRaiseMainWindow();
475  if ( !files.empty() )
476  d->sysTray.mainWindow()->importCertificatesFromFile( files );
477 }
478 #endif // QT_NO_SYSTEMTRAYICON
479 
480 void KleopatraApplication::encryptFiles( const QStringList & files, GpgME::Protocol proto ) {
481  SignEncryptFilesCommand * const cmd = new SignEncryptFilesCommand( files, 0 );
482  cmd->setEncryptionPolicy( Force );
483  cmd->setSigningPolicy( Allow );
484  if ( proto != GpgME::UnknownProtocol )
485  cmd->setProtocol( proto );
486  cmd->start();
487 }
488 
489 void KleopatraApplication::signFiles( const QStringList & files, GpgME::Protocol proto ) {
490  SignEncryptFilesCommand * const cmd = new SignEncryptFilesCommand( files, 0 );
491  cmd->setSigningPolicy( Force );
492  cmd->setEncryptionPolicy( Deny );
493  if ( proto != GpgME::UnknownProtocol )
494  cmd->setProtocol( proto );
495  cmd->start();
496 }
497 
498 void KleopatraApplication::signEncryptFiles( const QStringList & files, GpgME::Protocol proto ) {
499  SignEncryptFilesCommand * const cmd = new SignEncryptFilesCommand( files, 0 );
500  if ( proto != GpgME::UnknownProtocol )
501  cmd->setProtocol( proto );
502  cmd->start();
503 }
504 
505 void KleopatraApplication::decryptFiles( const QStringList & files, GpgME::Protocol /*proto*/ ) {
506  DecryptVerifyFilesCommand * const cmd = new DecryptVerifyFilesCommand( files, 0 );
507  cmd->setOperation( Decrypt );
508  cmd->start();
509 }
510 
511 void KleopatraApplication::verifyFiles( const QStringList & files, GpgME::Protocol /*proto*/ ) {
512  DecryptVerifyFilesCommand * const cmd = new DecryptVerifyFilesCommand( files, 0 );
513  cmd->setOperation( Verify );
514  cmd->start();
515 }
516 
517 void KleopatraApplication::decryptVerifyFiles( const QStringList & files, GpgME::Protocol /*proto*/ ) {
518  DecryptVerifyFilesCommand * const cmd = new DecryptVerifyFilesCommand( files, 0 );
519  cmd->start();
520 }
521 
522 void KleopatraApplication::setIgnoreNewInstance( bool ignore ) {
523  d->ignoreNewInstance = ignore;
524 }
525 
526 void KleopatraApplication::setFirstNewInstance( bool on ) {
527  d->firstNewInstance = on;
528 }
529 
530 
531 bool KleopatraApplication::ignoreNewInstance() const {
532  return d->ignoreNewInstance;
533 }
534 
535 #include "moc_kleopatraapplication.cpp"
decryptverifyfilescommand.h
Kleo::Force
Definition: types.h:61
KleopatraApplication::decryptVerifyFiles
void decryptVerifyFiles(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:517
description
const char * description
Definition: kleopatraapplication.cpp:92
getpid.h
Kleo::gnupgHomeDirectory
QString gnupgHomeDirectory()
Definition: gnupg-helper.cpp:56
KleopatraApplication::encryptFiles
void encryptFiles(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:480
Kleo::Deny
Definition: types.h:62
Kleo::Commands::DecryptVerifyFilesCommand
Definition: commands/decryptverifyfilescommand.h:45
QWidget
Kleo::Commands::SignEncryptFilesCommand::setEncryptionPolicy
void setEncryptionPolicy(Policy force)
Definition: commands/signencryptfilescommand.cpp:174
Kleo::Command::start
void start()
Definition: commands/command.cpp:182
configuredialog.h
KDPipeIODevice::setDebugLevel
static void setDebugLevel(DebugLevel level)
Definition: kdpipeiodevice.cpp:240
KleopatraApplication::restoreMainWindow
void restoreMainWindow()
Definition: kleopatraapplication.cpp:420
readerstatus.h
option
const char * option
Definition: kleopatraapplication.cpp:91
Kleo::gnupgFileBlacklist
QStringList gnupgFileBlacklist()
Definition: gnupg-helper.cpp:90
Kleo::Allow
Definition: types.h:60
add_resources
static void add_resources()
Definition: kleopatraapplication.cpp:83
KleopatraApplication
Definition: kleopatraapplication.h:46
Kleo::Commands::LookupCertificatesCommand
Definition: lookupcertificatescommand.h:41
KleopatraApplication::openOrRaiseMainWindow
void openOrRaiseMainWindow()
Definition: kleopatraapplication.cpp:448
KleopatraApplication::setIgnoreNewInstance
void setIgnoreNewInstance(bool on)
Definition: kleopatraapplication.cpp:522
lookupcertificatescommand.h
boost::shared_ptr< KeyCache >
d
#define d
Definition: adduseridcommand.cpp:90
KleopatraApplication::ignoreNewInstance
bool ignoreNewInstance() const
Definition: kleopatraapplication.cpp:531
Kleo::FileSystemWatcher
Definition: filesystemwatcher.h:45
KleopatraApplication::mainWindow
const MainWindow * mainWindow() const
Definition: kleopatraapplication.cpp:378
KDPipeIODevice::Debug
Definition: kdpipeiodevice.h:35
Kleo::Class::OpenPGP
Definition: classify.h:49
KleopatraApplication::sysTrayIcon
const SysTrayIcon * sysTrayIcon() const
Definition: kleopatraapplication.cpp:369
Kleo::Command::setParentWId
void setParentWId(WId wid)
Definition: commands/command.cpp:140
KleopatraApplication::decryptFiles
void decryptFiles(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:505
KleopatraApplication::verifyFiles
void verifyFiles(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:511
mainwindow.h
KDAB_SET_OBJECT_NAME
#define KDAB_SET_OBJECT_NAME(x)
Definition: kdtoolsglobal.h:66
Kleo::Log::messageHandler
static void messageHandler(QtMsgType type, const char *msg)
Definition: log.cpp:72
Kleo::Verify
Definition: types.h:47
Kleo::Class::CMS
Definition: classify.h:48
KleopatraApplication::openOrRaiseConfigDialog
void openOrRaiseConfigDialog()
Definition: kleopatraapplication.cpp:459
systrayicon.h
detailscommand.h
gnupg-helper.h
KleopatraApplication::commandLineOptions
static KCmdLineOptions commandLineOptions()
Definition: kleopatraapplication.cpp:127
Kleo::Commands::SignEncryptFilesCommand::setProtocol
void setProtocol(GpgME::Protocol protocol)
Definition: commands/signencryptfilescommand.cpp:209
ConfigureDialog
Definition: configuredialog.h:39
kleo_options
static const struct @3 kleo_options[]
Kleo::UiServer::setLogStream
static void setLogStream(FILE *file)
Definition: uiserver.cpp:66
Kleo::Commands::DetailsCommand
Definition: detailscommand.h:45
KleopatraApplication::startMonitoringSmartCard
void startMonitoringSmartCard()
Definition: kleopatraapplication.cpp:469
dir
static QString dir(const QString &id)
Definition: filedialog.cpp:53
Kleo::SmartCard::ReaderStatus
Definition: readerstatus.h:46
signencryptfilescommand.h
KleopatraApplication::newInstance
int newInstance()
Definition: kleopatraapplication.cpp:268
Kleo::Commands::DecryptVerifyFilesCommand::setOperation
void setOperation(DecryptVerifyOperation operation)
Definition: commands/decryptverifyfilescommand.cpp:138
Kleo::Commands::SignEncryptFilesCommand::setSigningPolicy
void setSigningPolicy(Policy policy)
Definition: commands/signencryptfilescommand.cpp:139
SysTrayIcon
Definition: systrayicon.h:45
filesystemwatcher.h
default_logging_options
static QList< QByteArray > default_logging_options()
Definition: kleopatraapplication.cpp:132
KleopatraApplication::setFirstNewInstance
void setFirstNewInstance(bool on)
Definition: kleopatraapplication.cpp:526
KleopatraApplication::signEncryptFiles
void signEncryptFiles(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:498
q
#define q
Definition: adduseridcommand.cpp:91
KleopatraApplication::setMainWindow
void setMainWindow(MainWindow *mw)
Definition: kleopatraapplication.cpp:386
kdpipeiodevice.h
Kleo::KeyCache::instance
static boost::shared_ptr< const KeyCache > instance()
Definition: keycache.cpp:189
KleopatraApplication::~KleopatraApplication
~KleopatraApplication()
Definition: kleopatraapplication.cpp:245
KleopatraApplication::KleopatraApplication
KleopatraApplication()
Definition: kleopatraapplication.cpp:232
KleopatraApplication::importCertificatesFromFile
void importCertificatesFromFile(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:473
Kleo::Commands::SignEncryptFilesCommand
Definition: commands/signencryptfilescommand.h:47
Kleo::Decrypt
Definition: types.h:46
Kleo::Log::mutableInstance
static boost::shared_ptr< Log > mutableInstance()
Definition: log.cpp:98
keycache.h
kleopatraapplication.h
files_from_args
static QStringList files_from_args(const shared_ptr< const KCmdLineArgs > &args)
Definition: kleopatraapplication.cpp:250
log.h
make_kleopatra_args
static KCmdLineOptions make_kleopatra_args()
Definition: kleopatraapplication.cpp:112
KleopatraApplication::toggleMainWindowVisibility
void toggleMainWindowVisibility()
Definition: kleopatraapplication.cpp:411
open_or_raise
static void open_or_raise(QWidget *w)
Definition: kleopatraapplication.cpp:400
short_option
char short_option[4]
Definition: kleopatraapplication.cpp:93
uiserver.h
Kleo::mygetpid
static qint64 mygetpid()
Definition: getpid.h:49
MainWindow
Definition: kgpgconf/mainwindow.h:47
QList
Definition: commands/command.h:46
Kleo::KeyCache::mutableInstance
static boost::shared_ptr< KeyCache > mutableInstance()
Definition: keycache.cpp:193
KleopatraApplication::signFiles
void signFiles(const QStringList &files, GpgME::Protocol proto)
Definition: kleopatraapplication.cpp:489
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:41 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