From d42c4314f7b30af0b1186fe947f2523c3d8f62b6 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 30 Mar 2018 19:20:23 +0200 Subject: 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. --- fswidget.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'fswidget.cpp') diff --git a/fswidget.cpp b/fswidget.cpp index 21e0435..3fa1cd1 100644 --- a/fswidget.cpp +++ b/fswidget.cpp @@ -4,6 +4,8 @@ #include #include #include +#include +#include #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); + } } -- cgit v1.2.3-70-g09d2