Add whitespace trimming to some settings

This commit is contained in:
AdenKoperczak 2024-10-13 09:59:24 -04:00
parent 67706dc186
commit 25fb9bdae0
3 changed files with 25 additions and 1 deletions

View file

@ -56,6 +56,8 @@ public:
double unitScale_ {1};
std::optional<std::string> unitAbbreviation_ {};
bool unitEnabled_ {false};
bool trimmingEnabled_ {false};
};
template<class T>
@ -191,8 +193,11 @@ void SettingsInterface<T>::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<T>::SetUnit(const double& scale,
p->UpdateUnitLabel();
}
template<class T>
void SettingsInterface<T>::EnableTrimming(bool trimmingEnabled)
{
p->trimmingEnabled_ = trimmingEnabled;
}
template<class T>
template<class U>
void SettingsInterface<T>::Impl::SetWidgetText(U* widget, const T& currentValue)

View file

@ -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<Impl> p;