aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRisto Avila <risto.avila@digia.com>2014-03-11 12:04:52 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-12 11:15:27 +0100
commit405f1becac28ee324364df4e3df0446d951425e8 (patch)
tree1105dfb614a3ffcdadbb01d433f1a76e05f6bc8c
parent1511dc39a62e9d14b6755d6c2335547c85331d49 (diff)
Makes PasswordMaskDelay configurable through TextInput
Adds a new property to TextInput which can be used to override QPlatformTheme::PasswordMaskDelay. The new property is TextInput.passwordMaskDelay and takes in delay (ms) which time character is shown before masking it. This is only when echoMode is set to TextInput.Password [ChangeLog][QtQuick][TextInput] Added passwordMaskDelay property Change-Id: I52812b883db11fdd21b25154887c51df8a44f69c Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
-rw-r--r--src/quick/items/qquickitemsmodule.cpp1
-rw-r--r--src/quick/items/qquicktextinput.cpp38
-rw-r--r--src/quick/items/qquicktextinput_p.h6
-rw-r--r--src/quick/items/qquicktextinput_p_p.h2
4 files changed, 41 insertions, 6 deletions
diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp
index c9c8eeace3..0aed784b2e 100644
--- a/src/quick/items/qquickitemsmodule.cpp
+++ b/src/quick/items/qquickitemsmodule.cpp
@@ -190,6 +190,7 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor)
qmlRegisterType<QQuickTextEdit,1>(uri,2,1,"TextEdit");
qmlRegisterType<QQuickTextInput>(uri,major,minor,"TextInput");
qmlRegisterType<QQuickTextInput,2>(uri,2,2,"TextInput");
+ qmlRegisterType<QQuickTextInput,3>(uri,2,4,"TextInput");
qmlRegisterType<QQuickViewSection>(uri,major,minor,"ViewSection");
qmlRegisterType<QQuickItemLayer>();
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index ad79f0eadf..26dda5db6b 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -2059,9 +2059,8 @@ void QQuickTextInput::insert(int position, const QString &text)
{
Q_D(QQuickTextInput);
if (d->m_echoMode == QQuickTextInput::Password) {
- int delay = qGuiApp->styleHints()->passwordMaskDelay();
- if (delay > 0)
- d->m_passwordEchoTimer.start(delay, this);
+ if (d->m_passwordMaskDelay > 0)
+ d->m_passwordEchoTimer.start(d->m_passwordMaskDelay, this);
}
if (position < 0 || position > d->m_text.length())
return;
@@ -2241,6 +2240,34 @@ void QQuickTextInput::setPasswordCharacter(const QString &str)
}
/*!
+ \qmlproperty int QtQuick::TextInput::passwordMaskDelay
+ \since 5.4
+
+ Sets the delay before visible character is masked with password character, in milliseconds.
+
+ The reset method will be called by assigning undefined.
+*/
+int QQuickTextInput::passwordMaskDelay() const
+{
+ Q_D(const QQuickTextInput);
+ return d->m_passwordMaskDelay;
+}
+
+void QQuickTextInput::setPasswordMaskDelay(int delay)
+{
+ Q_D(QQuickTextInput);
+ if (d->m_passwordMaskDelay != delay) {
+ d->m_passwordMaskDelay = delay;
+ emit passwordMaskDelayChanged(delay);
+ }
+}
+
+void QQuickTextInput::resetPasswordMaskDelay()
+{
+ setPasswordMaskDelay(qGuiApp->styleHints()->passwordMaskDelay());
+}
+
+/*!
\qmlproperty string QtQuick::TextInput::displayText
This is the text displayed in the TextInput.
@@ -3478,9 +3505,8 @@ void QQuickTextInputPrivate::internalInsert(const QString &s)
{
Q_Q(QQuickTextInput);
if (m_echoMode == QQuickTextInput::Password) {
- int delay = qGuiApp->styleHints()->passwordMaskDelay();
- if (delay > 0)
- m_passwordEchoTimer.start(delay, q);
+ if (m_passwordMaskDelay > 0)
+ m_passwordEchoTimer.start(m_passwordMaskDelay, q);
}
Q_ASSERT(!hasSelectedText()); // insert(), processInputMethodEvent() call removeSelectedText() first.
if (m_maskData) {
diff --git a/src/quick/items/qquicktextinput_p.h b/src/quick/items/qquicktextinput_p.h
index 5f0250aaf1..5a88273543 100644
--- a/src/quick/items/qquicktextinput_p.h
+++ b/src/quick/items/qquicktextinput_p.h
@@ -94,6 +94,7 @@ class Q_QUICK_PRIVATE_EXPORT QQuickTextInput : public QQuickImplicitSizeItem
Q_PROPERTY(EchoMode echoMode READ echoMode WRITE setEchoMode NOTIFY echoModeChanged)
Q_PROPERTY(bool activeFocusOnPress READ focusOnPress WRITE setFocusOnPress NOTIFY activeFocusOnPressChanged)
Q_PROPERTY(QString passwordCharacter READ passwordCharacter WRITE setPasswordCharacter NOTIFY passwordCharacterChanged)
+ Q_PROPERTY(int passwordMaskDelay READ passwordMaskDelay WRITE setPasswordMaskDelay RESET resetPasswordMaskDelay NOTIFY passwordMaskDelayChanged REVISION 3)
Q_PROPERTY(QString displayText READ displayText NOTIFY displayTextChanged)
Q_PROPERTY(bool autoScroll READ autoScroll WRITE setAutoScroll NOTIFY autoScrollChanged)
Q_PROPERTY(bool selectByMouse READ selectByMouse WRITE setSelectByMouse NOTIFY selectByMouseChanged)
@@ -227,6 +228,10 @@ public:
QString passwordCharacter() const;
void setPasswordCharacter(const QString &str);
+ int passwordMaskDelay() const;
+ void setPasswordMaskDelay(int delay);
+ void resetPasswordMaskDelay();
+
QString displayText() const;
QQmlComponent* cursorDelegate() const;
@@ -300,6 +305,7 @@ Q_SIGNALS:
void inputMaskChanged(const QString &inputMask);
void echoModeChanged(EchoMode echoMode);
void passwordCharacterChanged();
+ Q_REVISION(3) void passwordMaskDelayChanged(int delay);
void displayTextChanged();
void activeFocusOnPressChanged(bool activeFocusOnPress);
void autoScrollChanged(bool autoScroll);
diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h
index 21bd1bd6d7..2cf127608e 100644
--- a/src/quick/items/qquicktextinput_p_p.h
+++ b/src/quick/items/qquicktextinput_p_p.h
@@ -111,6 +111,7 @@ public:
, mouseSelectionMode(QQuickTextInput::SelectCharacters)
, m_layoutDirection(Qt::LayoutDirectionAuto)
, m_passwordCharacter(qApp->styleHints()->passwordMaskCharacter())
+ , m_passwordMaskDelay(qApp->styleHints()->passwordMaskDelay())
, focusOnPress(true)
, cursorVisible(false)
, cursorPending(false)
@@ -250,6 +251,7 @@ public:
QChar m_blank;
QChar m_passwordCharacter;
+ int m_passwordMaskDelay;
bool focusOnPress:1;
bool cursorVisible:1;