diff options
author | Be <be@mixxx.org> | 2021-01-05 14:47:39 -0600 |
---|---|---|
committer | Be <be@mixxx.org> | 2021-01-05 14:47:39 -0600 |
commit | c328475137773fd7170a62f5dee8a962290d2fe8 (patch) | |
tree | ae926ad902d5e90c1c1f98df17c73a0268e3ce79 /src | |
parent | 47dd492e8a60a1a9dcc038e50d3183d7520bc4b0 (diff) |
DlgPrefRecord: validate user input for recordings directory
Diffstat (limited to 'src')
-rw-r--r-- | src/preferences/dialog/dlgprefrecord.cpp | 33 |
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() |