aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/UserInterfaceUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ui/UserInterfaceUtils.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/ui/UserInterfaceUtils.cpp b/src/ui/UserInterfaceUtils.cpp
index b84c1ad2..72ebe6f6 100644
--- a/src/ui/UserInterfaceUtils.cpp
+++ b/src/ui/UserInterfaceUtils.cpp
@@ -28,16 +28,19 @@
#include "UserInterfaceUtils.h"
+#include <string>
#include <utility>
#include <vector>
#include "core/common/CoreCommonUtil.h"
+#include "core/function/CoreSignalStation.h"
#include "core/function/FileOperator.h"
#include "core/function/GlobalSettingStation.h"
#include "core/function/gpg/GpgKeyGetter.h"
#include "core/thread/Task.h"
#include "core/thread/TaskRunner.h"
#include "core/thread/TaskRunnerGetter.h"
+#include "spdlog/spdlog.h"
#include "ui/SignalStation.h"
#include "ui/dialog/WaitingDialog.h"
#include "ui/struct/SettingsObject.h"
@@ -157,6 +160,9 @@ CommonUtils::CommonUtils() : QWidget(nullptr) {
connect(this, &CommonUtils::SignalKeyDatabaseRefreshDone,
SignalStation::GetInstance(),
&SignalStation::SignalKeyDatabaseRefreshDone);
+ connect(this, &CommonUtils::SignalUserInputPassphraseDone,
+ CoreSignalStation::GetInstance(),
+ &CoreSignalStation::SignalUserInputPassphraseDone);
// directly connect to SignalKeyStatusUpdated
// to avoid the delay of signal emitting
@@ -165,6 +171,10 @@ CommonUtils::CommonUtils() : QWidget(nullptr) {
&SignalStation::SignalKeyDatabaseRefresh, this,
&CommonUtils::slot_update_key_status);
+ connect(CoreSignalStation::GetInstance(),
+ &CoreSignalStation::SignalNeedUserInputPassphrase, this,
+ &CommonUtils::slot_popup_passphrase_input_dialog);
+
connect(this, &CommonUtils::SignalGnupgNotInstall, this, []() {
QMessageBox::critical(
nullptr, _("ENV Loading Failed"),
@@ -409,4 +419,23 @@ void CommonUtils::slot_update_key_status() {
refresh_task);
}
+void CommonUtils::slot_popup_passphrase_input_dialog() {
+ SPDLOG_INFO("called");
+
+ auto *dialog = new QInputDialog(QApplication::activeWindow(), Qt::Dialog);
+ dialog->setModal(true);
+ dialog->setWindowTitle(_("Password Input Dialog"));
+ dialog->setInputMode(QInputDialog::TextInput);
+ dialog->setTextEchoMode(QLineEdit::Password);
+ dialog->setLabelText("Please Input The Password");
+ dialog->resize(600, 80);
+ dialog->exec();
+
+ QString password = dialog->textValue();
+ dialog->deleteLater();
+
+ // send signal
+ emit SignalUserInputPassphraseDone(password);
+}
+
} // namespace GpgFrontend::UI \ No newline at end of file