Unity 8
 All Classes Functions Properties
NotificationMenuItemFactory.qml
1 /*
2  * Copyright 2013 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authors:
17  * Nick Dedekind <nick.dedekind@canonical.com>
18  */
19 
20 import QtQuick 2.0
21 import Ubuntu.Components 0.1
22 import "../Components"
23 
24 Loader {
25  id: menuFactory
26 
27  property QtObject menuModel: null
28  property QtObject menuData: null
29  property int menuIndex
30  property int maxHeight
31  readonly property bool fullscreen: menuData.type === "com.canonical.snapdecision.pinlock"
32 
33  property var _map: {
34  "com.canonical.snapdecision.textfield": textfield,
35  "com.canonical.snapdecision.pinlock" : pinLock,
36  }
37 
38  sourceComponent: {
39  if (menuData.type !== undefined) {
40  var component = _map[menuData.type];
41  if (component !== undefined) {
42  return component;
43  }
44  }
45  }
46 
47  Component {
48  id: textfield
49 
50  Column {
51  spacing: units.gu(2)
52 
53  anchors {
54  left: parent.left
55  right: parent.right
56  }
57 
58  Component.onCompleted: {
59  menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
60  checkBox.checked = menuData.ext.xEchoModePassword ? false : true
61  checkBoxRow.visible = menuData.ext.xEchoModePassword
62  }
63 
64  Label {
65  text: menuData.label
66  }
67 
68  TextField {
69  id: textfield
70 
71  // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
72  inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
73  anchors {
74  left: parent.left
75  right: parent.right
76  }
77  echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
78  height: units.gu(5)
79  onTextChanged: {
80  menuModel.changeState(menuIndex, text);
81  }
82  }
83 
84  Row {
85  id: checkBoxRow
86 
87  spacing: units.gu(.5)
88 
89  CheckBox {
90  id: checkBox
91 
92  checked: false
93  }
94 
95  Label {
96  anchors.verticalCenter: checkBox.verticalCenter
97  text: i18n.tr("Show password")
98  }
99  }
100  }
101  }
102 
103  Component {
104  id: pinLock
105 
106  Lockscreen {
107  anchors {
108  left: parent.left
109  right: parent.right
110  }
111  height: menuFactory.maxHeight
112  placeholderText: i18n.tr("Please enter SIM PIN")
113  background: shell.background
114 
115  onEntered: {
116  menuModel.changeState(menuIndex, passphrase);
117  entryEnabled = false;
118  }
119 
120  onCancel: {
121  menuModel.activate(menuIndex, false);
122  }
123  }
124  }
125 }