aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gpgfrontend.qrc1
-rw-r--r--resource/lfs/icons/workspace.pngbin0 -> 3721 bytes
-rw-r--r--src/core/function/gpg/GpgBasicOperator.cpp2
-rw-r--r--src/core/function/gpg/GpgKeyImportExporter.cpp2
-rw-r--r--src/core/function/gpg/GpgKeyManager.cpp2
-rw-r--r--src/core/function/gpg/GpgUIDOperator.cpp2
-rw-r--r--src/core/model/GpgKey.cpp8
-rw-r--r--src/core/utils/IOUtils.cpp1
-rw-r--r--src/test/core/GpgCoreTestBasicOpera.cpp1
-rw-r--r--src/ui/dialog/KeyGroupManageDialog.cpp3
-rw-r--r--src/ui/dialog/SignersPicker.cpp1
-rw-r--r--src/ui/dialog/controller/GnuPGControllerDialog.cpp1
-rw-r--r--src/ui/dialog/controller/SmartCardControllerDialog.cpp21
-rw-r--r--src/ui/dialog/details/VerifyDetailsDialog.cpp1
-rw-r--r--src/ui/dialog/import_export/KeyServerImportDialog.cpp1
-rw-r--r--src/ui/dialog/key_generate/KeyGenerateDialog.cpp1
-rw-r--r--src/ui/dialog/keypair_details/KeyDetailsDialog.cpp1
-rw-r--r--src/ui/dialog/keypair_details/KeyPairDetailTab.cpp43
-rw-r--r--src/ui/dialog/keypair_details/KeyPairDetailTab.h1
-rw-r--r--src/ui/dialog/keypair_details/KeyPairUIDTab.h3
-rw-r--r--src/ui/dialog/settings/SettingsDialog.cpp1
-rw-r--r--src/ui/dialog/settings/SettingsGeneral.cpp1
-rw-r--r--src/ui/function/GpgOperaHelper.cpp1
-rw-r--r--src/ui/main_window/MainWindow.cpp45
-rw-r--r--src/ui/main_window/MainWindow.h16
-rw-r--r--src/ui/main_window/MainWindowSlotUI.cpp7
-rw-r--r--src/ui/main_window/MainWindowUI.cpp39
-rw-r--r--src/ui/widgets/FilePage.cpp1
-rw-r--r--src/ui/widgets/FileTreeView.cpp53
-rw-r--r--src/ui/widgets/InfoBoardWidget.cpp1
-rw-r--r--src/ui/widgets/TextEdit.cpp57
-rw-r--r--src/ui/widgets/TextEdit.h22
-rw-r--r--src/ui/widgets/TextEditTabWidget.cpp32
-rw-r--r--src/ui/widgets/TextEditTabWidget.h14
-rw-r--r--ui/KeyGroupManageDialog.ui6
-rw-r--r--ui/SmartCardControllerDialog.ui17
36 files changed, 257 insertions, 152 deletions
diff --git a/gpgfrontend.qrc b/gpgfrontend.qrc
index 67656e39..a98b8912 100644
--- a/gpgfrontend.qrc
+++ b/gpgfrontend.qrc
@@ -113,6 +113,7 @@
<file alias="decr-verify.png">resource/lfs/icons/decr-verify.png</file>
<file alias="smart-card.png">resource/lfs/icons/smart-card.png</file>
<file alias="key-group.png">resource/lfs/icons/key-group.png</file>
+ <file alias="workspace.png">resource/lfs/icons/workspace.png</file>
</qresource>
<qresource prefix="/test/key">
<file alias="pv1.key">resource/lfs/test/data/pv1.key</file>
diff --git a/resource/lfs/icons/workspace.png b/resource/lfs/icons/workspace.png
new file mode 100644
index 00000000..7e0d8344
--- /dev/null
+++ b/resource/lfs/icons/workspace.png
Binary files differ
diff --git a/src/core/function/gpg/GpgBasicOperator.cpp b/src/core/function/gpg/GpgBasicOperator.cpp
index 43917db3..2f624b60 100644
--- a/src/core/function/gpg/GpgBasicOperator.cpp
+++ b/src/core/function/gpg/GpgBasicOperator.cpp
@@ -30,7 +30,7 @@
#include <gpg-error.h>
-#include "core/GpgModel.h"
+#include "core/model/GpgData.h"
#include "core/model/GpgDecryptResult.h"
#include "core/model/GpgEncryptResult.h"
#include "core/model/GpgSignResult.h"
diff --git a/src/core/function/gpg/GpgKeyImportExporter.cpp b/src/core/function/gpg/GpgKeyImportExporter.cpp
index 08e67748..f42c84ce 100644
--- a/src/core/function/gpg/GpgKeyImportExporter.cpp
+++ b/src/core/function/gpg/GpgKeyImportExporter.cpp
@@ -28,7 +28,7 @@
#include "GpgKeyImportExporter.h"
-#include "core/GpgModel.h"
+#include "core/model/GpgData.h"
#include "core/model/GpgImportInformation.h"
#include "core/utils/AsyncUtils.h"
#include "core/utils/GpgUtils.h"
diff --git a/src/core/function/gpg/GpgKeyManager.cpp b/src/core/function/gpg/GpgKeyManager.cpp
index a2c53975..9f43d03d 100644
--- a/src/core/function/gpg/GpgKeyManager.cpp
+++ b/src/core/function/gpg/GpgKeyManager.cpp
@@ -28,10 +28,10 @@
#include "GpgKeyManager.h"
-#include "core/GpgModel.h"
#include "core/function/gpg/GpgAutomatonHandler.h"
#include "core/function/gpg/GpgBasicOperator.h"
#include "core/function/gpg/GpgKeyGetter.h"
+#include "core/model/GpgData.h"
#include "core/utils/GpgUtils.h"
namespace GpgFrontend {
diff --git a/src/core/function/gpg/GpgUIDOperator.cpp b/src/core/function/gpg/GpgUIDOperator.cpp
index a951fa6f..e34d224a 100644
--- a/src/core/function/gpg/GpgUIDOperator.cpp
+++ b/src/core/function/gpg/GpgUIDOperator.cpp
@@ -28,8 +28,8 @@
#include "GpgUIDOperator.h"
-#include "core/GpgModel.h"
#include "core/function/gpg/GpgAutomatonHandler.h"
+#include "core/model/GpgData.h"
#include "core/utils/GpgUtils.h"
namespace GpgFrontend {
diff --git a/src/core/model/GpgKey.cpp b/src/core/model/GpgKey.cpp
index 1a7b7961..6241fd20 100644
--- a/src/core/model/GpgKey.cpp
+++ b/src/core/model/GpgKey.cpp
@@ -128,13 +128,13 @@ auto GpgKey::PrimaryKeyLength() const -> unsigned int {
return key_ref_->subkeys->length;
}
-auto GpgKey::IsHasEncrCap() const -> bool { return key_ref_->can_encrypt; }
+auto GpgKey::IsHasEncrCap() const -> bool { return IsHasActualEncrCap(); }
-auto GpgKey::IsHasSignCap() const -> bool { return key_ref_->can_sign; }
+auto GpgKey::IsHasSignCap() const -> bool { return IsHasActualSignCap(); }
-auto GpgKey::IsHasCertCap() const -> bool { return key_ref_->can_certify; }
+auto GpgKey::IsHasCertCap() const -> bool { return IsHasActualCertCap(); }
-auto GpgKey::IsHasAuthCap() const -> bool { return key_ref_->can_authenticate; }
+auto GpgKey::IsHasAuthCap() const -> bool { return IsHasActualAuthCap(); }
auto GpgKey::IsHasCardKey() const -> bool {
auto sub_keys = SubKeys();
diff --git a/src/core/utils/IOUtils.cpp b/src/core/utils/IOUtils.cpp
index 39f00d19..6a195e73 100644
--- a/src/core/utils/IOUtils.cpp
+++ b/src/core/utils/IOUtils.cpp
@@ -28,7 +28,6 @@
#include "IOUtils.h"
-#include "core/GpgModel.h"
#include "core/utils/FilesystemUtils.h"
namespace GpgFrontend {
diff --git a/src/test/core/GpgCoreTestBasicOpera.cpp b/src/test/core/GpgCoreTestBasicOpera.cpp
index 3e188478..316b65a3 100644
--- a/src/test/core/GpgCoreTestBasicOpera.cpp
+++ b/src/test/core/GpgCoreTestBasicOpera.cpp
@@ -27,7 +27,6 @@
*/
#include "GpgCoreTest.h"
-#include "core/GpgModel.h"
#include "core/function/gpg/GpgBasicOperator.h"
#include "core/function/gpg/GpgKeyGetter.h"
#include "core/function/result_analyse/GpgDecryptResultAnalyse.h"
diff --git a/src/ui/dialog/KeyGroupManageDialog.cpp b/src/ui/dialog/KeyGroupManageDialog.cpp
index 88892ada..d7b9b3d3 100644
--- a/src/ui/dialog/KeyGroupManageDialog.cpp
+++ b/src/ui/dialog/KeyGroupManageDialog.cpp
@@ -87,6 +87,9 @@ KeyGroupManageDialog::KeyGroupManageDialog(
ui_->addButton->setDisabled(true);
ui_->removeButton->setDisabled(true);
+ ui_->keyGroupTipLabel->setText(tr("Key(s) in Key Group: "));
+ ui_->keyDBTipLabel->setText(tr("Key(s) in Key Dayabase: "));
+
QTimer::singleShot(200, [=]() { slot_notify_invalid_key_ids(); });
this->setModal(true);
diff --git a/src/ui/dialog/SignersPicker.cpp b/src/ui/dialog/SignersPicker.cpp
index 94a8f8df..f8bce07b 100644
--- a/src/ui/dialog/SignersPicker.cpp
+++ b/src/ui/dialog/SignersPicker.cpp
@@ -28,7 +28,6 @@
#include "SignersPicker.h"
-#include "core/GpgModel.h"
#include "ui/widgets/KeyList.h"
namespace GpgFrontend::UI {
diff --git a/src/ui/dialog/controller/GnuPGControllerDialog.cpp b/src/ui/dialog/controller/GnuPGControllerDialog.cpp
index 0ad1a6ca..5dacae65 100644
--- a/src/ui/dialog/controller/GnuPGControllerDialog.cpp
+++ b/src/ui/dialog/controller/GnuPGControllerDialog.cpp
@@ -28,7 +28,6 @@
#include "GnuPGControllerDialog.h"
-#include "core/GpgModel.h"
#include "core/function/GlobalSettingStation.h"
#include "core/model/SettingsObject.h"
#include "core/module/ModuleManager.h"
diff --git a/src/ui/dialog/controller/SmartCardControllerDialog.cpp b/src/ui/dialog/controller/SmartCardControllerDialog.cpp
index 6cc1f324..b48d49af 100644
--- a/src/ui/dialog/controller/SmartCardControllerDialog.cpp
+++ b/src/ui/dialog/controller/SmartCardControllerDialog.cpp
@@ -46,6 +46,23 @@ SmartCardControllerDialog::SmartCardControllerDialog(QWidget* parent)
channel_(kGpgFrontendDefaultChannel) {
ui_->setupUi(this);
+ ui_->smartCardLabel->setText(tr("Smart Card(s):"));
+ ui_->keyStubLabel->setText(tr("Key Stub(s) in Key Database(s):"));
+
+ ui_->cNameButton->setText(tr("Change Name"));
+ ui_->cLangButton->setText(tr("Change Language"));
+ ui_->cGenderButton->setText(tr("Change Gender"));
+ ui_->cLoginDataButton->setText(tr("Change Login Data"));
+ ui_->cPubKeyURLButton->setText(tr("Change Public Key URL"));
+ ui_->cPINButton->setText(tr("Change PIN"));
+ ui_->cAdminPINButton->setText(tr("Change Admin PIN"));
+ ui_->cResetCodeButton->setText(tr("Change Reset Code"));
+ ui_->fetchButton->setText(tr("Fetch"));
+ ui_->restartGpgAgentButton->setText(tr("Restart All Gpg-Agents"));
+ ui_->refreshButton->setText(tr("Refresh"));
+
+ ui_->operationGroupBox->setTitle(tr("Operations"));
+
for (const auto& key_db : GetGpgKeyDatabaseInfos()) {
ui_->keyDBIndexComboBox->insertItem(
key_db.channel, QString("%1: %2").arg(key_db.channel).arg(key_db.name));
@@ -117,6 +134,8 @@ SmartCardControllerDialog::SmartCardControllerDialog(QWidget* parent)
connect(timer_, &QTimer::timeout, this,
&SmartCardControllerDialog::slot_listen_smart_card_changes);
timer_->start(3000);
+
+ setWindowTitle(tr("Smart Card Controller"));
}
void SmartCardControllerDialog::select_smart_card_by_serial_number(
@@ -383,7 +402,7 @@ void SmartCardControllerDialog::slot_listen_smart_card_changes() {
}
void SmartCardControllerDialog::slot_disable_controllers(bool disable) {
- ui_->groupBox->setDisabled(disable);
+ ui_->operationGroupBox->setDisabled(disable);
ui_->keyDBIndexComboBox->setDisabled(disable);
ui_->cardKeysTreeView->setDisabled(disable);
}
diff --git a/src/ui/dialog/details/VerifyDetailsDialog.cpp b/src/ui/dialog/details/VerifyDetailsDialog.cpp
index e833ea01..abdf596f 100644
--- a/src/ui/dialog/details/VerifyDetailsDialog.cpp
+++ b/src/ui/dialog/details/VerifyDetailsDialog.cpp
@@ -28,7 +28,6 @@
#include "VerifyDetailsDialog.h"
-#include "core/GpgModel.h"
#include "ui/widgets/VerifyKeyDetailBox.h"
namespace GpgFrontend::UI {
diff --git a/src/ui/dialog/import_export/KeyServerImportDialog.cpp b/src/ui/dialog/import_export/KeyServerImportDialog.cpp
index 8e01bd4b..ad80f1a1 100644
--- a/src/ui/dialog/import_export/KeyServerImportDialog.cpp
+++ b/src/ui/dialog/import_export/KeyServerImportDialog.cpp
@@ -28,7 +28,6 @@
#include "KeyServerImportDialog.h"
-#include "core/GpgModel.h"
#include "core/function/GlobalSettingStation.h"
#include "core/function/gpg/GpgKeyImportExporter.h"
#include "core/model/SettingsObject.h"
diff --git a/src/ui/dialog/key_generate/KeyGenerateDialog.cpp b/src/ui/dialog/key_generate/KeyGenerateDialog.cpp
index a12db246..0a2dbe1a 100644
--- a/src/ui/dialog/key_generate/KeyGenerateDialog.cpp
+++ b/src/ui/dialog/key_generate/KeyGenerateDialog.cpp
@@ -28,7 +28,6 @@
#include "KeyGenerateDialog.h"
-#include "core/GpgModel.h"
#include "core/function/GlobalSettingStation.h"
#include "core/function/gpg/GpgKeyOpera.h"
#include "core/typedef/GpgTypedef.h"
diff --git a/src/ui/dialog/keypair_details/KeyDetailsDialog.cpp b/src/ui/dialog/keypair_details/KeyDetailsDialog.cpp
index 273d3316..340820da 100644
--- a/src/ui/dialog/keypair_details/KeyDetailsDialog.cpp
+++ b/src/ui/dialog/keypair_details/KeyDetailsDialog.cpp
@@ -28,7 +28,6 @@
#include "KeyDetailsDialog.h"
-#include "core/GpgModel.h"
#include "ui/UISignalStation.h"
#include "ui/dialog/keypair_details/KeyPairDetailTab.h"
#include "ui/dialog/keypair_details/KeyPairOperaTab.h"
diff --git a/src/ui/dialog/keypair_details/KeyPairDetailTab.cpp b/src/ui/dialog/keypair_details/KeyPairDetailTab.cpp
index b5a6c1d2..72a9a7c8 100644
--- a/src/ui/dialog/keypair_details/KeyPairDetailTab.cpp
+++ b/src/ui/dialog/keypair_details/KeyPairDetailTab.cpp
@@ -58,7 +58,6 @@ KeyPairDetailTab::KeyPairDetailTab(int channel, GpgKeyPtr key, QWidget* parent)
key_id_var_label_->setTextInteractionFlags(Qt::TextSelectableByMouse);
usage_var_label_ = new QLabel();
- actual_usage_var_label_ = new QLabel();
owner_trust_var_label_ = new QLabel();
key_size_var_label_ = new QLabel();
@@ -84,13 +83,12 @@ KeyPairDetailTab::KeyPairDetailTab(int channel, GpgKeyPtr key, QWidget* parent)
vbox_kd->addWidget(new QLabel(tr("Algorithm") + ": "), 1, 0);
vbox_kd->addWidget(new QLabel(tr("Algorithm Detail") + ": "), 2, 0);
vbox_kd->addWidget(new QLabel(tr("Key Size") + ": "), 3, 0);
- vbox_kd->addWidget(new QLabel(tr("Nominal Usage") + ": "), 4, 0);
- vbox_kd->addWidget(new QLabel(tr("Actual Usage") + ": "), 5, 0);
- vbox_kd->addWidget(new QLabel(tr("Owner Trust Level") + ": "), 6, 0);
- vbox_kd->addWidget(new QLabel(tr("Create Date (Local Time)") + ": "), 7, 0);
- vbox_kd->addWidget(new QLabel(tr("Expires on (Local Time)") + ": "), 8, 0);
- vbox_kd->addWidget(new QLabel(tr("Last Update (Local Time)") + ": "), 9, 0);
- vbox_kd->addWidget(new QLabel(tr("Primary Key Existence") + ": "), 10, 0);
+ vbox_kd->addWidget(new QLabel(tr("Usage") + ": "), 4, 0);
+ vbox_kd->addWidget(new QLabel(tr("Owner Trust Level") + ": "), 5, 0);
+ vbox_kd->addWidget(new QLabel(tr("Create Date (Local Time)") + ": "), 6, 0);
+ vbox_kd->addWidget(new QLabel(tr("Expires on (Local Time)") + ": "), 7, 0);
+ vbox_kd->addWidget(new QLabel(tr("Last Update (Local Time)") + ": "), 8, 0);
+ vbox_kd->addWidget(new QLabel(tr("Primary Key Existence") + ": "), 9, 0);
key_id_var_label_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
vbox_kd->addWidget(key_id_var_label_, 0, 1, 1, 1);
@@ -98,12 +96,11 @@ KeyPairDetailTab::KeyPairDetailTab(int channel, GpgKeyPtr key, QWidget* parent)
vbox_kd->addWidget(algorithm_detail_var_label_, 2, 1, 1, 2);
vbox_kd->addWidget(key_size_var_label_, 3, 1, 1, 2);
vbox_kd->addWidget(usage_var_label_, 4, 1, 1, 2);
- vbox_kd->addWidget(actual_usage_var_label_, 5, 1, 1, 2);
- vbox_kd->addWidget(owner_trust_var_label_, 6, 1, 1, 2);
- vbox_kd->addWidget(created_var_label_, 7, 1, 1, 2);
- vbox_kd->addWidget(expire_var_label_, 8, 1, 1, 2);
- vbox_kd->addWidget(last_update_var_label_, 9, 1, 1, 2);
- vbox_kd->addWidget(primary_key_exist_var_label_, 10, 1, 1, 2);
+ vbox_kd->addWidget(owner_trust_var_label_, 5, 1, 1, 2);
+ vbox_kd->addWidget(created_var_label_, 6, 1, 1, 2);
+ vbox_kd->addWidget(expire_var_label_, 7, 1, 1, 2);
+ vbox_kd->addWidget(last_update_var_label_, 8, 1, 1, 2);
+ vbox_kd->addWidget(primary_key_exist_var_label_, 9, 1, 1, 2);
auto* copy_key_id_button = new QPushButton(tr("Copy"));
copy_key_id_button->setFlat(true);
@@ -219,24 +216,6 @@ void KeyPairDetailTab::slot_refresh_key_info() {
if (key_->IsHasAuthCap()) usage_steam << tr("Auth") << " ";
usage_var_label_->setText(usage_steam.readAll());
-
- QString buffer_2;
- QTextStream actual_usage_steam(&buffer_2);
-
- if (key_->IsHasActualCertCap()) {
- actual_usage_steam << tr("Certificate") << " ";
- }
- if (key_->IsHasActualEncrCap()) {
- actual_usage_steam << tr("Encrypt") << " ";
- }
- if (key_->IsHasActualSignCap()) {
- actual_usage_steam << tr("Sign") << " ";
- }
- if (key_->IsHasActualAuthCap()) {
- actual_usage_steam << tr("Auth") << " ";
- }
-
- actual_usage_var_label_->setText(actual_usage_steam.readAll());
owner_trust_var_label_->setText(key_->OwnerTrust());
QString key_size_val;
diff --git a/src/ui/dialog/keypair_details/KeyPairDetailTab.h b/src/ui/dialog/keypair_details/KeyPairDetailTab.h
index d388a4af..e5ddbb83 100644
--- a/src/ui/dialog/keypair_details/KeyPairDetailTab.h
+++ b/src/ui/dialog/keypair_details/KeyPairDetailTab.h
@@ -90,7 +90,6 @@ class KeyPairDetailTab : public QWidget {
QLabel* key_id_var_label_; ///< Label containing the keys keyid
QLabel* fingerprint_var_label_; ///< Label containing the keys fingerprint
QLabel* usage_var_label_;
- QLabel* actual_usage_var_label_;
QLabel* primary_key_exist_var_label_;
QLabel* owner_trust_var_label_;
diff --git a/src/ui/dialog/keypair_details/KeyPairUIDTab.h b/src/ui/dialog/keypair_details/KeyPairUIDTab.h
index ecae16b5..32f6883f 100644
--- a/src/ui/dialog/keypair_details/KeyPairUIDTab.h
+++ b/src/ui/dialog/keypair_details/KeyPairUIDTab.h
@@ -28,8 +28,7 @@
#pragma once
-#include "core/GpgModel.h"
-#include "ui/GpgFrontendUI.h"
+#include "core/typedef/GpgTypedef.h"
namespace GpgFrontend::UI {
diff --git a/src/ui/dialog/settings/SettingsDialog.cpp b/src/ui/dialog/settings/SettingsDialog.cpp
index 79910229..ee2e12c6 100644
--- a/src/ui/dialog/settings/SettingsDialog.cpp
+++ b/src/ui/dialog/settings/SettingsDialog.cpp
@@ -29,7 +29,6 @@
#include "SettingsDialog.h"
#include "core/GpgConstants.h"
-#include "core/GpgModel.h"
#include "ui/dialog/settings/SettingsAppearance.h"
#include "ui/dialog/settings/SettingsGeneral.h"
#include "ui/dialog/settings/SettingsKeyServer.h"
diff --git a/src/ui/dialog/settings/SettingsGeneral.cpp b/src/ui/dialog/settings/SettingsGeneral.cpp
index 73d8bccd..12024a4c 100644
--- a/src/ui/dialog/settings/SettingsGeneral.cpp
+++ b/src/ui/dialog/settings/SettingsGeneral.cpp
@@ -29,7 +29,6 @@
#include "SettingsGeneral.h"
#include "SettingsDialog.h"
-#include "core/GpgModel.h"
#include "core/function/GlobalSettingStation.h"
#include "ui_GeneralSettings.h"
diff --git a/src/ui/function/GpgOperaHelper.cpp b/src/ui/function/GpgOperaHelper.cpp
index 50269b90..91bc6c38 100644
--- a/src/ui/function/GpgOperaHelper.cpp
+++ b/src/ui/function/GpgOperaHelper.cpp
@@ -28,7 +28,6 @@
#include "GpgOperaHelper.h"
-#include "core/GpgModel.h"
#include "core/function/gpg/GpgFileOpera.h"
#include "core/function/result_analyse/GpgDecryptResultAnalyse.h"
#include "core/function/result_analyse/GpgEncryptResultAnalyse.h"
diff --git a/src/ui/main_window/MainWindow.cpp b/src/ui/main_window/MainWindow.cpp
index e17dacca..104f54d8 100644
--- a/src/ui/main_window/MainWindow.cpp
+++ b/src/ui/main_window/MainWindow.cpp
@@ -28,7 +28,6 @@
#include "MainWindow.h"
-#include "core/function/CacheManager.h"
#include "core/function/GlobalSettingStation.h"
#include "core/model/SettingsObject.h"
#include "core/module/ModuleManager.h"
@@ -138,17 +137,12 @@ void MainWindow::Init() noexcept {
restore_settings();
- edit_->CurTextPage()->setFocus();
-
info_board_->AssociateTabWidget(edit_->TabWidget());
// check update if needed
check_update_at_startup();
- // recover unsaved page from cache if it exists
- recover_editor_unsaved_pages_from_cache();
-
- slot_update_operations_menu_by_checked_keys(~0);
+ slot_switch_menu_control_mode(0);
// check if need to open wizard window
if (GetSettings().value("wizard/show_wizard", true).toBool()) {
@@ -210,6 +204,7 @@ void MainWindow::restore_settings() {
icon_style_ = appearance.tool_bar_button_style;
import_button_->setToolButtonStyle(icon_style_);
+ workspace_button_->setToolButtonStyle(icon_style_);
this->setToolButtonStyle(icon_style_);
// icons ize
@@ -217,40 +212,8 @@ void MainWindow::restore_settings() {
QSize(appearance.tool_bar_icon_width, appearance.tool_bar_icon_height));
import_button_->setIconSize(
QSize(appearance.tool_bar_icon_width, appearance.tool_bar_icon_height));
-}
-
-void MainWindow::recover_editor_unsaved_pages_from_cache() {
- auto json_data =
- CacheManager::GetInstance().LoadDurableCache("editor_unsaved_pages");
-
- if (json_data.isEmpty() || !json_data.isArray()) {
- return;
- }
-
- bool first = true;
-
- auto unsaved_page_array = json_data.array();
- for (const auto& value_ref : unsaved_page_array) {
- if (!value_ref.isObject()) continue;
- auto unsaved_page_json = value_ref.toObject();
-
- if (!unsaved_page_json.contains("title") ||
- !unsaved_page_json.contains("content")) {
- continue;
- }
-
- auto title = unsaved_page_json["title"].toString();
- auto content = unsaved_page_json["content"].toString();
-
- LOG_D() << "restoring tab, title: " << title;
-
- if (first) {
- edit_->SlotCloseTab();
- first = false;
- }
-
- edit_->SlotNewTabWithContent(title, content);
- }
+ workspace_button_->setIconSize(
+ QSize(appearance.tool_bar_icon_width, appearance.tool_bar_icon_height));
}
void MainWindow::close_attachment_dock() {
diff --git a/src/ui/main_window/MainWindow.h b/src/ui/main_window/MainWindow.h
index d89356aa..15fb9fb1 100644
--- a/src/ui/main_window/MainWindow.h
+++ b/src/ui/main_window/MainWindow.h
@@ -537,6 +537,12 @@ class MainWindow : public GeneralMainWindow {
*/
void slot_popup_menu_by_key_list(QContextMenuEvent* event, KeyTable*);
+ /**
+ * @brief
+ *
+ */
+ void slot_open_file_tab_with_directory();
+
private:
/**
* @details Create actions for the main-menu and the context-menu of the
@@ -580,11 +586,6 @@ class MainWindow : public GeneralMainWindow {
void restore_settings();
/**
- * @details
- */
- void recover_editor_unsaved_pages_from_cache();
-
- /**
* @brief Create a action object
*
* @param id
@@ -692,6 +693,7 @@ class MainWindow : public GeneralMainWindow {
QMenu* key_menu_{}; ///< Submenu for key-operations
QMenu* view_menu_{}; ///< Submenu for view operations
QMenu* import_key_menu_{}; ///< Submenu for import operations
+ QMenu* workspace_menu_{};
QToolBar* crypt_tool_bar_{}; ///< Toolbar holding crypt actions
QToolBar* file_tool_bar_{}; ///< Toolbar holding file actions
@@ -701,6 +703,7 @@ class MainWindow : public GeneralMainWindow {
QToolBar* key_tool_bar_{}; ///< Toolbar holding key operations
QToolButton*
import_button_{}; ///< Tool button for import dropdown menu in toolbar
+ QToolButton* workspace_button_{};
QDockWidget* key_list_dock_{}; ///< Encrypt Dock
QDockWidget* attachment_dock_{}; ///< Attachment Dock
QDockWidget* info_board_dock_{};
@@ -709,8 +712,8 @@ class MainWindow : public GeneralMainWindow {
QAction* new_email_tab_act_{}; ///< Action to create email tab
QAction* switch_tab_up_act_{}; ///< Action to switch tab up
QAction* switch_tab_down_act_{}; ///< Action to switch tab down
- QAction* open_act_{}; ///< Action to open file
QAction* browser_act_{}; ///< Action to open file browser
+ QAction* browser_dir_act_{}; ///< Action to open file browser
QAction* save_act_{}; ///< Action to save file
QAction* save_as_act_{}; ///< Action to save file as
QAction* print_act_{}; ///< Action to print
@@ -724,7 +727,6 @@ class MainWindow : public GeneralMainWindow {
QAction* verify_act_{}; ///< Action to verify text
QAction* import_key_from_edit_act_{}; ///< Action to import key from edit
QAction* clean_double_line_breaks_act_{}; ///< Action to remove double
- ///< line breaks
QAction* gnupg_controller_open_act_{}; ///<
QAction* module_controller_open_act_{}; ///<
diff --git a/src/ui/main_window/MainWindowSlotUI.cpp b/src/ui/main_window/MainWindowSlotUI.cpp
index 49958c9f..e0a72ed1 100644
--- a/src/ui/main_window/MainWindowSlotUI.cpp
+++ b/src/ui/main_window/MainWindowSlotUI.cpp
@@ -60,6 +60,10 @@ void MainWindow::slot_open_key_management() {
void MainWindow::slot_open_file_tab() { edit_->SlotNewFileBrowserTab(); }
+void MainWindow::slot_open_file_tab_with_directory() {
+ edit_->SlotNewFileBrowserTabWithDirectory();
+}
+
void MainWindow::slot_switch_menu_control_mode(int index) {
auto disable = false;
if (index == -1) disable = true;
@@ -96,6 +100,9 @@ void MainWindow::slot_switch_menu_control_mode(int index) {
if (edit_->CurFilePage() != nullptr) {
auto* file_page = edit_->CurFilePage();
emit file_page->SignalCurrentTabChanged();
+ } else {
+ operations_menu_mask_ = ~0;
+ slot_update_operations_menu_by_checked_keys(operations_menu_mask_);
}
}
diff --git a/src/ui/main_window/MainWindowUI.cpp b/src/ui/main_window/MainWindowUI.cpp
index 41463b7a..14045c49 100644
--- a/src/ui/main_window/MainWindowUI.cpp
+++ b/src/ui/main_window/MainWindowUI.cpp
@@ -41,20 +41,22 @@ namespace GpgFrontend::UI {
void MainWindow::create_actions() {
new_tab_act_ = create_action(
- "new_tab", tr("New"), ":/icons/misc_doc.png", tr("Open a new file"),
+ "new_tab", tr("New Text"), ":/icons/misc_doc.png", tr("Open a new file"),
{QKeySequence(Qt::CTRL | Qt::Key_N), QKeySequence(Qt::CTRL | Qt::Key_T)});
connect(new_tab_act_, &QAction::triggered, edit_, &TextEdit::SlotNewTab);
- open_act_ = create_action("open", tr("Open..."), ":/icons/fileopen.png",
- tr("Open an existing file"), {QKeySequence::Open});
- connect(open_act_, &QAction::triggered, edit_, &TextEdit::SlotOpen);
-
- browser_act_ = create_action(
- "file_browser", tr("File Panel"), ":/icons/file-operator.png",
- tr("Open a file panel"), {QKeySequence(Qt::CTRL | Qt::Key_B)});
+ browser_act_ =
+ create_action("file_browser", tr("Open File"),
+ ":/icons/file-operator.png", tr("Open a file panel"));
connect(browser_act_, &QAction::triggered, this,
&MainWindow::slot_open_file_tab);
+ browser_dir_act_ = create_action(
+ "file_browser_dir", tr("Open Directory"), ":/icons/file-operator.png",
+ tr("Open a file panel"), {QKeySequence(Qt::CTRL | Qt::Key_B)});
+ connect(browser_dir_act_, &QAction::triggered, this,
+ &MainWindow::slot_open_file_tab_with_directory);
+
save_act_ = create_action("save", tr("Save File"), ":/icons/filesave.png",
tr("Save the current File"), {QKeySequence::Save});
connect(save_act_, &QAction::triggered, edit_, &TextEdit::SlotSave);
@@ -412,9 +414,12 @@ void MainWindow::create_menus() {
file_menu_->addAction(new_email_tab_act_);
}
- file_menu_->addAction(browser_act_);
- file_menu_->addAction(open_act_);
file_menu_->addSeparator();
+ workspace_menu_ = file_menu_->addMenu(tr("Workspace"));
+ workspace_menu_->addAction(browser_act_);
+ workspace_menu_->addAction(browser_dir_act_);
+ file_menu_->addSeparator();
+
file_menu_->addAction(save_act_);
file_menu_->addAction(save_as_act_);
file_menu_->addSeparator();
@@ -493,14 +498,24 @@ void MainWindow::create_menus() {
void MainWindow::create_tool_bars() {
file_tool_bar_ = addToolBar(tr("File"));
file_tool_bar_->setObjectName("fileToolBar");
+
+ // add dropdown menu for workspace
+ workspace_button_ = new QToolButton();
+ workspace_button_->setMenu(workspace_menu_);
+ workspace_button_->setPopupMode(QToolButton::InstantPopup);
+ workspace_button_->setIcon(QIcon(":/icons/workspace.png"));
+ workspace_button_->setToolTip(tr("Open Workspace..."));
+ workspace_button_->setText(tr("Workspace"));
+
+ file_tool_bar_->addWidget(workspace_button_);
+ file_tool_bar_->addSeparator();
+
file_tool_bar_->addAction(new_tab_act_);
if (Module::IsModuleActivate(kEmailModuleID)) {
file_tool_bar_->addAction(new_email_tab_act_);
}
- file_tool_bar_->addAction(open_act_);
- file_tool_bar_->addAction(browser_act_);
view_menu_->addAction(file_tool_bar_->toggleViewAction());
crypt_tool_bar_ = addToolBar(tr("Operations"));
diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp
index 605ae1d2..95dbfac9 100644
--- a/src/ui/widgets/FilePage.cpp
+++ b/src/ui/widgets/FilePage.cpp
@@ -28,7 +28,6 @@
#include "ui/widgets/FilePage.h"
-#include "core/GpgModel.h"
#include "core/function/GlobalSettingStation.h"
#include "ui/UISignalStation.h"
#include "ui/main_window/MainWindow.h"
diff --git a/src/ui/widgets/FileTreeView.cpp b/src/ui/widgets/FileTreeView.cpp
index 86411d79..8ebd7274 100644
--- a/src/ui/widgets/FileTreeView.cpp
+++ b/src/ui/widgets/FileTreeView.cpp
@@ -36,17 +36,15 @@
namespace GpgFrontend::UI {
FileTreeView::FileTreeView(QWidget* parent, const QString& target_path)
- : QTreeView(parent) {
- dir_model_ = new QFileSystemModel(this);
- dir_model_->setRootPath(target_path.isEmpty() ? QDir::currentPath()
- : target_path);
+ : QTreeView(parent), dir_model_(new QFileSystemModel(this)) {
dir_model_->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
+ dir_model_->setRootPath(QDir::homePath());
+ current_path_ = dir_model_->rootPath();
this->setModel(dir_model_);
this->setColumnWidth(0, 320);
this->sortByColumn(0, Qt::AscendingOrder);
this->setSortingEnabled(true);
- current_path_ = dir_model_->rootPath();
slot_create_popup_menu();
this->setContextMenuPolicy(Qt::CustomContextMenu);
@@ -60,6 +58,43 @@ FileTreeView::FileTreeView(QWidget* parent, const QString& target_path)
&FileTreeView::slot_adjust_column_widths);
connect(dir_model_, &QFileSystemModel::dataChanged, this,
&FileTreeView::slot_adjust_column_widths);
+
+ LOG_D() << "try to open target path:" << target_path;
+
+ QFileInfo info(target_path);
+ QString effective_path;
+
+ if (info.exists()) {
+ effective_path =
+ info.isFile() ? info.absolutePath() : info.absoluteFilePath();
+ } else {
+ effective_path = QDir::currentPath();
+ }
+
+ LOG_D() << "effective path:" << effective_path;
+
+ dir_model_->setRootPath(effective_path);
+ current_path_ = dir_model_->rootPath();
+ QModelIndex root_index = dir_model_->index(current_path_);
+
+ if (root_index.isValid()) {
+ QPointer<FileTreeView> self(this);
+ this->setRootIndex(root_index);
+ QTimer::singleShot(200, [=]() {
+ if (self != nullptr && info.isFile()) {
+ self->setCurrentIndex(dir_model_->index(info.absoluteFilePath()));
+ self->expand(currentIndex().parent());
+ self->scrollTo(currentIndex(), QAbstractItemView::PositionAtCenter);
+ self->selectionModel()->select(
+ currentIndex(),
+ QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
+ }
+ });
+ } else {
+ LOG_W() << "invalid path, fallback to current dir.";
+ current_path_ = QDir::currentPath();
+ this->setRootIndex(dir_model_->index(current_path_));
+ }
}
void FileTreeView::selectionChanged(const QItemSelection& selected,
@@ -424,10 +459,10 @@ void FileTreeView::slot_compress_files() {}
void FileTreeView::paintEvent(QPaintEvent* event) {
QTreeView::paintEvent(event);
- if (!initial_resize_done_) {
- slot_adjust_column_widths();
- initial_resize_done_ = true;
- }
+ // if (!initial_resize_done_) {
+ // slot_adjust_column_widths();
+ // initial_resize_done_ = true;
+ // }
}
void FileTreeView::mousePressEvent(QMouseEvent* event) {
diff --git a/src/ui/widgets/InfoBoardWidget.cpp b/src/ui/widgets/InfoBoardWidget.cpp
index bb5b00bc..8bc2b1b1 100644
--- a/src/ui/widgets/InfoBoardWidget.cpp
+++ b/src/ui/widgets/InfoBoardWidget.cpp
@@ -28,7 +28,6 @@
#include "ui/widgets/InfoBoardWidget.h"
-#include "core/GpgModel.h"
#include "core/model/SettingsObject.h"
#include "ui/UISignalStation.h"
#include "ui/struct/settings_object/AppearanceSO.h"
diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp
index 842bb9d6..5cb5d269 100644
--- a/src/ui/widgets/TextEdit.cpp
+++ b/src/ui/widgets/TextEdit.cpp
@@ -31,7 +31,7 @@
#include <QtPrintSupport>
#include <cstddef>
-#include "core/GpgModel.h"
+#include "core/function/CacheManager.h"
#include "ui/dialog/QuitDialog.h"
#include "ui/widgets/HelpPage.h"
#include "ui/widgets/TextEditTabWidget.h"
@@ -40,9 +40,6 @@ namespace GpgFrontend::UI {
TextEdit::TextEdit(QWidget* parent) : QWidget(parent) {
tab_widget_ = new TextEditTabWidget(this);
- tab_widget_->setMovable(true);
- tab_widget_->setTabsClosable(true);
- tab_widget_->setDocumentMode(true);
auto* layout = new QVBoxLayout;
layout->addWidget(tab_widget_);
@@ -52,8 +49,12 @@ TextEdit::TextEdit(QWidget* parent) : QWidget(parent) {
connect(tab_widget_, &QTabWidget::tabCloseRequested, this,
&TextEdit::slot_remove_tab);
- SlotNewTab();
+
setAcceptDrops(false);
+
+ SlotNewDefaultFileBrowserTab();
+
+ slot_restore_unsaved_tabs();
}
void TextEdit::SlotNewTab() { tab_widget_->SlotNewTab(); }
@@ -68,12 +69,22 @@ void TextEdit::SlotNewHelpTab(const QString& title, const QString& path) const {
tab_widget_->setCurrentIndex(tab_widget_->count() - 1);
}
+void TextEdit::SlotNewDefaultFileBrowserTab() {
+ tab_widget_->SlotOpenDefaultPath();
+}
+
void TextEdit::SlotNewFileBrowserTab() {
- auto const target_directory = QFileDialog::getExistingDirectory(
- this, tr("Open Directory"), QDir::home().path(),
- QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
- if (target_directory.isEmpty()) return;
- tab_widget_->SlotOpenDirectory(target_directory);
+ auto const target_path =
+ QFileDialog::getOpenFileUrl(this, tr("Open File"), QDir::home().path());
+ if (target_path.isEmpty()) return;
+ tab_widget_->SlotOpenPath(target_path.path());
+}
+
+void TextEdit::SlotNewFileBrowserTabWithDirectory() {
+ auto const target_path = QFileDialog::getExistingDirectory(
+ this, tr("Open File"), QDir::home().path());
+ if (target_path.isEmpty()) return;
+ tab_widget_->SlotOpenPath(target_path);
}
void TextEdit::SlotOpenFile(const QString& path) {
@@ -628,4 +639,30 @@ auto TextEdit::CurEMailPage() const -> EMailEditorPage* {
void TextEdit::SlotNewEMailTab() { tab_widget_->SlotNewEMailTab(); }
+void TextEdit::slot_restore_unsaved_tabs() {
+ auto json_data =
+ CacheManager::GetInstance().LoadDurableCache("editor_unsaved_pages");
+
+ if (json_data.isEmpty() || !json_data.isArray()) {
+ return;
+ }
+
+ auto unsaved_page_array = json_data.array();
+ for (const auto& value_ref : unsaved_page_array) {
+ if (!value_ref.isObject()) continue;
+ auto unsaved_page_json = value_ref.toObject();
+
+ if (!unsaved_page_json.contains("title") ||
+ !unsaved_page_json.contains("content")) {
+ continue;
+ }
+
+ auto title = unsaved_page_json["title"].toString();
+ auto content = unsaved_page_json["content"].toString();
+
+ LOG_D() << "restoring tab, title: " << title;
+
+ SlotNewTabWithContent(title, content);
+ }
+}
} // namespace GpgFrontend::UI
diff --git a/src/ui/widgets/TextEdit.h b/src/ui/widgets/TextEdit.h
index d37e01ce..f994cb1a 100644
--- a/src/ui/widgets/TextEdit.h
+++ b/src/ui/widgets/TextEdit.h
@@ -193,11 +193,23 @@ class TextEdit : public QWidget {
void SlotNewHelpTab(const QString& title, const QString& path) const;
/**
+ * @brief
+ *
+ */
+ void SlotNewDefaultFileBrowserTab();
+
+ /**
* New File Tab to do file operation
*/
void SlotNewFileBrowserTab();
/**
+ * @brief
+ *
+ */
+ void SlotNewFileBrowserTabWithDirectory();
+
+ /**
* @details put a * in front of current tabs title, if current textedit is
* modified
*/
@@ -312,7 +324,15 @@ class TextEdit : public QWidget {
*/
void slot_remove_tab(int index);
+ /**
+ * @brief
+ *
+ */
+ void slot_restore_unsaved_tabs();
+
private:
+ TextEditTabWidget* tab_widget_; ///< widget containing the tabs of the editor
+
/**
* @details return just a filename stripped of a whole path
*
@@ -327,8 +347,6 @@ class TextEdit : public QWidget {
* @param askToSave
*/
auto maybe_save_current_tab(bool askToSave) -> bool;
-
- TextEditTabWidget* tab_widget_; ///< widget containing the tabs of the editor
};
} // namespace GpgFrontend::UI
diff --git a/src/ui/widgets/TextEditTabWidget.cpp b/src/ui/widgets/TextEditTabWidget.cpp
index 11400f1f..f13d8392 100644
--- a/src/ui/widgets/TextEditTabWidget.cpp
+++ b/src/ui/widgets/TextEditTabWidget.cpp
@@ -39,6 +39,12 @@ namespace GpgFrontend::UI {
TextEditTabWidget::TextEditTabWidget(QWidget* parent) : QTabWidget(parent) {
setAcceptDrops(true);
+ setMovable(true);
+ setTabsClosable(true);
+ setDocumentMode(true);
+ setUsesScrollButtons(true);
+ setElideMode(Qt::ElideRight);
+ tabBar()->setExpanding(false);
}
void TextEditTabWidget::dragEnterEvent(QDragEnterEvent* event) {
@@ -97,7 +103,7 @@ void TextEditTabWidget::dropEvent(QDropEvent* event) {
.arg(file_info.fileName()));
continue;
}
- SlotOpenDirectory(file_info.absoluteFilePath());
+ SlotOpenPath(file_info.absoluteFilePath());
}
}
@@ -160,6 +166,8 @@ void TextEditTabWidget::SlotOpenEMLFile(const QString& path) {
}
void TextEditTabWidget::SlotShowModified() {
+ if (CurTextPage() == nullptr) return;
+
// get current tab
int index = this->currentIndex();
QString title = this->tabText(index).trimmed();
@@ -253,6 +261,7 @@ void TextEditTabWidget::SlotNewTab() {
auto* page = new PlainTextEditorPage();
auto index = this->addTab(page, header);
this->setTabIcon(index, QIcon(":/icons/file.png"));
+ this->setTabToolTip(index, header);
this->setCurrentIndex(this->count() - 1);
page->GetTextPage()->setFocus();
connect(page->GetTextPage()->document(), &QTextDocument::modificationChanged,
@@ -268,6 +277,7 @@ void TextEditTabWidget::SlotNewEMailTab() {
auto index = this->addTab(page, header);
this->setTabIcon(index, QIcon(":/icons/email.png"));
this->setCurrentIndex(this->count() - 1);
+ this->setTabToolTip(index, header);
page->GetTextPage()->setFocus();
connect(page->GetTextPage(), &QPlainTextEdit::textChanged, this,
@@ -291,7 +301,6 @@ void TextEditTabWidget::SlotNewTabWithContent(QString title,
auto* page = new PlainTextEditorPage();
auto index = this->addTab(page, header);
this->setTabIcon(index, QIcon(":/icons/file.png"));
- this->setCurrentIndex(this->count() - 1);
page->GetTextPage()->setFocus();
connect(page->GetTextPage()->document(), &QTextDocument::modificationChanged,
this, &TextEditTabWidget::SlotShowModified);
@@ -302,10 +311,21 @@ void TextEditTabWidget::SlotNewTabWithContent(QString title,
page->GetTextPage()->document()->setPlainText(content);
}
-void TextEditTabWidget::SlotOpenDirectory(const QString& target_directory) {
- auto* page = new FilePage(qobject_cast<QWidget*>(parent()), target_directory);
+void TextEditTabWidget::SlotOpenDefaultPath() {
+ auto* page =
+ new FilePage(qobject_cast<QWidget*>(parent()), QDir::currentPath());
+ auto index = this->addTab(page, QString());
+ this->setTabIcon(index, QIcon(":/icons/workspace.png"));
+ this->setTabText(index, tr("Default Workspace"));
+ this->setCurrentIndex(this->count() - 1);
+ page->SlotGoPath();
+}
+
+void TextEditTabWidget::SlotOpenPath(const QString& target_path) {
+ auto* page = new FilePage(qobject_cast<QWidget*>(parent()), target_path);
auto index = this->addTab(page, QString());
- this->setTabIcon(index, QIcon(":/icons/file-browser.png"));
+ this->setTabIcon(index, QIcon(":/icons/workspace.png"));
+ this->setTabToolTip(index, target_path);
this->setCurrentIndex(this->count() - 1);
connect(page, &FilePage::SignalPathChanged, this,
&TextEditTabWidget::slot_file_page_path_changed);
@@ -322,7 +342,9 @@ void TextEditTabWidget::slot_file_page_path_changed(const QString& path) {
} else {
m_path = t_path;
}
+
this->setTabText(index, m_path);
+ this->setTabToolTip(index, t_path);
emit UISignalStation::GetInstance() -> SignalMainWindowUpdateBasicOperaMenu(
0);
diff --git a/src/ui/widgets/TextEditTabWidget.h b/src/ui/widgets/TextEditTabWidget.h
index 9df2d6ab..ed6a0b50 100644
--- a/src/ui/widgets/TextEditTabWidget.h
+++ b/src/ui/widgets/TextEditTabWidget.h
@@ -90,6 +90,12 @@ class TextEditTabWidget : public QTabWidget {
void SlotNewTabWithContent(QString title, const QString& content);
/**
+ * @brief
+ *
+ */
+ void SlotOpenDefaultPath();
+
+ /**
* @details Adds a new tab with opening file by path
*/
void SlotOpenFile(const QString& path);
@@ -105,7 +111,7 @@ class TextEditTabWidget : public QTabWidget {
* @brief
*
*/
- void SlotOpenDirectory(const QString& target_directory);
+ void SlotOpenPath(const QString& target_path);
/**
* @details put a * in front of current tabs title, if current textedit is
@@ -146,6 +152,12 @@ class TextEditTabWidget : public QTabWidget {
int count_page_ = 0;
int text_page_data_modified_count_ = 0;
+ /**
+ * @brief
+ *
+ * @param full_file_name
+ * @return QString
+ */
static auto stripped_name(const QString& full_file_name) -> QString;
};
diff --git a/ui/KeyGroupManageDialog.ui b/ui/KeyGroupManageDialog.ui
index ea0225e3..a2b17212 100644
--- a/ui/KeyGroupManageDialog.ui
+++ b/ui/KeyGroupManageDialog.ui
@@ -17,9 +17,9 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="keyGroupTipLabel">
<property name="text">
- <string>Key(s) in Key Group:</string>
+ <string>Key(s) in Key Group: </string>
</property>
</widget>
</item>
@@ -88,7 +88,7 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="QLabel" name="label_2">
+ <widget class="QLabel" name="keyDBTipLabel">
<property name="text">
<string>Key(s) in Key Dayabase: </string>
</property>
diff --git a/ui/SmartCardControllerDialog.ui b/ui/SmartCardControllerDialog.ui
index 36b7ace0..07ec386d 100644
--- a/ui/SmartCardControllerDialog.ui
+++ b/ui/SmartCardControllerDialog.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>SmartCardController</string>
+ <string>Smart Card Controller</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
@@ -21,7 +21,7 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
- <widget class="QLabel" name="label_2">
+ <widget class="QLabel" name="smartCardLabel">
<property name="text">
<string>Smart Card(s):</string>
</property>
@@ -42,7 +42,7 @@
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
- <widget class="QLabel" name="label">
+ <widget class="QLabel" name="keyStubLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
@@ -88,7 +88,7 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
- <widget class="QGroupBox" name="groupBox">
+ <widget class="QGroupBox" name="operationGroupBox">
<property name="title">
<string>Operations</string>
</property>
@@ -105,7 +105,7 @@
<item>
<widget class="QPushButton" name="cLangButton">
<property name="text">
- <string>Change Lanugage</string>
+ <string>Change Language</string>
</property>
</widget>
</item>
@@ -172,6 +172,13 @@
</spacer>
</item>
<item>
+ <widget class="QPushButton" name="generateKeysButton">
+ <property name="text">
+ <string>Generate Keys</string>
+ </property>
+ </widget>
+ </item>
+ <item>
<widget class="QPushButton" name="fetchButton">
<property name="text">
<string>Fetch</string>