119 lines
3.2 KiB
QML
119 lines
3.2 KiB
QML
|
|
/**
|
|
*
|
|
* gPodder QML UI Reference Implementation
|
|
* Copyright (c) 2013, Thomas Perl <m@thp.io>
|
|
*
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
|
* purpose with or without fee is hereby granted, provided that the above
|
|
* copyright notice and this permission notice appear in all copies.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
* PERFORMANCE OF THIS SOFTWARE.
|
|
*
|
|
*/
|
|
|
|
import QtQuick 2.0
|
|
|
|
import 'common/constants.js' as Constants
|
|
import 'icons/icons.js' as Icons
|
|
|
|
Item {
|
|
id: textField
|
|
|
|
property alias text: textInput.text
|
|
property string placeholderText: ''
|
|
signal accepted
|
|
|
|
function paste() {
|
|
textInput.paste();
|
|
}
|
|
|
|
height: 50 * pgst.scalef
|
|
|
|
TextInput {
|
|
id: textInput
|
|
|
|
Component.onDestruction: {
|
|
// Return keyboard focus to pgst
|
|
pgst.focus = true;
|
|
}
|
|
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
left: parent.left
|
|
right: clipboardIcon.left
|
|
margins: 5 * pgst.scalef
|
|
}
|
|
clip: true
|
|
|
|
inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
|
|
|
|
color: Constants.colors.text
|
|
selectionColor: Constants.colors.background
|
|
font.pixelSize: parent.height * 0.7
|
|
font.family: placeholder.font.family
|
|
focus: true
|
|
onAccepted: textField.accepted()
|
|
}
|
|
|
|
PLabel {
|
|
id: placeholder
|
|
anchors.fill: textInput
|
|
visible: (textInput.text == '')
|
|
text: textField.placeholderText
|
|
color: Constants.colors.placeholder
|
|
font.pixelSize: textInput.font.pixelSize
|
|
}
|
|
|
|
IconMenuItem {
|
|
id: clipboardIcon
|
|
|
|
anchors {
|
|
right: parent.right
|
|
margins: 5 * pgst.scalef
|
|
verticalCenter: parent.verticalCenter
|
|
}
|
|
|
|
icon: Icons.paperclip
|
|
onClicked: {
|
|
pgst.showSelection([
|
|
{
|
|
label: 'Copy',
|
|
callback: function () {
|
|
textInput.copy();
|
|
}
|
|
},
|
|
{
|
|
label: 'Paste',
|
|
callback: function() {
|
|
textInput.paste();
|
|
}
|
|
},
|
|
{
|
|
label: 'Cut',
|
|
callback: function() {
|
|
textInput.cut();
|
|
}
|
|
},
|
|
{
|
|
label: 'Clear',
|
|
callback: function() {
|
|
textInput.text = '';
|
|
}
|
|
},
|
|
{
|
|
label: 'Select all',
|
|
callback: function() {
|
|
textInput.selectAll();
|
|
}
|
|
}
|
|
]);
|
|
}
|
|
}
|
|
}
|