summaryrefslogtreecommitdiffstats
path: root/fswidget.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2018-03-30 19:20:23 +0200
committerArno <arno@disconnect.de>2018-03-30 19:20:23 +0200
commitd42c4314f7b30af0b1186fe947f2523c3d8f62b6 (patch)
tree5dfecd5f616566d20b42129ef9dd4b8ac38c1a77 /fswidget.cpp
parent8e685d4ab524da43bae639274e12221fc28fc847 (diff)
downloadSheMov-d42c4314f7b30af0b1186fe947f2523c3d8f62b6.tar.gz
SheMov-d42c4314f7b30af0b1186fe947f2523c3d8f62b6.tar.bz2
SheMov-d42c4314f7b30af0b1186fe947f2523c3d8f62b6.zip
Implement add and remove dir in FSWidget
Still doesn't read anything from the filesystem, but now you can add and remove directories. Also, the settings are saved.
Diffstat (limited to 'fswidget.cpp')
-rw-r--r--fswidget.cpp48
1 files changed, 48 insertions, 0 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);
+ }
}