forked from qt-creator/qt-creator
Utils: Make FancyLineEdit placeholder validation optional
Validation makes only sense if the placeholder is similar to
the actual contents, like a file path, not for explanatory text.
Amends 3dcdbe9.
Change-Id: I81ff7a3cf72f28c0fe49824b574b0997ada2d09b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -671,6 +671,7 @@ public:
|
|||||||
// the validation changes focus by opening a dialog
|
// the validation changes focus by opening a dialog
|
||||||
bool m_blockAutoApply = false;
|
bool m_blockAutoApply = false;
|
||||||
bool m_allowPathFromDevice = true;
|
bool m_allowPathFromDevice = true;
|
||||||
|
bool m_validatePlaceHolder = false;
|
||||||
|
|
||||||
template<class Widget> void updateWidgetFromCheckStatus(StringAspect *aspect, Widget *w)
|
template<class Widget> void updateWidgetFromCheckStatus(StringAspect *aspect, Widget *w)
|
||||||
{
|
{
|
||||||
@@ -985,6 +986,13 @@ void StringAspect::setAllowPathFromDevice(bool allowPathFromDevice)
|
|||||||
d->m_pathChooserDisplay->setAllowPathFromDevice(allowPathFromDevice);
|
d->m_pathChooserDisplay->setAllowPathFromDevice(allowPathFromDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StringAspect::setValidatePlaceHolder(bool validatePlaceHolder)
|
||||||
|
{
|
||||||
|
d->m_validatePlaceHolder = validatePlaceHolder;
|
||||||
|
if (d->m_pathChooserDisplay)
|
||||||
|
d->m_pathChooserDisplay->lineEdit()->setValidatePlaceHolder(validatePlaceHolder);
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets \a elideMode as label elide mode.
|
Sets \a elideMode as label elide mode.
|
||||||
*/
|
*/
|
||||||
@@ -1131,6 +1139,7 @@ void StringAspect::addToLayout(LayoutItem &parent)
|
|||||||
d->m_pathChooserDisplay->setPromptDialogTitle(d->m_prompDialogTitle);
|
d->m_pathChooserDisplay->setPromptDialogTitle(d->m_prompDialogTitle);
|
||||||
d->m_pathChooserDisplay->setCommandVersionArguments(d->m_commandVersionArguments);
|
d->m_pathChooserDisplay->setCommandVersionArguments(d->m_commandVersionArguments);
|
||||||
d->m_pathChooserDisplay->setAllowPathFromDevice(d->m_allowPathFromDevice);
|
d->m_pathChooserDisplay->setAllowPathFromDevice(d->m_allowPathFromDevice);
|
||||||
|
d->m_pathChooserDisplay->lineEdit()->setValidatePlaceHolder(d->m_validatePlaceHolder);
|
||||||
if (defaultValue() == value())
|
if (defaultValue() == value())
|
||||||
d->m_pathChooserDisplay->setDefaultValue(defaultValue());
|
d->m_pathChooserDisplay->setDefaultValue(defaultValue());
|
||||||
else
|
else
|
||||||
@@ -1169,6 +1178,7 @@ void StringAspect::addToLayout(LayoutItem &parent)
|
|||||||
d->m_lineEditDisplay->setValidationFunction(d->m_validator);
|
d->m_lineEditDisplay->setValidationFunction(d->m_validator);
|
||||||
d->m_lineEditDisplay->setTextKeepingActiveCursor(displayedString);
|
d->m_lineEditDisplay->setTextKeepingActiveCursor(displayedString);
|
||||||
d->m_lineEditDisplay->setReadOnly(isReadOnly());
|
d->m_lineEditDisplay->setReadOnly(isReadOnly());
|
||||||
|
d->m_lineEditDisplay->setValidatePlaceHolder(d->m_validatePlaceHolder);
|
||||||
d->updateWidgetFromCheckStatus(this, d->m_lineEditDisplay.data());
|
d->updateWidgetFromCheckStatus(this, d->m_lineEditDisplay.data());
|
||||||
addLabeledItem(parent, d->m_lineEditDisplay);
|
addLabeledItem(parent, d->m_lineEditDisplay);
|
||||||
useMacroExpander(d->m_lineEditDisplay);
|
useMacroExpander(d->m_lineEditDisplay);
|
||||||
|
|||||||
@@ -407,6 +407,7 @@ public:
|
|||||||
void setAutoApplyOnEditingFinished(bool applyOnEditingFinished);
|
void setAutoApplyOnEditingFinished(bool applyOnEditingFinished);
|
||||||
void setElideMode(Qt::TextElideMode elideMode);
|
void setElideMode(Qt::TextElideMode elideMode);
|
||||||
void setAllowPathFromDevice(bool allowPathFromDevice);
|
void setAllowPathFromDevice(bool allowPathFromDevice);
|
||||||
|
void setValidatePlaceHolder(bool validatePlaceHolder);
|
||||||
|
|
||||||
void validateInput();
|
void validateInput();
|
||||||
|
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ public:
|
|||||||
bool m_isFiltering = false;
|
bool m_isFiltering = false;
|
||||||
bool m_firstChange = true;
|
bool m_firstChange = true;
|
||||||
bool m_toolTipSet = false;
|
bool m_toolTipSet = false;
|
||||||
|
bool m_validatePlaceHolder = false;
|
||||||
|
|
||||||
QString m_lastFilterText;
|
QString m_lastFilterText;
|
||||||
|
|
||||||
@@ -469,6 +470,11 @@ QString FancyLineEdit::errorMessage() const
|
|||||||
return d->m_errorMessage;
|
return d->m_errorMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FancyLineEdit::setValidatePlaceHolder(bool on)
|
||||||
|
{
|
||||||
|
d->m_validatePlaceHolder = on;
|
||||||
|
}
|
||||||
|
|
||||||
void FancyLineEdit::validate()
|
void FancyLineEdit::validate()
|
||||||
{
|
{
|
||||||
const QString t = text();
|
const QString t = text();
|
||||||
@@ -501,7 +507,8 @@ void FancyLineEdit::validate()
|
|||||||
p.setColor(QPalette::Active, QPalette::Text,
|
p.setColor(QPalette::Active, QPalette::Text,
|
||||||
newState == Invalid ? d->m_errorTextColor : d->m_okTextColor);
|
newState == Invalid ? d->m_errorTextColor : d->m_okTextColor);
|
||||||
p.setColor(QPalette::Active, QPalette::PlaceholderText,
|
p.setColor(QPalette::Active, QPalette::PlaceholderText,
|
||||||
validates ? d->m_placeholderTextColor : d->m_errorTextColor);
|
validates || !d->m_validatePlaceHolder
|
||||||
|
? d->m_placeholderTextColor : d->m_errorTextColor);
|
||||||
setPalette(p);
|
setPalette(p);
|
||||||
|
|
||||||
if (validHasChanged)
|
if (validHasChanged)
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ public:
|
|||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
QString errorMessage() const;
|
QString errorMessage() const;
|
||||||
|
|
||||||
|
void setValidatePlaceHolder(bool on);
|
||||||
|
|
||||||
void setValidationFunction(const ValidationFunction &fn);
|
void setValidationFunction(const ValidationFunction &fn);
|
||||||
static ValidationFunction defaultValidationFunction();
|
static ValidationFunction defaultValidationFunction();
|
||||||
void validate();
|
void validate();
|
||||||
|
|||||||
@@ -88,9 +88,10 @@ AbstractSettings::AbstractSettings(const QString &name, const QString &ending)
|
|||||||
setSettingsGroups(Utils::Constants::BEAUTIFIER_SETTINGS_GROUP, name);
|
setSettingsGroups(Utils::Constants::BEAUTIFIER_SETTINGS_GROUP, name);
|
||||||
|
|
||||||
command.setSettingsKey("command");
|
command.setSettingsKey("command");
|
||||||
command.setExpectedKind(Utils::PathChooser::ExistingCommand);
|
command.setExpectedKind(PathChooser::ExistingCommand);
|
||||||
command.setCommandVersionArguments({"--version"});
|
command.setCommandVersionArguments({"--version"});
|
||||||
command.setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle("Clang Format"));
|
command.setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle("Clang Format"));
|
||||||
|
command.setValidatePlaceHolder(true);
|
||||||
|
|
||||||
supportedMimeTypes.setDisplayStyle(StringAspect::LineEditDisplay);
|
supportedMimeTypes.setDisplayStyle(StringAspect::LineEditDisplay);
|
||||||
supportedMimeTypes.setSettingsKey("supportedMime");
|
supportedMimeTypes.setSettingsKey("supportedMime");
|
||||||
|
|||||||
Reference in New Issue
Block a user