Merge lp:~nick-dedekind/ubuntu-system-settings/lp1336715.check.sync into lp:ubuntu-system-settings/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
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
Ken VanDine (ken-vandine) wrote :

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.

review: Needs Fixing
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
=== modified file 'debian/changelog'
--- debian/changelog 2014-11-04 14:38:52 +0000
+++ debian/changelog 2014-11-07 22:38:03 +0000
@@ -1,3 +1,4 @@
1<<<<<<< TREE
1ubuntu-system-settings (0.3+14.10.20141104~rtm-0ubuntu1) 14.09; urgency=low2ubuntu-system-settings (0.3+14.10.20141104~rtm-0ubuntu1) 14.09; urgency=low
23
3 [ Ken VanDine ]4 [ Ken VanDine ]
@@ -55,6 +56,118 @@
5556
56 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 21 Oct 2014 15:24:55 +000057 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 21 Oct 2014 15:24:55 +0000
5758
59=======
60ubuntu-system-settings (0.3+15.04.20141103-0ubuntu1) vivid; urgency=low
61
62 [ Ken VanDine ]
63 * Use the SliderMenu component instead of the Slider component, it
64 matches the design and doesn't flicker while changing the
65 brightness. (LP: #1289465)
66 * Need to create UpClient regardless of upower version
67
68 [ Sebastien Bacher ]
69 * [storage] build the correct ini name rather than guessing it (LP:
70 #1387834)
71 * [battery] don't use a colored icon (LP: #1351383)
72
73 [ Michael Terry ]
74 * Redesign location page according to latest design visuals / text.
75 Allows GPS-only, GPS+HERE, or nothing at all. (LP: #1384763)
76
77 [ Ubuntu daily release ]
78 * New rebuild forced
79
80 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 03 Nov 2014 17:30:03 +0000
81
82ubuntu-system-settings (0.3+15.04.20141031.2-0ubuntu1) vivid; urgency=low
83
84 [ Sebastien Bacher ]
85 * Tweaks to try to make the section headers and titles closer to the
86 design. Use a custom component, with tweaked margins and disabled
87 tap effects, for that.
88
89 [ Iain Lane ]
90 * Move formatSize into a new Utilities class in the qml context and
91 call this from the updates panel to consistently display sizes (LP:
92 #1385286)
93 * Update to work with UPower >= 0.99 as well as current versions (LP:
94 #1330037)
95
96 [ Albert Astals ]
97 * i18n++ (LP: #1386730)
98
99 [ William Hua ]
100 * Re-translate the UI when reboot is cancelled after language change.
101 (LP: #1377984)
102
103 [ jonas-drange ]
104 * [cellular] split "Cellular Data" and "Connection type" into two
105 separate pieces in the UI for both single and multi SIM (LP:
106 #1361226)
107 * [wifi] use actiongroup to hide "connect to other networks" (LP:
108 #1377076)
109
110 [ Michael Terry ]
111 * When the power button is held down, show the shutdown dialog like we
112 do in the unity8 shell. (LP: #1381731)
113 * Add a Continue button when choosing a passphrase. And fix a few
114 other design nits with choosing a password.
115
116 [ Michael Zanetti ]
117 * Drop reboot notification label on launcher reset. (LP: #1376707)
118
119 [ Mathieu Trudel-Lapierre ]
120 * [bluetooth] Show bluetooth address instead of name while it's not
121 detected; to be updated once available. (LP: #1382767)
122
123 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 31 Oct 2014 14:53:52 +0000
124
125ubuntu-system-settings (0.3+15.04.20141028.1-0ubuntu1) vivid; urgency=low
126
127 [ Ken VanDine ]
128 * Refactored to use a singleton for UpdateManager shared in both QML
129 and CPP. Don't load the dynamic visibility items while creating the
130 item model, defer that to the loader. (LP: #1317007)
131
132 [ Florian Boucault ]
133 * Added QML debugging.
134
135 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 28 Oct 2014 20:44:34 +0000
136
137ubuntu-system-settings (0.3+15.04.20141028-0ubuntu1) vivid; urgency=low
138
139 [ Michael Terry ]
140 * Fix a typo in the HERE terms link.
141
142 [ CI bot ]
143 * Resync trunk
144
145 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 28 Oct 2014 14:15:45 +0000
146
147ubuntu-system-settings (0.3+14.10.20141022-0ubuntu1) utopic; urgency=low
148
149 [ CI bot ]
150 * Resync trunk
151
152 [ Michael Zanetti ]
153 * update code to reset launcher after launcher backend implementation
154 was reworked (LP: #1376707)
155
156 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 22 Oct 2014 21:34:27 +0000
157
158ubuntu-system-settings (0.3+14.10.20141021.1-0ubuntu1) utopic; urgency=low
159
160 [ Sebastien Bacher ]
161 * [storage] translator comment for the string "%1 free" (LP: #1377929)
162 * [system-update] ellipsize labels if needed (LP: #1376286)
163 * [sound] Use the correct low icon (LP: #1376286)
164
165 [ Lars Uebernickel ]
166 * notification-manager: fix issues with GVariant API usage
167
168 -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 21 Oct 2014 15:24:55 +0000
169
170>>>>>>> MERGE-SOURCE
58ubuntu-system-settings (0.3+14.10.20141021-0ubuntu1) utopic; urgency=low171ubuntu-system-settings (0.3+14.10.20141021-0ubuntu1) utopic; urgency=low
59172
60 [ jonas-drange ]173 [ jonas-drange ]
61174
=== modified file 'plugins/about/PageComponent.qml'
--- plugins/about/PageComponent.qml 2014-10-07 14:07:02 +0000
+++ plugins/about/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -74,7 +74,7 @@
74 anchors.left: parent.left74 anchors.left: parent.left
75 anchors.right: parent.right75 anchors.right: parent.right
7676
77 ListItem.Base {77 ListItem.Empty {
78 height: ubuntuLabel.height + deviceLabel.height + units.gu(6)78 height: ubuntuLabel.height + deviceLabel.height + units.gu(6)
7979
80 Column {80 Column {
@@ -95,6 +95,7 @@
95 text: deviceInfos.manufacturer() ? deviceInfos.manufacturer() + " " + deviceInfos.model() : backendInfos.vendorString95 text: deviceInfos.manufacturer() ? deviceInfos.manufacturer() + " " + deviceInfos.model() : backendInfos.vendorString
96 }96 }
97 }97 }
98 highlightWhenPressed: false
98 }99 }
99100
100 Loader {101 Loader {
@@ -141,13 +142,18 @@
141 id: storageItem142 id: storageItem
142 objectName: "storageItem"143 objectName: "storageItem"
143 text: i18n.tr("Storage")144 text: i18n.tr("Storage")
145<<<<<<< TREE
144 /* TRANSLATORS: that's the free disk space, indicated in the most appropriate storage unit */146 /* TRANSLATORS: that's the free disk space, indicated in the most appropriate storage unit */
145 value: i18n.tr("%1 free").arg(backendInfos.formatSize(storageInfo.availableDiskSpace("/home")))147 value: i18n.tr("%1 free").arg(backendInfos.formatSize(storageInfo.availableDiskSpace("/home")))
148=======
149 /* TRANSLATORS: that's the free disk space, indicated in the most appropriate storage unit */
150 value: i18n.tr("%1 free").arg(Utilities.formatSize(storageInfo.availableDiskSpace("/home")))
151>>>>>>> MERGE-SOURCE
146 progression: true152 progression: true
147 onClicked: pageStack.push(Qt.resolvedUrl("Storage.qml"))153 onClicked: pageStack.push(Qt.resolvedUrl("Storage.qml"))
148 }154 }
149155
150 ListItem.Standard {156 SettingsItemTitle {
151 objectName: "softwareItem"157 objectName: "softwareItem"
152 text: i18n.tr("Software:")158 text: i18n.tr("Software:")
153 }159 }
@@ -176,9 +182,10 @@
176 onClicked:182 onClicked:
177 pageStack.push(pluginManager.getByName("system-update").pageComponent)183 pageStack.push(pluginManager.getByName("system-update").pageComponent)
178 }184 }
185 showDivider: false
179 }186 }
180187
181 ListItem.Standard {188 SettingsItemTitle {
182 objectName: "legalItem"189 objectName: "legalItem"
183 text: i18n.tr("Legal:")190 text: i18n.tr("Legal:")
184 }191 }
185192
=== modified file 'plugins/about/Storage.qml'
--- plugins/about/Storage.qml 2014-09-26 08:35:34 +0000
+++ plugins/about/Storage.qml 2014-11-07 22:38:03 +0000
@@ -138,7 +138,7 @@
138 id: diskItem138 id: diskItem
139 objectName: "diskItem"139 objectName: "diskItem"
140 text: i18n.tr("Total storage")140 text: i18n.tr("Total storage")
141 value: backendInfo.formatSize(diskSpace)141 value: Utilities.formatSize(diskSpace)
142 showDivider: false142 showDivider: false
143 }143 }
144144
@@ -199,7 +199,7 @@
199 iconFrame: iconPath // no frame for invalid icons, since these aren't app icons199 iconFrame: iconPath // no frame for invalid icons, since these aren't app icons
200 text: displayName200 text: displayName
201 value: installedSize ?201 value: installedSize ?
202 backendInfo.formatSize(installedSize) :202 Utilities.formatSize(installedSize) :
203 i18n.tr("N/A")203 i18n.tr("N/A")
204 }204 }
205 }205 }
206206
=== modified file 'plugins/about/StorageItem.qml'
--- plugins/about/StorageItem.qml 2014-01-27 10:41:38 +0000
+++ plugins/about/StorageItem.qml 2014-11-07 22:38:03 +0000
@@ -25,7 +25,7 @@
25 id: sizelabel25 id: sizelabel
26 objectName: "sizeLabel"26 objectName: "sizeLabel"
27 anchors.right: parent.right27 anchors.right: parent.right
28 text: backendInfo.formatSize(value)28 text: Utilities.formatSize(value)
29 visible: ready29 visible: ready
30 }30 }
31 ActivityIndicator {31 ActivityIndicator {
3232
=== modified file 'plugins/about/click.cpp'
--- plugins/about/click.cpp 2014-09-25 13:11:09 +0000
+++ plugins/about/click.cpp 2014-11-07 22:38:03 +0000
@@ -45,7 +45,8 @@
45 */45 */
46void ClickModel::populateFromDesktopOrIniFile (Click *newClick,46void ClickModel::populateFromDesktopOrIniFile (Click *newClick,
47 QVariantMap hooks,47 QVariantMap hooks,
48 QDir directory)48 QDir directory,
49 QString name)
49{50{
50 QVariantMap appHooks;51 QVariantMap appHooks;
51 GKeyFile *appinfo = g_key_file_new();52 GKeyFile *appinfo = g_key_file_new();
@@ -69,17 +70,13 @@
69 {70 {
70 keyGroup = "ScopeConfig";71 keyGroup = "ScopeConfig";
71 keyName = "DisplayName";72 keyName = "DisplayName";
7273 QString scope(appHooks.value("scope", "").toString());
73 QDir scopeDirectory(74
74 directory.absoluteFilePath(appHooks.value("scope", "").toString()));75 QDir scopeDirectory(directory.absoluteFilePath(scope));
75 scopeDirectory.setNameFilters(QStringList()<<"*.ini");76
7677 /* the config is 'name_scope.ini' */
77 QStringList iniEntry(scopeDirectory.entryList());78 QFile desktopOrIniFile(scopeDirectory.absoluteFilePath(
7879 name + "_" + scope + ".ini"));
79 if (iniEntry.isEmpty())
80 goto out;
81
82 QFile desktopOrIniFile(scopeDirectory.absoluteFilePath(iniEntry[0]));
83 desktopOrIniFileName =80 desktopOrIniFileName =
84 g_strdup(desktopOrIniFile.fileName().toLocal8Bit().constData());81 g_strdup(desktopOrIniFile.fileName().toLocal8Bit().constData());
85 if (!desktopOrIniFile.exists())82 if (!desktopOrIniFile.exists())
@@ -193,7 +190,8 @@
193 if (hooks.isValid()) {190 if (hooks.isValid()) {
194 QVariantMap allHooks(hooks.toMap());191 QVariantMap allHooks(hooks.toMap());
195 // The desktop or ini file contains an icon and the display name192 // The desktop or ini file contains an icon and the display name
196 populateFromDesktopOrIniFile(&newClick, allHooks, directory);193 populateFromDesktopOrIniFile(&newClick, allHooks, directory,
194 manifest.value("name", "").toString());
197 }195 }
198196
199 newClick.installSize = manifest.value("installed-size",197 newClick.installSize = manifest.value("installed-size",
200198
=== modified file 'plugins/about/click.h'
--- plugins/about/click.h 2014-09-25 11:17:42 +0000
+++ plugins/about/click.h 2014-11-07 22:38:03 +0000
@@ -58,7 +58,8 @@
58private:58private:
59 void populateFromDesktopOrIniFile(Click *newClick,59 void populateFromDesktopOrIniFile(Click *newClick,
60 QVariantMap hooks,60 QVariantMap hooks,
61 QDir directory);61 QDir directory,
62 QString name);
62 Click buildClick(QVariantMap manifest);63 Click buildClick(QVariantMap manifest);
63 QList<Click> buildClickList();64 QList<Click> buildClickList();
6465
6566
=== modified file 'plugins/about/storageabout.cpp'
--- plugins/about/storageabout.cpp 2014-10-02 16:35:40 +0000
+++ plugins/about/storageabout.cpp 2014-11-07 22:38:03 +0000
@@ -290,17 +290,6 @@
290 return m_homeSize;290 return m_homeSize;
291}291}
292292
293QString StorageAbout::formatSize(quint64 size) const
294{
295 guint64 g_size = size;
296
297 gchar * formatted_size = g_format_size (g_size);
298 QString q_formatted_size = QString::fromLocal8Bit(formatted_size);
299 g_free (formatted_size);
300
301 return q_formatted_size;
302}
303
304void StorageAbout::populateSizes()293void StorageAbout::populateSizes()
305{294{
306 quint32 *running = new quint32(0);295 quint32 *running = new quint32(0);
307296
=== modified file 'plugins/about/storageabout.h'
--- plugins/about/storageabout.h 2014-09-24 12:29:57 +0000
+++ plugins/about/storageabout.h 2014-11-07 22:38:03 +0000
@@ -109,7 +109,6 @@
109 quint64 getAudioSize();109 quint64 getAudioSize();
110 quint64 getPicturesSize();110 quint64 getPicturesSize();
111 quint64 getHomeSize();111 quint64 getHomeSize();
112 Q_INVOKABLE QString formatSize (quint64 size) const;
113 Q_INVOKABLE void populateSizes();112 Q_INVOKABLE void populateSizes();
114 Q_INVOKABLE QString getDevicePath (const QString mount_point);113 Q_INVOKABLE QString getDevicePath (const QString mount_point);
115 bool getDeveloperMode();114 bool getDeveloperMode();
116115
=== modified file 'plugins/battery/PageComponent.qml'
--- plugins/battery/PageComponent.qml 2014-08-29 09:11:11 +0000
+++ plugins/battery/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -288,7 +288,7 @@
288 showDivider: false288 showDivider: false
289 }289 }
290290
291 ListItem.Standard {291 SettingsItemTitle {
292 text: i18n.tr("Ways to reduce battery use:")292 text: i18n.tr("Ways to reduce battery use:")
293 }293 }
294294
@@ -333,17 +333,11 @@
333 text: i18n.tr("Wi-Fi")333 text: i18n.tr("Wi-Fi")
334 control: Switch {334 control: Switch {
335 id: wifiSwitch335 id: wifiSwitch
336 checked: batteryBackend.wifiEnabled336 property bool serverChecked: batteryBackend.wifiEnabled
337 onClicked: batteryBackend.wifiEnabled = checked337 onServerCheckedChanged: checked = serverChecked
338 Component.onCompleted: checked = serverChecked
339 onTriggered: batteryBackend.wifiEnabled = checked
338 }340 }
339 Component.onCompleted:
340 clicked.connect(wifiSwitch.clicked)
341 }
342
343 Binding {
344 target: wifiSwitch
345 property: "checked"
346 value: batteryBackend.wifiEnabled
347 }341 }
348342
349 QDBusActionGroup {343 QDBusActionGroup {
@@ -365,17 +359,14 @@
365 active: bluetoothActionGroup.enabled.state != null359 active: bluetoothActionGroup.enabled.state != null
366 sourceComponent: Switch {360 sourceComponent: Switch {
367 id: btSwitch361 id: btSwitch
368 // Cannot use onCheckedChanged as this triggers a loop362 property bool serverChecked: bluetoothActionGroup.enabled.state
369 onClicked: bluetoothActionGroup.enabled.activate()363 onServerCheckedChanged: checked = serverChecked
370 checked: bluetoothActionGroup.enabled.state364 Component.onCompleted: checked = serverChecked
365 onTriggered: bluetoothActionGroup.enabled.activate()
371 }366 }
372
373 // ListItem forwards the 'clicked' signal to its control.
374 // It needs to be forwarded again to the Loader's sourceComponent
375 signal clicked
376 onClicked: item.clicked()
377 }367 }
378 visible: bluetoothActionGroup.visible368 visible: bluetoothActionGroup.visible
369 Component.onCompleted: clicked.connect(btSwitch.clicked)
379 }370 }
380371
381 QDBusActionGroup {372 QDBusActionGroup {
@@ -396,16 +387,14 @@
396 active: locationActionGroup.enabled.state != null387 active: locationActionGroup.enabled.state != null
397 sourceComponent: Switch {388 sourceComponent: Switch {
398 id: gpsSwitch389 id: gpsSwitch
399 onClicked: locationActionGroup.enabled.activate()390 property bool serverChecked: locationActionGroup.enabled.state
400 checked: locationActionGroup.enabled.state391 onServerCheckedChanged: checked = serverChecked
392 Component.onCompleted: checked = serverChecked
393 onTriggered: locationActionGroup.enabled.activate()
401 }394 }
402
403 // ListItem forwards the 'clicked' signal to its control.
404 // It needs to be forwarded again to the Loader's sourceComponent
405 signal clicked
406 onClicked: item.clicked()
407 }395 }
408 visible: locationActionGroup.enabled.state !== undefined396 visible: locationActionGroup.enabled.state !== undefined
397 Component.onCompleted: clicked.connect(gpsSwitch.clicked)
409 }398 }
410399
411 ListItem.Caption {400 ListItem.Caption {
412401
=== modified file 'plugins/battery/SleepValues.qml'
--- plugins/battery/SleepValues.qml 2014-08-26 01:54:11 +0000
+++ plugins/battery/SleepValues.qml 2014-11-07 22:38:03 +0000
@@ -71,10 +71,14 @@
71 anchors.left: parent.left71 anchors.left: parent.left
72 anchors.right: parent.right72 anchors.right: parent.right
7373
74 SettingsItemTitle {
75 text: lockOnSuspend ? i18n.tr("Lock the phone when it's not in use:") :
76 i18n.tr("Put the phone to sleep when it is not in use:")
77 }
78
74 ListItem.ItemSelector {79 ListItem.ItemSelector {
75 id: sleepSelector80 id: sleepSelector
76 objectName: "sleepSelector"81 objectName: "sleepSelector"
77 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:")
78 delegate: OptionSelectorDelegate {82 delegate: OptionSelectorDelegate {
79 text: modelData83 text: modelData
80 }84 }
@@ -111,6 +115,7 @@
111 else115 else
112 powerSettings.idleDelay = (index == 6) ? 0 : idleValues[index]116 powerSettings.idleDelay = (index == 6) ? 0 : idleValues[index]
113 }117 }
118 highlightWhenPressed: false
114 }119 }
115120
116 ListItem.Caption {121 ListItem.Caption {
117122
=== modified file 'plugins/battery/battery.cpp'
--- plugins/battery/battery.cpp 2014-08-28 07:22:28 +0000
+++ plugins/battery/battery.cpp 2014-11-07 22:38:03 +0000
@@ -63,15 +63,19 @@
6363
64void Battery::buildDeviceString() {64void Battery::buildDeviceString() {
65 UpClient *client;65 UpClient *client;
66 gboolean returnIsOk;
67 GPtrArray *devices;66 GPtrArray *devices;
68 UpDeviceKind kind;67 UpDeviceKind kind;
6968
70 client = up_client_new();69 client = up_client_new();
70
71#if !UP_CHECK_VERSION(0, 99, 0)
72 gboolean returnIsOk;
73
71 returnIsOk = up_client_enumerate_devices_sync(client, nullptr, nullptr);74 returnIsOk = up_client_enumerate_devices_sync(client, nullptr, nullptr);
7275
73 if(!returnIsOk)76 if(!returnIsOk)
74 return;77 return;
78#endif
7579
76 devices = up_client_get_devices(client);80 devices = up_client_get_devices(client);
7781
7882
=== modified file 'plugins/battery/plugin/battery-plugin.cpp'
--- plugins/battery/plugin/battery-plugin.cpp 2014-07-23 13:37:06 +0000
+++ plugins/battery/plugin/battery-plugin.cpp 2014-11-07 22:38:03 +0000
@@ -49,10 +49,13 @@
49{49{
50 BatteryItem *item (static_cast<BatteryItem *> (user_data));50 BatteryItem *item (static_cast<BatteryItem *> (user_data));
5151
52#if !UP_CHECK_VERSION(0, 99, 0)
52 gboolean ret = up_client_enumerate_devices_sync (client, nullptr, nullptr);53 gboolean ret = up_client_enumerate_devices_sync (client, nullptr, nullptr);
53 if (!ret) {54 if (!ret) {
54 item->setVisibility (false);55 item->setVisibility (false);
55 } else {56 } else
57#endif
58 {
56 GPtrArray *devices = up_client_get_devices (client);59 GPtrArray *devices = up_client_get_devices (client);
57 item->setVisibility (devices->len > 0);60 item->setVisibility (devices->len > 0);
58 g_ptr_array_unref (devices);61 g_ptr_array_unref (devices);
5962
=== modified file 'plugins/bluetooth/PageComponent.qml'
--- plugins/bluetooth/PageComponent.qml 2014-09-23 19:32:29 +0000
+++ plugins/bluetooth/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -147,17 +147,11 @@
147 text: i18n.tr("Bluetooth")147 text: i18n.tr("Bluetooth")
148 control: Switch {148 control: Switch {
149 id: btSwitch149 id: btSwitch
150 // Cannot use onCheckedChanged as this triggers a loop150 property bool serverChecked: bluetoothActionGroup.enabled.state
151 onClicked: bluetoothActionGroup.enabled.activate()151 onServerCheckedChanged: checked = serverChecked
152 checked: backend.powered152 Component.onCompleted: checked = serverChecked
153 onTriggered: bluetoothActionGroup.enabled.activate()
153 }154 }
154 Component.onCompleted: clicked.connect(btSwitch.clicked)
155 }
156
157 Binding {
158 target: btSwitch
159 property: "checked"
160 value: bluetoothActionGroup.enabled.state
161 }155 }
162156
163 // Discoverability157 // Discoverability
@@ -246,7 +240,7 @@
246240
247 // Disconnnected Headset(s)241 // Disconnnected Headset(s)
248242
249 ListItem.Standard {243 SettingsItemTitle {
250 id: disconnectedHeader244 id: disconnectedHeader
251 text: connectedList.visible ? i18n.tr("Connect another device:") : i18n.tr("Connect a device:")245 text: connectedList.visible ? i18n.tr("Connect another device:") : i18n.tr("Connect a device:")
252 enabled: bluetoothActionGroup.enabled246 enabled: bluetoothActionGroup.enabled
@@ -288,7 +282,7 @@
288 }282 }
289283
290 // Devices that connect automatically284 // Devices that connect automatically
291 ListItem.Standard {285 SettingsItemTitle {
292 id: autoconnectHeader286 id: autoconnectHeader
293 text: i18n.tr("Connect automatically when detected:")287 text: i18n.tr("Connect automatically when detected:")
294 visible: autoconnectList.visible288 visible: autoconnectList.visible
@@ -323,7 +317,11 @@
323317
324 Page {318 Page {
325 id: connectedDevicePage319 id: connectedDevicePage
326 title: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None")320 title: backend.selectedDevice ?
321 backend.selectedDevice.name.length > 0 ?
322 backend.selectedDevice.name :
323 backend.selectedDevice.address
324 : i18n.tr("None")
327 visible: false325 visible: false
328326
329 Flickable {327 Flickable {
@@ -344,7 +342,10 @@
344342
345 ListItem.SingleValue {343 ListItem.SingleValue {
346 text: i18n.tr("Name")344 text: i18n.tr("Name")
347 value: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None")345 value: backend.selectedDevice &&
346 backend.selectedDevice.name.length > 0 ?
347 backend.selectedDevice.name :
348 i18n.tr("None")
348 }349 }
349 ListItem.Standard {350 ListItem.Standard {
350 Rectangle {351 Rectangle {
@@ -396,15 +397,15 @@
396 id: trustedCheck397 id: trustedCheck
397 text: i18n.tr("Connect automatically when detected:")398 text: i18n.tr("Connect automatically when detected:")
398 control: CheckBox {399 control: CheckBox {
399 onClicked: {400 property bool serverChecked: backend.selectedDevice ? backend.selectedDevice.trusted : false
401 onServerCheckedChanged: checked = serverChecked
402 Component.onCompleted: checked = serverChecked
403 onTriggered: {
400 if (backend.selectedDevice) {404 if (backend.selectedDevice) {
401 backend.selectedDevice.trusted = !backend.selectedDevice.trusted405 backend.selectedDevice.trusted = checked;
402 }406 }
403 }407 }
404 checked: backend.selectedDevice ? backend.selectedDevice.trusted : false
405 }408 }
406 Component.onCompleted:
407 clicked.connect(trustedCheck.clicked)
408 }409 }
409 ListItem.SingleControl {410 ListItem.SingleControl {
410 control: Button {411 control: Button {
411412
=== modified file 'plugins/bluetooth/devicemodel.cpp'
--- plugins/bluetooth/devicemodel.cpp 2014-09-16 19:41:44 +0000
+++ plugins/bluetooth/devicemodel.cpp 2014-11-07 22:38:03 +0000
@@ -382,6 +382,8 @@
382 if (device->isValid()) {382 if (device->isValid()) {
383 addDevice(device);383 addDevice(device);
384 }384 }
385 } else {
386 device->setProperties(properties);
385 }387 }
386}388}
387389
388390
=== removed file 'plugins/brightness/BrightnessSlider.qml'
--- plugins/brightness/BrightnessSlider.qml 2014-08-11 16:13:17 +0000
+++ plugins/brightness/BrightnessSlider.qml 1970-01-01 00:00:00 +0000
@@ -1,103 +0,0 @@
1/*
2 * This file is part of system-settings
3 *
4 * Copyright (C) 2013-14 Canonical Ltd.
5 *
6 * Contact: Iain Lane <iain.lane@canonical.com>
7 *
8 * This program is free software: you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License version 3, as published
10 * by the Free Software Foundation.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranties of
14 * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License along
18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21import Ubuntu.Components 0.1
22import Ubuntu.Components.ListItems 0.1 as ListItem
23import QtQuick 2.0
24import QMenuModel 0.1
25
26Column {
27 signal pressed
28 readonly property bool pressed: sliderId.pressed
29
30 anchors {
31 left: parent.left
32 right: parent.right
33 }
34
35 QDBusActionGroup {
36 id: indicatorPower
37 busType: 1
38 busName: "com.canonical.indicator.power"
39 objectPath: "/com/canonical/indicator/power"
40
41 property variant brightness: action("brightness").state
42 onBrightnessChanged: {
43 sliderId.enabled = brightness != null
44 sliderId.value = sliderId.enabled ? brightness * 100 : 0.0
45 }
46 }
47
48 Component.onCompleted: indicatorPower.start()
49
50 ListItem.Standard {
51 text: i18n.tr("Display brightness")
52 showDivider: false
53 }
54
55 ListItem.Base {
56
57 Icon {
58 id: iconLeft
59 anchors.verticalCenter: parent.verticalCenter
60 height: sliderId.height - units.gu(1)
61 name: "torch-off"
62 width: height
63
64 MouseArea {
65 anchors.fill: parent
66 onClicked: sliderId.value = 0.0
67 }
68 }
69 Slider {
70 id: sliderId
71 function formatValue(v) {
72 return "%1%".arg(v.toFixed(0))
73 }
74
75 anchors {
76 left: iconLeft.right
77 right: iconRight.left
78 leftMargin: units.gu(1)
79 rightMargin: units.gu(1)
80 verticalCenter: parent.verticalCenter
81 }
82 height: parent.height - units.gu(2)
83 minimumValue: 0.0
84 maximumValue: 100.0
85 live: true
86
87 onValueChanged: indicatorPower.action('brightness').updateState(value / 100.0)
88 }
89 Icon {
90 id: iconRight
91 anchors.right: parent.right
92 anchors.verticalCenter: parent.verticalCenter
93 height: sliderId.height - units.gu(1)
94 name: "torch-on"
95 width: height
96
97 MouseArea {
98 anchors.fill: parent
99 onClicked: sliderId.value = 100.0
100 }
101 }
102 }
103}
1040
=== modified file 'plugins/brightness/CMakeLists.txt'
--- plugins/brightness/CMakeLists.txt 2014-08-11 16:13:17 +0000
+++ plugins/brightness/CMakeLists.txt 2014-11-07 22:38:03 +0000
@@ -1,7 +1,6 @@
1add_subdirectory(plugin)1add_subdirectory(plugin)
22
3set(QML_SOURCES3set(QML_SOURCES
4 BrightnessSlider.qml
5 PageComponent.qml4 PageComponent.qml
6)5)
76
87
=== modified file 'plugins/brightness/PageComponent.qml'
--- plugins/brightness/PageComponent.qml 2014-08-12 13:32:30 +0000
+++ plugins/brightness/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -24,6 +24,8 @@
24import Ubuntu.Components 0.124import Ubuntu.Components 0.1
25import Ubuntu.Components.ListItems 0.1 as ListItem25import Ubuntu.Components.ListItems 0.1 as ListItem
26import Ubuntu.SystemSettings.Brightness 1.026import Ubuntu.SystemSettings.Brightness 1.0
27import Ubuntu.Settings.Menus 0.1 as Menus
28import QMenuModel 0.1
2729
28ItemPage {30ItemPage {
29 id: root31 id: root
@@ -39,12 +41,41 @@
39 anchors.left: parent.left41 anchors.left: parent.left
40 anchors.right: parent.right42 anchors.right: parent.right
4143
42 BrightnessSlider {}44 QDBusActionGroup {
45 id: indicatorPower
46 busType: 1
47 busName: "com.canonical.indicator.power"
48 objectPath: "/com/canonical/indicator/power"
49
50 property variant brightness: action("brightness")
51
52 Component.onCompleted: start()
53 }
4354
44 Binding {55 Binding {
45 target: autoAdjustCheck56 target: sliderMenu
46 property: "checked"57 property: "value"
47 value: adjust.visible && gsettings.autoBrightness58 value: sliderMenu.enabled ? indicatorPower.action("brightness").state * 100 : 0.0
59 }
60
61 ListItem.Standard {
62 text: i18n.tr("Display brightness")
63 showDivider: false
64 }
65
66 /* Use the SliderMenu component instead of the Slider to avoid binding
67 issues on valueChanged until LP: #1388094 is fixed.
68 */
69 Menus.SliderMenu {
70 id: sliderMenu
71 objectName: "sliderMenu"
72 enabled: indicatorPower.action("brightness").state != null
73 live: true
74 minimumValue: 0.0
75 maximumValue: 100.0
76 minIcon: "image://theme/display-brightness-min"
77 maxIcon: "image://theme/display-brightness-max"
78 onUpdated: indicatorPower.action("brightness").updateState(value / 100.0)
48 }79 }
4980
50 ListItem.Standard {81 ListItem.Standard {
@@ -54,10 +85,11 @@
54 brightnessPanel.autoBrightnessAvailable85 brightnessPanel.autoBrightnessAvailable
55 control: CheckBox {86 control: CheckBox {
56 id: autoAdjustCheck87 id: autoAdjustCheck
57 checked: gsettings.autoBrightness88 property bool serverChecked: gsettings.autoBrightness
58 onClicked: gsettings.autoBrightness = checked89 onServerCheckedChanged: checked = serverChecked
90 Component.onCompleted: checked = serverChecked
91 onTriggered: gsettings.autoBrightness = checked
59 }92 }
60 Component.onCompleted: clicked.connect(autoAdjustCheck.clicked)
61 showDivider: false93 showDivider: false
62 }94 }
63 ListItem.Caption {95 ListItem.Caption {
6496
=== modified file 'plugins/cellular/Components/CMakeLists.txt'
--- plugins/cellular/Components/CMakeLists.txt 2014-08-29 14:32:28 +0000
+++ plugins/cellular/Components/CMakeLists.txt 2014-11-07 22:38:03 +0000
@@ -1,12 +1,12 @@
1set(QML_SOURCES1set(QML_SOURCES
2 DataMultiSim.qml
3 DefaultSim.qml
4 MultiSim.qml
2 NoSim.qml5 NoSim.qml
3 SingleSim.qml6 RadioSingleSim.qml
4 MultiSim.qml
5 CellularSingleSim.qml
6 CellularMultiSim.qml
7 DefaultSim.qml
8 Sim.qml7 Sim.qml
9 SimEditor.qml8 SimEditor.qml
9 SingleSim.qml
10)10)
11install(FILES ${QML_SOURCES} DESTINATION ${PLUGIN_QML_DIR}/cellular/Components)11install(FILES ${QML_SOURCES} DESTINATION ${PLUGIN_QML_DIR}/cellular/Components)
1212
1313
=== removed file 'plugins/cellular/Components/CellularSingleSim.qml'
--- plugins/cellular/Components/CellularSingleSim.qml 2014-08-21 20:25:08 +0000
+++ plugins/cellular/Components/CellularSingleSim.qml 1970-01-01 00:00:00 +0000
@@ -1,115 +0,0 @@
1/*
2 * Copyright (C) 2014 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authors:
17 * Jonas G. Drange <jonas.drange@canonical.com>
18 *
19*/
20import QtQuick 2.0
21import Ubuntu.Components 0.1
22import Ubuntu.Components.ListItems 0.1 as ListItem
23
24Column {
25 height: childrenRect.height
26
27 property var selector: selector
28
29 ListItem.ItemSelector {
30 id: selector
31 objectName: "technologyPreferenceSelector"
32 text: i18n.tr("Cellular data:")
33 expanded: true
34
35 // an empty string is not a valid preference, which means
36 // we disregard the interace and disable the selector
37 enabled: sim.radioSettings.technologyPreference !== ""
38
39 // model for this selector is modemTechnologies, with
40 // 'off' prepended
41 model: {
42 var m = sim.radioSettings.modemTechnologies.slice(0);
43 m.unshift("off");
44 return m;
45 }
46
47 delegate: OptionSelectorDelegate {
48 text: {
49 return {
50 'off': i18n.tr("Off"),
51 'gsm': i18n.tr("2G only (saves battery)"),
52 'umts': i18n.tr("2G/3G (faster)"),
53 'lte': i18n.tr("2G/3G/4G (faster)")
54 }[modelData]
55 }
56 }
57 selectedIndex: {
58 if (sim.connMan.powered) {
59 // will return -1 if empty, which will select nothing.
60 // Makes sense, since the SIM is online, but the
61 // radioSettings interface is not ready yet (sim locked?)
62 return model.indexOf(sim.radioSettings.technologyPreference);
63 } else {
64 return 0;
65 }
66 }
67 }
68
69 ListItem.Standard {
70 id: dataRoamingItem
71 objectName: "dataRoamingSwitch"
72 text: i18n.tr("Data roaming")
73 enabled: sim.connMan.powered
74 control: Switch {
75 id: dataRoamingControl
76 checked: sim.connMan.roamingAllowed
77 onClicked: sim.connMan.roamingAllowed = checked
78 }
79 }
80
81 Connections {
82 target: sim.connMan
83 onPoweredChanged: {
84 if (powered) {
85 // restore the tech preference
86 selector.selectedIndex = selector
87 .model.indexOf(sim.radioSettings.technologyPreference)
88 } else {
89 selector.selectedIndex = 0;
90 }
91 }
92 }
93
94 // binds the SIM online state to the UI
95 Binding {
96 target: sim.connMan
97 property: "powered"
98 value: selector.selectedIndex !== 0
99 }
100
101 // binds the tech preference to the UI
102 Binding {
103 target: sim.radioSettings
104 property: "technologyPreference"
105 value: {
106 var i = selector.selectedIndex;
107 if (i > 0) {
108 return selector.model[i]
109 } else {
110 // if the modem is off, disregard the selector
111 return sim.radioSettings.technologyPreference;
112 }
113 }
114 }
115}
1160
=== renamed file 'plugins/cellular/Components/CellularMultiSim.qml' => 'plugins/cellular/Components/DataMultiSim.qml'
--- plugins/cellular/Components/CellularMultiSim.qml 2014-10-07 15:41:44 +0000
+++ plugins/cellular/Components/DataMultiSim.qml 2014-11-07 22:38:03 +0000
@@ -22,8 +22,6 @@
22import Ubuntu.Components.ListItems 0.1 as ListItem22import Ubuntu.Components.ListItems 0.1 as ListItem
2323
24Column {24Column {
25 id: root
26 property var selector: selector
2725
28 function getNameFromIndex (index) {26 function getNameFromIndex (index) {
29 if (index === 0) {27 if (index === 0) {
@@ -33,49 +31,11 @@
33 }31 }
34 }32 }
3533
36 function getOnlineSim () {
37 if (state === "sim1Online") {
38 return sims[0];
39 } else if (state === "sim2Online") {
40 return sims[1];
41 } else {
42 return null;
43 }
44 }
45
46 height: childrenRect.height34 height: childrenRect.height
4735
48 states: [
49 State {
50 name: "sim1Online"
51 when: sims[0].connMan.powered && !sims[1].connMan.powered
52 StateChangeScript { script: {
53 selector.selectedIndex =
54 selector.model.indexOf(
55 sims[0].radioSettings.technologyPreference)
56 }}
57 },
58 State {
59 name: "sim2Online"
60 when: sims[1].connMan.powered && !sims[0].connMan.powered
61 StateChangeScript { script: {
62 selector.selectedIndex =
63 selector.model.indexOf(
64 sims[1].radioSettings.technologyPreference)
65 }}
66 },
67 State {
68 name: "bothOnline"
69 when: sims[0].connMan.powered && sims[1].connMan.powered
70 StateChangeScript { script: {
71 sims[1].connMan.powered = false;
72 }}
73 }
74 ]
75
76 ListItem.ItemSelector {36 ListItem.ItemSelector {
77 id: use37 id: use
78 objectName: "use"38 objectName: "data"
79 text: i18n.tr("Cellular data:")39 text: i18n.tr("Cellular data:")
80 expanded: true40 expanded: true
81 model: {41 model: {
@@ -92,6 +52,7 @@
92 }52 }
93 selectedIndex: [true, sims[0].connMan.powered, sims[1].connMan.powered]53 selectedIndex: [true, sims[0].connMan.powered, sims[1].connMan.powered]
94 .lastIndexOf(true)54 .lastIndexOf(true)
55
95 onDelegateClicked: {56 onDelegateClicked: {
96 // power all sims on or off57 // power all sims on or off
97 sims.forEach(function (sim) {58 sims.forEach(function (sim) {
@@ -100,95 +61,23 @@
100 }61 }
101 }62 }
10263
103 Connections {
104 target: sims[0].connMan
105 onPoweredChanged: {
106 if (powered) {
107 use.selectedIndex = 1;
108 }
109 }
110 }
111
112 Connections {
113 target: sims[1].connMan
114 onPoweredChanged: {
115 if (powered) {
116 use.selectedIndex = 2;
117 }
118 }
119 }
120
121 ListItem.ItemSelector {
122 id: selector
123 objectName: "technologyPreferenceSelector"
124 expanded: true
125 model: {
126 var sim = getOnlineSim();
127 if (sim) {
128 return sim.radioSettings.modemTechnologies;
129 } else {
130 return [];
131 }
132 }
133 delegate: OptionSelectorDelegate {
134 text: {
135 return {
136 'gsm': i18n.tr("2G only (saves battery)"),
137 'umts': i18n.tr("2G/3G (faster)"),
138 'lte': i18n.tr("2G/3G/4G (faster)")
139 }[modelData]
140 }
141 }
142 visible: use.selectedIndex !== 0
143 onDelegateClicked: {
144 var sim = getOnlineSim();
145 if (sim) {
146 sim.radioSettings.technologyPreference = model[index];
147 }
148 }
149 }
150
151 Binding {
152 target: selector
153 property: "enabled"
154 value: getOnlineSim() &&
155 (getOnlineSim().radioSettings.technologyPreference !== "")
156 when: getOnlineSim()
157 }
158
159 Connections {
160 target: sims[0].radioSettings
161 onTechnologyPreferenceChanged: {
162 if (sims[0].connMan.powered) {
163 selector.selectedIndex = selector.model.indexOf(preference);
164 }
165 }
166 }
167
168 Connections {
169 target: sims[1].radioSettings
170 onTechnologyPreferenceChanged: {
171 if (sims[1].connMan.powered) {
172 selector.selectedIndex = selector.model.indexOf(preference);
173 }
174 }
175 }
176
177 ListItem.Standard {64 ListItem.Standard {
178 id: dataRoamingItem65 id: dataRoamingItem
179 objectName: "dataRoamingSwitch"
180 text: i18n.tr("Data roaming")66 text: i18n.tr("Data roaming")
181 enabled: use.selectedIndex !== 067 enabled: use.selectedIndex !== 0
182 control: Switch {68 control: Switch {
183 id: dataRoamingControl69 id: dataRoamingControl
184 onClicked: getOnlineSim().connMan.roamingAllowed = checked70 objectName: "roaming"
71
72 property bool serverChecked: poweredSim && poweredSim.connMan.roamingAllowed
73 onServerCheckedChanged: checked = serverChecked
74 Component.onCompleted: checked = serverChecked
75 onTriggered: {
76 if (poweredSim) {
77 poweredSim.connMan.roamingAllowed = checked;
78 }
79 }
185 }80 }
186 }81 showDivider: false
187
188 Binding {
189 target: dataRoamingControl
190 property: "checked"
191 value: getOnlineSim() && getOnlineSim().connMan.roamingAllowed
192 when: getOnlineSim()
193 }82 }
194}83}
19584
=== modified file 'plugins/cellular/Components/MultiSim.qml'
--- plugins/cellular/Components/MultiSim.qml 2014-10-06 19:38:06 +0000
+++ plugins/cellular/Components/MultiSim.qml 2014-11-07 22:38:03 +0000
@@ -23,21 +23,26 @@
23import Ubuntu.Components.ListItems 0.1 as ListItem23import Ubuntu.Components.ListItems 0.1 as ListItem
2424
25Column {25Column {
26
27 objectName: "multiSim"26 objectName: "multiSim"
2827
29 property var sims28 property var sims
29 property var poweredSim: {
30 var s = null;
31 sims.forEach(function (sim) {
32 if (sim.connMan.powered === true) {
33 s = sim;
34 }
35 });
36 return s;
37 }
30 property var modems38 property var modems
31
32 // make settings available to all children of root39 // make settings available to all children of root
33 property var settings: phoneSettings40 property var settings: phoneSettings
3441
35 CellularMultiSim {42 DataMultiSim {
36 anchors { left: parent.left; right: parent.right }43 anchors { left: parent.left; right: parent.right }
37 }44 }
3845
39 ListItem.Divider {}
40
41 ListItem.SingleValue {46 ListItem.SingleValue {
42 text : i18n.tr("Hotspot disabled because Wi-Fi is off.")47 text : i18n.tr("Hotspot disabled because Wi-Fi is off.")
43 visible: showAllUI && !hotspotItem.visible48 visible: showAllUI && !hotspotItem.visible
@@ -60,15 +65,14 @@
60 visible: showAllUI65 visible: showAllUI
61 }66 }
6267
63 ListItem.Divider {68 ListItem.Divider {}
64 visible: hotspotItem.visible || dataUsage.visible
65 }
6669
67 ListItem.SingleValue {70 ListItem.SingleValue {
68 text: i18n.tr("Carriers")71 text: i18n.tr("Carriers")
69 id: chooseCarrier72 id: chooseCarrier
70 objectName: "chooseCarrier"73 objectName: "carriers"
71 progression: enabled74 progression: enabled
75 showDivider: false
72 onClicked: {76 onClicked: {
73 pageStack.push(Qt.resolvedUrl("../PageChooseCarriers.qml"), {77 pageStack.push(Qt.resolvedUrl("../PageChooseCarriers.qml"), {
74 sims: sims78 sims: sims
@@ -88,6 +92,44 @@
88 anchors { left: parent.left; right: parent.right }92 anchors { left: parent.left; right: parent.right }
89 }93 }
9094
95 ListItem.Divider {}
96
97 function techToString (tech) {
98 return {
99 'gsm': i18n.tr("2G only (saves battery)"),
100 'umts': i18n.tr("2G/3G (faster)"),
101 'lte': i18n.tr("2G/3G/4G (faster)")
102 }[tech]
103 }
104
105 ListItem.ItemSelector {
106 id: radio
107 expanded: true
108 text: i18n.tr("Connection type:")
109 model: poweredSim ? poweredSim.radioSettings.modemTechnologies : []
110 delegate: OptionSelectorDelegate {
111 objectName: poweredSim.path + "_radio_" + modelData
112 text: techToString(modelData)
113 }
114 enabled: poweredSim ?
115 (poweredSim.radioSettings.technologyPreference !== "") : false
116 visible: poweredSim
117 selectedIndex: poweredSim ?
118 model.indexOf(poweredSim.radioSettings.technologyPreference) : -1
119 onDelegateClicked: {
120 poweredSim.radioSettings.technologyPreference = model[index];
121 }
122 }
123
124 Connections {
125 target: poweredSim ? poweredSim.radioSettings : null
126 onTechnologyPreferenceChanged: {
127 radio.selectedIndex =
128 poweredSim.radioSettings.modemTechnologies.indexOf(preference)
129 }
130 ignoreUnknownSignals: true
131 }
132
91 GSettings {133 GSettings {
92 id: phoneSettings134 id: phoneSettings
93 schema.id: "com.ubuntu.phone"135 schema.id: "com.ubuntu.phone"
94136
=== modified file 'plugins/cellular/Components/NoSim.qml'
--- plugins/cellular/Components/NoSim.qml 2014-08-19 10:58:01 +0000
+++ plugins/cellular/Components/NoSim.qml 2014-11-07 22:38:03 +0000
@@ -25,27 +25,20 @@
2525
26 objectName: "noSim"26 objectName: "noSim"
2727
28 ListItem.ItemSelector {28 ListItem.Standard {
29 text: i18n.tr("Cellular data:")29 text: i18n.tr("Cellular data:")
30 expanded: true
31 enabled: false30 enabled: false
32 model: [i18n.tr("Off"), i18n.tr("2G only (saves battery)"), i18n.tr("2G/3G/4G (faster)")]31 control: Switch {
33 selectedIndex: -132 checked: false
33 }
34 }34 }
3535
36 ListItem.Standard {36 ListItem.Standard {
37 text: i18n.tr("Data roaming")37 text: i18n.tr("Data roaming")
38 enabled: false38 enabled: false
39 showDivider: false
39 control: Switch {40 control: Switch {
40 checked: false41 checked: false
41 }42 }
42 }43 }
43
44 ListItem.Divider {}
45
46 ListItem.SingleValue {
47 text: i18n.tr("Carrier");
48 value: i18n.tr("N/A")
49 enabled: false
50 }
51}44}
5245
=== added file 'plugins/cellular/Components/RadioSingleSim.qml'
--- plugins/cellular/Components/RadioSingleSim.qml 1970-01-01 00:00:00 +0000
+++ plugins/cellular/Components/RadioSingleSim.qml 2014-11-07 22:38:03 +0000
@@ -0,0 +1,57 @@
1/*
2 * Copyright (C) 2014 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authors:
17 * Jonas G. Drange <jonas.drange@canonical.com>
18 *
19*/
20import QtQuick 2.0
21import Ubuntu.Components 0.1
22import Ubuntu.Components.ListItems 0.1 as ListItem
23
24Column {
25 height: childrenRect.height
26
27 property alias selector: selector
28
29 ListItem.ItemSelector {
30 id: selector
31 text: i18n.tr("Connection type:")
32 showDivider: false
33 expanded: true
34
35 // an empty string is not a valid preference, which means
36 // we disregard the interace and disable the selector
37 enabled: sim.radioSettings.technologyPreference !== ""
38 model: sim.radioSettings.modemTechnologies
39
40 delegate: OptionSelectorDelegate {
41 objectName: sim.path + "_radio_" + modelData
42 text: {
43 return {
44 'gsm': i18n.tr("2G only (saves battery)"),
45 'umts': i18n.tr("2G/3G (faster)"),
46 'lte': i18n.tr("2G/3G/4G (faster)")
47 }[modelData]
48 }
49 showDivider: false
50 }
51 selectedIndex: model.indexOf(sim.radioSettings.technologyPreference)
52 onDelegateClicked: {
53 sim.radioSettings.technologyPreference = model[index];
54 }
55 }
56
57}
058
=== modified file 'plugins/cellular/Components/SimEditor.qml'
--- plugins/cellular/Components/SimEditor.qml 2014-08-20 13:48:58 +0000
+++ plugins/cellular/Components/SimEditor.qml 2014-11-07 22:38:03 +0000
@@ -22,15 +22,9 @@
22import Ubuntu.Components.ListItems 0.1 as ListItem22import Ubuntu.Components.ListItems 0.1 as ListItem
2323
24Column {24Column {
25
26 id: simList25 id: simList
27 objectName: "simEditor"26 objectName: "simEditor"
2827
29 anchors {
30 left: parent.left
31 right: parent.right
32 }
33
34 states: [28 states: [
35 State {29 State {
36 name: "editing"30 name: "editing"
@@ -73,7 +67,25 @@
73 }67 }
74 ]68 ]
7569
70 NumberAnimation {
71 id: scrollerAnimation
72 duration: UbuntuAnimation.SnapDuration
73 easing: UbuntuAnimation.StandardEasing
74 target: root.flickable
75 property: "contentY"
76 }
77
78 function openedEditor () {
79 var flickable = scrollerAnimation.target;
80 var maxFlick = Math.max(0, flickable.contentHeight - root.height);
81 scrollerAnimation.from = flickable.contentY;
82 scrollerAnimation.to = Math.min(y, maxFlick) - units.gu(9); // header
83 scrollerAnimation.start();
84 nameField.forceActiveFocus();
85 }
86
76 ListItem.Standard {87 ListItem.Standard {
88 id: std
77 text: i18n.tr("Edit SIM Name")89 text: i18n.tr("Edit SIM Name")
78 }90 }
7991
@@ -83,12 +95,14 @@
83 right: parent.right95 right: parent.right
84 }96 }
85 height: expandedItem ?97 height: expandedItem ?
86 childrenRect.height + editor.height : childrenRect.height98 expandedItem.expandedHeight : childrenRect.height
99
100 boundsBehavior: Flickable.StopAtBounds
87101
88 ListItem.Expandable {102 ListItem.Expandable {
89 id: sim1Exp103 id: sim1Exp
90 expandedHeight: sim1Col.height104 expandedHeight: sim1Col.height
91 objectName: "editSim1"105 objectName: "edit_name_" + sims[0].path
92 Column {106 Column {
93 id: sim1Col107 id: sim1Col
94 anchors {108 anchors {
@@ -102,7 +116,7 @@
102 }116 }
103 height: sim1Exp.collapsedHeight117 height: sim1Exp.collapsedHeight
104 Label {118 Label {
105 objectName: "simLabel1"119 objectName: "label_" + sims[0].path
106 anchors {120 anchors {
107 left: parent.left121 left: parent.left
108 right: parent.right122 right: parent.right
@@ -117,14 +131,15 @@
117 }131 }
118 onClicked: {132 onClicked: {
119 simList.state = "editingSim1";133 simList.state = "editingSim1";
120 nameField.forceActiveFocus();134 simList.openedEditor();
121 }135 }
122 }136 }
123137
124 ListItem.Expandable {138 ListItem.Expandable {
125 id: sim2Exp139 id: sim2Exp
126 expandedHeight: sim2Col.height140 expandedHeight: sim2Col.height
127 objectName: "editSim2"141 objectName: "edit_name_" + sims[1].path
142 showDivider: false
128 Column {143 Column {
129 id: sim2Col144 id: sim2Col
130 anchors {145 anchors {
@@ -138,7 +153,7 @@
138 }153 }
139 height: sim2Exp.collapsedHeight154 height: sim2Exp.collapsedHeight
140 Label {155 Label {
141 objectName: "simLabel2"156 objectName: "label_" + sims[1].path
142 anchors {157 anchors {
143 left: parent.left158 left: parent.left
144 right: parent.right159 right: parent.right
@@ -153,7 +168,7 @@
153 }168 }
154 onClicked: {169 onClicked: {
155 simList.state = "editingSim2";170 simList.state = "editingSim2";
156 nameField.forceActiveFocus();171 simList.openedEditor();
157 }172 }
158 }173 }
159 }174 }
@@ -182,6 +197,8 @@
182197
183 spacing: units.gu(2)198 spacing: units.gu(2)
184199
200 height: cancel.height + rename.height
201
185 Button {202 Button {
186 id: cancel203 id: cancel
187 objectName: "cancelRename"204 objectName: "cancelRename"
@@ -204,7 +221,7 @@
204 }221 }
205222
206 Item {223 Item {
207 height: units.gu(1)224 height: units.gu(2)
208 width: parent.width225 width: parent.width
209 }226 }
210227
211228
=== modified file 'plugins/cellular/Components/SingleSim.qml'
--- plugins/cellular/Components/SingleSim.qml 2014-10-02 09:50:11 +0000
+++ plugins/cellular/Components/SingleSim.qml 2014-11-07 22:38:03 +0000
@@ -27,11 +27,35 @@
2727
28 property var sim28 property var sim
2929
30 CellularSingleSim {30 ListItem.Standard {
31 anchors { left: parent.left; right: parent.right }31 id: selector
32 }32 text: i18n.tr("Cellular data:")
3333 control: Switch {
34 ListItem.Divider {}34 id: dataControl
35 objectName: 'data'
36
37 property bool serverChecked: sim.connMan.powered
38 onServerCheckedChanged: checked = serverChecked
39 Component.onCompleted: checked = serverChecked
40 onTriggered: sim.connMan.powered = checked
41 }
42 }
43
44 ListItem.Standard {
45 id: dataRoamingItem
46 text: i18n.tr("Data roaming")
47 enabled: sim.connMan.powered
48 showDivider: false
49 control: Switch {
50 id: dataRoamingControl
51 objectName: "roaming"
52
53 property bool serverChecked: sim.connMan.roamingAllowed
54 onServerCheckedChanged: checked = serverChecked
55 Component.onCompleted: checked = serverChecked
56 onTriggered: sim.connMan.roamingAllowed = checked
57 }
58 }
3559
36 ListItem.SingleValue {60 ListItem.SingleValue {
37 text : i18n.tr("Hotspot disabled because Wi-Fi is off.")61 text : i18n.tr("Hotspot disabled because Wi-Fi is off.")
@@ -54,10 +78,22 @@
54 visible: showAllUI78 visible: showAllUI
55 }79 }
5680
81 ListItem.Divider {
82 visible: radio.selector.model.length
83 }
84
85 RadioSingleSim {
86 id: radio
87 anchors { left: parent.left; right: parent.right }
88 visible: radio.selector.model.length
89 }
90
91 ListItem.Divider {}
92
57 ListItem.SingleValue {93 ListItem.SingleValue {
58 text: i18n.tr("Carrier");94 text: i18n.tr("Carrier");
59 id: chooseCarrier95 id: chooseCarrier
60 objectName: "chooseCarrier"96 objectName: "carrier"
61 progression: enabled97 progression: enabled
62 value: sim.netReg.name || i18n.tr("N/A")98 value: sim.netReg.name || i18n.tr("N/A")
63 enabled: sim.netReg.status !== ""99 enabled: sim.netReg.status !== ""
64100
=== modified file 'plugins/cellular/CustomApnEditor.qml'
--- plugins/cellular/CustomApnEditor.qml 2014-10-06 14:28:46 +0000
+++ plugins/cellular/CustomApnEditor.qml 2014-11-07 22:38:03 +0000
@@ -198,7 +198,7 @@
198 inputMethodHints: Qt.ImhUrlCharactersOnly | Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText198 inputMethodHints: Qt.ImhUrlCharactersOnly | Qt.ImhNoAutoUppercase | Qt.ImhNoPredictiveText
199 }199 }
200 Label {200 Label {
201 text: "Port"201 text: i18n.tr("Port")
202 visible: d.isMms202 visible: d.isMms
203 }203 }
204 TextField {204 TextField {
205205
=== modified file 'plugins/cellular/PageChooseCarrier.qml'
--- plugins/cellular/PageChooseCarrier.qml 2014-10-06 12:56:18 +0000
+++ plugins/cellular/PageChooseCarrier.qml 2014-11-07 22:38:03 +0000
@@ -149,7 +149,7 @@
149149
150 ListItem.ItemSelector {150 ListItem.ItemSelector {
151 id: chooseCarrier151 id: chooseCarrier
152 objectName: "autoChooseCarrierSelector"152 objectName: "mode"
153 expanded: true153 expanded: true
154 enabled: sim.netReg.mode !== "auto-only"154 enabled: sim.netReg.mode !== "auto-only"
155 text: i18n.tr("Choose carrier:")155 text: i18n.tr("Choose carrier:")
@@ -171,6 +171,7 @@
171 }171 }
172 }172 }
173 }173 }
174
174 ListItem.SingleControl {175 ListItem.SingleControl {
175 enabled: chooseCarrier.selectedIndex === 1176 enabled: chooseCarrier.selectedIndex === 1
176 anchors {177 anchors {
@@ -198,7 +199,7 @@
198 }199 }
199 ListItem.ItemSelector {200 ListItem.ItemSelector {
200 id: carrierSelector201 id: carrierSelector
201 objectName: "carrierSelector"202 objectName: "carriers"
202 expanded: true203 expanded: true
203 enabled: sim.netReg.status !== "searching" && chooseCarrier.selectedIndex === 1204 enabled: sim.netReg.status !== "searching" && chooseCarrier.selectedIndex === 1
204 // work around ItemSelector not having a visual change depending on being disabled205 // work around ItemSelector not having a visual change depending on being disabled
205206
=== modified file 'plugins/cellular/PageChooseCarriers.qml'
--- plugins/cellular/PageChooseCarriers.qml 2014-10-06 19:38:06 +0000
+++ plugins/cellular/PageChooseCarriers.qml 2014-11-07 22:38:03 +0000
@@ -44,7 +44,7 @@
44 }44 }
4545
46 ListItem.SingleValue {46 ListItem.SingleValue {
47 objectName: "chooseCarrierSim1"47 objectName: sims[0].path + "_carriers"
48 value: sims[0].netReg.name ? sims[0].netReg.name : i18n.tr("N/A")48 value: sims[0].netReg.name ? sims[0].netReg.name : i18n.tr("N/A")
49 enabled: sims[0].netReg.status !== ""49 enabled: sims[0].netReg.status !== ""
50 progression: true50 progression: true
@@ -61,7 +61,7 @@
61 }61 }
6262
63 ListItem.SingleValue {63 ListItem.SingleValue {
64 objectName: "chooseCarrierSim2"64 objectName: sims[1].path + "_carriers"
65 value: sims[1].netReg.name ? sims[1].netReg.name : i18n.tr("N/A")65 value: sims[1].netReg.name ? sims[1].netReg.name : i18n.tr("N/A")
66 enabled: sims[1].netReg.status !== ""66 enabled: sims[1].netReg.status !== ""
67 progression: true67 progression: true
6868
=== modified file 'plugins/cellular/PageComponent.qml'
--- plugins/cellular/PageComponent.qml 2014-10-17 14:57:17 +0000
+++ plugins/cellular/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -94,15 +94,15 @@
94 start()94 start()
95 }95 }
96 }96 }
97
97 Flickable {98 Flickable {
99 id: flick
98 anchors.fill: parent100 anchors.fill: parent
99 contentWidth: parent.width101 contentWidth: parent.width
100 contentHeight: contentItem.childrenRect.height102 contentHeight: contentItem.childrenRect.height
101 boundsBehavior: (contentHeight > root.height) ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds103 boundsBehavior: (contentHeight > root.height) ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
102
103 Column {104 Column {
104 anchors { left: parent.left; right: parent.right }105 anchors { left: parent.left; right: parent.right }
105
106 Loader {106 Loader {
107 id: loader107 id: loader
108 anchors { left: parent.left; right: parent.right }108 anchors { left: parent.left; right: parent.right }
109109
=== modified file 'plugins/cellular/sims.js'
--- plugins/cellular/sims.js 2014-10-03 14:08:08 +0000
+++ plugins/cellular/sims.js 2014-11-07 22:38:03 +0000
@@ -17,6 +17,16 @@
17 return getPresent()[0];17 return getPresent()[0];
18}18}
1919
20function getFirstOnline () {
21 var online = null;
22 getPresent().forEach(function (sim) {
23 if (sim.connMan.powered === true) {
24 online = sim;
25 }
26 });
27 return online;
28}
29
20function getCount () {30function getCount () {
21 return getAll().length;31 return getAll().length;
22}32}
2333
=== modified file 'plugins/flight-mode/EntryComponent.qml'
--- plugins/flight-mode/EntryComponent.qml 2014-06-12 08:19:01 +0000
+++ plugins/flight-mode/EntryComponent.qml 2014-11-07 22:38:03 +0000
@@ -29,13 +29,13 @@
29 iconFrame: false29 iconFrame: false
30 text: i18n.tr(model.displayName)30 text: i18n.tr(model.displayName)
31 control: Switch {31 control: Switch {
32 id: control32 property bool serverChecked: helper.inFlightMode
33 checked: helper.inFlightMode33 onServerCheckedChanged: checked = serverChecked
34 Component.onCompleted: checked = serverChecked
34 onTriggered: helper.setFlightMode(checked)35 onTriggered: helper.setFlightMode(checked)
35 }36 }
3637
37 FlightMode.Helper {38 FlightMode.Helper {
38 id: helper39 id: helper
39 onInFlightModeChanged: control.checked = inFlightMode
40 }40 }
41}41}
4242
=== modified file 'plugins/language/DisplayLanguage.qml'
--- plugins/language/DisplayLanguage.qml 2014-09-03 22:01:57 +0000
+++ plugins/language/DisplayLanguage.qml 2014-11-07 22:38:03 +0000
@@ -73,7 +73,6 @@
7373
74 onCurrentIndexChanged: {74 onCurrentIndexChanged: {
75 i18n.language = plugin.languageCodes[currentIndex]75 i18n.language = plugin.languageCodes[currentIndex]
76 i18n.domain = i18n.domain
77 }76 }
78 }77 }
7978
@@ -107,7 +106,6 @@
107106
108 onClicked: {107 onClicked: {
109 i18n.language = initialLanguage108 i18n.language = initialLanguage
110 i18n.domain = i18n.domain
111 PopupUtils.close(root)109 PopupUtils.close(root)
112 }110 }
113 }111 }
114112
=== modified file 'plugins/language/PageComponent.qml'
--- plugins/language/PageComponent.qml 2014-09-03 14:43:44 +0000
+++ plugins/language/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -71,6 +71,7 @@
71 }71 }
72 onRevert: {72 onRevert: {
73 plugin.currentLanguage = to;73 plugin.currentLanguage = to;
74 i18n.language = plugin.languageCodes[to]
74 }75 }
75 }76 }
76 }77 }
@@ -142,9 +143,10 @@
142 text: i18n.tr("Spell checking")143 text: i18n.tr("Spell checking")
143144
144 control: Switch {145 control: Switch {
145 checked: settings.spellChecking146 property bool serverChecked: settings.spellChecking
146147 onServerCheckedChanged: checked = serverChecked
147 onClicked: settings.spellChecking = checked148 Component.onCompleted: checked = serverChecked
149 onTriggered: settings.spellChecking = checked
148 }150 }
149 }151 }
150152
@@ -152,9 +154,10 @@
152 text: i18n.tr("Auto correction")154 text: i18n.tr("Auto correction")
153155
154 control: Switch {156 control: Switch {
155 checked: settings.autoCompletion157 property bool serverChecked: settings.autoCompletion
156158 onServerCheckedChanged: checked = serverChecked
157 onClicked: settings.autoCompletion = checked159 Component.onCompleted: checked = serverChecked
160 onTriggered: settings.autoCompletion = checked
158 }161 }
159 }162 }
160163
@@ -162,9 +165,10 @@
162 text: i18n.tr("Word suggestions")165 text: i18n.tr("Word suggestions")
163166
164 control: Switch {167 control: Switch {
165 checked: settings.predictiveText168 property bool serverChecked: settings.predictiveText
166169 onServerCheckedChanged: checked = serverChecked
167 onClicked: settings.predictiveText = checked170 Component.onCompleted: checked = serverChecked
171 onTriggered: settings.predictiveText = checked
168 }172 }
169 }173 }
170174
@@ -175,9 +179,10 @@
175 text: i18n.tr("Auto capitalization")179 text: i18n.tr("Auto capitalization")
176180
177 control: Switch {181 control: Switch {
178 checked: settings.autoCapitalization182 property bool serverChecked: settings.autoCapitalization
179183 onServerCheckedChanged: checked = serverChecked
180 onClicked: settings.autoCapitalization = checked184 Component.onCompleted: checked = serverChecked
185 onTriggered: settings.autoCapitalization = checked
181 }186 }
182 }187 }
183188
@@ -192,9 +197,10 @@
192 text: i18n.tr("Auto punctuation")197 text: i18n.tr("Auto punctuation")
193198
194 control: Switch {199 control: Switch {
195 checked: settings.doubleSpaceFullStop200 property bool serverChecked: settings.doubleSpaceFullStop
196201 onServerCheckedChanged: checked = serverChecked
197 onClicked: settings.doubleSpaceFullStop = checked202 Component.onCompleted: checked = serverChecked
203 onTriggered: settings.doubleSpaceFullStop = checked
198 }204 }
199 }205 }
200206
@@ -209,9 +215,10 @@
209 text: i18n.tr("Keyboard sound")215 text: i18n.tr("Keyboard sound")
210216
211 control: Switch {217 control: Switch {
212 checked: settings.keyPressFeedback218 property bool serverChecked: settings.keyPressFeedback
213219 onServerCheckedChanged: checked = serverChecked
214 onClicked: settings.keyPressFeedback = checked220 Component.onCompleted: checked = serverChecked
221 onTriggered: settings.keyPressFeedback = checked
215 }222 }
216 }223 }
217224
@@ -219,9 +226,10 @@
219 text: i18n.tr("Keyboard vibration")226 text: i18n.tr("Keyboard vibration")
220227
221 control: Switch {228 control: Switch {
222 checked: settings.keyPressHapticFeedback229 property bool serverChecked: settings.keyPressHapticFeedback
223230 onServerCheckedChanged: checked = serverChecked
224 onClicked: settings.keyPressHapticFeedback = checked231 Component.onCompleted: checked = serverChecked
232 onTriggered: settings.keyPressHapticFeedback = checked
225 }233 }
226 }234 }
227 }235 }
228236
=== modified file 'plugins/language/SpellChecking.qml'
--- plugins/language/SpellChecking.qml 2014-01-30 11:32:47 +0000
+++ plugins/language/SpellChecking.qml 2014-11-07 22:38:03 +0000
@@ -18,6 +18,8 @@
18 * with this program. If not, see <http://www.gnu.org/licenses/>.18 * with this program. If not, see <http://www.gnu.org/licenses/>.
19 */19 */
2020
21import QtQuick 2.0
22import GSettings 1.0
21import SystemSettings 1.023import SystemSettings 1.0
22import Ubuntu.Components 0.124import Ubuntu.Components 0.1
23import Ubuntu.Components.ListItems 0.1 as ListItem25import Ubuntu.Components.ListItems 0.1 as ListItem
@@ -30,15 +32,22 @@
30 id: plugin32 id: plugin
31 }33 }
3234
35 GSettings {
36 id: settings
37
38 schema.id: "com.canonical.keyboard.maliit"
39 }
40
33 ListItem.Standard {41 ListItem.Standard {
34 id: item42 id: item
3543
36 text: i18n.tr("Spell checking")44 text: i18n.tr("Spell checking")
3745
38 control: Switch {46 control: Switch {
39 checked: plugin.spellChecking47 property bool serverChecked: settings.spellChecking
4048 onServerCheckedChanged: checked = serverChecked
41 onClicked: plugin.spellChecking = checked49 Component.onCompleted: checked = serverChecked
50 onTriggered: settings.spellChecking = checked
42 }51 }
43 }52 }
4453
4554
=== modified file 'plugins/notifications/PageComponent.qml'
--- plugins/notifications/PageComponent.qml 2014-08-29 09:17:39 +0000
+++ plugins/notifications/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -46,6 +46,7 @@
46 margins: units.gu(1)46 margins: units.gu(1)
47 }47 }
48 }48 }
49 highlightWhenPressed: false
49 }50 }
5051
51 ListView {52 ListView {
5253
=== modified file 'plugins/orientation-lock/EntryComponent.qml'
--- plugins/orientation-lock/EntryComponent.qml 2014-09-04 11:47:52 +0000
+++ plugins/orientation-lock/EntryComponent.qml 2014-11-07 22:38:03 +0000
@@ -33,10 +33,12 @@
33 control: Switch {33 control: Switch {
34 id: control34 id: control
35 objectName: "orientationLockSwitch"35 objectName: "orientationLockSwitch"
36 checked: systemSettings.rotationLock36
37 onClicked: {37 property bool serverChecked: systemSettings.rotationLock
38 systemSettings.rotationLock = checked38 onServerCheckedChanged: checked = serverChecked
39 }39 Component.onCompleted: checked = serverChecked
40 onTriggered: systemSettings.rotationLock = checked
41
40 GSettings {42 GSettings {
41 id: systemSettings43 id: systemSettings
42 schema.id: "com.ubuntu.touch.system"44 schema.id: "com.ubuntu.touch.system"
4345
=== modified file 'plugins/phone/PageComponent.qml'
--- plugins/phone/PageComponent.qml 2014-10-03 14:08:08 +0000
+++ plugins/phone/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -104,8 +104,10 @@
104 ListItem.Standard {104 ListItem.Standard {
105 control: Switch {105 control: Switch {
106 objectName: "dialpadSounds"106 objectName: "dialpadSounds"
107 checked: soundPlugin.dialpadSoundsEnabled107 property bool serverChecked: soundPlugin.dialpadSoundsEnabled
108 onCheckedChanged: soundPlugin.dialpadSoundsEnabled = checked108 onServerCheckedChanged: checked = serverChecked
109 Component.onCompleted: checked = serverChecked
110 onTriggered: soundPlugin.dialpadSoundsEnabled = checked
109 }111 }
110 text: i18n.tr("Dialpad sounds")112 text: i18n.tr("Dialpad sounds")
111 }113 }
112114
=== modified file 'plugins/reset/ResetLauncherHome.qml'
--- plugins/reset/ResetLauncherHome.qml 2014-09-30 11:38:35 +0000
+++ plugins/reset/ResetLauncherHome.qml 2014-11-07 22:38:03 +0000
@@ -55,11 +55,5 @@
55 text: i18n.tr("Cancel")55 text: i18n.tr("Cancel")
56 onClicked: PopupUtils.close(dialog)56 onClicked: PopupUtils.close(dialog)
57 }57 }
58 Label {
59 text: i18n.tr("The phone needs to restart for changes to take effect.")
60 width: parent.width
61 wrapMode: Text.Wrap
62 horizontalAlignment: Text.AlignHCenter
63 }
64 }58 }
65}59}
6660
=== modified file 'plugins/security-privacy/Location.qml'
--- plugins/security-privacy/Location.qml 2014-10-21 13:17:01 +0000
+++ plugins/security-privacy/Location.qml 2014-11-07 22:38:03 +0000
@@ -90,6 +90,10 @@
90 anchors.left: parent.left90 anchors.left: parent.left
91 anchors.right: parent.right91 anchors.right: parent.right
9292
93 SettingsItemTitle {
94 text: i18n.tr("Let the phone detect your location:")
95 }
96
93 ListItem.ItemSelector {97 ListItem.ItemSelector {
94 id: detection98 id: detection
9599
@@ -112,7 +116,6 @@
112 }116 }
113 property bool allow: selectedIndex !== (model.count - 1)117 property bool allow: selectedIndex !== (model.count - 1)
114118
115 text: i18n.tr("Let the phone detect your location:")
116 expanded: true119 expanded: true
117 model: optionsModel120 model: optionsModel
118 delegate: optionsDelegate121 delegate: optionsDelegate
@@ -220,9 +223,7 @@
220 visible: showAllUI /* hide until the information is real */223 visible: showAllUI /* hide until the information is real */
221 }224 }
222225
223 ListItem.Divider {}226 SettingsItemTitle {
224
225 ListItem.Standard {
226 text: i18n.tr("Allow access to location:")227 text: i18n.tr("Allow access to location:")
227 enabled: detection.allow228 enabled: detection.allow
228 }229 }
229230
=== modified file 'plugins/security-privacy/LockSecurity.qml'
--- plugins/security-privacy/LockSecurity.qml 2014-09-22 15:21:10 +0000
+++ plugins/security-privacy/LockSecurity.qml 2014-11-07 22:38:03 +0000
@@ -340,7 +340,7 @@
340 anchors.left: parent.left340 anchors.left: parent.left
341 anchors.right: parent.right341 anchors.right: parent.right
342342
343 ListItem.Standard {343 SettingsItemTitle {
344 text: i18n.tr("Unlock the phone using:")344 text: i18n.tr("Unlock the phone using:")
345 }345 }
346346
347347
=== modified file 'plugins/security-privacy/PageComponent.qml'
--- plugins/security-privacy/PageComponent.qml 2014-10-16 13:43:16 +0000
+++ plugins/security-privacy/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -121,7 +121,7 @@
121 anchors.left: parent.left121 anchors.left: parent.left
122 anchors.right: parent.right122 anchors.right: parent.right
123123
124 ListItem.Standard {124 ListItem.Header {
125 id: securityTitle125 id: securityTitle
126 text: i18n.tr("Security")126 text: i18n.tr("Security")
127 }127 }
@@ -181,35 +181,29 @@
181 "Encryption protects against access to phone data when the phone is connected to a PC or other device.")181 "Encryption protects against access to phone data when the phone is connected to a PC or other device.")
182 visible: showAllUI182 visible: showAllUI
183 }183 }
184 ListItem.Standard {184 ListItem.Header {
185 text: i18n.tr("Privacy")185 text: i18n.tr("Privacy")
186 }186 }
187 ListItem.Standard {187 ListItem.Standard {
188 text: i18n.tr("Stats on welcome screen")188 text: i18n.tr("Stats on welcome screen")
189 control: Switch {189 control: Switch {
190 id: welcomeStatsSwitch190 property bool serverChecked: securityPrivacy.statsWelcomeScreen
191 checked: securityPrivacy.statsWelcomeScreen191 onServerCheckedChanged: checked = serverChecked
192 Component.onCompleted: checked = serverChecked
193 onTriggered: securityPrivacy.statsWelcomeScreen = checked
192 }194 }
193 }195 }
194 Binding {
195 target: securityPrivacy
196 property: "statsWelcomeScreen"
197 value: welcomeStatsSwitch.checked
198 }
199196
200 ListItem.Standard {197 ListItem.Standard {
201 text: i18n.tr("Messages on welcome screen")198 text: i18n.tr("Messages on welcome screen")
202 control: Switch {199 control: Switch {
203 id: welcomeMessagesSwitch200 property bool serverChecked: securityPrivacy.messagesWelcomeScreen
204 checked: securityPrivacy.messagesWelcomeScreen201 onServerCheckedChanged: checked = serverChecked
202 Component.onCompleted: checked = serverChecked
203 onTriggered: securityPrivacy.messagesWelcomeScreen = checked
205 }204 }
206 visible: showAllUI205 visible: showAllUI
207 }206 }
208 Binding {
209 target: securityPrivacy
210 property: "messagesWelcomeScreen"
211 value: welcomeMessagesSwitch.checked
212 }
213207
214 ListItem.SingleValue {208 ListItem.SingleValue {
215 id: dashSearchId209 id: dashSearchId
216210
=== modified file 'plugins/security-privacy/PhoneLocking.qml'
--- plugins/security-privacy/PhoneLocking.qml 2014-09-22 15:21:10 +0000
+++ plugins/security-privacy/PhoneLocking.qml 2014-11-07 22:38:03 +0000
@@ -102,7 +102,7 @@
102 visible: showAllUI102 visible: showAllUI
103 }103 }
104104
105 ListItem.Standard {105 SettingsItemTitle {
106 text: i18n.tr("When locked, allow:")106 text: i18n.tr("When locked, allow:")
107 }107 }
108108
@@ -111,8 +111,11 @@
111 control: CheckBox {111 control: CheckBox {
112 id: launcherCheck112 id: launcherCheck
113 enabled: securityPrivacy.securityType !== UbuntuSecurityPrivacyPanel.Swipe113 enabled: securityPrivacy.securityType !== UbuntuSecurityPrivacyPanel.Swipe
114 checked: securityPrivacy.enableLauncherWhileLocked || !enabled114
115 onClicked: securityPrivacy.enableLauncherWhileLocked = checked115 property bool serverChecked: securityPrivacy.enableLauncherWhileLocked || !enabled
116 onServerCheckedChanged: checked = serverChecked
117 Component.onCompleted: checked = serverChecked
118 onTriggered: securityPrivacy.enableLauncherWhileLocked = checked
116 }119 }
117 }120 }
118121
@@ -121,8 +124,11 @@
121 control: CheckBox {124 control: CheckBox {
122 id: indicatorsCheck125 id: indicatorsCheck
123 enabled: securityPrivacy.securityType !== UbuntuSecurityPrivacyPanel.Swipe126 enabled: securityPrivacy.securityType !== UbuntuSecurityPrivacyPanel.Swipe
124 checked: securityPrivacy.enableIndicatorsWhileLocked || !enabled127
125 onClicked: securityPrivacy.enableIndicatorsWhileLocked = checked128 property bool serverChecked: securityPrivacy.enableIndicatorsWhileLocked || !enabled
129 onServerCheckedChanged: checked = serverChecked
130 Component.onCompleted: checked = serverChecked
131 onTriggered: securityPrivacy.enableIndicatorsWhileLocked = checked
126 }132 }
127 }133 }
128134
129135
=== modified file 'plugins/sound/PageComponent.qml'
--- plugins/sound/PageComponent.qml 2014-10-17 15:02:18 +0000
+++ plugins/sound/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -70,13 +70,15 @@
70 ListItem.Standard {70 ListItem.Standard {
71 control: Switch {71 control: Switch {
72 objectName: "silentMode"72 objectName: "silentMode"
73 checked: backendInfo.silentMode73 property bool serverChecked: backendInfo.silentMode
74 onCheckedChanged: backendInfo.silentMode = checked74 onServerCheckedChanged: checked = serverChecked
75 Component.onCompleted: checked = serverChecked
76 onTriggered: backendInfo.silentMode = checked
75 }77 }
76 text: i18n.tr("Silent Mode")78 text: i18n.tr("Silent Mode")
77 }79 }
7880
79 ListItem.Standard {81 SettingsItemTitle {
80 text: i18n.tr("Ringer:")82 text: i18n.tr("Ringer:")
81 }83 }
8284
@@ -108,7 +110,7 @@
108 onUpdated: soundActionGroup.volume.updateState(value);110 onUpdated: soundActionGroup.volume.updateState(value);
109 }111 }
110112
111 ListItem.Standard {113 SettingsItemTitle {
112 text: i18n.tr("Phone calls:")114 text: i18n.tr("Phone calls:")
113 }115 }
114116
@@ -129,8 +131,10 @@
129 ListItem.Standard {131 ListItem.Standard {
130 control: CheckBox {132 control: CheckBox {
131 objectName: "callVibrate"133 objectName: "callVibrate"
132 checked: backendInfo.incomingCallVibrate134 property bool serverChecked: backendInfo.incomingCallVibrate
133 onCheckedChanged: backendInfo.incomingCallVibrate = checked135 onServerCheckedChanged: checked = serverChecked
136 Component.onCompleted: checked = serverChecked
137 onTriggered: backendInfo.incomingCallVibrate = checked
134 }138 }
135 text: i18n.tr("Vibrate when ringing")139 text: i18n.tr("Vibrate when ringing")
136 }140 }
@@ -138,8 +142,10 @@
138 ListItem.Standard {142 ListItem.Standard {
139 control: CheckBox {143 control: CheckBox {
140 objectName: "callVibrateSilentMode"144 objectName: "callVibrateSilentMode"
141 checked: backendInfo.incomingCallVibrateSilentMode145 property bool serverChecked: backendInfo.incomingCallVibrateSilentMode
142 onCheckedChanged: backendInfo.incomingCallVibrateSilentMode = checked146 onServerCheckedChanged: checked = serverChecked
147 Component.onCompleted: checked = serverChecked
148 onTriggered: backendInfo.incomingCallVibrateSilentMode = checked
143 }149 }
144 text: i18n.tr("Vibrate in Silent Mode")150 text: i18n.tr("Vibrate in Silent Mode")
145 }151 }
@@ -147,13 +153,15 @@
147 ListItem.Standard {153 ListItem.Standard {
148 control: Switch {154 control: Switch {
149 objectName: "dialpadSounds"155 objectName: "dialpadSounds"
150 checked: backendInfo.dialpadSoundsEnabled156 property bool serverChecked: backendInfo.dialpadSoundsEnabled
151 onCheckedChanged: backendInfo.dialpadSoundsEnabled = checked157 onServerCheckedChanged: checked = serverChecked
158 Component.onCompleted: checked = serverChecked
159 onTriggered: backendInfo.dialpadSoundsEnabled = checked
152 }160 }
153 text: i18n.tr("Dialpad sounds")161 text: i18n.tr("Dialpad sounds")
154 }162 }
155163
156 ListItem.Standard {164 SettingsItemTitle {
157 text: i18n.tr("Messages:")165 text: i18n.tr("Messages:")
158 }166 }
159167
@@ -173,8 +181,10 @@
173 ListItem.Standard {181 ListItem.Standard {
174 control: CheckBox {182 control: CheckBox {
175 objectName: "messageVibrate"183 objectName: "messageVibrate"
176 checked: backendInfo.incomingMessageVibrate184 property bool serverChecked: backendInfo.incomingMessageVibrate
177 onCheckedChanged: backendInfo.incomingMessageVibrate = checked185 onServerCheckedChanged: checked = serverChecked
186 Component.onCompleted: checked = serverChecked
187 onTriggered: backendInfo.incomingMessageVibrate = checked
178 }188 }
179 text: i18n.tr("Vibrate with message sound")189 text: i18n.tr("Vibrate with message sound")
180 }190 }
@@ -182,13 +192,15 @@
182 ListItem.Standard {192 ListItem.Standard {
183 control: CheckBox {193 control: CheckBox {
184 objectName: "messageVibrateSilentMode"194 objectName: "messageVibrateSilentMode"
185 checked: backendInfo.incomingMessageVibrateSilentMode195 property bool serverChecked: backendInfo.incomingMessageVibrateSilentMode
186 onCheckedChanged: backendInfo.incomingMessageVibrateSilentMode = checked196 onServerCheckedChanged: checked = serverChecked
197 Component.onCompleted: checked = serverChecked
198 onTriggered: backendInfo.incomingMessageVibrateSilentMode = checked
187 }199 }
188 text: i18n.tr("Vibrate in Silent Mode")200 text: i18n.tr("Vibrate in Silent Mode")
189 }201 }
190202
191 ListItem.Standard {203 SettingsItemTitle {
192 text: i18n.tr("Other sounds:")204 text: i18n.tr("Other sounds:")
193 }205 }
194206
@@ -197,9 +209,10 @@
197209
198 control: Switch {210 control: Switch {
199 objectName: "keyboardSoundSwitch"211 objectName: "keyboardSoundSwitch"
200 checked: keyboardSettings.keyPressFeedback212 property bool serverChecked: keyboardSettings.keyPressFeedback
201213 onServerCheckedChanged: checked = serverChecked
202 onClicked: keyboardSettings.keyPressFeedback = checked214 Component.onCompleted: checked = serverChecked
215 onTriggered: keyboardSettings.keyPressFeedback = checked
203 }216 }
204 }217 }
205218
206219
=== modified file 'plugins/sound/sound.cpp'
--- plugins/sound/sound.cpp 2014-10-17 14:57:35 +0000
+++ plugins/sound/sound.cpp 2014-11-07 22:38:03 +0000
@@ -59,6 +59,8 @@
59 Q_EMIT incomingCallVibrateSilentModeChanged();59 Q_EMIT incomingCallVibrateSilentModeChanged();
60 } else if (property == "IncomingMessageVibrateSilentMode") {60 } else if (property == "IncomingMessageVibrateSilentMode") {
61 Q_EMIT incomingMessageVibrateSilentModeChanged();61 Q_EMIT incomingMessageVibrateSilentModeChanged();
62 } else if (property == "DialpadSoundsEnabled") {
63 Q_EMIT dialpadSoundsEnabledChanged();
62 }64 }
63}65}
6466
@@ -72,6 +74,7 @@
72 Q_EMIT incomingMessageVibrateChanged();74 Q_EMIT incomingMessageVibrateChanged();
73 Q_EMIT incomingCallVibrateSilentModeChanged();75 Q_EMIT incomingCallVibrateSilentModeChanged();
74 Q_EMIT incomingMessageVibrateSilentModeChanged();76 Q_EMIT incomingMessageVibrateSilentModeChanged();
77 Q_EMIT dialpadSoundsEnabledChanged();
75}78}
7679
77QString Sound::getIncomingCallSound()80QString Sound::getIncomingCallSound()
7881
=== modified file 'plugins/system-update/PageComponent.qml'
--- plugins/system-update/PageComponent.qml 2014-10-20 20:53:02 +0000
+++ plugins/system-update/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -535,11 +535,11 @@
535 fontSize: "small"535 fontSize: "small"
536 text: {536 text: {
537 if (!labelUpdateStatus.visible)537 if (!labelUpdateStatus.visible)
538 return convert_bytes_to_size(modelData.binaryFilesize);538 return Utilities.formatSize(modelData.binaryFilesize);
539539
540 return i18n.tr("%1 of %2").arg(540 return i18n.tr("%1 of %2").arg(
541 convert_bytes_to_size(modelData.binaryFilesize * (progress.value * 0.01))).arg(541 Utilities.formatSize(modelData.binaryFilesize * (progress.value * 0.01))).arg(
542 convert_bytes_to_size(modelData.binaryFilesize)542 Utilities.formatSize(modelData.binaryFilesize)
543 );543 );
544 }544 }
545 }545 }
@@ -640,12 +640,12 @@
640 elide: Text.ElideRight640 elide: Text.ElideRight
641 fontSize: "small"641 fontSize: "small"
642 }642 }
643 643
644 Label {644 Label {
645 id: labelSize645 id: labelSize
646 objectName: "labelSize"646 objectName: "labelSize"
647 anchors.right: parent.right647 anchors.right: parent.right
648 text: convert_bytes_to_size(modelData.binaryFilesize)648 text: Utilities.formatSize(modelData.binaryFilesize)
649 fontSize: "small"649 fontSize: "small"
650 visible: !labelUpdateStatus.visible && !installing && !installed650 visible: !labelUpdateStatus.visible && !installing && !installed
651 }651 }
@@ -773,27 +773,4 @@
773 onClicked: pageStack.push(Qt.resolvedUrl("Configuration.qml"))773 onClicked: pageStack.push(Qt.resolvedUrl("Configuration.qml"))
774 }774 }
775 }775 }
776
777 function convert_bytes_to_size(bytes) {
778 var SIZE_IN_GIB = 1024.0 * 1024.0 * 1024.0;
779 var SIZE_IN_MIB = 1024.0 * 1024.0;
780 var SIZE_IN_KIB = 1024.0;
781
782 var result = "";
783 var size = 0;
784 if (bytes < SIZE_IN_KIB) {
785 result = bytes + i18n.tr(" bytes");
786 } else if (bytes < SIZE_IN_MIB) {
787 size = (bytes / SIZE_IN_KIB).toFixed(1);
788 result = size + i18n.tr(" KiB");
789 } else if (bytes < SIZE_IN_GIB) {
790 size = (bytes / SIZE_IN_MIB).toFixed(1);
791 result = size + i18n.tr(" MiB");
792 } else {
793 size = (bytes / SIZE_IN_GIB).toFixed(1);
794 result = size + i18n.tr(" GiB");
795 }
796
797 return result;
798 }
799}776}
800777
=== modified file 'plugins/time-date/PageComponent.qml'
--- plugins/time-date/PageComponent.qml 2014-01-29 13:34:37 +0000
+++ plugins/time-date/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -50,7 +50,7 @@
50 Column {50 Column {
51 anchors.fill: parent51 anchors.fill: parent
5252
53 ListItem.Standard { text: i18n.tr ("Time zone:") }53 SettingsItemTitle { text: i18n.tr ("Time zone:") }
5454
55 ListItem.SingleValue {55 ListItem.SingleValue {
56 objectName: "timeZone"56 objectName: "timeZone"
@@ -62,10 +62,13 @@
62 onClicked: pageStack.push(Qt.resolvedUrl("ChooseTimeZone.qml"))62 onClicked: pageStack.push(Qt.resolvedUrl("ChooseTimeZone.qml"))
63 }63 }
6464
65 SettingsItemTitle {
66 text: i18n.tr ("Set the time and date:")
67 }
68
65 ListItem.ItemSelector {69 ListItem.ItemSelector {
66 id: setTimeAutomatically70 id: setTimeAutomatically
67 objectName: "timeItemSelector"71 objectName: "timeItemSelector"
68 text: i18n.tr ("Set the time and date:")
69 model: [ i18n.tr("Automatically") , i18n.tr("Manually")]72 model: [ i18n.tr("Automatically") , i18n.tr("Manually")]
70 expanded: true73 expanded: true
71 onSelectedIndexChanged: {74 onSelectedIndexChanged: {
7275
=== modified file 'plugins/wifi/MenuItemFactory.qml'
--- plugins/wifi/MenuItemFactory.qml 2014-09-10 15:39:07 +0000
+++ plugins/wifi/MenuItemFactory.qml 2014-11-07 22:38:03 +0000
@@ -19,6 +19,7 @@
1919
20import QtQuick 2.020import QtQuick 2.0
21import QMenuModel 0.1 as QMenuModel21import QMenuModel 0.1 as QMenuModel
22import Ubuntu.Settings.Menus 0.1 as Menus
2223
23Item {24Item {
24 id: menuFactory25 id: menuFactory
@@ -66,15 +67,18 @@
6667
67 Component {68 Component {
68 id: switchMenu;69 id: switchMenu;
69 SwitchMenuItem {70 Menus.SwitchMenu {
70 property QtObject menu: null71 property QtObject menu: null
7172 property bool serverChecked: menu && menu.isToggled || false
72 text: menu && menu.label ? menu.label : ""73
73 icon: menu ? menu.icon : ""74 text: menu && menu.label || ""
74 checked: menu ? menu.isToggled : false75 iconSource: menu && menu.icon || ""
75 enabled: menu ? menu.sensitive : false76 checked: serverChecked
7677 enabled: menu && menu.sensitive || false
77 onActivate: model.activate(modelIndex);78
79 onTriggered: model.activate(modelIndex);
80 // Fixes broken check state binding.
81 onServerCheckedChanged: checked = serverChecked;
78 }82 }
79 }83 }
8084
@@ -100,11 +104,12 @@
100 model: menuFactory.model ? menuFactory.model : null104 model: menuFactory.model ? menuFactory.model : null
101 name: menu ? menu.ext.xCanonicalWifiApStrengthAction : ""105 name: menu ? menu.ext.xCanonicalWifiApStrengthAction : ""
102 }106 }
107 property bool serverChecked: menu && menu.isToggled || false
103108
104 text: menu && menu.label ? menu.label : ""109 text: menu && menu.label ? menu.label : ""
105 secure: menu ? menu.ext.xCanonicalWifiApIsSecure : false110 secure: menu ? menu.ext.xCanonicalWifiApIsSecure : false
106 adHoc: menu ? menu.ext.xCanonicalWifiApIsAdhoc : false111 adHoc: menu ? menu.ext.xCanonicalWifiApIsAdhoc : false
107 checked: menu ? menu.isToggled : false112 checked: serverChecked
108 signalStrength: strenthAction.valid ? strenthAction.state : 0113 signalStrength: strenthAction.valid ? strenthAction.state : 0
109 enabled: menu ? menu.sensitive : false114 enabled: menu ? menu.sensitive : false
110115
@@ -114,6 +119,8 @@
114 'x-canonical-wifi-ap-strength-action': 'string'});119 'x-canonical-wifi-ap-strength-action': 'string'});
115 }120 }
116 onActivate: model.activate(modelIndex);121 onActivate: model.activate(modelIndex);
122 // Fixes broken check state binding.
123 onServerCheckedChanged: checked = serverChecked;
117 }124 }
118 }125 }
119126
120127
=== modified file 'plugins/wifi/PageComponent.qml'
--- plugins/wifi/PageComponent.qml 2014-09-26 12:52:31 +0000
+++ plugins/wifi/PageComponent.qml 2014-11-07 22:38:03 +0000
@@ -138,6 +138,8 @@
138 objectName: "connectToHiddenNetwork"138 objectName: "connectToHiddenNetwork"
139 text: i18n.tr("Connect to hidden network…")139 text: i18n.tr("Connect to hidden network…")
140 progression: true140 progression: true
141 visible : (actionGroup.actionObject.valid ?
142 actionGroup.actionObject.state : false)
141 onClicked: {143 onClicked: {
142 otherNetworLoader.source = "OtherNetwork.qml";144 otherNetworLoader.source = "OtherNetwork.qml";
143 PopupUtils.open(otherNetworLoader.item);145 PopupUtils.open(otherNetworLoader.item);
@@ -155,5 +157,4 @@
155 Flickable.DragAndOvershootBounds :157 Flickable.DragAndOvershootBounds :
156 Flickable.StopAtBounds158 Flickable.StopAtBounds
157 }159 }
158
159}160}
160161
=== modified file 'po/es.po'
--- po/es.po 2014-10-21 07:26:04 +0000
+++ po/es.po 2014-11-07 22:38:03 +0000
@@ -8,14 +8,14 @@
8"Project-Id-Version: ubuntu-system-settings\n"8"Project-Id-Version: ubuntu-system-settings\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-10-16 20:04-0600\n"10"POT-Creation-Date: 2014-10-16 20:04-0600\n"
11"PO-Revision-Date: 2014-10-20 22:13+0000\n"11"PO-Revision-Date: 2014-10-29 14:53+0000\n"
12"Last-Translator: Víctor R. Ruiz <Unknown>\n"12"Last-Translator: Víctor R. Ruiz <Unknown>\n"
13"Language-Team: Spanish <es@li.org>\n"13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2014-10-21 07:26+0000\n"18"X-Launchpad-Export-Date: 2014-10-30 06:36+0000\n"
19"X-Generator: Launchpad (build 17203)\n"19"X-Generator: Launchpad (build 17203)\n"
2020
21#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:11221#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112
@@ -2360,7 +2360,7 @@
2360#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2360#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2361#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:582361#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:58
2362msgid "badges"2362msgid "badges"
2363msgstr ""2363msgstr "insignias"
23642364
2365#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2365#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2366#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:602366#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:60
@@ -2968,42 +2968,3 @@
2968#: ../push-helper/software_updates_helper.py:1512968#: ../push-helper/software_updates_helper.py:151
2969msgid "Tap to open the system updater."2969msgid "Tap to open the system updater."
2970msgstr "Presione para abrir el actualizador del sistema."2970msgstr "Presione para abrir el actualizador del sistema."
2971
2972#~ msgid "Searching"
2973#~ msgstr "Buscando"
2974
2975#~ msgid "Refresh"
2976#~ msgstr "Actualizar"
2977
2978#~ msgid "Remove"
2979#~ msgstr "Quitar"
2980
2981#~ msgid "settings"
2982#~ msgstr "opciones"
2983
2984#~ msgid "i18n"
2985#~ msgstr "i18n"
2986
2987#~ msgid "lang"
2988#~ msgstr "lengua"
2989
2990#~ msgid "Available networks"
2991#~ msgstr "Redes disponibles"
2992
2993#~ msgid "Password visible"
2994#~ msgstr "Contraseña visible"
2995
2996#~ msgid "Other network"
2997#~ msgstr "Otra red"
2998
2999#~ msgid "Connect to Wi-Fi"
3000#~ msgstr "Conectar a wifi"
3001
3002#~ msgid "Set lock security"
3003#~ msgstr "Establecer la seguridad de bloqueo"
3004
3005#~ msgid "Those passphrases don't match."
3006#~ msgstr "Las contraseñas no coinciden."
3007
3008#~ msgid "Passphrase must be at least four characters long."
3009#~ msgstr "La contraseña debe tener al menos cuatro caracteres."
30102971
=== modified file 'po/hu.po'
--- po/hu.po 2014-10-18 07:13:30 +0000
+++ po/hu.po 2014-11-07 22:38:03 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: ubuntu-system-settings\n"8"Project-Id-Version: ubuntu-system-settings\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-10-16 20:04-0600\n"10"POT-Creation-Date: 2014-10-16 20:04-0600\n"
11"PO-Revision-Date: 2014-10-16 10:21+0000\n"11"PO-Revision-Date: 2014-11-01 09:41+0000\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"13"Language-Team: Hungarian <hu@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2014-10-18 07:10+0000\n"18"X-Launchpad-Export-Date: 2014-11-02 06:14+0000\n"
19"X-Generator: Launchpad (build 17196)\n"19"X-Generator: Launchpad (build 17211)\n"
2020
21#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:11221#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112
22msgid "System Settings"22msgid "System Settings"
@@ -790,7 +790,7 @@
790790
791#: ../plugins/cellular//PageChooseCarrier.qml:196791#: ../plugins/cellular//PageChooseCarrier.qml:196
792msgid "Searching for carriers…"792msgid "Searching for carriers…"
793msgstr ""793msgstr "Szolgáltatók keresése…"
794794
795#: ../plugins/cellular//PageChooseCarrier.qml:229795#: ../plugins/cellular//PageChooseCarrier.qml:229
796#: ../plugins/cellular//PageChooseApn.qml:31796#: ../plugins/cellular//PageChooseApn.qml:31
@@ -800,36 +800,36 @@
800800
801#: ../plugins/cellular//PageChooseApn.qml:372801#: ../plugins/cellular//PageChooseApn.qml:372
802msgid "Internet APN:"802msgid "Internet APN:"
803msgstr ""803msgstr "Internet APN:"
804804
805#: ../plugins/cellular//PageChooseApn.qml:449805#: ../plugins/cellular//PageChooseApn.qml:449
806msgid "Custom Internet APN…"806msgid "Custom Internet APN…"
807msgstr ""807msgstr "Egyéni internet APN…"
808808
809#: ../plugins/cellular//PageChooseApn.qml:460809#: ../plugins/cellular//PageChooseApn.qml:460
810msgid "MMS APN:"810msgid "MMS APN:"
811msgstr ""811msgstr "MMS APN:"
812812
813#: ../plugins/cellular//PageChooseApn.qml:485813#: ../plugins/cellular//PageChooseApn.qml:485
814#: ../plugins/cellular//CustomApnEditor.qml:143814#: ../plugins/cellular//CustomApnEditor.qml:143
815msgid "Same APN as for Internet"815msgid "Same APN as for Internet"
816msgstr ""816msgstr "Az internet APN-nel megegyező"
817817
818#: ../plugins/cellular//PageChooseApn.qml:565818#: ../plugins/cellular//PageChooseApn.qml:565
819msgid "Custom MMS APN…"819msgid "Custom MMS APN…"
820msgstr ""820msgstr "Egyéni MMS APN…"
821821
822#: ../plugins/cellular//PageChooseApn.qml:591822#: ../plugins/cellular//PageChooseApn.qml:591
823msgid "Reset APN Settings"823msgid "Reset APN Settings"
824msgstr ""824msgstr "APN beállítások visszaállítása"
825825
826#: ../plugins/cellular//PageChooseApn.qml:592826#: ../plugins/cellular//PageChooseApn.qml:592
827msgid "Are you sure that you want to Reset APN Settings?"827msgid "Are you sure that you want to Reset APN Settings?"
828msgstr ""828msgstr "Biztos benne, hogy visszaállítja az APN beállításait?"
829829
830#: ../plugins/cellular//PageChooseApn.qml:598830#: ../plugins/cellular//PageChooseApn.qml:598
831msgid "Reset"831msgid "Reset"
832msgstr ""832msgstr "Visszaállítás"
833833
834#: ../plugins/cellular//PageChooseCarriers.qml:27834#: ../plugins/cellular//PageChooseCarriers.qml:27
835#: ../plugins/cellular//Components//MultiSim.qml:68835#: ../plugins/cellular//Components//MultiSim.qml:68
@@ -838,43 +838,43 @@
838838
839#: ../plugins/cellular//CustomApnEditor.qml:42839#: ../plugins/cellular//CustomApnEditor.qml:42
840msgid "Internet"840msgid "Internet"
841msgstr ""841msgstr "Internet"
842842
843#: ../plugins/cellular//CustomApnEditor.qml:42843#: ../plugins/cellular//CustomApnEditor.qml:42
844msgid "MMS"844msgid "MMS"
845msgstr ""845msgstr "MMS"
846846
847#. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS")847#. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS")
848#: ../plugins/cellular//CustomApnEditor.qml:67848#: ../plugins/cellular//CustomApnEditor.qml:67
849#, qt-format849#, qt-format
850msgid "Custom %1 APN"850msgid "Custom %1 APN"
851msgstr ""851msgstr "Egyéni %1 APN"
852852
853#. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS")853#. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS")
854#: ../plugins/cellular//CustomApnEditor.qml:171854#: ../plugins/cellular//CustomApnEditor.qml:171
855#, qt-format855#, qt-format
856msgid "%1 APN"856msgid "%1 APN"
857msgstr ""857msgstr "%1 APN"
858858
859#: ../plugins/cellular//CustomApnEditor.qml:181859#: ../plugins/cellular//CustomApnEditor.qml:181
860msgid "MMSC"860msgid "MMSC"
861msgstr ""861msgstr "MMSC"
862862
863#: ../plugins/cellular//CustomApnEditor.qml:191863#: ../plugins/cellular//CustomApnEditor.qml:191
864msgid "Proxy"864msgid "Proxy"
865msgstr ""865msgstr "Proxy"
866866
867#: ../plugins/cellular//CustomApnEditor.qml:213867#: ../plugins/cellular//CustomApnEditor.qml:213
868msgid "Username"868msgid "Username"
869msgstr ""869msgstr "Felhasználónév"
870870
871#: ../plugins/cellular//CustomApnEditor.qml:264871#: ../plugins/cellular//CustomApnEditor.qml:264
872msgid "Save"872msgid "Save"
873msgstr ""873msgstr "Mentés"
874874
875#: ../plugins/cellular//CustomApnEditor.qml:264875#: ../plugins/cellular//CustomApnEditor.qml:264
876msgid "Activate"876msgid "Activate"
877msgstr ""877msgstr "Aktiválás"
878878
879#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching879#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
880#: ../plugins/cellular//PageComponent.qml:32880#: ../plugins/cellular//PageComponent.qml:32
@@ -1773,7 +1773,7 @@
17731773
1774#: ../plugins/system-update//PageComponent.qml:1521774#: ../plugins/system-update//PageComponent.qml:152
1775msgid "Installation failed"1775msgid "Installation failed"
1776msgstr ""1776msgstr "A telepítés meghiúsult"
17771777
1778#: ../plugins/system-update//PageComponent.qml:1561778#: ../plugins/system-update//PageComponent.qml:156
1779#: ../plugins/cellular//Components//SimEditor.qml:2001779#: ../plugins/cellular//Components//SimEditor.qml:200
@@ -1787,7 +1787,7 @@
1787#: ../plugins/system-update//PageComponent.qml:2351787#: ../plugins/system-update//PageComponent.qml:235
1788#: ../plugins/system-update//PageComponent.qml:2411788#: ../plugins/system-update//PageComponent.qml:241
1789msgid "Sorry, the system update failed."1789msgid "Sorry, the system update failed."
1790msgstr ""1790msgstr "Sajnáljuk, a rendszer frissítés meghiúsult."
17911791
1792#: ../plugins/system-update//PageComponent.qml:2541792#: ../plugins/system-update//PageComponent.qml:254
1793msgid "Restarting…"1793msgid "Restarting…"
@@ -1799,7 +1799,7 @@
17991799
1800#: ../plugins/system-update//PageComponent.qml:2981800#: ../plugins/system-update//PageComponent.qml:298
1801msgid "Connect to the Internet to check for updates"1801msgid "Connect to the Internet to check for updates"
1802msgstr ""1802msgstr "Csatlakozás az internethez a frissítések ellenőrzéséhez"
18031803
1804#: ../plugins/system-update//PageComponent.qml:3131804#: ../plugins/system-update//PageComponent.qml:313
1805#: ../plugins/system-update//PageComponent.qml:4711805#: ../plugins/system-update//PageComponent.qml:471
@@ -2116,7 +2116,7 @@
2116#: ../wizard/qml/Pages//passwd-confirm.qml:512116#: ../wizard/qml/Pages//passwd-confirm.qml:51
2117#: ../wizard/qml/Pages//passwd-confirm.qml:522117#: ../wizard/qml/Pages//passwd-confirm.qml:52
2118msgid "Please try again."2118msgid "Please try again."
2119msgstr "Kérem próbálja újra."2119msgstr "Próbálja újra."
21202120
2121#: ../wizard/qml/Pages//passwd-confirm.qml:522121#: ../wizard/qml/Pages//passwd-confirm.qml:52
2122msgid "Sorry, incorrect passcode."2122msgid "Sorry, incorrect passcode."
@@ -2156,11 +2156,15 @@
2156"Ubuntu includes location services provided by HERE, enabling apps to "2156"Ubuntu includes location services provided by HERE, enabling apps to "
2157"pinpoint your location."2157"pinpoint your location."
2158msgstr ""2158msgstr ""
2159"Az Ubuntu tartalmazza a HERE helymeghatározó szolgáltatást, amely "
2160"megállapítja az Ön pontos helyét az alkalmazások számára."
21592161
2160#: ../wizard/qml/Pages//50-location.qml:642162#: ../wizard/qml/Pages//50-location.qml:64
2161msgid ""2163msgid ""
2162"Allow apps to use your mobile and Wi-Fi networks to determine your location."2164"Allow apps to use your mobile and Wi-Fi networks to determine your location."
2163msgstr ""2165msgstr ""
2166"A mobilinternet és Wi-Fi használatának engedélyezése az alkalmazások számára "
2167"az Ön pontos helyzetének megállapításához."
21642168
2165#. TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it2169#. TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
2166#: ../wizard/qml/Pages//50-location.qml:742170#: ../wizard/qml/Pages//50-location.qml:74
@@ -2168,16 +2172,18 @@
2168"Accept the HERE <a href='terms.qml'>terms and conditions</a> to enable these "2172"Accept the HERE <a href='terms.qml'>terms and conditions</a> to enable these "
2169"services."2173"services."
2170msgstr ""2174msgstr ""
2175"A HERE <a href='terms.qml'>felhasználási feltételeinek</a> elfogadása a "
2176"szolgáltatás engedélyezéséhez."
21712177
2172#: ../wizard/qml/Pages//50-location.qml:852178#: ../wizard/qml/Pages//50-location.qml:85
2173msgid ""2179msgid ""
2174"This service can be disabled at any time from the <b>System Settings</b> "2180"This service can be disabled at any time from the <b>System Settings</b> "
2175"menu."2181"menu."
2176msgstr ""2182msgstr "Ez később bármikor kikapcsolható a <b>Rendszerbeállításokban</b>."
21772183
2178#: ../wizard/qml/Pages//60-reporting.qml:222184#: ../wizard/qml/Pages//60-reporting.qml:22
2179msgid "Improving your experience"2185msgid "Improving your experience"
2180msgstr ""2186msgstr "Javítson az élményen"
21812187
2182#: ../wizard/qml/Pages//60-reporting.qml:342188#: ../wizard/qml/Pages//60-reporting.qml:34
2183msgid ""2189msgid ""
@@ -2192,6 +2198,8 @@
2192"This can be disabled in <b>System Settings</b> under <b>Security &amp; "2198"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
2193"Privacy</b>"2199"Privacy</b>"
2194msgstr ""2200msgstr ""
2201"Ezt kikapcsolhatja a <b>Rendszerbeállítások</b> alatt található <b>Biztonság "
2202"és adatvédelem</b> alatt"
21952203
2196#: ../wizard/qml/Components//Page.qml:892204#: ../wizard/qml/Components//Page.qml:89
2197msgid "Back"2205msgid "Back"
@@ -2964,61 +2972,3 @@
2964#: ../push-helper/software_updates_helper.py:1512972#: ../push-helper/software_updates_helper.py:151
2965msgid "Tap to open the system updater."2973msgid "Tap to open the system updater."
2966msgstr "Koppintson a rendszerfrissítő megnyitásához."2974msgstr "Koppintson a rendszerfrissítő megnyitásához."
2967
2968#~ msgid "Refresh"
2969#~ msgstr "Frissítés"
2970
2971#~ msgid "Searching"
2972#~ msgstr "Keresés"
2973
2974#~ msgid "Remove"
2975#~ msgstr "Eltávolítás"
2976
2977#~ msgid "settings"
2978#~ msgstr "beállítások"
2979
2980#~ msgid "i18n"
2981#~ msgstr "i18n"
2982
2983#~ msgid "lang"
2984#~ msgstr "nyelv"
2985
2986#~ msgid "Password visible"
2987#~ msgstr "A jelszó látható"
2988
2989#~ msgid "Available networks"
2990#~ msgstr "Elérhető hálózatok"
2991
2992#~ msgid "Connect to Wi-Fi"
2993#~ msgstr "Csatlakozás Wi-Fi hálózathoz"
2994
2995#~ msgid "Those passphrases don't match."
2996#~ msgstr "A jelmondatok nem egyeznek."
2997
2998#~ msgid "Passphrase must be at least four characters long."
2999#~ msgstr "A jelmondatnak legalább négy karakterből kell állnia."
3000
3001#~ msgid "Set lock security"
3002#~ msgstr "Zárolás beállítása"
3003
3004#~ msgid "Other network"
3005#~ msgstr "Egyéb hálózat"
3006
3007#~ msgid "Bug reporting"
3008#~ msgstr "Hibajelentés"
3009
3010#~ msgid ""
3011#~ "I have read and agreed to the HERE <a href='terms.qml'>Terms and "
3012#~ "Conditions</a>"
3013#~ msgstr ""
3014#~ "Elolvastam és elfogadom a HERE <a href='terms.qml'>felhasználási "
3015#~ "feltételeit</a>"
3016
3017#~ msgid "Use your mobile network and Wi-Fi to determine where you are"
3018#~ msgstr "Mobilhálózat és Wi-Fi használata az Ön helyzetének megállapításához"
3019
3020#~ msgid "This can be disabled here:"
3021#~ msgstr "Ez kikapcsolható itt:"
3022
3023#~ msgid "System Settings &gt; Security &amp; Privacy"
3024#~ msgstr "Rendszerbeállítások &gt; Biztonság és adatvédelem"
30252975
=== modified file 'po/pt.po'
--- po/pt.po 2014-10-19 07:05:24 +0000
+++ po/pt.po 2014-11-07 22:38:03 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: ubuntu-system-settings\n"8"Project-Id-Version: ubuntu-system-settings\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-10-16 20:04-0600\n"10"POT-Creation-Date: 2014-10-16 20:04-0600\n"
11"PO-Revision-Date: 2014-10-18 13:31+0000\n"11"PO-Revision-Date: 2014-11-01 09:36+0000\n"
12"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"12"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"13"Language-Team: Portuguese <pt@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2014-10-19 07:05+0000\n"18"X-Launchpad-Export-Date: 2014-11-02 06:14+0000\n"
19"X-Generator: Launchpad (build 17196)\n"19"X-Generator: Launchpad (build 17211)\n"
2020
21#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:11221#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112
22msgid "System Settings"22msgid "System Settings"
@@ -414,7 +414,7 @@
414414
415#: ../plugins/reset//PageComponent.qml:87415#: ../plugins/reset//PageComponent.qml:87
416msgid "Reset all system settings…"416msgid "Reset all system settings…"
417msgstr "Repor todas as definições de sistema..."417msgstr "Repor todas as definições do sistema..."
418418
419#: ../plugins/reset//PageComponent.qml:101419#: ../plugins/reset//PageComponent.qml:101
420msgid "Erase & Reset Everything…"420msgid "Erase & Reset Everything…"
@@ -430,7 +430,7 @@
430430
431#: ../plugins/reset//ResetAllSettings.qml:31431#: ../plugins/reset//ResetAllSettings.qml:31
432msgid "Reset all system settings"432msgid "Reset all system settings"
433msgstr "Repor todas as definições de sistema"433msgstr "Repor todas as definições do sistema"
434434
435#: ../plugins/reset//ResetLauncherHome.qml:40435#: ../plugins/reset//ResetLauncherHome.qml:40
436msgid "The Launcher will be returned to its original contents."436msgid "The Launcher will be returned to its original contents."
@@ -1753,12 +1753,12 @@
1753#: ../plugins/system-update//PageComponent.qml:1181753#: ../plugins/system-update//PageComponent.qml:118
1754msgid "The phone needs to restart to install the system update."1754msgid "The phone needs to restart to install the system update."
1755msgstr ""1755msgstr ""
1756"O telefone tem de reiniciar para instalar as atualizações de sistema."1756"O telemóvel tem de reiniciar para instalar as atualizações do sistema."
17571757
1758#: ../plugins/system-update//PageComponent.qml:1181758#: ../plugins/system-update//PageComponent.qml:118
1759msgid "Connect the phone to power before installing the system update."1759msgid "Connect the phone to power before installing the system update."
1760msgstr ""1760msgstr ""
1761"Ligue o telemóvel à energia antes de instalar as atualizações de sistema."1761"Ligue o telemóvel à energia antes de instalar as atualizações do sistema."
17621762
1763#: ../plugins/system-update//PageComponent.qml:1211763#: ../plugins/system-update//PageComponent.qml:121
1764msgid "Install & Restart"1764msgid "Install & Restart"
@@ -1788,7 +1788,7 @@
1788#: ../plugins/system-update//PageComponent.qml:2351788#: ../plugins/system-update//PageComponent.qml:235
1789#: ../plugins/system-update//PageComponent.qml:2411789#: ../plugins/system-update//PageComponent.qml:241
1790msgid "Sorry, the system update failed."1790msgid "Sorry, the system update failed."
1791msgstr "Desculpe, a atualização de sistema falhou."1791msgstr "Desculpe, a atualização do sistema falhou."
17921792
1793#: ../plugins/system-update//PageComponent.qml:2541793#: ../plugins/system-update//PageComponent.qml:254
1794msgid "Restarting…"1794msgid "Restarting…"
@@ -2966,47 +2966,8 @@
29662966
2967#: ../push-helper/software_updates_helper.py:1502967#: ../push-helper/software_updates_helper.py:150
2968msgid "There's an updated system image."2968msgid "There's an updated system image."
2969msgstr "Há uma nova imagem de sistema."2969msgstr "Há uma nova imagem do sistema."
29702970
2971#: ../push-helper/software_updates_helper.py:1512971#: ../push-helper/software_updates_helper.py:151
2972msgid "Tap to open the system updater."2972msgid "Tap to open the system updater."
2973msgstr "Carregue para abrir o atualizador de sistema."2973msgstr "Carregue para abrir o atualizador do sistema."
2974
2975#~ msgid "Other network"
2976#~ msgstr "Outra rede"
2977
2978#~ msgid "Remove"
2979#~ msgstr "Remover"
2980
2981#~ msgid "Searching"
2982#~ msgstr "A procurar"
2983
2984#~ msgid "Available networks"
2985#~ msgstr "Redes disponíveis"
2986
2987#~ msgid "Refresh"
2988#~ msgstr "Atualizar"
2989
2990#~ msgid "settings"
2991#~ msgstr "definições"
2992
2993#~ msgid "i18n"
2994#~ msgstr "i18n"
2995
2996#~ msgid "lang"
2997#~ msgstr "idioma"
2998
2999#~ msgid "Password visible"
3000#~ msgstr "Palavra-passe visível"
3001
3002#~ msgid "Connect to Wi-Fi"
3003#~ msgstr "Ligar a Wi-Fi"
3004
3005#~ msgid "Set lock security"
3006#~ msgstr "Definir a segurança de bloqueio"
3007
3008#~ msgid "Those passphrases don't match."
3009#~ msgstr "As frase-senha não correspondem."
3010
3011#~ msgid "Passphrase must be at least four characters long."
3012#~ msgstr "A frase-senha deve ter pelo menos quatro caracteres."
30132974
=== modified file 'po/ru.po'
--- po/ru.po 2014-10-24 06:39:04 +0000
+++ po/ru.po 2014-11-07 22:38:03 +0000
@@ -8,16 +8,21 @@
8"Project-Id-Version: ubuntu-system-settings\n"8"Project-Id-Version: ubuntu-system-settings\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-10-16 20:04-0600\n"10"POT-Creation-Date: 2014-10-16 20:04-0600\n"
11"PO-Revision-Date: 2014-10-22 05:38+0000\n"11"PO-Revision-Date: 2014-10-30 09:09+0000\n"
12"Last-Translator: CSRedRat <Unknown>\n"12"Last-Translator: ☠Jay ZDLin☠ <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"13"Language-Team: Russian <ru@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19<<<<<<< TREE
19"X-Launchpad-Export-Date: 2014-10-24 06:39+0000\n"20"X-Launchpad-Export-Date: 2014-10-24 06:39+0000\n"
20"X-Generator: Launchpad (build 17203)\n"21"X-Generator: Launchpad (build 17203)\n"
22=======
23"X-Launchpad-Export-Date: 2014-10-31 06:43+0000\n"
24"X-Generator: Launchpad (build 17211)\n"
25>>>>>>> MERGE-SOURCE
2126
22#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:11227#: ubuntu-system-settings.desktop.in.in.h:1 ../src/qml/MainWindow.qml:112
23msgid "System Settings"28msgid "System Settings"
@@ -137,7 +142,7 @@
137142
138#: ../plugins/wifi//Common.qml:50143#: ../plugins/wifi//Common.qml:50
139msgid "Your authentication details were incorrect"144msgid "Your authentication details were incorrect"
140msgstr ""145msgstr "Некорректные данные аутентификации"
141146
142#: ../plugins/wifi//Common.qml:52147#: ../plugins/wifi//Common.qml:52
143msgid "802.1X supplicant disconnected"148msgid "802.1X supplicant disconnected"
@@ -798,7 +803,7 @@
798803
799#: ../plugins/cellular//PageChooseCarrier.qml:196804#: ../plugins/cellular//PageChooseCarrier.qml:196
800msgid "Searching for carriers…"805msgid "Searching for carriers…"
801msgstr ""806msgstr "Поиск оператора..."
802807
803#: ../plugins/cellular//PageChooseCarrier.qml:229808#: ../plugins/cellular//PageChooseCarrier.qml:229
804#: ../plugins/cellular//PageChooseApn.qml:31809#: ../plugins/cellular//PageChooseApn.qml:31
@@ -808,7 +813,7 @@
808813
809#: ../plugins/cellular//PageChooseApn.qml:372814#: ../plugins/cellular//PageChooseApn.qml:372
810msgid "Internet APN:"815msgid "Internet APN:"
811msgstr ""816msgstr "Интернет APN:"
812817
813#: ../plugins/cellular//PageChooseApn.qml:449818#: ../plugins/cellular//PageChooseApn.qml:449
814msgid "Custom Internet APN…"819msgid "Custom Internet APN…"
@@ -816,7 +821,7 @@
816821
817#: ../plugins/cellular//PageChooseApn.qml:460822#: ../plugins/cellular//PageChooseApn.qml:460
818msgid "MMS APN:"823msgid "MMS APN:"
819msgstr ""824msgstr "MMS APN:"
820825
821#: ../plugins/cellular//PageChooseApn.qml:485826#: ../plugins/cellular//PageChooseApn.qml:485
822#: ../plugins/cellular//CustomApnEditor.qml:143827#: ../plugins/cellular//CustomApnEditor.qml:143
@@ -829,15 +834,15 @@
829834
830#: ../plugins/cellular//PageChooseApn.qml:591835#: ../plugins/cellular//PageChooseApn.qml:591
831msgid "Reset APN Settings"836msgid "Reset APN Settings"
832msgstr ""837msgstr "Сброс настроек APN"
833838
834#: ../plugins/cellular//PageChooseApn.qml:592839#: ../plugins/cellular//PageChooseApn.qml:592
835msgid "Are you sure that you want to Reset APN Settings?"840msgid "Are you sure that you want to Reset APN Settings?"
836msgstr ""841msgstr "Сбросить настройки APN?"
837842
838#: ../plugins/cellular//PageChooseApn.qml:598843#: ../plugins/cellular//PageChooseApn.qml:598
839msgid "Reset"844msgid "Reset"
840msgstr ""845msgstr "Сбросить"
841846
842#: ../plugins/cellular//PageChooseCarriers.qml:27847#: ../plugins/cellular//PageChooseCarriers.qml:27
843#: ../plugins/cellular//Components//MultiSim.qml:68848#: ../plugins/cellular//Components//MultiSim.qml:68
@@ -846,11 +851,11 @@
846851
847#: ../plugins/cellular//CustomApnEditor.qml:42852#: ../plugins/cellular//CustomApnEditor.qml:42
848msgid "Internet"853msgid "Internet"
849msgstr ""854msgstr "Интернет"
850855
851#: ../plugins/cellular//CustomApnEditor.qml:42856#: ../plugins/cellular//CustomApnEditor.qml:42
852msgid "MMS"857msgid "MMS"
853msgstr ""858msgstr "MMS"
854859
855#. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS")860#. TRANSLATORS: %1 is either i18n.tr("Internet") or i18n.tr("MMS")
856#: ../plugins/cellular//CustomApnEditor.qml:67861#: ../plugins/cellular//CustomApnEditor.qml:67
@@ -862,7 +867,7 @@
862#: ../plugins/cellular//CustomApnEditor.qml:171867#: ../plugins/cellular//CustomApnEditor.qml:171
863#, qt-format868#, qt-format
864msgid "%1 APN"869msgid "%1 APN"
865msgstr ""870msgstr "%1 APN"
866871
867#: ../plugins/cellular//CustomApnEditor.qml:181872#: ../plugins/cellular//CustomApnEditor.qml:181
868msgid "MMSC"873msgid "MMSC"
@@ -870,19 +875,19 @@
870875
871#: ../plugins/cellular//CustomApnEditor.qml:191876#: ../plugins/cellular//CustomApnEditor.qml:191
872msgid "Proxy"877msgid "Proxy"
873msgstr ""878msgstr "Прокси"
874879
875#: ../plugins/cellular//CustomApnEditor.qml:213880#: ../plugins/cellular//CustomApnEditor.qml:213
876msgid "Username"881msgid "Username"
877msgstr ""882msgstr "Имя пользователя"
878883
879#: ../plugins/cellular//CustomApnEditor.qml:264884#: ../plugins/cellular//CustomApnEditor.qml:264
880msgid "Save"885msgid "Save"
881msgstr ""886msgstr "Сохранить"
882887
883#: ../plugins/cellular//CustomApnEditor.qml:264888#: ../plugins/cellular//CustomApnEditor.qml:264
884msgid "Activate"889msgid "Activate"
885msgstr ""890msgstr "Включить"
886891
887#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching892#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
888#: ../plugins/cellular//PageComponent.qml:32893#: ../plugins/cellular//PageComponent.qml:32
@@ -952,7 +957,7 @@
952#: ../plugins/security-privacy//LockSecurity.qml:96957#: ../plugins/security-privacy//LockSecurity.qml:96
953#: ../plugins/security-privacy//LockSecurity.qml:384958#: ../plugins/security-privacy//LockSecurity.qml:384
954msgid "Change passcode…"959msgid "Change passcode…"
955msgstr ""960msgstr "Изменение секретного кода..."
956961
957#: ../plugins/security-privacy//LockSecurity.qml:98962#: ../plugins/security-privacy//LockSecurity.qml:98
958#: ../plugins/security-privacy//LockSecurity.qml:385963#: ../plugins/security-privacy//LockSecurity.qml:385
@@ -965,7 +970,7 @@
965970
966#: ../plugins/security-privacy//LockSecurity.qml:107971#: ../plugins/security-privacy//LockSecurity.qml:107
967msgid "Switch to passcode"972msgid "Switch to passcode"
968msgstr ""973msgstr "Перейти на код"
969974
970#: ../plugins/security-privacy//LockSecurity.qml:109975#: ../plugins/security-privacy//LockSecurity.qml:109
971msgid "Switch to passphrase"976msgid "Switch to passphrase"
@@ -973,7 +978,7 @@
973978
974#: ../plugins/security-privacy//LockSecurity.qml:118979#: ../plugins/security-privacy//LockSecurity.qml:118
975msgid "Existing passcode"980msgid "Existing passcode"
976msgstr ""981msgstr "Существующий код"
977982
978#: ../plugins/security-privacy//LockSecurity.qml:120983#: ../plugins/security-privacy//LockSecurity.qml:120
979msgid "Existing passphrase"984msgid "Existing passphrase"
@@ -981,7 +986,7 @@
981986
982#: ../plugins/security-privacy//LockSecurity.qml:174987#: ../plugins/security-privacy//LockSecurity.qml:174
983msgid "Choose passcode"988msgid "Choose passcode"
984msgstr ""989msgstr "Выбрать код"
985990
986#: ../plugins/security-privacy//LockSecurity.qml:176991#: ../plugins/security-privacy//LockSecurity.qml:176
987msgid "Choose passphrase"992msgid "Choose passphrase"
@@ -990,7 +995,7 @@
990#: ../plugins/security-privacy//LockSecurity.qml:220995#: ../plugins/security-privacy//LockSecurity.qml:220
991#: ../wizard/qml/Pages//passwd-confirm.qml:48996#: ../wizard/qml/Pages//passwd-confirm.qml:48
992msgid "Confirm passcode"997msgid "Confirm passcode"
993msgstr ""998msgstr "Подтвердить код"
994999
995#: ../plugins/security-privacy//LockSecurity.qml:2221000#: ../plugins/security-privacy//LockSecurity.qml:222
996#: ../wizard/qml/Pages//passwd-confirm.qml:471001#: ../wizard/qml/Pages//passwd-confirm.qml:47
@@ -999,7 +1004,7 @@
9991004
1000#: ../plugins/security-privacy//LockSecurity.qml:2651005#: ../plugins/security-privacy//LockSecurity.qml:265
1001msgid "Those passcodes don't match. Try again."1006msgid "Those passcodes don't match. Try again."
1002msgstr ""1007msgstr "Коды не совпадают. Попробуйте снова."
10031008
1004#: ../plugins/security-privacy//LockSecurity.qml:2681009#: ../plugins/security-privacy//LockSecurity.qml:268
1005msgid "Those passphrases don't match. Try again."1010msgid "Those passphrases don't match. Try again."
@@ -1019,7 +1024,7 @@
10191024
1020#: ../plugins/security-privacy//LockSecurity.qml:3491025#: ../plugins/security-privacy//LockSecurity.qml:349
1021msgid "4-digit passcode"1026msgid "4-digit passcode"
1022msgstr ""1027msgstr "4-значный код"
10231028
1024#: ../plugins/security-privacy//LockSecurity.qml:3501029#: ../plugins/security-privacy//LockSecurity.qml:350
1025#: ../plugins/security-privacy//PhoneLocking.qml:471030#: ../plugins/security-privacy//PhoneLocking.qml:47
@@ -1033,7 +1038,7 @@
10331038
1034#: ../plugins/security-privacy//LockSecurity.qml:3521039#: ../plugins/security-privacy//LockSecurity.qml:352
1035msgid "4-digit passcode…"1040msgid "4-digit passcode…"
1036msgstr ""1041msgstr "4-значный код..."
10371042
1038#: ../plugins/security-privacy//LockSecurity.qml:3531043#: ../plugins/security-privacy//LockSecurity.qml:353
1039msgid "Passphrase…"1044msgid "Passphrase…"
@@ -1053,8 +1058,9 @@
1053#, qt-format1058#, qt-format
1054msgid "Incorrect PIN. %1 attempt remaining."1059msgid "Incorrect PIN. %1 attempt remaining."
1055msgid_plural "Incorrect PIN. %1 attempts remaining."1060msgid_plural "Incorrect PIN. %1 attempts remaining."
1056msgstr[0] ""1061msgstr[0] "Неверный ПИН. Осталась %1 попытка."
1057msgstr[1] ""1062msgstr[1] "Неверный ПИН. Осталось %1 попытки."
1063msgstr[2] "Неверный ПИН. Осталось %1 попыток."
10581064
1059#: ../plugins/security-privacy//SimPin.qml:811065#: ../plugins/security-privacy//SimPin.qml:81
1060msgid "Current PIN:"1066msgid "Current PIN:"
@@ -1064,8 +1070,9 @@
1064#, qt-format1070#, qt-format
1065msgid "%1 attempt allowed."1071msgid "%1 attempt allowed."
1066msgid_plural "%1 attempts allowed."1072msgid_plural "%1 attempts allowed."
1067msgstr[0] ""1073msgstr[0] "Допускается %1 попытка."
1068msgstr[1] ""1074msgstr[1] "Допускается %1 попытки."
1075msgstr[2] "Допускается %1 попыток."
10691076
1070#: ../plugins/security-privacy//SimPin.qml:1071077#: ../plugins/security-privacy//SimPin.qml:107
1071msgid "Choose new PIN:"1078msgid "Choose new PIN:"
@@ -1135,7 +1142,7 @@
1135#: ../plugins/security-privacy//PhoneLocking.qml:461142#: ../plugins/security-privacy//PhoneLocking.qml:46
1136#: ../wizard/qml/Pages//30-passwd-type.qml:951143#: ../wizard/qml/Pages//30-passwd-type.qml:95
1137msgid "Passcode"1144msgid "Passcode"
1138msgstr ""1145msgstr "Секретный код"
11391146
1140#. TRANSLATORS: %1 is the number of minutes1147#. TRANSLATORS: %1 is the number of minutes
1141#: ../plugins/security-privacy//PhoneLocking.qml:751148#: ../plugins/security-privacy//PhoneLocking.qml:75
@@ -1153,11 +1160,11 @@
11531160
1154#: ../plugins/security-privacy//PhoneLocking.qml:1061161#: ../plugins/security-privacy//PhoneLocking.qml:106
1155msgid "When locked, allow:"1162msgid "When locked, allow:"
1156msgstr ""1163msgstr "Разрешить на заблокированном:"
11571164
1158#: ../plugins/security-privacy//PhoneLocking.qml:1101165#: ../plugins/security-privacy//PhoneLocking.qml:110
1159msgid "Launcher"1166msgid "Launcher"
1160msgstr ""1167msgstr "Панель запуска"
11611168
1162#: ../plugins/security-privacy//PhoneLocking.qml:1201169#: ../plugins/security-privacy//PhoneLocking.qml:120
1163msgid "Notifications and quick settings"1170msgid "Notifications and quick settings"
@@ -1779,7 +1786,7 @@
17791786
1780#: ../plugins/system-update//PageComponent.qml:1521787#: ../plugins/system-update//PageComponent.qml:152
1781msgid "Installation failed"1788msgid "Installation failed"
1782msgstr ""1789msgstr "Сбой установки"
17831790
1784#: ../plugins/system-update//PageComponent.qml:1561791#: ../plugins/system-update//PageComponent.qml:156
1785#: ../plugins/cellular//Components//SimEditor.qml:2001792#: ../plugins/cellular//Components//SimEditor.qml:200
@@ -1793,7 +1800,7 @@
1793#: ../plugins/system-update//PageComponent.qml:2351800#: ../plugins/system-update//PageComponent.qml:235
1794#: ../plugins/system-update//PageComponent.qml:2411801#: ../plugins/system-update//PageComponent.qml:241
1795msgid "Sorry, the system update failed."1802msgid "Sorry, the system update failed."
1796msgstr ""1803msgstr "К сожалению, не удалось обновить систему."
17971804
1798#: ../plugins/system-update//PageComponent.qml:2541805#: ../plugins/system-update//PageComponent.qml:254
1799msgid "Restarting…"1806msgid "Restarting…"
@@ -1805,7 +1812,7 @@
18051812
1806#: ../plugins/system-update//PageComponent.qml:2981813#: ../plugins/system-update//PageComponent.qml:298
1807msgid "Connect to the Internet to check for updates"1814msgid "Connect to the Internet to check for updates"
1808msgstr ""1815msgstr "Подключитесь к интернету, чтобы проверить наличие обновлений"
18091816
1810#: ../plugins/system-update//PageComponent.qml:3131817#: ../plugins/system-update//PageComponent.qml:313
1811#: ../plugins/system-update//PageComponent.qml:4711818#: ../plugins/system-update//PageComponent.qml:471
@@ -2030,7 +2037,7 @@
20302037
2031#: ../plugins/security-privacy//diagnostics//PageComponent.qml:902038#: ../plugins/security-privacy//diagnostics//PageComponent.qml:90
2032msgid "Includes info about what an app was doing when it failed."2039msgid "Includes info about what an app was doing when it failed."
2033msgstr ""2040msgstr "Включает информацию о приложении на момент возникновения ошибки."
20342041
2035#: ../src/qml/MainWindow.qml:1332042#: ../src/qml/MainWindow.qml:133
2036msgid "Search"2043msgid "Search"
@@ -2046,23 +2053,23 @@
20462053
2047#: ../wizard/qml/Pages//30-passwd-type.qml:722054#: ../wizard/qml/Pages//30-passwd-type.qml:72
2048msgid "Please select how you’d like to unlock your phone."2055msgid "Please select how you’d like to unlock your phone."
2049msgstr ""2056msgstr "Выберите способ разблокировки телефона."
20502057
2051#: ../wizard/qml/Pages//30-passwd-type.qml:922058#: ../wizard/qml/Pages//30-passwd-type.qml:92
2052msgid "Swipe"2059msgid "Swipe"
2053msgstr ""2060msgstr "Смахивание"
20542061
2055#: ../wizard/qml/Pages//30-passwd-type.qml:932062#: ../wizard/qml/Pages//30-passwd-type.qml:93
2056msgid "No security"2063msgid "No security"
2057msgstr ""2064msgstr "Без пароля"
20582065
2059#: ../wizard/qml/Pages//30-passwd-type.qml:962066#: ../wizard/qml/Pages//30-passwd-type.qml:96
2060msgid "4 numbers"2067msgid "4 numbers"
2061msgstr ""2068msgstr "4 цифры"
20622069
2063#: ../wizard/qml/Pages//30-passwd-type.qml:992070#: ../wizard/qml/Pages//30-passwd-type.qml:99
2064msgid "Numbers and letters"2071msgid "Numbers and letters"
2065msgstr ""2072msgstr "Цифры и буквы"
20662073
2067#: ../wizard/qml/Pages//30-passwd-type.qml:1122074#: ../wizard/qml/Pages//30-passwd-type.qml:112
2068#: ../wizard/qml/Pages//40-wifi.qml:196 ../wizard/qml/Pages//10-welcome.qml:852075#: ../wizard/qml/Pages//40-wifi.qml:196 ../wizard/qml/Pages//10-welcome.qml:85
@@ -2095,15 +2102,15 @@
20952102
2096#: ../wizard/qml/Pages//31-passwd-set.qml:482103#: ../wizard/qml/Pages//31-passwd-set.qml:48
2097msgid "Enter passphrase"2104msgid "Enter passphrase"
2098msgstr ""2105msgstr "Введите кодовую фразу"
20992106
2100#: ../wizard/qml/Pages//31-passwd-set.qml:492107#: ../wizard/qml/Pages//31-passwd-set.qml:49
2101msgid "Choose your passcode"2108msgid "Choose your passcode"
2102msgstr ""2109msgstr "Выберите секретный код"
21032110
2104#: ../wizard/qml/Pages//31-passwd-set.qml:562111#: ../wizard/qml/Pages//31-passwd-set.qml:56
2105msgid "Passphrase must be 4 characters long"2112msgid "Passphrase must be 4 characters long"
2106msgstr ""2113msgstr "Кодовая фраза должна состоять из 4 символов"
21072114
2108#: ../wizard/qml/Pages//20-sim.qml:232115#: ../wizard/qml/Pages//20-sim.qml:23
2109msgid "Add a SIM card and restart your device"2116msgid "Add a SIM card and restart your device"
@@ -2116,7 +2123,7 @@
21162123
2117#: ../wizard/qml/Pages//passwd-confirm.qml:512124#: ../wizard/qml/Pages//passwd-confirm.qml:51
2118msgid "Sorry, incorrect passphrase."2125msgid "Sorry, incorrect passphrase."
2119msgstr ""2126msgstr "Неверная кодовая фраза."
21202127
2121#: ../wizard/qml/Pages//passwd-confirm.qml:512128#: ../wizard/qml/Pages//passwd-confirm.qml:51
2122#: ../wizard/qml/Pages//passwd-confirm.qml:522129#: ../wizard/qml/Pages//passwd-confirm.qml:52
@@ -2125,7 +2132,7 @@
21252132
2126#: ../wizard/qml/Pages//passwd-confirm.qml:522133#: ../wizard/qml/Pages//passwd-confirm.qml:52
2127msgid "Sorry, incorrect passcode."2134msgid "Sorry, incorrect passcode."
2128msgstr ""2135msgstr "Неверный секретный код."
21292136
2130#: ../wizard/qml/Pages//80-finished.qml:222137#: ../wizard/qml/Pages//80-finished.qml:22
2131msgid "All done"2138msgid "All done"
@@ -2166,6 +2173,8 @@
2166msgid ""2173msgid ""
2167"Allow apps to use your mobile and Wi-Fi networks to determine your location."2174"Allow apps to use your mobile and Wi-Fi networks to determine your location."
2168msgstr ""2175msgstr ""
2176"Разрешить приложениям использовать мобильные и Wi-Fi сети для определения "
2177"вашего местонахождения."
21692178
2170#. TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it2179#. TRANSLATORS: HERE is a trademark for Nokia's location service, you probably shouldn't translate it
2171#: ../wizard/qml/Pages//50-location.qml:742180#: ../wizard/qml/Pages//50-location.qml:74
@@ -2189,12 +2198,16 @@
2189"Your phone is set up to automatically report errors to Canonical and its "2198"Your phone is set up to automatically report errors to Canonical and its "
2190"partners, the makers of the operating system."2199"partners, the makers of the operating system."
2191msgstr ""2200msgstr ""
2201"Ваш телефон настроен на автоматическую отправку отчётов об ошибках в "
2202"компанию Canonical и её партнерам, производителям операционной системы."
21922203
2193#: ../wizard/qml/Pages//60-reporting.qml:412204#: ../wizard/qml/Pages//60-reporting.qml:41
2194msgid ""2205msgid ""
2195"This can be disabled in <b>System Settings</b> under <b>Security &amp; "2206"This can be disabled in <b>System Settings</b> under <b>Security &amp; "
2196"Privacy</b>"2207"Privacy</b>"
2197msgstr ""2208msgstr ""
2209"Данную функцию можно отключить, перейдя в <b>Параметры системы</b>, раздел "
2210"<b>Защита и приватность</b>"
21982211
2199#: ../wizard/qml/Components//Page.qml:892212#: ../wizard/qml/Components//Page.qml:89
2200msgid "Back"2213msgid "Back"
@@ -2203,12 +2216,12 @@
2203#: ../wizard/qml/Components//StackButton.qml:402216#: ../wizard/qml/Components//StackButton.qml:40
2204#, qt-format2217#, qt-format
2205msgid "〈 %1"2218msgid "〈 %1"
2206msgstr ""2219msgstr "〈 %1"
22072220
2208#: ../wizard/qml/Components//StackButton.qml:432221#: ../wizard/qml/Components//StackButton.qml:43
2209#, qt-format2222#, qt-format
2210msgid "%1 〉"2223msgid "%1 〉"
2211msgstr ""2224msgstr "%1 〉"
22122225
2213#. TRANSLATORS: This is a keyword or name for the background plugin which is used while searching2226#. TRANSLATORS: This is a keyword or name for the background plugin which is used while searching
2214#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:42227#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:4
@@ -2303,19 +2316,19 @@
2303#. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching2316#. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching
2304#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:382317#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:38
2305msgid "hidden"2318msgid "hidden"
2306msgstr ""2319msgstr "скрытые"
23072320
2308#. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching2321#. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching
2309#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:402322#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:40
2310msgid "ip"2323msgid "ip"
2311msgstr ""2324msgstr "ip"
23122325
2313#. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching2326#. TRANSLATORS: This is a keyword or name for the wifi plugin which is used while searching
2314#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2327#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2315#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:422328#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:42
2316#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2942329#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:294
2317msgid "address"2330msgid "address"
2318msgstr ""2331msgstr "адрес"
23192332
2320#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2333#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2321#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2334#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
@@ -2363,22 +2376,22 @@
2363#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2376#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2364#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:602377#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:60
2365msgid "facebook"2378msgid "facebook"
2366msgstr ""2379msgstr "facebook"
23672380
2368#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2381#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2369#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:622382#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:62
2370msgid "twitter"2383msgid "twitter"
2371msgstr ""2384msgstr "twitter"
23722385
2373#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2386#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2374#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:642387#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:64
2375msgid "flickr"2388msgid "flickr"
2376msgstr ""2389msgstr "flickr"
23772390
2378#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching2391#. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
2379#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:662392#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:66
2380msgid "gmail"2393msgid "gmail"
2381msgstr ""2394msgstr "gmail"
23822395
2383#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching2396#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
2384#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:702397#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:70
@@ -2388,7 +2401,7 @@
2388#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching2401#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
2389#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:722402#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:72
2390msgid "silent"2403msgid "silent"
2391msgstr ""2404msgstr "в фоновом режиме"
23922405
2393#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching2406#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
2394#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:742407#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:74
@@ -2417,7 +2430,7 @@
2417#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:822430#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:82
2418#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1182431#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:118
2419msgid "keyboard"2432msgid "keyboard"
2420msgstr ""2433msgstr "клавиатура"
24212434
2422#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching2435#. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
2423#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:842436#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:84
@@ -2527,12 +2540,12 @@
2527#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching2540#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching
2528#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1302541#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:130
2529msgid "punctuation"2542msgid "punctuation"
2530msgstr ""2543msgstr "пунктуация"
25312544
2532#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching2545#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching
2533#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1322546#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:132
2534msgid "layout"2547msgid "layout"
2535msgstr ""2548msgstr "раскладка"
25362549
2537#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching2550#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching
2538#. TRANSLATORS: This is a keyword or name for the brightness plugin which is used while searching2551#. TRANSLATORS: This is a keyword or name for the brightness plugin which is used while searching
@@ -2544,12 +2557,12 @@
2544#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching2557#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching
2545#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1362558#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:136
2546msgid "words"2559msgid "words"
2547msgstr ""2560msgstr "слова"
25482561
2549#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching2562#. TRANSLATORS: This is a keyword or name for the language plugin which is used while searching
2550#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1382563#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:138
2551msgid "vibration"2564msgid "vibration"
2552msgstr ""2565msgstr "вибро"
25532566
2554#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching2567#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching
2555#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2568#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
@@ -2561,7 +2574,7 @@
2561#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching2574#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching
2562#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1442575#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:144
2563msgid "services"2576msgid "services"
2564msgstr ""2577msgstr "службы"
25652578
2566#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching2579#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching
2567#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1462580#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:146
@@ -2571,7 +2584,7 @@
2571#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching2584#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching
2572#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1482585#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:148
2573msgid "waiting"2586msgid "waiting"
2574msgstr ""2587msgstr "ожидание"
25752588
2576#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching2589#. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching
2577#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1502590#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:150
@@ -2633,27 +2646,27 @@
2633#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching2646#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
2634#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1842647#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:184
2635msgid "4g"2648msgid "4g"
2636msgstr ""2649msgstr "4g"
26372650
2638#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching2651#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
2639#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1862652#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:186
2640msgid "3g"2653msgid "3g"
2641msgstr ""2654msgstr "3g"
26422655
2643#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching2656#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
2644#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1882657#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:188
2645msgid "2g"2658msgid "2g"
2646msgstr ""2659msgstr "2g"
26472660
2648#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching2661#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
2649#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1902662#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:190
2650msgid "lte"2663msgid "lte"
2651msgstr ""2664msgstr "lte"
26522665
2653#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching2666#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
2654#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1922667#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:192
2655msgid "apn"2668msgid "apn"
2656msgstr ""2669msgstr "apn"
26572670
2658#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching2671#. TRANSLATORS: This is a keyword or name for the cellular plugin which is used while searching
2659#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1942672#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:194
@@ -2665,7 +2678,7 @@
2665#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1962678#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:196
2666#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2262679#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:226
2667msgid "sim"2680msgid "sim"
2668msgstr ""2681msgstr "sim"
26692682
2670#. TRANSLATORS: This is a keyword or name for the example plugin which is used while searching2683#. TRANSLATORS: This is a keyword or name for the example plugin which is used while searching
2671#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:1982684#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:198
@@ -2710,7 +2723,7 @@
2710#. TRANSLATORS: This is a keyword or name for the flight-mode plugin which is used while searching2723#. TRANSLATORS: This is a keyword or name for the flight-mode plugin which is used while searching
2711#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2142724#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:214
2712msgid "airplane"2725msgid "airplane"
2713msgstr ""2726msgstr "автономно"
27142727
2715#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2728#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2716#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2202729#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:220
@@ -2725,22 +2738,22 @@
2725#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2738#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2726#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2282739#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:228
2727msgid "pin"2740msgid "pin"
2728msgstr ""2741msgstr "пин"
27292742
2730#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2743#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2731#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2302744#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:230
2732msgid "code"2745msgid "code"
2733msgstr ""2746msgstr "код"
27342747
2735#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2748#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2736#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2322749#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:232
2737msgid "password"2750msgid "password"
2738msgstr ""2751msgstr "пароль"
27392752
2740#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2753#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2741#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2342754#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:234
2742msgid "passphrase"2755msgid "passphrase"
2743msgstr ""2756msgstr "кодовая фраза"
27442757
2745#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2758#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2746#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2362759#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:236
@@ -2750,7 +2763,7 @@
2750#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2763#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2751#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2382764#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:238
2752msgid "allow"2765msgid "allow"
2753msgstr ""2766msgstr "разрешить"
27542767
2755#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching2768#. TRANSLATORS: This is a keyword or name for the security-privacy plugin which is used while searching
2756#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2402769#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:240
@@ -2812,7 +2825,7 @@
2812#. TRANSLATORS: This is a keyword or name for the bluetooth plugin which is used while searching2825#. TRANSLATORS: This is a keyword or name for the bluetooth plugin which is used while searching
2813#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2762826#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:276
2814msgid "stereo"2827msgid "stereo"
2815msgstr ""2828msgstr "стерео"
28162829
2817#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2830#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2818#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2802831#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:280
@@ -2832,27 +2845,27 @@
2832#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2845#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2833#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2902846#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:290
2834msgid "imei"2847msgid "imei"
2835msgstr ""2848msgstr "imei"
28362849
2837#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2850#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2838#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2922851#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:292
2839msgid "serial"2852msgid "serial"
2840msgstr ""2853msgstr "серийный номер"
28412854
2842#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2855#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2843#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2962856#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:296
2844msgid "mac"2857msgid "mac"
2845msgstr ""2858msgstr "mac"
28462859
2847#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2860#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2848#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:2982861#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:298
2849msgid "licenses"2862msgid "licenses"
2850msgstr ""2863msgstr "лицензии"
28512864
2852#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2865#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2853#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:3002866#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:300
2854msgid "developer"2867msgid "developer"
2855msgstr ""2868msgstr "разработчик"
28562869
2857#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2870#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2858#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:3042871#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:304
@@ -2872,7 +2885,7 @@
2872#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2885#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2873#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:3102886#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:310
2874msgid "version"2887msgid "version"
2875msgstr ""2888msgstr "версия"
28762889
2877#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching2890#. TRANSLATORS: This is a keyword or name for the about plugin which is used while searching
2878#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:3122891#: /home/elopio/workspace/canonical/ubuntu-system-settings/experimental/update-pot/builddir/po/settings.js:312
@@ -2926,11 +2939,11 @@
29262939
2927#: ../plugins/security-privacy//securityprivacy.cpp:3182940#: ../plugins/security-privacy//securityprivacy.cpp:318
2928msgid "Incorrect passcode. Try again."2941msgid "Incorrect passcode. Try again."
2929msgstr ""2942msgstr "Неправильный код. Попробуйте ещё раз."
29302943
2931#: ../plugins/security-privacy//securityprivacy.cpp:3202944#: ../plugins/security-privacy//securityprivacy.cpp:320
2932msgid "Incorrect passphrase. Try again."2945msgid "Incorrect passphrase. Try again."
2933msgstr ""2946msgstr "Неправильная кодовая фраза. Попробуйте ещё раз."
29342947
2935#: ../plugins/security-privacy//securityprivacy.cpp:3232948#: ../plugins/security-privacy//securityprivacy.cpp:323
2936msgid "Could not set security mode"2949msgid "Could not set security mode"
@@ -2963,39 +2976,3 @@
2963#: ../push-helper/software_updates_helper.py:1512976#: ../push-helper/software_updates_helper.py:151
2964msgid "Tap to open the system updater."2977msgid "Tap to open the system updater."
2965msgstr "Нажмите для открытия мастера обновления системы."2978msgstr "Нажмите для открытия мастера обновления системы."
2966
2967#~ msgid "Searching"
2968#~ msgstr "Поиск"
2969
2970#~ msgid "Refresh"
2971#~ msgstr "Обновить"
2972
2973#~ msgid "Remove"
2974#~ msgstr "Удалить"
2975
2976#~ msgid "settings"
2977#~ msgstr "настройки"
2978
2979#~ msgid "i18n"
2980#~ msgstr "i18n"
2981
2982#~ msgid "lang"
2983#~ msgstr "язык"
2984
2985#~ msgid "Password visible"
2986#~ msgstr "Отображать пароль"
2987
2988#~ msgid "Other network"
2989#~ msgstr "Другая сеть"
2990
2991#~ msgid "Connect to Wi-Fi"
2992#~ msgstr "Подключиться к Wi-Fi"
2993
2994#~ msgid "Available networks"
2995#~ msgstr "Доступные сети"
2996
2997#~ msgid "Those passphrases don't match."
2998#~ msgstr "Кодовые фразы не совпадают."
2999
3000#~ msgid "Passphrase must be at least four characters long."
3001#~ msgstr "Кодовая фраза должна содержать не менее четырёх символов."
30022979
=== modified file 'src/CMakeLists.txt'
--- src/CMakeLists.txt 2014-09-02 15:44:19 +0000
+++ src/CMakeLists.txt 2014-11-07 22:38:03 +0000
@@ -1,3 +1,5 @@
1include_directories(${GLIB_INCLUDE_DIRS})
2
1add_definitions(-DI18N_DIRECTORY="${CMAKE_INSTALL_PREFIX}/share/locale")3add_definitions(-DI18N_DIRECTORY="${CMAKE_INSTALL_PREFIX}/share/locale")
2add_definitions(-DI18N_DOMAIN="ubuntu-system-settings")4add_definitions(-DI18N_DOMAIN="ubuntu-system-settings")
3add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}")5add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}")
@@ -23,13 +25,14 @@
23 qml/MainWindow.qml25 qml/MainWindow.qml
24 qml/UncategorizedItemsView.qml26 qml/UncategorizedItemsView.qml
25 SystemSettings/ItemPage.qml27 SystemSettings/ItemPage.qml
28 SystemSettings/SettingsItemTitle.qml
26)29)
2730
28QT5_ADD_RESOURCES(system-settings-resources ui.qrc)31QT5_ADD_RESOURCES(system-settings-resources ui.qrc)
2932
30add_executable(system-settings ${USS_SOURCES} ${QML_SOURCES} ${system-settings-resources})33add_executable(system-settings ${USS_SOURCES} ${QML_SOURCES} ${system-settings-resources})
31qt5_use_modules(system-settings Core Gui Quick Qml)34qt5_use_modules(system-settings Core Gui Quick Qml)
32target_link_libraries(system-settings SystemSettings)35target_link_libraries(system-settings SystemSettings ${GLIB_LDFLAGS})
33install(TARGETS system-settings RUNTIME DESTINATION bin)36install(TARGETS system-settings RUNTIME DESTINATION bin)
3437
35add_library(uss-accountsservice SHARED accountsservice.h accountsservice.cpp)38add_library(uss-accountsservice SHARED accountsservice.h accountsservice.cpp)
3639
=== modified file 'src/SystemSettings/CMakeLists.txt'
--- src/SystemSettings/CMakeLists.txt 2014-08-11 16:13:17 +0000
+++ src/SystemSettings/CMakeLists.txt 2014-11-07 22:38:03 +0000
@@ -1,5 +1,6 @@
1set(QML_SOURCES1set(QML_SOURCES
2 ItemPage.qml2 ItemPage.qml
3 SettingsItemTitle.qml
3)4)
45
5set(PLUG_DIR ${PLUGIN_QML_DIR}/SystemSettings)6set(PLUG_DIR ${PLUGIN_QML_DIR}/SystemSettings)
67
=== added file 'src/SystemSettings/SettingsItemTitle.qml'
--- src/SystemSettings/SettingsItemTitle.qml 1970-01-01 00:00:00 +0000
+++ src/SystemSettings/SettingsItemTitle.qml 2014-11-07 22:38:03 +0000
@@ -0,0 +1,38 @@
1/*
2 * This file is part of system-settings
3 *
4 * Copyright (C) 2013 Canonical Ltd.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 3, as published
8 * by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranties of
12 * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
13 * PURPOSE. See the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19import QtQuick 2.0
20import Ubuntu.Components 0.1
21import Ubuntu.Components.ListItems 0.1 as ListItem
22
23ListItem.Standard {
24 id: itemEmpty
25 property string text
26 Label {
27 anchors {
28 left: parent.left
29 leftMargin: units.gu(2)
30 right: parent.right
31 rightMargin: units.gu(2)
32 top: parent.top
33 topMargin: units.gu(3)
34 }
35 text: itemEmpty.text
36 }
37 highlightWhenPressed: false
38}
039
=== modified file 'src/SystemSettings/qmldir'
--- src/SystemSettings/qmldir 2014-08-11 16:13:17 +0000
+++ src/SystemSettings/qmldir 2014-11-07 22:38:03 +0000
@@ -1,2 +1,3 @@
1module SystemSettings1module SystemSettings
2ItemPage 1.0 ItemPage.qml2ItemPage 1.0 ItemPage.qml
3SettingsItemTitle 1.0 SettingsItemTitle.qml
34
=== modified file 'src/main.cpp'
--- src/main.cpp 2014-10-21 15:20:07 +0000
+++ src/main.cpp 2014-11-07 22:38:03 +0000
@@ -85,6 +85,7 @@
85 Qt::QueuedConnection);85 Qt::QueuedConnection);
86 qmlRegisterType<QAbstractItemModel>();86 qmlRegisterType<QAbstractItemModel>();
87 qmlRegisterType<SystemSettings::PluginManager>("SystemSettings", 1, 0, "PluginManager");87 qmlRegisterType<SystemSettings::PluginManager>("SystemSettings", 1, 0, "PluginManager");
88 view.engine()->rootContext()->setContextProperty("Utilities", new Utilities());
88 view.setResizeMode(QQuickView::SizeRootObjectToView);89 view.setResizeMode(QQuickView::SizeRootObjectToView);
89 view.engine()->addImportPath(PLUGIN_PRIVATE_MODULE_DIR);90 view.engine()->addImportPath(PLUGIN_PRIVATE_MODULE_DIR);
90 view.engine()->addImportPath(PLUGIN_QML_DIR);91 view.engine()->addImportPath(PLUGIN_QML_DIR);
9192
=== modified file 'src/utils.cpp'
--- src/utils.cpp 2014-07-23 13:29:15 +0000
+++ src/utils.cpp 2014-11-07 22:38:03 +0000
@@ -21,6 +21,7 @@
21#include "utils.h"21#include "utils.h"
22#include "debug.h"22#include "debug.h"
2323
24#include <glib.h>
24#include <QUrl>25#include <QUrl>
25#include <QUrlQuery>26#include <QUrlQuery>
2627
@@ -59,4 +60,20 @@
59 }60 }
60}61}
6162
63Utilities::Utilities(QObject *parent) :
64 QObject(parent)
65{
66}
67
68QString Utilities::formatSize(quint64 size) const
69{
70 guint64 g_size = size;
71
72 gchar * formatted_size = g_format_size (g_size);
73 QString q_formatted_size = QString::fromLocal8Bit(formatted_size);
74 g_free (formatted_size);
75
76 return q_formatted_size;
77}
78
62} // namespace79} // namespace
6380
=== modified file 'src/utils.h'
--- src/utils.h 2013-09-30 09:29:34 +0000
+++ src/utils.h 2014-11-07 22:38:03 +0000
@@ -29,6 +29,14 @@
29void parsePluginOptions(const QStringList &arguments, QString &defaultPlugin,29void parsePluginOptions(const QStringList &arguments, QString &defaultPlugin,
30 QVariantMap &pluginOptions);30 QVariantMap &pluginOptions);
3131
32class Utilities : public QObject {
33 Q_OBJECT
34
35public:
36 explicit Utilities(QObject *parent = 0);
37 Q_INVOKABLE QString formatSize(quint64) const;
38};
39
32} // namespace40} // namespace
3341
34#endif // SYSTEM_SETTINGS_UTILS_H42#endif // SYSTEM_SETTINGS_UTILS_H
3543
=== modified file 'tests/CMakeLists.txt'
--- tests/CMakeLists.txt 2014-09-03 15:38:36 +0000
+++ tests/CMakeLists.txt 2014-11-07 22:38:03 +0000
@@ -1,4 +1,5 @@
1include_directories(${CMAKE_CURRENT_BINARY_DIR} ../src)1include_directories(${CMAKE_CURRENT_BINARY_DIR} ../src)
2include_directories(${GLIB_INCLUDE_DIRS})
2add_definitions(-DI18N_DOMAIN="ubuntu-system-settings")3add_definitions(-DI18N_DOMAIN="ubuntu-system-settings")
3add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}")4add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}")
4add_definitions(-DPLUGIN_MANIFEST_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data")5add_definitions(-DPLUGIN_MANIFEST_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
@@ -36,6 +37,7 @@
36set_tests_properties(tst-plugins PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal")37set_tests_properties(tst-plugins PROPERTIES ENVIRONMENT "QT_QPA_PLATFORM=minimal")
3738
38qt5_use_modules(tst-arguments Core Test)39qt5_use_modules(tst-arguments Core Test)
40target_link_libraries(tst-arguments ${GLIB_LDFLAGS})
39add_test(tst-arguments tst-arguments)41add_test(tst-arguments tst-arguments)
4042
41add_executable(tst-pagelist tst_pagelist.cpp ../wizard/PageList.cpp)43add_executable(tst-pagelist tst_pagelist.cpp ../wizard/PageList.cpp)
4244
=== modified file 'tests/autopilot/ubuntu_system_settings/__init__.py'
--- tests/autopilot/ubuntu_system_settings/__init__.py 2014-09-26 12:52:31 +0000
+++ tests/autopilot/ubuntu_system_settings/__init__.py 2014-11-07 22:38:03 +0000
@@ -1,3 +1,4 @@
1
1# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-2# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2#3#
3# Copyright (C) 2014 Canonical Ltd.4# Copyright (C) 2014 Canonical Ltd.
@@ -114,6 +115,10 @@
114 def go_to_wifi_page(self):115 def go_to_wifi_page(self):
115 return self._go_to_page('entryComponent-wifi', 'wifiPage')116 return self._go_to_page('entryComponent-wifi', 'wifiPage')
116117
118 @autopilot.logging.log_action(logger.debug)
119 def go_to_cellular_page(self):
120 return self._go_to_page('entryComponent-cellular', 'cellularPage')
121
117 def _go_to_page(self, item_object_name, page_object_name):122 def _go_to_page(self, item_object_name, page_object_name):
118 self.click_item(item_object_name)123 self.click_item(item_object_name)
119 page = self.wait_select_single(objectName=page_object_name)124 page = self.wait_select_single(objectName=page_object_name)
@@ -202,7 +207,7 @@
202 self._orientation_lock_switch.uncheck()207 self._orientation_lock_switch.uncheck()
203208
204209
205class CelullarPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):210class CellularPage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
206211
207 """Autopilot helper for the Sound page."""212 """Autopilot helper for the Sound page."""
208213
@@ -214,6 +219,164 @@
214 return True219 return True
215 return False220 return False
216221
222 @autopilot.logging.log_action(logger.debug)
223 def enable_data(self):
224 self._set_data(True)
225
226 @autopilot.logging.log_action(logger.debug)
227 def disable_data(self):
228 self._set_data(False)
229
230 def disable_datas(self):
231 self.select_sim_for_data('off')
232
233 @autopilot.logging.log_action(logger.debug)
234 def _set_data(self, data):
235 chk = self.select_single(objectName='data')
236 if data:
237 chk.check()
238 else:
239 chk.uncheck()
240
241 @autopilot.logging.log_action(logger.debug)
242 def get_data(self):
243 return self.select_single(objectName='data').checked
244
245 @autopilot.logging.log_action(logger.debug)
246 def enable_roaming(self, timeout=10):
247 self._set_roaming(True, timeout=timeout)
248
249 @autopilot.logging.log_action(logger.debug)
250 def disable_roaming(self, timeout=10):
251 self._set_roaming(False, timeout=timeout)
252
253 @autopilot.logging.log_action(logger.debug)
254 def _set_roaming(self, roaming, timeout):
255 chk = self.select_single(objectName='roaming')
256 if roaming:
257 chk.check(timeout=timeout)
258 else:
259 chk.uncheck(timeout=timeout)
260
261 @autopilot.logging.log_action(logger.debug)
262 def set_connection_type(self, radio_type, sim='/ril_0',
263 scroll_to_and_click=None):
264 self._set_connection_type(radio_type, sim, scroll_to_and_click)
265
266 @autopilot.logging.log_action(logger.debug)
267 def _set_connection_type(self, radio_type, sim, scroll_to_and_click):
268 t = self.wait_select_single(
269 'OptionSelectorDelegate',
270 objectName='%s_radio_%s' % (sim, radio_type))
271 if scroll_to_and_click:
272 scroll_to_and_click(t)
273 else:
274 t.swipe_into_view()
275
276 self.pointing_device.click_object(t)
277
278 @autopilot.logging.log_action(logger.debug)
279 def change_carrier(self, carrier, sim=None):
280 if sim:
281 carriersPage = self._click_carriers()
282 carrierPage = carriersPage.select_sim(sim)
283 else:
284 carrierPage = self._click_carrier()
285
286 carrierPage.set_manual()
287 carrierPage.set_carrier(carrier)
288
289 @autopilot.logging.log_action(logger.debug)
290 def _click_carrier(self):
291 item = self.select_single(objectName='carrier')
292 self.pointing_device.click_object(item)
293 return self.get_root_instance().wait_select_single(
294 objectName='chooseCarrierPage')
295
296 @autopilot.logging.log_action(logger.debug)
297 def _click_carriers(self):
298 item = self.select_single(objectName='carriers')
299 self.pointing_device.click_object(item)
300 return self.get_root_instance().wait_select_single(
301 objectName='chooseCarriersPage')
302
303 @autopilot.logging.log_action(logger.debug)
304 def select_sim_for_data(self, sim):
305 self._select_sim_for_data(sim)
306
307 @autopilot.logging.log_action(logger.debug)
308 def _select_sim_for_data(self, sim):
309 item = self.select_single(objectName='use%s' % sim)
310 self.pointing_device.click_object(item)
311
312 @autopilot.logging.log_action(logger.debug)
313 def select_sim_for_calls(self, sim):
314 pass
315
316 @autopilot.logging.log_action(logger.debug)
317 def select_sim_for_messages(self):
318 pass
319
320 @autopilot.logging.log_action(logger.debug)
321 def set_name(self, sim, name):
322 self._set_name(sim, name)
323
324 def get_name(self, sim):
325 obj = self.select_single(
326 objectName="label_%s" % sim)
327 return obj.text
328
329 def _set_name(self, sim, name):
330 obj = self.select_single(
331 objectName="edit_name_%s" % sim)
332 self.pointing_device.click_object(obj)
333
334 # wait for animation
335 sleep(1)
336 ok = self.select_single('Button', objectName="doRename")
337
338 field = self.select_single('TextField', objectName="nameField")
339 field.write(name)
340 self.pointing_device.click_object(ok)
341
342
343class PageChooseCarriers(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
344
345 """Autopilot helper for carrier selection page (multisim)."""
346
347 @autopilot.logging.log_action(logger.debug)
348 def select_sim(self, sim):
349 return self._select_sim(sim)
350
351 @autopilot.logging.log_action(logger.debug)
352 def _select_sim(self, sim):
353 item = self.select_single(objectName='%s_carriers' % sim)
354 self.pointing_device.click_object(item)
355 return self.get_root_instance().wait_select_single(
356 objectName='chooseCarrierPage')
357
358
359class PageChooseCarrier(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
360
361 """Autopilot helper for carrier selection page (singlesim)."""
362
363 @autopilot.logging.log_action(logger.debug)
364 def set_manual(self):
365 item = self.select_single(text='Manually')
366 self.pointing_device.click_object(item)
367
368 @autopilot.logging.log_action(logger.debug)
369 def set_automatic(self):
370 item = self.select_single(text='Automatically')
371 self.pointing_device.click_object(item)
372
373 def set_carrier(self, carrier):
374 # wait for animation, since page.animationRunning.wait_for(False)
375 # does not work?
376 sleep(0.5)
377 item = self.select_single(text=carrier)
378 self.pointing_device.click_object(item)
379
217380
218class TimeAndDatePage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):381class TimeAndDatePage(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
219382
@@ -678,6 +841,40 @@
678 return True841 return True
679 return False842 return False
680843
844 @autopilot.logging.log_action(logger.debug)
845 def enable_wireless(self):
846 self._set_wireless(True)
847
848 @autopilot.logging.log_action(logger.debug)
849 def disable_wireless(self):
850 self._set_wireless(False)
851
852 """
853 :returns: Whether or not WiFi can be used
854 """
855 @autopilot.logging.log_action(logger.debug)
856 def have_wireless(self):
857 try:
858 self.wait_select_single('SwitchMenuItem', text=_('Wi-Fi'))
859 except:
860 return False
861 return True
862
863 """Returns the current WiFi state
864
865 :returns: Whether or not WiFi is enabled
866 """
867 @autopilot.logging.log_action(logger.debug)
868 def get_wireless(self):
869 return self.wait_select_single(
870 'SwitchMenuItem', text=_('Wi-Fi')).checked
871
872 @autopilot.logging.log_action(logger.debug)
873 def _set_wireless(self, state):
874 obj = self.wait_select_single('SwitchMenuItem', text=_('Wi-Fi'))
875 if obj.checked != state:
876 self.pointing_device.click_object(obj)
877
681 """Connects to hidden network878 """Connects to hidden network
682879
683 :param name: Network name string (SSID)880 :param name: Network name string (SSID)
684881
=== modified file 'tests/autopilot/ubuntu_system_settings/tests/__init__.py'
--- tests/autopilot/ubuntu_system_settings/tests/__init__.py 2014-10-22 21:34:08 +0000
+++ tests/autopilot/ubuntu_system_settings/tests/__init__.py 2014-11-07 22:38:03 +0000
@@ -33,6 +33,7 @@
33RDO_IFACE = 'org.ofono.RadioSettings'33RDO_IFACE = 'org.ofono.RadioSettings'
34SIM_IFACE = 'org.ofono.SimManager'34SIM_IFACE = 'org.ofono.SimManager'
35NETREG_IFACE = 'org.ofono.NetworkRegistration'35NETREG_IFACE = 'org.ofono.NetworkRegistration'
36NETOP_IFACE = 'org.ofono.NetworkOperator'
36CALL_FWD_IFACE = 'org.ofono.CallForwarding'37CALL_FWD_IFACE = 'org.ofono.CallForwarding'
37CALL_SETTINGS_IFACE = 'org.ofono.CallSettings'38CALL_SETTINGS_IFACE = 'org.ofono.CallSettings'
38SYSTEM_IFACE = 'com.canonical.SystemImage'39SYSTEM_IFACE = 'com.canonical.SystemImage'
@@ -150,7 +151,7 @@
150 def mock_carriers(self, name):151 def mock_carriers(self, name):
151 self.dbusmock.AddObject(152 self.dbusmock.AddObject(
152 '/%s/operator/op2' % name,153 '/%s/operator/op2' % name,
153 'org.ofono.NetworkOperator',154 NETOP_IFACE,
154 {155 {
155 'Name': 'my.cool.telco',156 'Name': 'my.cool.telco',
156 'Status': 'available',157 'Status': 'available',
@@ -167,7 +168,7 @@
167 # Add a forbidden carrier168 # Add a forbidden carrier
168 self.dbusmock.AddObject(169 self.dbusmock.AddObject(
169 '/%s/operator/op3' % name,170 '/%s/operator/op3' % name,
170 'org.ofono.NetworkOperator',171 NETOP_IFACE,
171 {172 {
172 'Name': 'my.bad.telco',173 'Name': 'my.bad.telco',
173 'Status': 'forbidden',174 'Status': 'forbidden',
@@ -311,9 +312,12 @@
311312
312313
313class CellularBaseTestCase(UbuntuSystemSettingsOfonoTestCase):314class CellularBaseTestCase(UbuntuSystemSettingsOfonoTestCase):
315
314 def setUp(self):316 def setUp(self):
315 """ Go to Cellular page """317 """ Go to Cellular page """
316 super(CellularBaseTestCase, self).setUp('cellular')318 super(CellularBaseTestCase, self).setUp()
319 self.cellular_page = self.system_settings.\
320 main_view.go_to_cellular_page()
317321
318322
319class PhoneOfonoBaseTestCase(UbuntuSystemSettingsOfonoTestCase):323class PhoneOfonoBaseTestCase(UbuntuSystemSettingsOfonoTestCase):
320324
=== modified file 'tests/autopilot/ubuntu_system_settings/tests/test_cellular.py'
--- tests/autopilot/ubuntu_system_settings/tests/test_cellular.py 2014-10-09 14:09:38 +0000
+++ tests/autopilot/ubuntu_system_settings/tests/test_cellular.py 2014-11-07 22:38:03 +0000
@@ -5,537 +5,217 @@
5# under the terms of the GNU General Public License version 3, as published5# under the terms of the GNU General Public License version 3, as published
6# by the Free Software Foundation.6# by the Free Software Foundation.
77
8import dbus
9from gi.repository import Gio, GLib8from gi.repository import Gio, GLib
10from time import sleep9from time import sleep
1110
12from autopilot.introspection.dbus import StateNotFoundError11from autopilot.introspection.dbus import StateNotFoundError
13from autopilot.matchers import Eventually12from autopilot.matchers import Eventually
14from testtools.matchers import Equals, NotEquals, raises13from testtools.matchers import Equals, raises, StartsWith
15from unittest import skip
1614
17from ubuntu_system_settings.tests import (15from ubuntu_system_settings.tests import (
18 CellularBaseTestCase, CONNMAN_IFACE, RDO_IFACE, SIM_IFACE)16 CellularBaseTestCase, CONNMAN_IFACE, RDO_IFACE, NETREG_IFACE)
19from ubuntu_system_settings.utils.i18n import ugettext as _
20
21from ubuntuuitoolkit import emulators as toolkit_emulators
22
23
24PREFERENCE_2G = '2G only (saves battery)'
25PREFERENCE_UMTS = '2G/3G (faster)'
26PREFERENCE_LTE = '2G/3G/4G (faster)'
27PREFERENCE_OFF = 'Off'
28USE_OFF = "useoff"
29USE_SIM_1 = "use/ril_0"
30USE_SIM_2 = "use/ril_1"
3117
3218
33class CellularTestCase(CellularBaseTestCase):19class CellularTestCase(CellularBaseTestCase):
34 """ Tests for cellular Page """20
3521 def test_enable_data(self):
36 """Caches the technology preference selector"""22 self.cellular_page.enable_data()
37 _pref_selector = None23 self.assertThat(
3824 lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'),
39 @property25 Eventually(Equals(True))
40 def data_preference_selector(self):26 )
41 """Return data_preference_selector"""27
42 try:28 def test_disable_data(self):
43 self._pref_selector.get_properties()29 self.cellular_page.disable_data()
44 except:30 self.assertThat(
45 self._pref_selector = \31 lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'),
46 self.system_settings.main_view.cellular_page.select_single(32 Eventually(Equals(False))
47 toolkit_emulators.ItemSelector,33 )
48 objectName="technologyPreferenceSelector"34
49 )35 def test_remote_manipulation_of_data(self):
50 return self._pref_selector36 self.modem_0.EmitSignal(
5137 CONNMAN_IFACE,
52 def select_preference(self, label):38 'PropertyChanged',
53 """Helper method to click a preference which matches provided label"""39 'sv',
54 pref = self.data_preference_selector.select_single('Label', text=label)40 ['Powered', 'true'])
55 self.system_settings.main_view.pointing_device.click_object(pref)41
5642 self.assertThat(lambda: self.cellular_page.get_data(),
57 def assert_selected_preference(self, index):43 Eventually(Equals(True)))
58 """Helper method asserting that the selected data technology preference44
59 is that of index"""45 self.modem_0.EmitSignal(
60 self.assertThat(self.data_preference_selector.selectedIndex,46 CONNMAN_IFACE,
61 Eventually(Equals(index)))47 'PropertyChanged',
6248 'sv',
63 def navigate_to_carrier_page(self):49 ['Powered', 'false'])
64 selector = self.system_settings.main_view.cellular_page.select_single(50
65 objectName="chooseCarrier"51 self.assertThat(lambda: self.cellular_page.get_data(),
66 )52 Eventually(Equals(False)))
67 self.system_settings.main_view.scroll_to_and_click(selector)53
6854 def test_enable_roaming(self):
69 def navigate_to_manual(self):55 self.cellular_page.enable_roaming()
70 selector = self.choose_carrier_page.select_single(56 self.assertThat(
71 toolkit_emulators.ItemSelector,57 lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'),
72 objectName="autoChooseCarrierSelector"58 Eventually(Equals(True))
73 )59 )
74 manual = selector.select_single('Label', text=_("Manually"))60
75 self.system_settings.main_view.pointing_device.click_object(manual)61 def test_disable_roaming(self):
76 choosecarrier = self.system_settings.main_view.cellular_page.\62 self.cellular_page.disable_roaming()
77 select_single(objectName="chooseCarrier")63 self.assertThat(
78 self.system_settings.main_view.pointing_device.click_object(64 lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'),
79 choosecarrier)65 Eventually(Equals(False))
80 self.assertThat(66 )
81 self.system_settings.main_view.choose_page.title,67
82 Equals(_("Carrier"))68 def test_connection_type(self):
83 )69 get_pref = lambda: self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')
8470 for pref in ['lte', 'umts', 'gsm']:
85 def test_cellular_page(self):71 self.cellular_page.set_connection_type(pref)
86 """ Checks whether Cellular page is available """72 self.assertThat(get_pref, Eventually(Equals(pref)))
87 self.assertThat(73
88 self.system_settings.main_view.cellular_page,74 def test_current_carrier(self):
89 NotEquals(None)75 self.assertThat(lambda: self.modem_0.Get(NETREG_IFACE, 'Name'),
90 )76 Eventually(Equals('fake.tel')))
91 self.assertThat(77
92 self.system_settings.main_view.cellular_page.title,78 def test_change_carrier(self):
93 Equals(_('Cellular'))79 self.cellular_page.change_carrier('my.cool.telco')
94 )
95
96 def test_single_sim_layout(self):
97 self.system_settings.main_view.cellular_page.\
98 select_single(objectName="singleSim")
99 self.assertThat(lambda: self.system_settings.main_view.select_single(
100 objectName='multiSim'), raises(StateNotFoundError))
101 self.assertThat(lambda: self.system_settings.main_view.select_single(
102 objectName='noSim'), raises(StateNotFoundError))
103
104 def test_current_network(self):
105 """ Tests whether the current network is visible and selected """
106 self.navigate_to_carrier_page()
107 self.navigate_to_manual()
108 carriers = self.system_settings.main_view.choose_page.select_single(
109 toolkit_emulators.ItemSelector,
110 objectName="carrierSelector"
111 )
112 # TODO: Once there is a proper ItemSelector emulator, get the items
113 # from it and check 'fake.tel' is the selected one.
114 selected_delegate = carriers.select_single(
115 'OptionSelectorDelegate', selected=True)
116 selected_delegate.select_single('Label', text="fake.tel")
117
118 def test_alt_network(self):
119 """ Tests whether an alternative available network is displayed """
120 self.navigate_to_carrier_page()
121 self.navigate_to_manual()
122 carriers = self.system_settings.main_view.choose_page.select_single(
123 toolkit_emulators.ItemSelector,
124 objectName="carrierSelector"
125 )
126 manual = carriers.select_single('Label', text="my.cool.telco")
127 self.assertThat(manual, NotEquals(None))
12880
129 def test_no_forbidden_network(self):81 def test_no_forbidden_network(self):
130 """ Ensures that a forbidden network is not shown """82 """ Ensures that a forbidden network is not shown """
131 self.navigate_to_carrier_page()
132 self.navigate_to_manual()
133 carriers = self.system_settings.main_view.choose_page.select_single(
134 toolkit_emulators.ItemSelector,
135 objectName="carrierSelector"
136 )
137 self.assertThat(83 self.assertThat(
138 lambda: carriers.select_single('Label', text="my.bad.telco"),84 lambda: self.cellular_page.change_carrier('my.bad.telco'),
139 raises(StateNotFoundError)85 raises(StateNotFoundError)
140 )86 )
14187
142 def test_set_sim_offline(self):
143 self.select_preference(PREFERENCE_OFF)
144
145 sleep(0.7)
146
147 self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered'))
148
149 def test_set_sim_online(self):
150 self.select_preference(PREFERENCE_OFF)
151 sleep(0.7)
152 self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered'))
153
154 self.select_preference(PREFERENCE_UMTS)
155 sleep(0.7)
156 self.assertEqual(True, self.modem_0.Get(CONNMAN_IFACE, 'Powered'))
157
158 def test_roaming_switch(self):
159 """Test that switching off cellular data disables roaming switch"""
160 roaming_switch = self.system_settings.main_view.select_single(
161 objectName="dataRoamingSwitch"
162 )
163 # select 2G only
164 self.select_preference(PREFERENCE_2G)
165
166 # assert that roaming_switch is enabled
167 self.assertThat(
168 roaming_switch.get_properties()['enabled'],
169 Eventually(Equals(True)))
170
171 # click off
172 self.select_preference(PREFERENCE_OFF)
173 # assert roaming_switch is disabled
174 self.assertThat(
175 roaming_switch.get_properties()['enabled'],
176 Eventually(Equals(False)))
177
178 def test_allow_roaming(self):
179 roaming_switch = self.system_settings.main_view.select_single(
180 objectName="dataRoamingSwitch"
181 )
182 self.system_settings.main_view.scroll_to_and_click(roaming_switch)
183 sleep(1.5)
184 self.assertEqual(
185 True, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'))
186
187 def test_change_data_preference(self):
188 self.select_preference(PREFERENCE_2G)
189 sleep(0.7)
190 self.assertEqual('gsm', self.modem_0.Get(RDO_IFACE,
191 'TechnologyPreference'))
192 self.select_preference(PREFERENCE_UMTS)
193 sleep(0.7)
194 self.assertEqual('umts', self.modem_0.Get(RDO_IFACE,
195 'TechnologyPreference'))
196
197 def test_sim_online_status_insensitive_to_radio_preference(self):
198 # turn off cellular data
199 self.select_preference(PREFERENCE_OFF)
200
201 # fake dbus signal, changing to umts
202 self.modem_0.EmitSignal(
203 'org.ofono.RadioSettings',
204 'PropertyChanged',
205 'sv',
206 ['TechnologyPreference', dbus.String('umts', variant_level=1)])
207
208 # assert that "Off" has not changed
209 self.assert_selected_preference(0)
210
211 def test_ui_reacts_to_sim_set_coming_online(self):
212 self.select_preference(PREFERENCE_2G)
213 self.select_preference(PREFERENCE_OFF)
214
215 sleep(0.7)
216
217 self.modem_0.EmitSignal(
218 CONNMAN_IFACE,
219 'PropertyChanged',
220 'sv',
221 ['Powered', 'true'])
222
223 # assert that 2G is selected
224 self.assert_selected_preference(1)
225
226 def test_unlocking_sim(self):
227 '''Like it would if the sim was locked, e.g.'''
228 self.modem_0.Set(RDO_IFACE, 'TechnologyPreference',
229 dbus.String('', variant_level=1))
230
231 self.system_settings.main_view.go_back()
232
233 self.system_settings.main_view.pointing_device.click_object(
234 self.system_settings.main_view.select_single(
235 objectName='entryComponent-cellular'))
236
237 self.assert_selected_preference(-1)
238 self.assertFalse(self.data_preference_selector.enabled)
239
240 self.modem_0.EmitSignal(
241 'org.ofono.RadioSettings',
242 'PropertyChanged',
243 'sv',
244 ['TechnologyPreference', dbus.String('lte', variant_level=1)])
245
246 self.assert_selected_preference(3)
247
24888
249class DualSimCellularTestCase(CellularBaseTestCase):89class DualSimCellularTestCase(CellularBaseTestCase):
25090
251 use_sims = 291 use_sims = 2
25292
253 def navigate_to_carriers_page(self):93 def test_data_off(self):
254 selector = self.system_settings.main_view.cellular_page.select_single(94 self.cellular_page.disable_datas()
255 objectName="chooseCarrier"95 self.assertThat(
256 )96 lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'),
257 self.system_settings.main_view.scroll_to_and_click(selector)97 Eventually(Equals(False))
25898 )
259 def navigate_to_carrier_page_for_sim(self, n):99 self.assertThat(
260 selector = self.choose_carriers_page.select_single(100 lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'),
261 objectName="chooseCarrierSim%d" % n101 Eventually(Equals(False))
262 )102 )
263 self.system_settings.main_view.scroll_to_and_click(selector)103
264104 def test_sim1_online(self):
265 def navigate_to_manual(self):105 self.cellular_page.select_sim_for_data('/ril_0')
266 selector = self.choose_carrier_page.select_single(106 self.assertThat(
267 toolkit_emulators.ItemSelector,107 lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'),
268 objectName="autoChooseCarrierSelector"108 Eventually(Equals(True))
269 )109 )
270 manual = selector.select_single('Label', text=_("Manually"))110 self.assertThat(
271 self.system_settings.main_view.scroll_to_and_click(manual)111 lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'),
272 choosecarrier = self.system_settings.main_view.cellular_page.\112 Eventually(Equals(False))
273 select_single(objectName="chooseCarrier")113 )
274 self.system_settings.main_view.scroll_to_and_click(choosecarrier)114
275 self.assertThat(115 def test_sim2_online(self):
276 self.system_settings.main_view.choose_page.title,116 self.cellular_page.select_sim_for_data('/ril_1')
277 Equals(_("Carrier"))117 self.assertThat(
278 )118 lambda: self.modem_0.Get(CONNMAN_IFACE, 'Powered'),
279119 Eventually(Equals(False))
280 @property120 )
281 def data_preference_selector(self):121 self.assertThat(
282 """Return data_preference_selector"""122 lambda: self.modem_1.Get(CONNMAN_IFACE, 'Powered'),
123 Eventually(Equals(True))
124 )
125
126 def test_connection_type_on_sim1(self):
127 sim = '/ril_0'
128 stac = self.system_settings.main_view.scroll_to_and_click
129 self.cellular_page.select_sim_for_data(sim)
130 get_pref = lambda: self.modem_0.Get(RDO_IFACE, 'TechnologyPreference')
131 for pref in ['lte', 'umts', 'gsm']:
132 self.cellular_page.set_connection_type(
133 pref, sim=sim, scroll_to_and_click=stac)
134 self.assertThat(get_pref, Eventually(Equals(pref)))
135
136 def test_connection_type_on_sim2(self):
137 sim = '/ril_1'
138 stac = self.system_settings.main_view.scroll_to_and_click
139 self.cellular_page.select_sim_for_data(sim)
140 get_pref = lambda: self.modem_1.Get(RDO_IFACE, 'TechnologyPreference')
141 for pref in ['gsm']:
142 self.cellular_page.set_connection_type(
143 pref, sim=sim, scroll_to_and_click=stac)
144 self.assertThat(get_pref, Eventually(Equals(pref)))
145
146 def test_current_carrier_sim1(self):
147 self.assertThat(lambda: self.modem_0.Get(NETREG_IFACE, 'Name'),
148 Eventually(Equals('fake.tel')))
149
150 def test_change_carrier_sim1(self):
151 sim = '/ril_0'
152 self.cellular_page.change_carrier('my.cool.telco', sim=sim)
153
154 def test_current_carrier_sim2(self):
155 self.assertThat(lambda: self.modem_1.Get(NETREG_IFACE, 'Name'),
156 Eventually(Equals('fake.tel')))
157
158 def test_change_carrier_sim2(self):
159 sim = '/ril_1'
160 self.cellular_page.change_carrier('my.cool.telco', sim=sim)
161
162 def test_change_sim1_name(self):
163 gsettings = Gio.Settings.new('com.ubuntu.phone')
164 sim = '/ril_0'
283 try:165 try:
284 self._pref_selector.get_properties()166 old_name = gsettings.get_value('sim-names')[sim]
285 except:167 except:
286 self._pref_selector = \168 old_name = 'SIM 1'
287 self.system_settings.main_view.cellular_page.select_single(
288 toolkit_emulators.ItemSelector,
289 objectName="technologyPreferenceSelector"
290 )
291 return self._pref_selector
292
293 def select_preference(self, label):
294 """Helper method that clicks a preference
295 that matches provided label"""
296 pref = self.data_preference_selector.select_single('Label', text=label)
297 self.system_settings.main_view.scroll_to_and_click(pref)
298
299 def assert_selected_preference(self, index):
300 """Helper method asserting that the selected
301 data technology preference is that of index"""
302 self.assertThat(
303 self.data_preference_selector.selectedIndex,
304 Eventually(Equals(index)))
305
306 def use_selector(self, label):
307 obj = self.system_settings.main_view.cellular_page.select_single(
308 objectName="use"
309 ).select_single(objectName=label)
310 self.system_settings.main_view.scroll_to_and_click(obj)
311
312 def assert_used(self, index):
313 obj = self.system_settings.main_view.cellular_page.select_single(
314 objectName="use"
315 )
316 self.assertThat(
317 obj.selectedIndex, Eventually(Equals(index)))
318
319 def get_sim_name(self, num):
320 obj = self.system_settings.main_view.cellular_page.select_single(
321 objectName="simLabel%d" % num)
322 return obj.get_properties()['text']
323
324 def rename_sim(self, num, new_name):
325 obj = self.system_settings.main_view.cellular_page.select_single(
326 objectName="simEditor"
327 ).select_single(objectName="editSim%d" % num)
328 self.system_settings.main_view.scroll_to_and_click(obj)
329 field = self.system_settings.main_view.cellular_page.select_single(
330 objectName="nameField"
331 )
332 self.system_settings.main_view.scroll_to_and_click(field)
333 self.system_settings.main_view.scroll_to_and_click(
334 field.select_single(objectName="clear_button"))
335 self.keyboard.type(new_name)
336 self.system_settings.main_view.scroll_to_and_click(
337 self.system_settings.main_view.cellular_page.select_single(
338 objectName="doRename"))
339
340 def test_use_sim_1(self):
341 self.use_selector(USE_OFF)
342 self.use_selector(USE_SIM_1)
343 sleep(0.7)
344 self.assertEqual(True, self.modem_0.Get(CONNMAN_IFACE, 'Powered'))
345 self.assertEqual(False, self.modem_1.Get(CONNMAN_IFACE, 'Powered'))
346
347 def test_use_sim_2(self):
348 self.use_selector(USE_OFF)
349 self.use_selector(USE_SIM_2)
350 sleep(0.7)
351 self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered'))
352 self.assertEqual(True, self.modem_1.Get(CONNMAN_IFACE, 'Powered'))
353
354 def test_turn_off_both_sims(self):
355 self.use_selector(USE_OFF)
356 sleep(0.7)
357 self.assertEqual(False, self.modem_0.Get(CONNMAN_IFACE, 'Powered'))
358 self.assertEqual(False, self.modem_1.Get(CONNMAN_IFACE, 'Powered'))
359
360 def test_use_gsm_for_sim_1(self):
361 self.use_selector(USE_SIM_1)
362 self.select_preference(PREFERENCE_2G)
363 sleep(0.7)
364 self.assertEqual(
365 'gsm', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference'))
366
367 def test_use_umts_for_sim_1(self):
368 self.use_selector(USE_SIM_1)
369 self.select_preference(PREFERENCE_UMTS)
370 sleep(0.7)
371 self.assertEqual(
372 'umts', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference'))
373
374 def test_use_gsm_for_sim_2(self):
375 self.use_selector(USE_SIM_1)
376 self.select_preference(PREFERENCE_2G)
377 sleep(0.7)
378 self.assertEqual(
379 'gsm', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference'))
380
381 def test_when_sim_1_comes_online_ui_is_correct(self):
382 self.use_selector(USE_SIM_1)
383 self.select_preference(PREFERENCE_UMTS)
384 self.use_selector(USE_OFF)
385 sleep(0.7)
386 self.modem_0.Set(CONNMAN_IFACE, 'Powered', True)
387 self.modem_0.EmitSignal(
388 CONNMAN_IFACE,
389 'PropertyChanged',
390 'sv',
391 ['Powered', 'true'])
392
393 self.assertEqual(
394 'umts', self.modem_0.Get(RDO_IFACE, 'TechnologyPreference'))
395 self.assert_used(1)
396 self.assert_selected_preference(1)
397
398 def test_when_sim_2_comes_online_ui_is_correct(self):
399 self.use_selector(USE_SIM_2)
400 self.select_preference(PREFERENCE_2G)
401 self.use_selector(USE_OFF)
402 sleep(2)
403 self.modem_1.Set(CONNMAN_IFACE, 'Powered', True)
404 self.modem_1.EmitSignal(
405 CONNMAN_IFACE,
406 'PropertyChanged',
407 'sv',
408 ['Powered', 'true'])
409
410 self.assertEqual(
411 'gsm', self.modem_1.Get(RDO_IFACE, 'TechnologyPreference'))
412 self.assert_used(2)
413 self.assert_selected_preference(0)
414
415 def test_roaming_switch(self):
416 roaming_switch = self.system_settings.main_view.select_single(
417 objectName="dataRoamingSwitch"
418 )
419 # assert that roaming_switch is enabled
420 self.assertTrue(roaming_switch.get_properties()['enabled'])
421
422 # click off
423 self.use_selector(USE_OFF)
424
425 # assert roaming_switch is disabled
426 self.assertThat(
427 roaming_switch.get_properties()['enabled'],
428 Eventually(Equals(False)))
429
430 def test_allow_roaming(self):
431 self.use_selector(USE_SIM_1)
432 self.assertEqual(
433 False, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'))
434 roaming_switch = self.system_settings.main_view.select_single(
435 objectName="dataRoamingSwitch"
436 )
437 self.system_settings.main_view.scroll_to_and_click(roaming_switch)
438 sleep(1.5)
439 self.assertEqual(
440 True, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'))
441
442 def test_no_radio_preference(self):
443 self.select_preference(PREFERENCE_UMTS)
444 self.use_selector(USE_OFF)
445
446 self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', '')
447 self.modem_0.EmitSignal(
448 CONNMAN_IFACE,
449 'PropertyChanged',
450 'sv',
451 ['TechnologyPreference', ''])
452
453 self.assertThat(
454 self.data_preference_selector.get_properties()['visible'],
455 Eventually(Equals(False)))
456
457 # see
458 # https://gitorious.org/python-dbusmock/python-dbusmock/merge_requests/3
459 @skip('skipped due to bug in dbusmock')
460 def test_change_op_sim_1(self):
461 self.navigate_to_carriers_page()
462 self.navigate_to_carrier_page_for_sim(1)
463 carriers = self.system_settings.main_view.choose_page.select_single(
464 toolkit_emulators.ItemSelector, objectName="carrierSelector")
465 manual = carriers.select_single('Label', text="my.cool.telco")
466 self.assertThat(manual, NotEquals(None))
467
468 # see
469 # https://gitorious.org/python-dbusmock/python-dbusmock/merge_requests/3
470 @skip('skipped due to bug in dbusmock')
471 def test_change_op_sim_2(self):
472 self.navigate_to_carriers_page()
473 self.navigate_to_carrier_page_for_sim(2)
474 carriers = self.system_settings.main_view.choose_page.select_single(
475 toolkit_emulators.ItemSelector, objectName="carrierSelector")
476 manual = carriers.select_single('Label', text="my.cool.telco")
477 self.assertThat(manual, NotEquals(None))
478
479 def test_radio_preference_changes(self):
480 self.use_selector(USE_SIM_1)
481
482 self.modem_0.Set(RDO_IFACE, 'TechnologyPreference', 'umts')
483 self.modem_0.EmitSignal(
484 RDO_IFACE,
485 'PropertyChanged',
486 'sv',
487 ['TechnologyPreference', 'umts'])
488
489 self.assert_selected_preference(1)
490
491 def test_changing_sim1_name(self):
492 gsettings = Gio.Settings.new('com.ubuntu.phone')
493 old_name = gsettings.get_value('sim-names')['/ril_0']
494 new_name = 'FOO BAR'169 new_name = 'FOO BAR'
495 self.rename_sim(1, new_name)170 self.cellular_page.set_name(sim, new_name)
496171
497 # wait for gsettings
498 sleep(1)
499 try:172 try:
500 self.assertEqual(173 self.assertThat(
501 new_name, gsettings.get_value('sim-names')['/ril_0'])174 lambda: gsettings.get_value('sim-names')[sim],
175 Eventually(Equals(new_name)))
502 except Exception as e:176 except Exception as e:
503 raise e177 raise e
504 finally:178 finally:
505 self.rename_sim(1, old_name)179 self.cellular_page.set_name(sim, old_name)
180 # wait for gsettings
506 sleep(1)181 sleep(1)
507182
508 def test_changing_sim2_name(self):183 def test_change_sim2_name(self):
509 gsettings = Gio.Settings.new('com.ubuntu.phone')184 gsettings = Gio.Settings.new('com.ubuntu.phone')
510 old_name = gsettings.get_value('sim-names')['/ril_1']185 sim = '/ril_1'
186
187 try:
188 old_name = gsettings.get_value('sim-names')[sim]
189 except:
190 old_name = 'SIM 2'
191
511 new_name = 'BAR BAZ'192 new_name = 'BAR BAZ'
512 self.rename_sim(2, new_name)193 self.cellular_page.set_name(sim, new_name)
513194
514 # wait for gsettings
515 sleep(1)
516 try:195 try:
517 self.assertEqual(196 self.assertThat(
518 new_name, gsettings.get_value('sim-names')['/ril_1'])197 lambda: gsettings.get_value('sim-names')[sim],
198 Eventually(Equals(new_name)))
519 except Exception as e:199 except Exception as e:
520 raise e200 raise e
521 finally:201 finally:
522 self.rename_sim(2, old_name)202 self.cellular_page.set_name(sim, old_name)
523 # wait for gsettings203 # wait for gsettings
524 sleep(1)204 sleep(1)
525205
526 def test_changes_to_sim_names_in_gsettings_are_reflected_in_ui(self):206 def test_remote_manipulation_of_name(self):
527 gsettings = Gio.Settings.new('com.ubuntu.phone')207 gsettings = Gio.Settings.new('com.ubuntu.phone')
528 old_names = gsettings.get_value('sim-names')208 old_names = gsettings.get_value('sim-names')
529209 sim = '/ril_0'
210 name = 'BAS QUX'
530 new_names = old_names.unpack()211 new_names = old_names.unpack()
531 new_names['/ril_0'] = 'BAS QUX'212 new_names[sim] = name
532 new_names = GLib.Variant('a{ss}', new_names)213 new_names = GLib.Variant('a{ss}', new_names)
533 gsettings.set_value('sim-names', new_names)214 gsettings.set_value('sim-names', new_names)
534
535 # wait for gsettings
536 sleep(1)
537 try:215 try:
538 self.assertIn(new_names['/ril_0'], self.get_sim_name(1))216 self.assertThat(
217 lambda: self.cellular_page.get_name(sim),
218 Eventually(StartsWith(name)))
539 except Exception as e:219 except Exception as e:
540 raise e220 raise e
541 finally:221 finally:
@@ -543,6 +223,36 @@
543 # wait for gsettings223 # wait for gsettings
544 sleep(1)224 sleep(1)
545225
226 def test_roaming_switch(self):
227 self.cellular_page.disable_datas()
228 # assert roaming_switch is disabled
229 self.assertThat(
230 lambda: self.cellular_page.enable_roaming(timeout=1),
231 raises(AssertionError)
232 )
233
234 def test_allow_roaming_sim_1(self):
235 sim = '/ril_0'
236 self.cellular_page.select_sim_for_data(sim)
237
238 self.assertEqual(
239 False, self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'))
240 self.cellular_page.enable_roaming()
241 self.assertThat(
242 lambda: self.modem_0.Get(CONNMAN_IFACE, 'RoamingAllowed'),
243 Eventually(Equals(True)))
244
245 def test_allow_roaming_sim_2(self):
246 sim = '/ril_1'
247 self.cellular_page.select_sim_for_data(sim)
248
249 self.assertEqual(
250 False, self.modem_1.Get(CONNMAN_IFACE, 'RoamingAllowed'))
251 self.cellular_page.enable_roaming()
252 self.assertThat(
253 lambda: self.modem_1.Get(CONNMAN_IFACE, 'RoamingAllowed'),
254 Eventually(Equals(True)))
255
546 def test_changing_default_sim_for_calls(self):256 def test_changing_default_sim_for_calls(self):
547 gsettings = Gio.Settings.new('com.ubuntu.phone')257 gsettings = Gio.Settings.new('com.ubuntu.phone')
548 default = gsettings.get_value('default-sim-for-calls')258 default = gsettings.get_value('default-sim-for-calls')
@@ -556,11 +266,10 @@
556 # click first sim266 # click first sim
557 self.system_settings.main_view.scroll_to_and_click(267 self.system_settings.main_view.scroll_to_and_click(
558 self.get_default_sim_for_calls_selector('/ril_0'))268 self.get_default_sim_for_calls_selector('/ril_0'))
559 # wait for gsettings269
560 sleep(1)270 self.assertThat(
561 self.assertEqual(271 lambda: gsettings.get_value('default-sim-for-calls').get_string(),
562 gsettings.get_value('default-sim-for-calls').get_string(),272 Eventually(Equals('/ril_0')))
563 '/ril_0')
564273
565 def test_changing_default_sim_for_messages(self):274 def test_changing_default_sim_for_messages(self):
566 gsettings = Gio.Settings.new('com.ubuntu.phone')275 gsettings = Gio.Settings.new('com.ubuntu.phone')
@@ -574,108 +283,8 @@
574 # click second sim283 # click second sim
575 self.system_settings.main_view.scroll_to_and_click(284 self.system_settings.main_view.scroll_to_and_click(
576 self.get_default_sim_for_messages_selector('/ril_1'))285 self.get_default_sim_for_messages_selector('/ril_1'))
577 # wait for gsettings286
578 sleep(1)287 self.assertThat(
579 self.assertEqual(288 lambda:
580 gsettings.get_value('default-sim-for-messages').get_string(),289 gsettings.get_value('default-sim-for-messages').get_string(),
581 '/ril_1')290 Eventually(Equals('/ril_1')))
582
583 def test_multi_sim_layout(self):
584 self.system_settings.main_view.cellular_page.\
585 select_single(objectName="multiSim")
586 self.assertThat(lambda: self.system_settings.main_view.select_single(
587 objectName='singleSim'), raises(StateNotFoundError))
588 self.assertThat(lambda: self.system_settings.main_view.select_single(
589 objectName='noSim'), raises(StateNotFoundError))
590
591 def test_remove_one_sim(self):
592 self.modem_0.EmitSignal(
593 SIM_IFACE,
594 'PropertyChanged',
595 'sv',
596 ['Present', 'False'])
597
598 self.system_settings.main_view.cellular_page.\
599 select_single(objectName="singleSim")
600 self.assertThat(lambda: self.system_settings.main_view.select_single(
601 objectName='multiSim'), raises(StateNotFoundError))
602 self.assertThat(lambda: self.system_settings.main_view.select_single(
603 objectName='noSim'), raises(StateNotFoundError))
604
605 def test_remove_two_sims(self):
606 self.modem_0.EmitSignal(
607 SIM_IFACE,
608 'PropertyChanged',
609 'sv',
610 ['Present', 'False'])
611
612 self.modem_1.EmitSignal(
613 SIM_IFACE,
614 'PropertyChanged',
615 'sv',
616 ['Present', 'False'])
617
618 self.system_settings.main_view.cellular_page.\
619 wait_select_single(objectName="noSim")
620 self.assertThat(
621 lambda: self.system_settings.main_view.select_single(
622 objectName='multiSim'), raises(StateNotFoundError))
623 self.assertThat(
624 lambda: self.system_settings.main_view.select_single(
625 objectName='singleSim'), raises(StateNotFoundError))
626
627 def test_remove_and_insert_sims(self):
628 self.modem_0.EmitSignal(
629 SIM_IFACE,
630 'PropertyChanged',
631 'sv',
632 ['Present', 'False'])
633
634 self.modem_1.EmitSignal(
635 SIM_IFACE,
636 'PropertyChanged',
637 'sv',
638 ['Present', 'False'])
639
640 self.system_settings.main_view.cellular_page.\
641 wait_select_single(objectName="noSim")
642 self.assertThat(
643 lambda: self.system_settings.main_view.select_single(
644 objectName='multiSim'), raises(StateNotFoundError))
645 self.assertThat(
646 lambda: self.system_settings.main_view.select_single(
647 objectName='singleSim'), raises(StateNotFoundError))
648
649 self.modem_0.EmitSignal(
650 SIM_IFACE,
651 'PropertyChanged',
652 'sv',
653 ['Present', 'True'])
654
655 self.modem_1.EmitSignal(
656 SIM_IFACE,
657 'PropertyChanged',
658 'sv',
659 ['Present', 'True'])
660
661 self.system_settings.main_view.cellular_page.\
662 wait_select_single(objectName="multiSim")
663 self.assertThat(
664 lambda: self.system_settings.main_view.select_single(
665 objectName='noSim'), raises(StateNotFoundError))
666 self.assertThat(
667 lambda: self.system_settings.main_view.select_single(
668 objectName='singleSim'), raises(StateNotFoundError))
669
670 # regression test for 1375832
671 # tests that the second slot only exposes gsm, which
672 # the testdata indicates
673 def test_slot_two(self):
674 self.modem_0.EmitSignal(
675 SIM_IFACE,
676 'PropertyChanged',
677 'sv',
678 ['Present', 'False'])
679 self.select_preference(PREFERENCE_2G)
680 self.assertRaises(StateNotFoundError,
681 self.select_preference, PREFERENCE_UMTS)
682291
=== modified file 'tests/autopilot/ubuntu_system_settings/tests/test_wifi.py'
--- tests/autopilot/ubuntu_system_settings/tests/test_wifi.py 2014-09-26 12:52:31 +0000
+++ tests/autopilot/ubuntu_system_settings/tests/test_wifi.py 2014-11-07 22:38:03 +0000
@@ -25,6 +25,11 @@
25 Equals(_('Wi-Fi')))25 Equals(_('Wi-Fi')))
2626
27 def test_connect_to_hidden_network(self):27 def test_connect_to_hidden_network(self):
28 if not self.wifi_page.have_wireless():
29 self.skipTest('Cannot test wireless since it cannot be enabled')
30 self.addCleanup(
31 self.wifi_page._set_wireless, self.wifi_page.get_wireless())
32 self.wifi_page.enable_wireless()
28 dialog = self.wifi_page.connect_to_hidden_network(33 dialog = self.wifi_page.connect_to_hidden_network(
29 'yeah',34 'yeah',
30 scroll_to_and_click=self.system_settings.main_view35 scroll_to_and_click=self.system_settings.main_view
@@ -47,7 +52,11 @@
47 dialog.wait_until_destroyed()52 dialog.wait_until_destroyed()
4853
49 def test_connect_to_nonexistant_hidden_network(self):54 def test_connect_to_nonexistant_hidden_network(self):
5055 if not self.wifi_page.have_wireless():
56 self.skipTest('Cannot test wireless since it cannot be enabled')
57 self.addCleanup(
58 self.wifi_page._set_wireless, self.wifi_page.get_wireless())
59 self.wifi_page.enable_wireless()
51 dialog = self.wifi_page.connect_to_hidden_network(60 dialog = self.wifi_page.connect_to_hidden_network(
52 'yeah',61 'yeah',
53 scroll_to_and_click=self.system_settings.main_view62 scroll_to_and_click=self.system_settings.main_view
@@ -72,6 +81,11 @@
7281
73 @skip('skipped due to bug 1337556')82 @skip('skipped due to bug 1337556')
74 def test_connect_to_hidden_network_using_secrets(self):83 def test_connect_to_hidden_network_using_secrets(self):
84 if not self.wifi_page.have_wireless():
85 self.skipTest('Cannot test wireless since it cannot be enabled')
86 self.addCleanup(
87 self.wifi_page._set_wireless, self.wifi_page.get_wireless())
88 self.wifi_page.enable_wireless()
75 dialog = self.wifi_page.connect_to_hidden_network(89 dialog = self.wifi_page.connect_to_hidden_network(
76 'yeah', security='wpa', password='abcdefgh',90 'yeah', security='wpa', password='abcdefgh',
77 scroll_to_and_click=self.system_settings.main_view91 scroll_to_and_click=self.system_settings.main_view
@@ -95,6 +109,11 @@
95109
96 @skip('skipped due to bug 1337556')110 @skip('skipped due to bug 1337556')
97 def test_connect_to_hidden_network_using_incorrect_secrets(self):111 def test_connect_to_hidden_network_using_incorrect_secrets(self):
112 if not self.wifi_page.have_wireless():
113 self.skipTest('Cannot test wireless since it cannot be enabled')
114 self.addCleanup(
115 self.wifi_page._set_wireless, self.wifi_page.get_wireless())
116 self.wifi_page.enable_wireless()
98 dialog = self.wifi_page.connect_to_hidden_network(117 dialog = self.wifi_page.connect_to_hidden_network(
99 'yeah', security='wpa', password='abcdefgh',118 'yeah', security='wpa', password='abcdefgh',
100 scroll_to_and_click=self.system_settings.main_view119 scroll_to_and_click=self.system_settings.main_view
@@ -117,7 +136,11 @@
117 _('Your authentication details were incorrect'))))136 _('Your authentication details were incorrect'))))
118137
119 def test_connect_to_hidden_network_then_cancel(self):138 def test_connect_to_hidden_network_then_cancel(self):
120139 if not self.wifi_page.have_wireless():
140 self.skipTest('Cannot test wireless since it cannot be enabled')
141 self.addCleanup(
142 self.wifi_page._set_wireless, self.wifi_page.get_wireless())
143 self.wifi_page.enable_wireless()
121 dialog = self.wifi_page.connect_to_hidden_network(144 dialog = self.wifi_page.connect_to_hidden_network(
122 'foo',145 'foo',
123 scroll_to_and_click=self.system_settings.main_view146 scroll_to_and_click=self.system_settings.main_view
@@ -134,6 +157,18 @@
134 len(self.device_mock.GetMethodCalls('Disconnect')),157 len(self.device_mock.GetMethodCalls('Disconnect')),
135 Eventually(Equals(1)))158 Eventually(Equals(1)))
136159
160 def test_connect_to_hidden_network_dialog_visibility(self):
161 if not self.wifi_page.have_wireless():
162 self.skipTest('Cannot test wireless since it cannot be enabled')
163 self.addCleanup(
164 self.wifi_page._set_wireless, self.wifi_page.get_wireless())
165 self.wifi_page.disable_wireless()
166 self.assertThat(
167 lambda: bool(self.wifi_page.select_single(
168 '*',
169 objectName='connectToHiddenNetwork').visible),
170 Eventually(Equals(False)), 'other net dialog not hidden')
171
137 """Note: this test does not actually remove previous networks from the UI.172 """Note: this test does not actually remove previous networks from the UI.
138 The NetworkManager dbusmock template does not currently support deletion173 The NetworkManager dbusmock template does not currently support deletion
139 of connections."""174 of connections."""
@@ -157,5 +192,7 @@
157192
158 self.system_settings.main_view.go_back()193 self.system_settings.main_view.go_back()
159194
195 # wait for ui to update
196 sleep(2)
160 self.wifi_page.remove_previous_network(197 self.wifi_page.remove_previous_network(
161 previous_networks[2]['ssid'], scroll_to_and_click=click_method)198 previous_networks[2]['ssid'], scroll_to_and_click=click_method)
162199
=== modified file 'wizard/Utils/system.cpp'
--- wizard/Utils/system.cpp 2014-09-22 15:21:10 +0000
+++ wizard/Utils/system.cpp 2014-11-07 22:38:03 +0000
@@ -20,6 +20,7 @@
20#include <QDBusInterface>20#include <QDBusInterface>
21#include <QDBusPendingCall>21#include <QDBusPendingCall>
22#include <QDBusPendingReply>22#include <QDBusPendingReply>
23#include <QFile>
23#include <QProcess>24#include <QProcess>
24#include <unistd.h>25#include <unistd.h>
2526
@@ -81,11 +82,14 @@
81void System::getHereLicensePathFinished(QDBusPendingCallWatcher *watcher)82void System::getHereLicensePathFinished(QDBusPendingCallWatcher *watcher)
82{83{
83 QDBusPendingReply<QVariant> reply = *watcher;84 QDBusPendingReply<QVariant> reply = *watcher;
85
86 m_hereLicensePath = "";
87
84 if (!reply.isError()) {88 if (!reply.isError()) {
85 QVariant value = reply.argumentAt<0>();89 QVariant value = reply.argumentAt<0>();
86 m_hereLicensePath = value.toString();90 if (QFile::exists(value.toString())) {
87 } else {91 m_hereLicensePath = value.toString();
88 m_hereLicensePath = "";92 }
89 }93 }
9094
91 Q_EMIT hereLicensePathChanged();95 Q_EMIT hereLicensePathChanged();
9296
=== modified file 'wizard/qml/Components/CheckableSetting.qml'
--- wizard/qml/Components/CheckableSetting.qml 2014-08-21 14:50:29 +0000
+++ wizard/qml/Components/CheckableSetting.qml 2014-11-07 22:38:03 +0000
@@ -27,9 +27,11 @@
27 property real leftMargin27 property real leftMargin
28 property real rightMargin28 property real rightMargin
2929
30 readonly property real labelOffset: label.x
31
30 signal linkActivated(string link)32 signal linkActivated(string link)
3133
32 implicitHeight: label.height + units.gu(2)34 implicitHeight: Math.max(label.height, checkBox.height)
3335
34 Item {36 Item {
35 anchors.fill: parent37 anchors.fill: parent
@@ -39,7 +41,7 @@
3941
40 anchors {42 anchors {
41 left: parent.left43 left: parent.left
42 verticalCenter: parent.verticalCenter44 top: parent.top
43 leftMargin: listItem.leftMargin45 leftMargin: listItem.leftMargin
44 }46 }
4547
@@ -59,7 +61,10 @@
5961
60 Connections {62 Connections {
61 target: listItem.__mouseArea63 target: listItem.__mouseArea
62 onClicked: listItem.checked = !listItem.checked64 onClicked: {
65 listItem.checked = !listItem.checked
66 listItem.triggered(listItem.checked)
67 }
63 }68 }
64 }69 }
6570
6671
=== modified file 'wizard/qml/Pages/30-passwd-type.qml'
--- wizard/qml/Pages/30-passwd-type.qml 2014-10-31 15:48:14 +0000
+++ wizard/qml/Pages/30-passwd-type.qml 2014-11-07 22:38:03 +0000
@@ -93,7 +93,7 @@
93 desc = i18n.tr("No security")93 desc = i18n.tr("No security")
94 } else if (method === UbuntuSecurityPrivacyPanel.Passcode) {94 } else if (method === UbuntuSecurityPrivacyPanel.Passcode) {
95 name = i18n.tr("Passcode")95 name = i18n.tr("Passcode")
96 desc = i18n.tr("4 numbers")96 desc = i18n.tr("4 digits only")
97 } else {97 } else {
98 name = i18n.tr("Passphrase")98 name = i18n.tr("Passphrase")
99 desc = i18n.tr("Numbers and letters")99 desc = i18n.tr("Numbers and letters")
100100
=== modified file 'wizard/qml/Pages/50-location.qml'
--- wizard/qml/Pages/50-location.qml 2014-10-22 15:35:00 +0000
+++ wizard/qml/Pages/50-location.qml 2014-11-07 22:38:03 +0000
@@ -25,7 +25,15 @@
25 title: i18n.tr("Location")25 title: i18n.tr("Location")
26 forwardButtonSourceComponent: forwardButton26 forwardButtonSourceComponent: forwardButton
2727
28 property bool hereInstalled: System.hereLicensePath !== "" && termsModel.count > 028 property bool pathSet: System.hereLicensePath !== " " // single space means it's unassigned
29 property bool countSet: false
30 skipValid: pathSet && (System.hereLicensePath === "" || countSet)
31 skip: skipValid && (System.hereLicensePath === "" || termsModel.count === 0)
32
33 Connections {
34 target: termsModel
35 onCountChanged: if (pathSet) countSet = true
36 }
2937
30 FolderListModel {38 FolderListModel {
31 id: termsModel39 id: termsModel
@@ -40,13 +48,15 @@
40 busType: QMenuModel.DBus.SessionBus48 busType: QMenuModel.DBus.SessionBus
41 busName: "com.canonical.indicator.location"49 busName: "com.canonical.indicator.location"
42 objectPath: "/com/canonical/indicator/location"50 objectPath: "/com/canonical/indicator/location"
43 property variant enabled: action("location-detection-enabled")51 property variant location: action("location-detection-enabled")
52 property variant gps: action("gps-detection-enabled")
44 Component.onCompleted: start()53 Component.onCompleted: start()
45 }54 }
4655
47 Column {56 Column {
48 id: column57 id: column
49 anchors.fill: content58 anchors.fill: content
59<<<<<<< TREE
50 spacing: units.gu(2)60 spacing: units.gu(2)
5161
52 Label {62 Label {
@@ -83,6 +93,73 @@
83 visible: hereInstalled93 visible: hereInstalled
84 wrapMode: Text.Wrap94 wrapMode: Text.Wrap
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches