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(',')));  | 
