diff options
Diffstat (limited to 'configurationdialog.cpp')
-rw-r--r-- | configurationdialog.cpp | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp index df7e2fb..1131293 100644 --- a/configurationdialog.cpp +++ b/configurationdialog.cpp @@ -30,6 +30,7 @@ #include <QStandardItem> #include <QScreen> #include <QInputDialog> +#include <QFileDialog> #include "configurationdialog.h" #include "programconfigurator.h" @@ -56,10 +57,7 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mBurnDir = new QLineEdit; mBurnDir->setCompleter(fsCompleter); pathL->addRow(tr("Burn directory"), mBurnDir); - mUSBDir = new QLineEdit; - mUSBDir->setCompleter(fsCompleter); - pathL->addRow(tr("USB directory"), mUSBDir); - mFfProbePath = new QLineEdit; + mFfProbePath = new QLineEdit; mFfProbePath->setCompleter(fsCompleter); pathL->addRow(tr("Path to ffprobe"), mFfProbePath); mFfMpegPath = new QLineEdit; @@ -74,9 +72,28 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S mUnpackPath->setCompleter(fsCompleter); pathL->addRow(tr("Unpack directory"), mUnpackPath); pathBox->setLayout(pathL); - QVBoxLayout *pathLayout = new QVBoxLayout; - pathLayout->addWidget(pathBox); - pathWidget->setLayout(pathLayout); + QVBoxLayout *pathLayout = new QVBoxLayout; + pathLayout->addWidget(pathBox); + pathWidget->setLayout(pathLayout); + + // usb paths + QHBoxLayout *usbSelectorL = new QHBoxLayout; + usbSelectorL->addWidget(new QLabel(tr("USB directory"))); + mUSBDir = new QComboBox; + usbSelectorL->addWidget(mUSBDir); + QHBoxLayout *usbButtonL = new QHBoxLayout; + QPushButton *removeUSB = new QPushButton("Remove USB path"); + connect(removeUSB, &QPushButton::clicked, mUSBDir, [=]() { mUSBDir->removeItem(mUSBDir->currentIndex()); }); + usbButtonL->addWidget(removeUSB); + QPushButton *addUSB = new QPushButton(tr("Add USB path")); + connect(addUSB, &QPushButton::clicked, this, &ConfigurationDialog::addUSBPath); + usbButtonL->addWidget(addUSB); + QVBoxLayout *usbBoxL = new QVBoxLayout; + usbBoxL->addLayout(usbSelectorL); + usbBoxL->addLayout(usbButtonL); + QGroupBox *usbBox = new QGroupBox(tr("USB paths")); + usbBox->setLayout(usbBoxL); + pathLayout->addWidget(usbBox); //expensive option QGroupBox *expensiveBox = new QGroupBox(tr("Expensive file operations")); @@ -443,7 +460,8 @@ void ConfigurationDialog::readSettings(){ //read paths mArchiveDir->setText(s.value("paths/archivedir").toString()); mBurnDir->setText(s.value("paths/burn").toString()); - mUSBDir->setText(s.value("paths/usb").toString()); + mUSBDir->addItems(s.value("paths/usball").toStringList()); + mUSBDir->setCurrentText(s.value("paths/usb").toString()); mFfProbePath->setText(s.value("paths/ffprobe").toString()); mFfMpegPath->setText(s.value("paths/ffmpeg").toString()); mDvdMountPath->setText(s.value("paths/dvdmount").toString()); @@ -498,7 +516,12 @@ void ConfigurationDialog::writeSettings(){ //write paths s.setValue("paths/archivedir", mArchiveDir->text()); s.setValue("paths/burn", mBurnDir->text()); - s.setValue("paths/usb", mUSBDir->text()); + s.setValue("paths/usb", mUSBDir->currentText()); + QStringList allPaths; + for(int i = 0; i < mUSBDir->count(); ++i){ + allPaths << mUSBDir->itemText(i); + } + s.setValue("paths/usball", allPaths); QString ffprobe = mFfProbePath->text(); QFileInfo ffProbeInfo(ffprobe); if(ffProbeInfo.exists() && ffProbeInfo.isExecutable()){ @@ -680,6 +703,16 @@ void ConfigurationDialog::delReason(){ } } +void ConfigurationDialog::addUSBPath(){ + const QString newDir = QFileDialog::getExistingDirectory(this, tr("Select USB directory")); + if(newDir.isEmpty()){ + return; + } + if(mUSBDir->findText(newDir) == -1){ + mUSBDir->addItem(newDir); + } +} + void ConfigurationDialog::setColor(QWidget *label){ QLabel *curLabel = qobject_cast<QLabel*>(label); if(!curLabel){ |