Unity 8
ScopeSettingString.qml
1 /*
2  * Copyright (C) 2015 Canonical, Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.4
18 import Ubuntu.Components 1.3
19 import Ubuntu.Components.ListItems 1.3 as ListItem
20 
21 ScopeSetting {
22  id: root
23  height: listItem.height
24 
25  property string mode: "string"
26 
27  ListItem.Empty {
28  id: listItem
29  onClicked: {
30  control.forceActiveFocus();
31  control.selectAll();
32  }
33 
34  Label {
35  id: label
36  anchors {
37  left: parent.left
38  leftMargin: settingMargins
39  right: control.left
40  rightMargin: units.gu(1)
41  verticalCenter: parent.verticalCenter
42  }
43  text: widgetData.displayName
44  elide: Text.ElideMiddle
45  maximumLineCount: 2
46  wrapMode: Text.Wrap
47  color: scopeStyle ? scopeStyle.foreground : theme.palette.normal.baseText
48  }
49 
50  TextField {
51  id: control
52  objectName: "control"
53  anchors {
54  right: parent.right
55  rightMargin: settingMargins
56  verticalCenter: parent.verticalCenter
57  }
58  width: root.mode == "number" ? units.gu(8) : units.gu(12)
59  text: widgetData.value
60  color: scopeStyle ? scopeStyle.foreground : theme.palette.normal.fieldText
61  validator: root.mode == "number" ? doubleValidator : null
62  hasClearButton: root.mode == "number" ? false : true
63 
64  DoubleValidator {
65  id: doubleValidator
66  }
67 
68  function updateText() {
69  if (acceptableInput) {
70  text = displayText;
71  root.updated(text);
72  }
73  }
74 
75  onAccepted: updateText()
76  onActiveFocusChanged: {
77  if (!activeFocus) {
78  updateText();
79  }
80  }
81 
82  readonly property bool inputMethodVisible: Qt.inputMethod.visible
83  onInputMethodVisibleChanged: {
84  if(inputMethodVisible && activeFocus)
85  root.makeSureVisible(control);
86  }
87  }
88  }
89 }