Merge lp:~nick-dedekind/ubuntu-system-settings/lp1336715.check.sync into lp:ubuntu-system-settings/rtm-14.09
- lp1336715.check.sync
- Merge into rtm-14.09
Proposed by
kevin gunn
Status: | Work in progress |
---|---|
Proposed branch: | lp:~nick-dedekind/ubuntu-system-settings/lp1336715.check.sync |
Merge into: | lp:ubuntu-system-settings/rtm-14.09 |
Diff against target: |
5170 lines (+1423/-1515) (has conflicts) 69 files modified
debian/changelog (+113/-0) plugins/about/PageComponent.qml (+10/-3) plugins/about/Storage.qml (+2/-2) plugins/about/StorageItem.qml (+1/-1) plugins/about/click.cpp (+11/-13) plugins/about/click.h (+2/-1) plugins/about/storageabout.cpp (+0/-11) plugins/about/storageabout.h (+0/-1) plugins/battery/PageComponent.qml (+15/-26) plugins/battery/SleepValues.qml (+6/-1) plugins/battery/battery.cpp (+5/-1) plugins/battery/plugin/battery-plugin.cpp (+4/-1) plugins/bluetooth/PageComponent.qml (+20/-19) plugins/bluetooth/devicemodel.cpp (+2/-0) plugins/brightness/BrightnessSlider.qml (+0/-103) plugins/brightness/CMakeLists.txt (+0/-1) plugins/brightness/PageComponent.qml (+39/-7) plugins/cellular/Components/CMakeLists.txt (+5/-5) plugins/cellular/Components/CellularSingleSim.qml (+0/-115) plugins/cellular/Components/DataMultiSim.qml (+13/-124) plugins/cellular/Components/MultiSim.qml (+52/-10) plugins/cellular/Components/NoSim.qml (+5/-12) plugins/cellular/Components/RadioSingleSim.qml (+57/-0) plugins/cellular/Components/SimEditor.qml (+31/-14) plugins/cellular/Components/SingleSim.qml (+42/-6) plugins/cellular/CustomApnEditor.qml (+1/-1) plugins/cellular/PageChooseCarrier.qml (+3/-2) plugins/cellular/PageChooseCarriers.qml (+2/-2) plugins/cellular/PageComponent.qml (+2/-2) plugins/cellular/sims.js (+10/-0) plugins/flight-mode/EntryComponent.qml (+3/-3) plugins/language/DisplayLanguage.qml (+0/-2) plugins/language/PageComponent.qml (+29/-21) plugins/language/SpellChecking.qml (+12/-3) plugins/notifications/PageComponent.qml (+1/-0) plugins/orientation-lock/EntryComponent.qml (+6/-4) plugins/phone/PageComponent.qml (+4/-2) plugins/reset/ResetLauncherHome.qml (+0/-6) plugins/security-privacy/Location.qml (+5/-4) plugins/security-privacy/LockSecurity.qml (+1/-1) plugins/security-privacy/PageComponent.qml (+10/-16) plugins/security-privacy/PhoneLocking.qml (+11/-5) plugins/sound/PageComponent.qml (+32/-19) plugins/sound/sound.cpp (+3/-0) plugins/system-update/PageComponent.qml (+5/-28) plugins/time-date/PageComponent.qml (+5/-2) plugins/wifi/MenuItemFactory.qml (+16/-9) plugins/wifi/PageComponent.qml (+2/-1) po/es.po (+3/-42) po/hu.po (+35/-85) po/pt.po (+10/-49) po/ru.po (+96/-119) src/CMakeLists.txt (+4/-1) src/SystemSettings/CMakeLists.txt (+1/-0) src/SystemSettings/SettingsItemTitle.qml (+38/-0) src/SystemSettings/qmldir (+1/-0) src/main.cpp (+1/-0) src/utils.cpp (+17/-0) src/utils.h (+8/-0) tests/CMakeLists.txt (+2/-0) tests/autopilot/ubuntu_system_settings/__init__.py (+198/-1) tests/autopilot/ubuntu_system_settings/tests/__init__.py (+7/-3) tests/autopilot/ubuntu_system_settings/tests/test_cellular.py (+202/-593) tests/autopilot/ubuntu_system_settings/tests/test_wifi.py (+39/-2) wizard/Utils/system.cpp (+7/-3) wizard/qml/Components/CheckableSetting.qml (+8/-3) wizard/qml/Pages/30-passwd-type.qml (+1/-1) wizard/qml/Pages/50-location.qml (+95/-3) wizard/qml/main.qml (+52/-0) Text conflict in debian/changelog Text conflict in plugins/about/PageComponent.qml Text conflict in po/ru.po Text conflict in wizard/qml/Pages/50-location.qml |
To merge this branch: | bzr merge lp:~nick-dedekind/ubuntu-system-settings/lp1336715.check.sync |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Ken VanDine | Needs Fixing | ||
Review via email: mp+241152@code.launchpad.net |
Commit message
Fixed switches & check-boxes going out of sync with backends.
Description of the change
Fixed switches & check-boxes going out of sync with backends.
To post a comment you must log in.
Revision history for this message
Sebastien Bacher (seb128) wrote : | # |
Unmerged revisions
- 1160. By Nick Dedekind
-
more fixes
- 1159. By Nick Dedekind
-
merged with trunk
- 1158. By Nick Dedekind
-
reverted unnecessary changes
- 1157. By Nick Dedekind
-
dont use USC.SyncSwitch
- 1156. By Nick Dedekind
-
removed unnecessary change
- 1155. By Nick Dedekind
-
bump usc requirement
- 1154. By Nick Dedekind
-
fixed out of sync switches
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/changelog' |
2 | --- debian/changelog 2014-11-04 14:38:52 +0000 |
3 | +++ debian/changelog 2014-11-07 22:38:03 +0000 |
4 | @@ -1,3 +1,4 @@ |
5 | +<<<<<<< TREE |
6 | ubuntu-system-settings (0.3+14.10.20141104~rtm-0ubuntu1) 14.09; urgency=low |
7 | |
8 | [ Ken VanDine ] |
9 | @@ -55,6 +56,118 @@ |
10 | |
11 | -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 21 Oct 2014 15:24:55 +0000 |
12 | |
13 | +======= |
14 | +ubuntu-system-settings (0.3+15.04.20141103-0ubuntu1) vivid; urgency=low |
15 | + |
16 | + [ Ken VanDine ] |
17 | + * Use the SliderMenu component instead of the Slider component, it |
18 | + matches the design and doesn't flicker while changing the |
19 | + brightness. (LP: #1289465) |
20 | + * Need to create UpClient regardless of upower version |
21 | + |
22 | + [ Sebastien Bacher ] |
23 | + * [storage] build the correct ini name rather than guessing it (LP: |
24 | + #1387834) |
25 | + * [battery] don't use a colored icon (LP: #1351383) |
26 | + |
27 | + [ Michael Terry ] |
28 | + * Redesign location page according to latest design visuals / text. |
29 | + Allows GPS-only, GPS+HERE, or nothing at all. (LP: #1384763) |
30 | + |
31 | + [ Ubuntu daily release ] |
32 | + * New rebuild forced |
33 | + |
34 | + -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 03 Nov 2014 17:30:03 +0000 |
35 | + |
36 | +ubuntu-system-settings (0.3+15.04.20141031.2-0ubuntu1) vivid; urgency=low |
37 | + |
38 | + [ Sebastien Bacher ] |
39 | + * Tweaks to try to make the section headers and titles closer to the |
40 | + design. Use a custom component, with tweaked margins and disabled |
41 | + tap effects, for that. |
42 | + |
43 | + [ Iain Lane ] |
44 | + * Move formatSize into a new Utilities class in the qml context and |
45 | + call this from the updates panel to consistently display sizes (LP: |
46 | + #1385286) |
47 | + * Update to work with UPower >= 0.99 as well as current versions (LP: |
48 | + #1330037) |
49 | + |
50 | + [ Albert Astals ] |
51 | + * i18n++ (LP: #1386730) |
52 | + |
53 | + [ William Hua ] |
54 | + * Re-translate the UI when reboot is cancelled after language change. |
55 | + (LP: #1377984) |
56 | + |
57 | + [ jonas-drange ] |
58 | + * [cellular] split "Cellular Data" and "Connection type" into two |
59 | + separate pieces in the UI for both single and multi SIM (LP: |
60 | + #1361226) |
61 | + * [wifi] use actiongroup to hide "connect to other networks" (LP: |
62 | + #1377076) |
63 | + |
64 | + [ Michael Terry ] |
65 | + * When the power button is held down, show the shutdown dialog like we |
66 | + do in the unity8 shell. (LP: #1381731) |
67 | + * Add a Continue button when choosing a passphrase. And fix a few |
68 | + other design nits with choosing a password. |
69 | + |
70 | + [ Michael Zanetti ] |
71 | + * Drop reboot notification label on launcher reset. (LP: #1376707) |
72 | + |
73 | + [ Mathieu Trudel-Lapierre ] |
74 | + * [bluetooth] Show bluetooth address instead of name while it's not |
75 | + detected; to be updated once available. (LP: #1382767) |
76 | + |
77 | + -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 31 Oct 2014 14:53:52 +0000 |
78 | + |
79 | +ubuntu-system-settings (0.3+15.04.20141028.1-0ubuntu1) vivid; urgency=low |
80 | + |
81 | + [ Ken VanDine ] |
82 | + * Refactored to use a singleton for UpdateManager shared in both QML |
83 | + and CPP. Don't load the dynamic visibility items while creating the |
84 | + item model, defer that to the loader. (LP: #1317007) |
85 | + |
86 | + [ Florian Boucault ] |
87 | + * Added QML debugging. |
88 | + |
89 | + -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 28 Oct 2014 20:44:34 +0000 |
90 | + |
91 | +ubuntu-system-settings (0.3+15.04.20141028-0ubuntu1) vivid; urgency=low |
92 | + |
93 | + [ Michael Terry ] |
94 | + * Fix a typo in the HERE terms link. |
95 | + |
96 | + [ CI bot ] |
97 | + * Resync trunk |
98 | + |
99 | + -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 28 Oct 2014 14:15:45 +0000 |
100 | + |
101 | +ubuntu-system-settings (0.3+14.10.20141022-0ubuntu1) utopic; urgency=low |
102 | + |
103 | + [ CI bot ] |
104 | + * Resync trunk |
105 | + |
106 | + [ Michael Zanetti ] |
107 | + * update code to reset launcher after launcher backend implementation |
108 | + was reworked (LP: #1376707) |
109 | + |
110 | + -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 22 Oct 2014 21:34:27 +0000 |
111 | + |
112 | +ubuntu-system-settings (0.3+14.10.20141021.1-0ubuntu1) utopic; urgency=low |
113 | + |
114 | + [ Sebastien Bacher ] |
115 | + * [storage] translator comment for the string "%1 free" (LP: #1377929) |
116 | + * [system-update] ellipsize labels if needed (LP: #1376286) |
117 | + * [sound] Use the correct low icon (LP: #1376286) |
118 | + |
119 | + [ Lars Uebernickel ] |
120 | + * notification-manager: fix issues with GVariant API usage |
121 | + |
122 | + -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 21 Oct 2014 15:24:55 +0000 |
123 | + |
124 | +>>>>>>> MERGE-SOURCE |
125 | ubuntu-system-settings (0.3+14.10.20141021-0ubuntu1) utopic; urgency=low |
126 | |
127 | [ jonas-drange ] |
128 | |
129 | === modified file 'plugins/about/PageComponent.qml' |
130 | --- plugins/about/PageComponent.qml 2014-10-07 14:07:02 +0000 |
131 | +++ plugins/about/PageComponent.qml 2014-11-07 22:38:03 +0000 |
132 | @@ -74,7 +74,7 @@ |
133 | anchors.left: parent.left |
134 | anchors.right: parent.right |
135 | |
136 | - ListItem.Base { |
137 | + ListItem.Empty { |
138 | height: ubuntuLabel.height + deviceLabel.height + units.gu(6) |
139 | |
140 | Column { |
141 | @@ -95,6 +95,7 @@ |
142 | text: deviceInfos.manufacturer() ? deviceInfos.manufacturer() + " " + deviceInfos.model() : backendInfos.vendorString |
143 | } |
144 | } |
145 | + highlightWhenPressed: false |
146 | } |
147 | |
148 | Loader { |
149 | @@ -141,13 +142,18 @@ |
150 | id: storageItem |
151 | objectName: "storageItem" |
152 | text: i18n.tr("Storage") |
153 | +<<<<<<< TREE |
154 | /* TRANSLATORS: that's the free disk space, indicated in the most appropriate storage unit */ |
155 | value: i18n.tr("%1 free").arg(backendInfos.formatSize(storageInfo.availableDiskSpace("/home"))) |
156 | +======= |
157 | + /* TRANSLATORS: that's the free disk space, indicated in the most appropriate storage unit */ |
158 | + value: i18n.tr("%1 free").arg(Utilities.formatSize(storageInfo.availableDiskSpace("/home"))) |
159 | +>>>>>>> MERGE-SOURCE |
160 | progression: true |
161 | onClicked: pageStack.push(Qt.resolvedUrl("Storage.qml")) |
162 | } |
163 | |
164 | - ListItem.Standard { |
165 | + SettingsItemTitle { |
166 | objectName: "softwareItem" |
167 | text: i18n.tr("Software:") |
168 | } |
169 | @@ -176,9 +182,10 @@ |
170 | onClicked: |
171 | pageStack.push(pluginManager.getByName("system-update").pageComponent) |
172 | } |
173 | + showDivider: false |
174 | } |
175 | |
176 | - ListItem.Standard { |
177 | + SettingsItemTitle { |
178 | objectName: "legalItem" |
179 | text: i18n.tr("Legal:") |
180 | } |
181 | |
182 | === modified file 'plugins/about/Storage.qml' |
183 | --- plugins/about/Storage.qml 2014-09-26 08:35:34 +0000 |
184 | +++ plugins/about/Storage.qml 2014-11-07 22:38:03 +0000 |
185 | @@ -138,7 +138,7 @@ |
186 | id: diskItem |
187 | objectName: "diskItem" |
188 | text: i18n.tr("Total storage") |
189 | - value: backendInfo.formatSize(diskSpace) |
190 | + value: Utilities.formatSize(diskSpace) |
191 | showDivider: false |
192 | } |
193 | |
194 | @@ -199,7 +199,7 @@ |
195 | iconFrame: iconPath // no frame for invalid icons, since these aren't app icons |
196 | text: displayName |
197 | value: installedSize ? |
198 | - backendInfo.formatSize(installedSize) : |
199 | + Utilities.formatSize(installedSize) : |
200 | i18n.tr("N/A") |
201 | } |
202 | } |
203 | |
204 | === modified file 'plugins/about/StorageItem.qml' |
205 | --- plugins/about/StorageItem.qml 2014-01-27 10:41:38 +0000 |
206 | +++ plugins/about/StorageItem.qml 2014-11-07 22:38:03 +0000 |
207 | @@ -25,7 +25,7 @@ |
208 | id: sizelabel |
209 | objectName: "sizeLabel" |
210 | anchors.right: parent.right |
211 | - text: backendInfo.formatSize(value) |
212 | + text: Utilities.formatSize(value) |
213 | visible: ready |
214 | } |
215 | ActivityIndicator { |
216 | |
217 | === modified file 'plugins/about/click.cpp' |
218 | --- plugins/about/click.cpp 2014-09-25 13:11:09 +0000 |
219 | +++ plugins/about/click.cpp 2014-11-07 22:38:03 +0000 |
220 | @@ -45,7 +45,8 @@ |
221 | */ |
222 | void ClickModel::populateFromDesktopOrIniFile (Click *newClick, |
223 | QVariantMap hooks, |
224 | - QDir directory) |
225 | + QDir directory, |
226 | + QString name) |
227 | { |
228 | QVariantMap appHooks; |
229 | GKeyFile *appinfo = g_key_file_new(); |
230 | @@ -69,17 +70,13 @@ |
231 | { |
232 | keyGroup = "ScopeConfig"; |
233 | keyName = "DisplayName"; |
234 | - |
235 | - QDir scopeDirectory( |
236 | - directory.absoluteFilePath(appHooks.value("scope", "").toString())); |
237 | - scopeDirectory.setNameFilters(QStringList()<<"*.ini"); |
238 | - |
239 | - QStringList iniEntry(scopeDirectory.entryList()); |
240 | - |
241 | - if (iniEntry.isEmpty()) |
242 | - goto out; |
243 | - |
244 | - QFile desktopOrIniFile(scopeDirectory.absoluteFilePath(iniEntry[0])); |
245 | + QString scope(appHooks.value("scope", "").toString()); |
246 | + |
247 | + QDir scopeDirectory(directory.absoluteFilePath(scope)); |
248 | + |
249 | + /* the config is 'name_scope.ini' */ |
250 | + QFile desktopOrIniFile(scopeDirectory.absoluteFilePath( |
251 | + name + "_" + scope + ".ini")); |
252 | desktopOrIniFileName = |
253 | g_strdup(desktopOrIniFile.fileName().toLocal8Bit().constData()); |
254 | if (!desktopOrIniFile.exists()) |
255 | @@ -193,7 +190,8 @@ |
256 | if (hooks.isValid()) { |
257 | QVariantMap allHooks(hooks.toMap()); |
258 | // The desktop or ini file contains an icon and the display name |
259 | - populateFromDesktopOrIniFile(&newClick, allHooks, directory); |
260 | + populateFromDesktopOrIniFile(&newClick, allHooks, directory, |
261 | + manifest.value("name", "").toString()); |
262 | } |
263 | |
264 | newClick.installSize = manifest.value("installed-size", |
265 | |
266 | === modified file 'plugins/about/click.h' |
267 | --- plugins/about/click.h 2014-09-25 11:17:42 +0000 |
268 | +++ plugins/about/click.h 2014-11-07 22:38:03 +0000 |
269 | @@ -58,7 +58,8 @@ |
270 | private: |
271 | void populateFromDesktopOrIniFile(Click *newClick, |
272 | QVariantMap hooks, |
273 | - QDir directory); |
274 | + QDir directory, |
275 | + QString name); |
276 | Click buildClick(QVariantMap manifest); |
277 | QList<Click> buildClickList(); |
278 | |
279 | |
280 | === modified file 'plugins/about/storageabout.cpp' |
281 | --- plugins/about/storageabout.cpp 2014-10-02 16:35:40 +0000 |
282 | +++ plugins/about/storageabout.cpp 2014-11-07 22:38:03 +0000 |
283 | @@ -290,17 +290,6 @@ |
284 | return m_homeSize; |
285 | } |
286 | |
287 | -QString StorageAbout::formatSize(quint64 size) const |
288 | -{ |
289 | - guint64 g_size = size; |
290 | - |
291 | - gchar * formatted_size = g_format_size (g_size); |
292 | - QString q_formatted_size = QString::fromLocal8Bit(formatted_size); |
293 | - g_free (formatted_size); |
294 | - |
295 | - return q_formatted_size; |
296 | -} |
297 | - |
298 | void StorageAbout::populateSizes() |
299 | { |
300 | quint32 *running = new quint32(0); |
301 | |
302 | === modified file 'plugins/about/storageabout.h' |
303 | --- plugins/about/storageabout.h 2014-09-24 12:29:57 +0000 |
304 | +++ plugins/about/storageabout.h 2014-11-07 22:38:03 +0000 |
305 | @@ -109,7 +109,6 @@ |
306 | quint64 getAudioSize(); |
307 | quint64 getPicturesSize(); |
308 | quint64 getHomeSize(); |
309 | - Q_INVOKABLE QString formatSize (quint64 size) const; |
310 | Q_INVOKABLE void populateSizes(); |
311 | Q_INVOKABLE QString getDevicePath (const QString mount_point); |
312 | bool getDeveloperMode(); |
313 | |
314 | === modified file 'plugins/battery/PageComponent.qml' |
315 | --- plugins/battery/PageComponent.qml 2014-08-29 09:11:11 +0000 |
316 | +++ plugins/battery/PageComponent.qml 2014-11-07 22:38:03 +0000 |
317 | @@ -288,7 +288,7 @@ |
318 | showDivider: false |
319 | } |
320 | |
321 | - ListItem.Standard { |
322 | + SettingsItemTitle { |
323 | text: i18n.tr("Ways to reduce battery use:") |
324 | } |
325 | |
326 | @@ -333,17 +333,11 @@ |
327 | text: i18n.tr("Wi-Fi") |
328 | control: Switch { |
329 | id: wifiSwitch |
330 | - checked: batteryBackend.wifiEnabled |
331 | - onClicked: batteryBackend.wifiEnabled = checked |
332 | + property bool serverChecked: batteryBackend.wifiEnabled |
333 | + onServerCheckedChanged: checked = serverChecked |
334 | + Component.onCompleted: checked = serverChecked |
335 | + onTriggered: batteryBackend.wifiEnabled = checked |
336 | } |
337 | - Component.onCompleted: |
338 | - clicked.connect(wifiSwitch.clicked) |
339 | - } |
340 | - |
341 | - Binding { |
342 | - target: wifiSwitch |
343 | - property: "checked" |
344 | - value: batteryBackend.wifiEnabled |
345 | } |
346 | |
347 | QDBusActionGroup { |
348 | @@ -365,17 +359,14 @@ |
349 | active: bluetoothActionGroup.enabled.state != null |
350 | sourceComponent: Switch { |
351 | id: btSwitch |
352 | - // Cannot use onCheckedChanged as this triggers a loop |
353 | - onClicked: bluetoothActionGroup.enabled.activate() |
354 | - checked: bluetoothActionGroup.enabled.state |
355 | + property bool serverChecked: bluetoothActionGroup.enabled.state |
356 | + onServerCheckedChanged: checked = serverChecked |
357 | + Component.onCompleted: checked = serverChecked |
358 | + onTriggered: bluetoothActionGroup.enabled.activate() |
359 | } |
360 | - |
361 | - // ListItem forwards the 'clicked' signal to its control. |
362 | - // It needs to be forwarded again to the Loader's sourceComponent |
363 | - signal clicked |
364 | - onClicked: item.clicked() |
365 | } |
366 | visible: bluetoothActionGroup.visible |
367 | + Component.onCompleted: clicked.connect(btSwitch.clicked) |
368 | } |
369 | |
370 | QDBusActionGroup { |
371 | @@ -396,16 +387,14 @@ |
372 | active: locationActionGroup.enabled.state != null |
373 | sourceComponent: Switch { |
374 | id: gpsSwitch |
375 | - onClicked: locationActionGroup.enabled.activate() |
376 | - checked: locationActionGroup.enabled.state |
377 | + property bool serverChecked: locationActionGroup.enabled.state |
378 | + onServerCheckedChanged: checked = serverChecked |
379 | + Component.onCompleted: checked = serverChecked |
380 | + onTriggered: locationActionGroup.enabled.activate() |
381 | } |
382 | - |
383 | - // ListItem forwards the 'clicked' signal to its control. |
384 | - // It needs to be forwarded again to the Loader's sourceComponent |
385 | - signal clicked |
386 | - onClicked: item.clicked() |
387 | } |
388 | visible: locationActionGroup.enabled.state !== undefined |
389 | + Component.onCompleted: clicked.connect(gpsSwitch.clicked) |
390 | } |
391 | |
392 | ListItem.Caption { |
393 | |
394 | === modified file 'plugins/battery/SleepValues.qml' |
395 | --- plugins/battery/SleepValues.qml 2014-08-26 01:54:11 +0000 |
396 | +++ plugins/battery/SleepValues.qml 2014-11-07 22:38:03 +0000 |
397 | @@ -71,10 +71,14 @@ |
398 | anchors.left: parent.left |
399 | anchors.right: parent.right |
400 | |
401 | + SettingsItemTitle { |
402 | + text: lockOnSuspend ? i18n.tr("Lock the phone when it's not in use:") : |
403 | + i18n.tr("Put the phone to sleep when it is not in use:") |
404 | + } |
405 | + |
406 | ListItem.ItemSelector { |
407 | id: sleepSelector |
408 | objectName: "sleepSelector" |
409 | - text: lockOnSuspend ? i18n.tr("Lock the phone when it's not in use:") : i18n.tr("Put the phone to sleep when it is not in use:") |
410 | delegate: OptionSelectorDelegate { |
411 | text: modelData |
412 | } |
413 | @@ -111,6 +115,7 @@ |
414 | else |
415 | powerSettings.idleDelay = (index == 6) ? 0 : idleValues[index] |
416 | } |
417 | + highlightWhenPressed: false |
418 | } |
419 | |
420 | ListItem.Caption { |
421 | |
422 | === modified file 'plugins/battery/battery.cpp' |
423 | --- plugins/battery/battery.cpp 2014-08-28 07:22:28 +0000 |
424 | +++ plugins/battery/battery.cpp 2014-11-07 22:38:03 +0000 |
425 | @@ -63,15 +63,19 @@ |
426 | |
427 | void Battery::buildDeviceString() { |
428 | UpClient *client; |
429 | - gboolean returnIsOk; |
430 | GPtrArray *devices; |
431 | UpDeviceKind kind; |
432 | |
433 | client = up_client_new(); |
434 | + |
435 | +#if !UP_CHECK_VERSION(0, 99, 0) |
436 | + gboolean returnIsOk; |
437 | + |
438 | returnIsOk = up_client_enumerate_devices_sync(client, nullptr, nullptr); |
439 | |
440 | if(!returnIsOk) |
441 | return; |
442 | +#endif |
443 | |
444 | devices = up_client_get_devices(client); |
445 | |
446 | |
447 | === modified file 'plugins/battery/plugin/battery-plugin.cpp' |
448 | --- plugins/battery/plugin/battery-plugin.cpp 2014-07-23 13:37:06 +0000 |
449 | +++ plugins/battery/plugin/battery-plugin.cpp 2014-11-07 22:38:03 +0000 |
450 | @@ -49,10 +49,13 @@ |
451 | { |
452 | BatteryItem *item (static_cast<BatteryItem *> (user_data)); |
453 | |
454 | +#if !UP_CHECK_VERSION(0, 99, 0) |
455 | gboolean ret = up_client_enumerate_devices_sync (client, nullptr, nullptr); |
456 | if (!ret) { |
457 | item->setVisibility (false); |
458 | - } else { |
459 | + } else |
460 | +#endif |
461 | + { |
462 | GPtrArray *devices = up_client_get_devices (client); |
463 | item->setVisibility (devices->len > 0); |
464 | g_ptr_array_unref (devices); |
465 | |
466 | === modified file 'plugins/bluetooth/PageComponent.qml' |
467 | --- plugins/bluetooth/PageComponent.qml 2014-09-23 19:32:29 +0000 |
468 | +++ plugins/bluetooth/PageComponent.qml 2014-11-07 22:38:03 +0000 |
469 | @@ -147,17 +147,11 @@ |
470 | text: i18n.tr("Bluetooth") |
471 | control: Switch { |
472 | id: btSwitch |
473 | - // Cannot use onCheckedChanged as this triggers a loop |
474 | - onClicked: bluetoothActionGroup.enabled.activate() |
475 | - checked: backend.powered |
476 | + property bool serverChecked: bluetoothActionGroup.enabled.state |
477 | + onServerCheckedChanged: checked = serverChecked |
478 | + Component.onCompleted: checked = serverChecked |
479 | + onTriggered: bluetoothActionGroup.enabled.activate() |
480 | } |
481 | - Component.onCompleted: clicked.connect(btSwitch.clicked) |
482 | - } |
483 | - |
484 | - Binding { |
485 | - target: btSwitch |
486 | - property: "checked" |
487 | - value: bluetoothActionGroup.enabled.state |
488 | } |
489 | |
490 | // Discoverability |
491 | @@ -246,7 +240,7 @@ |
492 | |
493 | // Disconnnected Headset(s) |
494 | |
495 | - ListItem.Standard { |
496 | + SettingsItemTitle { |
497 | id: disconnectedHeader |
498 | text: connectedList.visible ? i18n.tr("Connect another device:") : i18n.tr("Connect a device:") |
499 | enabled: bluetoothActionGroup.enabled |
500 | @@ -288,7 +282,7 @@ |
501 | } |
502 | |
503 | // Devices that connect automatically |
504 | - ListItem.Standard { |
505 | + SettingsItemTitle { |
506 | id: autoconnectHeader |
507 | text: i18n.tr("Connect automatically when detected:") |
508 | visible: autoconnectList.visible |
509 | @@ -323,7 +317,11 @@ |
510 | |
511 | Page { |
512 | id: connectedDevicePage |
513 | - title: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None") |
514 | + title: backend.selectedDevice ? |
515 | + backend.selectedDevice.name.length > 0 ? |
516 | + backend.selectedDevice.name : |
517 | + backend.selectedDevice.address |
518 | + : i18n.tr("None") |
519 | visible: false |
520 | |
521 | Flickable { |
522 | @@ -344,7 +342,10 @@ |
523 | |
524 | ListItem.SingleValue { |
525 | text: i18n.tr("Name") |
526 | - value: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None") |
527 | + value: backend.selectedDevice && |
528 | + backend.selectedDevice.name.length > 0 ? |
529 | + backend.selectedDevice.name : |
530 | + i18n.tr("None") |
531 | } |
532 | ListItem.Standard { |
533 | Rectangle { |
534 | @@ -396,15 +397,15 @@ |
535 | id: trustedCheck |
536 | text: i18n.tr("Connect automatically when detected:") |
537 | control: CheckBox { |
538 | - onClicked: { |
539 | + property bool serverChecked: backend.selectedDevice ? backend.selectedDevice.trusted : false |
540 | + onServerCheckedChanged: checked = serverChecked |
541 | + Component.onCompleted: checked = serverChecked |
542 | + onTriggered: { |
543 | if (backend.selectedDevice) { |
544 | - backend.selectedDevice.trusted = !backend.selectedDevice.trusted |
545 | + backend.selectedDevice.trusted = checked; |
546 | } |
547 | } |
548 | - checked: backend.selectedDevice ? backend.selectedDevice.trusted : false |
549 | } |
550 | - Component.onCompleted: |
551 | - clicked.connect(trustedCheck.clicked) |
552 | } |
553 | ListItem.SingleControl { |
554 | control: Button { |
555 | |
556 | === modified file 'plugins/bluetooth/devicemodel.cpp' |
557 | --- plugins/bluetooth/devicemodel.cpp 2014-09-16 19:41:44 +0000 |
558 | +++ plugins/bluetooth/devicemodel.cpp 2014-11-07 22:38:03 +0000 |
559 | @@ -382,6 +382,8 @@ |
560 | if (device->isValid()) { |
561 | addDevice(device); |
562 | } |
563 | + } else { |
564 | + device->setProperties(properties); |
565 | } |
566 | } |
567 | |
568 | |
569 | === removed file 'plugins/brightness/BrightnessSlider.qml' |
570 | --- plugins/brightness/BrightnessSlider.qml 2014-08-11 16:13:17 +0000 |
571 | +++ plugins/brightness/BrightnessSlider.qml 1970-01-01 00:00:00 +0000 |
572 | @@ -1,103 +0,0 @@ |
573 | -/* |
574 | - * This file is part of system-settings |
575 | - * |
576 | - * Copyright (C) 2013-14 Canonical Ltd. |
577 | - * |
578 | - * Contact: Iain Lane <iain.lane@canonical.com> |
579 | - * |
580 | - * This program is free software: you can redistribute it and/or modify it |
581 | - * under the terms of the GNU General Public License version 3, as published |
582 | - * by the Free Software Foundation. |
583 | - * |
584 | - * This program is distributed in the hope that it will be useful, but |
585 | - * WITHOUT ANY WARRANTY; without even the implied warranties of |
586 | - * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
587 | - * PURPOSE. See the GNU General Public License for more details. |
588 | - * |
589 | - * You should have received a copy of the GNU General Public License along |
590 | - * with this program. If not, see <http://www.gnu.org/licenses/>. |
591 | - */ |
592 | - |
593 | -import Ubuntu.Components 0.1 |
594 | -import Ubuntu.Components.ListItems 0.1 as ListItem |
595 | -import QtQuick 2.0 |
596 | -import QMenuModel 0.1 |
597 | - |
598 | -Column { |
599 | - signal pressed |
600 | - readonly property bool pressed: sliderId.pressed |
601 | - |
602 | - anchors { |
603 | - left: parent.left |
604 | - right: parent.right |
605 | - } |
606 | - |
607 | - QDBusActionGroup { |
608 | - id: indicatorPower |
609 | - busType: 1 |
610 | - busName: "com.canonical.indicator.power" |
611 | - objectPath: "/com/canonical/indicator/power" |
612 | - |
613 | - property variant brightness: action("brightness").state |
614 | - onBrightnessChanged: { |
615 | - sliderId.enabled = brightness != null |
616 | - sliderId.value = sliderId.enabled ? brightness * 100 : 0.0 |
617 | - } |
618 | - } |
619 | - |
620 | - Component.onCompleted: indicatorPower.start() |
621 | - |
622 | - ListItem.Standard { |
623 | - text: i18n.tr("Display brightness") |
624 | - showDivider: false |
625 | - } |
626 | - |
627 | - ListItem.Base { |
628 | - |
629 | - Icon { |
630 | - id: iconLeft |
631 | - anchors.verticalCenter: parent.verticalCenter |
632 | - height: sliderId.height - units.gu(1) |
633 | - name: "torch-off" |
634 | - width: height |
635 | - |
636 | - MouseArea { |
637 | - anchors.fill: parent |
638 | - onClicked: sliderId.value = 0.0 |
639 | - } |
640 | - } |
641 | - Slider { |
642 | - id: sliderId |
643 | - function formatValue(v) { |
644 | - return "%1%".arg(v.toFixed(0)) |
645 | - } |
646 | - |
647 | - anchors { |
648 | - left: iconLeft.right |
649 | - right: iconRight.left |
650 | - leftMargin: units.gu(1) |
651 | - rightMargin: units.gu(1) |
652 | - verticalCenter: parent.verticalCenter |
653 | - } |
654 | - height: parent.height - units.gu(2) |
655 | - minimumValue: 0.0 |
656 | - maximumValue: 100.0 |
657 | - live: true |
658 | - |
659 | - onValueChanged: indicatorPower.action('brightness').updateState(value / 100.0) |
660 | - } |
661 | - Icon { |
662 | - id: iconRight |
663 | - anchors.right: parent.right |
664 | - anchors.verticalCenter: parent.verticalCenter |
665 | - height: sliderId.height - units.gu(1) |
666 | - name: "torch-on" |
667 | - width: height |
668 | - |
669 | - MouseArea { |
670 | - anchors.fill: parent |
671 | - onClicked: sliderId.value = 100.0 |
672 | - } |
673 | - } |
674 | - } |
675 | -} |
676 | |
677 | === modified file 'plugins/brightness/CMakeLists.txt' |
678 | --- plugins/brightness/CMakeLists.txt 2014-08-11 16:13:17 +0000 |
679 | +++ plugins/brightness/CMakeLists.txt 2014-11-07 22:38:03 +0000 |
680 | @@ -1,7 +1,6 @@ |
681 | add_subdirectory(plugin) |
682 | |
683 | set(QML_SOURCES |
684 | - BrightnessSlider.qml |
685 | PageComponent.qml |
686 | ) |
687 | |
688 | |
689 | === modified file 'plugins/brightness/PageComponent.qml' |
690 | --- plugins/brightness/PageComponent.qml 2014-08-12 13:32:30 +0000 |
691 | +++ plugins/brightness/PageComponent.qml 2014-11-07 22:38:03 +0000 |
692 | @@ -24,6 +24,8 @@ |
693 | import Ubuntu.Components 0.1 |
694 | import Ubuntu.Components.ListItems 0.1 as ListItem |
695 | import Ubuntu.SystemSettings.Brightness 1.0 |
696 | +import Ubuntu.Settings.Menus 0.1 as Menus |
697 | +import QMenuModel 0.1 |
698 | |
699 | ItemPage { |
700 | id: root |
701 | @@ -39,12 +41,41 @@ |
702 | anchors.left: parent.left |
703 | anchors.right: parent.right |
704 | |
705 | - BrightnessSlider {} |
706 | + QDBusActionGroup { |
707 | + id: indicatorPower |
708 | + busType: 1 |
709 | + busName: "com.canonical.indicator.power" |
710 | + objectPath: "/com/canonical/indicator/power" |
711 | + |
712 | + property variant brightness: action("brightness") |
713 | + |
714 | + Component.onCompleted: start() |
715 | + } |
716 | |
717 | Binding { |
718 | - target: autoAdjustCheck |
719 | - property: "checked" |
720 | - value: adjust.visible && gsettings.autoBrightness |
721 | + target: sliderMenu |
722 | + property: "value" |
723 | + value: sliderMenu.enabled ? indicatorPower.action("brightness").state * 100 : 0.0 |
724 | + } |
725 | + |
726 | + ListItem.Standard { |
727 | + text: i18n.tr("Display brightness") |
728 | + showDivider: false |
729 | + } |
730 | + |
731 | + /* Use the SliderMenu component instead of the Slider to avoid binding |
732 | + issues on valueChanged until LP: #1388094 is fixed. |
733 | + */ |
734 | + Menus.SliderMenu { |
735 | + id: sliderMenu |
736 | + objectName: "sliderMenu" |
737 | + enabled: indicatorPower.action("brightness").state != null |
738 | + live: true |
739 | + minimumValue: 0.0 |
740 | + maximumValue: 100.0 |
741 | + minIcon: "image://theme/display-brightness-min" |
742 | + maxIcon: "image://theme/display-brightness-max" |
743 | + onUpdated: indicatorPower.action("brightness").updateState(value / 100.0) |
744 | } |
745 | |
746 | ListItem.Standard { |
747 | @@ -54,10 +85,11 @@ |
748 | brightnessPanel.autoBrightnessAvailable |
749 | control: CheckBox { |
750 | id: autoAdjustCheck |
751 | - checked: gsettings.autoBrightness |
752 | - onClicked: gsettings.autoBrightness = checked |
753 | + property bool serverChecked: gsettings.autoBrightness |
754 | + onServerCheckedChanged: checked = serverChecked |
755 | + Component.onCompleted: checked = serverChecked |
756 | + onTriggered: gsettings.autoBrightness = checked |
757 | } |
758 | - Component.onCompleted: clicked.connect(autoAdjustCheck.clicked) |
759 | showDivider: false |
760 | } |
761 | ListItem.Caption { |
762 | |
763 | === modified file 'plugins/cellular/Components/CMakeLists.txt' |
764 | --- plugins/cellular/Components/CMakeLists.txt 2014-08-29 14:32:28 +0000 |
765 | +++ plugins/cellular/Components/CMakeLists.txt 2014-11-07 22:38:03 +0000 |
766 | @@ -1,12 +1,12 @@ |
767 | set(QML_SOURCES |
768 | + DataMultiSim.qml |
769 | + DefaultSim.qml |
770 | + MultiSim.qml |
771 | NoSim.qml |
772 | - SingleSim.qml |
773 | - MultiSim.qml |
774 | - CellularSingleSim.qml |
775 | - CellularMultiSim.qml |
776 | - DefaultSim.qml |
777 | + RadioSingleSim.qml |
778 | Sim.qml |
779 | SimEditor.qml |
780 | + SingleSim.qml |
781 | ) |
782 | install(FILES ${QML_SOURCES} DESTINATION ${PLUGIN_QML_DIR}/cellular/Components) |
783 | |
784 | |
785 | === removed file 'plugins/cellular/Components/CellularSingleSim.qml' |
786 | --- plugins/cellular/Components/CellularSingleSim.qml 2014-08-21 20:25:08 +0000 |
787 | +++ plugins/cellular/Components/CellularSingleSim.qml 1970-01-01 00:00:00 +0000 |
788 | @@ -1,115 +0,0 @@ |
789 | -/* |
790 | - * Copyright (C) 2014 Canonical Ltd |
791 | - * |
792 | - * This program is free software: you can redistribute it and/or modify |
793 | - * it under the terms of the GNU General Public License version 3 as |
794 | - * published by the Free Software Foundation. |
795 | - * |
796 | - * This program is distributed in the hope that it will be useful, |
797 | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
798 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
799 | - * GNU General Public License for more details. |
800 | - * |
801 | - * You should have received a copy of the GNU General Public License |
802 | - * along with this program. If not, see <http://www.gnu.org/licenses/>. |
803 | - * |
804 | - * Authors: |
805 | - * Jonas G. Drange <jonas.drange@canonical.com> |
806 | - * |
807 | -*/ |
808 | -import QtQuick 2.0 |
809 | -import Ubuntu.Components 0.1 |
810 | -import Ubuntu.Components.ListItems 0.1 as ListItem |
811 | - |
812 | -Column { |
813 | - height: childrenRect.height |
814 | - |
815 | - property var selector: selector |
816 | - |
817 | - ListItem.ItemSelector { |
818 | - id: selector |
819 | - objectName: "technologyPreferenceSelector" |
820 | - text: i18n.tr("Cellular data:") |
821 | - expanded: true |
822 | - |
823 | - // an empty string is not a valid preference, which means |
824 | - // we disregard the interace and disable the selector |
825 | - enabled: sim.radioSettings.technologyPreference !== "" |
826 | - |
827 | - // model for this selector is modemTechnologies, with |
828 | - // 'off' prepended |
829 | - model: { |
830 | - var m = sim.radioSettings.modemTechnologies.slice(0); |
831 | - m.unshift("off"); |
832 | - return m; |
833 | - } |
834 | - |
835 | - delegate: OptionSelectorDelegate { |
836 | - text: { |
837 | - return { |
838 | - 'off': i18n.tr("Off"), |
839 | - 'gsm': i18n.tr("2G only (saves battery)"), |
840 | - 'umts': i18n.tr("2G/3G (faster)"), |
841 | - 'lte': i18n.tr("2G/3G/4G (faster)") |
842 | - }[modelData] |
843 | - } |
844 | - } |
845 | - selectedIndex: { |
846 | - if (sim.connMan.powered) { |
847 | - // will return -1 if empty, which will select nothing. |
848 | - // Makes sense, since the SIM is online, but the |
849 | - // radioSettings interface is not ready yet (sim locked?) |
850 | - return model.indexOf(sim.radioSettings.technologyPreference); |
851 | - } else { |
852 | - return 0; |
853 | - } |
854 | - } |
855 | - } |
856 | - |
857 | - ListItem.Standard { |
858 | - id: dataRoamingItem |
859 | - objectName: "dataRoamingSwitch" |
860 | - text: i18n.tr("Data roaming") |
861 | - enabled: sim.connMan.powered |
862 | - control: Switch { |
863 | - id: dataRoamingControl |
864 | - checked: sim.connMan.roamingAllowed |
865 | - onClicked: sim.connMan.roamingAllowed = checked |
866 | - } |
867 | - } |
868 | - |
869 | - Connections { |
870 | - target: sim.connMan |
871 | - onPoweredChanged: { |
872 | - if (powered) { |
873 | - // restore the tech preference |
874 | - selector.selectedIndex = selector |
875 | - .model.indexOf(sim.radioSettings.technologyPreference) |
876 | - } else { |
877 | - selector.selectedIndex = 0; |
878 | - } |
879 | - } |
880 | - } |
881 | - |
882 | - // binds the SIM online state to the UI |
883 | - Binding { |
884 | - target: sim.connMan |
885 | - property: "powered" |
886 | - value: selector.selectedIndex !== 0 |
887 | - } |
888 | - |
889 | - // binds the tech preference to the UI |
890 | - Binding { |
891 | - target: sim.radioSettings |
892 | - property: "technologyPreference" |
893 | - value: { |
894 | - var i = selector.selectedIndex; |
895 | - if (i > 0) { |
896 | - return selector.model[i] |
897 | - } else { |
898 | - // if the modem is off, disregard the selector |
899 | - return sim.radioSettings.technologyPreference; |
900 | - } |
901 | - } |
902 | - } |
903 | -} |
904 | |
905 | === renamed file 'plugins/cellular/Components/CellularMultiSim.qml' => 'plugins/cellular/Components/DataMultiSim.qml' |
906 | --- plugins/cellular/Components/CellularMultiSim.qml 2014-10-07 15:41:44 +0000 |
907 | +++ plugins/cellular/Components/DataMultiSim.qml 2014-11-07 22:38:03 +0000 |
908 | @@ -22,8 +22,6 @@ |
909 | import Ubuntu.Components.ListItems 0.1 as ListItem |
910 | |
911 | Column { |
912 | - id: root |
913 | - property var selector: selector |
914 | |
915 | function getNameFromIndex (index) { |
916 | if (index === 0) { |
917 | @@ -33,49 +31,11 @@ |
918 | } |
919 | } |
920 | |
921 | - function getOnlineSim () { |
922 | - if (state === "sim1Online") { |
923 | - return sims[0]; |
924 | - } else if (state === "sim2Online") { |
925 | - return sims[1]; |
926 | - } else { |
927 | - return null; |
928 | - } |
929 | - } |
930 | - |
931 | height: childrenRect.height |
932 | |
933 | - states: [ |
934 | - State { |
935 | - name: "sim1Online" |
936 | - when: sims[0].connMan.powered && !sims[1].connMan.powered |
937 | - StateChangeScript { script: { |
938 | - selector.selectedIndex = |
939 | - selector.model.indexOf( |
940 | - sims[0].radioSettings.technologyPreference) |
941 | - }} |
942 | - }, |
943 | - State { |
944 | - name: "sim2Online" |
945 | - when: sims[1].connMan.powered && !sims[0].connMan.powered |
946 | - StateChangeScript { script: { |
947 | - selector.selectedIndex = |
948 | - selector.model.indexOf( |
949 | - sims[1].radioSettings.technologyPreference) |
950 | - }} |
951 | - }, |
952 | - State { |
953 | - name: "bothOnline" |
954 | - when: sims[0].connMan.powered && sims[1].connMan.powered |
955 | - StateChangeScript { script: { |
956 | - sims[1].connMan.powered = false; |
957 | - }} |
958 | - } |
959 | - ] |
960 | - |
961 | ListItem.ItemSelector { |
962 | id: use |
963 | - objectName: "use" |
964 | + objectName: "data" |
965 | text: i18n.tr("Cellular data:") |
966 | expanded: true |
967 | model: { |
968 | @@ -92,6 +52,7 @@ |
969 | } |
970 | selectedIndex: [true, sims[0].connMan.powered, sims[1].connMan.powered] |
971 | .lastIndexOf(true) |
972 | + |
973 | onDelegateClicked: { |
974 | // power all sims on or off |
975 | sims.forEach(function (sim) { |
976 | @@ -100,95 +61,23 @@ |
977 | } |
978 | } |
979 | |
980 | - Connections { |
981 | - target: sims[0].connMan |
982 | - onPoweredChanged: { |
983 | - if (powered) { |
984 | - use.selectedIndex = 1; |
985 | - } |
986 | - } |
987 | - } |
988 | - |
989 | - Connections { |
990 | - target: sims[1].connMan |
991 | - onPoweredChanged: { |
992 | - if (powered) { |
993 | - use.selectedIndex = 2; |
994 | - } |
995 | - } |
996 | - } |
997 | - |
998 | - ListItem.ItemSelector { |
999 | - id: selector |
1000 | - objectName: "technologyPreferenceSelector" |
1001 | - expanded: true |
1002 | - model: { |
1003 | - var sim = getOnlineSim(); |
1004 | - if (sim) { |
1005 | - return sim.radioSettings.modemTechnologies; |
1006 | - } else { |
1007 | - return []; |
1008 | - } |
1009 | - } |
1010 | - delegate: OptionSelectorDelegate { |
1011 | - text: { |
1012 | - return { |
1013 | - 'gsm': i18n.tr("2G only (saves battery)"), |
1014 | - 'umts': i18n.tr("2G/3G (faster)"), |
1015 | - 'lte': i18n.tr("2G/3G/4G (faster)") |
1016 | - }[modelData] |
1017 | - } |
1018 | - } |
1019 | - visible: use.selectedIndex !== 0 |
1020 | - onDelegateClicked: { |
1021 | - var sim = getOnlineSim(); |
1022 | - if (sim) { |
1023 | - sim.radioSettings.technologyPreference = model[index]; |
1024 | - } |
1025 | - } |
1026 | - } |
1027 | - |
1028 | - Binding { |
1029 | - target: selector |
1030 | - property: "enabled" |
1031 | - value: getOnlineSim() && |
1032 | - (getOnlineSim().radioSettings.technologyPreference !== "") |
1033 | - when: getOnlineSim() |
1034 | - } |
1035 | - |
1036 | - Connections { |
1037 | - target: sims[0].radioSettings |
1038 | - onTechnologyPreferenceChanged: { |
1039 | - if (sims[0].connMan.powered) { |
1040 | - selector.selectedIndex = selector.model.indexOf(preference); |
1041 | - } |
1042 | - } |
1043 | - } |
1044 | - |
1045 | - Connections { |
1046 | - target: sims[1].radioSettings |
1047 | - onTechnologyPreferenceChanged: { |
1048 | - if (sims[1].connMan.powered) { |
1049 | - selector.selectedIndex = selector.model.indexOf(preference); |
1050 | - } |
1051 | - } |
1052 | - } |
1053 | - |
1054 | ListItem.Standard { |
1055 | id: dataRoamingItem |
1056 | - objectName: "dataRoamingSwitch" |
1057 | text: i18n.tr("Data roaming") |
1058 | enabled: use.selectedIndex !== 0 |
1059 | control: Switch { |
1060 | id: dataRoamingControl |
1061 | - onClicked: getOnlineSim().connMan.roamingAllowed = checked |
1062 | + objectName: "roaming" |
1063 | + |
1064 | + property bool serverChecked: poweredSim && poweredSim.connMan.roamingAllowed |
1065 | + onServerCheckedChanged: checked = serverChecked |
1066 | + Component.onCompleted: checked = serverChecked |
1067 | + onTriggered: { |
1068 | + if (poweredSim) { |
1069 | + poweredSim.connMan.roamingAllowed = checked; |
1070 | + } |
1071 | + } |
1072 | } |
1073 | - } |
1074 | - |
1075 | - Binding { |
1076 | - target: dataRoamingControl |
1077 | - property: "checked" |
1078 | - value: getOnlineSim() && getOnlineSim().connMan.roamingAllowed |
1079 | - when: getOnlineSim() |
1080 | + showDivider: false |
1081 | } |
1082 | } |
1083 | |
1084 | === modified file 'plugins/cellular/Components/MultiSim.qml' |
1085 | --- plugins/cellular/Components/MultiSim.qml 2014-10-06 19:38:06 +0000 |
1086 | +++ plugins/cellular/Components/MultiSim.qml 2014-11-07 22:38:03 +0000 |
1087 | @@ -23,21 +23,26 @@ |
1088 | import Ubuntu.Components.ListItems 0.1 as ListItem |
1089 | |
1090 | Column { |
1091 | - |
1092 | objectName: "multiSim" |
1093 | |
1094 | property var sims |
1095 | + property var poweredSim: { |
1096 | + var s = null; |
1097 | + sims.forEach(function (sim) { |
1098 | + if (sim.connMan.powered === true) { |
1099 | + s = sim; |
1100 | + } |
1101 | + }); |
1102 | + return s; |
1103 | + } |
1104 | property var modems |
1105 | - |
1106 | // make settings available to all children of root |
1107 | property var settings: phoneSettings |
1108 | |
1109 | - CellularMultiSim { |
1110 | - anchors { left: parent.left; right: parent.right } |
1111 | + DataMultiSim { |
1112 | + anchors { left: parent.left; right: parent.right } |
1113 | } |
1114 | |
1115 | - ListItem.Divider {} |
1116 | - |
1117 | ListItem.SingleValue { |
1118 | text : i18n.tr("Hotspot disabled because Wi-Fi is off.") |
1119 | visible: showAllUI && !hotspotItem.visible |
1120 | @@ -60,15 +65,14 @@ |
1121 | visible: showAllUI |
1122 | } |
1123 | |
1124 | - ListItem.Divider { |
1125 | - visible: hotspotItem.visible || dataUsage.visible |
1126 | - } |
1127 | + ListItem.Divider {} |
1128 | |
1129 | ListItem.SingleValue { |
1130 | text: i18n.tr("Carriers") |
1131 | id: chooseCarrier |
1132 | - objectName: "chooseCarrier" |
1133 | + objectName: "carriers" |
1134 | progression: enabled |
1135 | + showDivider: false |
1136 | onClicked: { |
1137 | pageStack.push(Qt.resolvedUrl("../PageChooseCarriers.qml"), { |
1138 | sims: sims |
1139 | @@ -88,6 +92,44 @@ |
1140 | anchors { left: parent.left; right: parent.right } |
1141 | } |
1142 | |
1143 | + ListItem.Divider {} |
1144 | + |
1145 | + function techToString (tech) { |
1146 | + return { |
1147 | + 'gsm': i18n.tr("2G only (saves battery)"), |
1148 | + 'umts': i18n.tr("2G/3G (faster)"), |
1149 | + 'lte': i18n.tr("2G/3G/4G (faster)") |
1150 | + }[tech] |
1151 | + } |
1152 | + |
1153 | + ListItem.ItemSelector { |
1154 | + id: radio |
1155 | + expanded: true |
1156 | + text: i18n.tr("Connection type:") |
1157 | + model: poweredSim ? poweredSim.radioSettings.modemTechnologies : [] |
1158 | + delegate: OptionSelectorDelegate { |
1159 | + objectName: poweredSim.path + "_radio_" + modelData |
1160 | + text: techToString(modelData) |
1161 | + } |
1162 | + enabled: poweredSim ? |
1163 | + (poweredSim.radioSettings.technologyPreference !== "") : false |
1164 | + visible: poweredSim |
1165 | + selectedIndex: poweredSim ? |
1166 | + model.indexOf(poweredSim.radioSettings.technologyPreference) : -1 |
1167 | + onDelegateClicked: { |
1168 | + poweredSim.radioSettings.technologyPreference = model[index]; |
1169 | + } |
1170 | + } |
1171 | + |
1172 | + Connections { |
1173 | + target: poweredSim ? poweredSim.radioSettings : null |
1174 | + onTechnologyPreferenceChanged: { |
1175 | + radio.selectedIndex = |
1176 | + poweredSim.radioSettings.modemTechnologies.indexOf(preference) |
1177 | + } |
1178 | + ignoreUnknownSignals: true |
1179 | + } |
1180 | + |
1181 | GSettings { |
1182 | id: phoneSettings |
1183 | schema.id: "com.ubuntu.phone" |
1184 | |
1185 | === modified file 'plugins/cellular/Components/NoSim.qml' |
1186 | --- plugins/cellular/Components/NoSim.qml 2014-08-19 10:58:01 +0000 |
1187 | +++ plugins/cellular/Components/NoSim.qml 2014-11-07 22:38:03 +0000 |
1188 | @@ -25,27 +25,20 @@ |
1189 | |
1190 | objectName: "noSim" |
1191 | |
1192 | - ListItem.ItemSelector { |
1193 | + ListItem.Standard { |
1194 | text: i18n.tr("Cellular data:") |
1195 | - expanded: true |
1196 | enabled: false |
1197 | - model: [i18n.tr("Off"), i18n.tr("2G only (saves battery)"), i18n.tr("2G/3G/4G (faster)")] |
1198 | - selectedIndex: -1 |
1199 | + control: Switch { |
1200 | + checked: false |
1201 | + } |
1202 | } |
1203 | |
1204 | ListItem.Standard { |
1205 | text: i18n.tr("Data roaming") |
1206 | enabled: false |
1207 | + showDivider: false |
1208 | control: Switch { |
1209 | checked: false |
1210 | } |
1211 | } |
1212 | - |
1213 | - ListItem.Divider {} |
1214 | - |
1215 | - ListItem.SingleValue { |
1216 | - text: i18n.tr("Carrier"); |
1217 | - value: i18n.tr("N/A") |
1218 | - enabled: false |
1219 | - } |
1220 | } |
1221 | |
1222 | === added file 'plugins/cellular/Components/RadioSingleSim.qml' |
1223 | --- plugins/cellular/Components/RadioSingleSim.qml 1970-01-01 00:00:00 +0000 |
1224 | +++ plugins/cellular/Components/RadioSingleSim.qml 2014-11-07 22:38:03 +0000 |
1225 | @@ -0,0 +1,57 @@ |
1226 | +/* |
1227 | + * Copyright (C) 2014 Canonical Ltd |
1228 | + * |
1229 | + * This program is free software: you can redistribute it and/or modify |
1230 | + * it under the terms of the GNU General Public License version 3 as |
1231 | + * published by the Free Software Foundation. |
1232 | + * |
1233 | + * This program is distributed in the hope that it will be useful, |
1234 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
1235 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1236 | + * GNU General Public License for more details. |
1237 | + * |
1238 | + * You should have received a copy of the GNU General Public License |
1239 | + * along with this program. If not, see <http://www.gnu.org/licenses/>. |
1240 | + * |
1241 | + * Authors: |
1242 | + * Jonas G. Drange <jonas.drange@canonical.com> |
1243 | + * |
1244 | +*/ |
1245 | +import QtQuick 2.0 |
1246 | +import Ubuntu.Components 0.1 |
1247 | +import Ubuntu.Components.ListItems 0.1 as ListItem |
1248 | + |
1249 | +Column { |
1250 | + height: childrenRect.height |
1251 | + |
1252 | + property alias selector: selector |
1253 | + |
1254 | + ListItem.ItemSelector { |
1255 | + id: selector |
1256 | + text: i18n.tr("Connection type:") |
1257 | + showDivider: false |
1258 | + expanded: true |
1259 | + |
1260 | + // an empty string is not a valid preference, which means |
1261 | + // we disregard the interace and disable the selector |
1262 | + enabled: sim.radioSettings.technologyPreference !== "" |
1263 | + model: sim.radioSettings.modemTechnologies |
1264 | + |
1265 | + delegate: OptionSelectorDelegate { |
1266 | + objectName: sim.path + "_radio_" + modelData |
1267 | + text: { |
1268 | + return { |
1269 | + 'gsm': i18n.tr("2G only (saves battery)"), |
1270 | + 'umts': i18n.tr("2G/3G (faster)"), |
1271 | + 'lte': i18n.tr("2G/3G/4G (faster)") |
1272 | + }[modelData] |
1273 | + } |
1274 | + showDivider: false |
1275 | + } |
1276 | + selectedIndex: model.indexOf(sim.radioSettings.technologyPreference) |
1277 | + onDelegateClicked: { |
1278 | + sim.radioSettings.technologyPreference = model[index]; |
1279 | + } |
1280 | + } |
1281 | + |
1282 | +} |
1283 | |
1284 | === modified file 'plugins/cellular/Components/SimEditor.qml' |
1285 | --- plugins/cellular/Components/SimEditor.qml 2014-08-20 13:48:58 +0000 |
1286 | +++ plugins/cellular/Components/SimEditor.qml 2014-11-07 22:38:03 +0000 |
1287 | @@ -22,15 +22,9 @@ |
1288 | import Ubuntu.Components.ListItems 0.1 as ListItem |
1289 | |
1290 | Column { |
1291 | - |
1292 | id: simList |
1293 | objectName: "simEditor" |
1294 | |
1295 | - anchors { |
1296 | - left: parent.left |
1297 | - right: parent.right |
1298 | - } |
1299 | - |
1300 | states: [ |
1301 | State { |
1302 | name: "editing" |
1303 | @@ -73,7 +67,25 @@ |
1304 | } |
1305 | ] |
1306 | |
1307 | + NumberAnimation { |
1308 | + id: scrollerAnimation |
1309 | + duration: UbuntuAnimation.SnapDuration |
1310 | + easing: UbuntuAnimation.StandardEasing |
1311 | + target: root.flickable |
1312 | + property: "contentY" |
1313 | + } |
1314 | + |
1315 | + function openedEditor () { |
1316 | + var flickable = scrollerAnimation.target; |
1317 | + var maxFlick = Math.max(0, flickable.contentHeight - root.height); |
1318 | + scrollerAnimation.from = flickable.contentY; |
1319 | + scrollerAnimation.to = Math.min(y, maxFlick) - units.gu(9); // header |
1320 | + scrollerAnimation.start(); |
1321 | + nameField.forceActiveFocus(); |
1322 | + } |
1323 | + |
1324 | ListItem.Standard { |
1325 | + id: std |
1326 | text: i18n.tr("Edit SIM Name") |
1327 | } |
1328 | |
1329 | @@ -83,12 +95,14 @@ |
1330 | right: parent.right |
1331 | } |
1332 | height: expandedItem ? |
1333 | - childrenRect.height + editor.height : childrenRect.height |
1334 | + expandedItem.expandedHeight : childrenRect.height |
1335 | + |
1336 | + boundsBehavior: Flickable.StopAtBounds |
1337 | |
1338 | ListItem.Expandable { |
1339 | id: sim1Exp |
1340 | expandedHeight: sim1Col.height |
1341 | - objectName: "editSim1" |
1342 | + objectName: "edit_name_" + sims[0].path |
1343 | Column { |
1344 | id: sim1Col |
1345 | anchors { |
1346 | @@ -102,7 +116,7 @@ |
1347 | } |
1348 | height: sim1Exp.collapsedHeight |
1349 | Label { |
1350 | - objectName: "simLabel1" |
1351 | + objectName: "label_" + sims[0].path |
1352 | anchors { |
1353 | left: parent.left |
1354 | right: parent.right |
1355 | @@ -117,14 +131,15 @@ |
1356 | } |
1357 | onClicked: { |
1358 | simList.state = "editingSim1"; |
1359 | - nameField.forceActiveFocus(); |
1360 | + simList.openedEditor(); |
1361 | } |
1362 | } |
1363 | |
1364 | ListItem.Expandable { |
1365 | id: sim2Exp |
1366 | expandedHeight: sim2Col.height |
1367 | - objectName: "editSim2" |
1368 | + objectName: "edit_name_" + sims[1].path |
1369 | + showDivider: false |
1370 | Column { |
1371 | id: sim2Col |
1372 | anchors { |
1373 | @@ -138,7 +153,7 @@ |
1374 | } |
1375 | height: sim2Exp.collapsedHeight |
1376 | Label { |
1377 | - objectName: "simLabel2" |
1378 | + objectName: "label_" + sims[1].path |
1379 | anchors { |
1380 | left: parent.left |
1381 | right: parent.right |
1382 | @@ -153,7 +168,7 @@ |
1383 | } |
1384 | onClicked: { |
1385 | simList.state = "editingSim2"; |
1386 | - nameField.forceActiveFocus(); |
1387 | + simList.openedEditor(); |
1388 | } |
1389 | } |
1390 | } |
1391 | @@ -182,6 +197,8 @@ |
1392 | |
1393 | spacing: units.gu(2) |
1394 | |
1395 | + height: cancel.height + rename.height |
1396 | + |
1397 | Button { |
1398 | id: cancel |
1399 | objectName: "cancelRename" |
1400 | @@ -204,7 +221,7 @@ |
1401 | } |
1402 | |
1403 | Item { |
1404 | - height: units.gu(1) |
1405 | + height: units.gu(2) |
1406 | width: parent.width |
1407 | } |
1408 | |
1409 | |
1410 | === modified file 'plugins/cellular/Components/SingleSim.qml' |
1411 | --- plugins/cellular/Components/SingleSim.qml 2014-10-02 09:50:11 +0000 |
1412 | +++ plugins/cellular/Components/SingleSim.qml 2014-11-07 22:38:03 +0000 |
1413 | @@ -27,11 +27,35 @@ |
1414 | |
1415 | property var sim |
1416 | |
1417 | - CellularSingleSim { |
1418 | - anchors { left: parent.left; right: parent.right } |
1419 | - } |
1420 | - |
1421 | - ListItem.Divider {} |
1422 | + ListItem.Standard { |
1423 | + id: selector |
1424 | + text: i18n.tr("Cellular data:") |
1425 | + control: Switch { |
1426 | + id: dataControl |
1427 | + objectName: 'data' |
1428 | + |
1429 | + property bool serverChecked: sim.connMan.powered |
1430 | + onServerCheckedChanged: checked = serverChecked |
1431 | + Component.onCompleted: checked = serverChecked |
1432 | + onTriggered: sim.connMan.powered = checked |
1433 | + } |
1434 | + } |
1435 | + |
1436 | + ListItem.Standard { |
1437 | + id: dataRoamingItem |
1438 | + text: i18n.tr("Data roaming") |
1439 | + enabled: sim.connMan.powered |
1440 | + showDivider: false |
1441 | + control: Switch { |
1442 | + id: dataRoamingControl |
1443 | + objectName: "roaming" |
1444 | + |
1445 | + property bool serverChecked: sim.connMan.roamingAllowed |
1446 | + onServerCheckedChanged: checked = serverChecked |
1447 | + Component.onCompleted: checked = serverChecked |
1448 | + onTriggered: sim.connMan.roamingAllowed = checked |
1449 | + } |
1450 | + } |
1451 | |
1452 | ListItem.SingleValue { |
1453 | text : i18n.tr("Hotspot disabled because Wi-Fi is off.") |
1454 | @@ -54,10 +78,22 @@ |
1455 | visible: showAllUI |
1456 | } |
1457 | |
1458 | + ListItem.Divider { |
1459 | + visible: radio.selector.model.length |
1460 | + } |
1461 | + |
1462 | + RadioSingleSim { |
1463 | + id: radio |
1464 | + anchors { left: parent.left; right: parent.right } |
1465 | + visible: radio.selector.model.length |
1466 | + } |
1467 | + |
1468 | + ListItem.Divider {} |
1469 | + |
1470 | ListItem.SingleValue { |
1471 | text: i18n.tr("Carrier"); |
1472 | id: chooseCarrier |
1473 | - objectName: "chooseCarrier" |
1474 | + objectName: "carrier" |
1475 | progression: enabled |
1476 | value: sim.netReg.name || i18n.tr("N/A") |
1477 | enabled: sim.netReg.status !== "" |
1478 | |
1479 | === modified file 'plugins/cellular/CustomApnEditor.qml' |
1480 | --- plugins/cellular/CustomApnEditor.qml 2014-10-06 14:28:46 +0000 |
1481 | +++ plugins/cellular/CustomApnEditor.qml 2014-11-07 22:38:03 +0000 |
1482 | @@ -198,7 +198,7 @@ |
1483 | inputMethodHints: Qt.ImhUrlCharactersOnly | Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText |
1484 | } |
1485 | Label { |
1486 | - text: "Port" |
1487 | + text: i18n.tr("Port") |
1488 | visible: d.isMms |
1489 | } |
1490 | TextField { |
1491 | |
1492 | === modified file 'plugins/cellular/PageChooseCarrier.qml' |
1493 | --- plugins/cellular/PageChooseCarrier.qml 2014-10-06 12:56:18 +0000 |
1494 | +++ plugins/cellular/PageChooseCarrier.qml 2014-11-07 22:38:03 +0000 |
1495 | @@ -149,7 +149,7 @@ |
1496 | |
1497 | ListItem.ItemSelector { |
1498 | id: chooseCarrier |
1499 | - objectName: "autoChooseCarrierSelector" |
1500 | + objectName: "mode" |
1501 | expanded: true |
1502 | enabled: sim.netReg.mode !== "auto-only" |
1503 | text: i18n.tr("Choose carrier:") |
1504 | @@ -171,6 +171,7 @@ |
1505 | } |
1506 | } |
1507 | } |
1508 | + |
1509 | ListItem.SingleControl { |
1510 | enabled: chooseCarrier.selectedIndex === 1 |
1511 | anchors { |
1512 | @@ -198,7 +199,7 @@ |
1513 | } |
1514 | ListItem.ItemSelector { |
1515 | id: carrierSelector |
1516 | - objectName: "carrierSelector" |
1517 | + objectName: "carriers" |
1518 | expanded: true |
1519 | enabled: sim.netReg.status !== "searching" && chooseCarrier.selectedIndex === 1 |
1520 | // work around ItemSelector not having a visual change depending on being disabled |
1521 | |
1522 | === modified file 'plugins/cellular/PageChooseCarriers.qml' |
1523 | --- plugins/cellular/PageChooseCarriers.qml 2014-10-06 19:38:06 +0000 |
1524 | +++ plugins/cellular/PageChooseCarriers.qml 2014-11-07 22:38:03 +0000 |
1525 | @@ -44,7 +44,7 @@ |
1526 | } |
1527 | |
1528 | ListItem.SingleValue { |
1529 | - objectName: "chooseCarrierSim1" |
1530 | + objectName: sims[0].path + "_carriers" |
1531 | value: sims[0].netReg.name ? sims[0].netReg.name : i18n.tr("N/A") |
1532 | enabled: sims[0].netReg.status !== "" |
1533 | progression: true |
1534 | @@ -61,7 +61,7 @@ |
1535 | } |
1536 | |
1537 | ListItem.SingleValue { |
1538 | - objectName: "chooseCarrierSim2" |
1539 | + objectName: sims[1].path + "_carriers" |
1540 | value: sims[1].netReg.name ? sims[1].netReg.name : i18n.tr("N/A") |
1541 | enabled: sims[1].netReg.status !== "" |
1542 | progression: true |
1543 | |
1544 | === modified file 'plugins/cellular/PageComponent.qml' |
1545 | --- plugins/cellular/PageComponent.qml 2014-10-17 14:57:17 +0000 |
1546 | +++ plugins/cellular/PageComponent.qml 2014-11-07 22:38:03 +0000 |
1547 | @@ -94,15 +94,15 @@ |
1548 | start() |
1549 | } |
1550 | } |
1551 | + |
1552 | Flickable { |
1553 | + id: flick |
1554 | anchors.fill: parent |
1555 | contentWidth: parent.width |
1556 | contentHeight: contentItem.childrenRect.height |
1557 | boundsBehavior: (contentHeight > root.height) ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds |
1558 | - |
1559 | Column { |
1560 | anchors { left: parent.left; right: parent.right } |
1561 | - |
1562 | Loader { |
1563 | id: loader |
1564 | anchors { left: parent.left; right: parent.right } |
1565 | |
1566 | === modified file 'plugins/cellular/sims.js' |
1567 | --- plugins/cellular/sims.js 2014-10-03 14:08:08 +0000 |
1568 | +++ plugins/cellular/sims.js 2014-11-07 22:38:03 +0000 |
1569 | @@ -17,6 +17,16 @@ |
1570 | return getPresent()[0]; |
1571 | } |
1572 | |
1573 | +function getFirstOnline () { |
1574 | + var online = null; |
1575 | + getPresent().forEach(function (sim) { |
1576 | + if (sim.connMan.powered === true) { |
1577 | + online = sim; |
1578 | + } |
1579 | + }); |
1580 | + return online; |
1581 | +} |
1582 | + |
1583 | function getCount () { |
1584 | return getAll().length; |
1585 | } |
1586 | |
1587 | === modified file 'plugins/flight-mode/EntryComponent.qml' |
1588 | --- plugins/flight-mode/EntryComponent.qml 2014-06-12 08:19:01 +0000 |
1589 | +++ plugins/flight-mode/EntryComponent.qml 2014-11-07 22:38:03 +0000 |
1590 | @@ -29,13 +29,13 @@ |
1591 | iconFrame: false |
1592 | text: i18n.tr(model.displayName) |
1593 | control: Switch { |
1594 | - id: control |
1595 | - checked: helper.inFlightMode |
1596 | + property bool serverChecked: helper.inFlightMode |
1597 | + onServerCheckedChanged: checked = serverChecked |
1598 | + Component.onCompleted: checked = serverChecked |
1599 | onTriggered: helper.setFlightMode(checked) |
1600 | } |
1601 | |
1602 | FlightMode.Helper { |
1603 | id: helper |
1604 | - onInFlightModeChanged: control.checked = inFlightMode |
1605 | } |
1606 | } |
1607 | |
1608 | === modified file 'plugins/language/DisplayLanguage.qml' |
1609 | --- plugins/language/DisplayLanguage.qml 2014-09-03 22:01:57 +0000 |
1610 | +++ plugins/language/DisplayLanguage.qml 2014-11-07 22:38:03 +0000 |
1611 | @@ -73,7 +73,6 @@ |
1612 | |
1613 | onCurrentIndexChanged: { |
1614 | i18n.language = plugin.languageCodes[currentIndex] |
1615 | - i18n.domain = i18n.domain |
1616 | } |
1617 | } |
1618 | |
1619 | @@ -107,7 +106,6 @@ |
1620 | |
1621 | onClicked: { |
1622 | i18n.language = initialLanguage |
1623 | - i18n.domain = i18n.domain |
1624 | PopupUtils.close(root) |
1625 | } |
1626 | } |
1627 | |
1628 | === modified file 'plugins/language/PageComponent.qml' |
1629 | --- plugins/language/PageComponent.qml 2014-09-03 14:43:44 +0000 |
1630 | +++ plugins/language/PageComponent.qml 2014-11-07 22:38:03 +0000 |
1631 | @@ -71,6 +71,7 @@ |
1632 | } |
1633 | onRevert: { |
1634 | plugin.currentLanguage = to; |
1635 | + i18n.language = plugin.languageCodes[to] |
1636 | } |
1637 | } |
1638 | } |
1639 | @@ -142,9 +143,10 @@ |
1640 | text: i18n.tr("Spell checking") |
1641 | |
1642 | control: Switch { |
1643 | - checked: settings.spellChecking |
1644 | - |
1645 | - onClicked: settings.spellChecking = checked |
1646 | + property bool serverChecked: settings.spellChecking |
1647 | + onServerCheckedChanged: checked = serverChecked |
1648 | + Component.onCompleted: checked = serverChecked |
1649 | + onTriggered: settings.spellChecking = checked |
1650 | } |
1651 | } |
1652 | |
1653 | @@ -152,9 +154,10 @@ |
1654 | text: i18n.tr("Auto correction") |
1655 | |
1656 | control: Switch { |
1657 | - checked: settings.autoCompletion |
1658 | - |
1659 | - onClicked: settings.autoCompletion = checked |
1660 | + property bool serverChecked: settings.autoCompletion |
1661 | + onServerCheckedChanged: checked = serverChecked |
1662 | + Component.onCompleted: checked = serverChecked |
1663 | + onTriggered: settings.autoCompletion = checked |
1664 | } |
1665 | } |
1666 | |
1667 | @@ -162,9 +165,10 @@ |
1668 | text: i18n.tr("Word suggestions") |
1669 | |
1670 | control: Switch { |
1671 | - checked: settings.predictiveText |
1672 | - |
1673 | - onClicked: settings.predictiveText = checked |
1674 | + property bool serverChecked: settings.predictiveText |
1675 | + onServerCheckedChanged: checked = serverChecked |
1676 | + Component.onCompleted: checked = serverChecked |
1677 | + onTriggered: settings.predictiveText = checked |
1678 | } |
1679 | } |
1680 | |
1681 | @@ -175,9 +179,10 @@ |
1682 | text: i18n.tr("Auto capitalization") |
1683 | |
1684 | control: Switch { |
1685 | - checked: settings.autoCapitalization |
1686 | - |
1687 | - onClicked: settings.autoCapitalization = checked |
1688 | + property bool serverChecked: settings.autoCapitalization |
1689 | + onServerCheckedChanged: checked = serverChecked |
1690 | + Component.onCompleted: checked = serverChecked |
1691 | + onTriggered: settings.autoCapitalization = checked |
1692 | } |
1693 | } |
1694 | |
1695 | @@ -192,9 +197,10 @@ |
1696 | text: i18n.tr("Auto punctuation") |
1697 | |
1698 | control: Switch { |
1699 | - checked: settings.doubleSpaceFullStop |
1700 | - |
1701 | - onClicked: settings.doubleSpaceFullStop = checked |
1702 | + property bool serverChecked: settings.doubleSpaceFullStop |
1703 | + onServerCheckedChanged: checked = serverChecked |
1704 | + Component.onCompleted: checked = serverChecked |
1705 | + onTriggered: settings.doubleSpaceFullStop = checked |
1706 | } |
1707 | } |
1708 | |
1709 | @@ -209,9 +215,10 @@ |
1710 | text: i18n.tr("Keyboard sound") |
1711 | |
1712 | control: Switch { |
1713 | - checked: settings.keyPressFeedback |
1714 | - |
1715 | - onClicked: settings.keyPressFeedback = checked |
1716 | + property bool serverChecked: settings.keyPressFeedback |
1717 | + onServerCheckedChanged: checked = serverChecked |
1718 | + Component.onCompleted: checked = serverChecked |
1719 | + onTriggered: settings.keyPressFeedback = checked |
1720 | } |
1721 | } |
1722 | |
1723 | @@ -219,9 +226,10 @@ |
1724 | text: i18n.tr("Keyboard vibration") |
1725 | |
1726 | control: Switch { |
1727 | - checked: settings.keyPressHapticFeedback |
1728 | - |
1729 | - onClicked: settings.keyPressHapticFeedback = checked |
1730 | + property bool serverChecked: settings.keyPressHapticFeedback |
1731 | + onServerCheckedChanged: checked = serverChecked |
1732 | + Component.onCompleted: checked = serverChecked |
1733 | + onTriggered: settings.keyPressHapticFeedback = checked |
1734 | } |
1735 | } |
1736 | } |
1737 | |
1738 | === modified file 'plugins/language/SpellChecking.qml' |
1739 | --- plugins/language/SpellChecking.qml 2014-01-30 11:32:47 +0000 |
1740 | +++ plugins/language/SpellChecking.qml 2014-11-07 22:38:03 +0000 |
1741 | @@ -18,6 +18,8 @@ |
1742 | * with this program. If not, see <http://www.gnu.org/licenses/>. |
1743 | */ |
1744 | |
1745 | +import QtQuick 2.0 |
1746 | +import GSettings 1.0 |
1747 | import SystemSettings 1.0 |
1748 | import Ubuntu.Components 0.1 |
1749 | import Ubuntu.Components.ListItems 0.1 as ListItem |
1750 | @@ -30,15 +32,22 @@ |
1751 | id: plugin |
1752 | } |
1753 | |
1754 | + GSettings { |
1755 | + id: settings |
1756 | + |
1757 | + schema.id: "com.canonical.keyboard.maliit" |
1758 | + } |
1759 | + |
1760 | ListItem.Standard { |
1761 | id: item |
1762 | |
1763 | text: i18n.tr("Spell checking") |
1764 | |
1765 | control: Switch { |
1766 | - checked: plugin.spellChecking |
1767 | - |
1768 | - onClicked: plugin.spellChecking = checked |
1769 | + property bool serverChecked: settings.spellChecking |
1770 | + onServerCheckedChanged: checked = serverChecked |
1771 | + Component.onCompleted: checked = serverChecked |
1772 | + onTriggered: settings.spellChecking = checked |
1773 | } |
1774 | } |
1775 | |
1776 | |
1777 | === modified file 'plugins/notifications/PageComponent.qml' |
1778 | --- plugins/notifications/PageComponent.qml 2014-08-29 09:17:39 +0000 |
1779 | +++ plugins/notifications/PageComponent.qml 2014-11-07 22:38:03 +0000 |
1780 | @@ -46,6 +46,7 @@ |
1781 | margins: units.gu(1) |
1782 | } |
1783 | } |
1784 | + highlightWhenPressed: false |
1785 | } |
1786 | |
1787 | ListView { |
1788 | |
1789 | === modified file 'plugins/orientation-lock/EntryComponent.qml' |
1790 | --- plugins/orientation-lock/EntryComponent.qml 2014-09-04 11:47:52 +0000 |
1791 | +++ plugins/orientation-lock/EntryComponent.qml 2014-11-07 22:38:03 +0000 |
1792 | @@ -33,10 +33,12 @@ |
1793 | control: Switch { |
1794 | id: control |
1795 | objectName: "orientationLockSwitch" |
1796 | - checked: systemSettings.rotationLock |
1797 | - onClicked: { |
1798 | - systemSettings.rotationLock = checked |
1799 | - } |
1800 | + |
1801 | + property bool serverChecked: systemSettings.rotationLock |
1802 | + onServerCheckedChanged: checked = serverChecked |
1803 | + Component.onCompleted: checked = serverChecked |
1804 | + onTriggered: systemSettings.rotationLock = checked |
1805 | + |
1806 | GSettings { |
1807 | id: systemSettings |
1808 | schema.id: "com.ubuntu.touch.system" |
1809 | |
1810 | === modified file 'plugins/phone/PageComponent.qml' |
1811 | --- plugins/phone/PageComponent.qml 2014-10-03 14:08:08 +0000 |
1812 | +++ plugins/phone/PageComponent.qml 2014-11-07 22:38:03 +0000 |
1813 | @@ -104,8 +104,10 @@ |
1814 | ListItem.Standard { |
1815 | control: Switch { |
1816 | objectName: "dialpadSounds" |
1817 | - checked: soundPlugin.dialpadSoundsEnabled |
1818 | - onCheckedChanged: soundPlugin.dialpadSoundsEnabled = checked |
1819 | + property bool serverChecked: soundPlugin.dialpadSoundsEnabled |
1820 | + onServerCheckedChanged: checked = serverChecked |
1821 | + Component.onCompleted: checked = serverChecked |
1822 | + onTriggered: soundPlugin.dialpadSoundsEnabled = checked |
1823 | } |
1824 | text: i18n.tr("Dialpad sounds") |
1825 | } |
1826 | |
1827 | === modified file 'plugins/reset/ResetLauncherHome.qml' |
1828 | --- plugins/reset/ResetLauncherHome.qml 2014-09-30 11:38:35 +0000 |
1829 | +++ plugins/reset/ResetLauncherHome.qml 2014-11-07 22:38:03 +0000 |
1830 | @@ -55,11 +55,5 @@ |
1831 | text: i18n.tr("Cancel") |
1832 | onClicked: PopupUtils.close(dialog) |
1833 | } |
1834 | - Label { |
1835 | - text: i18n.tr("The phone needs to restart for changes to take effect.") |
1836 | - width: parent.width |
1837 | - wrapMode: Text.Wrap |
1838 | - horizontalAlignment: Text.AlignHCenter |
1839 | - } |
1840 | } |
1841 | } |
1842 | |
1843 | === modified file 'plugins/security-privacy/Location.qml' |
1844 | --- plugins/security-privacy/Location.qml 2014-10-21 13:17:01 +0000 |
1845 | +++ plugins/security-privacy/Location.qml 2014-11-07 22:38:03 +0000 |
1846 | @@ -90,6 +90,10 @@ |
1847 | anchors.left: parent.left |
1848 | anchors.right: parent.right |
1849 | |
1850 | + SettingsItemTitle { |
1851 | + text: i18n.tr("Let the phone detect your location:") |
1852 | + } |
1853 | + |
1854 | ListItem.ItemSelector { |
1855 | id: detection |
1856 | |
1857 | @@ -112,7 +116,6 @@ |
1858 | } |
1859 | property bool allow: selectedIndex !== (model.count - 1) |
1860 | |
1861 | - text: i18n.tr("Let the phone detect your location:") |
1862 | expanded: true |
1863 | model: optionsModel |
1864 | delegate: optionsDelegate |
1865 | @@ -220,9 +223,7 @@ |
1866 | visible: showAllUI /* hide until the information is real */ |
1867 | } |
1868 | |
1869 | - ListItem.Divider {} |
1870 | - |
1871 | - ListItem.Standard { |
1872 | + SettingsItemTitle { |
1873 | text: i18n.tr("Allow access to location:") |
1874 | enabled: detection.allow |
1875 | } |
1876 | |
1877 | === modified file 'plugins/security-privacy/LockSecurity.qml' |
1878 | --- plugins/security-privacy/LockSecurity.qml 2014-09-22 15:21:10 +0000 |
1879 | +++ plugins/security-privacy/LockSecurity.qml 2014-11-07 22:38:03 +0000 |
1880 | @@ -340,7 +340,7 @@ |
1881 | anchors.left: parent.left |
1882 | anchors.right: parent.right |
1883 | |
1884 | - ListItem.Standard { |
1885 | + SettingsItemTitle { |
1886 | text: i18n.tr("Unlock the phone using:") |
1887 | } |
1888 | |
1889 | |
1890 | === modified file 'plugins/security-privacy/PageComponent.qml' |
1891 | --- plugins/security-privacy/PageComponent.qml 2014-10-16 13:43:16 +0000 |
1892 | +++ plugins/security-privacy/PageComponent.qml 2014-11-07 22:38:03 +0000 |
1893 | @@ -121,7 +121,7 @@ |
1894 | anchors.left: parent.left |
1895 | anchors.right: parent.right |
1896 | |
1897 | - ListItem.Standard { |
1898 | + ListItem.Header { |
1899 | id: securityTitle |
1900 | text: i18n.tr("Security") |
1901 | } |
1902 | @@ -181,35 +181,29 @@ |
1903 | "Encryption protects against access to phone data when the phone is connected to a PC or other device.") |
1904 | visible: showAllUI |
1905 | } |
1906 | - ListItem.Standard { |
1907 | + ListItem.Header { |
1908 | text: i18n.tr("Privacy") |
1909 | } |
1910 | ListItem.Standard { |
1911 | text: i18n.tr("Stats on welcome screen") |
1912 | control: Switch { |
1913 | - id: welcomeStatsSwitch |
1914 | - checked: securityPrivacy.statsWelcomeScreen |
1915 | + property bool serverChecked: securityPrivacy.statsWelcomeScreen |
1916 | + onServerCheckedChanged: checked = serverChecked |
1917 | + Component.onCompleted: checked = serverChecked |
1918 | + onTriggered: securityPrivacy.statsWelcomeScreen = checked |
1919 | } |
1920 | } |
1921 | - Binding { |
1922 | - target: securityPrivacy |
1923 | - property: "statsWelcomeScreen" |
1924 | - value: welcomeStatsSwitch.checked |
1925 | - } |
1926 | |
1927 | ListItem.Standard { |
1928 | text: i18n.tr("Messages on welcome screen") |
1929 | control: Switch { |
1930 | - id: welcomeMessagesSwitch |
1931 | - checked: securityPrivacy.messagesWelcomeScreen |
1932 | + property bool serverChecked: securityPrivacy.messagesWelcomeScreen |
1933 | + onServerCheckedChanged: checked = serverChecked |
1934 | + Component.onCompleted: checked = serverChecked |
1935 | + onTriggered: securityPrivacy.messagesWelcomeScreen = checked |
1936 | } |
1937 | visible: showAllUI |
1938 | } |
1939 | - Binding { |
1940 | - target: securityPrivacy |
1941 | - property: "messagesWelcomeScreen" |
1942 | - value: welcomeMessagesSwitch.checked |
1943 | - } |
1944 | |
1945 | ListItem.SingleValue { |
1946 | id: dashSearchId |
1947 | |
1948 | === modified file 'plugins/security-privacy/PhoneLocking.qml' |
1949 | --- plugins/security-privacy/PhoneLocking.qml 2014-09-22 15:21:10 +0000 |
1950 | +++ plugins/security-privacy/PhoneLocking.qml 2014-11-07 22:38:03 +0000 |
1951 | @@ -102,7 +102,7 @@ |
1952 | visible: showAllUI |
1953 | } |
1954 | |
1955 | - ListItem.Standard { |
1956 | + SettingsItemTitle { |
1957 | text: i18n.tr("When locked, allow:") |
1958 | } |
1959 | |
1960 | @@ -111,8 +111,11 @@ |
1961 | control: CheckBox { |
1962 | id: launcherCheck |
1963 | enabled: securityPrivacy.securityType !== UbuntuSecurityPrivacyPanel.Swipe |
1964 | - checked: securityPrivacy.enableLauncherWhileLocked || !enabled |
1965 | - onClicked: securityPrivacy.enableLauncherWhileLocked = checked |
1966 | + |
1967 | + property bool serverChecked: securityPrivacy.enableLauncherWhileLocked || !enabled |
1968 | + onServerCheckedChanged: checked = serverChecked |
1969 | + Component.onCompleted: checked = serverChecked |
1970 | + onTriggered: securityPrivacy.enableLauncherWhileLocked = checked |
1971 | } |
1972 | } |
1973 | |
1974 | @@ -121,8 +124,11 @@ |
1975 | control: CheckBox { |
1976 | id: indicatorsCheck |
1977 | enabled: securityPrivacy.securityType !== UbuntuSecurityPrivacyPanel.Swipe |
1978 | - checked: securityPrivacy.enableIndicatorsWhileLocked || !enabled |
1979 | - onClicked: securityPrivacy.enableIndicatorsWhileLocked = checked |
1980 | + |
1981 | + property bool serverChecked: securityPrivacy.enableIndicatorsWhileLocked || !enabled |
1982 | + onServerCheckedChanged: checked = serverChecked |
1983 | + Component.onCompleted: checked = serverChecked |
1984 | + onTriggered: securityPrivacy.enableIndicatorsWhileLocked = checked |
1985 | } |
1986 | } |
1987 | |
1988 | |
1989 | === modified file 'plugins/sound/PageComponent.qml' |
1990 | --- plugins/sound/PageComponent.qml 2014-10-17 15:02:18 +0000 |
1991 | +++ plugins/sound/PageComponent.qml 2014-11-07 22:38:03 +0000 |
1992 | @@ -70,13 +70,15 @@ |
1993 | ListItem.Standard { |
1994 | control: Switch { |
1995 | objectName: "silentMode" |
1996 | - checked: backendInfo.silentMode |
1997 | - onCheckedChanged: backendInfo.silentMode = checked |
1998 | + property bool serverChecked: backendInfo.silentMode |
1999 | + onServerCheckedChanged: checked = serverChecked |
2000 | + Component.onCompleted: checked = serverChecked |
2001 | + onTriggered: backendInfo.silentMode = checked |
2002 | } |
2003 | text: i18n.tr("Silent Mode") |
2004 | } |
2005 | |
2006 | - ListItem.Standard { |
2007 | + SettingsItemTitle { |
2008 | text: i18n.tr("Ringer:") |
2009 | } |
2010 | |
2011 | @@ -108,7 +110,7 @@ |
2012 | onUpdated: soundActionGroup.volume.updateState(value); |
2013 | } |
2014 | |
2015 | - ListItem.Standard { |
2016 | + SettingsItemTitle { |
2017 | text: i18n.tr("Phone calls:") |
2018 | } |
2019 | |
2020 | @@ -129,8 +131,10 @@ |
2021 | ListItem.Standard { |
2022 | control: CheckBox { |
2023 | objectName: "callVibrate" |
2024 | - checked: backendInfo.incomingCallVibrate |
2025 | - onCheckedChanged: backendInfo.incomingCallVibrate = checked |
2026 | + property bool serverChecked: backendInfo.incomingCallVibrate |
2027 | + onServerCheckedChanged: checked = serverChecked |
2028 | + Component.onCompleted: checked = serverChecked |
2029 | + onTriggered: backendInfo.incomingCallVibrate = checked |
2030 | } |
2031 | text: i18n.tr("Vibrate when ringing") |
2032 | } |
2033 | @@ -138,8 +142,10 @@ |
2034 | ListItem.Standard { |
2035 | control: CheckBox { |
2036 | objectName: "callVibrateSilentMode" |
2037 | - checked: backendInfo.incomingCallVibrateSilentMode |
2038 | - onCheckedChanged: backendInfo.incomingCallVibrateSilentMode = checked |
2039 | + property bool serverChecked: backendInfo.incomingCallVibrateSilentMode |
2040 | + onServerCheckedChanged: checked = serverChecked |
2041 | + Component.onCompleted: checked = serverChecked |
2042 | + onTriggered: backendInfo.incomingCallVibrateSilentMode = checked |
2043 | } |
2044 | text: i18n.tr("Vibrate in Silent Mode") |
2045 | } |
2046 | @@ -147,13 +153,15 @@ |
2047 | ListItem.Standard { |
2048 | control: Switch { |
2049 | objectName: "dialpadSounds" |
2050 | - checked: backendInfo.dialpadSoundsEnabled |
2051 | - onCheckedChanged: backendInfo.dialpadSoundsEnabled = checked |
2052 | + property bool serverChecked: backendInfo.dialpadSoundsEnabled |
2053 | + onServerCheckedChanged: checked = serverChecked |
2054 | + Component.onCompleted: checked = serverChecked |
2055 | + onTriggered: backendInfo.dialpadSoundsEnabled = checked |
2056 | } |
2057 | text: i18n.tr("Dialpad sounds") |
2058 | } |
2059 | |
2060 | - ListItem.Standard { |
2061 | + SettingsItemTitle { |
2062 | text: i18n.tr("Messages:") |
2063 | } |
2064 | |
2065 | @@ -173,8 +181,10 @@ |
2066 | ListItem.Standard { |
2067 | control: CheckBox { |
2068 | objectName: "messageVibrate" |
2069 | - checked: backendInfo.incomingMessageVibrate |
2070 | - onCheckedChanged: backendInfo.incomingMessageVibrate = checked |
2071 | + property bool serverChecked: backendInfo.incomingMessageVibrate |
2072 | + onServerCheckedChanged: checked = serverChecked |
2073 | + Component.onCompleted: checked = serverChecked |
2074 | + onTriggered: backendInfo.incomingMessageVibrate = checked |
2075 | } |
2076 | text: i18n.tr("Vibrate with message sound") |
2077 | } |
2078 | @@ -182,13 +192,15 @@ |
2079 | ListItem.Standard { |
2080 | control: CheckBox { |
2081 | objectName: "messageVibrateSilentMode" |
2082 | - checked: backendInfo.incomingMessageVibrateSilentMode |
2083 | - onCheckedChanged: backendInfo.incomingMessageVibrateSilentMode = checked |
2084 | + property bool serverChecked: backendInfo.incomingMessageVibrateSilentMode |
2085 | + onServerCheckedChanged: checked = serverChecked |
2086 | + Component.onCompleted: checked = serverChecked |
2087 | + onTriggered: backendInfo.incomingMessageVibrateSilentMode = checked |
2088 | } |
2089 | text: i18n.tr("Vibrate in Silent Mode") |
2090 | } |
2091 | |
2092 | - ListItem.Standard { |
2093 | + SettingsItemTitle { |
2094 | text: i18n.tr("Other sounds:") |
2095 | } |
2096 | |
2097 | @@ -197,9 +209,10 @@ |
2098 | |
2099 | control: Switch { |
2100 | objectName: "keyboardSoundSwitch" |
2101 | - checked: keyboardSettings.keyPressFeedback |
2102 | - |
2103 | - onClicked: keyboardSettings.keyPressFeedback = checked |
2104 | + property bool serverChecked: keyboardSettings.keyPressFeedback |
2105 | + onServerCheckedChanged: checked = serverChecked |
2106 | + Component.onCompleted: checked = serverChecked |
2107 | + onTriggered: keyboardSettings.keyPressFeedback = checked |
2108 | } |
2109 | } |
2110 | |
2111 | |
2112 | === modified file 'plugins/sound/sound.cpp' |
2113 | --- plugins/sound/sound.cpp 2014-10-17 14:57:35 +0000 |
2114 | +++ plugins/sound/sound.cpp 2014-11-07 22:38:03 +0000 |
2115 | @@ -59,6 +59,8 @@ |
2116 | Q_EMIT incomingCallVibrateSilentModeChanged(); |
2117 | } else if (property == "IncomingMessageVibrateSilentMode") { |
2118 | Q_EMIT incomingMessageVibrateSilentModeChanged(); |
2119 | + } else if (property == "DialpadSoundsEnabled") { |
2120 | + Q_EMIT dialpadSoundsEnabledChanged(); |
2121 | } |
2122 | } |
2123 | |
2124 | @@ -72,6 +74,7 @@ |
2125 | Q_EMIT incomingMessageVibrateChanged(); |
2126 | Q_EMIT incomingCallVibrateSilentModeChanged(); |
2127 | Q_EMIT incomingMessageVibrateSilentModeChanged(); |
2128 | + Q_EMIT dialpadSoundsEnabledChanged(); |
2129 | } |
2130 | |
2131 | QString Sound::getIncomingCallSound() |
2132 | |
2133 | === modified file 'plugins/system-update/PageComponent.qml' |
2134 | --- plugins/system-update/PageComponent.qml 2014-10-20 20:53:02 +0000 |
2135 | +++ plugins/system-update/PageComponent.qml 2014-11-07 22:38:03 +0000 |
2136 | @@ -535,11 +535,11 @@ |
2137 | fontSize: "small" |
2138 | text: { |
2139 | if (!labelUpdateStatus.visible) |
2140 | - return convert_bytes_to_size(modelData.binaryFilesize); |
2141 | + return Utilities.formatSize(modelData.binaryFilesize); |
2142 | |
2143 | return i18n.tr("%1 of %2").arg( |
2144 | - convert_bytes_to_size(modelData.binaryFilesize * (progress.value * 0.01))).arg( |
2145 | - convert_bytes_to_size(modelData.binaryFilesize) |
2146 | + Utilities.formatSize(modelData.binaryFilesize * (progress.value * 0.01))).arg( |
2147 | + Utilities.formatSize(modelData.binaryFilesize) |
2148 | ); |
2149 | } |
2150 | } |
2151 | @@ -640,12 +640,12 @@ |
2152 | elide: Text.ElideRight |
2153 | fontSize: "small" |
2154 | } |
2155 | - |
2156 | + |
2157 | Label { |
2158 | id: labelSize |
2159 | objectName: "labelSize" |
2160 | anchors.right: parent.right |
2161 | - text: convert_bytes_to_size(modelData.binaryFilesize) |
2162 | + text: Utilities.formatSize(modelData.binaryFilesize) |
2163 | fontSize: "small" |
2164 | visible: !labelUpdateStatus.visible && !installing && !installed |
2165 | } |
2166 | @@ -773,27 +773,4 @@ |
2167 | onClicked: pageStack.push(Qt.resolvedUrl("Configuration.qml")) |
2168 | } |
2169 | } |
2170 | - |
2171 | - function convert_bytes_to_size(bytes) { |
2172 | - var SIZE_IN_GIB = 1024.0 * 1024.0 * 1024.0; |
2173 | - var SIZE_IN_MIB = 1024.0 * 1024.0; |
2174 | - var SIZE_IN_KIB = 1024.0; |
2175 | - |
2176 | - var result = ""; |
2177 | - var size = 0; |
2178 | - if (bytes < SIZE_IN_KIB) { |
2179 | - result = bytes + i18n.tr(" bytes"); |
2180 | - } else if (bytes < SIZE_IN_MIB) { |
2181 | - size = (bytes / SIZE_IN_KIB).toFixed(1); |
2182 | - result = size + i18n.tr(" KiB"); |
2183 | - } else if (bytes < SIZE_IN_GIB) { |
2184 | - size = (bytes / SIZE_IN_MIB).toFixed(1); |
2185 | - result = size + i18n.tr(" MiB"); |
2186 | - } else { |
2187 | - size = (bytes / SIZE_IN_GIB).toFixed(1); |
2188 | - result = size + i18n.tr(" GiB"); |
2189 | - } |
2190 | - |
2191 | - return result; |
2192 | - } |
2193 | } |
2194 | |
2195 | === modified file 'plugins/time-date/PageComponent.qml' |
2196 | --- plugins/time-date/PageComponent.qml 2014-01-29 13:34:37 +0000 |
2197 | +++ plugins/time-date/PageComponent.qml 2014-11-07 22:38:03 +0000 |
2198 | @@ -50,7 +50,7 @@ |
2199 | Column { |
2200 | anchors.fill: parent |
2201 | |
2202 | - ListItem.Standard { text: i18n.tr ("Time zone:") } |
2203 | + SettingsItemTitle { text: i18n.tr ("Time zone:") } |
2204 | |
2205 | ListItem.SingleValue { |
2206 | objectName: "timeZone" |
2207 | @@ -62,10 +62,13 @@ |
2208 | onClicked: pageStack.push(Qt.resolvedUrl("ChooseTimeZone.qml")) |
2209 | } |
2210 | |
2211 | + SettingsItemTitle { |
2212 | + text: i18n.tr ("Set the time and date:") |
2213 | + } |
2214 | + |
2215 | ListItem.ItemSelector { |
2216 | id: setTimeAutomatically |
2217 | objectName: "timeItemSelector" |
2218 | - text: i18n.tr ("Set the time and date:") |
2219 | model: [ i18n.tr("Automatically") , i18n.tr("Manually")] |
2220 | expanded: true |
2221 | onSelectedIndexChanged: { |
2222 | |
2223 | === modified file 'plugins/wifi/MenuItemFactory.qml' |
2224 | --- plugins/wifi/MenuItemFactory.qml 2014-09-10 15:39:07 +0000 |
2225 | +++ plugins/wifi/MenuItemFactory.qml 2014-11-07 22:38:03 +0000 |
2226 | @@ -19,6 +19,7 @@ |
2227 | |
2228 | import QtQuick 2.0 |
2229 | import QMenuModel 0.1 as QMenuModel |
2230 | +import Ubuntu.Settings.Menus 0.1 as Menus |
2231 | |
2232 | Item { |
2233 | id: menuFactory |
2234 | @@ -66,15 +67,18 @@ |
2235 | |
2236 | Component { |
2237 | id: switchMenu; |
2238 | - SwitchMenuItem { |
2239 | + Menus.SwitchMenu { |
2240 | property QtObject menu: null |
2241 | - |
2242 | - text: menu && menu.label ? menu.label : "" |
2243 | - icon: menu ? menu.icon : "" |
2244 | - checked: menu ? menu.isToggled : false |
2245 | - enabled: menu ? menu.sensitive : false |
2246 | - |
2247 | - onActivate: model.activate(modelIndex); |
2248 | + property bool serverChecked: menu && menu.isToggled || false |
2249 | + |
2250 | + text: menu && menu.label || "" |
2251 | + iconSource: menu && menu.icon || "" |
2252 | + checked: serverChecked |
2253 | + enabled: menu && menu.sensitive || false |
2254 | + |
2255 | + onTriggered: model.activate(modelIndex); |
2256 | + // Fixes broken check state binding. |
2257 | + onServerCheckedChanged: checked = serverChecked; |
2258 | } |
2259 | } |
2260 | |
2261 | @@ -100,11 +104,12 @@ |
2262 | model: menuFactory.model ? menuFactory.model : null |
2263 | name: menu ? menu.ext.xCanonicalWifiApStrengthAction : "" |
2264 | } |
2265 | + property bool serverChecked: menu && menu.isToggled || false |
2266 | |
2267 | text: menu && menu.label ? menu.label : "" |
2268 | secure: menu ? menu.ext.xCanonicalWifiApIsSecure : false |
2269 | adHoc: menu ? menu.ext.xCanonicalWifiApIsAdhoc : false |
2270 | - checked: menu ? menu.isToggled : false |
2271 | + checked: serverChecked |
2272 | signalStrength: strenthAction.valid ? strenthAction.state : 0 |
2273 | enabled: menu ? menu.sensitive : false |
2274 | |
2275 | @@ -114,6 +119,8 @@ |
2276 | 'x-canonical-wifi-ap-strength-action': 'string'}); |
2277 | } |
2278 | onActivate: model.activate(modelIndex); |
2279 | + // Fixes broken check state binding. |
2280 | + onServerCheckedChanged: checked = serverChecked; |
2281 | } |
2282 | } |
2283 | |
2284 | |
2285 | === modified file 'plugins/wifi/PageComponent.qml' |
2286 | --- plugins/wifi/PageComponent.qml 2014-09-26 12:52:31 +0000 |
2287 | +++ plugins/wifi/PageComponent.qml 2014-11-07 22:38:03 +0000 |
2288 | @@ -138,6 +138,8 @@ |
2289 | objectName: "connectToHiddenNetwork" |
2290 | text: i18n.tr("Connect to hidden network…") |
2291 | progression: true |
2292 | + visible : (actionGroup.actionObject.valid ? |
2293 | + actionGroup.actionObject.state : false) |
2294 | onClicked: { |
2295 | otherNetworLoader.source = "OtherNetwork.qml"; |
2296 | PopupUtils.open(otherNetworLoader.item); |
2297 | @@ -155,5 +157,4 @@ |
2298 | Flickable.DragAndOvershootBounds : |
2299 | Flickable.StopAtBounds |
2300 | } |
2301 | - |
2302 | } |
2303 | |
2304 | === modified file 'po/es.po' |
2305 | --- po/es.po 2014-10-21 07:26:04 +0000 |
2306 | +++ po/es.po 2014-11-07 22:38:03 +0000 |
2307 | @@ -8,14 +8,14 @@ |
2308 | "Project-Id-Version: ubuntu-system-settings\n" |
2309 | "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2310 | "POT-Creation-Date: 2014-10-16 20:04-0600\n" |
2311 | -"PO-Revision-Date: 2014-10-20 22:13+0000\n" |
2312 | +"PO-Revision-Date: 2014-10-29 14:53+0000\n" |
2313 | "Last-Translator: Víctor R. Ruiz <Unknown>\n" |
2314 | "Language-Team: Spanish <es@li.org>\n" |
2315 | "MIME-Version: 1.0\n" |
2316 | "Content-Type: text/plain; charset=UTF-8\n" |
2317 | "Content-Transfer-Encoding: 8bit\n" |
2318 | "Plural-Forms: nplurals=2; plural=n != 1;\n" |
2319 | -"X-Launchpad-Export-Date: 2014-10-21 07:26+0000\n" |
2320 | +"X-Launchpad-Export-Date: 2014-10-30 06:36+0000\n" |
2321 | "X-Generator: Launchpad (build 17203)\n" |
2322 | |
2323 | #: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112 |
2324 | @@ -2360,7 +2360,7 @@ |
2325 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
2326 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:58 |
2327 | msgid "badges" |
2328 | -msgstr "" |
2329 | +msgstr "insignias" |
2330 | |
2331 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
2332 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:60 |
2333 | @@ -2968,42 +2968,3 @@ |
2334 | #: ../push-helper/software_updates_helper.py:151 |
2335 | msgid "Tap to open the system updater." |
2336 | msgstr "Presione para abrir el actualizador del sistema." |
2337 | - |
2338 | -#~ msgid "Searching" |
2339 | -#~ msgstr "Buscando" |
2340 | - |
2341 | -#~ msgid "Refresh" |
2342 | -#~ msgstr "Actualizar" |
2343 | - |
2344 | -#~ msgid "Remove" |
2345 | -#~ msgstr "Quitar" |
2346 | - |
2347 | -#~ msgid "settings" |
2348 | -#~ msgstr "opciones" |
2349 | - |
2350 | -#~ msgid "i18n" |
2351 | -#~ msgstr "i18n" |
2352 | - |
2353 | -#~ msgid "lang" |
2354 | -#~ msgstr "lengua" |
2355 | - |
2356 | -#~ msgid "Available networks" |
2357 | -#~ msgstr "Redes disponibles" |
2358 | - |
2359 | -#~ msgid "Password visible" |
2360 | -#~ msgstr "Contraseña visible" |
2361 | - |
2362 | -#~ msgid "Other network" |
2363 | -#~ msgstr "Otra red" |
2364 | - |
2365 | -#~ msgid "Connect to Wi-Fi" |
2366 | -#~ msgstr "Conectar a wifi" |
2367 | - |
2368 | -#~ msgid "Set lock security" |
2369 | -#~ msgstr "Establecer la seguridad de bloqueo" |
2370 | - |
2371 | -#~ msgid "Those passphrases don't match." |
2372 | -#~ msgstr "Las contraseñas no coinciden." |
2373 | - |
2374 | -#~ msgid "Passphrase must be at least four characters long." |
2375 | -#~ msgstr "La contraseña debe tener al menos cuatro caracteres." |
2376 | |
2377 | === modified file 'po/hu.po' |
2378 | --- po/hu.po 2014-10-18 07:13:30 +0000 |
2379 | +++ po/hu.po 2014-11-07 22:38:03 +0000 |
2380 | @@ -8,15 +8,15 @@ |
2381 | "Project-Id-Version: ubuntu-system-settings\n" |
2382 | "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2383 | "POT-Creation-Date: 2014-10-16 20:04-0600\n" |
2384 | -"PO-Revision-Date: 2014-10-16 10:21+0000\n" |
2385 | +"PO-Revision-Date: 2014-11-01 09:41+0000\n" |
2386 | "Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n" |
2387 | "Language-Team: Hungarian <hu@li.org>\n" |
2388 | "MIME-Version: 1.0\n" |
2389 | "Content-Type: text/plain; charset=UTF-8\n" |
2390 | "Content-Transfer-Encoding: 8bit\n" |
2391 | "Plural-Forms: nplurals=2; plural=n != 1;\n" |
2392 | -"X-Launchpad-Export-Date: 2014-10-18 07:10+0000\n" |
2393 | -"X-Generator: Launchpad (build 17196)\n" |
2394 | +"X-Launchpad-Export-Date: 2014-11-02 06:14+0000\n" |
2395 | +"X-Generator: Launchpad (build 17211)\n" |
2396 | |
2397 | #: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112 |
2398 | msgid "System Settings" |
2399 | @@ -790,7 +790,7 @@ |
2400 | |
2401 | #: ../plugins/cellular//PageChooseCarrier.qml:196 |
2402 | msgid "Searching for carriers…" |
2403 | -msgstr "" |
2404 | +msgstr "Szolgáltatók keresése…" |
2405 | |
2406 | #: ../plugins/cellular//PageChooseCarrier.qml:229 |
2407 | #: ../plugins/cellular//PageChooseApn.qml:31 |
2408 | @@ -800,36 +800,36 @@ |
2409 | |
2410 | #: ../plugins/cellular//PageChooseApn.qml:372 |
2411 | msgid "Internet APN:" |
2412 | -msgstr "" |
2413 | +msgstr "Internet APN:" |
2414 | |
2415 | #: ../plugins/cellular//PageChooseApn.qml:449 |
2416 | msgid "Custom Internet APN…" |
2417 | -msgstr "" |
2418 | +msgstr "Egyéni internet APN…" |
2419 | |
2420 | #: ../plugins/cellular//PageChooseApn.qml:460 |
2421 | msgid "MMS APN:" |
2422 | -msgstr "" |
2423 | +msgstr "MMS APN:" |
2424 | |
2425 | #: ../plugins/cellular//PageChooseApn.qml:485 |
2426 | #: ../plugins/cellular//CustomApnEditor.qml:143 |
2427 | msgid "Same APN as for Internet" |
2428 | -msgstr "" |
2429 | +msgstr "Az internet APN-nel megegyező" |
2430 | |
2431 | #: ../plugins/cellular//PageChooseApn.qml:565 |
2432 | msgid "Custom MMS APN…" |
2433 | -msgstr "" |
2434 | +msgstr "Egyéni MMS APN…" |
2435 | |
2436 | #: ../plugins/cellular//PageChooseApn.qml:591 |
2437 | msgid "Reset APN Settings" |
2438 | -msgstr "" |
2439 | +msgstr "APN beállítások visszaállítása" |
2440 | |
2441 | #: ../plugins/cellular//PageChooseApn.qml:592 |
2442 | msgid "Are you sure that you want to Reset APN Settings?" |
2443 | -msgstr "" |
2444 | +msgstr "Biztos benne, hogy visszaállítja az APN beállításait?" |
2445 | |
2446 | #: ../plugins/cellular//PageChooseApn.qml:598 |
2447 | msgid "Reset" |
2448 | -msgstr "" |
2449 | +msgstr "Visszaállítás" |
2450 | |
2451 | #: ../plugins/cellular//PageChooseCarriers.qml:27 |
2452 | #: ../plugins/cellular//Components//MultiSim.qml:68 |
2453 | @@ -838,43 +838,43 @@ |
2454 | |
2455 | #: ../plugins/cellular//CustomApnEditor.qml:42 |
2456 | msgid "Internet" |
2457 | -msgstr "" |
2458 | +msgstr "Internet" |
2459 | |
2460 | #: ../plugins/cellular//CustomApnEditor.qml:42 |
2461 | msgid "MMS" |
2462 | -msgstr "" |
2463 | +msgstr "MMS" |
2464 | |
2465 | #. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS") |
2466 | #: ../plugins/cellular//CustomApnEditor.qml:67 |
2467 | #, qt-format |
2468 | msgid "Custom %1 APN" |
2469 | -msgstr "" |
2470 | +msgstr "Egyéni %1 APN" |
2471 | |
2472 | #. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS") |
2473 | #: ../plugins/cellular//CustomApnEditor.qml:171 |
2474 | #, qt-format |
2475 | msgid "%1 APN" |
2476 | -msgstr "" |
2477 | +msgstr "%1 APN" |
2478 | |
2479 | #: ../plugins/cellular//CustomApnEditor.qml:181 |
2480 | msgid "MMSC" |
2481 | -msgstr "" |
2482 | +msgstr "MMSC" |
2483 | |
2484 | #: ../plugins/cellular//CustomApnEditor.qml:191 |
2485 | msgid "Proxy" |
2486 | -msgstr "" |
2487 | +msgstr "Proxy" |
2488 | |
2489 | #: ../plugins/cellular//CustomApnEditor.qml:213 |
2490 | msgid "Username" |
2491 | -msgstr "" |
2492 | +msgstr "Felhasználónév" |
2493 | |
2494 | #: ../plugins/cellular//CustomApnEditor.qml:264 |
2495 | msgid "Save" |
2496 | -msgstr "" |
2497 | +msgstr "Mentés" |
2498 | |
2499 | #: ../plugins/cellular//CustomApnEditor.qml:264 |
2500 | msgid "Activate" |
2501 | -msgstr "" |
2502 | +msgstr "Aktiválás" |
2503 | |
2504 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
2505 | #: ../plugins/cellular//PageComponent.qml:32 |
2506 | @@ -1773,7 +1773,7 @@ |
2507 | |
2508 | #: ../plugins/system-update//PageComponent.qml:152 |
2509 | msgid "Installation failed" |
2510 | -msgstr "" |
2511 | +msgstr "A telepítés meghiúsult" |
2512 | |
2513 | #: ../plugins/system-update//PageComponent.qml:156 |
2514 | #: ../plugins/cellular//Components//SimEditor.qml:200 |
2515 | @@ -1787,7 +1787,7 @@ |
2516 | #: ../plugins/system-update//PageComponent.qml:235 |
2517 | #: ../plugins/system-update//PageComponent.qml:241 |
2518 | msgid "Sorry, the system update failed." |
2519 | -msgstr "" |
2520 | +msgstr "Sajnáljuk, a rendszer frissítés meghiúsult." |
2521 | |
2522 | #: ../plugins/system-update//PageComponent.qml:254 |
2523 | msgid "Restarting…" |
2524 | @@ -1799,7 +1799,7 @@ |
2525 | |
2526 | #: ../plugins/system-update//PageComponent.qml:298 |
2527 | msgid "Connect to the Internet to check for updates" |
2528 | -msgstr "" |
2529 | +msgstr "Csatlakozás az internethez a frissítések ellenőrzéséhez" |
2530 | |
2531 | #: ../plugins/system-update//PageComponent.qml:313 |
2532 | #: ../plugins/system-update//PageComponent.qml:471 |
2533 | @@ -2116,7 +2116,7 @@ |
2534 | #: ../wizard/qml/Pages//passwd-confirm.qml:51 |
2535 | #: ../wizard/qml/Pages//passwd-confirm.qml:52 |
2536 | msgid "Please try again." |
2537 | -msgstr "Kérem próbálja újra." |
2538 | +msgstr "Próbálja újra." |
2539 | |
2540 | #: ../wizard/qml/Pages//passwd-confirm.qml:52 |
2541 | msgid "Sorry, incorrect passcode." |
2542 | @@ -2156,11 +2156,15 @@ |
2543 | "Ubuntu includes location services provided by HERE, enabling apps to " |
2544 | "pinpoint your location." |
2545 | msgstr "" |
2546 | +"Az Ubuntu tartalmazza a HERE helymeghatározó szolgáltatást, amely " |
2547 | +"megállapítja az Ön pontos helyét az alkalmazások számára." |
2548 | |
2549 | #: ../wizard/qml/Pages//50-location.qml:64 |
2550 | msgid "" |
2551 | "Allow apps to use your mobile and Wi-Fi networks to determine your location." |
2552 | msgstr "" |
2553 | +"A mobilinternet és Wi-Fi használatának engedélyezése az alkalmazások számára " |
2554 | +"az Ön pontos helyzetének megállapításához." |
2555 | |
2556 | #. TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it |
2557 | #: ../wizard/qml/Pages//50-location.qml:74 |
2558 | @@ -2168,16 +2172,18 @@ |
2559 | "Accept the HERE <a href='terms.qml'>terms and conditions</a> to enable these " |
2560 | "services." |
2561 | msgstr "" |
2562 | +"A HERE <a href='terms.qml'>felhasználási feltételeinek</a> elfogadása a " |
2563 | +"szolgáltatás engedélyezéséhez." |
2564 | |
2565 | #: ../wizard/qml/Pages//50-location.qml:85 |
2566 | msgid "" |
2567 | "This service can be disabled at any time from the <b>System Settings</b> " |
2568 | "menu." |
2569 | -msgstr "" |
2570 | +msgstr "Ez később bármikor kikapcsolható a <b>Rendszerbeállításokban</b>." |
2571 | |
2572 | #: ../wizard/qml/Pages//60-reporting.qml:22 |
2573 | msgid "Improving your experience" |
2574 | -msgstr "" |
2575 | +msgstr "Javítson az élményen" |
2576 | |
2577 | #: ../wizard/qml/Pages//60-reporting.qml:34 |
2578 | msgid "" |
2579 | @@ -2192,6 +2198,8 @@ |
2580 | "This can be disabled in <b>System Settings</b> under <b>Security & " |
2581 | "Privacy</b>" |
2582 | msgstr "" |
2583 | +"Ezt kikapcsolhatja a <b>Rendszerbeállítások</b> alatt található <b>Biztonság " |
2584 | +"és adatvédelem</b> alatt" |
2585 | |
2586 | #: ../wizard/qml/Components//Page.qml:89 |
2587 | msgid "Back" |
2588 | @@ -2964,61 +2972,3 @@ |
2589 | #: ../push-helper/software_updates_helper.py:151 |
2590 | msgid "Tap to open the system updater." |
2591 | msgstr "Koppintson a rendszerfrissítő megnyitásához." |
2592 | - |
2593 | -#~ msgid "Refresh" |
2594 | -#~ msgstr "Frissítés" |
2595 | - |
2596 | -#~ msgid "Searching" |
2597 | -#~ msgstr "Keresés" |
2598 | - |
2599 | -#~ msgid "Remove" |
2600 | -#~ msgstr "Eltávolítás" |
2601 | - |
2602 | -#~ msgid "settings" |
2603 | -#~ msgstr "beállítások" |
2604 | - |
2605 | -#~ msgid "i18n" |
2606 | -#~ msgstr "i18n" |
2607 | - |
2608 | -#~ msgid "lang" |
2609 | -#~ msgstr "nyelv" |
2610 | - |
2611 | -#~ msgid "Password visible" |
2612 | -#~ msgstr "A jelszó látható" |
2613 | - |
2614 | -#~ msgid "Available networks" |
2615 | -#~ msgstr "Elérhető hálózatok" |
2616 | - |
2617 | -#~ msgid "Connect to Wi-Fi" |
2618 | -#~ msgstr "Csatlakozás Wi-Fi hálózathoz" |
2619 | - |
2620 | -#~ msgid "Those passphrases don't match." |
2621 | -#~ msgstr "A jelmondatok nem egyeznek." |
2622 | - |
2623 | -#~ msgid "Passphrase must be at least four characters long." |
2624 | -#~ msgstr "A jelmondatnak legalább négy karakterből kell állnia." |
2625 | - |
2626 | -#~ msgid "Set lock security" |
2627 | -#~ msgstr "Zárolás beállítása" |
2628 | - |
2629 | -#~ msgid "Other network" |
2630 | -#~ msgstr "Egyéb hálózat" |
2631 | - |
2632 | -#~ msgid "Bug reporting" |
2633 | -#~ msgstr "Hibajelentés" |
2634 | - |
2635 | -#~ msgid "" |
2636 | -#~ "I have read and agreed to the HERE <a href='terms.qml'>Terms and " |
2637 | -#~ "Conditions</a>" |
2638 | -#~ msgstr "" |
2639 | -#~ "Elolvastam és elfogadom a HERE <a href='terms.qml'>felhasználási " |
2640 | -#~ "feltételeit</a>" |
2641 | - |
2642 | -#~ msgid "Use your mobile network and Wi-Fi to determine where you are" |
2643 | -#~ msgstr "Mobilhálózat és Wi-Fi használata az Ön helyzetének megállapításához" |
2644 | - |
2645 | -#~ msgid "This can be disabled here:" |
2646 | -#~ msgstr "Ez kikapcsolható itt:" |
2647 | - |
2648 | -#~ msgid "System Settings > Security & Privacy" |
2649 | -#~ msgstr "Rendszerbeállítások > Biztonság és adatvédelem" |
2650 | |
2651 | === modified file 'po/pt.po' |
2652 | --- po/pt.po 2014-10-19 07:05:24 +0000 |
2653 | +++ po/pt.po 2014-11-07 22:38:03 +0000 |
2654 | @@ -8,15 +8,15 @@ |
2655 | "Project-Id-Version: ubuntu-system-settings\n" |
2656 | "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2657 | "POT-Creation-Date: 2014-10-16 20:04-0600\n" |
2658 | -"PO-Revision-Date: 2014-10-18 13:31+0000\n" |
2659 | +"PO-Revision-Date: 2014-11-01 09:36+0000\n" |
2660 | "Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n" |
2661 | "Language-Team: Portuguese <pt@li.org>\n" |
2662 | "MIME-Version: 1.0\n" |
2663 | "Content-Type: text/plain; charset=UTF-8\n" |
2664 | "Content-Transfer-Encoding: 8bit\n" |
2665 | "Plural-Forms: nplurals=2; plural=n != 1;\n" |
2666 | -"X-Launchpad-Export-Date: 2014-10-19 07:05+0000\n" |
2667 | -"X-Generator: Launchpad (build 17196)\n" |
2668 | +"X-Launchpad-Export-Date: 2014-11-02 06:14+0000\n" |
2669 | +"X-Generator: Launchpad (build 17211)\n" |
2670 | |
2671 | #: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112 |
2672 | msgid "System Settings" |
2673 | @@ -414,7 +414,7 @@ |
2674 | |
2675 | #: ../plugins/reset//PageComponent.qml:87 |
2676 | msgid "Reset all system settings…" |
2677 | -msgstr "Repor todas as definições de sistema..." |
2678 | +msgstr "Repor todas as definições do sistema..." |
2679 | |
2680 | #: ../plugins/reset//PageComponent.qml:101 |
2681 | msgid "Erase & Reset Everything…" |
2682 | @@ -430,7 +430,7 @@ |
2683 | |
2684 | #: ../plugins/reset//ResetAllSettings.qml:31 |
2685 | msgid "Reset all system settings" |
2686 | -msgstr "Repor todas as definições de sistema" |
2687 | +msgstr "Repor todas as definições do sistema" |
2688 | |
2689 | #: ../plugins/reset//ResetLauncherHome.qml:40 |
2690 | msgid "The Launcher will be returned to its original contents." |
2691 | @@ -1753,12 +1753,12 @@ |
2692 | #: ../plugins/system-update//PageComponent.qml:118 |
2693 | msgid "The phone needs to restart to install the system update." |
2694 | msgstr "" |
2695 | -"O telefone tem de reiniciar para instalar as atualizações de sistema." |
2696 | +"O telemóvel tem de reiniciar para instalar as atualizações do sistema." |
2697 | |
2698 | #: ../plugins/system-update//PageComponent.qml:118 |
2699 | msgid "Connect the phone to power before installing the system update." |
2700 | msgstr "" |
2701 | -"Ligue o telemóvel à energia antes de instalar as atualizações de sistema." |
2702 | +"Ligue o telemóvel à energia antes de instalar as atualizações do sistema." |
2703 | |
2704 | #: ../plugins/system-update//PageComponent.qml:121 |
2705 | msgid "Install & Restart" |
2706 | @@ -1788,7 +1788,7 @@ |
2707 | #: ../plugins/system-update//PageComponent.qml:235 |
2708 | #: ../plugins/system-update//PageComponent.qml:241 |
2709 | msgid "Sorry, the system update failed." |
2710 | -msgstr "Desculpe, a atualização de sistema falhou." |
2711 | +msgstr "Desculpe, a atualização do sistema falhou." |
2712 | |
2713 | #: ../plugins/system-update//PageComponent.qml:254 |
2714 | msgid "Restarting…" |
2715 | @@ -2966,47 +2966,8 @@ |
2716 | |
2717 | #: ../push-helper/software_updates_helper.py:150 |
2718 | msgid "There's an updated system image." |
2719 | -msgstr "Há uma nova imagem de sistema." |
2720 | +msgstr "Há uma nova imagem do sistema." |
2721 | |
2722 | #: ../push-helper/software_updates_helper.py:151 |
2723 | msgid "Tap to open the system updater." |
2724 | -msgstr "Carregue para abrir o atualizador de sistema." |
2725 | - |
2726 | -#~ msgid "Other network" |
2727 | -#~ msgstr "Outra rede" |
2728 | - |
2729 | -#~ msgid "Remove" |
2730 | -#~ msgstr "Remover" |
2731 | - |
2732 | -#~ msgid "Searching" |
2733 | -#~ msgstr "A procurar" |
2734 | - |
2735 | -#~ msgid "Available networks" |
2736 | -#~ msgstr "Redes disponíveis" |
2737 | - |
2738 | -#~ msgid "Refresh" |
2739 | -#~ msgstr "Atualizar" |
2740 | - |
2741 | -#~ msgid "settings" |
2742 | -#~ msgstr "definições" |
2743 | - |
2744 | -#~ msgid "i18n" |
2745 | -#~ msgstr "i18n" |
2746 | - |
2747 | -#~ msgid "lang" |
2748 | -#~ msgstr "idioma" |
2749 | - |
2750 | -#~ msgid "Password visible" |
2751 | -#~ msgstr "Palavra-passe visível" |
2752 | - |
2753 | -#~ msgid "Connect to Wi-Fi" |
2754 | -#~ msgstr "Ligar a Wi-Fi" |
2755 | - |
2756 | -#~ msgid "Set lock security" |
2757 | -#~ msgstr "Definir a segurança de bloqueio" |
2758 | - |
2759 | -#~ msgid "Those passphrases don't match." |
2760 | -#~ msgstr "As frase-senha não correspondem." |
2761 | - |
2762 | -#~ msgid "Passphrase must be at least four characters long." |
2763 | -#~ msgstr "A frase-senha deve ter pelo menos quatro caracteres." |
2764 | +msgstr "Carregue para abrir o atualizador do sistema." |
2765 | |
2766 | === modified file 'po/ru.po' |
2767 | --- po/ru.po 2014-10-24 06:39:04 +0000 |
2768 | +++ po/ru.po 2014-11-07 22:38:03 +0000 |
2769 | @@ -8,16 +8,21 @@ |
2770 | "Project-Id-Version: ubuntu-system-settings\n" |
2771 | "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" |
2772 | "POT-Creation-Date: 2014-10-16 20:04-0600\n" |
2773 | -"PO-Revision-Date: 2014-10-22 05:38+0000\n" |
2774 | -"Last-Translator: CSRedRat <Unknown>\n" |
2775 | +"PO-Revision-Date: 2014-10-30 09:09+0000\n" |
2776 | +"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n" |
2777 | "Language-Team: Russian <ru@li.org>\n" |
2778 | "MIME-Version: 1.0\n" |
2779 | "Content-Type: text/plain; charset=UTF-8\n" |
2780 | "Content-Transfer-Encoding: 8bit\n" |
2781 | "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " |
2782 | "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" |
2783 | +<<<<<<< TREE |
2784 | "X-Launchpad-Export-Date: 2014-10-24 06:39+0000\n" |
2785 | "X-Generator: Launchpad (build 17203)\n" |
2786 | +======= |
2787 | +"X-Launchpad-Export-Date: 2014-10-31 06:43+0000\n" |
2788 | +"X-Generator: Launchpad (build 17211)\n" |
2789 | +>>>>>>> MERGE-SOURCE |
2790 | |
2791 | #: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112 |
2792 | msgid "System Settings" |
2793 | @@ -137,7 +142,7 @@ |
2794 | |
2795 | #: ../plugins/wifi//Common.qml:50 |
2796 | msgid "Your authentication details were incorrect" |
2797 | -msgstr "" |
2798 | +msgstr "Некорректные данные аутентификации" |
2799 | |
2800 | #: ../plugins/wifi//Common.qml:52 |
2801 | msgid "802.1X supplicant disconnected" |
2802 | @@ -798,7 +803,7 @@ |
2803 | |
2804 | #: ../plugins/cellular//PageChooseCarrier.qml:196 |
2805 | msgid "Searching for carriers…" |
2806 | -msgstr "" |
2807 | +msgstr "Поиск оператора..." |
2808 | |
2809 | #: ../plugins/cellular//PageChooseCarrier.qml:229 |
2810 | #: ../plugins/cellular//PageChooseApn.qml:31 |
2811 | @@ -808,7 +813,7 @@ |
2812 | |
2813 | #: ../plugins/cellular//PageChooseApn.qml:372 |
2814 | msgid "Internet APN:" |
2815 | -msgstr "" |
2816 | +msgstr "Интернет APN:" |
2817 | |
2818 | #: ../plugins/cellular//PageChooseApn.qml:449 |
2819 | msgid "Custom Internet APN…" |
2820 | @@ -816,7 +821,7 @@ |
2821 | |
2822 | #: ../plugins/cellular//PageChooseApn.qml:460 |
2823 | msgid "MMS APN:" |
2824 | -msgstr "" |
2825 | +msgstr "MMS APN:" |
2826 | |
2827 | #: ../plugins/cellular//PageChooseApn.qml:485 |
2828 | #: ../plugins/cellular//CustomApnEditor.qml:143 |
2829 | @@ -829,15 +834,15 @@ |
2830 | |
2831 | #: ../plugins/cellular//PageChooseApn.qml:591 |
2832 | msgid "Reset APN Settings" |
2833 | -msgstr "" |
2834 | +msgstr "Сброс настроек APN" |
2835 | |
2836 | #: ../plugins/cellular//PageChooseApn.qml:592 |
2837 | msgid "Are you sure that you want to Reset APN Settings?" |
2838 | -msgstr "" |
2839 | +msgstr "Сбросить настройки APN?" |
2840 | |
2841 | #: ../plugins/cellular//PageChooseApn.qml:598 |
2842 | msgid "Reset" |
2843 | -msgstr "" |
2844 | +msgstr "Сбросить" |
2845 | |
2846 | #: ../plugins/cellular//PageChooseCarriers.qml:27 |
2847 | #: ../plugins/cellular//Components//MultiSim.qml:68 |
2848 | @@ -846,11 +851,11 @@ |
2849 | |
2850 | #: ../plugins/cellular//CustomApnEditor.qml:42 |
2851 | msgid "Internet" |
2852 | -msgstr "" |
2853 | +msgstr "Интернет" |
2854 | |
2855 | #: ../plugins/cellular//CustomApnEditor.qml:42 |
2856 | msgid "MMS" |
2857 | -msgstr "" |
2858 | +msgstr "MMS" |
2859 | |
2860 | #. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS") |
2861 | #: ../plugins/cellular//CustomApnEditor.qml:67 |
2862 | @@ -862,7 +867,7 @@ |
2863 | #: ../plugins/cellular//CustomApnEditor.qml:171 |
2864 | #, qt-format |
2865 | msgid "%1 APN" |
2866 | -msgstr "" |
2867 | +msgstr "%1 APN" |
2868 | |
2869 | #: ../plugins/cellular//CustomApnEditor.qml:181 |
2870 | msgid "MMSC" |
2871 | @@ -870,19 +875,19 @@ |
2872 | |
2873 | #: ../plugins/cellular//CustomApnEditor.qml:191 |
2874 | msgid "Proxy" |
2875 | -msgstr "" |
2876 | +msgstr "Прокси" |
2877 | |
2878 | #: ../plugins/cellular//CustomApnEditor.qml:213 |
2879 | msgid "Username" |
2880 | -msgstr "" |
2881 | +msgstr "Имя пользователя" |
2882 | |
2883 | #: ../plugins/cellular//CustomApnEditor.qml:264 |
2884 | msgid "Save" |
2885 | -msgstr "" |
2886 | +msgstr "Сохранить" |
2887 | |
2888 | #: ../plugins/cellular//CustomApnEditor.qml:264 |
2889 | msgid "Activate" |
2890 | -msgstr "" |
2891 | +msgstr "Включить" |
2892 | |
2893 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
2894 | #: ../plugins/cellular//PageComponent.qml:32 |
2895 | @@ -952,7 +957,7 @@ |
2896 | #: ../plugins/security-privacy//LockSecurity.qml:96 |
2897 | #: ../plugins/security-privacy//LockSecurity.qml:384 |
2898 | msgid "Change passcode…" |
2899 | -msgstr "" |
2900 | +msgstr "Изменение секретного кода..." |
2901 | |
2902 | #: ../plugins/security-privacy//LockSecurity.qml:98 |
2903 | #: ../plugins/security-privacy//LockSecurity.qml:385 |
2904 | @@ -965,7 +970,7 @@ |
2905 | |
2906 | #: ../plugins/security-privacy//LockSecurity.qml:107 |
2907 | msgid "Switch to passcode" |
2908 | -msgstr "" |
2909 | +msgstr "Перейти на код" |
2910 | |
2911 | #: ../plugins/security-privacy//LockSecurity.qml:109 |
2912 | msgid "Switch to passphrase" |
2913 | @@ -973,7 +978,7 @@ |
2914 | |
2915 | #: ../plugins/security-privacy//LockSecurity.qml:118 |
2916 | msgid "Existing passcode" |
2917 | -msgstr "" |
2918 | +msgstr "Существующий код" |
2919 | |
2920 | #: ../plugins/security-privacy//LockSecurity.qml:120 |
2921 | msgid "Existing passphrase" |
2922 | @@ -981,7 +986,7 @@ |
2923 | |
2924 | #: ../plugins/security-privacy//LockSecurity.qml:174 |
2925 | msgid "Choose passcode" |
2926 | -msgstr "" |
2927 | +msgstr "Выбрать код" |
2928 | |
2929 | #: ../plugins/security-privacy//LockSecurity.qml:176 |
2930 | msgid "Choose passphrase" |
2931 | @@ -990,7 +995,7 @@ |
2932 | #: ../plugins/security-privacy//LockSecurity.qml:220 |
2933 | #: ../wizard/qml/Pages//passwd-confirm.qml:48 |
2934 | msgid "Confirm passcode" |
2935 | -msgstr "" |
2936 | +msgstr "Подтвердить код" |
2937 | |
2938 | #: ../plugins/security-privacy//LockSecurity.qml:222 |
2939 | #: ../wizard/qml/Pages//passwd-confirm.qml:47 |
2940 | @@ -999,7 +1004,7 @@ |
2941 | |
2942 | #: ../plugins/security-privacy//LockSecurity.qml:265 |
2943 | msgid "Those passcodes don't match. Try again." |
2944 | -msgstr "" |
2945 | +msgstr "Коды не совпадают. Попробуйте снова." |
2946 | |
2947 | #: ../plugins/security-privacy//LockSecurity.qml:268 |
2948 | msgid "Those passphrases don't match. Try again." |
2949 | @@ -1019,7 +1024,7 @@ |
2950 | |
2951 | #: ../plugins/security-privacy//LockSecurity.qml:349 |
2952 | msgid "4-digit passcode" |
2953 | -msgstr "" |
2954 | +msgstr "4-значный код" |
2955 | |
2956 | #: ../plugins/security-privacy//LockSecurity.qml:350 |
2957 | #: ../plugins/security-privacy//PhoneLocking.qml:47 |
2958 | @@ -1033,7 +1038,7 @@ |
2959 | |
2960 | #: ../plugins/security-privacy//LockSecurity.qml:352 |
2961 | msgid "4-digit passcode…" |
2962 | -msgstr "" |
2963 | +msgstr "4-значный код..." |
2964 | |
2965 | #: ../plugins/security-privacy//LockSecurity.qml:353 |
2966 | msgid "Passphrase…" |
2967 | @@ -1053,8 +1058,9 @@ |
2968 | #, qt-format |
2969 | msgid "Incorrect PIN. %1 attempt remaining." |
2970 | msgid_plural "Incorrect PIN. %1 attempts remaining." |
2971 | -msgstr[0] "" |
2972 | -msgstr[1] "" |
2973 | +msgstr[0] "Неверный ПИН. Осталась %1 попытка." |
2974 | +msgstr[1] "Неверный ПИН. Осталось %1 попытки." |
2975 | +msgstr[2] "Неверный ПИН. Осталось %1 попыток." |
2976 | |
2977 | #: ../plugins/security-privacy//SimPin.qml:81 |
2978 | msgid "Current PIN:" |
2979 | @@ -1064,8 +1070,9 @@ |
2980 | #, qt-format |
2981 | msgid "%1 attempt allowed." |
2982 | msgid_plural "%1 attempts allowed." |
2983 | -msgstr[0] "" |
2984 | -msgstr[1] "" |
2985 | +msgstr[0] "Допускается %1 попытка." |
2986 | +msgstr[1] "Допускается %1 попытки." |
2987 | +msgstr[2] "Допускается %1 попыток." |
2988 | |
2989 | #: ../plugins/security-privacy//SimPin.qml:107 |
2990 | msgid "Choose new PIN:" |
2991 | @@ -1135,7 +1142,7 @@ |
2992 | #: ../plugins/security-privacy//PhoneLocking.qml:46 |
2993 | #: ../wizard/qml/Pages//30-passwd-type.qml:95 |
2994 | msgid "Passcode" |
2995 | -msgstr "" |
2996 | +msgstr "Секретный код" |
2997 | |
2998 | #. TRANSLATORS: %1 is the number of minutes |
2999 | #: ../plugins/security-privacy//PhoneLocking.qml:75 |
3000 | @@ -1153,11 +1160,11 @@ |
3001 | |
3002 | #: ../plugins/security-privacy//PhoneLocking.qml:106 |
3003 | msgid "When locked, allow:" |
3004 | -msgstr "" |
3005 | +msgstr "Разрешить на заблокированном:" |
3006 | |
3007 | #: ../plugins/security-privacy//PhoneLocking.qml:110 |
3008 | msgid "Launcher" |
3009 | -msgstr "" |
3010 | +msgstr "Панель запуска" |
3011 | |
3012 | #: ../plugins/security-privacy//PhoneLocking.qml:120 |
3013 | msgid "Notifications and quick settings" |
3014 | @@ -1779,7 +1786,7 @@ |
3015 | |
3016 | #: ../plugins/system-update//PageComponent.qml:152 |
3017 | msgid "Installation failed" |
3018 | -msgstr "" |
3019 | +msgstr "Сбой установки" |
3020 | |
3021 | #: ../plugins/system-update//PageComponent.qml:156 |
3022 | #: ../plugins/cellular//Components//SimEditor.qml:200 |
3023 | @@ -1793,7 +1800,7 @@ |
3024 | #: ../plugins/system-update//PageComponent.qml:235 |
3025 | #: ../plugins/system-update//PageComponent.qml:241 |
3026 | msgid "Sorry, the system update failed." |
3027 | -msgstr "" |
3028 | +msgstr "К сожалению, не удалось обновить систему." |
3029 | |
3030 | #: ../plugins/system-update//PageComponent.qml:254 |
3031 | msgid "Restarting…" |
3032 | @@ -1805,7 +1812,7 @@ |
3033 | |
3034 | #: ../plugins/system-update//PageComponent.qml:298 |
3035 | msgid "Connect to the Internet to check for updates" |
3036 | -msgstr "" |
3037 | +msgstr "Подключитесь к интернету, чтобы проверить наличие обновлений" |
3038 | |
3039 | #: ../plugins/system-update//PageComponent.qml:313 |
3040 | #: ../plugins/system-update//PageComponent.qml:471 |
3041 | @@ -2030,7 +2037,7 @@ |
3042 | |
3043 | #: ../plugins/security-privacy//diagnostics//PageComponent.qml:90 |
3044 | msgid "Includes info about what an app was doing when it failed." |
3045 | -msgstr "" |
3046 | +msgstr "Включает информацию о приложении на момент возникновения ошибки." |
3047 | |
3048 | #: ../src/qml/MainWindow.qml:133 |
3049 | msgid "Search" |
3050 | @@ -2046,23 +2053,23 @@ |
3051 | |
3052 | #: ../wizard/qml/Pages//30-passwd-type.qml:72 |
3053 | msgid "Please select how you’d like to unlock your phone." |
3054 | -msgstr "" |
3055 | +msgstr "Выберите способ разблокировки телефона." |
3056 | |
3057 | #: ../wizard/qml/Pages//30-passwd-type.qml:92 |
3058 | msgid "Swipe" |
3059 | -msgstr "" |
3060 | +msgstr "Смахивание" |
3061 | |
3062 | #: ../wizard/qml/Pages//30-passwd-type.qml:93 |
3063 | msgid "No security" |
3064 | -msgstr "" |
3065 | +msgstr "Без пароля" |
3066 | |
3067 | #: ../wizard/qml/Pages//30-passwd-type.qml:96 |
3068 | msgid "4 numbers" |
3069 | -msgstr "" |
3070 | +msgstr "4 цифры" |
3071 | |
3072 | #: ../wizard/qml/Pages//30-passwd-type.qml:99 |
3073 | msgid "Numbers and letters" |
3074 | -msgstr "" |
3075 | +msgstr "Цифры и буквы" |
3076 | |
3077 | #: ../wizard/qml/Pages//30-passwd-type.qml:112 |
3078 | #: ../wizard/qml/Pages//40-wifi.qml:196 ../wizard/qml/Pages//10-welcome.qml:85 |
3079 | @@ -2095,15 +2102,15 @@ |
3080 | |
3081 | #: ../wizard/qml/Pages//31-passwd-set.qml:48 |
3082 | msgid "Enter passphrase" |
3083 | -msgstr "" |
3084 | +msgstr "Введите кодовую фразу" |
3085 | |
3086 | #: ../wizard/qml/Pages//31-passwd-set.qml:49 |
3087 | msgid "Choose your passcode" |
3088 | -msgstr "" |
3089 | +msgstr "Выберите секретный код" |
3090 | |
3091 | #: ../wizard/qml/Pages//31-passwd-set.qml:56 |
3092 | msgid "Passphrase must be 4 characters long" |
3093 | -msgstr "" |
3094 | +msgstr "Кодовая фраза должна состоять из 4 символов" |
3095 | |
3096 | #: ../wizard/qml/Pages//20-sim.qml:23 |
3097 | msgid "Add a SIM card and restart your device" |
3098 | @@ -2116,7 +2123,7 @@ |
3099 | |
3100 | #: ../wizard/qml/Pages//passwd-confirm.qml:51 |
3101 | msgid "Sorry, incorrect passphrase." |
3102 | -msgstr "" |
3103 | +msgstr "Неверная кодовая фраза." |
3104 | |
3105 | #: ../wizard/qml/Pages//passwd-confirm.qml:51 |
3106 | #: ../wizard/qml/Pages//passwd-confirm.qml:52 |
3107 | @@ -2125,7 +2132,7 @@ |
3108 | |
3109 | #: ../wizard/qml/Pages//passwd-confirm.qml:52 |
3110 | msgid "Sorry, incorrect passcode." |
3111 | -msgstr "" |
3112 | +msgstr "Неверный секретный код." |
3113 | |
3114 | #: ../wizard/qml/Pages//80-finished.qml:22 |
3115 | msgid "All done" |
3116 | @@ -2166,6 +2173,8 @@ |
3117 | msgid "" |
3118 | "Allow apps to use your mobile and Wi-Fi networks to determine your location." |
3119 | msgstr "" |
3120 | +"Разрешить приложениям использовать мобильные и Wi-Fi сети для определения " |
3121 | +"вашего местонахождения." |
3122 | |
3123 | #. TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it |
3124 | #: ../wizard/qml/Pages//50-location.qml:74 |
3125 | @@ -2189,12 +2198,16 @@ |
3126 | "Your phone is set up to automatically report errors to Canonical and its " |
3127 | "partners, the makers of the operating system." |
3128 | msgstr "" |
3129 | +"Ваш телефон настроен на автоматическую отправку отчётов об ошибках в " |
3130 | +"компанию Canonical и её партнерам, производителям операционной системы." |
3131 | |
3132 | #: ../wizard/qml/Pages//60-reporting.qml:41 |
3133 | msgid "" |
3134 | "This can be disabled in <b>System Settings</b> under <b>Security & " |
3135 | "Privacy</b>" |
3136 | msgstr "" |
3137 | +"Данную функцию можно отключить, перейдя в <b>Параметры системы</b>, раздел " |
3138 | +"<b>Защита и приватность</b>" |
3139 | |
3140 | #: ../wizard/qml/Components//Page.qml:89 |
3141 | msgid "Back" |
3142 | @@ -2203,12 +2216,12 @@ |
3143 | #: ../wizard/qml/Components//StackButton.qml:40 |
3144 | #, qt-format |
3145 | msgid "〈 %1" |
3146 | -msgstr "" |
3147 | +msgstr "〈 %1" |
3148 | |
3149 | #: ../wizard/qml/Components//StackButton.qml:43 |
3150 | #, qt-format |
3151 | msgid "%1 〉" |
3152 | -msgstr "" |
3153 | +msgstr "%1 〉" |
3154 | |
3155 | #. TRANSLATORS: This is a keyword or name for the background plugin which is used while searching |
3156 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:4 |
3157 | @@ -2303,19 +2316,19 @@ |
3158 | #. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching |
3159 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:38 |
3160 | msgid "hidden" |
3161 | -msgstr "" |
3162 | +msgstr "скрытые" |
3163 | |
3164 | #. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching |
3165 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:40 |
3166 | msgid "ip" |
3167 | -msgstr "" |
3168 | +msgstr "ip" |
3169 | |
3170 | #. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching |
3171 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3172 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:42 |
3173 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:294 |
3174 | msgid "address" |
3175 | -msgstr "" |
3176 | +msgstr "адрес" |
3177 | |
3178 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
3179 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3180 | @@ -2363,22 +2376,22 @@ |
3181 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
3182 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:60 |
3183 | msgid "facebook" |
3184 | -msgstr "" |
3185 | +msgstr "facebook" |
3186 | |
3187 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
3188 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:62 |
3189 | msgid "twitter" |
3190 | -msgstr "" |
3191 | +msgstr "twitter" |
3192 | |
3193 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
3194 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:64 |
3195 | msgid "flickr" |
3196 | -msgstr "" |
3197 | +msgstr "flickr" |
3198 | |
3199 | #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching |
3200 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:66 |
3201 | msgid "gmail" |
3202 | -msgstr "" |
3203 | +msgstr "gmail" |
3204 | |
3205 | #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching |
3206 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:70 |
3207 | @@ -2388,7 +2401,7 @@ |
3208 | #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching |
3209 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:72 |
3210 | msgid "silent" |
3211 | -msgstr "" |
3212 | +msgstr "в фоновом режиме" |
3213 | |
3214 | #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching |
3215 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:74 |
3216 | @@ -2417,7 +2430,7 @@ |
3217 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:82 |
3218 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:118 |
3219 | msgid "keyboard" |
3220 | -msgstr "" |
3221 | +msgstr "клавиатура" |
3222 | |
3223 | #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching |
3224 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:84 |
3225 | @@ -2527,12 +2540,12 @@ |
3226 | #. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching |
3227 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:130 |
3228 | msgid "punctuation" |
3229 | -msgstr "" |
3230 | +msgstr "пунктуация" |
3231 | |
3232 | #. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching |
3233 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:132 |
3234 | msgid "layout" |
3235 | -msgstr "" |
3236 | +msgstr "раскладка" |
3237 | |
3238 | #. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching |
3239 | #. TRANSLATORS: This is a keyword or name for the brightness plugin which is used while searching |
3240 | @@ -2544,12 +2557,12 @@ |
3241 | #. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching |
3242 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:136 |
3243 | msgid "words" |
3244 | -msgstr "" |
3245 | +msgstr "слова" |
3246 | |
3247 | #. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching |
3248 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:138 |
3249 | msgid "vibration" |
3250 | -msgstr "" |
3251 | +msgstr "вибро" |
3252 | |
3253 | #. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching |
3254 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3255 | @@ -2561,7 +2574,7 @@ |
3256 | #. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching |
3257 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:144 |
3258 | msgid "services" |
3259 | -msgstr "" |
3260 | +msgstr "службы" |
3261 | |
3262 | #. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching |
3263 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:146 |
3264 | @@ -2571,7 +2584,7 @@ |
3265 | #. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching |
3266 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:148 |
3267 | msgid "waiting" |
3268 | -msgstr "" |
3269 | +msgstr "ожидание" |
3270 | |
3271 | #. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching |
3272 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:150 |
3273 | @@ -2633,27 +2646,27 @@ |
3274 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
3275 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:184 |
3276 | msgid "4g" |
3277 | -msgstr "" |
3278 | +msgstr "4g" |
3279 | |
3280 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
3281 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:186 |
3282 | msgid "3g" |
3283 | -msgstr "" |
3284 | +msgstr "3g" |
3285 | |
3286 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
3287 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:188 |
3288 | msgid "2g" |
3289 | -msgstr "" |
3290 | +msgstr "2g" |
3291 | |
3292 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
3293 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:190 |
3294 | msgid "lte" |
3295 | -msgstr "" |
3296 | +msgstr "lte" |
3297 | |
3298 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
3299 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:192 |
3300 | msgid "apn" |
3301 | -msgstr "" |
3302 | +msgstr "apn" |
3303 | |
3304 | #. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching |
3305 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:194 |
3306 | @@ -2665,7 +2678,7 @@ |
3307 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:196 |
3308 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:226 |
3309 | msgid "sim" |
3310 | -msgstr "" |
3311 | +msgstr "sim" |
3312 | |
3313 | #. TRANSLATORS: This is a keyword or name for the example plugin which is used while searching |
3314 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:198 |
3315 | @@ -2710,7 +2723,7 @@ |
3316 | #. TRANSLATORS: This is a keyword or name for the flight-mode plugin which is used while searching |
3317 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:214 |
3318 | msgid "airplane" |
3319 | -msgstr "" |
3320 | +msgstr "автономно" |
3321 | |
3322 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3323 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:220 |
3324 | @@ -2725,22 +2738,22 @@ |
3325 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3326 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:228 |
3327 | msgid "pin" |
3328 | -msgstr "" |
3329 | +msgstr "пин" |
3330 | |
3331 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3332 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:230 |
3333 | msgid "code" |
3334 | -msgstr "" |
3335 | +msgstr "код" |
3336 | |
3337 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3338 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:232 |
3339 | msgid "password" |
3340 | -msgstr "" |
3341 | +msgstr "пароль" |
3342 | |
3343 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3344 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:234 |
3345 | msgid "passphrase" |
3346 | -msgstr "" |
3347 | +msgstr "кодовая фраза" |
3348 | |
3349 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3350 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:236 |
3351 | @@ -2750,7 +2763,7 @@ |
3352 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3353 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:238 |
3354 | msgid "allow" |
3355 | -msgstr "" |
3356 | +msgstr "разрешить" |
3357 | |
3358 | #. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching |
3359 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:240 |
3360 | @@ -2812,7 +2825,7 @@ |
3361 | #. TRANSLATORS: This is a keyword or name for the bluetooth plugin which is used while searching |
3362 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:276 |
3363 | msgid "stereo" |
3364 | -msgstr "" |
3365 | +msgstr "стерео" |
3366 | |
3367 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3368 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:280 |
3369 | @@ -2832,27 +2845,27 @@ |
3370 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3371 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:290 |
3372 | msgid "imei" |
3373 | -msgstr "" |
3374 | +msgstr "imei" |
3375 | |
3376 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3377 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:292 |
3378 | msgid "serial" |
3379 | -msgstr "" |
3380 | +msgstr "серийный номер" |
3381 | |
3382 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3383 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:296 |
3384 | msgid "mac" |
3385 | -msgstr "" |
3386 | +msgstr "mac" |
3387 | |
3388 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3389 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:298 |
3390 | msgid "licenses" |
3391 | -msgstr "" |
3392 | +msgstr "лицензии" |
3393 | |
3394 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3395 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:300 |
3396 | msgid "developer" |
3397 | -msgstr "" |
3398 | +msgstr "разработчик" |
3399 | |
3400 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3401 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:304 |
3402 | @@ -2872,7 +2885,7 @@ |
3403 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3404 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:310 |
3405 | msgid "version" |
3406 | -msgstr "" |
3407 | +msgstr "версия" |
3408 | |
3409 | #. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching |
3410 | #: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:312 |
3411 | @@ -2926,11 +2939,11 @@ |
3412 | |
3413 | #: ../plugins/security-privacy//securityprivacy.cpp:318 |
3414 | msgid "Incorrect passcode. Try again." |
3415 | -msgstr "" |
3416 | +msgstr "Неправильный код. Попробуйте ещё раз." |
3417 | |
3418 | #: ../plugins/security-privacy//securityprivacy.cpp:320 |
3419 | msgid "Incorrect passphrase. Try again." |
3420 | -msgstr "" |
3421 | +msgstr "Неправильная кодовая фраза. Попробуйте ещё раз." |
3422 | |
3423 | #: ../plugins/security-privacy//securityprivacy.cpp:323 |
3424 | msgid "Could not set security mode" |
3425 | @@ -2963,39 +2976,3 @@ |
3426 | #: ../push-helper/software_updates_helper.py:151 |
3427 | msgid "Tap to open the system updater." |
3428 | msgstr "Нажмите для открытия мастера обновления системы." |
3429 | - |
3430 | -#~ msgid "Searching" |
3431 | -#~ msgstr "Поиск" |
3432 | - |
3433 | -#~ msgid "Refresh" |
3434 | -#~ msgstr "Обновить" |
3435 | - |
3436 | -#~ msgid "Remove" |
3437 | -#~ msgstr "Удалить" |
3438 | - |
3439 | -#~ msgid "settings" |
3440 | -#~ msgstr "настройки" |
3441 | - |
3442 | -#~ msgid "i18n" |
3443 | -#~ msgstr "i18n" |
3444 | - |
3445 | -#~ msgid "lang" |
3446 | -#~ msgstr "язык" |
3447 | - |
3448 | -#~ msgid "Password visible" |
3449 | -#~ msgstr "Отображать пароль" |
3450 | - |
3451 | -#~ msgid "Other network" |
3452 | -#~ msgstr "Другая сеть" |
3453 | - |
3454 | -#~ msgid "Connect to Wi-Fi" |
3455 | -#~ msgstr "Подключиться к Wi-Fi" |
3456 | - |
3457 | -#~ msgid "Available networks" |
3458 | -#~ msgstr "Доступные сети" |
3459 | - |
3460 | -#~ msgid "Those passphrases don't match." |
3461 | -#~ msgstr "Кодовые фразы не совпадают." |
3462 | - |
3463 | -#~ msgid "Passphrase must be at least four characters long." |
3464 | -#~ msgstr "Кодовая фраза должна содержать не менее четырёх символов." |
3465 | |
3466 | === modified file 'src/CMakeLists.txt' |
3467 | --- src/CMakeLists.txt 2014-09-02 15:44:19 +0000 |
3468 | +++ src/CMakeLists.txt 2014-11-07 22:38:03 +0000 |
3469 | @@ -1,3 +1,5 @@ |
3470 | +include_directories(${GLIB_INCLUDE_DIRS}) |
3471 | + |
3472 | add_definitions(-DI18N_DIRECTORY="${CMAKE_INSTALL_PREFIX}/share/locale") |
3473 | add_definitions(-DI18N_DOMAIN="ubuntu-system-settings") |
3474 | add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}") |
3475 | @@ -23,13 +25,14 @@ |
3476 | qml/MainWindow.qml |
3477 | qml/UncategorizedItemsView.qml |
3478 | SystemSettings/ItemPage.qml |
3479 | + SystemSettings/SettingsItemTitle.qml |
3480 | ) |
3481 | |
3482 | QT5_ADD_RESOURCES(system-settings-resources ui.qrc) |
3483 | |
3484 | add_executable(system-settings ${USS_SOURCES} ${QML_SOURCES} ${system-settings-resources}) |
3485 | qt5_use_modules(system-settings Core Gui Quick Qml) |
3486 | -target_link_libraries(system-settings SystemSettings) |
3487 | +target_link_libraries(system-settings SystemSettings ${GLIB_LDFLAGS}) |
3488 | install(TARGETS system-settings RUNTIME DESTINATION bin) |
3489 | |
3490 | add_library(uss-accountsservice SHARED accountsservice.h accountsservice.cpp) |
3491 | |
3492 | === modified file 'src/SystemSettings/CMakeLists.txt' |
3493 | --- src/SystemSettings/CMakeLists.txt 2014-08-11 16:13:17 +0000 |
3494 | +++ src/SystemSettings/CMakeLists.txt 2014-11-07 22:38:03 +0000 |
3495 | @@ -1,5 +1,6 @@ |
3496 | set(QML_SOURCES |
3497 | ItemPage.qml |
3498 | + SettingsItemTitle.qml |
3499 | ) |
3500 | |
3501 | set(PLUG_DIR ${PLUGIN_QML_DIR}/SystemSettings) |
3502 | |
3503 | === added file 'src/SystemSettings/SettingsItemTitle.qml' |
3504 | --- src/SystemSettings/SettingsItemTitle.qml 1970-01-01 00:00:00 +0000 |
3505 | +++ src/SystemSettings/SettingsItemTitle.qml 2014-11-07 22:38:03 +0000 |
3506 | @@ -0,0 +1,38 @@ |
3507 | +/* |
3508 | + * This file is part of system-settings |
3509 | + * |
3510 | + * Copyright (C) 2013 Canonical Ltd. |
3511 | + * |
3512 | + * This program is free software: you can redistribute it and/or modify it |
3513 | + * under the terms of the GNU General Public License version 3, as published |
3514 | + * by the Free Software Foundation. |
3515 | + * |
3516 | + * This program is distributed in the hope that it will be useful, but |
3517 | + * WITHOUT ANY WARRANTY; without even the implied warranties of |
3518 | + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
3519 | + * PURPOSE. See the GNU General Public License for more details. |
3520 | + * |
3521 | + * You should have received a copy of the GNU General Public License along |
3522 | + * with this program. If not, see <http://www.gnu.org/licenses/>. |
3523 | + */ |
3524 | + |
3525 | +import QtQuick 2.0 |
3526 | +import Ubuntu.Components 0.1 |
3527 | +import Ubuntu.Components.ListItems 0.1 as ListItem |
3528 | + |
3529 | +ListItem.Standard { |
3530 | + id: itemEmpty |
3531 | + property string text |
3532 | + Label { |
3533 | + anchors { |
3534 | + left: parent.left |
3535 | + leftMargin: units.gu(2) |
3536 | + right: parent.right |
3537 | + rightMargin: units.gu(2) |
3538 | + top: parent.top |
3539 | + topMargin: units.gu(3) |
3540 | + } |
3541 | + text: itemEmpty.text |
3542 | + } |
3543 | + highlightWhenPressed: false |
3544 | +} |
3545 | |
3546 | === modified file 'src/SystemSettings/qmldir' |
3547 | --- src/SystemSettings/qmldir 2014-08-11 16:13:17 +0000 |
3548 | +++ src/SystemSettings/qmldir 2014-11-07 22:38:03 +0000 |
3549 | @@ -1,2 +1,3 @@ |
3550 | module SystemSettings |
3551 | ItemPage 1.0 ItemPage.qml |
3552 | +SettingsItemTitle 1.0 SettingsItemTitle.qml |
3553 | |
3554 | === modified file 'src/main.cpp' |
3555 | --- src/main.cpp 2014-10-21 15:20:07 +0000 |
3556 | +++ src/main.cpp 2014-11-07 22:38:03 +0000 |
3557 | @@ -85,6 +85,7 @@ |
3558 | Qt::QueuedConnection); |
3559 | qmlRegisterType<QAbstractItemModel>(); |
3560 | qmlRegisterType<SystemSettings::PluginManager>("SystemSettings", 1, 0, "PluginManager"); |
3561 | + view.engine()->rootContext()->setContextProperty("Utilities", new Utilities()); |
3562 | view.setResizeMode(QQuickView::SizeRootObjectToView); |
3563 | view.engine()->addImportPath(PLUGIN_PRIVATE_MODULE_DIR); |
3564 | view.engine()->addImportPath(PLUGIN_QML_DIR); |
3565 | |
3566 | === modified file 'src/utils.cpp' |
3567 | --- src/utils.cpp 2014-07-23 13:29:15 +0000 |
3568 | +++ src/utils.cpp 2014-11-07 22:38:03 +0000 |
3569 | @@ -21,6 +21,7 @@ |
3570 | #include "utils.h" |
3571 | #include "debug.h" |
3572 | |
3573 | +#include <glib.h> |
3574 | #include <QUrl> |
3575 | #include <QUrlQuery> |
3576 | |
3577 | @@ -59,4 +60,20 @@ |
3578 | } |
3579 | } |
3580 | |
3581 | +Utilities::Utilities(QObject *parent) : |
3582 | + QObject(parent) |
3583 | +{ |
3584 | +} |
3585 | + |
3586 | +QString Utilities::formatSize(quint64 size) const |
3587 | +{ |
3588 | + guint64 g_size = size; |
3589 | + |
3590 | + gchar * formatted_size = g_format_size (g_size); |
3591 | + QString q_formatted_size = QString::fromLocal8Bit(formatted_size); |
3592 | + g_free (formatted_size); |
3593 | + |
3594 | + return q_formatted_size; |
3595 | +} |
3596 | + |
3597 | } // namespace |
3598 | |
3599 | === modified file 'src/utils.h' |
3600 | --- src/utils.h 2013-09-30 09:29:34 +0000 |
3601 | +++ src/utils.h 2014-11-07 22:38:03 +0000 |
3602 | @@ -29,6 +29,14 @@ |
3603 | void parsePluginOptions(const QStringList &arguments, QString &defaultPlugin, |
3604 | QVariantMap &pluginOptions); |
3605 | |
3606 | +class Utilities : public QObject { |
3607 | + Q_OBJECT |
3608 | + |
3609 | +public: |
3610 | + explicit Utilities(QObject *parent = 0); |
3611 | + Q_INVOKABLE QString formatSize(quint64) const; |
3612 | +}; |
3613 | + |
3614 | } // namespace |
3615 | |
3616 | #endif // SYSTEM_SETTINGS_UTILS_H |
3617 | |
3618 | === modified file 'tests/CMakeLists.txt' |
3619 | --- tests/CMakeLists.txt 2014-09-03 15:38:36 +0000 |
3620 | +++ tests/CMakeLists.txt 2014-11-07 22:38:03 +0000 |
3621 | @@ -1,4 +1,5 @@ |
3622 | include_directories(${CMAKE_CURRENT_BINARY_DIR} ../src) |
3623 | +include_directories(${GLIB_INCLUDE_DIRS}) |
3624 | add_definitions(-DI18N_DOMAIN="ubuntu-system-settings") |
3625 | add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}") |
3626 | add_definitions(-DPLUGIN_MANIFEST_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data") |
3627 | @@ -36,6 +37,7 @@ |
3628 | set_tests_properties(tst-plugins PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal") |
3629 | |
3630 | qt5_use_modules(tst-arguments Core Test) |
3631 | +target_link_libraries(tst-arguments ${GLIB_LDFLAGS}) |
3632 | add_test(tst-arguments tst-arguments) |
3633 | |
3634 | add_executable(tst-pagelist tst_pagelist.cpp ../wizard/PageList.cpp) |
3635 | |
3636 | === modified file 'tests/autopilot/ubuntu_system_settings/__init__.py' |
3637 | --- tests/autopilot/ubuntu_system_settings/__init__.py 2014-09-26 12:52:31 +0000 |
3638 | +++ tests/autopilot/ubuntu_system_settings/__init__.py 2014-11-07 22:38:03 +0000 |
3639 | @@ -1,3 +1,4 @@ |
3640 | + |
3641 | # -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- |
3642 | # |
3643 | # Copyright (C) 2014 Canonical Ltd. |
3644 | @@ -114,6 +115,10 @@ |
3645 | def go_to_wifi_page(self): |
3646 | return self._go_to_page('entryComponent-wifi', 'wifiPage') |
3647 | |
3648 | + @autopilot.logging.log_action(logger.debug) |
3649 | + def go_to_cellular_page(self): |
3650 | + return self._go_to_page('entryComponent-cellular', 'cellularPage') |
3651 | + |
3652 | def _go_to_page(self, item_object_name, page_object_name): |
3653 | self.click_item(item_object_name) |
3654 | page = self.wait_select_single(objectName=page_object_name) |
3655 | @@ -202,7 +207,7 @@ |
3656 | self._orientation_lock_switch.uncheck() |
3657 | |
3658 | |
3659 | -class CelullarPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
3660 | +class CellularPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
3661 | |
3662 | """Autopilot helper for the Sound page.""" |
3663 | |
3664 | @@ -214,6 +219,164 @@ |
3665 | return True |
3666 | return False |
3667 | |
3668 | + @autopilot.logging.log_action(logger.debug) |
3669 | + def enable_data(self): |
3670 | + self._set_data(True) |
3671 | + |
3672 | + @autopilot.logging.log_action(logger.debug) |
3673 | + def disable_data(self): |
3674 | + self._set_data(False) |
3675 | + |
3676 | + def disable_datas(self): |
3677 | + self.select_sim_for_data('off') |
3678 | + |
3679 | + @autopilot.logging.log_action(logger.debug) |
3680 | + def _set_data(self, data): |
3681 | + chk = self.select_single(objectName='data') |
3682 | + if data: |
3683 | + chk.check() |
3684 | + else: |
3685 | + chk.uncheck() |
3686 | + |
3687 | + @autopilot.logging.log_action(logger.debug) |
3688 | + def get_data(self): |
3689 | + return self.select_single(objectName='data').checked |
3690 | + |
3691 | + @autopilot.logging.log_action(logger.debug) |
3692 | + def enable_roaming(self, timeout=10): |
3693 | + self._set_roaming(True, timeout=timeout) |
3694 | + |
3695 | + @autopilot.logging.log_action(logger.debug) |
3696 | + def disable_roaming(self, timeout=10): |
3697 | + self._set_roaming(False, timeout=timeout) |
3698 | + |
3699 | + @autopilot.logging.log_action(logger.debug) |
3700 | + def _set_roaming(self, roaming, timeout): |
3701 | + chk = self.select_single(objectName='roaming') |
3702 | + if roaming: |
3703 | + chk.check(timeout=timeout) |
3704 | + else: |
3705 | + chk.uncheck(timeout=timeout) |
3706 | + |
3707 | + @autopilot.logging.log_action(logger.debug) |
3708 | + def set_connection_type(self, radio_type, sim='/ril_0', |
3709 | + scroll_to_and_click=None): |
3710 | + self._set_connection_type(radio_type, sim, scroll_to_and_click) |
3711 | + |
3712 | + @autopilot.logging.log_action(logger.debug) |
3713 | + def _set_connection_type(self, radio_type, sim, scroll_to_and_click): |
3714 | + t = self.wait_select_single( |
3715 | + 'OptionSelectorDelegate', |
3716 | + objectName='%s_radio_%s' % (sim, radio_type)) |
3717 | + if scroll_to_and_click: |
3718 | + scroll_to_and_click(t) |
3719 | + else: |
3720 | + t.swipe_into_view() |
3721 | + |
3722 | + self.pointing_device.click_object(t) |
3723 | + |
3724 | + @autopilot.logging.log_action(logger.debug) |
3725 | + def change_carrier(self, carrier, sim=None): |
3726 | + if sim: |
3727 | + carriersPage = self._click_carriers() |
3728 | + carrierPage = carriersPage.select_sim(sim) |
3729 | + else: |
3730 | + carrierPage = self._click_carrier() |
3731 | + |
3732 | + carrierPage.set_manual() |
3733 | + carrierPage.set_carrier(carrier) |
3734 | + |
3735 | + @autopilot.logging.log_action(logger.debug) |
3736 | + def _click_carrier(self): |
3737 | + item = self.select_single(objectName='carrier') |
3738 | + self.pointing_device.click_object(item) |
3739 | + return self.get_root_instance().wait_select_single( |
3740 | + objectName='chooseCarrierPage') |
3741 | + |
3742 | + @autopilot.logging.log_action(logger.debug) |
3743 | + def _click_carriers(self): |
3744 | + item = self.select_single(objectName='carriers') |
3745 | + self.pointing_device.click_object(item) |
3746 | + return self.get_root_instance().wait_select_single( |
3747 | + objectName='chooseCarriersPage') |
3748 | + |
3749 | + @autopilot.logging.log_action(logger.debug) |
3750 | + def select_sim_for_data(self, sim): |
3751 | + self._select_sim_for_data(sim) |
3752 | + |
3753 | + @autopilot.logging.log_action(logger.debug) |
3754 | + def _select_sim_for_data(self, sim): |
3755 | + item = self.select_single(objectName='use%s' % sim) |
3756 | + self.pointing_device.click_object(item) |
3757 | + |
3758 | + @autopilot.logging.log_action(logger.debug) |
3759 | + def select_sim_for_calls(self, sim): |
3760 | + pass |
3761 | + |
3762 | + @autopilot.logging.log_action(logger.debug) |
3763 | + def select_sim_for_messages(self): |
3764 | + pass |
3765 | + |
3766 | + @autopilot.logging.log_action(logger.debug) |
3767 | + def set_name(self, sim, name): |
3768 | + self._set_name(sim, name) |
3769 | + |
3770 | + def get_name(self, sim): |
3771 | + obj = self.select_single( |
3772 | + objectName="label_%s" % sim) |
3773 | + return obj.text |
3774 | + |
3775 | + def _set_name(self, sim, name): |
3776 | + obj = self.select_single( |
3777 | + objectName="edit_name_%s" % sim) |
3778 | + self.pointing_device.click_object(obj) |
3779 | + |
3780 | + # wait for animation |
3781 | + sleep(1) |
3782 | + ok = self.select_single('Button', objectName="doRename") |
3783 | + |
3784 | + field = self.select_single('TextField', objectName="nameField") |
3785 | + field.write(name) |
3786 | + self.pointing_device.click_object(ok) |
3787 | + |
3788 | + |
3789 | +class PageChooseCarriers(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
3790 | + |
3791 | + """Autopilot helper for carrier selection page (multisim).""" |
3792 | + |
3793 | + @autopilot.logging.log_action(logger.debug) |
3794 | + def select_sim(self, sim): |
3795 | + return self._select_sim(sim) |
3796 | + |
3797 | + @autopilot.logging.log_action(logger.debug) |
3798 | + def _select_sim(self, sim): |
3799 | + item = self.select_single(objectName='%s_carriers' % sim) |
3800 | + self.pointing_device.click_object(item) |
3801 | + return self.get_root_instance().wait_select_single( |
3802 | + objectName='chooseCarrierPage') |
3803 | + |
3804 | + |
3805 | +class PageChooseCarrier(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
3806 | + |
3807 | + """Autopilot helper for carrier selection page (singlesim).""" |
3808 | + |
3809 | + @autopilot.logging.log_action(logger.debug) |
3810 | + def set_manual(self): |
3811 | + item = self.select_single(text='Manually') |
3812 | + self.pointing_device.click_object(item) |
3813 | + |
3814 | + @autopilot.logging.log_action(logger.debug) |
3815 | + def set_automatic(self): |
3816 | + item = self.select_single(text='Automatically') |
3817 | + self.pointing_device.click_object(item) |
3818 | + |
3819 | + def set_carrier(self, carrier): |
3820 | + # wait for animation, since page.animationRunning.wait_for(False) |
3821 | + # does not work? |
3822 | + sleep(0.5) |
3823 | + item = self.select_single(text=carrier) |
3824 | + self.pointing_device.click_object(item) |
3825 | + |
3826 | |
3827 | class TimeAndDatePage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase): |
3828 | |
3829 | @@ -678,6 +841,40 @@ |
3830 | return True |
3831 | return False |
3832 | |
3833 | + @autopilot.logging.log_action(logger.debug) |
3834 | + def enable_wireless(self): |
3835 | + self._set_wireless(True) |
3836 | + |
3837 | + @autopilot.logging.log_action(logger.debug) |
3838 | + def disable_wireless(self): |
3839 | + self._set_wireless(False) |
3840 | + |
3841 | + """ |
3842 | + :returns: Whether or not WiFi can be used |
3843 | + """ |
3844 | + @autopilot.logging.log_action(logger.debug) |
3845 | + def have_wireless(self): |
3846 | + try: |
3847 | + self.wait_select_single('SwitchMenuItem', text=_('Wi-Fi')) |
3848 | + except: |
3849 | + return False |
3850 | + return True |
3851 | + |
3852 | + """Returns the current WiFi state |
3853 | + |
3854 | + :returns: Whether or not WiFi is enabled |
3855 | + """ |
3856 | + @autopilot.logging.log_action(logger.debug) |
3857 | + def get_wireless(self): |
3858 | + return self.wait_select_single( |
3859 | + 'SwitchMenuItem', text=_('Wi-Fi')).checked |
3860 | + |
3861 | + @autopilot.logging.log_action(logger.debug) |
3862 | + def _set_wireless(self, state): |
3863 | + obj = self.wait_select_single('SwitchMenuItem', text=_('Wi-Fi')) |
3864 | + if obj.checked != state: |
3865 | + self.pointing_device.click_object(obj) |
3866 | + |
3867 | """Connects to hidden network |
3868 | |
3869 | :param name: Network name string (SSID) |
3870 | |
3871 | === modified file 'tests/autopilot/ubuntu_system_settings/tests/__init__.py' |
3872 | --- tests/autopilot/ubuntu_system_settings/tests/__init__.py 2014-10-22 21:34:08 +0000 |
3873 | +++ tests/autopilot/ubuntu_system_settings/tests/__init__.py 2014-11-07 22:38:03 +0000 |
3874 | @@ -33,6 +33,7 @@ |
3875 | RDO_IFACE = 'org.ofono.RadioSettings' |
3876 | SIM_IFACE = 'org.ofono.SimManager' |
3877 | NETREG_IFACE = 'org.ofono.NetworkRegistration' |
3878 | +NETOP_IFACE = 'org.ofono.NetworkOperator' |
3879 | CALL_FWD_IFACE = 'org.ofono.CallForwarding' |
3880 | CALL_SETTINGS_IFACE = 'org.ofono.CallSettings' |
3881 | SYSTEM_IFACE = 'com.canonical.SystemImage' |
3882 | @@ -150,7 +151,7 @@ |
3883 | def mock_carriers(self, name): |
3884 | self.dbusmock.AddObject( |
3885 | '/%s/operator/op2' % name, |
3886 | - 'org.ofono.NetworkOperator', |
3887 | + NETOP_IFACE, |
3888 | { |
3889 | 'Name': 'my.cool.telco', |
3890 | 'Status': 'available', |
3891 | @@ -167,7 +168,7 @@ |
3892 | # Add a forbidden carrier |
3893 | self.dbusmock.AddObject( |
3894 | '/%s/operator/op3' % name, |
3895 | - 'org.ofono.NetworkOperator', |
3896 | + NETOP_IFACE, |
3897 | { |
3898 | 'Name': 'my.bad.telco', |
3899 | 'Status': 'forbidden', |
3900 | @@ -311,9 +312,12 @@ |
3901 | |
3902 | |
3903 | class CellularBaseTestCase(UbuntuSystemSettingsOfonoTestCase): |
3904 | + |
3905 | def setUp(self): |
3906 | """ Go to Cellular page """ |
3907 | - super(CellularBaseTestCase, self).setUp('cellular') |
3908 | + super(CellularBaseTestCase, self).setUp() |
3909 | + self.cellular_page = self.system_settings.\ |
3910 | + main_view.go_to_cellular_page() |
3911 | |
3912 | |
3913 | class PhoneOfonoBaseTestCase(UbuntuSystemSettingsOfonoTestCase): |
3914 | |
3915 | === modified file 'tests/autopilot/ubuntu_system_settings/tests/test_cellular.py' |
3916 | --- tests/autopilot/ubuntu_system_settings/tests/test_cellular.py 2014-10-09 14:09:38 +0000 |
3917 | +++ tests/autopilot/ubuntu_system_settings/tests/test_cellular.py 2014-11-07 22:38:03 +0000 |
3918 | @@ -5,537 +5,217 @@ |
3919 | # under the terms of the GNU General Public License version 3, as published |
3920 | # by the Free Software Foundation. |
3921 | |
3922 | -import dbus |
3923 | from gi.repository import Gio, GLib |
3924 | from time import sleep |
3925 | |
3926 | from autopilot.introspection.dbus import StateNotFoundError |
3927 | from autopilot.matchers import Eventually |
3928 | -from testtools.matchers import Equals, NotEquals, raises |
3929 | -from unittest import skip |
3930 | +from testtools.matchers import Equals, raises, StartsWith |
3931 | |
3932 | from ubuntu_system_settings.tests import ( |
3933 | - CellularBaseTestCase, CONNMAN_IFACE, RDO_IFACE, SIM_IFACE) |
3934 | -from ubuntu_system_settings.utils.i18n import ugettext as _ |
3935 | - |
3936 | -from ubuntuuitoolkit import emulators as toolkit_emulators |
3937 | - |
3938 | - |
3939 | -PREFERENCE_2G = '2G only (saves battery)' |
3940 | -PREFERENCE_UMTS = '2G/3G (faster)' |
3941 | -PREFERENCE_LTE = '2G/3G/4G (faster)' |
3942 | -PREFERENCE_OFF = 'Off' |
3943 | -USE_OFF = "useoff" |
3944 | -USE_SIM_1 = "use/ril_0" |
3945 | -USE_SIM_2 = "use/ril_1" |
3946 | + CellularBaseTestCase, CONNMAN_IFACE, RDO_IFACE, NETREG_IFACE) |
3947 | |
3948 | |
3949 | class CellularTestCase(CellularBaseTestCase): |
3950 | - """ Tests for cellular Page """ |
3951 | - |
3952 | - """Caches the technology preference selector""" |
3953 | - _pref_selector = None |
3954 | - |
3955 | - @property |
3956 | - def data_preference_selector(self): |
3957 | - """Return data_preference_selector""" |
3958 | - try: |
3959 | - self._pref_selector.get_properties() |
3960 | - except: |
3961 | - self._pref_selector = \ |
3962 | - self.system_settings.main_view.cellular_page.select_single( |
3963 | - toolkit_emulators.ItemSelector, |
3964 | - objectName="technologyPreferenceSelector" |
3965 | - ) |
3966 | - return self._pref_selector |
3967 | - |
3968 | - def select_preference(self, label): |
3969 | - """Helper method to click a preference which matches provided label""" |
3970 | - pref = self.data_preference_selector.select_single('Label', text=label) |
3971 | - self.system_settings.main_view.pointing_device.click_object(pref) |
3972 | - |
3973 | - def assert_selected_preference(self, index): |
3974 | - """Helper method asserting that the selected data technology preference |
3975 | - is that of index""" |
3976 | - self.assertThat(self.data_preference_selector.selectedIndex, |
3977 | - Eventually(Equals(index))) |
3978 | - |
3979 | - def navigate_to_carrier_page(self): |
3980 | - selector = self.system_settings.main_view.cellular_page.select_single( |
3981 | - objectName="chooseCarrier" |
3982 | - ) |
3983 | - self.system_settings.main_view.scroll_to_and_click(selector) |
3984 | - |
3985 | - def navigate_to_manual(self): |
3986 | - selector = self.choose_carrier_page.select_single( |
3987 | - toolkit_emulators.ItemSelector, |
3988 | - objectName="autoChooseCarrierSelector" |
3989 | - ) |
3990 | - manual = selector.select_single('Label', text=_("Manually")) |
3991 | - self.system_settings.main_view.pointing_device.click_object(manual) |
3992 | - choosecarrier = self.system_settings.main_view.cellular_page.\ |
3993 | - select_single(objectName="chooseCarrier") |
3994 | - self.system_settings.main_view.pointing_device.click_object( |
3995 | - choosecarrier) |
3996 | - self.assertThat( |
3997 | - self.system_settings.main_view.choose_page.title, |
3998 | - Equals(_("Carrier")) |
3999 | - ) |
4000 | - |
4001 | - def test_cellular_page(self): |
4002 | - """ Checks whether Cellular page is available """ |
4003 | - self.assertThat( |
4004 | - self.system_settings.main_view.cellular_page, |
4005 | - NotEquals(None) |
4006 | - ) |
4007 | - self.assertThat( |
4008 | - self.system_settings.main_view.cellular_page.title, |
4009 | - Equals(_('Cellular')) |
4010 | - ) |
4011 | - |
4012 | - def test_single_sim_layout(self): |
4013 | - self.system_settings.main_view.cellular_page.\ |
4014 | - select_single(objectName="singleSim") |
4015 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
4016 | - objectName='multiSim'), raises(StateNotFoundError)) |
4017 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
4018 | - objectName='noSim'), raises(StateNotFoundError)) |
4019 | - |
4020 | - def test_current_network(self): |
4021 | - """ Tests whether the current network is visible and selected """ |
4022 | - self.navigate_to_carrier_page() |
4023 | - self.navigate_to_manual() |
4024 | - carriers = self.system_settings.main_view.choose_page.select_single( |
4025 | - toolkit_emulators.ItemSelector, |
4026 | - objectName="carrierSelector" |
4027 | - ) |
4028 | - # TODO: Once there is a proper ItemSelector emulator, get the items |
4029 | - # from it and check 'fake.tel' is the selected one. |
4030 | - selected_delegate = carriers.select_single( |
4031 | - 'OptionSelectorDelegate', selected=True) |
4032 | - selected_delegate.select_single('Label', text="fake.tel") |
4033 | - |
4034 | - def test_alt_network(self): |
4035 | - """ Tests whether an alternative available network is displayed """ |
4036 | - self.navigate_to_carrier_page() |
4037 | - self.navigate_to_manual() |
4038 | - carriers = self.system_settings.main_view.choose_page.select_single( |
4039 | - toolkit_emulators.ItemSelector, |
4040 | - objectName="carrierSelector" |
4041 | - ) |
4042 | - manual = carriers.select_single('Label', text="my.cool.telco") |
4043 | - self.assertThat(manual, NotEquals(None)) |
4044 | + |
4045 | + def test_enable_data(self): |
4046 | + self.cellular_page.enable_data() |
4047 | + self.assertThat( |
4048 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
4049 | + Eventually(Equals(True)) |
4050 | + ) |
4051 | + |
4052 | + def test_disable_data(self): |
4053 | + self.cellular_page.disable_data() |
4054 | + self.assertThat( |
4055 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
4056 | + Eventually(Equals(False)) |
4057 | + ) |
4058 | + |
4059 | + def test_remote_manipulation_of_data(self): |
4060 | + self.modem_0.EmitSignal( |
4061 | + CONNMAN_IFACE, |
4062 | + 'PropertyChanged', |
4063 | + 'sv', |
4064 | + ['Powered', 'true']) |
4065 | + |
4066 | + self.assertThat(lambda: self.cellular_page.get_data(), |
4067 | + Eventually(Equals(True))) |
4068 | + |
4069 | + self.modem_0.EmitSignal( |
4070 | + CONNMAN_IFACE, |
4071 | + 'PropertyChanged', |
4072 | + 'sv', |
4073 | + ['Powered', 'false']) |
4074 | + |
4075 | + self.assertThat(lambda: self.cellular_page.get_data(), |
4076 | + Eventually(Equals(False))) |
4077 | + |
4078 | + def test_enable_roaming(self): |
4079 | + self.cellular_page.enable_roaming() |
4080 | + self.assertThat( |
4081 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
4082 | + Eventually(Equals(True)) |
4083 | + ) |
4084 | + |
4085 | + def test_disable_roaming(self): |
4086 | + self.cellular_page.disable_roaming() |
4087 | + self.assertThat( |
4088 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
4089 | + Eventually(Equals(False)) |
4090 | + ) |
4091 | + |
4092 | + def test_connection_type(self): |
4093 | + get_pref = lambda: self.modem_0.Get(RDO_IFACE, 'TechnologyPreference') |
4094 | + for pref in ['lte', 'umts', 'gsm']: |
4095 | + self.cellular_page.set_connection_type(pref) |
4096 | + self.assertThat(get_pref, Eventually(Equals(pref))) |
4097 | + |
4098 | + def test_current_carrier(self): |
4099 | + self.assertThat(lambda: self.modem_0.Get(NETREG_IFACE, 'Name'), |
4100 | + Eventually(Equals('fake.tel'))) |
4101 | + |
4102 | + def test_change_carrier(self): |
4103 | + self.cellular_page.change_carrier('my.cool.telco') |
4104 | |
4105 | def test_no_forbidden_network(self): |
4106 | """ Ensures that a forbidden network is not shown """ |
4107 | - self.navigate_to_carrier_page() |
4108 | - self.navigate_to_manual() |
4109 | - carriers = self.system_settings.main_view.choose_page.select_single( |
4110 | - toolkit_emulators.ItemSelector, |
4111 | - objectName="carrierSelector" |
4112 | - ) |
4113 | self.assertThat( |
4114 | - lambda: carriers.select_single('Label', text="my.bad.telco"), |
4115 | + lambda: self.cellular_page.change_carrier('my.bad.telco'), |
4116 | raises(StateNotFoundError) |
4117 | ) |
4118 | |
4119 | - def test_set_sim_offline(self): |
4120 | - self.select_preference(PREFERENCE_OFF) |
4121 | - |
4122 | - sleep(0.7) |
4123 | - |
4124 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
4125 | - |
4126 | - def test_set_sim_online(self): |
4127 | - self.select_preference(PREFERENCE_OFF) |
4128 | - sleep(0.7) |
4129 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
4130 | - |
4131 | - self.select_preference(PREFERENCE_UMTS) |
4132 | - sleep(0.7) |
4133 | - self.assertEqual(True, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
4134 | - |
4135 | - def test_roaming_switch(self): |
4136 | - """Test that switching off cellular data disables roaming switch""" |
4137 | - roaming_switch = self.system_settings.main_view.select_single( |
4138 | - objectName="dataRoamingSwitch" |
4139 | - ) |
4140 | - # select 2G only |
4141 | - self.select_preference(PREFERENCE_2G) |
4142 | - |
4143 | - # assert that roaming_switch is enabled |
4144 | - self.assertThat( |
4145 | - roaming_switch.get_properties()['enabled'], |
4146 | - Eventually(Equals(True))) |
4147 | - |
4148 | - # click off |
4149 | - self.select_preference(PREFERENCE_OFF) |
4150 | - # assert roaming_switch is disabled |
4151 | - self.assertThat( |
4152 | - roaming_switch.get_properties()['enabled'], |
4153 | - Eventually(Equals(False))) |
4154 | - |
4155 | - def test_allow_roaming(self): |
4156 | - roaming_switch = self.system_settings.main_view.select_single( |
4157 | - objectName="dataRoamingSwitch" |
4158 | - ) |
4159 | - self.system_settings.main_view.scroll_to_and_click(roaming_switch) |
4160 | - sleep(1.5) |
4161 | - self.assertEqual( |
4162 | - True, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
4163 | - |
4164 | - def test_change_data_preference(self): |
4165 | - self.select_preference(PREFERENCE_2G) |
4166 | - sleep(0.7) |
4167 | - self.assertEqual('gsm', self.modem_0.Get(RDO_IFACE, |
4168 | - 'TechnologyPreference')) |
4169 | - self.select_preference(PREFERENCE_UMTS) |
4170 | - sleep(0.7) |
4171 | - self.assertEqual('umts', self.modem_0.Get(RDO_IFACE, |
4172 | - 'TechnologyPreference')) |
4173 | - |
4174 | - def test_sim_online_status_insensitive_to_radio_preference(self): |
4175 | - # turn off cellular data |
4176 | - self.select_preference(PREFERENCE_OFF) |
4177 | - |
4178 | - # fake dbus signal, changing to umts |
4179 | - self.modem_0.EmitSignal( |
4180 | - 'org.ofono.RadioSettings', |
4181 | - 'PropertyChanged', |
4182 | - 'sv', |
4183 | - ['TechnologyPreference', dbus.String('umts', variant_level=1)]) |
4184 | - |
4185 | - # assert that "Off" has not changed |
4186 | - self.assert_selected_preference(0) |
4187 | - |
4188 | - def test_ui_reacts_to_sim_set_coming_online(self): |
4189 | - self.select_preference(PREFERENCE_2G) |
4190 | - self.select_preference(PREFERENCE_OFF) |
4191 | - |
4192 | - sleep(0.7) |
4193 | - |
4194 | - self.modem_0.EmitSignal( |
4195 | - CONNMAN_IFACE, |
4196 | - 'PropertyChanged', |
4197 | - 'sv', |
4198 | - ['Powered', 'true']) |
4199 | - |
4200 | - # assert that 2G is selected |
4201 | - self.assert_selected_preference(1) |
4202 | - |
4203 | - def test_unlocking_sim(self): |
4204 | - '''Like it would if the sim was locked, e.g.''' |
4205 | - self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', |
4206 | - dbus.String('', variant_level=1)) |
4207 | - |
4208 | - self.system_settings.main_view.go_back() |
4209 | - |
4210 | - self.system_settings.main_view.pointing_device.click_object( |
4211 | - self.system_settings.main_view.select_single( |
4212 | - objectName='entryComponent-cellular')) |
4213 | - |
4214 | - self.assert_selected_preference(-1) |
4215 | - self.assertFalse(self.data_preference_selector.enabled) |
4216 | - |
4217 | - self.modem_0.EmitSignal( |
4218 | - 'org.ofono.RadioSettings', |
4219 | - 'PropertyChanged', |
4220 | - 'sv', |
4221 | - ['TechnologyPreference', dbus.String('lte', variant_level=1)]) |
4222 | - |
4223 | - self.assert_selected_preference(3) |
4224 | - |
4225 | |
4226 | class DualSimCellularTestCase(CellularBaseTestCase): |
4227 | |
4228 | use_sims = 2 |
4229 | |
4230 | - def navigate_to_carriers_page(self): |
4231 | - selector = self.system_settings.main_view.cellular_page.select_single( |
4232 | - objectName="chooseCarrier" |
4233 | - ) |
4234 | - self.system_settings.main_view.scroll_to_and_click(selector) |
4235 | - |
4236 | - def navigate_to_carrier_page_for_sim(self, n): |
4237 | - selector = self.choose_carriers_page.select_single( |
4238 | - objectName="chooseCarrierSim%d" % n |
4239 | - ) |
4240 | - self.system_settings.main_view.scroll_to_and_click(selector) |
4241 | - |
4242 | - def navigate_to_manual(self): |
4243 | - selector = self.choose_carrier_page.select_single( |
4244 | - toolkit_emulators.ItemSelector, |
4245 | - objectName="autoChooseCarrierSelector" |
4246 | - ) |
4247 | - manual = selector.select_single('Label', text=_("Manually")) |
4248 | - self.system_settings.main_view.scroll_to_and_click(manual) |
4249 | - choosecarrier = self.system_settings.main_view.cellular_page.\ |
4250 | - select_single(objectName="chooseCarrier") |
4251 | - self.system_settings.main_view.scroll_to_and_click(choosecarrier) |
4252 | - self.assertThat( |
4253 | - self.system_settings.main_view.choose_page.title, |
4254 | - Equals(_("Carrier")) |
4255 | - ) |
4256 | - |
4257 | - @property |
4258 | - def data_preference_selector(self): |
4259 | - """Return data_preference_selector""" |
4260 | + def test_data_off(self): |
4261 | + self.cellular_page.disable_datas() |
4262 | + self.assertThat( |
4263 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
4264 | + Eventually(Equals(False)) |
4265 | + ) |
4266 | + self.assertThat( |
4267 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'), |
4268 | + Eventually(Equals(False)) |
4269 | + ) |
4270 | + |
4271 | + def test_sim1_online(self): |
4272 | + self.cellular_page.select_sim_for_data('/ril_0') |
4273 | + self.assertThat( |
4274 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
4275 | + Eventually(Equals(True)) |
4276 | + ) |
4277 | + self.assertThat( |
4278 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'), |
4279 | + Eventually(Equals(False)) |
4280 | + ) |
4281 | + |
4282 | + def test_sim2_online(self): |
4283 | + self.cellular_page.select_sim_for_data('/ril_1') |
4284 | + self.assertThat( |
4285 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'), |
4286 | + Eventually(Equals(False)) |
4287 | + ) |
4288 | + self.assertThat( |
4289 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'), |
4290 | + Eventually(Equals(True)) |
4291 | + ) |
4292 | + |
4293 | + def test_connection_type_on_sim1(self): |
4294 | + sim = '/ril_0' |
4295 | + stac = self.system_settings.main_view.scroll_to_and_click |
4296 | + self.cellular_page.select_sim_for_data(sim) |
4297 | + get_pref = lambda: self.modem_0.Get(RDO_IFACE, 'TechnologyPreference') |
4298 | + for pref in ['lte', 'umts', 'gsm']: |
4299 | + self.cellular_page.set_connection_type( |
4300 | + pref, sim=sim, scroll_to_and_click=stac) |
4301 | + self.assertThat(get_pref, Eventually(Equals(pref))) |
4302 | + |
4303 | + def test_connection_type_on_sim2(self): |
4304 | + sim = '/ril_1' |
4305 | + stac = self.system_settings.main_view.scroll_to_and_click |
4306 | + self.cellular_page.select_sim_for_data(sim) |
4307 | + get_pref = lambda: self.modem_1.Get(RDO_IFACE, 'TechnologyPreference') |
4308 | + for pref in ['gsm']: |
4309 | + self.cellular_page.set_connection_type( |
4310 | + pref, sim=sim, scroll_to_and_click=stac) |
4311 | + self.assertThat(get_pref, Eventually(Equals(pref))) |
4312 | + |
4313 | + def test_current_carrier_sim1(self): |
4314 | + self.assertThat(lambda: self.modem_0.Get(NETREG_IFACE, 'Name'), |
4315 | + Eventually(Equals('fake.tel'))) |
4316 | + |
4317 | + def test_change_carrier_sim1(self): |
4318 | + sim = '/ril_0' |
4319 | + self.cellular_page.change_carrier('my.cool.telco', sim=sim) |
4320 | + |
4321 | + def test_current_carrier_sim2(self): |
4322 | + self.assertThat(lambda: self.modem_1.Get(NETREG_IFACE, 'Name'), |
4323 | + Eventually(Equals('fake.tel'))) |
4324 | + |
4325 | + def test_change_carrier_sim2(self): |
4326 | + sim = '/ril_1' |
4327 | + self.cellular_page.change_carrier('my.cool.telco', sim=sim) |
4328 | + |
4329 | + def test_change_sim1_name(self): |
4330 | + gsettings = Gio.Settings.new('com.ubuntu.phone') |
4331 | + sim = '/ril_0' |
4332 | try: |
4333 | - self._pref_selector.get_properties() |
4334 | + old_name = gsettings.get_value('sim-names')[sim] |
4335 | except: |
4336 | - self._pref_selector = \ |
4337 | - self.system_settings.main_view.cellular_page.select_single( |
4338 | - toolkit_emulators.ItemSelector, |
4339 | - objectName="technologyPreferenceSelector" |
4340 | - ) |
4341 | - return self._pref_selector |
4342 | - |
4343 | - def select_preference(self, label): |
4344 | - """Helper method that clicks a preference |
4345 | - that matches provided label""" |
4346 | - pref = self.data_preference_selector.select_single('Label', text=label) |
4347 | - self.system_settings.main_view.scroll_to_and_click(pref) |
4348 | - |
4349 | - def assert_selected_preference(self, index): |
4350 | - """Helper method asserting that the selected |
4351 | - data technology preference is that of index""" |
4352 | - self.assertThat( |
4353 | - self.data_preference_selector.selectedIndex, |
4354 | - Eventually(Equals(index))) |
4355 | - |
4356 | - def use_selector(self, label): |
4357 | - obj = self.system_settings.main_view.cellular_page.select_single( |
4358 | - objectName="use" |
4359 | - ).select_single(objectName=label) |
4360 | - self.system_settings.main_view.scroll_to_and_click(obj) |
4361 | - |
4362 | - def assert_used(self, index): |
4363 | - obj = self.system_settings.main_view.cellular_page.select_single( |
4364 | - objectName="use" |
4365 | - ) |
4366 | - self.assertThat( |
4367 | - obj.selectedIndex, Eventually(Equals(index))) |
4368 | - |
4369 | - def get_sim_name(self, num): |
4370 | - obj = self.system_settings.main_view.cellular_page.select_single( |
4371 | - objectName="simLabel%d" % num) |
4372 | - return obj.get_properties()['text'] |
4373 | - |
4374 | - def rename_sim(self, num, new_name): |
4375 | - obj = self.system_settings.main_view.cellular_page.select_single( |
4376 | - objectName="simEditor" |
4377 | - ).select_single(objectName="editSim%d" % num) |
4378 | - self.system_settings.main_view.scroll_to_and_click(obj) |
4379 | - field = self.system_settings.main_view.cellular_page.select_single( |
4380 | - objectName="nameField" |
4381 | - ) |
4382 | - self.system_settings.main_view.scroll_to_and_click(field) |
4383 | - self.system_settings.main_view.scroll_to_and_click( |
4384 | - field.select_single(objectName="clear_button")) |
4385 | - self.keyboard.type(new_name) |
4386 | - self.system_settings.main_view.scroll_to_and_click( |
4387 | - self.system_settings.main_view.cellular_page.select_single( |
4388 | - objectName="doRename")) |
4389 | - |
4390 | - def test_use_sim_1(self): |
4391 | - self.use_selector(USE_OFF) |
4392 | - self.use_selector(USE_SIM_1) |
4393 | - sleep(0.7) |
4394 | - self.assertEqual(True, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
4395 | - self.assertEqual(False, self.modem_1.Get(CONNMAN_IFACE, 'Powered')) |
4396 | - |
4397 | - def test_use_sim_2(self): |
4398 | - self.use_selector(USE_OFF) |
4399 | - self.use_selector(USE_SIM_2) |
4400 | - sleep(0.7) |
4401 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
4402 | - self.assertEqual(True, self.modem_1.Get(CONNMAN_IFACE, 'Powered')) |
4403 | - |
4404 | - def test_turn_off_both_sims(self): |
4405 | - self.use_selector(USE_OFF) |
4406 | - sleep(0.7) |
4407 | - self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered')) |
4408 | - self.assertEqual(False, self.modem_1.Get(CONNMAN_IFACE, 'Powered')) |
4409 | - |
4410 | - def test_use_gsm_for_sim_1(self): |
4411 | - self.use_selector(USE_SIM_1) |
4412 | - self.select_preference(PREFERENCE_2G) |
4413 | - sleep(0.7) |
4414 | - self.assertEqual( |
4415 | - 'gsm', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
4416 | - |
4417 | - def test_use_umts_for_sim_1(self): |
4418 | - self.use_selector(USE_SIM_1) |
4419 | - self.select_preference(PREFERENCE_UMTS) |
4420 | - sleep(0.7) |
4421 | - self.assertEqual( |
4422 | - 'umts', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
4423 | - |
4424 | - def test_use_gsm_for_sim_2(self): |
4425 | - self.use_selector(USE_SIM_1) |
4426 | - self.select_preference(PREFERENCE_2G) |
4427 | - sleep(0.7) |
4428 | - self.assertEqual( |
4429 | - 'gsm', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
4430 | - |
4431 | - def test_when_sim_1_comes_online_ui_is_correct(self): |
4432 | - self.use_selector(USE_SIM_1) |
4433 | - self.select_preference(PREFERENCE_UMTS) |
4434 | - self.use_selector(USE_OFF) |
4435 | - sleep(0.7) |
4436 | - self.modem_0.Set(CONNMAN_IFACE, 'Powered', True) |
4437 | - self.modem_0.EmitSignal( |
4438 | - CONNMAN_IFACE, |
4439 | - 'PropertyChanged', |
4440 | - 'sv', |
4441 | - ['Powered', 'true']) |
4442 | - |
4443 | - self.assertEqual( |
4444 | - 'umts', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')) |
4445 | - self.assert_used(1) |
4446 | - self.assert_selected_preference(1) |
4447 | - |
4448 | - def test_when_sim_2_comes_online_ui_is_correct(self): |
4449 | - self.use_selector(USE_SIM_2) |
4450 | - self.select_preference(PREFERENCE_2G) |
4451 | - self.use_selector(USE_OFF) |
4452 | - sleep(2) |
4453 | - self.modem_1.Set(CONNMAN_IFACE, 'Powered', True) |
4454 | - self.modem_1.EmitSignal( |
4455 | - CONNMAN_IFACE, |
4456 | - 'PropertyChanged', |
4457 | - 'sv', |
4458 | - ['Powered', 'true']) |
4459 | - |
4460 | - self.assertEqual( |
4461 | - 'gsm', self.modem_1.Get(RDO_IFACE, 'TechnologyPreference')) |
4462 | - self.assert_used(2) |
4463 | - self.assert_selected_preference(0) |
4464 | - |
4465 | - def test_roaming_switch(self): |
4466 | - roaming_switch = self.system_settings.main_view.select_single( |
4467 | - objectName="dataRoamingSwitch" |
4468 | - ) |
4469 | - # assert that roaming_switch is enabled |
4470 | - self.assertTrue(roaming_switch.get_properties()['enabled']) |
4471 | - |
4472 | - # click off |
4473 | - self.use_selector(USE_OFF) |
4474 | - |
4475 | - # assert roaming_switch is disabled |
4476 | - self.assertThat( |
4477 | - roaming_switch.get_properties()['enabled'], |
4478 | - Eventually(Equals(False))) |
4479 | - |
4480 | - def test_allow_roaming(self): |
4481 | - self.use_selector(USE_SIM_1) |
4482 | - self.assertEqual( |
4483 | - False, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
4484 | - roaming_switch = self.system_settings.main_view.select_single( |
4485 | - objectName="dataRoamingSwitch" |
4486 | - ) |
4487 | - self.system_settings.main_view.scroll_to_and_click(roaming_switch) |
4488 | - sleep(1.5) |
4489 | - self.assertEqual( |
4490 | - True, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
4491 | - |
4492 | - def test_no_radio_preference(self): |
4493 | - self.select_preference(PREFERENCE_UMTS) |
4494 | - self.use_selector(USE_OFF) |
4495 | - |
4496 | - self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', '') |
4497 | - self.modem_0.EmitSignal( |
4498 | - CONNMAN_IFACE, |
4499 | - 'PropertyChanged', |
4500 | - 'sv', |
4501 | - ['TechnologyPreference', '']) |
4502 | - |
4503 | - self.assertThat( |
4504 | - self.data_preference_selector.get_properties()['visible'], |
4505 | - Eventually(Equals(False))) |
4506 | - |
4507 | - # see |
4508 | - # https://gitorious.org/python-dbusmock/python-dbusmock/merge_requests/3 |
4509 | - @skip('skipped due to bug in dbusmock') |
4510 | - def test_change_op_sim_1(self): |
4511 | - self.navigate_to_carriers_page() |
4512 | - self.navigate_to_carrier_page_for_sim(1) |
4513 | - carriers = self.system_settings.main_view.choose_page.select_single( |
4514 | - toolkit_emulators.ItemSelector, objectName="carrierSelector") |
4515 | - manual = carriers.select_single('Label', text="my.cool.telco") |
4516 | - self.assertThat(manual, NotEquals(None)) |
4517 | - |
4518 | - # see |
4519 | - # https://gitorious.org/python-dbusmock/python-dbusmock/merge_requests/3 |
4520 | - @skip('skipped due to bug in dbusmock') |
4521 | - def test_change_op_sim_2(self): |
4522 | - self.navigate_to_carriers_page() |
4523 | - self.navigate_to_carrier_page_for_sim(2) |
4524 | - carriers = self.system_settings.main_view.choose_page.select_single( |
4525 | - toolkit_emulators.ItemSelector, objectName="carrierSelector") |
4526 | - manual = carriers.select_single('Label', text="my.cool.telco") |
4527 | - self.assertThat(manual, NotEquals(None)) |
4528 | - |
4529 | - def test_radio_preference_changes(self): |
4530 | - self.use_selector(USE_SIM_1) |
4531 | - |
4532 | - self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', 'umts') |
4533 | - self.modem_0.EmitSignal( |
4534 | - RDO_IFACE, |
4535 | - 'PropertyChanged', |
4536 | - 'sv', |
4537 | - ['TechnologyPreference', 'umts']) |
4538 | - |
4539 | - self.assert_selected_preference(1) |
4540 | - |
4541 | - def test_changing_sim1_name(self): |
4542 | - gsettings = Gio.Settings.new('com.ubuntu.phone') |
4543 | - old_name = gsettings.get_value('sim-names')['/ril_0'] |
4544 | + old_name = 'SIM 1' |
4545 | new_name = 'FOO BAR' |
4546 | - self.rename_sim(1, new_name) |
4547 | + self.cellular_page.set_name(sim, new_name) |
4548 | |
4549 | - # wait for gsettings |
4550 | - sleep(1) |
4551 | try: |
4552 | - self.assertEqual( |
4553 | - new_name, gsettings.get_value('sim-names')['/ril_0']) |
4554 | + self.assertThat( |
4555 | + lambda: gsettings.get_value('sim-names')[sim], |
4556 | + Eventually(Equals(new_name))) |
4557 | except Exception as e: |
4558 | raise e |
4559 | finally: |
4560 | - self.rename_sim(1, old_name) |
4561 | + self.cellular_page.set_name(sim, old_name) |
4562 | + # wait for gsettings |
4563 | sleep(1) |
4564 | |
4565 | - def test_changing_sim2_name(self): |
4566 | + def test_change_sim2_name(self): |
4567 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
4568 | - old_name = gsettings.get_value('sim-names')['/ril_1'] |
4569 | + sim = '/ril_1' |
4570 | + |
4571 | + try: |
4572 | + old_name = gsettings.get_value('sim-names')[sim] |
4573 | + except: |
4574 | + old_name = 'SIM 2' |
4575 | + |
4576 | new_name = 'BAR BAZ' |
4577 | - self.rename_sim(2, new_name) |
4578 | + self.cellular_page.set_name(sim, new_name) |
4579 | |
4580 | - # wait for gsettings |
4581 | - sleep(1) |
4582 | try: |
4583 | - self.assertEqual( |
4584 | - new_name, gsettings.get_value('sim-names')['/ril_1']) |
4585 | + self.assertThat( |
4586 | + lambda: gsettings.get_value('sim-names')[sim], |
4587 | + Eventually(Equals(new_name))) |
4588 | except Exception as e: |
4589 | raise e |
4590 | finally: |
4591 | - self.rename_sim(2, old_name) |
4592 | + self.cellular_page.set_name(sim, old_name) |
4593 | # wait for gsettings |
4594 | sleep(1) |
4595 | |
4596 | - def test_changes_to_sim_names_in_gsettings_are_reflected_in_ui(self): |
4597 | + def test_remote_manipulation_of_name(self): |
4598 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
4599 | old_names = gsettings.get_value('sim-names') |
4600 | - |
4601 | + sim = '/ril_0' |
4602 | + name = 'BAS QUX' |
4603 | new_names = old_names.unpack() |
4604 | - new_names['/ril_0'] = 'BAS QUX' |
4605 | + new_names[sim] = name |
4606 | new_names = GLib.Variant('a{ss}', new_names) |
4607 | gsettings.set_value('sim-names', new_names) |
4608 | - |
4609 | - # wait for gsettings |
4610 | - sleep(1) |
4611 | try: |
4612 | - self.assertIn(new_names['/ril_0'], self.get_sim_name(1)) |
4613 | + self.assertThat( |
4614 | + lambda: self.cellular_page.get_name(sim), |
4615 | + Eventually(StartsWith(name))) |
4616 | except Exception as e: |
4617 | raise e |
4618 | finally: |
4619 | @@ -543,6 +223,36 @@ |
4620 | # wait for gsettings |
4621 | sleep(1) |
4622 | |
4623 | + def test_roaming_switch(self): |
4624 | + self.cellular_page.disable_datas() |
4625 | + # assert roaming_switch is disabled |
4626 | + self.assertThat( |
4627 | + lambda: self.cellular_page.enable_roaming(timeout=1), |
4628 | + raises(AssertionError) |
4629 | + ) |
4630 | + |
4631 | + def test_allow_roaming_sim_1(self): |
4632 | + sim = '/ril_0' |
4633 | + self.cellular_page.select_sim_for_data(sim) |
4634 | + |
4635 | + self.assertEqual( |
4636 | + False, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
4637 | + self.cellular_page.enable_roaming() |
4638 | + self.assertThat( |
4639 | + lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
4640 | + Eventually(Equals(True))) |
4641 | + |
4642 | + def test_allow_roaming_sim_2(self): |
4643 | + sim = '/ril_1' |
4644 | + self.cellular_page.select_sim_for_data(sim) |
4645 | + |
4646 | + self.assertEqual( |
4647 | + False, self.modem_1.Get(CONNMAN_IFACE, 'RoamingAllowed')) |
4648 | + self.cellular_page.enable_roaming() |
4649 | + self.assertThat( |
4650 | + lambda: self.modem_1.Get(CONNMAN_IFACE, 'RoamingAllowed'), |
4651 | + Eventually(Equals(True))) |
4652 | + |
4653 | def test_changing_default_sim_for_calls(self): |
4654 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
4655 | default = gsettings.get_value('default-sim-for-calls') |
4656 | @@ -556,11 +266,10 @@ |
4657 | # click first sim |
4658 | self.system_settings.main_view.scroll_to_and_click( |
4659 | self.get_default_sim_for_calls_selector('/ril_0')) |
4660 | - # wait for gsettings |
4661 | - sleep(1) |
4662 | - self.assertEqual( |
4663 | - gsettings.get_value('default-sim-for-calls').get_string(), |
4664 | - '/ril_0') |
4665 | + |
4666 | + self.assertThat( |
4667 | + lambda: gsettings.get_value('default-sim-for-calls').get_string(), |
4668 | + Eventually(Equals('/ril_0'))) |
4669 | |
4670 | def test_changing_default_sim_for_messages(self): |
4671 | gsettings = Gio.Settings.new('com.ubuntu.phone') |
4672 | @@ -574,108 +283,8 @@ |
4673 | # click second sim |
4674 | self.system_settings.main_view.scroll_to_and_click( |
4675 | self.get_default_sim_for_messages_selector('/ril_1')) |
4676 | - # wait for gsettings |
4677 | - sleep(1) |
4678 | - self.assertEqual( |
4679 | - gsettings.get_value('default-sim-for-messages').get_string(), |
4680 | - '/ril_1') |
4681 | - |
4682 | - def test_multi_sim_layout(self): |
4683 | - self.system_settings.main_view.cellular_page.\ |
4684 | - select_single(objectName="multiSim") |
4685 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
4686 | - objectName='singleSim'), raises(StateNotFoundError)) |
4687 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
4688 | - objectName='noSim'), raises(StateNotFoundError)) |
4689 | - |
4690 | - def test_remove_one_sim(self): |
4691 | - self.modem_0.EmitSignal( |
4692 | - SIM_IFACE, |
4693 | - 'PropertyChanged', |
4694 | - 'sv', |
4695 | - ['Present', 'False']) |
4696 | - |
4697 | - self.system_settings.main_view.cellular_page.\ |
4698 | - select_single(objectName="singleSim") |
4699 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
4700 | - objectName='multiSim'), raises(StateNotFoundError)) |
4701 | - self.assertThat(lambda: self.system_settings.main_view.select_single( |
4702 | - objectName='noSim'), raises(StateNotFoundError)) |
4703 | - |
4704 | - def test_remove_two_sims(self): |
4705 | - self.modem_0.EmitSignal( |
4706 | - SIM_IFACE, |
4707 | - 'PropertyChanged', |
4708 | - 'sv', |
4709 | - ['Present', 'False']) |
4710 | - |
4711 | - self.modem_1.EmitSignal( |
4712 | - SIM_IFACE, |
4713 | - 'PropertyChanged', |
4714 | - 'sv', |
4715 | - ['Present', 'False']) |
4716 | - |
4717 | - self.system_settings.main_view.cellular_page.\ |
4718 | - wait_select_single(objectName="noSim") |
4719 | - self.assertThat( |
4720 | - lambda: self.system_settings.main_view.select_single( |
4721 | - objectName='multiSim'), raises(StateNotFoundError)) |
4722 | - self.assertThat( |
4723 | - lambda: self.system_settings.main_view.select_single( |
4724 | - objectName='singleSim'), raises(StateNotFoundError)) |
4725 | - |
4726 | - def test_remove_and_insert_sims(self): |
4727 | - self.modem_0.EmitSignal( |
4728 | - SIM_IFACE, |
4729 | - 'PropertyChanged', |
4730 | - 'sv', |
4731 | - ['Present', 'False']) |
4732 | - |
4733 | - self.modem_1.EmitSignal( |
4734 | - SIM_IFACE, |
4735 | - 'PropertyChanged', |
4736 | - 'sv', |
4737 | - ['Present', 'False']) |
4738 | - |
4739 | - self.system_settings.main_view.cellular_page.\ |
4740 | - wait_select_single(objectName="noSim") |
4741 | - self.assertThat( |
4742 | - lambda: self.system_settings.main_view.select_single( |
4743 | - objectName='multiSim'), raises(StateNotFoundError)) |
4744 | - self.assertThat( |
4745 | - lambda: self.system_settings.main_view.select_single( |
4746 | - objectName='singleSim'), raises(StateNotFoundError)) |
4747 | - |
4748 | - self.modem_0.EmitSignal( |
4749 | - SIM_IFACE, |
4750 | - 'PropertyChanged', |
4751 | - 'sv', |
4752 | - ['Present', 'True']) |
4753 | - |
4754 | - self.modem_1.EmitSignal( |
4755 | - SIM_IFACE, |
4756 | - 'PropertyChanged', |
4757 | - 'sv', |
4758 | - ['Present', 'True']) |
4759 | - |
4760 | - self.system_settings.main_view.cellular_page.\ |
4761 | - wait_select_single(objectName="multiSim") |
4762 | - self.assertThat( |
4763 | - lambda: self.system_settings.main_view.select_single( |
4764 | - objectName='noSim'), raises(StateNotFoundError)) |
4765 | - self.assertThat( |
4766 | - lambda: self.system_settings.main_view.select_single( |
4767 | - objectName='singleSim'), raises(StateNotFoundError)) |
4768 | - |
4769 | - # regression test for 1375832 |
4770 | - # tests that the second slot only exposes gsm, which |
4771 | - # the testdata indicates |
4772 | - def test_slot_two(self): |
4773 | - self.modem_0.EmitSignal( |
4774 | - SIM_IFACE, |
4775 | - 'PropertyChanged', |
4776 | - 'sv', |
4777 | - ['Present', 'False']) |
4778 | - self.select_preference(PREFERENCE_2G) |
4779 | - self.assertRaises(StateNotFoundError, |
4780 | - self.select_preference, PREFERENCE_UMTS) |
4781 | + |
4782 | + self.assertThat( |
4783 | + lambda: |
4784 | + gsettings.get_value('default-sim-for-messages').get_string(), |
4785 | + Eventually(Equals('/ril_1'))) |
4786 | |
4787 | === modified file 'tests/autopilot/ubuntu_system_settings/tests/test_wifi.py' |
4788 | --- tests/autopilot/ubuntu_system_settings/tests/test_wifi.py 2014-09-26 12:52:31 +0000 |
4789 | +++ tests/autopilot/ubuntu_system_settings/tests/test_wifi.py 2014-11-07 22:38:03 +0000 |
4790 | @@ -25,6 +25,11 @@ |
4791 | Equals(_('Wi-Fi'))) |
4792 | |
4793 | def test_connect_to_hidden_network(self): |
4794 | + if not self.wifi_page.have_wireless(): |
4795 | + self.skipTest('Cannot test wireless since it cannot be enabled') |
4796 | + self.addCleanup( |
4797 | + self.wifi_page._set_wireless, self.wifi_page.get_wireless()) |
4798 | + self.wifi_page.enable_wireless() |
4799 | dialog = self.wifi_page.connect_to_hidden_network( |
4800 | 'yeah', |
4801 | scroll_to_and_click=self.system_settings.main_view |
4802 | @@ -47,7 +52,11 @@ |
4803 | dialog.wait_until_destroyed() |
4804 | |
4805 | def test_connect_to_nonexistant_hidden_network(self): |
4806 | - |
4807 | + if not self.wifi_page.have_wireless(): |
4808 | + self.skipTest('Cannot test wireless since it cannot be enabled') |
4809 | + self.addCleanup( |
4810 | + self.wifi_page._set_wireless, self.wifi_page.get_wireless()) |
4811 | + self.wifi_page.enable_wireless() |
4812 | dialog = self.wifi_page.connect_to_hidden_network( |
4813 | 'yeah', |
4814 | scroll_to_and_click=self.system_settings.main_view |
4815 | @@ -72,6 +81,11 @@ |
4816 | |
4817 | @skip('skipped due to bug 1337556') |
4818 | def test_connect_to_hidden_network_using_secrets(self): |
4819 | + if not self.wifi_page.have_wireless(): |
4820 | + self.skipTest('Cannot test wireless since it cannot be enabled') |
4821 | + self.addCleanup( |
4822 | + self.wifi_page._set_wireless, self.wifi_page.get_wireless()) |
4823 | + self.wifi_page.enable_wireless() |
4824 | dialog = self.wifi_page.connect_to_hidden_network( |
4825 | 'yeah', security='wpa', password='abcdefgh', |
4826 | scroll_to_and_click=self.system_settings.main_view |
4827 | @@ -95,6 +109,11 @@ |
4828 | |
4829 | @skip('skipped due to bug 1337556') |
4830 | def test_connect_to_hidden_network_using_incorrect_secrets(self): |
4831 | + if not self.wifi_page.have_wireless(): |
4832 | + self.skipTest('Cannot test wireless since it cannot be enabled') |
4833 | + self.addCleanup( |
4834 | + self.wifi_page._set_wireless, self.wifi_page.get_wireless()) |
4835 | + self.wifi_page.enable_wireless() |
4836 | dialog = self.wifi_page.connect_to_hidden_network( |
4837 | 'yeah', security='wpa', password='abcdefgh', |
4838 | scroll_to_and_click=self.system_settings.main_view |
4839 | @@ -117,7 +136,11 @@ |
4840 | _('Your authentication details were incorrect')))) |
4841 | |
4842 | def test_connect_to_hidden_network_then_cancel(self): |
4843 | - |
4844 | + if not self.wifi_page.have_wireless(): |
4845 | + self.skipTest('Cannot test wireless since it cannot be enabled') |
4846 | + self.addCleanup( |
4847 | + self.wifi_page._set_wireless, self.wifi_page.get_wireless()) |
4848 | + self.wifi_page.enable_wireless() |
4849 | dialog = self.wifi_page.connect_to_hidden_network( |
4850 | 'foo', |
4851 | scroll_to_and_click=self.system_settings.main_view |
4852 | @@ -134,6 +157,18 @@ |
4853 | len(self.device_mock.GetMethodCalls('Disconnect')), |
4854 | Eventually(Equals(1))) |
4855 | |
4856 | + def test_connect_to_hidden_network_dialog_visibility(self): |
4857 | + if not self.wifi_page.have_wireless(): |
4858 | + self.skipTest('Cannot test wireless since it cannot be enabled') |
4859 | + self.addCleanup( |
4860 | + self.wifi_page._set_wireless, self.wifi_page.get_wireless()) |
4861 | + self.wifi_page.disable_wireless() |
4862 | + self.assertThat( |
4863 | + lambda: bool(self.wifi_page.select_single( |
4864 | + '*', |
4865 | + objectName='connectToHiddenNetwork').visible), |
4866 | + Eventually(Equals(False)), 'other net dialog not hidden') |
4867 | + |
4868 | """Note: this test does not actually remove previous networks from the UI. |
4869 | The NetworkManager dbusmock template does not currently support deletion |
4870 | of connections.""" |
4871 | @@ -157,5 +192,7 @@ |
4872 | |
4873 | self.system_settings.main_view.go_back() |
4874 | |
4875 | + # wait for ui to update |
4876 | + sleep(2) |
4877 | self.wifi_page.remove_previous_network( |
4878 | previous_networks[2]['ssid'], scroll_to_and_click=click_method) |
4879 | |
4880 | === modified file 'wizard/Utils/system.cpp' |
4881 | --- wizard/Utils/system.cpp 2014-09-22 15:21:10 +0000 |
4882 | +++ wizard/Utils/system.cpp 2014-11-07 22:38:03 +0000 |
4883 | @@ -20,6 +20,7 @@ |
4884 | #include <QDBusInterface> |
4885 | #include <QDBusPendingCall> |
4886 | #include <QDBusPendingReply> |
4887 | +#include <QFile> |
4888 | #include <QProcess> |
4889 | #include <unistd.h> |
4890 | |
4891 | @@ -81,11 +82,14 @@ |
4892 | void System::getHereLicensePathFinished(QDBusPendingCallWatcher *watcher) |
4893 | { |
4894 | QDBusPendingReply<QVariant> reply = *watcher; |
4895 | + |
4896 | + m_hereLicensePath = ""; |
4897 | + |
4898 | if (!reply.isError()) { |
4899 | QVariant value = reply.argumentAt<0>(); |
4900 | - m_hereLicensePath = value.toString(); |
4901 | - } else { |
4902 | - m_hereLicensePath = ""; |
4903 | + if (QFile::exists(value.toString())) { |
4904 | + m_hereLicensePath = value.toString(); |
4905 | + } |
4906 | } |
4907 | |
4908 | Q_EMIT hereLicensePathChanged(); |
4909 | |
4910 | === modified file 'wizard/qml/Components/CheckableSetting.qml' |
4911 | --- wizard/qml/Components/CheckableSetting.qml 2014-08-21 14:50:29 +0000 |
4912 | +++ wizard/qml/Components/CheckableSetting.qml 2014-11-07 22:38:03 +0000 |
4913 | @@ -27,9 +27,11 @@ |
4914 | property real leftMargin |
4915 | property real rightMargin |
4916 | |
4917 | + readonly property real labelOffset: label.x |
4918 | + |
4919 | signal linkActivated(string link) |
4920 | |
4921 | - implicitHeight: label.height + units.gu(2) |
4922 | + implicitHeight: Math.max(label.height, checkBox.height) |
4923 | |
4924 | Item { |
4925 | anchors.fill: parent |
4926 | @@ -39,7 +41,7 @@ |
4927 | |
4928 | anchors { |
4929 | left: parent.left |
4930 | - verticalCenter: parent.verticalCenter |
4931 | + top: parent.top |
4932 | leftMargin: listItem.leftMargin |
4933 | } |
4934 | |
4935 | @@ -59,7 +61,10 @@ |
4936 | |
4937 | Connections { |
4938 | target: listItem.__mouseArea |
4939 | - onClicked: listItem.checked = !listItem.checked |
4940 | + onClicked: { |
4941 | + listItem.checked = !listItem.checked |
4942 | + listItem.triggered(listItem.checked) |
4943 | + } |
4944 | } |
4945 | } |
4946 | |
4947 | |
4948 | === modified file 'wizard/qml/Pages/30-passwd-type.qml' |
4949 | --- wizard/qml/Pages/30-passwd-type.qml 2014-10-31 15:48:14 +0000 |
4950 | +++ wizard/qml/Pages/30-passwd-type.qml 2014-11-07 22:38:03 +0000 |
4951 | @@ -93,7 +93,7 @@ |
4952 | desc = i18n.tr("No security") |
4953 | } else if (method === UbuntuSecurityPrivacyPanel.Passcode) { |
4954 | name = i18n.tr("Passcode") |
4955 | - desc = i18n.tr("4 numbers") |
4956 | + desc = i18n.tr("4 digits only") |
4957 | } else { |
4958 | name = i18n.tr("Passphrase") |
4959 | desc = i18n.tr("Numbers and letters") |
4960 | |
4961 | === modified file 'wizard/qml/Pages/50-location.qml' |
4962 | --- wizard/qml/Pages/50-location.qml 2014-10-22 15:35:00 +0000 |
4963 | +++ wizard/qml/Pages/50-location.qml 2014-11-07 22:38:03 +0000 |
4964 | @@ -25,7 +25,15 @@ |
4965 | title: i18n.tr("Location") |
4966 | forwardButtonSourceComponent: forwardButton |
4967 | |
4968 | - property bool hereInstalled: System.hereLicensePath !== "" && termsModel.count > 0 |
4969 | + property bool pathSet: System.hereLicensePath !== " " // single space means it's unassigned |
4970 | + property bool countSet: false |
4971 | + skipValid: pathSet && (System.hereLicensePath === "" || countSet) |
4972 | + skip: skipValid && (System.hereLicensePath === "" || termsModel.count === 0) |
4973 | + |
4974 | + Connections { |
4975 | + target: termsModel |
4976 | + onCountChanged: if (pathSet) countSet = true |
4977 | + } |
4978 | |
4979 | FolderListModel { |
4980 | id: termsModel |
4981 | @@ -40,13 +48,15 @@ |
4982 | busType: QMenuModel.DBus.SessionBus |
4983 | busName: "com.canonical.indicator.location" |
4984 | objectPath: "/com/canonical/indicator/location" |
4985 | - property variant enabled: action("location-detection-enabled") |
4986 | + property variant location: action("location-detection-enabled") |
4987 | + property variant gps: action("gps-detection-enabled") |
4988 | Component.onCompleted: start() |
4989 | } |
4990 | |
4991 | Column { |
4992 | id: column |
4993 | anchors.fill: content |
4994 | +<<<<<<< TREE |
4995 | spacing: units.gu(2) |
4996 | |
4997 | Label { |
4998 | @@ -83,6 +93,73 @@ |
4999 | visible: hereInstalled |
5000 | wrapMode: Text.Wrap |
The diff has been truncated for viewing.
Please create a new branch based on lp:ubuntu-system-settings/rtm-14.09 and merge just the commits from trunk into your new branch. Then propose that branch.
For example:
bzr branch lp:ubuntu-system-settings/rtm-14.09
cd rtm-14.09
bzr merge lp:ubuntu-system-settings -r 1187..1189
However that will still conflict slightly, you'll need to manually merge 2 files because they have diverged too much between trunk and rtm at this point.