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.left: parent.left; anchors.right: parent.right
54 
55  Component.onCompleted: {
56  menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
57  checkBox.checked = menuData.ext.xEchoModePassword ? false : true
58  checkBoxRow.visible = menuData.ext.xEchoModePassword
59  }
60 
61  Label {
62  text: menuData.label
63  }
64 
65  TextField {
66  id: textfield
67 
68  // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
69  inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
70  anchors.left: parent.left; anchors.right: parent.right
71  echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
72  height: units.gu(5)
73  onTextChanged: {
74  menuModel.changeState(menuIndex, text);
75  }
76  }
77 
78  Row {
79  id: checkBoxRow
80 
81  spacing: units.gu(.5)
82 
83  CheckBox {
84  id: checkBox
85 
86  checked: false
87  }
88 
89  Label {
90  anchors.verticalCenter: checkBox.verticalCenter
91  text: i18n.tr("Show password")
92  }
93  }
94  }
95  }
96 
97  Component {
98  id: pinLock
99 
100  Lockscreen {
101  anchors.left: parent.left; anchors.right: parent.right
102  height: menuFactory.maxHeight
103  placeholderText: i18n.tr("Please enter SIM PIN")
104  background: shell.background
105 
106  onEntered: {
107  menuModel.changeState(menuIndex, passphrase);
108  entryEnabled = false;
109  }
110 
111  onCancel: {
112  menuModel.activate(menuIndex, false);
113  }
114  }
115  }
116 }