From a22e8a1f4001970e1cb23e7fc57c196ba7faaf7a Mon Sep 17 00:00:00 2001 From: Jeff Date: Fri, 21 Jun 2019 19:42:27 -0500 Subject: [PATCH] Add MinimizeOnUrlOpen feature --- share/keepassxc.ini | 1 + src/core/Config.cpp | 1 + src/gui/ApplicationSettingsWidget.cpp | 2 ++ src/gui/ApplicationSettingsWidgetGeneral.ui | 7 ++++++ src/gui/DatabaseWidget.cpp | 25 ++++++++++++--------- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/share/keepassxc.ini b/share/keepassxc.ini index b91fefb4..69f921f4 100644 --- a/share/keepassxc.ini +++ b/share/keepassxc.ini @@ -6,6 +6,7 @@ AutoSaveAfterEveryChange=false AutoSaveOnExit=false AutoReloadOnChange=true MinimizeOnCopy=false +MinimizeOnOpenUrl=false UseGroupIconOnEntryCreation=true IgnoreGroupExpansion=false AutoTypeEntryTitleMatch=true diff --git a/src/core/Config.cpp b/src/core/Config.cpp index 86ed04e3..c9009236 100644 --- a/src/core/Config.cpp +++ b/src/core/Config.cpp @@ -178,6 +178,7 @@ void Config::init(const QString& fileName) m_defaults.insert("UseAtomicSaves", true); m_defaults.insert("SearchLimitGroup", false); m_defaults.insert("MinimizeOnCopy", false); + m_defaults.insert("MinimizeOnOpenUrl", false); m_defaults.insert("UseGroupIconOnEntryCreation", false); m_defaults.insert("AutoTypeEntryTitleMatch", true); m_defaults.insert("AutoTypeEntryURLMatch", true); diff --git a/src/gui/ApplicationSettingsWidget.cpp b/src/gui/ApplicationSettingsWidget.cpp index fce35223..30b0dd53 100644 --- a/src/gui/ApplicationSettingsWidget.cpp +++ b/src/gui/ApplicationSettingsWidget.cpp @@ -148,6 +148,7 @@ void ApplicationSettingsWidget::loadSettings() m_generalUi->useAtomicSavesCheckBox->setChecked(config()->get("UseAtomicSaves").toBool()); m_generalUi->autoReloadOnChangeCheckBox->setChecked(config()->get("AutoReloadOnChange").toBool()); m_generalUi->minimizeOnCopyCheckBox->setChecked(config()->get("MinimizeOnCopy").toBool()); + m_generalUi->minimizeOnOpenUrlCheckBox->setChecked(config()->get("MinimizeOnOpenUrl").toBool()); m_generalUi->useGroupIconOnEntryCreationCheckBox->setChecked(config()->get("UseGroupIconOnEntryCreation").toBool()); m_generalUi->autoTypeEntryTitleMatchCheckBox->setChecked(config()->get("AutoTypeEntryTitleMatch").toBool()); m_generalUi->autoTypeEntryURLMatchCheckBox->setChecked(config()->get("AutoTypeEntryURLMatch").toBool()); @@ -247,6 +248,7 @@ void ApplicationSettingsWidget::saveSettings() config()->set("UseAtomicSaves", m_generalUi->useAtomicSavesCheckBox->isChecked()); config()->set("AutoReloadOnChange", m_generalUi->autoReloadOnChangeCheckBox->isChecked()); config()->set("MinimizeOnCopy", m_generalUi->minimizeOnCopyCheckBox->isChecked()); + config()->set("MinimizeOnOpenUrl", m_generalUi->minimizeOnOpenUrlCheckBox->isChecked()); config()->set("UseGroupIconOnEntryCreation", m_generalUi->useGroupIconOnEntryCreationCheckBox->isChecked()); config()->set("IgnoreGroupExpansion", m_generalUi->ignoreGroupExpansionCheckBox->isChecked()); config()->set("AutoTypeEntryTitleMatch", m_generalUi->autoTypeEntryTitleMatchCheckBox->isChecked()); diff --git a/src/gui/ApplicationSettingsWidgetGeneral.ui b/src/gui/ApplicationSettingsWidgetGeneral.ui index 784b8c7c..ccdbee88 100644 --- a/src/gui/ApplicationSettingsWidgetGeneral.ui +++ b/src/gui/ApplicationSettingsWidgetGeneral.ui @@ -255,6 +255,13 @@ + + + + Minimize when opening a URL + + + diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index d4688caa..d73b2a0f 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -656,15 +656,10 @@ void DatabaseWidget::openUrlForEntry(Entry* entry) QString cmdString = entry->resolveMultiplePlaceholders(entry->url()); if (cmdString.startsWith("cmd://")) { // check if decision to execute command was stored - if (entry->attributes()->hasKey(EntryAttributes::RememberCmdExecAttr)) { - if (entry->attributes()->value(EntryAttributes::RememberCmdExecAttr) == "1") { - QProcess::startDetached(cmdString.mid(6)); - } - return; - } + bool launch = (entry->attributes()->value(EntryAttributes::RememberCmdExecAttr) == "1"); // otherwise ask user - if (cmdString.length() > 6) { + if (!launch && cmdString.length() > 6) { QString cmdTruncated = cmdString.mid(6); if (cmdTruncated.length() > 400) { cmdTruncated = cmdTruncated.left(400) + " […]"; @@ -687,18 +682,28 @@ void DatabaseWidget::openUrlForEntry(Entry* entry) }); int result = msgbox.exec(); - if (result == QMessageBox::Yes) { - QProcess::startDetached(cmdString.mid(6)); - } + launch = (result == QMessageBox::Yes); if (remember) { entry->attributes()->set(EntryAttributes::RememberCmdExecAttr, result == QMessageBox::Yes ? "1" : "0"); } } + + if (launch) { + QProcess::startDetached(cmdString.mid(6)); + + if (config()->get("MinimizeOnOpenUrl").toBool()) { + window()->showMinimized(); + } + } } else { QUrl url = QUrl::fromUserInput(entry->resolveMultiplePlaceholders(entry->url())); if (!url.isEmpty()) { QDesktopServices::openUrl(url); + + if (config()->get("MinimizeOnOpenUrl").toBool()) { + window()->showMinimized(); + } } } }