summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fswidget.cpp48
-rw-r--r--fswidget.h9
2 files changed, 55 insertions, 2 deletions
diff --git a/fswidget.cpp b/fswidget.cpp
index 21e0435..3fa1cd1 100644
--- a/fswidget.cpp
+++ b/fswidget.cpp
@@ -4,6 +4,8 @@
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QTreeView>
+#include <QFileDialog>
+#include <QSettings>
#include "fswidget.h"
@@ -26,8 +28,12 @@ void FSWidget::setupWidget(){
QLabel *dirL = new QLabel(tr("Dir"));
mDirCB = new QComboBox;
+ mDirCB->setInsertPolicy(QComboBox::InsertAlphabetically);
+ mDirCB->setSizeAdjustPolicy(QComboBox::AdjustToContents);
QAction *addDirA = new QAction(QIcon(":/gaping_ass.png"), tr("Add dir..."), this);
+ connect(addDirA, &QAction::triggered, this, &FSWidget::addDir);
QAction *removeDirA = new QAction(QIcon(":/hourglass_figure.png"), tr("Remove dir."), this);
+ connect(removeDirA, &QAction::triggered, this, &FSWidget::removeDir);
QToolBar *dirTB = new QToolBar;
dirTB->addAction(addDirA);
dirTB->addAction(removeDirA);
@@ -60,4 +66,46 @@ void FSWidget::setupWidget(){
mainLayout->addLayout(topWL);
mainLayout->addWidget(mFileView);
setLayout(mainLayout);
+
+ readSettings();
+}
+
+FSWidget::~FSWidget(){
+ writeSettings();
+}
+
+void FSWidget::readSettings(){
+ QSettings s;
+ QStringList dirs = s.value("fs/dirs").toStringList();
+ mDirCB->addItems(dirs);
+ QString cDir = s.value("fs/curdir").toString();
+ mDirCB->setCurrentText(cDir);
+}
+
+void FSWidget::writeSettings(){
+ QString curDir = mDirCB->currentText();
+ QStringList dirs;
+ for(int i = 0 ; i < mDirCB->count(); ++i){
+ dirs << mDirCB->itemText(i);
+ }
+ QSettings s;
+ s.setValue("fs/dirs", dirs);
+ s.setValue("fs/curdir", curDir);
+}
+
+void FSWidget::addDir(){
+ QString newDir = QFileDialog::getExistingDirectory(this, tr("Select directory"), QDir::homePath());
+ if(!newDir.isEmpty()){
+ int fIdx = mDirCB->findText(newDir);
+ if(fIdx == -1){
+ mDirCB->addItem(newDir);
+ }
+ }
+}
+
+void FSWidget::removeDir(){
+ int curIdx = mDirCB->currentIndex();
+ if(curIdx != -1){
+ mDirCB->removeItem(curIdx);
+ }
}
diff --git a/fswidget.h b/fswidget.h
index e77ab2d..024a965 100644
--- a/fswidget.h
+++ b/fswidget.h
@@ -10,10 +10,15 @@ class FSWidget : public QWidget {
Q_OBJECT
public:
explicit FSWidget(QWidget *parent = nullptr);
-
- signals:
+ ~FSWidget();
public slots:
+ void readSettings();
+ void writeSettings();
+
+ private slots:
+ void addDir();
+ void removeDir();
private:
void setupWidget();