#include #include #include #include #include #include #include #include #include "fswidget.h" FSWidget::FSWidget(QWidget *parent) : QWidget(parent) { setupWidget(); } void FSWidget::setupWidget(){ QToolBar *toolbar = new QToolBar; QPixmap buttplug(":/butt_plug.png"); QMatrix rotatematrix; rotatematrix.rotate(90); QIcon buttplugRight(buttplug.transformed(rotatematrix)); rotatematrix.rotate(-180); QIcon buttplugLeft(buttplug.transformed(rotatematrix)); QAction *backA = new QAction(buttplugLeft, tr("Prev. dir"), this); toolbar->addAction(backA); QAction *forwardA = new QAction(buttplugRight, tr("Next dir"), this); toolbar->addAction(forwardA); 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); QLabel *filterL = new QLabel(tr("Filter")); mFilterCB = new QComboBox; QAction *addFilterA = new QAction(QIcon(":/gaping_ass.png"), tr("Add filter..."), this); QAction *removeFilterA = new QAction(QIcon(":/hourglass_figure.png"), tr("Remove filter"), this); QToolBar *filterTB = new QToolBar; filterTB->addAction(addFilterA); filterTB->addAction(removeFilterA); QHBoxLayout *topWL = new QHBoxLayout; topWL->addWidget(dirL); topWL->addWidget(mDirCB); topWL->addWidget(dirTB); topWL->addWidget(filterL); topWL->addWidget(mFilterCB); topWL->addWidget(filterTB); topWL->addWidget(toolbar); topWL->addStretch(); mFileView = new QTreeView; mFileView->setSortingEnabled(true); mFileView->setUniformRowHeights(true); mFileView->setSelectionBehavior(QAbstractItemView::SelectRows); mFileView->setSelectionMode(QAbstractItemView::ExtendedSelection); QVBoxLayout *mainLayout = new QVBoxLayout; 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); } }