Unity 8
 All Classes Functions
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  signal accepted()
34 
35  property var _map: {
36  "com.canonical.snapdecision.textfield": textfield,
37  "com.canonical.snapdecision.pinlock" : pinLock,
38  }
39 
40  sourceComponent: {
41  if (menuData.type !== undefined) {
42  var component = _map[menuData.type];
43  if (component !== undefined) {
44  return component;
45  }
46  }
47  }
48 
49  Component {
50  id: textfield
51 
52  Column {
53  spacing: units.gu(2)
54 
55  anchors {
56  left: parent.left
57  right: parent.right
58  margins: spacing
59  }
60 
61  Component.onCompleted: {
62  menuModel.loadExtendedAttributes(menuIndex, {"x-echo-mode-password": "bool"});
63  checkBox.checked = menuData.ext.xEchoModePassword ? false : true
64  checkBoxRow.visible = menuData.ext.xEchoModePassword
65  }
66 
67  Label {
68  text: menuData.label
69  color: notification.sdFontColor
70  }
71 
72  TextField {
73  id: textfield
74 
75  // TODO using Qt.ImhNoPredictiveText here until lp #1291575 is fixed for ubuntu-ui-toolkit
76  inputMethodHints: Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
77  anchors {
78  left: parent.left
79  right: parent.right
80  }
81  echoMode: checkBox.checked ? TextInput.Normal : TextInput.Password
82  height: units.gu(5)
83  Component.onCompleted: {
84  forceActiveFocus();
85  }
86  onTextChanged: {
87  menuModel.changeState(menuIndex, text);
88  }
89  onAccepted: {
90  menuFactory.accepted()
91  }
92  }
93 
94  Row {
95  id: checkBoxRow
96 
97  spacing: units.gu(.5)
98 
99  CheckBox {
100  id: checkBox
101 
102  checked: false
103  activeFocusOnPress: false
104  }
105 
106  Label {
107  anchors.verticalCenter: checkBox.verticalCenter
108  text: i18n.tr("Show password")
109  color: notification.sdFontColor
110  }
111  }
112  }
113  }
114 
115  Component {
116  id: pinLock
117 
118  Lockscreen {
119  anchors {
120  left: parent.left
121  right: parent.right
122  }
123  height: menuFactory.maxHeight
124  infoText: i18n.tr("Enter SIM PIN")
125  errorText: i18n.tr("Sorry, incorrect PIN")
126  minPinLength: 4
127  maxPinLength: 8
128  background: shell.background
129 
130  onEntered: {
131  menuModel.changeState(menuIndex, passphrase);
132  }
133 
134  onCancel: {
135  menuModel.activate(menuIndex, false);
136  }
137 
138  onEmergencyCall: {
139  shell.activateApplication("dialer-app")
140  menuModel.activate(menuIndex, false)
141  }
142  }
143  }
144 }