diff options
author | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2012-06-02 13:50:04 +0000 |
---|---|---|
committer | nils <nils@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2012-06-02 13:50:04 +0000 |
commit | ed8fb7fab377f277811368229b5d056e7edd860a (patch) | |
tree | 8562ac8287298cbcf0241d410efe70003450edf8 | |
parent | fix creation of windows registry key on import from GnuPG, if gnupg key doesn... (diff) | |
download | gpg4usb-ed8fb7fab377f277811368229b5d056e7edd860a.tar.gz gpg4usb-ed8fb7fab377f277811368229b5d056e7edd860a.zip |
automatically restart gpg4usb after changing keydb path (and add note that restart is done)
git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@914 34ebc366-c3a9-4b3c-9f84-69acf7962910
-rw-r--r-- | gpgcontext.cpp | 21 | ||||
-rw-r--r-- | mainwindow.cpp | 5 | ||||
-rwxr-xr-x | settingsdialog.cpp | 80 | ||||
-rwxr-xr-x | settingsdialog.h | 23 |
4 files changed, 125 insertions, 4 deletions
diff --git a/gpgcontext.cpp b/gpgcontext.cpp index 5884c14..7d0fbf2 100644 --- a/gpgcontext.cpp +++ b/gpgcontext.cpp @@ -71,7 +71,18 @@ GpgContext::GpgContext() #else QString gpgBin = appPath + "/bin/gpg"; #endif - QString gpgKeys = appPath + "/keydb"; + + QSettings settings; + QString accKeydbPath = settings.value("gpgpaths/keydbpath").toString(); + QString gpgKeys = appPath + "/keydb/"+accKeydbPath; + + if (accKeydbPath != "") { + if (!QDir(gpgKeys).exists()) { + QMessageBox::critical(0,tr("keydb path"),tr("Didn't find keydb directory. Switching to gpg4usb's default keydb directory for this session.")); + gpgKeys = appPath + "/keydb"; + } + } + /* err = gpgme_ctx_set_engine_info(mCtx, GPGME_PROTOCOL_OpenPGP, gpgBin.toUtf8().constData(), gpgKeys.toUtf8().constData());*/ @@ -81,6 +92,14 @@ GpgContext::GpgContext() gpgKeys.toLocal8Bit().constData()); checkErr(err); #endif + gpgme_engine_info_t engineInfo; + engineInfo = gpgme_ctx_get_engine_info(mCtx); + + + while (engineInfo !=NULL ) { + qDebug() << gpgme_get_protocol_name(engineInfo->protocol); + engineInfo=engineInfo->next; + } /** Setting the output type must be done at the beginning */ /** think this means ascii-armor --> ? */ diff --git a/mainwindow.cpp b/mainwindow.cpp index 522fe46..2064b48 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -918,6 +918,7 @@ void MainWindow::openSettingsDialog() { QString preLang = settings.value("int/lang").toString(); + QString preKeydbPath = settings.value("gpgpaths/keydbpath").toString(); new SettingsDialog(this); // Iconsize @@ -939,8 +940,8 @@ void MainWindow::openSettingsDialog() closeAttachmentDock(); } - // restart mainwindow if langugage changed - if(preLang != settings.value("int/lang").toString()) { + // restart mainwindow if langugage or keydbpath changed + if((preLang != settings.value("int/lang").toString()) || preKeydbPath != settings.value("gpgpaths/keydbpath").toString()) { if(edit->maybeSaveAnyTab()) { saveSettings(); qApp->exit(RESTART_CODE); diff --git a/settingsdialog.cpp b/settingsdialog.cpp index ffdb5b5..d4cd9cf 100755 --- a/settingsdialog.cpp +++ b/settingsdialog.cpp @@ -30,11 +30,13 @@ SettingsDialog::SettingsDialog(QWidget *parent) mimeTab = new MimeTab; keyserverTab = new KeyserverTab; advancedTab = new AdvancedTab; + gpgPathsTab = new GpgPathsTab; tabWidget->addTab(generalTab, tr("General")); tabWidget->addTab(appearanceTab, tr("Appearance")); tabWidget->addTab(mimeTab, tr("PGP/Mime")); tabWidget->addTab(keyserverTab, tr("Keyserver")); + tabWidget->addTab(gpgPathsTab, tr("Gpg paths")); tabWidget->addTab(advancedTab, tr("Advanced")); buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok @@ -60,6 +62,7 @@ void SettingsDialog::accept() appearanceTab->applySettings(); keyserverTab->applySettings(); advancedTab->applySettings(); + gpgPathsTab->applySettings(); close(); } @@ -139,6 +142,7 @@ GeneralTab::GeneralTab(QWidget *parent) } langBoxLayout->addWidget(langSelectBox); + langBoxLayout->addWidget(new QLabel(tr("<b>NOTE: </b> Gpg4usb will restart automatically if you change the language!"))); langBox->setLayout(langBoxLayout); QVBoxLayout *mainLayout = new QVBoxLayout; @@ -472,3 +476,79 @@ void AdvancedTab::applySettings() QSettings settings; settings.setValue("advanced/steganography", steganoCheckBox->isChecked()); } + +GpgPathsTab::GpgPathsTab(QWidget *parent) + : QWidget(parent) +{ + setSettings(); + + /***************************************** + * Keydb Box + *****************************************/ + QGroupBox *keydbBox = new QGroupBox(tr("Relative path to keydb")); + QGridLayout *keydbBoxLayout = new QGridLayout(); + + // Label containing the current keydbpath relative to default keydb path + keydbLabel = new QLabel(accKeydbPath,this); + + QPushButton *keydbButton = new QPushButton("Choose keydb path",this); + connect(keydbButton, SIGNAL(clicked()), this, SLOT(chooseKeydbDir())); + QPushButton *keydbDefaultButton = new QPushButton("Set keydb to default path",this); + connect(keydbDefaultButton, SIGNAL(clicked()), this, SLOT(setKeydbPathToDefault())); + + keydbBox->setLayout(keydbBoxLayout); + keydbBoxLayout->addWidget(keydbLabel,1,1); + keydbBoxLayout->addWidget(keydbButton,1,2); + keydbBoxLayout->addWidget(keydbDefaultButton,2,2); + keydbBoxLayout->addWidget(new QLabel(tr("<b>NOTE: </b> Gpg4usb will restart automatically if you change the keydb path!")),3,1); + + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(keydbBox); + mainLayout->addStretch(1); + setLayout(mainLayout); +} + +QString GpgPathsTab::getRelativePath(const QString dir1,const QString dir2) +{ + QDir dir(dir1); + QString s; + + s = dir.relativeFilePath(dir2); + qDebug() << "relative path: " << s; + if (s.isEmpty()) { + s = "."; + } + return s; +} + +void GpgPathsTab::setKeydbPathToDefault() +{ + accKeydbPath = "."; + keydbLabel->setText("."); +} + +QString GpgPathsTab::chooseKeydbDir() +{ + QString dir = QFileDialog::getExistingDirectory(this,tr ("Choose keydb directory"),accKeydbPath,QFileDialog::ShowDirsOnly); + + accKeydbPath = getRelativePath(defKeydbPath, dir); + keydbLabel->setText(accKeydbPath); + return ""; +} + +void GpgPathsTab::setSettings() +{ + defKeydbPath = qApp->applicationDirPath() + "/keydb"; + + QSettings settings; + accKeydbPath = settings.value("gpgpaths/keydbpath").toString(); + if (accKeydbPath.isEmpty()) { + accKeydbPath = "."; + } +} + +void GpgPathsTab::applySettings() +{ + QSettings settings; + settings.setValue("gpgpaths/keydbpath",accKeydbPath); +} diff --git a/settingsdialog.h b/settingsdialog.h index 4fb668e..1f257a6 100755 --- a/settingsdialog.h +++ b/settingsdialog.h @@ -130,7 +130,27 @@ private slots: }; -class SettingsDialog : public QDialog + class GpgPathsTab : public QWidget + { + Q_OBJECT + public: + GpgPathsTab(QWidget *parent = 0); + void applySettings(); + +private: + QString getRelativePath(const QString dir1,const QString dir2); + QString defKeydbPath; /** The default keydb path used by gpg4usb */ + QString accKeydbPath; /** The currently used keydb path */ + QLabel *keydbLabel; + void setSettings(); + + private slots: + QString chooseKeydbDir(); + void setKeydbPathToDefault(); + + }; + + class SettingsDialog : public QDialog { Q_OBJECT @@ -141,6 +161,7 @@ public: AppearanceTab *appearanceTab; KeyserverTab *keyserverTab; AdvancedTab *advancedTab; + GpgPathsTab *gpgPathsTab; static QHash<QString, QString> listLanguages(); |