summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBe <be@mixxx.org>2021-01-05 14:47:39 -0600
committerBe <be@mixxx.org>2021-01-05 14:47:39 -0600
commitc328475137773fd7170a62f5dee8a962290d2fe8 (patch)
treeae926ad902d5e90c1c1f98df17c73a0268e3ce79 /src
parent47dd492e8a60a1a9dcc038e50d3183d7520bc4b0 (diff)
DlgPrefRecord: validate user input for recordings directory
Diffstat (limited to 'src')
-rw-r--r--src/preferences/dialog/dlgprefrecord.cpp33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/preferences/dialog/dlgprefrecord.cpp b/src/preferences/dialog/dlgprefrecord.cpp
index 52842f4ef7..533520f293 100644
--- a/src/preferences/dialog/dlgprefrecord.cpp
+++ b/src/preferences/dialog/dlgprefrecord.cpp
@@ -384,13 +384,32 @@ void DlgPrefRecord::loadMetaData() {
void DlgPrefRecord::saveRecordingFolder()
{
- if (LineEditRecordings->text() == "") {
- qDebug() << "Recordings path was empty in dialog";
- return;
- }
- if (LineEditRecordings->text() != m_pConfig->getValueString(ConfigKey(RECORDING_PREF_KEY, "Directory"))) {
- qDebug() << "Saved recordings path" << LineEditRecordings->text();
- m_pConfig->set(ConfigKey(RECORDING_PREF_KEY, "Directory"), LineEditRecordings->text());
+ QString newPath = LineEditRecordings->text();
+ if (newPath != m_pConfig->getValueString(ConfigKey(RECORDING_PREF_KEY, "Directory"))) {
+ QFileInfo fileInfo(newPath);
+ if (!fileInfo.exists()) {
+ QMessageBox::warning(
+ this,
+ tr("Recordings directory invalid"),
+ tr("Recordings directory must be set to an existing directory."));
+ return;
+ }
+ if (!fileInfo.isDir()) {
+ QMessageBox::warning(
+ this,
+ tr("Recordings directory invalid"),
+ tr("Recordings directory must be set to a directory."));
+ return;
+ }
+ if (!fileInfo.isWritable()) {
+ QMessageBox::warning(this,
+ tr("Recordings directory not writable"),
+ tr("You do not have write access to %1. Choose a "
+ "recordings directory you have write access to.")
+ .arg(newPath));
+ return;
+ }
+ m_pConfig->set(ConfigKey(RECORDING_PREF_KEY, "Directory"), newPath);
}
}
void DlgPrefRecord::saveMetaData()