summaryrefslogtreecommitdiffstats
path: root/configurationdialog.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2025-05-09 08:56:05 +0200
committerArno <arno@disconnect.de>2025-05-09 08:56:05 +0200
commit9276db1f7d466668b5e5a0dd13a05eb3cf328c70 (patch)
tree972e4d816c9fdec99633f95d66d0aed60dac34cf /configurationdialog.cpp
parentf18b4201d891aea10a4b38bd923f4c8fc4ee7209 (diff)
downloadSheMov-9276db1f7d466668b5e5a0dd13a05eb3cf328c70.tar.gz
SheMov-9276db1f7d466668b5e5a0dd13a05eb3cf328c70.tar.bz2
SheMov-9276db1f7d466668b5e5a0dd13a05eb3cf328c70.zip
Enhance usb-storage
Make it possible to define more than just one usb storage and store them to the new QSettings item "paths/usball", a QStringList while repurposing the old setting "paths/usb" for writing. When reading, iterate over all entries in usball until the file is found. For writing, or moving files to archive, use paths/usb as target.
Diffstat (limited to 'configurationdialog.cpp')
-rw-r--r--configurationdialog.cpp51
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){