on 7e80e75 help sign in
unity8/Greeter/GreeterContent.qml
134 lines 3.9 kB history raw
1/*
2 * Copyright (C) 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 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 */
17import QtQuick 2.0
18import Ubuntu.Components 0.1
19import LightDM 0.1 as LightDM
20import "../Components"
22MouseArea {
23 id: root
24 anchors.fill: parent
26 property bool ready: wallpaper.status == Image.Ready
27 property bool leftTeaserPressed: teasingMouseArea.pressed &&
28 teasingMouseArea.mouseX < teasingMouseArea.width / 2
29 property bool rightTeaserPressed: teasingMouseArea.pressed &&
30 teasingMouseArea.mouseX > teasingMouseArea.width / 2
32 signal selected(int uid)
33 signal unlocked(int uid)
35 CrossFadeImage {
36 id: wallpaper
38 source: shell.background
39 anchors.fill: parent
40 fadeInFirst: false
41 }
43 Rectangle {
44 anchors.fill: parent
45 color: "black"
46 opacity: 0.4
47 }
49 Clock {
50 id: clock
51 visible: narrowMode
53 anchors {
54 top: parent.top
55 topMargin: units.gu(2)
56 horizontalCenter: parent.horizontalCenter
57 }
58 }
60 MouseArea {
61 id: teasingMouseArea
62 anchors.fill: parent
63 }
65 Loader {
66 id: loginLoader
67 objectName: "loginLoader"
68 anchors {
69 left: parent.left
70 leftMargin: Math.min(parent.width * 0.16, units.gu(20))
71 verticalCenter: parent.verticalCenter
72 }
73 width: units.gu(29)
74 height: parent.height
76 // TODO: Once we have a system API for determining which mode we are
77 // in, tablet/phone/desktop, that should be used instead of narrowMode.
78 source: greeter.narrowMode ? "" : "LoginList.qml"
80 onLoaded: {
81 item.currentIndex = greeterContentLoader.currentIndex;
82 selected(item.currentIndex);
83 item.resetAuthentication();
84 }
86 Binding {
87 target: loginLoader.item
88 property: "model"
89 value: greeterContentLoader.model
90 }
92 Connections {
93 target: loginLoader.item
95 onSelected: {
96 root.selected(uid);
97 }
99 onUnlocked: {
100 root.unlocked(uid);
101 }
103 onCurrentIndexChanged: {
104 if (greeterContentLoader.currentIndex !== loginLoader.item.currentIndex) {
105 greeterContentLoader.currentIndex = loginLoader.item.currentIndex;
106 }
107 }
108 }
109 }
111 Infographics {
112 id: infographics
113 height: narrowMode ? parent.height : 0.75 * parent.height
114 model: greeterContentLoader.infographicModel
116 Component.onCompleted: infographics.updateUsername(greeterContentLoader.currentIndex)
118 Connections {
119 target: root
120 onSelected: infographics.updateUsername(uid)
121 }
123 function updateUsername(uid) {
124 greeterContentLoader.infographicModel.username = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
125 greeterContentLoader.infographicModel.readyForDataChangeSlot();
126 }
128 anchors {
129 verticalCenter: parent.verticalCenter
130 left: narrowMode ? root.left : loginLoader.right
131 right: root.right
132 }
133 }