@@ -15,6 +15,7 @@
1515 */
1616
1717import QtQuick 2.3
18+import QtQuick.Controls 1.3
1819import AccountsService 0.1
1920import QMenuModel 0.1 as QMenuModel
2021import Qt.labs.folderlistmodel 2.1
@@ -50,81 +51,152 @@ LocalComponents.Page {
5051 Component.onCompleted: start()
5152 }
5253
53− Column {
54+ Component.onCompleted: {
55+ group.bindCheckable(hereCheckLabel)
56+ group.bindCheckable(gpsCheckLabel)
57+ group.bindCheckable(nopeCheckLabel)
58+ }
59+
60+ ExclusiveGroup {
61+ id: group
62+ }
63+
64+ Item {
5465 id: column
5566 anchors.fill: content
56− spacing: units.gu(4)
5767 anchors.topMargin: units.gu(4)
5868
59− Column {
60− anchors.left: parent.left
61− anchors.right: parent.right
62− height: childrenRect.height
63− spacing: units.gu(2)
64−
65− LocalComponents.CheckableSetting {
66− id: hereCheck
67− objectName: "hereCheck"
68− showDivider: false
69− text: i18n.tr("Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location (recommended)")
70− checked: true
71− onTriggered: {
72− gpsCheck.checked = false;
73− hereCheck.checked = true;
74− nopeCheck.checked = false;
69+ Label {
70+ id: hereCheckLabel
71+ anchors {
72+ left: parent.left
73+ right: parent.right
74+ top: parent.top
75+ rightMargin: rightMargin
76+ }
77+
78+ wrapMode: Text.WordWrap
79+ color: "black"
80+ font.weight: checked ? Font.Normal : Font.Light
81+ text: i18n.tr("Use GPS, Wi-Fi hotspots and mobile network anonymously to detect location (recommended)")
82+ property bool checked: true
83+
84+ MouseArea {
85+ anchors.fill: parent
86+ onClicked: {
87+ hereCheckLabel.checked = !hereCheckLabel.checked
7588 }
7689 }
90+ }
7791
78− Label {
79− id: termsLabel
80− objectName: "hereTermsLink"
81− anchors.left: parent.left
82− anchors.leftMargin: hereCheck.labelOffset
83− anchors.right: parent.right
84− wrapMode: Text.Wrap
85− linkColor: "#dd4814"
86− color: "black"
87− fontSize: "small"
88− font.weight: Font.Light
89− // TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
90− text: i18n.tr("By selecting this option you agree to the Nokia HERE <a href='#'>terms and conditions</a>.")
91− onLinkActivated: pageStack.load(Qt.resolvedUrl("here-terms.qml"))
92+ Label {
93+ id: hereTermsLabel
94+ anchors {
95+ left: parent.left
96+ right: parent.right
97+ top: hereCheckLabel.bottom
98+ topMargin: units.gu(1)
99+ rightMargin: rightMargin
92100 }
101+
102+ wrapMode: Text.WordWrap
103+ color: "black"
104+ font.weight: Font.Light
105+ fontSize: "small"
106+ linkColor: "#dd4814"
107+ text: i18n.tr("By selecting this option you agree to the Nokia HERE <a href='#'>terms and conditions</a>.")
108+ onLinkActivated: pageStack.load(Qt.resolvedUrl("here-terms.qml"))
109+ }
110+
111+ Image {
112+ fillMode: Image.PreserveAspectFit
113+ height: hereCheckLabel.height
114+ source: "data/Tick.png"
115+ opacity: hereCheckLabel.checked ? 1 : 0
116+ anchors.right: parent.right
93117 }
94118
95− LocalComponents.CheckableSetting {
96− id: gpsCheck
97− objectName: "gpsCheck"
98− showDivider: false
119+ Label {
120+ id: gpsCheckLabel
121+ anchors {
122+ left: parent.left
123+ right: parent.right
124+ top: hereTermsLabel.bottom
125+ topMargin: units.gu(3)
126+ rightMargin: rightMargin
127+ }
99128 text: i18n.tr("GPS only")
100− onTriggered: {
101− gpsCheck.checked = true;
102− hereCheck.checked = false;
103− nopeCheck.checked = false;
129+ wrapMode: Text.WordWrap
130+ color: "black"
131+ font.weight: checked ? Font.Normal : Font.Light
132+ width: content.width
133+ property bool checked: false
134+
135+ MouseArea {
136+ anchors.fill: parent
137+ onClicked: {
138+ gpsCheckLabel.checked = !gpsCheckLabel.checked
139+ }
104140 }
105141 }
106142
107− LocalComponents.CheckableSetting {
108− id: nopeCheck
109− objectName: "nopeCheck"
110− showDivider: false
143+ Image {
144+ fillMode: Image.PreserveAspectFit
145+ height: gpsCheckLabel.height
146+ source: "data/Tick.png"
147+ opacity: gpsCheckLabel.checked ? 1 : 0
148+ anchors.right: parent.right
149+ anchors.verticalCenter: gpsCheckLabel.verticalCenter
150+ }
151+
152+ Label {
153+ id: nopeCheckLabel
154+ anchors {
155+ left: parent.left
156+ right: parent.right
157+ top: gpsCheckLabel.bottom
158+ topMargin: units.gu(3)
159+ rightMargin: rightMargin
160+ }
161+ wrapMode: Text.WordWrap
162+ color: "black"
163+ font.weight: checked ? Font.Normal : Font.Light
164+ width: content.width
111165 text: i18n.tr("Don't use my location")
112− onTriggered: {
113− gpsCheck.checked = false;
114− hereCheck.checked = false;
115− nopeCheck.checked = true;
166+ property bool checked: false
167+
168+ MouseArea {
169+ anchors.fill: parent
170+ onClicked: {
171+ nopeCheckLabel.checked = !nopeCheckLabel.checked
172+ }
116173 }
117174 }
118175
119− Label {
120− anchors.left: parent.left
176+ Image {
177+ fillMode: Image.PreserveAspectFit
178+ height: nopeCheckLabel.height
179+ source: "data/Tick.png"
180+ opacity: nopeCheckLabel.checked ? 1 : 0
121181 anchors.right: parent.right
182+ anchors.verticalCenter: nopeCheckLabel.verticalCenter
183+ }
184+
185+ Label {
186+ id: infoLabel
187+ anchors {
188+ left: parent.left
189+ right: parent.right
190+ top: nopeCheckLabel.bottom
191+ topMargin: units.gu(3)
192+ }
122193 wrapMode: Text.Wrap
123194 textFormat: Text.RichText
124195 text: i18n.tr("You can change it later in <em>System Settings</em>.")
125196 color: "black"
126197 fontSize: "small"
127198 font.weight: Font.Light
199+ width: content.width
128200 }
129201 }
130202
@@ -133,9 +205,9 @@ LocalComponents.Page {
133205 LocalComponents.StackButton {
134206 text: i18n.tr("Next")
135207 onClicked: {
136− var locationOn = gpsCheck.checked || hereCheck.checked;
137− var gpsOn = gpsCheck.checked || hereCheck.checked;
138− var hereOn = hereCheck.checked;
208+ var locationOn = gpsCheckLabel.checked || hereCheckLabel.checked;
209+ var gpsOn = gpsCheckLabel.checked || hereCheckLabel.checked;
210+ var hereOn = hereCheckLabel.checked;
139211
140212 // location service doesn't currently listen to updateState
141213 // requests, so we activate the actions if needed.