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

kgpg

  • sources
  • kde-4.14
  • kdeutils
  • kgpg
kgpgoptions.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002 Jean-Baptiste Mardelle <bj@altern.org>
3  * Copyright (C) 2006,2007,2008,2009,2010,2011,2012,2013,2014
4  * Rolf Eike Beer <kde@opensource.sf-tec.de>
5  */
6 /***************************************************************************
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  ***************************************************************************/
14 
15 #include "kgpgoptions.h"
16 
17 #include "kgpgsettings.h"
18 #include "kgpginterface.h"
19 #include "conf_encryption.h"
20 #include "core/images.h"
21 #include "model/gpgservermodel.h"
22 #include "model/keylistproxymodel.h"
23 #include "model/kgpgitemmodel.h"
24 
25 #include <KConfig>
26 #include <KDesktopFile>
27 #include <KFileDialog>
28 #include <KFontChooser>
29 #include <KInputDialog>
30 #include <KLocale>
31 #include <KMessageBox>
32 #include <KProcess>
33 #include <KStandardDirs>
34 #include <QCheckBox>
35 #include <QFile>
36 #include <QTextStream>
37 #include <QVBoxLayout>
38 #include <kdefakes.h>
39 
40 using namespace KgpgCore;
41 
42 // main window
43 kgpgOptions::kgpgOptions(QWidget *parent, KGpgItemModel *model)
44  : KConfigDialog(parent, QLatin1String( "settings" ), KGpgSettings::self()),
45  m_config(new KConfig( QLatin1String( "kgpgrc" ), KConfig::SimpleConfig)),
46  m_page1(new Encryption()),
47  m_page2(new Decryption()),
48  m_page3(new UIConf()),
49  m_page4(new GPGConf()),
50  m_page6(new ServerConf()),
51  m_page7(new MiscConf()),
52  m_serverModel(new GpgServerModel(m_page6)),
53  m_fontchooser(new KFontChooser(m_page3->tabWidget3->widget(1), KFontChooser::NoDisplayFlags, QStringList())),
54  m_model(model),
55  m_combomodel(new KeyListProxyModel(this, KeyListProxyModel::SingleColumnIdFirst))
56 {
57  m_page7->EmailTemplateEdit->setPlainText(KGpgSettings::emailTemplate());
58 
59  m_combomodel->setKeyModel(m_model);
60  m_combomodel->setTrustFilter(KgpgCore::TRUST_MARGINAL);
61  m_combomodel->setEncryptionKeyFilter(true);
62  m_combomodel->sort(0);
63 
64  // Initialize the default server and the default server list.
65  defaultKeyServer = QLatin1String("hkp://wwwkeys.pgp.net");
66  defaultServerList << defaultKeyServer
67  << QLatin1String("hkp://search.keyserver.net")
68  << QLatin1String("hkp://pgp.dtype.org")
69  << QLatin1String("hkp://subkeys.pgp.net");
70 
71  // Read the default keyserver from the GnuPG settings.
72  keyServer = KgpgInterface::getGpgSetting(QLatin1String( "keyserver" ), KGpgSettings::gpgConfigPath());
73 
74  // Read the servers stored in kgpgrc
75  serverList = KGpgSettings::keyServers();
76 
77  // Remove everything after a whitespace. This will normally be
78  // ' (Default)' from KDE 3.x.x
79  serverList.replaceInStrings(QRegExp( QLatin1String( " .*") ), QString() );
80 
81  m_serverModel->setStringList(serverList);
82  // if the server from GnuPG config is set and is not in the list of servers put it there
83  if (!keyServer.isEmpty() && !serverList.contains(keyServer))
84  serverList.prepend(keyServer);
85  m_page6->ServerBox->setModel(m_serverModel);
86 
87  defaultConfigPath = KUrl::fromPath(gpgConfigPath).fileName();
88  defaultHomePath = KUrl::fromPath(gpgConfigPath).directory(KUrl::AppendTrailingSlash);
89  defaultBinPath = KGpgSettings::gpgBinaryPath();
90 
91  m_showsystray = KGpgSettings::showSystray();
92  m_trayaction = KGpgSettings::leftClick();
93  m_mailUats = KGpgSettings::mailUats();
94 
95  QVBoxLayout *fontlayout = new QVBoxLayout(m_page3->tabWidget3->widget(1));
96  fontlayout->setSpacing(spacingHint());
97 
98  m_fontchooser->setObjectName( QLatin1String("kcfg_Font" ));
99  fontlayout->addWidget(m_fontchooser);
100 
101  m_page3->kcfg_EmailSorting->addItem(i18n("Left to right, account first"));
102  m_page3->kcfg_EmailSorting->addItem(i18n("Right to left, TLD first"));
103  m_page3->kcfg_EmailSorting->addItem(i18n("Right to left, domain first"));
104  m_page3->kcfg_EmailSorting->addItem(i18n("Right to left, FQDN first"));
105  m_emailSortingIndex = KGpgSettings::emailSorting();
106 
107  pixkeySingle = Images::single();
108  pixkeyDouble = Images::pair();
109  addPage(m_page1, i18n("Encryption"), QLatin1String( "document-encrypt" ));
110  addPage(m_page2, i18n("Decryption"), QLatin1String( "document-decrypt") );
111  addPage(m_page3, i18n("Appearance"), QLatin1String( "preferences-desktop-theme" ));
112  addPage(m_page4, i18n("GnuPG Settings"), QLatin1String( "kgpg" ));
113  addPage(m_page6, i18n("Key Servers"), QLatin1String( "network-wired" ));
114  addPage(m_page7, i18n("Misc"), QLatin1String( "preferences-other" ));
115 
116  // The following widgets are managed manually.
117  connect(m_page1->encrypt_to_always, SIGNAL(toggled(bool)), this, SLOT(slotChangeEncryptTo()));
118  connect(m_page4->changeHome, SIGNAL(clicked()), this, SLOT(slotChangeHome()));
119  connect(m_page6->server_add, SIGNAL(clicked()), this, SLOT(slotAddKeyServer()));
120  connect(m_page6->server_del, SIGNAL(clicked()), this, SLOT(slotDelKeyServer()));
121  connect(m_page6->server_edit, SIGNAL(clicked()), this, SLOT(slotEditKeyServer()));
122  connect(m_page6->server_default, SIGNAL(clicked()), this, SLOT(slotDefaultKeyServer()));
123  connect(m_page6->ServerBox->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(slotChangeKeyServerButtonEnable()));
124  connect(m_page6->ServerBox, SIGNAL(doubleClicked(QModelIndex)), SLOT(slotEditKeyServer(QModelIndex)));
125  connect(m_page7->kcfg_ShowSystray, SIGNAL(clicked()), SLOT(slotSystrayEnable()));
126 
127  keyUltimate = KGpgSettings::colorUltimate();
128  keyGood = KGpgSettings::colorGood();
129  keyMarginal = KGpgSettings::colorMarginal();
130  keyExpired = KGpgSettings::colorExpired();
131  keyUnknown = KGpgSettings::colorUnknown();
132  keyRev = KGpgSettings::colorRev();
133  keyBad = KGpgSettings::colorBad();
134 }
135 
136 kgpgOptions::~kgpgOptions()
137 {
138  delete m_config;
139  delete m_page1;
140  delete m_page2;
141  delete m_page3;
142  delete m_page4;
143  delete m_page6;
144  delete m_page7;
145 }
146 
147 void kgpgOptions::slotChangeHome()
148 {
149  QString gpgHome = KFileDialog::getExistingDirectory(m_page4->gpg_home_path->text(), this, i18n("New GnuPG Home Location"));
150  if (gpgHome.isEmpty())
151  return;
152 
153  if (!gpgHome.endsWith(QLatin1Char( '/' )))
154  gpgHome.append(QLatin1Char( '/' ));
155 
156  QString confPath = QLatin1String( "options" );
157  if (!QFile(gpgHome + confPath).exists()) {
158  confPath = QLatin1String( "gpg.conf" );
159  if (!QFile(gpgHome + confPath).exists()) {
160  // Try to create config File by running gpg once
161  if (KMessageBox::Yes == KMessageBox::questionYesNo(this,
162  i18n("No configuration file was found in the selected location.\nDo you want to create it now?\n\nWithout a configuration file, neither KGpg nor GnuPG will work properly."),
163  i18n("No Configuration File Found"),
164  KGuiItem(i18n("Create")),
165  KGuiItem(i18n("Ignore")))) {
166  // start GnuPG so that it will create a config file
167  QString gpgbin = m_page4->kcfg_GpgBinaryPath->text();
168  if (!QFile::exists(gpgbin))
169  gpgbin = QLatin1String( "gpg" );
170 
171  KProcess p;
172  p << gpgbin << QLatin1String( "--homedir" ) << gpgHome << QLatin1String( "--no-tty" ) << QLatin1String( "--list-secret-keys" );
173  p.execute();
174  // end of creating config file
175 
176  confPath = QLatin1String( "gpg.conf" );
177  QFile confFile(gpgHome + confPath);
178  if (!confFile.open(QIODevice::WriteOnly)) {
179  KMessageBox::sorry(this, i18n("Cannot create configuration file. Please check if destination media is mounted and if you have write access."));
180  return;
181  } else {
182  QTextStream stream(&confFile);
183  stream << "# Config file created by KGpg\n\n";
184  confFile.close();
185  }
186  } else {
187  confPath.clear();
188  }
189  }
190  }
191 
192  m_page4->gpg_conf_path->setText(confPath);
193  m_page4->gpg_home_path->setText(gpgHome);
194 }
195 
196 bool kgpgOptions::isValidKeyserver(const QString &server)
197 {
198  if (server.isEmpty())
199  return false;
200 
201  if (server.contains(QLatin1Char( ' ' ))) {
202  KMessageBox::sorry(this, i18n("Key server URLs may not contain whitespace."));
203  return false;
204  }
205 
206  if (serverList.contains(server)) {
207  KMessageBox::sorry(this, i18n("Key server already in the list."));
208  return false;
209  }
210 
211  return true;
212 }
213 
214 void kgpgOptions::slotAddKeyServer()
215 {
216  const QString newServer(KInputDialog::getText(i18n("Add New Key Server"), i18n("Server URL:")));
217 
218  if (!isValidKeyserver(newServer))
219  return;
220 
221  m_serverModel->setStringList(m_serverModel->stringList() << newServer);
222 
223  enableButtonApply(true);
224 }
225 
226 void kgpgOptions::slotChangeEncryptTo()
227 {
228  bool enable = (m_page1->encrypt_to_always->isChecked() != m_encrypttoalways);
229  enableButtonApply(enable);
230 }
231 
232 void kgpgOptions::slotDelKeyServer()
233 {
234  QModelIndex cur = m_page6->ServerBox->selectionModel()->currentIndex();
235  m_serverModel->removeRows(cur.row(), 1);
236 
237  enableButtonApply(true);
238 }
239 
240 void kgpgOptions::slotEditKeyServer()
241 {
242  slotEditKeyServer(m_page6->ServerBox->selectionModel()->currentIndex());
243 }
244 
245 void kgpgOptions::slotEditKeyServer(const QModelIndex &index)
246 {
247  if (!index.isValid())
248  return;
249 
250  m_page6->ServerBox->edit(index);
251 
252  enableButtonApply(true);
253 }
254 
255 void kgpgOptions::slotDefaultKeyServer()
256 {
257  QModelIndex cur = m_page6->ServerBox->selectionModel()->currentIndex();
258 
259  m_serverModel->setDefault(cur.row());
260 
261  enableButtonApply(true);
262 }
263 
264 void kgpgOptions::slotChangeKeyServerButtonEnable()
265 {
266  QModelIndex cur = m_page6->ServerBox->selectionModel()->currentIndex();
267 
268  m_page6->server_del->setEnabled(cur.isValid());
269  m_page6->server_edit->setEnabled(cur.isValid());
270  m_page6->server_default->setEnabled(cur.isValid() &&
271  (cur.row() != m_serverModel->defaultRow()));
272 }
273 
274 void kgpgOptions::updateWidgets()
275 {
276  alwaysKeyID = KgpgInterface::getGpgSetting(QLatin1String( "encrypt-to" ), KGpgSettings::gpgConfigPath());
277 
278  m_page7->EmailTemplateEdit->setPlainText(KGpgSettings::emailTemplate());
279 
280  m_encrypttoalways = !alwaysKeyID.isEmpty();
281  m_defaultencrypttoalways = false;
282 
283  m_page1->encrypt_to_always->setChecked(m_encrypttoalways);
284 
285  listKeys();
286  fileEncryptionKey = KGpgSettings::fileEncryptionKey();
287  // the contents are totally mess. There were key id, name and email stored
288  // try to extract the key id, that's the only thing we really need
289  if (!fileEncryptionKey.isEmpty()) {
290  int idpos = m_page1->file_key->findText(fileEncryptionKey);
291  if (idpos == -1) {
292  idpos = fileEncryptionKey.indexOf(QRegExp( QLatin1String( "([0-9A-Fa-F]{8})+" )));
293  if (idpos >= 0) {
294  QString fileId = fileEncryptionKey.mid(idpos);
295  idpos = fileId.indexOf(QRegExp( QLatin1String( "[^a-fA-F0-9]" )));
296  if (idpos >= 0) {
297  fileId = fileId.left(idpos);
298  fileId.chop(fileId.length() % 8);
299  }
300 
301  KGpgKeyNode *anode = m_combomodel->getModel()->findKeyNode(fileId);
302 
303  if (anode != NULL)
304  idpos = m_combomodel->nodeIndex(anode).row();
305  }
306  }
307  m_page1->file_key->setCurrentIndex(idpos);
308  }
309 
310  if (!alwaysKeyID.isEmpty()) {
311  KGpgKeyNode *anode = m_combomodel->getModel()->findKeyNode(alwaysKeyID);
312  if (anode != NULL) {
313  const QModelIndex midx(m_combomodel->nodeIndex(anode));
314  m_page1->always_key->setCurrentIndex(midx.row());
315  }
316  }
317 
318  gpgConfigPath = KGpgSettings::gpgConfigPath();
319  m_page4->gpg_conf_path->setText(KUrl::fromPath(gpgConfigPath).fileName());
320  m_page4->gpg_home_path->setText(KUrl::fromPath(gpgConfigPath).directory(KUrl::AppendTrailingSlash));
321 
322  m_useagent = KgpgInterface::getGpgBoolSetting(QLatin1String( "use-agent" ), KGpgSettings::gpgConfigPath());
323  m_defaultuseagent = false;
324 
325  m_page4->use_agent->setChecked(m_useagent);
326 
327  m_emailSortingIndex = KGpgSettings::emailSorting();
328  m_page3->kcfg_EmailSorting->setCurrentIndex(m_emailSortingIndex);
329 
330  m_serverModel->setStringList(serverList);
331  if (!serverList.isEmpty())
332  m_serverModel->setDefault(keyServer);
333 
334  kDebug(2100) << "Finishing options";
335 }
336 
337 void kgpgOptions::updateWidgetsDefault()
338 {
339  m_page7->EmailTemplateEdit->setPlainText(m_emailTemplate);
340 
341  m_page1->encrypt_to_always->setChecked(m_defaultencrypttoalways);
342  m_page4->use_agent->setChecked(m_defaultuseagent);
343 
344  m_page4->gpg_conf_path->setText(defaultConfigPath);
345  m_page4->gpg_home_path->setText(defaultHomePath);
346 
347  m_serverModel->setStringList(defaultServerList);
348  m_serverModel->setDefault(0);
349 
350  m_page3->kcfg_EmailSorting->setCurrentIndex(KGpgSettings::EnumEmailSorting::Alphabetical);
351 
352  kDebug(2100) << "Finishing default options" ;
353 }
354 
355 void kgpgOptions::updateSettings()
356 {
357  // Update config path first!
358  const QString newConfigFile = m_page4->gpg_home_path->text() + m_page4->gpg_conf_path->text();
359  if (newConfigFile != gpgConfigPath) {
360  KGpgSettings::setGpgConfigPath(newConfigFile);
361  emit homeChanged();
362 
363  gpgConfigPath = newConfigFile;
364  }
365 
366  // save selected keys for file encryption & always encrypt with
367  if (m_page1->kcfg_EncryptFilesTo->isChecked())
368  fileEncryptionKey = m_page1->file_key->itemData(m_page1->file_key->currentIndex(), Qt::ToolTipRole).toString();
369  else
370  fileEncryptionKey.clear();
371 
372  if (fileEncryptionKey != KGpgSettings::fileEncryptionKey())
373  KGpgSettings::setFileEncryptionKey(fileEncryptionKey);
374 
375  m_encrypttoalways = m_page1->encrypt_to_always->isChecked();
376 
377  if (m_encrypttoalways)
378  alwaysKeyID = m_page1->always_key->itemData(m_page1->always_key->currentIndex(), Qt::ToolTipRole).toString();
379  else
380  alwaysKeyID.clear();
381 
382  KgpgInterface::setGpgSetting(QLatin1String( "encrypt-to" ), alwaysKeyID, KGpgSettings::gpgConfigPath());
383 
384  emit changeFont(m_fontchooser->font());
385 
386  // install service menus
387  if (m_page7->kcfg_SignMenu->currentIndex() == KGpgSettings::EnumSignMenu::AllFiles)
388  slotInstallSign(QLatin1String( "application/octet-stream" ));
389  else
390  slotRemoveMenu(QLatin1String( "signfile.desktop" ));
391 
392  if (m_page7->kcfg_DecryptMenu->currentIndex() == KGpgSettings::EnumDecryptMenu::AllFiles)
393  slotInstallDecrypt(QLatin1String( "application/octet-stream" ));
394  else
395  if (m_page7->kcfg_DecryptMenu->currentIndex() == KGpgSettings::EnumDecryptMenu::EncryptedFiles)
396  slotInstallDecrypt(QLatin1String( "application/pgp-encrypted,application/pgp-signature,application/pgp-keys" ));
397  else
398  slotRemoveMenu(QLatin1String( "decryptfile.desktop" ));
399 
400  m_useagent = m_page4->use_agent->isChecked();
401 
402  if (m_useagent) {
403  KgpgInterface::setGpgBoolSetting(QLatin1String( "use-agent" ), true, KGpgSettings::gpgConfigPath());
404  KgpgInterface::setGpgBoolSetting(QLatin1String( "no-use-agent" ), false, KGpgSettings::gpgConfigPath());
405  } else {
406  KgpgInterface::setGpgBoolSetting(QLatin1String( "use-agent" ), false, KGpgSettings::gpgConfigPath());
407  }
408 
409  // Store the default server in ~/.gnupg
410  KgpgInterface::setGpgSetting(QLatin1String("keyserver"), m_serverModel->defaultServer(), KGpgSettings::gpgConfigPath());
411 
412  // Store additional servers in kgpgrc.
413  serverList = m_serverModel->stringList();
414  int defaultRow = m_serverModel->defaultRow();
415  if (!serverList.isEmpty())
416  serverList.move(defaultRow, 0);
417 
418  KGpgSettings::setKeyServers(serverList);
419 
420  if (keyUltimate != m_page3->kcfg_ColorUltimate->color())
421  emit refreshTrust(TRUST_ULTIMATE, m_page3->kcfg_ColorUltimate->color());
422 
423  if (keyGood != m_page3->kcfg_ColorGood->color())
424  emit refreshTrust(TRUST_FULL, m_page3->kcfg_ColorGood->color());
425 
426  if (keyExpired != m_page3->kcfg_ColorExpired->color())
427  emit refreshTrust(TRUST_EXPIRED, m_page3->kcfg_ColorExpired->color());
428 
429  if (keyMarginal != m_page3->kcfg_ColorMarginal->color())
430  emit refreshTrust(TRUST_MARGINAL, m_page3->kcfg_ColorMarginal->color());
431 
432  if (keyBad != m_page3->kcfg_ColorBad->color()) {
433  emit refreshTrust(TRUST_INVALID, m_page3->kcfg_ColorBad->color());
434  emit refreshTrust(TRUST_DISABLED, m_page3->kcfg_ColorBad->color());
435  }
436 
437  if (keyUnknown != m_page3->kcfg_ColorUnknown->color()) {
438  emit refreshTrust(TRUST_UNDEFINED, m_page3->kcfg_ColorUnknown->color());
439  emit refreshTrust(TRUST_NONE, m_page3->kcfg_ColorUnknown->color());
440  emit refreshTrust(TRUST_UNKNOWN, m_page3->kcfg_ColorUnknown->color());
441  }
442 
443  if (keyRev != m_page3->kcfg_ColorRev->color())
444  emit refreshTrust(TRUST_REVOKED, m_page3->kcfg_ColorRev->color());
445 
446  m_showsystray = m_page7->kcfg_ShowSystray->isChecked();
447  KGpgSettings::setShowSystray(m_showsystray);
448 
449  m_trayaction = m_page7->kcfg_LeftClick->currentIndex();
450  KGpgSettings::setLeftClick(m_trayaction);
451 
452  m_mailUats = m_page7->kcfg_MailUats->currentIndex();
453  KGpgSettings::setMailUats(m_mailUats);
454 
455  m_emailTemplate = m_page7->EmailTemplateEdit->toPlainText();
456  KGpgSettings::setEmailTemplate(m_emailTemplate);
457 
458  m_emailSortingIndex = m_page3->kcfg_EmailSorting->currentIndex();
459  KGpgSettings::setEmailSorting(m_emailSortingIndex);
460 
461  KGpgSettings::self()->writeConfig();
462  m_config->sync();
463 
464  emit settingsUpdated();
465 }
466 
467 void kgpgOptions::listKeys()
468 {
469  if (m_model->rowCount(QModelIndex()) == 0) {
470  ids += QLatin1String("0");
471  m_page1->file_key->addItem(i18nc("no key available", "none"));
472  m_page1->file_key->setModel(NULL);
473  m_page1->always_key->addItem(i18nc("no key available", "none"));
474  m_page1->always_key->setModel(NULL);
475  } else {
476  m_page1->file_key->setModel(m_combomodel);
477  m_page1->always_key->setModel(m_combomodel);
478  }
479 }
480 
481 void kgpgOptions::slotInstallDecrypt(const QString &mimetype)
482 {
483  const QString path(KStandardDirs::locateLocal("data", QLatin1String( "konqueror/servicemenus/decryptfile.desktop" )));
484  KDesktopFile configl2(path);
485  if (!configl2.isImmutable()) {
486  KConfigGroup gr(configl2.group("Desktop Entry"));
487 
488  gr.writeXdgListEntry("MimeType", QStringList(mimetype));
489  gr.writeEntry("X-KDE-ServiceTypes", "KonqPopupMenu/Plugin");
490  gr.writeEntry("Actions", "decrypt");
491 
492  gr = configl2.group("Desktop Action decrypt");
493  gr.writeEntry("Name", i18n("Decrypt File"));
494  //gr.writeEntry("Icon", "decrypt_file");
495  gr.writeEntry("Exec", "kgpg %U");
496  }
497 }
498 
499 void kgpgOptions::slotInstallSign(const QString &mimetype)
500 {
501  QString path(KStandardDirs::locateLocal("services", QLatin1String( "ServiceMenus/signfile.desktop" )));
502  KDesktopFile configl2(path);
503  if (!configl2.isImmutable()) {
504  KConfigGroup gr = configl2.group("Desktop Entry");
505  gr.writeXdgListEntry("MimeType", QStringList(mimetype));
506  gr.writeEntry("X-KDE-ServiceTypes", "KonqPopupMenu/Plugin");
507  gr.writeEntry("Actions", "sign");
508 
509  gr = configl2.group("Desktop Action sign");
510  gr.writeEntry("Name", i18n("Sign File"));
511  //gr.writeEntry("Icon", "sign_file");
512  gr.writeEntry("Exec","kgpg -S %F");
513  }
514 }
515 
516 void kgpgOptions::slotRemoveMenu(const QString &menu)
517 {
518  QString path = KStandardDirs::locateLocal("services", QLatin1String( "ServiceMenus/" ) + menu);
519  QFile qfile(path);
520  if (qfile.exists())
521  qfile.remove();
522 }
523 
524 bool kgpgOptions::hasChanged()
525 {
526  if (m_page1->kcfg_EncryptFilesTo->isChecked() && (m_page1->file_key->currentText() != fileEncryptionKey))
527  return true;
528 
529  if (m_page1->encrypt_to_always->isChecked() != m_encrypttoalways)
530  return true;
531 
532  if (m_page1->encrypt_to_always->isChecked() &&
533  (m_page1->always_key->itemData(m_page1->always_key->currentIndex(), Qt::ToolTipRole).toString()) != alwaysKeyID)
534  return true;
535 
536  if (m_page4->gpg_conf_path->text() != KUrl::fromPath(gpgConfigPath).fileName())
537  return true;
538 
539  if (m_page4->gpg_home_path->text() != KUrl::fromPath(gpgConfigPath).directory(KUrl::AppendTrailingSlash))
540  return true;
541 
542  if (m_page4->use_agent->isChecked() != m_useagent)
543  return true;
544 
545  // Did the default server change
546  if (m_serverModel->defaultServer() != keyServer)
547  return true;
548 
549  // Did the servers change?
550  if (m_serverModel->stringList() != serverList)
551  return true;
552 
553  if (m_page7->kcfg_ShowSystray->isChecked() != m_showsystray)
554  return true;
555 
556  if (m_page7->kcfg_LeftClick->currentIndex() != m_trayaction)
557  return true;
558 
559  if (m_page7->kcfg_MailUats->currentIndex() != m_mailUats)
560  return true;
561 
562  if (m_page3->kcfg_EmailSorting->currentIndex() != m_emailSortingIndex)
563  return true;
564 
565  return false;
566 }
567 
568 bool kgpgOptions::isDefault()
569 {
570  if (m_page1->encrypt_to_always->isChecked() != m_defaultencrypttoalways)
571  return false;
572 
573  if (m_page4->gpg_conf_path->text() != defaultConfigPath)
574  return false;
575 
576  if (m_page4->gpg_home_path->text() != defaultHomePath)
577  return false;
578 
579  if (m_page4->use_agent->isChecked() != m_defaultuseagent)
580  return false;
581 
582  if (m_serverModel->defaultServer() != defaultKeyServer)
583  return false;
584 
585  if (m_serverModel->stringList() != defaultServerList)
586  return false;
587 
588  if (m_page7->kcfg_ShowSystray->isChecked() != m_showsystray)
589  return false;
590 
591  if (m_page7->kcfg_LeftClick->currentIndex() != KGpgSettings::EnumLeftClick::KeyManager)
592  return false;
593 
594  if (m_page7->kcfg_MailUats->currentIndex() != KGpgSettings::EnumMailUats::All)
595  return false;
596 
597  if (m_page3->kcfg_EmailSorting->currentIndex() != KGpgSettings::EnumEmailSorting::Alphabetical)
598  return false;
599 
600  return true;
601 }
602 
603 void kgpgOptions::slotSystrayEnable()
604 {
605  m_page7->kcfg_LeftClick->setEnabled(m_page7->kcfg_ShowSystray->isChecked());
606 }
607 
608 #include "kgpgoptions.moc"
Encryption
Definition: conf_encryption.h:23
KGpgItemModel
Definition: kgpgitemmodel.h:44
KGpgSettings::leftClick
static int leftClick()
Get Choose default left-click behavior.
Definition: kgpgsettings.h:573
QModelIndex
QString::indexOf
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
KgpgCore::TRUST_MARGINAL
there is a minimal level of trust
Definition: kgpgkey.h:62
QWidget
QString::append
QString & append(QChar ch)
GpgServerModel::defaultServer
QString defaultServer() const
returns the URL of the default server
Definition: gpgservermodel.cpp:75
KProcess
KGpgSettings::mailUats
static int mailUats()
Get Mail_Uats.
Definition: kgpgsettings.h:972
KGpgSettings::colorExpired
static QColor colorExpired()
Get Color used for expired keys.
Definition: kgpgsettings.h:839
KGpgSettings::gpgConfigPath
static QString gpgConfigPath()
Get The path of the gpg configuration file.
Definition: kgpgsettings.h:288
QSortFilterProxyModel::sort
virtual void sort(int column, Qt::SortOrder order)
KGpgSettings::setEmailSorting
static void setEmailSorting(int v)
Set EmailSorting.
Definition: kgpgsettings.h:867
KgpgInterface::setGpgBoolSetting
void setGpgBoolSetting(const QString &name, const bool enable, const QString &url)
Definition: kgpginterface.cpp:107
kgpgOptions::~kgpgOptions
~kgpgOptions()
Definition: kgpgoptions.cpp:136
KGpgSettings::setShowSystray
static void setShowSystray(bool v)
Set Show the systray icon.
Definition: kgpgsettings.h:658
KGpgSettings::EnumMailUats::All
Definition: kgpgsettings.h:59
KGpgSettings::EnumEmailSorting::Alphabetical
Definition: kgpgsettings.h:54
kgpgOptions::isDefault
virtual bool isDefault()
Definition: kgpgoptions.cpp:568
KGpgSettings::colorUnknown
static QColor colorUnknown()
Get Color used for unknown keys.
Definition: kgpgsettings.h:763
KgpgInterface::getGpgBoolSetting
bool getGpgBoolSetting(const QString &name, const QString &configfile)
Definition: kgpginterface.cpp:93
KGpgSettings::showSystray
static bool showSystray()
Get Show the systray icon.
Definition: kgpgsettings.h:668
KeyListProxyModel::setEncryptionKeyFilter
void setEncryptionKeyFilter(bool b)
show only keys capable of encryption
Definition: keylistproxymodel.cpp:475
QStringList::contains
bool contains(const QString &str, Qt::CaseSensitivity cs) const
KGpgSettings::EnumDecryptMenu::AllFiles
Definition: kgpgsettings.h:49
KGpgSettings::EnumLeftClick::KeyManager
Definition: kgpgsettings.h:29
images.h
KGpgSettings::colorRev
static QColor colorRev()
Get Color used for revoked keys.
Definition: kgpgsettings.h:744
QFile::exists
bool exists() const
kgpgOptions::settingsUpdated
void settingsUpdated()
KGpgSettings::setKeyServers
static void setKeyServers(const QStringList &v)
Set Key servers used by KGpg.
Definition: kgpgsettings.h:886
QString::chop
void chop(int n)
KeyListProxyModel::setKeyModel
void setKeyModel(KGpgItemModel *)
Definition: keylistproxymodel.cpp:253
QFile
KgpgInterface::setGpgSetting
void setGpgSetting(const QString &name, const QString &value, const QString &url)
Definition: kgpginterface.cpp:58
QTextStream
KGpgKeyNode
A public key with or without corresponding secret key.
Definition: KGpgKeyNode.h:33
GpgServerModel
model holding the configured GnuPG key servers
Definition: gpgservermodel.h:27
QString::clear
void clear()
KGpgItemModel::rowCount
virtual int rowCount(const QModelIndex &parent=QModelIndex()) const
Definition: kgpgitemmodel.cpp:73
KGpgSettings::EnumDecryptMenu::EncryptedFiles
Definition: kgpgsettings.h:49
QRegExp
QModelIndex::isValid
bool isValid() const
QStringListModel::stringList
QStringList stringList() const
KGpgSettings::emailSorting
static int emailSorting()
Get EmailSorting.
Definition: kgpgsettings.h:877
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
KConfigDialog
KGpgItemModel::findKeyNode
KGpgKeyNode * findKeyNode(const QString &id) const
Definition: kgpgitemmodel.cpp:238
KeyListProxyModel::setTrustFilter
void setTrustFilter(const KgpgCore::KgpgKeyTrustFlag t)
set the minimum trust level to be shown
Definition: keylistproxymodel.cpp:466
QStringListModel::removeRows
virtual bool removeRows(int row, int count, const QModelIndex &parent)
kgpgOptions::refreshTrust
void refreshTrust(KgpgCore::KgpgKeyTrust, QColor)
KGpgSettings::gpgBinaryPath
static QString gpgBinaryPath()
Get The path of the gpg binary used by KGpg.
Definition: kgpgsettings.h:307
GpgServerModel::setDefault
void setDefault(const QString &server)
Definition: gpgservermodel.cpp:53
KgpgCore::TRUST_DISABLED
key is disabled by user (not owner)
Definition: kgpgkey.h:56
KGpgSettings::emailTemplate
static QString emailTemplate()
Get This is the text of the email sent by the "Sign and Mail User ID" action.
Definition: kgpgsettings.h:953
kgpgitemmodel.h
KGpgSettings::colorUltimate
static QColor colorUltimate()
Get Color used for ultimately trusted keys.
Definition: kgpgsettings.h:801
QList::isEmpty
bool isEmpty() const
KGpgSettings::fileEncryptionKey
static QString fileEncryptionKey()
Get File encryption key.
Definition: kgpgsettings.h:136
KGpgSettings::setEmailTemplate
static void setEmailTemplate(const QString &v)
Set This is the text of the email sent by the "Sign and Mail User ID" action.
Definition: kgpgsettings.h:943
kgpgOptions::kgpgOptions
kgpgOptions(QWidget *parent=0, KGpgItemModel *model=0)
Definition: kgpgoptions.cpp:43
QString::isEmpty
bool isEmpty() const
QModelIndex::row
int row() const
KgpgCore::Convert::toString
QString toString(const KgpgKeyAlgo algorithm)
Definition: convert.cpp:35
QVBoxLayout
QString::endsWith
bool endsWith(const QString &s, Qt::CaseSensitivity cs) const
kgpginterface.h
KGpgItemModel::index
virtual QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const
Definition: kgpgitemmodel.cpp:44
KGpgSettings::setFileEncryptionKey
static void setFileEncryptionKey(const QString &v)
Set File encryption key.
Definition: kgpgsettings.h:126
QStringList::replaceInStrings
QStringList & replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
QString
KgpgCore::TRUST_FULL
you can fully trust this key
Definition: kgpgkey.h:63
QStringList
KGpgSettings::setLeftClick
static void setLeftClick(int v)
Set Choose default left-click behavior.
Definition: kgpgsettings.h:563
KGpgSettings::setMailUats
static void setMailUats(int v)
Set Mail_Uats.
Definition: kgpgsettings.h:962
GpgServerModel::defaultRow
int defaultRow() const
returns the row of the current default keyserver
Definition: gpgservermodel.cpp:65
KGpgSettings::setGpgConfigPath
static void setGpgConfigPath(const QString &v)
Set The path of the gpg configuration file.
Definition: kgpgsettings.h:278
QString::contains
bool contains(QChar ch, Qt::CaseSensitivity cs) const
KgpgCore::TRUST_EXPIRED
key is beyond it's expiry date
Definition: kgpgkey.h:58
QLatin1Char
KgpgCore::TRUST_UNDEFINED
trust value undefined (i.e. you did not set a trust level)
Definition: kgpgkey.h:59
kgpgoptions.h
KgpgCore::TRUST_REVOKED
key is revoked by owner
Definition: kgpgkey.h:57
KGpgSettings::colorGood
static QColor colorGood()
Get Color used for trusted keys.
Definition: kgpgsettings.h:725
kgpgsettings.h
KeyListProxyModel
Definition: keylistproxymodel.h:30
QItemSelection
KGpgSettings::self
static KGpgSettings * self()
Definition: kgpgsettings.cpp:17
KGpgSettings
Definition: kgpgsettings.h:13
KGpgSettings::keyServers
static QStringList keyServers()
Get Key servers used by KGpg.
Definition: kgpgsettings.h:896
QString::mid
QString mid(int position, int n) const
KeyListProxyModel::getModel
KGpgItemModel * getModel() const
Definition: keylistproxymodel.cpp:533
QLatin1String
KGpgSettings::colorMarginal
static QColor colorMarginal()
Get Color used for marginally trusted keys.
Definition: kgpgsettings.h:820
KGpgSettings::EnumSignMenu::AllFiles
Definition: kgpgsettings.h:44
conf_encryption.h
QString::length
int length() const
QString::left
QString left(int n) const
kgpgOptions::changeFont
void changeFont(QFont)
kgpgOptions::homeChanged
void homeChanged()
QList::prepend
void prepend(const T &value)
KeyListProxyModel::nodeIndex
QModelIndex nodeIndex(KGpgNode *node)
Definition: keylistproxymodel.cpp:492
KgpgCore::TRUST_UNKNOWN
trust value unknown (i.e. no entry in gpg's trust database)
Definition: kgpgkey.h:60
kgpgOptions::hasChanged
virtual bool hasChanged()
Definition: kgpgoptions.cpp:524
KgpgCore::TRUST_ULTIMATE
this key has highest possible level of trust (e.g. your own secret keys)
Definition: kgpgkey.h:64
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
gpgservermodel.h
QObject::parent
QObject * parent() const
KgpgCore::Images::pair
QPixmap pair()
Definition: images.cpp:40
KgpgCore::TRUST_INVALID
key is invalid
Definition: kgpgkey.h:55
QStringListModel::setStringList
void setStringList(const QStringList &strings)
QBoxLayout::setSpacing
void setSpacing(int spacing)
KgpgCore::TRUST_NONE
there is no trusted path to this key
Definition: kgpgkey.h:61
KgpgInterface::getGpgSetting
QString getGpgSetting(const QString &name, const QString &configfile)
Definition: kgpginterface.cpp:38
KGpgSettings::colorBad
static QColor colorBad()
Get Color used for untrusted keys.
Definition: kgpgsettings.h:782
keylistproxymodel.h
KgpgCore::Images::single
QPixmap single()
Definition: images.cpp:32
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:42:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kgpg

Skip menu "kgpg"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeutils API Reference

Skip menu "kdeutils API Reference"
  • ark
  • filelight
  • kcalc
  • kcharselect
  • kdf
  • kfloppy
  • kgpg
  • ktimer
  • kwallet
  • sweeper

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