aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsaturneric <[email protected]>2024-01-08 07:22:03 +0000
committersaturneric <[email protected]>2024-01-08 07:22:03 +0000
commitba7dd4ef022b19e307557561e2c8d788768c5026 (patch)
treed270d4b5219b15bac24c2343261f7b25bf29f99a /src
parentfeat: improve tool menus and icons (diff)
downloadGpgFrontend-ba7dd4ef022b19e307557561e2c8d788768c5026.tar.gz
GpgFrontend-ba7dd4ef022b19e307557561e2c8d788768c5026.zip
feat: select a directory before entering into the File Browser
Diffstat (limited to 'src')
-rw-r--r--src/ui/widgets/FilePage.cpp4
-rw-r--r--src/ui/widgets/FilePage.h2
-rw-r--r--src/ui/widgets/FileTreeView.cpp6
-rw-r--r--src/ui/widgets/FileTreeView.h2
-rw-r--r--src/ui/widgets/TextEdit.cpp9
-rw-r--r--src/ui/widgets/TextEdit.h2
6 files changed, 16 insertions, 9 deletions
diff --git a/src/ui/widgets/FilePage.cpp b/src/ui/widgets/FilePage.cpp
index 71961c25..08534dcb 100644
--- a/src/ui/widgets/FilePage.cpp
+++ b/src/ui/widgets/FilePage.cpp
@@ -39,10 +39,10 @@
namespace GpgFrontend::UI {
-FilePage::FilePage(QWidget* parent)
+FilePage::FilePage(QWidget* parent, const QString& target_path)
: QWidget(parent),
ui_(GpgFrontend::SecureCreateSharedObject<Ui_FilePage>()),
- file_tree_view_(new FileTreeView(this)) {
+ file_tree_view_(new FileTreeView(this, target_path)) {
ui_->setupUi(this);
ui_->trewViewLayout->addWidget(file_tree_view_);
diff --git a/src/ui/widgets/FilePage.h b/src/ui/widgets/FilePage.h
index c1c9dc39..da5370a2 100644
--- a/src/ui/widgets/FilePage.h
+++ b/src/ui/widgets/FilePage.h
@@ -48,7 +48,7 @@ class FilePage : public QWidget {
*
* @param parent
*/
- explicit FilePage(QWidget* parent = nullptr);
+ explicit FilePage(QWidget* parent, const QString&);
/**
* @brief Get the Selected object
diff --git a/src/ui/widgets/FileTreeView.cpp b/src/ui/widgets/FileTreeView.cpp
index 79db51ac..8139fbf9 100644
--- a/src/ui/widgets/FileTreeView.cpp
+++ b/src/ui/widgets/FileTreeView.cpp
@@ -33,9 +33,11 @@
namespace GpgFrontend::UI {
-FileTreeView::FileTreeView(QWidget* parent) : QTreeView(parent) {
+FileTreeView::FileTreeView(QWidget* parent, const QString& target_path)
+ : QTreeView(parent) {
dir_model_ = new QFileSystemModel();
- dir_model_->setRootPath(QDir::currentPath());
+ dir_model_->setRootPath(target_path.isEmpty() ? QDir::currentPath()
+ : target_path);
dir_model_->setFilter(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot);
this->setModel(dir_model_);
diff --git a/src/ui/widgets/FileTreeView.h b/src/ui/widgets/FileTreeView.h
index 94fdb3de..5d013ae4 100644
--- a/src/ui/widgets/FileTreeView.h
+++ b/src/ui/widgets/FileTreeView.h
@@ -33,7 +33,7 @@ namespace GpgFrontend::UI {
class FileTreeView : public QTreeView {
Q_OBJECT
public:
- explicit FileTreeView(QWidget* parent);
+ explicit FileTreeView(QWidget* parent, const QString& target_path);
/**
* @brief Get the Current Path object
diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp
index 079a8496..2bc25376 100644
--- a/src/ui/widgets/TextEdit.cpp
+++ b/src/ui/widgets/TextEdit.cpp
@@ -106,8 +106,13 @@ void TextEdit::slotNewHelpTab(const QString& title, const QString& path) const {
tab_widget_->setCurrentIndex(tab_widget_->count() - 1);
}
-void TextEdit::SlotNewFileTab() const {
- auto* page = new FilePage(qobject_cast<QWidget*>(parent()));
+void TextEdit::SlotNewFileTab() {
+ auto const target_dir = QFileDialog::getExistingDirectory(
+ this, _("Open Directory"), QDir::home().path(),
+ QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
+ if (target_dir.isEmpty()) return;
+
+ auto* page = new FilePage(qobject_cast<QWidget*>(parent()), target_dir);
auto index = tab_widget_->addTab(page, QString());
tab_widget_->setTabIcon(index, QIcon(":file-browser.png"));
tab_widget_->setCurrentIndex(tab_widget_->count() - 1);
diff --git a/src/ui/widgets/TextEdit.h b/src/ui/widgets/TextEdit.h
index 994e8a64..4eb1d537 100644
--- a/src/ui/widgets/TextEdit.h
+++ b/src/ui/widgets/TextEdit.h
@@ -171,7 +171,7 @@ class TextEdit : public QWidget {
/**
* New File Tab to do file operation
*/
- void SlotNewFileTab() const;
+ void SlotNewFileTab();
/**
* @details put a * in front of current tabs title, if current textedit is