Merge pull request #285 from AdenKoperczak/trim_whitespace_from_inputs

Trim white space from inputs
This commit is contained in:
Dan Paulat 2024-10-14 06:16:50 -05:00 committed by GitHub
commit 620a0dba25
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 34 additions and 4 deletions

View file

@ -56,6 +56,8 @@ public:
double unitScale_ {1}; double unitScale_ {1};
std::optional<std::string> unitAbbreviation_ {}; std::optional<std::string> unitAbbreviation_ {};
bool unitEnabled_ {false}; bool unitEnabled_ {false};
bool trimmingEnabled_ {false};
}; };
template<class T> template<class T>
@ -191,8 +193,11 @@ void SettingsInterface<T>::SetEditWidget(QWidget* widget)
p->context_.get(), p->context_.get(),
[this](const QString& text) [this](const QString& text)
{ {
QString trimmedText =
p->trimmingEnabled_ ? text.trimmed() : text;
// Map to value if required // Map to value if required
std::string value {text.toStdString()}; std::string value {trimmedText.toStdString()};
if (p->mapToValue_ != nullptr) if (p->mapToValue_ != nullptr)
{ {
value = p->mapToValue_(value); value = p->mapToValue_(value);
@ -488,6 +493,12 @@ void SettingsInterface<T>::SetUnit(const double& scale,
p->UpdateUnitLabel(); p->UpdateUnitLabel();
} }
template<class T>
void SettingsInterface<T>::EnableTrimming(bool trimmingEnabled)
{
p->trimmingEnabled_ = trimmingEnabled;
}
template<class T> template<class T>
template<class U> template<class U>
void SettingsInterface<T>::Impl::SetWidgetText(U* widget, const T& currentValue) void SettingsInterface<T>::Impl::SetWidgetText(U* widget, const T& currentValue)

View file

@ -121,11 +121,20 @@ public:
/** /**
* Sets the unit to be used by this setting. * Sets the unit to be used by this setting.
* *
* @param scale The radio of the current unit to the base unit * @param scale The ratio of the current unit to the base unit
* @param abbreviation The abreviation to be displayed * @param abbreviation The abbreviation to be displayed
*/ */
void SetUnit(const double& scale, const std::string& abbreviation); 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: private:
class Impl; class Impl;
std::unique_ptr<Impl> p; std::unique_ptr<Impl> p;

View file

@ -603,14 +603,17 @@ void SettingsDialogImpl::SetupGeneralTab()
mapboxApiKey_.SetSettingsVariable(generalSettings.mapbox_api_key()); mapboxApiKey_.SetSettingsVariable(generalSettings.mapbox_api_key());
mapboxApiKey_.SetEditWidget(self_->ui->mapboxApiKeyLineEdit); mapboxApiKey_.SetEditWidget(self_->ui->mapboxApiKeyLineEdit);
mapboxApiKey_.SetResetButton(self_->ui->resetMapboxApiKeyButton); mapboxApiKey_.SetResetButton(self_->ui->resetMapboxApiKeyButton);
mapboxApiKey_.EnableTrimming();
mapTilerApiKey_.SetSettingsVariable(generalSettings.maptiler_api_key()); mapTilerApiKey_.SetSettingsVariable(generalSettings.maptiler_api_key());
mapTilerApiKey_.SetEditWidget(self_->ui->mapTilerApiKeyLineEdit); mapTilerApiKey_.SetEditWidget(self_->ui->mapTilerApiKeyLineEdit);
mapTilerApiKey_.SetResetButton(self_->ui->resetMapTilerApiKeyButton); mapTilerApiKey_.SetResetButton(self_->ui->resetMapTilerApiKeyButton);
mapTilerApiKey_.EnableTrimming();
customStyleUrl_.SetSettingsVariable(generalSettings.custom_style_url()); customStyleUrl_.SetSettingsVariable(generalSettings.custom_style_url());
customStyleUrl_.SetEditWidget(self_->ui->customMapUrlLineEdit); customStyleUrl_.SetEditWidget(self_->ui->customMapUrlLineEdit);
customStyleUrl_.SetResetButton(self_->ui->resetCustomMapUrlButton); customStyleUrl_.SetResetButton(self_->ui->resetCustomMapUrlButton);
customStyleUrl_.EnableTrimming();
customStyleDrawLayer_.SetSettingsVariable( customStyleDrawLayer_.SetSettingsVariable(
generalSettings.custom_style_draw_layer()); generalSettings.custom_style_draw_layer());
@ -672,10 +675,12 @@ void SettingsDialogImpl::SetupGeneralTab()
nmeaSource_.SetSettingsVariable(generalSettings.nmea_source()); nmeaSource_.SetSettingsVariable(generalSettings.nmea_source());
nmeaSource_.SetEditWidget(self_->ui->nmeaSourceLineEdit); nmeaSource_.SetEditWidget(self_->ui->nmeaSourceLineEdit);
nmeaSource_.SetResetButton(self_->ui->resetNmeaSourceButton); nmeaSource_.SetResetButton(self_->ui->resetNmeaSourceButton);
nmeaSource_.EnableTrimming();
warningsProvider_.SetSettingsVariable(generalSettings.warnings_provider()); warningsProvider_.SetSettingsVariable(generalSettings.warnings_provider());
warningsProvider_.SetEditWidget(self_->ui->warningsProviderLineEdit); warningsProvider_.SetEditWidget(self_->ui->warningsProviderLineEdit);
warningsProvider_.SetResetButton(self_->ui->resetWarningsProviderButton); warningsProvider_.SetResetButton(self_->ui->resetWarningsProviderButton);
warningsProvider_.EnableTrimming();
antiAliasingEnabled_.SetSettingsVariable( antiAliasingEnabled_.SetSettingsVariable(
generalSettings.anti_aliasing_enabled()); generalSettings.anti_aliasing_enabled());
@ -750,6 +755,7 @@ void SettingsDialogImpl::SetupPalettesColorTablesTab()
colorTable.SetSettingsVariable(colorTableVariable); colorTable.SetSettingsVariable(colorTableVariable);
colorTable.SetEditWidget(lineEdit); colorTable.SetEditWidget(lineEdit);
colorTable.SetResetButton(resetButton); colorTable.SetResetButton(resetButton);
colorTable.EnableTrimming();
colorTableVariable.RegisterValueStagedCallback( colorTableVariable.RegisterValueStagedCallback(
[colorTableType, imageLabel](const std::string& value) [colorTableType, imageLabel](const std::string& value)
@ -873,6 +879,7 @@ void SettingsDialogImpl::SetupAudioTab()
alertAudioSoundFile_.SetSettingsVariable(audioSettings.alert_sound_file()); alertAudioSoundFile_.SetSettingsVariable(audioSettings.alert_sound_file());
alertAudioSoundFile_.SetEditWidget(self_->ui->alertAudioSoundLineEdit); alertAudioSoundFile_.SetEditWidget(self_->ui->alertAudioSoundLineEdit);
alertAudioSoundFile_.SetResetButton(self_->ui->resetAlertAudioSoundButton); alertAudioSoundFile_.SetResetButton(self_->ui->resetAlertAudioSoundButton);
alertAudioSoundFile_.EnableTrimming();
QObject::connect( QObject::connect(
self_->ui->alertAudioSoundSelectButton, self_->ui->alertAudioSoundSelectButton,
@ -1085,6 +1092,7 @@ void SettingsDialogImpl::SetupAudioTab()
alertAudioCounty_.SetSettingsVariable(audioSettings.alert_county()); alertAudioCounty_.SetSettingsVariable(audioSettings.alert_county());
alertAudioCounty_.SetEditWidget(self_->ui->alertAudioCountyLineEdit); alertAudioCounty_.SetEditWidget(self_->ui->alertAudioCountyLineEdit);
alertAudioCounty_.SetResetButton(self_->ui->resetAlertAudioCountyButton); alertAudioCounty_.SetResetButton(self_->ui->resetAlertAudioCountyButton);
alertAudioCounty_.EnableTrimming();
QObject::connect(self_->ui->alertAudioWFOSelectButton, QObject::connect(self_->ui->alertAudioWFOSelectButton,
&QAbstractButton::clicked, &QAbstractButton::clicked,
@ -1117,6 +1125,7 @@ void SettingsDialogImpl::SetupAudioTab()
alertAudioWFO_.SetSettingsVariable(audioSettings.alert_wfo()); alertAudioWFO_.SetSettingsVariable(audioSettings.alert_wfo());
alertAudioWFO_.SetEditWidget(self_->ui->alertAudioWFOLineEdit); alertAudioWFO_.SetEditWidget(self_->ui->alertAudioWFOLineEdit);
alertAudioWFO_.SetResetButton(self_->ui->resetAlertAudioWFOButton); alertAudioWFO_.SetResetButton(self_->ui->resetAlertAudioWFOButton);
alertAudioWFO_.EnableTrimming();
} }
void SettingsDialogImpl::SetupTextTab() void SettingsDialogImpl::SetupTextTab()

View file

@ -17,7 +17,8 @@ std::string NormalizeUrl(const std::string& urlString)
std::string normalizedUrl; std::string normalizedUrl;
// Normalize URL string // Normalize URL string
QUrl url = QUrl::fromUserInput(QString::fromStdString(urlString)); QString trimmedUrlString = QString::fromStdString(urlString).trimmed();
QUrl url = QUrl::fromUserInput(trimmedUrlString);
if (url.isLocalFile()) if (url.isLocalFile())
{ {
normalizedUrl = QDir::toNativeSeparators(url.toLocalFile()).toStdString(); normalizedUrl = QDir::toNativeSeparators(url.toLocalFile()).toStdString();