diff options
-rw-r--r-- | fswidget.cpp | 48 | ||||
-rw-r--r-- | fswidget.h | 9 |
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); + } } @@ -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(); |