@@ -67,10 +67,14 @@ FocusScope {
68 readonly property bool isLabel: model.type == LightDMService.prompts.Message ||
68 readonly property bool isLabel: model.type == LightDMService.prompts.Message ||
69 model.type == LightDMService.prompts.Error
69 model.type == LightDMService.prompts.Error
70− readonly property var modelData: model
70+ readonly property var modelText: model.text
71+ readonly property var modelType: model.type
72+ readonly property var modelIndex: model.index
72 sourceComponent: isLabel ? infoLabel : greeterPrompt
74 sourceComponent: isLabel ? infoLabel : greeterPrompt
74 onLoaded: {
78 onLoaded: {
75 for (var i = 0; i < repeater.count; i++) {
79 for (var i = 0; i < repeater.count; i++) {
76 var item = repeater.itemAt(i);
80 var item = repeater.itemAt(i);
@@ -81,12 +85,6 @@ FocusScope {
82 loader.item.opacity = 1;
86 loader.item.opacity = 1;
88− value: loader.modelData
@@ -95,19 +93,18 @@ FocusScope {
95 id: infoLabel
93 id: infoLabel
97 FadingLabel {
95 FadingLabel {
98− objectName: "infoLabel" + model.index
96+ objectName: "infoLabel" + modelIndex
99 width: root.width
97 width: root.width
102 readonly property bool isPrompt: false
99 readonly property bool isPrompt: false
104− color: model.type === LightDMService.prompts.Message ? theme.palette.normal.raisedSecondaryText
101+ color: modelType === LightDMService.prompts.Message ? theme.palette.normal.raisedSecondaryText
105 : theme.palette.normal.negative
102 : theme.palette.normal.negative
106 fontSize: "small"
103 fontSize: "small"
107 textFormat: Text.PlainText
104 textFormat: Text.PlainText
108− text: model.text
105+ text: modelText
110− visible: model.type === LightDMService.prompts.Message
107+ visible: modelType === LightDMService.prompts.Message
112 Behavior on opacity { UbuntuNumberAnimation {} }
109 Behavior on opacity { UbuntuNumberAnimation {} }
113 opacity: 0
110 opacity: 0
@@ -118,23 +115,23 @@ FocusScope {
118 id: greeterPrompt
115 id: greeterPrompt
120 GreeterPrompt {
117 GreeterPrompt {
121− objectName: "greeterPrompt" + model.index
118+ objectName: "greeterPrompt" + modelIndex
122 width: root.width
119 width: root.width
124− property var model
121+ property bool isAlphanumeric: modelText !== "" || root.alphanumeric
126 interactive: root.interactive
123 interactive: root.interactive
127− isAlphanumeric: model.text !== "" || root.alphanumeric
128− isPrompt: model.type !== LightDMService.prompts.Button
124+ isPrompt: modelType !== LightDMService.prompts.Button
129− isSecret: model.type === LightDMService.prompts.Secret
125+ isSecret: modelType === LightDMService.prompts.Secret
126+ isPinPrompt: isPrompt && !isAlphanumeric && isSecret
130 loginError: root.loginError
127 loginError: root.loginError
131 hasKeyboard: root.hasKeyboard
128 hasKeyboard: root.hasKeyboard
132− text: model.text ? model.text : (isAlphanumeric ? i18n.tr("Passphrase") : i18n.tr("Passcode"))
129+ text: modelText ? modelText : (isAlphanumeric ? i18n.tr("Passphrase") : i18n.tr("Passcode"))
134 onClicked: root.clicked()
131 onClicked: root.clicked()
135 onAccepted: {
132 onAccepted: {
136 // If there is another GreeterPrompt, focus it.
133 // If there is another GreeterPrompt, focus it.
137− for (var i = model.index + 1; i < repeater.count; i++) {
134+ for (var i = modelIndex + 1; i < repeater.count; i++) {
138 var item = repeater.itemAt(i).item;
135 var item = repeater.itemAt(i).item;
139 if (item.isPrompt) {
136 if (item.isPrompt) {
140 item.forceActiveFocus();
137 item.forceActiveFocus();