diff options
-rw-r--r-- | configurationdialog.cpp | 51 | ||||
-rw-r--r-- | configurationdialog.h | 3 | ||||
-rw-r--r-- | helper.cpp | 12 | ||||
-rw-r--r-- | randomtab.cpp | 20 |
4 files changed, 65 insertions, 21 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){ diff --git a/configurationdialog.h b/configurationdialog.h index 704074f..d64a73b 100644 --- a/configurationdialog.h +++ b/configurationdialog.h @@ -40,6 +40,7 @@ class ConfigurationDialog : public SmDialog { void editReason(); void addReason(); void delReason(); + void addUSBPath(); private: void readSettings(); @@ -53,7 +54,7 @@ class ConfigurationDialog : public SmDialog { ProgramConfigurator *mMovieConfig; QLineEdit *mArchiveDir; QLineEdit *mBurnDir; - QLineEdit *mUSBDir; + QComboBox *mUSBDir; QLineEdit *mFfProbePath; QLineEdit *mFfMpegPath; QLineEdit *mDvdMountPath; @@ -142,7 +142,7 @@ namespace Helper { const QString createUSBPath(const QString &filename, const QString &seriesName, const QString &subtitle, int dvdNo, int seriesNo){ QSettings s; - QString usbPath = s.value("paths/usb").toString(); + QStringList allUsbPaths = s.value("paths/usball").toStringList(); QString seriesDir = seriesName; if(seriesNo > 0){ @@ -151,7 +151,15 @@ namespace Helper { seriesDir.append(QString(" - %1").arg(subtitle)); } seriesDir.replace(' ', '.'); - QString retval = QString("%1/DVD_%2/%3/%4").arg(usbPath, QString::number(dvdNo), seriesDir, filename); + QString templ = QString("%1/DVD_%2/%3/%4"); + QString retval; + for( const QString &up : std::as_const(allUsbPaths)){ + retval = templ.arg(up, QString::number(dvdNo), seriesDir, filename); + QFileInfo retInfo(retval); + if(retInfo.exists()){ + return retval; + } + } return retval; } diff --git a/randomtab.cpp b/randomtab.cpp index b80fd9b..2d83d9e 100644 --- a/randomtab.cpp +++ b/randomtab.cpp @@ -211,15 +211,17 @@ void RandomTab::readSettings(){ QStringList RandomTab::validDvdNos(){ QStringList retval; QSettings s; - QString usbDir = s.value("paths/usb").toString(); - logMessage(QString(tr("Traversing %1")).arg(usbDir)); - QDirIterator it(usbDir); - while(it.hasNext()){ - it.next(); - QString next = it.fileName(); - if(next.startsWith("DVD_")){ - QString no = QString(next.right(3)); - retval << no; + QStringList allUsbPaths = s.value("paths/usball").toStringList(); + for(const QString &up : std::as_const(allUsbPaths)){ + logMessage(QString(tr("Traversing %1")).arg(up)); + QDirIterator it(up); + while(it.hasNext()){ + it.next(); + QString next = it.fileName(); + if(next.startsWith("DVD_")){ + QString no = QString(next.right(3)); + retval << no; + } } } logMessage(QString(tr("Found %1 valid Dirs: (%2)")).arg(QString::number(retval.count()), retval.join(','))); |