aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/widgets/FilePage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widgets/FilePage.cpp')
-rw-r--r--src/ui/widgets/FilePage.cpp107
1 files changed, 76 insertions, 31 deletions
diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp
index 998b4245..605ae1d2 100644
--- a/src/ui/widgets/FilePage.cpp
+++ b/src/ui/widgets/FilePage.cpp
@@ -29,6 +29,7 @@
#include "ui/widgets/FilePage.h"
#include "core/GpgModel.h"
+#include "core/function/GlobalSettingStation.h"
#include "ui/UISignalStation.h"
#include "ui/main_window/MainWindow.h"
#include "ui_FilePage.h"
@@ -42,6 +43,8 @@ FilePage::FilePage(QWidget* parent, const QString& target_path)
ui_->setupUi(this);
ui_->trewViewLayout->addWidget(file_tree_view_);
+ ui_->batchModeButton->setToolTip(tr("Switch Batch Mode"));
+
connect(ui_->upPathButton, &QPushButton::clicked, file_tree_view_,
&FileTreeView::SlotUpLevel);
connect(ui_->refreshButton, &QPushButton::clicked, this,
@@ -71,8 +74,19 @@ FilePage::FilePage(QWidget* parent, const QString& target_path)
connect(show_system_act, &QAction::triggered, file_tree_view_,
&FileTreeView::SlotShowSystemFile);
option_popup_menu_->addAction(show_system_act);
+
+ auto* switch_asc_mode_act = new QAction(tr("ASCII Mode"), this);
+ switch_asc_mode_act->setCheckable(true);
+ connect(switch_asc_mode_act, &QAction::triggered, this,
+ [=](bool on) { ascii_mode_ = on; });
+ option_popup_menu_->addAction(switch_asc_mode_act);
+
ui_->optionsButton->setMenu(option_popup_menu_);
+ ascii_mode_ = !(
+ GetSettings().value("gnupg/non_ascii_at_file_operation", true).toBool());
+ switch_asc_mode_act->setChecked(ascii_mode_);
+
connect(ui_->pathEdit, &QLineEdit::textChanged, [=]() {
auto path = ui_->pathEdit->text();
auto dir = QDir(path);
@@ -100,16 +114,18 @@ FilePage::FilePage(QWidget* parent, const QString& target_path)
UISignalStation::GetInstance(),
&UISignalStation::SignalMainWindowOpenFile);
connect(file_tree_view_, &FileTreeView::SignalSelectedChanged, this,
- &FilePage::update_main_basical_opera_menu);
+ &FilePage::update_main_basic_opera_menu);
connect(this, &FilePage::SignalCurrentTabChanged, this,
- [this]() { update_main_basical_opera_menu(GetSelected()); });
- connect(this, &FilePage::SignalMainWindowlUpdateBasicalOperaMenu,
+ [this]() { update_main_basic_opera_menu(GetSelected()); });
+ connect(this, &FilePage::SignalMainWindowUpdateBasicOperaMenu,
UISignalStation::GetInstance(),
- &UISignalStation::SignalMainWindowlUpdateBasicalOperaMenu);
+ &UISignalStation::SignalMainWindowUpdateBasicOperaMenu);
+ connect(ui_->batchModeButton, &QToolButton::toggled, file_tree_view_,
+ &FileTreeView::SlotSwitchBatchMode);
}
-auto FilePage::GetSelected() const -> QString {
- return file_tree_view_->GetSelectedPath();
+auto FilePage::GetSelected() const -> QStringList {
+ return file_tree_view_->GetSelectedPaths();
}
void FilePage::SlotGoPath() {
@@ -123,43 +139,72 @@ void FilePage::keyPressEvent(QKeyEvent* event) {
}
}
-void FilePage::update_main_basical_opera_menu(const QString& selected_path) {
+void FilePage::update_main_basic_opera_menu(const QStringList& selected_paths) {
+ if (selected_paths.isEmpty()) {
+ emit SignalMainWindowUpdateBasicOperaMenu(MainWindow::OperationMenu::kNone);
+ return;
+ }
+
MainWindow::OperationMenu::OperationType operation_type =
MainWindow::OperationMenu::kNone;
- // abort...
- if (selected_path.isEmpty()) return;
+ LOG_D() << "selected path size: " << selected_paths.size();
+ LOG_D() << "selected paths: " << selected_paths;
- QFileInfo const info(selected_path);
+ QContainer<QFileInfo> infos;
- if ((info.isDir() || info.isFile()) &&
- (info.suffix() != "gpg" && info.suffix() != "pgp" &&
- info.suffix() != "sig" && info.suffix() != "asc")) {
- operation_type |= MainWindow::OperationMenu::kEncrypt;
+ for (const auto& path : selected_paths) {
+ infos.append(QFileInfo(path));
}
- if ((info.isDir() || info.isFile()) &&
- (info.suffix() != "gpg" && info.suffix() != "pgp" &&
- info.suffix() != "sig" && info.suffix() != "asc")) {
- operation_type |= MainWindow::OperationMenu::kEncryptAndSign;
- }
+ bool c_encr =
+ std::all_of(infos.cbegin(), infos.cend(), [](const QFileInfo& info) {
+ return (info.isDir() || info.isFile()) &&
+ (info.suffix() != "gpg" && info.suffix() != "pgp" &&
+ info.suffix() != "sig" && info.suffix() != "asc");
+ });
- if (info.isFile() && (info.suffix() == "gpg" || info.suffix() == "pgp" ||
- info.suffix() == "asc")) {
- operation_type |= MainWindow::OperationMenu::kDecrypt;
- operation_type |= MainWindow::OperationMenu::kDecryptAndVerify;
+ if (c_encr) {
+ operation_type |= MainWindow::OperationMenu::kEncrypt |
+ MainWindow::OperationMenu::kEncryptAndSign;
}
- if (info.isFile() && (info.suffix() != "gpg" && info.suffix() != "pgp" &&
- info.suffix() != "sig" && info.suffix() != "asc")) {
- operation_type |= MainWindow::OperationMenu::kSign;
- }
+ bool c_decr =
+ std::all_of(infos.cbegin(), infos.cend(), [](const QFileInfo& info) {
+ return info.isFile() &&
+ (info.suffix() == "gpg" || info.suffix() == "pgp" ||
+ info.suffix() == "asc");
+ });
- if (info.isFile() && (info.suffix() == "sig" || info.suffix() == "gpg" ||
- info.suffix() == "pgp" || info.suffix() == "asc")) {
- operation_type |= MainWindow::OperationMenu::kVerify;
+ if (c_decr) {
+ operation_type |= MainWindow::OperationMenu::kDecrypt |
+ MainWindow::OperationMenu::kDecryptAndVerify;
}
- emit SignalMainWindowlUpdateBasicalOperaMenu(operation_type);
+ bool c_sign =
+ std::all_of(infos.cbegin(), infos.cend(), [](const QFileInfo& info) {
+ return info.isFile() &&
+ (info.suffix() != "gpg" && info.suffix() != "pgp" &&
+ info.suffix() != "sig" && info.suffix() != "asc");
+ });
+
+ if (c_sign) operation_type |= MainWindow::OperationMenu::kSign;
+
+ bool c_verify =
+ std::all_of(infos.cbegin(), infos.cend(), [](const QFileInfo& info) {
+ return info.isFile() &&
+ (info.suffix() == "sig" || info.suffix() == "gpg" ||
+ info.suffix() == "pgp" || info.suffix() == "asc");
+ });
+
+ if (c_verify) operation_type |= MainWindow::OperationMenu::kVerify;
+
+ emit SignalMainWindowUpdateBasicOperaMenu(operation_type);
}
+
+auto FilePage::IsBatchMode() const -> bool {
+ return ui_->batchModeButton->isChecked();
+}
+
+auto FilePage::IsASCIIMode() const -> bool { return ascii_mode_; }
} // namespace GpgFrontend::UI