From 4cf60f7b8b3f3445e409db7ce9eaa9860d367809 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 7 Apr 2021 23:46:39 +0200 Subject: [PATCH] Fixed bad settings state handling in UI --- src/lms/ui/SettingsView.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/lms/ui/SettingsView.cpp b/src/lms/ui/SettingsView.cpp index c900db34..f0a84ac7 100644 --- a/src/lms/ui/SettingsView.cpp +++ b/src/lms/ui/SettingsView.cpp @@ -225,6 +225,12 @@ class SettingsModel : public Wt::WFormModel if (transcodeBitrateRow) setValue(TranscodeBitrateField, _transcodeBitrateModel->getString(*transcodeBitrateRow)); + { + const bool usesTranscode {settings.transcode.mode != MediaPlayer::Settings::Transcode::Mode::Never}; + setReadOnly(SettingsModel::TranscodeFormatField, !usesTranscode); + setReadOnly(SettingsModel::TranscodeBitrateField, !usesTranscode); + } + auto replayGainModeRow {_replayGainModeModel->getRowFromValue(settings.replayGain.mode)}; if (replayGainModeRow) setValue(ReplayGainModeField, _replayGainModeModel->getString(*replayGainModeRow)); @@ -234,10 +240,10 @@ class SettingsModel : public Wt::WFormModel } setValue(SubsonicTranscodeEnableField, LmsApp->getUser()->getSubsonicTranscodeEnable()); - if (!LmsApp->getUser()->getSubsonicTranscodeEnable()) { - setReadOnly(SubsonicTranscodeFormatField, true); - setReadOnly(SubsonicTranscodeBitrateField, true); + const bool usesTranscode {LmsApp->getUser()->getSubsonicTranscodeEnable()}; + setReadOnly(SubsonicTranscodeFormatField, !usesTranscode); + setReadOnly(SubsonicTranscodeBitrateField, !usesTranscode); } { @@ -263,11 +269,16 @@ class SettingsModel : public Wt::WFormModel LMS_LOG(UI, DEBUG) << "Read listenBrainzToken! value = " << listenBrainzToken->getAsString(); setValue(ListenBrainzTokenField, Wt::WString::fromUTF8( std::string {listenBrainzToken->getAsString()})); } + + { + const bool usesListenBrainz {user->getScrobbler() == Scrobbler::ListenBrainz}; + setReadOnly(SettingsModel::ListenBrainzTokenField, !usesListenBrainz); + validator(SettingsModel::ListenBrainzTokenField)->setMandatory(usesListenBrainz); + } } } private: - bool validateField(Field field) { Wt::WString error; @@ -448,11 +459,6 @@ SettingsView::refreshView() t->updateModel(model.get()); t->updateView(model.get()); }); - if (LmsApp->getMediaPlayer().getSettings()->transcode.mode == MediaPlayer::Settings::Transcode::Mode::Never) - { - model->setReadOnly(SettingsModel::TranscodeFormatField, true); - model->setReadOnly(SettingsModel::TranscodeBitrateField, true); - } // Replay gain mode auto replayGainMode {std::make_unique()}; @@ -532,8 +538,9 @@ SettingsView::refreshView() { const bool enable {model->getScrobblerModel()->getValue(row) == Scrobbler::ListenBrainz}; model->setReadOnly(SettingsModel::ListenBrainzTokenField, !enable); - t->updateModel(model.get()); - t->updateView(model.get()); + model->validator(SettingsModel::ListenBrainzTokenField)->setMandatory(enable); + t->updateModel(model.get()); + t->updateView(model.get()); }); }