passwordmanager/qml/touch/TouchTextField.qml

76 lines
2.4 KiB
QML

import QtQuick 2.1
import QtQuick.Controls 1.0
import QtQuick.Controls.Styles 1.0
import martchus.passwordmanager 2.0
TextField {
id: textfield
signal clearButtonClicked
implicitWidth: parent.width
property bool isEmpty: true
style: TextFieldStyle {
renderType: ApplicationInfo.isMobile ? Text.QtRendering : Text.NativeRendering
background: Rectangle {
radius: 8
border.width: 1
border.color: Qt.darker(ApplicationInfo.colors.blue, 1.6)
color: ApplicationInfo.colors.white
gradient: Gradient {
GradientStop { position: 0 ; color: "#ddd"}
GradientStop { position: 0.05 ; color: "#fff"}
}
implicitHeight: 60 * ApplicationInfo.ratio
opacity: 1
}
padding.left : (12 + 50) * ApplicationInfo.ratio
padding.right: (12 + 50) * ApplicationInfo.ratio
font.pixelSize: 28 * ApplicationInfo.ratio
font.family: "Open Sans"
font.letterSpacing: -0.25 * ApplicationInfo.ratio
selectedTextColor : ApplicationInfo.colors.lightGray
selectionColor : ApplicationInfo.colors.darkBlue
textColor : ApplicationInfo.colors.mediumGray
}
onClearButtonClicked: text = ""
Item {
id: item
anchors.left: parent.left
anchors.top: parent.top
height: parent.height
width: parent.height
Image {
opacity: 0.9
anchors.centerIn: item
height: iconSize
width: iconSize
source: ApplicationInfo.imagePath("magnifier.png")
property int iconSize: 50 * ApplicationInfo.ratio
}
}
onTextChanged: isEmpty = (text === "")
inputMethodHints: Qt.ImhNoPredictiveText
MouseArea {
z: 2
opacity: !textfield.isEmpty ? 1 : 0
Behavior on opacity {NumberAnimation{}}
anchors.right: parent.right
anchors.rightMargin: 4 * ApplicationInfo.ratio
anchors.top: parent.top
height: parent.height
width: parent.height
Image {
anchors.centerIn: parent
source: ApplicationInfo.imagePath("clear.png")
property int iconSize: 40 * ApplicationInfo.ratio
opacity: parent.pressed ? 1 : 0.9
width: iconSize
height: iconSize
}
onClicked: textfield.clearButtonClicked()
}
}