diff --git a/scwx-qt/source/scwx/qt/settings/settings_interface.cpp b/scwx-qt/source/scwx/qt/settings/settings_interface.cpp index 61a793e8..4d491563 100644 --- a/scwx-qt/source/scwx/qt/settings/settings_interface.cpp +++ b/scwx-qt/source/scwx/qt/settings/settings_interface.cpp @@ -56,6 +56,8 @@ public: double unitScale_ {1}; std::optional unitAbbreviation_ {}; bool unitEnabled_ {false}; + + bool trimmingEnabled_ {false}; }; template @@ -191,8 +193,11 @@ void SettingsInterface::SetEditWidget(QWidget* widget) p->context_.get(), [this](const QString& text) { + QString trimmedText = + p->trimmingEnabled_ ? text.trimmed() : text; + // Map to value if required - std::string value {text.toStdString()}; + std::string value {trimmedText.toStdString()}; if (p->mapToValue_ != nullptr) { value = p->mapToValue_(value); @@ -488,6 +493,12 @@ void SettingsInterface::SetUnit(const double& scale, p->UpdateUnitLabel(); } +template +void SettingsInterface::EnableTrimming(bool trimmingEnabled) +{ + p->trimmingEnabled_ = trimmingEnabled; +} + template template void SettingsInterface::Impl::SetWidgetText(U* widget, const T& currentValue) diff --git a/scwx-qt/source/scwx/qt/settings/settings_interface.hpp b/scwx-qt/source/scwx/qt/settings/settings_interface.hpp index 2092b1b4..84812f4f 100644 --- a/scwx-qt/source/scwx/qt/settings/settings_interface.hpp +++ b/scwx-qt/source/scwx/qt/settings/settings_interface.hpp @@ -126,6 +126,15 @@ public: */ void SetUnit(const double& scale, const std::string& abbreviation); + /** + * Enables or disables whitespace trimming of text input. + * Removes whitespace ('\t', '\n', '\v', '\f', '\r', and ' ') at the + * beginning and end of the string from a QLineEdit. + * + * @param trimmingEnabled If trimming should be enabled. + */ + void EnableTrimming(bool trimmingEnabled = true); + private: class Impl; std::unique_ptr p; diff --git a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp index c35607a9..74831a47 100644 --- a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp +++ b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp @@ -603,14 +603,17 @@ void SettingsDialogImpl::SetupGeneralTab() mapboxApiKey_.SetSettingsVariable(generalSettings.mapbox_api_key()); mapboxApiKey_.SetEditWidget(self_->ui->mapboxApiKeyLineEdit); mapboxApiKey_.SetResetButton(self_->ui->resetMapboxApiKeyButton); + mapboxApiKey_.EnableTrimming(); mapTilerApiKey_.SetSettingsVariable(generalSettings.maptiler_api_key()); mapTilerApiKey_.SetEditWidget(self_->ui->mapTilerApiKeyLineEdit); mapTilerApiKey_.SetResetButton(self_->ui->resetMapTilerApiKeyButton); + mapTilerApiKey_.EnableTrimming(); customStyleUrl_.SetSettingsVariable(generalSettings.custom_style_url()); customStyleUrl_.SetEditWidget(self_->ui->customMapUrlLineEdit); customStyleUrl_.SetResetButton(self_->ui->resetCustomMapUrlButton); + customStyleUrl_.EnableTrimming(); customStyleDrawLayer_.SetSettingsVariable( generalSettings.custom_style_draw_layer()); @@ -676,6 +679,7 @@ void SettingsDialogImpl::SetupGeneralTab() warningsProvider_.SetSettingsVariable(generalSettings.warnings_provider()); warningsProvider_.SetEditWidget(self_->ui->warningsProviderLineEdit); warningsProvider_.SetResetButton(self_->ui->resetWarningsProviderButton); + warningsProvider_.EnableTrimming(); antiAliasingEnabled_.SetSettingsVariable( generalSettings.anti_aliasing_enabled());