2 * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18 import AccountsService 0.1
19 import Ubuntu.Components 0.1
20 import LightDM 0.1 as LightDM
21 import "../Components"
27 property var inputMethod
29 property bool ready: background.source == "" || background.status == Image.Ready || background.status == Image.Error
31 signal selected(int uid)
32 signal unlocked(int uid)
34 function tryToUnlock() {
35 if (loginLoader.item) {
36 loginLoader.item.tryToUnlock()
41 if (loginLoader.item) {
42 loginLoader.item.reset()
47 // In case background fails to load
55 objectName: "greeterBackground"
58 topMargin: backgroundTopMargin
60 fillMode: Image.PreserveAspectCrop
61 // Limit how much memory we'll reserve for this image
62 sourceSize.height: height
63 sourceSize.width: width
64 source: greeter.background
75 objectName: "loginLoader"
78 leftMargin: Math.min(parent.width * 0.16, units.gu(20))
82 height: inputMethod && inputMethod.visible ? parent.height - inputMethod.keyboardRectangle.height
84 Behavior on height { UbuntuNumberAnimation {} }
86 // TODO: Once we have a system API for determining which mode we are
87 // in, tablet/phone/desktop, that should be used instead of narrowMode.
88 source: greeter.narrowMode ? "" : "LoginList.qml"
91 item.currentIndex = greeterContentLoader.currentIndex;
95 target: loginLoader.item
97 value: greeterContentLoader.model
101 target: loginLoader.item
111 onCurrentIndexChanged: {
112 if (greeterContentLoader.currentIndex !== loginLoader.item.currentIndex) {
113 greeterContentLoader.currentIndex = loginLoader.item.currentIndex;
121 objectName: "infographics"
122 height: narrowMode ? parent.height : 0.75 * parent.height
123 model: greeterContentLoader.infographicModel
124 clip: true // clip large data bubbles
126 property string selectedUser
127 property string infographicUser: AccountsService.statsWelcomeScreen ? selectedUser : ""
128 onInfographicUserChanged: greeterContentLoader.infographicModel.username = infographicUser
130 Component.onCompleted: {
131 selectedUser = greeterContentLoader.model.data(greeterContentLoader.currentIndex, LightDM.UserRoles.NameRole)
132 greeterContentLoader.infographicModel.username = infographicUser
133 greeterContentLoader.infographicModel.readyForDataChange()
138 onSelected: infographics.selectedUser = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
143 onLanguageChanged: greeterContentLoader.infographicModel.readyForDataChange()
147 verticalCenter: parent.verticalCenter
148 left: narrowMode ? root.left : loginLoader.right
159 topMargin: units.gu(2)
160 horizontalCenter: parent.horizontalCenter