aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/UserInterfaceUtils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/UserInterfaceUtils.cpp')
-rw-r--r--src/ui/UserInterfaceUtils.cpp40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/ui/UserInterfaceUtils.cpp b/src/ui/UserInterfaceUtils.cpp
index f2659e9d..db28b312 100644
--- a/src/ui/UserInterfaceUtils.cpp
+++ b/src/ui/UserInterfaceUtils.cpp
@@ -213,6 +213,41 @@ void CommonUtils::SlotImportKeyFromClipboard(QWidget *parent) {
cb->text(QClipboard::Clipboard).toUtf8().toStdString());
}
+void CommonUtils::SlotExecuteCommand(
+ const std::string& cmd,
+ const QStringList &arguments,
+ const std::function<void(QProcess *)> &interact_func) {
+ QEventLoop looper;
+ auto *cmd_process = new QProcess(&looper);
+ cmd_process->setProcessChannelMode(QProcess::MergedChannels);
+
+ connect(cmd_process,
+ qOverload<int, QProcess::ExitStatus>(&QProcess::finished), &looper,
+ &QEventLoop::quit);
+ connect(cmd_process, &QProcess::errorOccurred, &looper, &QEventLoop::quit);
+ connect(cmd_process, &QProcess::started,
+ []() -> void { LOG(INFO) << "process started"; });
+ connect(cmd_process, &QProcess::readyReadStandardOutput,
+ [interact_func, cmd_process]() { interact_func(cmd_process); });
+ connect(cmd_process, &QProcess::errorOccurred, this, [=]() -> void {
+ LOG(ERROR) << "Error in Process";
+ });
+ connect(cmd_process,
+ qOverload<int, QProcess::ExitStatus>(&QProcess::finished), this,
+ [=](int, QProcess::ExitStatus status) {
+ if (status == QProcess::NormalExit)
+ LOG(INFO) << "succeed in executing command:" << cmd;
+ else
+ LOG(WARNING) << "error in executing command:" << cmd;
+ });
+
+ cmd_process->setProgram(QString::fromStdString(cmd));
+ cmd_process->setArguments(arguments);
+ cmd_process->start();
+ looper.exec();
+}
+
+
void CommonUtils::SlotExecuteGpgCommand(
const QStringList &arguments,
const std::function<void(QProcess *)> &interact_func) {
@@ -230,7 +265,7 @@ void CommonUtils::SlotExecuteGpgCommand(
&WaitingDialog::deleteLater);
connect(gpg_process, &QProcess::errorOccurred, &looper, &QEventLoop::quit);
connect(gpg_process, &QProcess::started,
- []() -> void { LOG(ERROR) << "Gpg Process Started Success"; });
+ []() -> void { LOG(INFO) << "gpg process started"; });
connect(gpg_process, &QProcess::readyReadStandardOutput,
[interact_func, gpg_process]() { interact_func(gpg_process); });
connect(gpg_process, &QProcess::errorOccurred, this, [=]() -> void {
@@ -251,7 +286,8 @@ void CommonUtils::SlotExecuteGpgCommand(
_("Finished executing command."));
});
- gpg_process->setProgram(GpgContext::GetInstance().GetInfo().AppPath.c_str());
+ gpg_process->setProgram(
+ GpgContext::GetInstance().GetInfo(false).AppPath.c_str());
gpg_process->setArguments(arguments);
gpg_process->start();
looper.exec();