diff options
author | Frank Gabriel <frank.gabriel@kryptolyse.org> | 2018-09-28 13:47:05 +0200 |
---|---|---|
committer | Frank Gabriel <frank.gabriel@kryptolyse.org> | 2018-09-28 13:47:05 +0200 |
commit | 57c24f5a7cbcfc52ec3e56be7d04421669f457b8 (patch) | |
tree | 5098af965fff1d0a1c4969b4d554b15017da9bca | |
parent | c6ae420c17725f0ecd3a91c48e59e8cb30561cc1 (diff) |
Add qrencode to settings
-rw-r--r-- | src/configdialog.cpp | 30 | ||||
-rw-r--r-- | src/configdialog.h | 2 | ||||
-rw-r--r-- | src/configdialog.ui | 15 | ||||
-rw-r--r-- | src/mainwindow.cpp | 16 | ||||
-rw-r--r-- | src/qtpasssettings.cpp | 8 | ||||
-rw-r--r-- | src/qtpasssettings.h | 3 | ||||
-rw-r--r-- | src/settingsconstants.cpp | 1 | ||||
-rw-r--r-- | src/settingsconstants.h | 1 |
8 files changed, 67 insertions, 9 deletions
diff --git a/src/configdialog.cpp b/src/configdialog.cpp index ae07ad2c..459dcaa4 100644 --- a/src/configdialog.cpp +++ b/src/configdialog.cpp @@ -62,6 +62,7 @@ ConfigDialog::ConfigDialog(MainWindow *parent) #if defined(Q_OS_WIN) || defined(__APPLE__) ui->checkBoxUseOtp->hide(); + ui->checkBoxUseQrencode->hide(); ui->label_10->hide(); #endif @@ -71,6 +72,12 @@ ConfigDialog::ConfigDialog(MainWindow *parent) tr("Pass OTP extension needs to be installed")); } + if (!isQrencodeAvailable()) { + ui->checkBoxUseQrencode->setEnabled(false); + ui->checkBoxUseQrencode->setToolTip( + tr("qrencode needs to be installed")); + } + setProfiles(QtPassSettings::getProfiles(), QtPassSettings::getProfile()); setPwgenPath(QtPassSettings::getPwgenExecutable()); setPasswordConfiguration(QtPassSettings::getPasswordConfiguration()); @@ -82,6 +89,7 @@ ConfigDialog::ConfigDialog(MainWindow *parent) useGit(QtPassSettings::isUseGit()); useOtp(QtPassSettings::isUseOtp()); + useQrencode(QtPassSettings::isUseQrencode()); usePwgen(QtPassSettings::isUsePwgen()); useTemplate(QtPassSettings::isUseTemplate()); @@ -200,6 +208,7 @@ void ConfigDialog::on_accepted() { QtPassSettings::setProfiles(getProfiles()); QtPassSettings::setUseGit(ui->checkBoxUseGit->isChecked()); QtPassSettings::setUseOtp(ui->checkBoxUseOtp->isChecked()); + QtPassSettings::setUseQrencode(ui->checkBoxUseQrencode->isChecked()); QtPassSettings::setPwgenExecutable(ui->pwgenPath->text()); QtPassSettings::setUsePwgen(ui->checkBoxUsePwgen->isChecked()); QtPassSettings::setAvoidCapitals(ui->checkBoxAvoidCapitals->isChecked()); @@ -516,6 +525,19 @@ void ConfigDialog::criticalMessage(const QString &title, const QString &text) { QMessageBox::critical(this, title, text, QMessageBox::Ok, QMessageBox::Ok); } +bool ConfigDialog::isQrencodeAvailable() { +#ifdef Q_OS_WIN + return false; +#elif defined(__APPLE__) + return false; +#else + QProcess which; + which.start("which", QStringList() << "qrencode"); + which.waitForFinished(); + return which.exitCode() == 0; +#endif +} + bool ConfigDialog::isPassOtpAvailable() { #ifdef Q_OS_WIN return false; @@ -664,6 +686,14 @@ void ConfigDialog::useOtp(bool useOtp) { } /** + * @brief ConfigDialog::useOtp set preference for using otp plugin. + * @param useOtp + */ +void ConfigDialog::useQrencode(bool useQrencode) { + ui->checkBoxUseQrencode->setChecked(useQrencode); +} + +/** * @brief ConfigDialog::on_checkBoxUseGit_clicked enable or disable related * checkboxes. */ diff --git a/src/configdialog.h b/src/configdialog.h index 46e36272..06fa78e9 100644 --- a/src/configdialog.h +++ b/src/configdialog.h @@ -37,6 +37,7 @@ public: void useTrayIcon(bool useTrayIdon); void useGit(bool useGit); void useOtp(bool useOtp); + void useQrencode(bool useQrencode); void setPwgenPath(QString); void usePwgen(bool usePwgen); void setPasswordConfiguration(const PasswordConfiguration &config); @@ -85,6 +86,7 @@ private: void criticalMessage(const QString &title, const QString &text); bool isPassOtpAvailable(); + bool isQrencodeAvailable(); void validate(QTableWidgetItem *item = nullptr); MainWindow *mainWindow; diff --git a/src/configdialog.ui b/src/configdialog.ui index 80ae5da6..a86bd58a 100644 --- a/src/configdialog.ui +++ b/src/configdialog.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>618</width> - <height>609</height> + <width>659</width> + <height>650</height> </rect> </property> <property name="sizePolicy"> @@ -518,6 +518,17 @@ </widget> </item> <item> + <layout class="QHBoxLayout" name="horizontalLayout_16"> + <item> + <widget class="QCheckBox" name="checkBoxUseQrencode"> + <property name="text"> + <string>Use qrencode</string> + </property> + </widget> + </item> + </layout> + </item> + <item> <layout class="QHBoxLayout" name="horizontalLayout_14"> <item> <widget class="QCheckBox" name="checkBoxUseOtp"> diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index bf905a44..74b8e4cd 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1027,13 +1027,15 @@ void MainWindow::addToGridLayout(int position, const QString &field, frame->layout()->addWidget(fieldLabel); } - QPushButtonAsQRCode *qrbutton = - new QPushButtonAsQRCode(trimmedValue, this); - connect(qrbutton, &QPushButtonAsQRCode::clicked, m_qtPass, - &QtPass::showTextAsQRCode); - qrbutton->setStyleSheet("border-style: none ; background: transparent;"); - - frame->layout()->addWidget(qrbutton); + if (QtPassSettings::isUseQrencode()) { + QPushButtonAsQRCode *qrbutton = + new QPushButtonAsQRCode(trimmedValue, this); + connect(qrbutton, &QPushButtonAsQRCode::clicked, m_qtPass, + &QtPass::showTextAsQRCode); + qrbutton->setStyleSheet("border-style: none ; background: transparent;"); + + frame->layout()->addWidget(qrbutton); + } // set the echo mode to password, if the field is "password" if (QtPassSettings::isHidePassword() && trimmedField == tr("Password")) { diff --git a/src/qtpasssettings.cpp b/src/qtpasssettings.cpp index fadb37fc..26ca28cd 100644 --- a/src/qtpasssettings.cpp +++ b/src/qtpasssettings.cpp @@ -392,6 +392,14 @@ void QtPassSettings::setUseOtp(const bool &useOtp) { getInstance()->setValue(SettingsConstants::useOtp, useOtp); } +bool QtPassSettings::isUseQrencode(const bool &defaultValue) { + return getInstance()->value(SettingsConstants::useQrencode, defaultValue).toBool(); +} + +void QtPassSettings::setUseQrencode(const bool &useQrencode) { + getInstance()->setValue(SettingsConstants::useQrencode, useQrencode); +} + bool QtPassSettings::isUsePwgen(const bool &defaultValue) { return getInstance() ->value(SettingsConstants::usePwgen, defaultValue) diff --git a/src/qtpasssettings.h b/src/qtpasssettings.h index aad36da6..3e5ce83d 100644 --- a/src/qtpasssettings.h +++ b/src/qtpasssettings.h @@ -144,6 +144,9 @@ public: static bool isUseOtp(const bool &defaultValue = QVariant().toBool()); static void setUseOtp(const bool &useOtp); + static bool isUseQrencode(const bool &defaultValue = QVariant().toBool()); + static void setUseQrencode(const bool &useQrencode); + static bool isUsePwgen(const bool &defaultValue = QVariant().toBool()); static void setUsePwgen(const bool &usePwgen); diff --git a/src/settingsconstants.cpp b/src/settingsconstants.cpp index 066931f3..75d5c4c8 100644 --- a/src/settingsconstants.cpp +++ b/src/settingsconstants.cpp @@ -44,6 +44,7 @@ const QString SettingsConstants::profile = "profile"; const QString SettingsConstants::groupProfiles = "profiles"; const QString SettingsConstants::useGit = "useGit"; const QString SettingsConstants::useOtp = "useOtp"; +const QString SettingsConstants::useQrencode = "useQrencode"; const QString SettingsConstants::useClipboard = "useClipboard"; const QString SettingsConstants::usePwgen = "usePwgen"; const QString SettingsConstants::avoidCapitals = "avoidCapitals"; diff --git a/src/settingsconstants.h b/src/settingsconstants.h index 1b719c8e..33ff6e5e 100644 --- a/src/settingsconstants.h +++ b/src/settingsconstants.h @@ -41,6 +41,7 @@ public: const static QString groupProfiles; const static QString useGit; const static QString useOtp; + const static QString useQrencode; const static QString useClipboard; const static QString usePwgen; const static QString avoidCapitals; |