diff options
author | Saturneric <[email protected]> | 2022-03-12 09:54:10 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2022-03-12 09:54:10 +0000 |
commit | db24670fedfa8fd9cf207ffd35e41b00f4f3497f (patch) | |
tree | 6c1aae26444a821609fda3ba6d8fb7182615e2f3 /src/ui/widgets/FilePage.cpp | |
parent | <fix>(core): Fix the existing problem of the key package (diff) | |
download | GpgFrontend-db24670fedfa8fd9cf207ffd35e41b00f4f3497f.tar.gz GpgFrontend-db24670fedfa8fd9cf207ffd35e41b00f4f3497f.zip |
<feat>(core, ui): Provides the ability to handle folders
1. Convert folders to archive format for processing
Diffstat (limited to 'src/ui/widgets/FilePage.cpp')
-rw-r--r-- | src/ui/widgets/FilePage.cpp | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp index bbe5e548..7682448d 100644 --- a/src/ui/widgets/FilePage.cpp +++ b/src/ui/widgets/FilePage.cpp @@ -30,8 +30,10 @@ #include <string> -#include "main_window/MainWindow.h" +#include "core/function/ArchiveFileOperator.h" +#include "core/function/gpg/GpgFileOpera.h" #include "ui/SignalStation.h" +#include "ui/main_window/MainWindow.h" #include "ui_FilePage.h" namespace GpgFrontend::UI { @@ -103,36 +105,35 @@ void FilePage::slot_file_tree_view_item_clicked(const QModelIndex& index) { LOG(INFO) << "selected path" << selected_path_; selected_path_ = std::filesystem::path(selected_path_); - MainWindow::CryptoMenu::OperationType operation_type = MainWindow::CryptoMenu::None; - + MainWindow::CryptoMenu::OperationType operation_type = + MainWindow::CryptoMenu::None; + if (index.isValid()) { QFileInfo info(QString::fromStdString(selected_path_.string())); - - if(info.isFile() && (info.suffix() != "gpg" && - info.suffix() != "sig" && - info.suffix() != "asc")) { + if ((info.isDir() || info.isFile()) && + (info.suffix() != "gpg" && info.suffix() != "sig" && + info.suffix() != "asc")) { operation_type |= MainWindow::CryptoMenu::Encrypt; } - if(info.isFile() && (info.suffix() != "gpg" && info.suffix() != "sig" && - info.suffix() != "asc")){ + if ((info.isDir() || info.isFile()) && + (info.suffix() != "gpg" && info.suffix() != "sig" && + info.suffix() != "asc")) { operation_type |= MainWindow::CryptoMenu::EncryptAndSign; } - if(info.isFile() && (info.suffix() == "gpg" || info.suffix() == "asc")) { + if (info.isFile() && (info.suffix() == "gpg" || info.suffix() == "asc")) { operation_type |= MainWindow::CryptoMenu::Decrypt; operation_type |= MainWindow::CryptoMenu::DecryptAndVerify; } - if(info.isFile() && (info.suffix() != "gpg" && - info.suffix() != "sig" && - info.suffix() != "asc")){ + if (info.isFile() && (info.suffix() != "gpg" && info.suffix() != "sig" && + info.suffix() != "asc")) { operation_type |= MainWindow::CryptoMenu::Sign; } - if(info.isFile() && (info.suffix() == "sig" || - info.suffix() == "gpg" || + if (info.isFile() && (info.suffix() == "sig" || info.suffix() == "gpg" || info.suffix() == "asc")) { operation_type |= MainWindow::CryptoMenu::Verify; } @@ -214,20 +215,30 @@ void FilePage::create_popup_menu() { connect(ui_->actionCalculateHash, &QAction::triggered, this, &FilePage::slot_calculate_hash); - ui_->actionMakeDirectory->setText(_("Make New Directory")); + ui_->actionMakeDirectory->setText(_("Directory")); connect(ui_->actionMakeDirectory, &QAction::triggered, this, &FilePage::slot_mkdir); - ui_->actionCreateEmptyFile->setText(_("Create Empty File")); + ui_->actionCreateEmptyFile->setText(_("File")); connect(ui_->actionCreateEmptyFile, &QAction::triggered, this, &FilePage::slot_create_empty_file); + ui_->actionCompressFiles->setText(_("Compress...")); + ui_->actionCompressFiles->setVisible(false); + connect(ui_->actionCompressFiles, &QAction::triggered, this, + &FilePage::slot_compress_files); + + auto new_item_action_menu = new QMenu(this); + new_item_action_menu->setTitle(_("New")); + new_item_action_menu->addAction(ui_->actionCreateEmptyFile); + new_item_action_menu->addAction(ui_->actionMakeDirectory); + popup_menu_->addAction(ui_->actionOpenFile); popup_menu_->addAction(ui_->actionRenameFile); popup_menu_->addAction(ui_->actionDeleteFile); popup_menu_->addSeparator(); - popup_menu_->addAction(ui_->actionMakeDirectory); - popup_menu_->addAction(ui_->actionCreateEmptyFile); + popup_menu_->addMenu(new_item_action_menu); + popup_menu_->addAction(ui_->actionCompressFiles); popup_menu_->addAction(ui_->actionCalculateHash); option_popup_menu_ = new QMenu(); @@ -259,9 +270,14 @@ void FilePage::create_popup_menu() { void FilePage::onCustomContextMenu(const QPoint& point) { QModelIndex index = ui_->fileTreeView->indexAt(point); + LOG(INFO) << "right click" << selected_path_; + selected_path_ = std::filesystem::path( dir_model_->fileInfo(index).absoluteFilePath().toStdString()); - LOG(INFO) << "right click" << selected_path_; + + // update crypt menu + slot_file_tree_view_item_clicked(index); + if (index.isValid()) { ui_->actionOpenFile->setEnabled(true); ui_->actionRenameFile->setEnabled(true); @@ -293,6 +309,7 @@ void FilePage::slot_open_item() { } } else { if (info.isReadable()) { + // handle normal text or binary file auto main_window = qobject_cast<MainWindow*>(first_parent_); LOG(INFO) << "open item" << selected_path_; auto qt_path = QString::fromStdString(selected_path_.string()); @@ -348,8 +365,7 @@ void FilePage::slot_delete_item() { void FilePage::slot_calculate_hash() { auto info_str = FileOperator::CalculateHash(selected_path_); - emit SignalRefreshInfoBoard(info_str.c_str(), - InfoBoardStatus::INFO_ERROR_OK); + emit SignalRefreshInfoBoard(info_str.c_str(), InfoBoardStatus::INFO_ERROR_OK); } void FilePage::slot_mkdir() { @@ -398,4 +414,6 @@ void FilePage::keyPressEvent(QKeyEvent* event) { } } +void FilePage::slot_compress_files() {} + } // namespace GpgFrontend::UI |