[TextField] Allow disabling reveal password button through KIOSK restriction

This introduces a new lineedit_reveal_password restriction (similar to lineedit_text_completion)
that disables the reveal password button on Plasma text fields, like the lock screen and WiFi password inputs.

Differential Revision: https://phabricator.kde.org/D3654
This commit is contained in:
Kai Uwe Broulik 2016-12-19 14:20:33 +01:00
parent eb81b3f162
commit a7ccca25ba
2 changed files with 8 additions and 4 deletions

View File

@ -22,7 +22,7 @@ import QtQuick 2.1
import QtQuick.Controls 1.2 as QtControls import QtQuick.Controls 1.2 as QtControls
import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.core 2.0 as PlasmaCore
import QtQuick.Controls.Styles.Plasma 2.0 as Styles import QtQuick.Controls.Styles.Plasma 2.0 as Styles
import org.kde.kconfig 1.0
/** /**
* A plasma theme based text field widget. * A plasma theme based text field widget.
@ -45,6 +45,10 @@ QtControls.TextField {
*/ */
property bool revealPasswordButtonShown: false property bool revealPasswordButtonShown: false
// this takes into account kiosk restriction
readonly property bool __effectiveRevealPasswordButtonShown: revealPasswordButtonShown
&& KAuthorized.authorize("lineedit_reveal_password")
//Deprecated/unsupported api //Deprecated/unsupported api
/** /**
* type: string * type: string
@ -88,10 +92,10 @@ QtControls.TextField {
PlasmaCore.IconItem { PlasmaCore.IconItem {
id: showPasswordButton id: showPasswordButton
source: revealPasswordButtonShown ? (textField.echoMode === TextInput.Normal ? "hint" : "visibility") : "" source: __effectiveRevealPasswordButtonShown ? (textField.echoMode === TextInput.Normal ? "hint" : "visibility") : ""
height: Math.max(textField.height * 0.8, units.iconSizes.small) height: Math.max(textField.height * 0.8, units.iconSizes.small)
width: height width: height
opacity: (textField.length > 0 && revealPasswordButtonShown && textField.enabled) ? 1 : 0 opacity: (textField.length > 0 && __effectiveRevealPasswordButtonShown && textField.enabled) ? 1 : 0
visible: opacity > 0 visible: opacity > 0
Behavior on opacity { Behavior on opacity {
NumberAnimation { NumberAnimation {

View File

@ -74,7 +74,7 @@ QtQuickControlStyle.TextFieldStyle {
var actionIconSize = Math.max(textField.height * 0.8, units.iconSizes.small); var actionIconSize = Math.max(textField.height * 0.8, units.iconSizes.small);
//actionCount is an int of the number of items //actionCount is an int of the number of items
var actionCount = (control.hasOwnProperty("clearButtonShown") && control.clearButtonShown) + var actionCount = (control.hasOwnProperty("clearButtonShown") && control.clearButtonShown) +
(control.hasOwnProperty("revealPasswordButtonShown") && control.revealPasswordButtonShown); (control.hasOwnProperty("__effectiveRevealPasswordButtonShown") && control.__effectiveRevealPasswordButtonShown);
return base.margins.right + (actionIconSize * actionCount) + (actionCount > 0 ? units.smallSpacing : 0); return base.margins.right + (actionIconSize * actionCount) + (actionCount > 0 ? units.smallSpacing : 0);
}) })
} }