summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Gabriel <frank.gabriel@kryptolyse.org>2018-09-28 13:47:05 +0200
committerFrank Gabriel <frank.gabriel@kryptolyse.org>2018-09-28 13:47:05 +0200
commit57c24f5a7cbcfc52ec3e56be7d04421669f457b8 (patch)
tree5098af965fff1d0a1c4969b4d554b15017da9bca
parentc6ae420c17725f0ecd3a91c48e59e8cb30561cc1 (diff)
Add qrencode to settings
-rw-r--r--src/configdialog.cpp30
-rw-r--r--src/configdialog.h2
-rw-r--r--src/configdialog.ui15
-rw-r--r--src/mainwindow.cpp16
-rw-r--r--src/qtpasssettings.cpp8
-rw-r--r--src/qtpasssettings.h3
-rw-r--r--src/settingsconstants.cpp1
-rw-r--r--src/settingsconstants.h1
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;