Merge lp:~ken-vandine/ubuntu-system-settings/rtm-14.09-20140822 into lp:ubuntu-system-settings/rtm-14.09

Proposed by Ken VanDine
Status: Rejected
Rejected by: Ken VanDine
Proposed branch: lp:~ken-vandine/ubuntu-system-settings/rtm-14.09-20140822
Merge into: lp:ubuntu-system-settings/rtm-14.09
Diff against target: 7008 lines (+2952/-1127)
104 files modified
debian/changelog (+74/-0)
debian/control (+1/-1)
plugins/about/storageabout.cpp (+11/-7)
plugins/battery/PageComponent.qml (+1/-2)
plugins/battery/SleepValues.qml (+19/-9)
plugins/battery/battery.cpp (+4/-6)
plugins/bluetooth/PageComponent.qml (+174/-142)
plugins/bluetooth/agent.h (+1/-1)
plugins/bluetooth/bluetooth.cpp (+1/-3)
plugins/bluetooth/bluetooth.h (+5/-5)
plugins/bluetooth/device.cpp (+1/-0)
plugins/cellular/CMakeLists.txt (+1/-0)
plugins/cellular/Components/CMakeLists.txt (+4/-1)
plugins/cellular/Components/CellularMultiSim.qml (+18/-20)
plugins/cellular/Components/CellularSingleSim.qml (+13/-14)
plugins/cellular/Components/DefaultSim.qml (+3/-4)
plugins/cellular/Components/MultiSim.qml (+120/-0)
plugins/cellular/Components/NoSim.qml (+51/-0)
plugins/cellular/Components/Sim.qml (+2/-0)
plugins/cellular/Components/SimEditor.qml (+8/-8)
plugins/cellular/Components/SingleSim.qml (+76/-0)
plugins/cellular/PageChooseCarriers.qml (+9/-10)
plugins/cellular/PageComponent.qml (+42/-159)
plugins/cellular/sims.js (+34/-0)
plugins/notifications/notification_item.cpp (+2/-1)
plugins/phone/CMakeLists.txt (+5/-0)
plugins/phone/CallForwarding.qml (+17/-13)
plugins/phone/CallWaiting.qml (+14/-3)
plugins/phone/MultiSim.qml (+135/-0)
plugins/phone/NoSims.qml (+46/-0)
plugins/phone/Ofono.qml (+50/-0)
plugins/phone/PageComponent.qml (+64/-39)
plugins/phone/Services.qml (+4/-1)
plugins/phone/SingleSim.qml (+57/-0)
plugins/phone/sims.js (+34/-0)
plugins/security-privacy/LockSecurity.qml (+3/-2)
plugins/security-privacy/PageComponent.qml (+57/-37)
plugins/security-privacy/PhoneLocking.qml (+27/-4)
plugins/security-privacy/trust-store-model.cpp (+1/-1)
plugins/system-update/PageComponent.qml (+320/-329)
plugins/system-update/update_manager.cpp (+2/-1)
plugins/time-date/timezonelocationmodel.cpp (+2/-2)
po/am.po (+1/-1)
po/en_AU.po (+22/-21)
po/en_GB.po (+23/-21)
po/es.po (+21/-21)
po/fi.po (+43/-41)
po/fr.po (+8/-5)
po/gl.po (+7/-7)
po/he.po (+28/-28)
po/hu.po (+21/-20)
po/pt.po (+16/-16)
po/ro.po (+18/-16)
po/ru.po (+21/-19)
po/uk.po (+22/-21)
src/i18n.cpp (+1/-1)
src/plugin-manager.cpp (+1/-1)
src/plugin.cpp (+4/-4)
tests/autopilot/ubuntu_system_settings/__init__.py (+150/-0)
tests/autopilot/ubuntu_system_settings/tests/__init__.py (+60/-6)
tests/autopilot/ubuntu_system_settings/tests/ofono.py (+215/-0)
tests/autopilot/ubuntu_system_settings/tests/test_cellular.py (+96/-1)
tests/autopilot/ubuntu_system_settings/tests/test_phone.py (+111/-0)
tests/autopilot/ubuntu_system_settings/tests/test_security.py (+173/-0)
tests/autopilot/ubuntu_system_settings/tests/test_system_updates.py (+0/-4)
tests/plugins/bluetooth/tst_bluetooth.cpp (+1/-1)
tests/plugins/bluetooth/tst_devicemodel.cpp (+1/-1)
tests/plugins/system-update/tst_update.cpp (+1/-1)
tests/plugins/system-update/tst_updatemanager.cpp (+1/-1)
tests/test-plugin2.cpp (+2/-2)
tests/tst_arguments.cpp (+1/-1)
tests/tst_plugins.cpp (+1/-1)
wizard/CMakeLists.txt (+2/-0)
wizard/main.cpp (+33/-4)
wizard/qml/Components/CheckableSetting.qml (+80/-0)
wizard/qml/Components/Page.qml (+4/-1)
wizard/qml/Pages/10-welcome.qml (+1/-0)
wizard/qml/Pages/30-location.qml (+72/-0)
wizard/qml/Pages/40-reporting.qml (+2/-4)
wizard/qml/Pages/80-finished.qml (+2/-4)
wizard/qml/Pages/data/HEREposconsent_da-DK.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_de-DE.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_en-GB.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_en-US.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_es-ES.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_es-MX.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_fr-FR.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_it-IT.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_ja-JP.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_ko-KR.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_nl-NL.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_pl-PL.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_pt-BR.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_pt-PT.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_ru-RU.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_sv-SE.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_zh-CN.html (+1/-0)
wizard/qml/Pages/data/HEREposconsent_zh-TW.html (+1/-0)
wizard/qml/Pages/no-sim.qml (+2/-4)
wizard/qml/Pages/terms.qml (+119/-0)
wizard/qml/main.qml (+4/-1)
wizard/ubuntu-system-settings-wizard-cleanup.conf (+0/-17)
wizard/ubuntu-system-settings-wizard-set-lang.conf (+30/-0)
wizard/ubuntu-system-settings-wizard.conf (+0/-5)
To merge this branch: bzr merge lp:~ken-vandine/ubuntu-system-settings/rtm-14.09-20140822
Reviewer Review Type Date Requested Status
Brendan Donegan (community) Needs Information
Ubuntu Touch System Settings Pending
Review via email: mp+231980@code.launchpad.net

Commit message

[ Charles Kerr ]
* In the welcome wizard, refresh the text in the 'no sim card' and
  'all done' pages to match the latest from design.
[ Michael Terry ]
* Add a location page and a terms and conditions page for the HERE
  service.
[ Ken VanDine ]
* Settings for idle/lock timeout (LP: #1230345)
* Added flickable to fix scrolling (LP: #1354161)
[ Jussi Pakkanen ]
* Fix a bunch of compiler warnings.
[ jonas-drange ]
* [cellular] displays cellular UIs based on how many SIMs are present.
  (LP: #1357393)

Description of the change

[ Charles Kerr ]
* In the welcome wizard, refresh the text in the 'no sim card' and
  'all done' pages to match the latest from design.
[ Michael Terry ]
* Add a location page and a terms and conditions page for the HERE
  service.
[ Ken VanDine ]
* Settings for idle/lock timeout (LP: #1230345)
* Added flickable to fix scrolling (LP: #1354161)
[ Jussi Pakkanen ]
* Fix a bunch of compiler warnings.
[ jonas-drange ]
* [cellular] displays cellular UIs based on how many SIMs are present.
  (LP: #1357393)

To post a comment you must log in.
928. By Ken VanDine

* In the welcome wizard, refresh the text in the 'no sim card' and
  'all done' pages to match the latest from design.
* Add a location page and a terms and conditions page for the HERE
  service.
* Settings for idle/lock timeout (LP: #1230345)
* Added flickable to fix scrolling (LP: #1354161)
* Fix a bunch of compiler warnings.
* [cellular] displays cellular UIs based on how many SIMs are present.
  (LP: #1357393)

929. By Ken VanDine

merged phone panel supported for dual sim as well as bug fixes related to dual sim

930. By Ken VanDine

Added autopilot tests for security-privacy panel

Revision history for this message
Brendan Donegan (brendan-donegan) wrote :

Do you want to merge https://bugs.launchpad.net/ubuntu/+source/ubuntu-system-settings/+bug/1361297 as well, or do you want to land this even with the broken setting?

review: Needs Information
931. By Ken VanDine

[ Ken VanDine ]
* Hide sleep locks immediately setting, which isn't implemented yet
  (LP: #1361297) (LP: #1361297)
[ Sebastien Bacher ]
* [system-update] rework the ui to use a column rather than anchors,
  the layout is quite dynamic and it should be easier to position and
  stack widgets this way (LP: #1343172)
[ Michael Terry ]
* After selecting the language, update the session environment
  immediately and restart indicators so that their notifications (like
  wifi prompt) are translated. (LP: #1354325)
[ Ken VanDine ]
* Added autopilot tests for security-privacy
[ jonas-drange ]
* [phone] adding dual sim functionality to phone panel

Revision history for this message
Ken VanDine (ken-vandine) wrote :

> Do you want to merge https://bugs.launchpad.net/ubuntu/+source/ubuntu-system-
> settings/+bug/1361297 as well, or do you want to land this even with the
> broken setting?

I've merged that in and will rebuild the silo.

Unmerged revisions

931. By Ken VanDine

[ Ken VanDine ]
* Hide sleep locks immediately setting, which isn't implemented yet
  (LP: #1361297) (LP: #1361297)
[ Sebastien Bacher ]
* [system-update] rework the ui to use a column rather than anchors,
  the layout is quite dynamic and it should be easier to position and
  stack widgets this way (LP: #1343172)
[ Michael Terry ]
* After selecting the language, update the session environment
  immediately and restart indicators so that their notifications (like
  wifi prompt) are translated. (LP: #1354325)
[ Ken VanDine ]
* Added autopilot tests for security-privacy
[ jonas-drange ]
* [phone] adding dual sim functionality to phone panel

930. By Ken VanDine

Added autopilot tests for security-privacy panel

929. By Ken VanDine

merged phone panel supported for dual sim as well as bug fixes related to dual sim

928. By Ken VanDine

* In the welcome wizard, refresh the text in the 'no sim card' and
  'all done' pages to match the latest from design.
* Add a location page and a terms and conditions page for the HERE
  service.
* Settings for idle/lock timeout (LP: #1230345)
* Added flickable to fix scrolling (LP: #1354161)
* Fix a bunch of compiler warnings.
* [cellular] displays cellular UIs based on how many SIMs are present.
  (LP: #1357393)

927. By Ken VanDine

[ Charles Kerr ]
* In the welcome wizard, refresh the text in the 'no sim card' and
  'all done' pages to match the latest from design.
[ Michael Terry ]
* Add a location page and a terms and conditions page for the HERE
  service.
[ Ken VanDine ]
* Settings for idle/lock timeout (LP: #1230345)
* Added flickable to fix scrolling (LP: #1354161)
[ Jussi Pakkanen ]
* Fix a bunch of compiler warnings.
[ jonas-drange ]
* [cellular] displays cellular UIs based on how many SIMs are present.
  (LP: #1357393)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'debian/changelog'
2--- debian/changelog 2014-08-19 15:26:56 +0000
3+++ debian/changelog 2014-08-26 11:38:32 +0000
4@@ -1,3 +1,77 @@
5+ubuntu-system-settings (0.3+14.10.20140826-0ubuntu1) utopic; urgency=low
6+
7+ [ Ken VanDine ]
8+ * Hide sleep locks immediately setting, which isn't implemented yet
9+ (LP: #1361297) (LP: #1361297)
10+
11+ [ Sebastien Bacher ]
12+ * [system-update] rework the ui to use a column rather than anchors,
13+ the layout is quite dynamic and it should be easier to position and
14+ stack widgets this way (LP: #1343172)
15+
16+ [ Michael Terry ]
17+ * After selecting the language, update the session environment
18+ immediately and restart indicators so that their notifications (like
19+ wifi prompt) are translated. (LP: #1354325)
20+
21+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Tue, 26 Aug 2014 00:55:20 +0000
22+
23+ubuntu-system-settings (0.3+14.10.20140825-0ubuntu1) utopic; urgency=low
24+
25+ [ Ken VanDine ]
26+ * Added autopilot tests for security-privacy
27+
28+ [ jonas-drange ]
29+ * [phone] adding dual sim functionality to phone panel
30+
31+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Mon, 25 Aug 2014 15:19:31 +0000
32+
33+ubuntu-system-settings (0.3+14.10.20140822.1-0ubuntu2) UNRELEASED; urgency=medium
34+
35+ [ Charles Kerr ]
36+ * In the welcome wizard, refresh the text in the 'no sim card' and
37+ 'all done' pages to match the latest from design.
38+
39+ [ Michael Terry ]
40+ * Add a location page and a terms and conditions page for the HERE
41+ service.
42+
43+ [ Ken VanDine ]
44+ * Settings for idle/lock timeout (LP: #1230345)
45+ * Added flickable to fix scrolling (LP: #1354161)
46+
47+ [ Jussi Pakkanen ]
48+ * Fix a bunch of compiler warnings.
49+
50+ [ jonas-drange ]
51+ * [cellular] displays cellular UIs based on how many SIMs are present.
52+ (LP: #1357393)
53+
54+ -- Ken VanDine <ken.vandine@canonical.com> Fri, 22 Aug 2014 22:47:14 -0400
55+
56+ubuntu-system-settings (0.3+14.10.20140822.1-0ubuntu1) utopic; urgency=low
57+
58+ [ Charles Kerr ]
59+ * In the welcome wizard, refresh the text in the 'no sim card' and
60+ 'all done' pages to match the latest from design.
61+
62+ [ Michael Terry ]
63+ * Add a location page and a terms and conditions page for the HERE
64+ service.
65+
66+ [ Ken VanDine ]
67+ * Settings for idle/lock timeout (LP: #1230345)
68+ * Added flickable to fix scrolling (LP: #1354161)
69+
70+ [ Jussi Pakkanen ]
71+ * Fix a bunch of compiler warnings.
72+
73+ [ jonas-drange ]
74+ * [cellular] displays cellular UIs based on how many SIMs are present.
75+ (LP: #1357393)
76+
77+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 22 Aug 2014 18:57:00 +0000
78+
79 ubuntu-system-settings (0.3+14.10.20140819.1-0ubuntu1) utopic; urgency=low
80
81 [ Sebastien Bacher ]
82
83=== modified file 'debian/control'
84--- debian/control 2014-08-19 14:56:31 +0000
85+++ debian/control 2014-08-26 11:38:32 +0000
86@@ -56,7 +56,7 @@
87 bluez (>= 4.36),
88 dbus-property-service [amd64 armhf i386],
89 gsettings-desktop-schemas,
90- gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140813),
91+ gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
92 indicator-bluetooth (>> 0.0.6+13.10.20131010),
93 indicator-network (>= 0.5.0+13.10.20130918),
94 powerd (>= 0.15) | gnome-settings-daemon,
95
96=== modified file 'plugins/about/storageabout.cpp'
97--- plugins/about/storageabout.cpp 2014-07-24 10:57:43 +0000
98+++ plugins/about/storageabout.cpp 2014-08-26 11:38:32 +0000
99@@ -60,7 +60,7 @@
100 GAsyncReadyCallback callback,
101 gpointer user_data)
102 {
103- MeasureData *data = (MeasureData *) user_data;
104+ auto *data = static_cast<MeasureData *>(user_data);
105
106 GFile *file = g_file_new_for_path (filename);
107
108@@ -103,7 +103,7 @@
109 GError *err = NULL;
110 GFile *file = G_FILE (source_object);
111
112- MeasureData *data = (MeasureData *) user_data;
113+ auto data = static_cast<MeasureData *>(user_data);
114
115 guint64 *size = (guint64 *) data->size;
116
117@@ -137,6 +137,11 @@
118 QObject(parent),
119 m_clickModel(),
120 m_clickFilterProxy(&m_clickModel),
121+ m_moviesSize(0),
122+ m_audioSize(0),
123+ m_picturesSize(0),
124+ m_otherSize(0),
125+ m_homeSize(0),
126 m_propertyService(new QDBusInterface(PROPERTY_SERVICE_OBJ,
127 PROPERTY_SERVICE_PATH,
128 PROPERTY_SERVICE_OBJ,
129@@ -147,10 +152,10 @@
130
131 QString StorageAbout::serialNumber()
132 {
133- static char serialBuffer[PROP_NAME_MAX];
134
135 if (m_serialNumber.isEmpty() || m_serialNumber.isNull())
136 {
137+ char serialBuffer[PROP_VALUE_MAX];
138 property_get("ro.serialno", serialBuffer, "");
139 m_serialNumber = QString(serialBuffer);
140 }
141@@ -160,11 +165,10 @@
142
143 QString StorageAbout::vendorString()
144 {
145- static char manufacturerBuffer[PROP_NAME_MAX];
146- static char modelBuffer[PROP_NAME_MAX];
147-
148 if (m_vendorString.isEmpty() || m_vendorString.isNull())
149 {
150+ char manufacturerBuffer[PROP_VALUE_MAX];
151+ char modelBuffer[PROP_VALUE_MAX];
152 property_get("ro.product.manufacturer", manufacturerBuffer, "");
153 property_get("ro.product.model", modelBuffer, "");
154 m_vendorString = QString("%1 %2").arg(manufacturerBuffer).arg(modelBuffer);
155@@ -175,10 +179,10 @@
156
157 QString StorageAbout::deviceBuildDisplayID()
158 {
159- static char serialBuffer[PROP_NAME_MAX];
160
161 if (m_deviceBuildDisplayID.isEmpty() || m_deviceBuildDisplayID.isNull())
162 {
163+ char serialBuffer[PROP_VALUE_MAX];
164 property_get("ro.build.display.id", serialBuffer, "");
165 m_deviceBuildDisplayID = QString(serialBuffer);
166 }
167
168=== modified file 'plugins/battery/PageComponent.qml'
169--- plugins/battery/PageComponent.qml 2014-08-12 19:22:39 +0000
170+++ plugins/battery/PageComponent.qml 2014-08-26 11:38:32 +0000
171@@ -57,7 +57,7 @@
172
173 GSettings {
174 id: powerSettings
175- schema.id: batteryBackend.powerdRunning ? "com.canonical.powerd" : "org.gnome.desktop.session"
176+ schema.id: batteryBackend.powerdRunning ? "com.ubuntu.touch.system" : "org.gnome.desktop.session"
177 }
178
179 UbuntuSecurityPrivacyPanel {
180@@ -322,7 +322,6 @@
181 onClicked: pageStack.push(
182 Qt.resolvedUrl("SleepValues.qml"),
183 { title: text, lockOnSuspend: lockOnSuspend })
184- visible: showAllUI // TODO: re-enable once bug #1230345 is resolved
185 }
186 ListItem.Standard {
187 text: i18n.tr("Wi-Fi")
188
189=== modified file 'plugins/battery/SleepValues.qml'
190--- plugins/battery/SleepValues.qml 2013-09-30 16:48:16 +0000
191+++ plugins/battery/SleepValues.qml 2014-08-26 11:38:32 +0000
192@@ -31,11 +31,12 @@
193
194 ItemPage {
195 id: root
196-
197+ objectName: "sleepValues"
198 flickable: scrollWidget
199
200 property alias usePowerd: batteryBackend.powerdRunning
201 property bool lockOnSuspend
202+ property variant idleValues: [60,120,180,240,300,600]
203
204 UbuntuBatteryPanel {
205 id: batteryBackend
206@@ -43,19 +44,20 @@
207
208 GSettings {
209 id: powerSettings
210- schema.id: usePowerd ? "com.canonical.powerd" : "org.gnome.desktop.session"
211+ schema.id: usePowerd ? "com.ubuntu.touch.system" : "org.gnome.desktop.session"
212 onChanged: {
213 if (key == "activityTimeout" || key == "idleDelay")
214- if([60,120,180,240,300].indexOf(value) != -1)
215- sleepSelector.selectedIndex = (value/60)-1
216+ var curIndex = idleValues.indexOf(value)
217+ if( curIndex != -1)
218+ sleepSelector.selectedIndex = curIndex
219 else if(value === 0)
220- sleepSelector.selectedIndex = 5
221+ sleepSelector.selectedIndex = 6
222 }
223 Component.onCompleted: {
224 if (usePowerd)
225- sleepSelector.selectedIndex = (powerSettings.activityTimeout === 0) ? 5 : powerSettings.activityTimeout/60-1
226+ sleepSelector.selectedIndex = (powerSettings.activityTimeout === 0) ? 6 : idleValues.indexOf(powerSettings.activityTimeout)
227 else
228- sleepSelector.selectedIndex = (powerSettings.idleDelay === 0) ? 5 : powerSettings.idleDelay/60-1
229+ sleepSelector.selectedIndex = (powerSettings.idleDelay === 0) ? 6 : idleValues.indexOf(powerSettings.idleDelay)
230 }
231 }
232
233@@ -71,7 +73,11 @@
234
235 ListItem.ItemSelector {
236 id: sleepSelector
237+ objectName: "sleepSelector"
238 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:")
239+ delegate: OptionSelectorDelegate {
240+ text: modelData
241+ }
242 model: [
243 // TRANSLATORS: %1 is the number of minutes
244 i18n.tr("After %1 minute",
245@@ -93,13 +99,17 @@
246 i18n.tr("After %1 minute",
247 "After %1 minutes",
248 5).arg(5),
249+ // TRANSLATORS: %1 is the number of minutes
250+ i18n.tr("After %1 minute",
251+ "After %1 minutes",
252+ 10).arg(10),
253 i18n.tr("Never")]
254 expanded: true
255 onDelegateClicked: {
256 if (usePowerd)
257- powerSettings.activityTimeout = (index == 5) ? 0 : (index+1)*60
258+ powerSettings.activityTimeout = (index == 6) ? 0 : idleValues[index]
259 else
260- powerSettings.idleDelay = (index == 5) ? 0 : (index+1)*60
261+ powerSettings.idleDelay = (index == 6) ? 0 : idleValues[index]
262 }
263 }
264
265
266=== modified file 'plugins/battery/battery.cpp'
267--- plugins/battery/battery.cpp 2013-09-30 11:09:29 +0000
268+++ plugins/battery/battery.cpp 2014-08-26 11:38:32 +0000
269@@ -28,7 +28,7 @@
270 GParamSpec *pspec G_GNUC_UNUSED,
271 gpointer user_data)
272 {
273- Battery * object = (Battery *) user_data;
274+ auto object = static_cast<Battery *>(user_data);
275
276 Q_EMIT (object->wifiEnabledChanged());
277 }
278@@ -65,7 +65,6 @@
279 UpClient *client;
280 gboolean returnIsOk;
281 GPtrArray *devices;
282- UpDevice *device;
283 UpDeviceKind kind;
284
285 client = up_client_new();
286@@ -77,6 +76,7 @@
287 devices = up_client_get_devices(client);
288
289 for (uint i=0; i < devices->len; i++) {
290+ UpDevice *device;
291 device = (UpDevice *)g_ptr_array_index(devices, i);
292 g_object_get(device, "kind", &kind, NULL);
293 if (kind == UP_DEVICE_KIND_BATTERY) {
294@@ -111,7 +111,6 @@
295
296 void Battery::getLastFullCharge()
297 {
298- UpHistoryItem *item;
299 GPtrArray *values = NULL;
300 gint32 offset = 0;
301 GTimeVal timeval;
302@@ -130,7 +129,7 @@
303 g_object_get (m_device, "capacity", &maxCapacity, NULL);
304
305 for (uint i=0; i < values->len; i++) {
306- item = (UpHistoryItem *) g_ptr_array_index(values, i);
307+ auto item = static_cast<UpHistoryItem *>(g_ptr_array_index(values, i));
308
309 /* Getting the next point after full charge, since upower registers only on state changes,
310 typically you get no data while the device is fully charged and plugged and you get a discharging
311@@ -155,7 +154,6 @@
312 if (deviceString.isNull() || deviceString.isEmpty())
313 return QVariantList();
314
315- UpHistoryItem *item;
316 GPtrArray *values = NULL;
317 gint32 offset = 0;
318 GTimeVal timeval;
319@@ -174,7 +172,7 @@
320 }
321
322 for (uint i=values->len-1; i > 0; i--) {
323- item = (UpHistoryItem *) g_ptr_array_index(values, i);
324+ auto item = static_cast<UpHistoryItem *>(g_ptr_array_index(values, i));
325
326 if (up_history_item_get_state(item) == UP_DEVICE_STATE_UNKNOWN)
327 continue;
328
329=== modified file 'plugins/bluetooth/PageComponent.qml'
330--- plugins/bluetooth/PageComponent.qml 2014-07-29 15:09:23 +0000
331+++ plugins/bluetooth/PageComponent.qml 2014-08-26 11:38:32 +0000
332@@ -29,6 +29,8 @@
333
334 ItemPage {
335 id: root
336+ title: i18n.tr("Bluetooth")
337+
338 UbuntuBluetoothPanel { id: backend }
339
340 Component {
341@@ -112,14 +114,20 @@
342 }
343 }
344
345- Page {
346- id: mainPage
347- title: i18n.tr("Bluetooth")
348- visible: true
349+
350+ Flickable {
351 anchors.fill: parent
352+ contentHeight: contentItem.childrenRect.height
353+ boundsBehavior: (contentHeight > root.height) ?
354+ Flickable.DragAndOvershootBounds :
355+ Flickable.StopAtBounds
356+ /* Set the direction to workaround https://bugreports.qt-project.org/browse/QTBUG-31905
357+ otherwise the UI might end up in a situation where scrolling doesn't work */
358+ flickableDirection: Flickable.VerticalFlick
359
360 Column {
361- anchors.fill: parent
362+ anchors.left: parent.left
363+ anchors.right: parent.right
364
365 QDBusActionGroup {
366 id: bluetoothActionGroup
367@@ -205,27 +213,30 @@
368 visible: connectedList.visible
369 }
370
371- ListView {
372+ Column {
373 id: connectedList
374- width: parent.width
375- height: connectedHeader.height * count
376-
377+ anchors {
378+ left: parent.left
379+ right: parent.right
380+ }
381 visible: bluetoothActionGroup.enabled && (count > 0)
382
383- model: backend.connectedDevices
384- delegate: ListItem.Standard {
385- iconSource: iconPath
386- iconFrame: false
387- text: getDisplayName(type, displayName)
388- control: ActivityIndicator {
389- visible: connection == Device.Connecting
390- running: true
391- }
392- onClicked: {
393- backend.setSelectedDevice(addressName);
394- pageStack.push(connectedDevicePage);
395- }
396- progression: true
397+ Repeater {
398+ model: backend.connectedDevices
399+ delegate: ListItem.Standard {
400+ iconSource: iconPath
401+ iconFrame: false
402+ text: getDisplayName(type, displayName)
403+ control: ActivityIndicator {
404+ visible: connection == Device.Connecting
405+ running: true
406+ }
407+ onClicked: {
408+ backend.setSelectedDevice(addressName);
409+ pageStack.push(connectedDevicePage);
410+ }
411+ progression: true
412+ }
413 }
414 }
415
416@@ -241,24 +252,27 @@
417 }
418 }
419
420- ListView {
421+ Column {
422 id: disconnectedList
423- width: parent.width
424- height: disconnectedHeader.height * count
425-
426+ anchors {
427+ left: parent.left
428+ right: parent.right
429+ }
430 visible: bluetoothActionGroup.enabled && (count > 0)
431
432- model: backend.disconnectedDevices
433- delegate: ListItem.Standard {
434- iconSource: iconPath
435- iconFrame: false
436- text: getDisplayName(type, displayName)
437- enabled: backend.isSupportedType(type)
438- onClicked: {
439- backend.setSelectedDevice(addressName);
440- pageStack.push(connectedDevicePage);
441+ Repeater {
442+ model: backend.disconnectedDevices
443+ delegate: ListItem.Standard {
444+ iconSource: iconPath
445+ iconFrame: false
446+ text: getDisplayName(type, displayName)
447+ enabled: backend.isSupportedType(type)
448+ onClicked: {
449+ backend.setSelectedDevice(addressName);
450+ pageStack.push(connectedDevicePage);
451+ }
452+ progression: true
453 }
454- progression: true
455 }
456 }
457 ListItem.Standard {
458@@ -275,23 +289,27 @@
459 visible: autoconnectList.visible
460 enabled: bluetoothActionGroup.enabled
461 }
462- ListView {
463+ Column {
464 id: autoconnectList
465- width: parent.width
466- height: autoconnectHeader.height * count
467+ anchors {
468+ left: parent.left
469+ right: parent.right
470+ }
471
472 visible: bluetoothActionGroup.enabled && (count > 0)
473
474- model: backend.autoconnectDevices
475- delegate: ListItem.Standard {
476- iconSource: iconPath
477- iconFrame: false
478- text: getDisplayName(type, displayName)
479- onClicked: {
480- backend.setSelectedDevice(addressName);
481- pageStack.push(connectedDevicePage);
482+ Repeater {
483+ model: backend.autoconnectDevices
484+ delegate: ListItem.Standard {
485+ iconSource: iconPath
486+ iconFrame: false
487+ text: getDisplayName(type, displayName)
488+ onClicked: {
489+ backend.setSelectedDevice(addressName);
490+ pageStack.push(connectedDevicePage);
491+ }
492+ progression: true
493 }
494- progression: true
495 }
496 }
497 }
498@@ -302,100 +320,114 @@
499 title: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None")
500 visible: false
501
502- Column {
503+ Flickable {
504 anchors.fill: parent
505-
506- ListItem.SingleValue {
507- text: i18n.tr("Name")
508- value: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None")
509- }
510- ListItem.Standard {
511- Rectangle {
512- color: "transparent"
513- anchors.fill: parent
514- anchors.topMargin: units.gu(1)
515- anchors.leftMargin: units.gu(2)
516- anchors.rightMargin: units.gu(2)
517-
518- Label {
519- anchors {
520- top: parent.top
521- left: parent.left
522- topMargin: units.gu(1)
523- }
524- height: units.gu(3)
525- text: i18n.tr("Type")
526- }
527- Image {
528- anchors {
529- right: deviceType.left
530- rightMargin: units.gu(1)
531- }
532- height: units.gu(4)
533- width: units.gu(4)
534- source: backend.selectedDevice ? backend.selectedDevice.iconName : ""
535- }
536- Label {
537- id: deviceType
538- anchors {
539- top: parent.top
540- right: parent.right
541- topMargin: units.gu(1)
542- }
543- height: units.gu(3)
544- text: getTypeString(backend.selectedDevice ? backend.selectedDevice.type : Device.OTHER)
545- }
546- }
547- }
548- ListItem.SingleValue {
549- text: i18n.tr("Status")
550- value: getStatusString(backend.selectedDevice ? backend.selectedDevice.connection : Device.Disconnected)
551- }
552- ListItem.SingleValue {
553- text: i18n.tr("Signal Strength")
554- value: getSignalString(backend.selectedDevice ? backend.selectedDevice.strength : Device.None)
555- }
556- ListItem.Standard {
557- id: trustedCheck
558- text: i18n.tr("Connect automatically when detected:")
559- control: CheckBox {
560- onClicked: {
561- if (backend.selectedDevice) {
562- backend.selectedDevice.trusted = !backend.selectedDevice.trusted
563- }
564- }
565- checked: backend.selectedDevice ? backend.selectedDevice.trusted : false
566- }
567- Component.onCompleted:
568- clicked.connect(trustedCheck.clicked)
569- }
570- ListItem.SingleControl {
571- control: Button {
572- text: backend.selectedDevice && (backend.selectedDevice.connection == Device.Connected || backend.selectedDevice.connection == Device.Connecting) ? i18n.tr("Disconnect") : i18n.tr("Connect")
573- width: parent.width - units.gu(8)
574- onClicked: {
575- if (backend.selectedDevice
576- && (backend.selectedDevice.connection == Device.Connected
577- || backend.selectedDevice.connection == Device.Connecting)) {
578- backend.disconnectDevice();
579- } else {
580- backend.stopDiscovery()
581- backend.connectDevice(backend.selectedDevice.address);
582- }
583- pageStack.pop();
584- }
585- visible: backend.selectedDevice ? true : false
586- }
587- }
588- ListItem.SingleControl {
589- control: Button {
590- text: i18n.tr("Forget this device")
591- width: parent.width - units.gu(8)
592- onClicked: {
593- backend.removeDevice();
594- pageStack.pop();
595- }
596- enabled: backend.selectedDevice && backend.selectedDevice.path.length > 0 ? true : false
597+ contentHeight: contentItem.childrenRect.height
598+ boundsBehavior: (contentHeight > root.height) ?
599+ Flickable.DragAndOvershootBounds :
600+ Flickable.StopAtBounds
601+ /* Set the direction to workaround https://bugreports.qt-project.org/browse/QTBUG-31905
602+ otherwise the UI might end up in a situation where scrolling doesn't work */
603+ flickableDirection: Flickable.VerticalFlick
604+
605+ Column {
606+ anchors {
607+ left: parent.left
608+ right: parent.right
609+ }
610+
611+ ListItem.SingleValue {
612+ text: i18n.tr("Name")
613+ value: backend.selectedDevice ? backend.selectedDevice.name : i18n.tr("None")
614+ }
615+ ListItem.Standard {
616+ Rectangle {
617+ color: "transparent"
618+ anchors.fill: parent
619+ anchors.topMargin: units.gu(1)
620+ anchors.leftMargin: units.gu(2)
621+ anchors.rightMargin: units.gu(2)
622+
623+ Label {
624+ anchors {
625+ top: parent.top
626+ left: parent.left
627+ topMargin: units.gu(1)
628+ }
629+ height: units.gu(3)
630+ text: i18n.tr("Type")
631+ }
632+ Image {
633+ anchors {
634+ right: deviceType.left
635+ rightMargin: units.gu(1)
636+ }
637+ height: units.gu(4)
638+ width: units.gu(4)
639+ source: backend.selectedDevice ? backend.selectedDevice.iconName : ""
640+ }
641+ Label {
642+ id: deviceType
643+ anchors {
644+ top: parent.top
645+ right: parent.right
646+ topMargin: units.gu(1)
647+ }
648+ height: units.gu(3)
649+ text: getTypeString(backend.selectedDevice ? backend.selectedDevice.type : Device.OTHER)
650+ }
651+ }
652+ }
653+ ListItem.SingleValue {
654+ text: i18n.tr("Status")
655+ value: getStatusString(backend.selectedDevice ? backend.selectedDevice.connection : Device.Disconnected)
656+ }
657+ ListItem.SingleValue {
658+ text: i18n.tr("Signal Strength")
659+ value: getSignalString(backend.selectedDevice ? backend.selectedDevice.strength : Device.None)
660+ }
661+ ListItem.Standard {
662+ id: trustedCheck
663+ text: i18n.tr("Connect automatically when detected:")
664+ control: CheckBox {
665+ onClicked: {
666+ if (backend.selectedDevice) {
667+ backend.selectedDevice.trusted = !backend.selectedDevice.trusted
668+ }
669+ }
670+ checked: backend.selectedDevice ? backend.selectedDevice.trusted : false
671+ }
672+ Component.onCompleted:
673+ clicked.connect(trustedCheck.clicked)
674+ }
675+ ListItem.SingleControl {
676+ control: Button {
677+ text: backend.selectedDevice && (backend.selectedDevice.connection == Device.Connected || backend.selectedDevice.connection == Device.Connecting) ? i18n.tr("Disconnect") : i18n.tr("Connect")
678+ width: parent.width - units.gu(8)
679+ onClicked: {
680+ if (backend.selectedDevice
681+ && (backend.selectedDevice.connection == Device.Connected
682+ || backend.selectedDevice.connection == Device.Connecting)) {
683+ backend.disconnectDevice();
684+ } else {
685+ backend.stopDiscovery()
686+ backend.connectDevice(backend.selectedDevice.address);
687+ }
688+ pageStack.pop();
689+ }
690+ visible: backend.selectedDevice ? true : false
691+ }
692+ }
693+ ListItem.SingleControl {
694+ control: Button {
695+ text: i18n.tr("Forget this device")
696+ width: parent.width - units.gu(8)
697+ onClicked: {
698+ backend.removeDevice();
699+ pageStack.pop();
700+ }
701+ enabled: backend.selectedDevice && backend.selectedDevice.path.length > 0 ? true : false
702+ }
703 }
704 }
705 }
706
707=== modified file 'plugins/bluetooth/agent.h'
708--- plugins/bluetooth/agent.h 2013-09-27 14:55:53 +0000
709+++ plugins/bluetooth/agent.h 2014-08-26 11:38:32 +0000
710@@ -57,7 +57,7 @@
711 void onPairingDone();
712
713 private:
714- Q_DISABLE_COPY(Agent);
715+ Q_DISABLE_COPY(Agent)
716
717 QDBusConnection m_connection;
718 DeviceModel &m_devices;
719
720=== modified file 'plugins/bluetooth/bluetooth.cpp'
721--- plugins/bluetooth/bluetooth.cpp 2014-07-30 02:25:07 +0000
722+++ plugins/bluetooth/bluetooth.cpp 2014-08-26 11:38:32 +0000
723@@ -151,10 +151,8 @@
724
725 void Bluetooth::disconnectDevice()
726 {
727- Device::Type type;
728-
729 if (m_selectedDevice) {
730- type = m_selectedDevice->getType();
731+ auto type = m_selectedDevice->getType();
732 if (type == Device::Type::Headset)
733 m_selectedDevice->disconnect(Device::ConnectionMode::Audio);
734 else if (type == Device::Type::Headphones)
735
736=== modified file 'plugins/bluetooth/bluetooth.h'
737--- plugins/bluetooth/bluetooth.h 2014-07-29 16:44:03 +0000
738+++ plugins/bluetooth/bluetooth.h 2014-08-26 11:38:32 +0000
739@@ -45,22 +45,22 @@
740
741 Q_PROPERTY (QObject * selectedDevice
742 READ getSelectedDevice
743- NOTIFY selectedDeviceChanged);
744+ NOTIFY selectedDeviceChanged)
745
746 Q_PROPERTY (QObject * agent
747- READ getAgent);
748+ READ getAgent)
749
750 Q_PROPERTY (bool powered
751 READ isPowered
752- NOTIFY poweredChanged);
753+ NOTIFY poweredChanged)
754
755 Q_PROPERTY (bool discovering
756 READ isDiscovering
757- NOTIFY discoveringChanged);
758+ NOTIFY discoveringChanged)
759
760 Q_PROPERTY (bool discoverable
761 READ isDiscoverable
762- NOTIFY discoverableChanged);
763+ NOTIFY discoverableChanged)
764
765 Q_SIGNALS:
766 void selectedDeviceChanged();
767
768=== modified file 'plugins/bluetooth/device.cpp'
769--- plugins/bluetooth/device.cpp 2014-07-30 14:51:27 +0000
770+++ plugins/bluetooth/device.cpp 2014-08-26 11:38:32 +0000
771@@ -453,6 +453,7 @@
772 default:
773 return Type::OtherAudio;
774 }
775+ break;
776
777 case 0x05:
778 switch ((c & 0xc0) >> 6) {
779
780=== modified file 'plugins/cellular/CMakeLists.txt'
781--- plugins/cellular/CMakeLists.txt 2014-07-17 20:59:15 +0000
782+++ plugins/cellular/CMakeLists.txt 2014-08-26 11:38:32 +0000
783@@ -9,6 +9,7 @@
784 PageComponent.qml
785 Hotspot.qml
786 HotspotSetup.qml
787+ sims.js
788 )
789
790
791
792=== modified file 'plugins/cellular/Components/CMakeLists.txt'
793--- plugins/cellular/Components/CMakeLists.txt 2014-07-31 20:10:40 +0000
794+++ plugins/cellular/Components/CMakeLists.txt 2014-08-26 11:38:32 +0000
795@@ -1,6 +1,9 @@
796 set(QML_SOURCES
797+ NoSim.qml
798+ SingleSim.qml
799+ MultiSim.qml
800 CellularSingleSim.qml
801- CellularDualSim.qml
802+ CellularMultiSim.qml
803 data-helpers.js
804 DefaultSim.qml
805 Sim.qml
806
807=== renamed file 'plugins/cellular/Components/CellularDualSim.qml' => 'plugins/cellular/Components/CellularMultiSim.qml'
808--- plugins/cellular/Components/CellularDualSim.qml 2014-08-14 13:59:57 +0000
809+++ plugins/cellular/Components/CellularMultiSim.qml 2014-08-26 11:38:32 +0000
810@@ -24,20 +24,18 @@
811
812 Column {
813 id: root
814- property var sim1
815- property var sim2
816 property var selector: selector
817 property var prefMap: ['gsm', 'umts']
818
819 function getNameFromIndex (index) {
820- return [i18n.tr("Off"), sim1.title, sim2.title][index];
821+ return [i18n.tr("Off"), sims[0].title, sims[1].title][index];
822 }
823
824 function getUsedSim () {
825 if (state === "sim1Online") {
826- return sim1;
827+ return sims[0];
828 } else if (state === "sim2Online") {
829- return sim2;
830+ return sims[1];
831 } else {
832 return null;
833 }
834@@ -47,27 +45,27 @@
835 states: [
836 State {
837 name: "sim1Online"
838- when: sim1.connMan.powered && !sim2.connMan.powered
839+ when: sims[0].connMan.powered && !sims[1].connMan.powered
840 StateChangeScript { script: {
841 selector.selectedIndex =
842 DataHelpers.dualSimKeyToIndex(
843- sim1.radioSettings.technologyPreference)
844+ sims[0].radioSettings.technologyPreference)
845 }}
846 },
847 State {
848 name: "sim2Online"
849- when: sim2.connMan.powered && !sim1.connMan.powered
850+ when: sims[1].connMan.powered && !sims[0].connMan.powered
851 StateChangeScript { script: {
852 selector.selectedIndex =
853 DataHelpers.dualSimKeyToIndex(
854- sim2.radioSettings.technologyPreference)
855+ sims[1].radioSettings.technologyPreference)
856 }}
857 },
858 State {
859 name: "bothOnline"
860- when: sim1.connMan.powered && sim2.connMan.powered
861+ when: sims[0].connMan.powered && sims[1].connMan.powered
862 StateChangeScript { script: {
863- sim2.connMan.powered = false;
864+ sims[1].connMan.powered = false;
865 }}
866 }
867 ]
868@@ -82,16 +80,16 @@
869 objectName: "use" + modelData
870 text: getNameFromIndex(index)
871 }
872- selectedIndex: [true, sim1.connMan.powered, sim2.connMan.powered]
873+ selectedIndex: [true, sims[0].connMan.powered, sims[1].connMan.powered]
874 .lastIndexOf(true)
875 onDelegateClicked: {
876- sim1.connMan.powered = (index === 1)
877- sim2.connMan.powered = (index === 2)
878+ sims[0].connMan.powered = (index === 1)
879+ sims[1].connMan.powered = (index === 2)
880 }
881 }
882
883 Connections {
884- target: sim1.connMan
885+ target: sims[0].connMan
886 onPoweredChanged: {
887 if (powered) {
888 use.selectedIndex = 1;
889@@ -100,7 +98,7 @@
890 }
891
892 Connections {
893- target: sim2.connMan
894+ target: sims[1].connMan
895 onPoweredChanged: {
896 if (powered) {
897 use.selectedIndex = 2;
898@@ -124,9 +122,9 @@
899 }
900
901 Connections {
902- target: sim1.radioSettings
903+ target: sims[0].radioSettings
904 onTechnologyPreferenceChanged: {
905- if (sim1.connMan.powered) {
906+ if (sims[0].connMan.powered) {
907 selector.selectedIndex =
908 DataHelpers.dualSimKeyToIndex(preference);
909 }
910@@ -134,9 +132,9 @@
911 }
912
913 Connections {
914- target: sim2.radioSettings
915+ target: sims[1].radioSettings
916 onTechnologyPreferenceChanged: {
917- if (sim2.connMan.powered) {
918+ if (sims[1].connMan.powered) {
919 selector.selectedIndex =
920 DataHelpers.dualSimKeyToIndex(preference);
921 }
922
923=== modified file 'plugins/cellular/Components/CellularSingleSim.qml'
924--- plugins/cellular/Components/CellularSingleSim.qml 2014-08-14 13:59:57 +0000
925+++ plugins/cellular/Components/CellularSingleSim.qml 2014-08-26 11:38:32 +0000
926@@ -25,7 +25,6 @@
927 Column {
928 height: childrenRect.height
929
930- property var sim1
931 property var selector: selector
932
933 ListItem.ItemSelector {
934@@ -33,15 +32,15 @@
935 objectName: "technologyPreferenceSelector"
936 text: i18n.tr("Cellular data:")
937 expanded: true
938- enabled: sim1.radioSettings.technologyPreference !== ""
939+ enabled: sim.radioSettings.technologyPreference !== ""
940 model: [
941 i18n.tr("Off"),
942 i18n.tr("2G only (saves battery)"),
943 i18n.tr("2G/3G/4G (faster)")]
944 selectedIndex: {
945- if (sim1.connMan.powered) {
946+ if (sim.connMan.powered) {
947 return DataHelpers.singleSimKeyToIndex(
948- sim1.radioSettings.technologyPreference);
949+ sim.radioSettings.technologyPreference);
950 } else {
951 return 0;
952 }
953@@ -52,20 +51,20 @@
954 id: dataRoamingItem
955 objectName: "dataRoamingSwitch"
956 text: i18n.tr("Data roaming")
957- enabled: sim1.connMan.powered
958+ enabled: sim.connMan.powered
959 control: Switch {
960 id: dataRoamingControl
961- checked: sim1.connMan.roamingAllowed
962- onClicked: sim1.connMan.roamingAllowed = checked
963+ checked: sim.connMan.roamingAllowed
964+ onClicked: sim.connMan.roamingAllowed = checked
965 }
966 }
967
968 Connections {
969- target: sim1.connMan
970+ target: sim.connMan
971 onPoweredChanged: {
972 if (powered) {
973 selector.selectedIndex = DataHelpers.singleSimKeyToIndex(
974- sim1.radioSettings.technologyPreference);
975+ sim.radioSettings.technologyPreference);
976 } else {
977 selector.selectedIndex = 0;
978 }
979@@ -73,24 +72,24 @@
980 }
981
982 Connections {
983- target: sim1.radioSettings
984+ target: sim.radioSettings
985 onTechnologyPreferenceChanged: {
986 var selIndex = selector.selectedIndex;
987 if (selIndex > 0) {
988- sim1.radioSettings.technologyPreference =
989+ sim.radioSettings.technologyPreference =
990 DataHelpers.singleSimIndexToKey(selIndex);
991 }
992 }
993 }
994
995 Binding {
996- target: sim1.connMan
997+ target: sim.connMan
998 property: "powered"
999 value: selector.selectedIndex !== 0
1000 }
1001
1002 Binding {
1003- target: sim1.radioSettings
1004+ target: sim.radioSettings
1005 property: "technologyPreference"
1006 value: {
1007 var i = selector.selectedIndex;
1008@@ -99,7 +98,7 @@
1009 } else if (i === 2) {
1010 return 'umts';
1011 } else {
1012- return sim1.radioSettings.technologyPreference
1013+ return sim.radioSettings.technologyPreference
1014 }
1015 }
1016 }
1017
1018=== modified file 'plugins/cellular/Components/DefaultSim.qml'
1019--- plugins/cellular/Components/DefaultSim.qml 2014-08-14 09:59:56 +0000
1020+++ plugins/cellular/Components/DefaultSim.qml 2014-08-26 11:38:32 +0000
1021@@ -23,10 +23,10 @@
1022
1023 Column {
1024
1025- property var m: ["ask", sim1.path, sim2.path]
1026+ property var m: ["ask", sims[0].path, sims[1].path]
1027
1028 function getNameFromIndex (index) {
1029- return [i18n.tr("Ask me each time"), sim1.title, sim2.title][index];
1030+ return [i18n.tr("Ask me each time"), sims[0].title, sims[1].title][index];
1031 }
1032
1033 ListItem.ItemSelector {
1034@@ -45,8 +45,7 @@
1035 }
1036
1037 ListItem.Caption {
1038- text: i18n.tr("You can change the SIM for individual calls,
1039- or for contacts in the address book.")
1040+ text: i18n.tr("You can change the SIM for individual calls, or for contacts in the address book.")
1041 }
1042
1043 ListItem.Divider {}
1044
1045=== added file 'plugins/cellular/Components/MultiSim.qml'
1046--- plugins/cellular/Components/MultiSim.qml 1970-01-01 00:00:00 +0000
1047+++ plugins/cellular/Components/MultiSim.qml 2014-08-26 11:38:32 +0000
1048@@ -0,0 +1,120 @@
1049+/*
1050+ * Copyright (C) 2014 Canonical Ltd
1051+ *
1052+ * This program is free software: you can redistribute it and/or modify
1053+ * it under the terms of the GNU General Public License version 3 as
1054+ * published by the Free Software Foundation.
1055+ *
1056+ * This program is distributed in the hope that it will be useful,
1057+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1058+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1059+ * GNU General Public License for more details.
1060+ *
1061+ * You should have received a copy of the GNU General Public License
1062+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1063+ *
1064+ * Authors:
1065+ * Jonas G. Drange <jonas.drange@canonical.com>
1066+ *
1067+*/
1068+import QtQuick 2.0
1069+import GSettings 1.0
1070+import Ubuntu.Components 0.1
1071+import Ubuntu.Components.ListItems 0.1 as ListItem
1072+
1073+Column {
1074+
1075+ objectName: "multiSim"
1076+
1077+ property var sims
1078+ property var modems
1079+
1080+ // make settings available to all children of root
1081+ property var settings: phoneSettings
1082+
1083+ CellularMultiSim {
1084+ anchors { left: parent.left; right: parent.right }
1085+ }
1086+
1087+ ListItem.Divider {}
1088+
1089+ ListItem.SingleValue {
1090+ text : i18n.tr("Hotspot disabled because Wi-Fi is off.")
1091+ visible: showAllUI && !hotspotItem.visible
1092+ }
1093+
1094+ ListItem.SingleValue {
1095+ id: hotspotItem
1096+ text: i18n.tr("Wi-Fi hotspot")
1097+ progression: true
1098+ onClicked: {
1099+ pageStack.push(Qt.resolvedUrl("Hotspot.qml"))
1100+ }
1101+ visible: showAllUI && (actionGroup.actionObject.valid ? actionGroup.actionObject.state : false)
1102+ }
1103+
1104+ ListItem.Standard {
1105+ id: dataUsage
1106+ text: i18n.tr("Data usage statistics")
1107+ progression: true
1108+ visible: showAllUI
1109+ }
1110+
1111+ ListItem.Divider {
1112+ visible: hotspotItem.visible || dataUsage.visible
1113+ }
1114+
1115+ ListItem.SingleValue {
1116+ text: i18n.tr("Carriers")
1117+ id: chooseCarrier
1118+ objectName: "chooseCarrier"
1119+ progression: enabled
1120+ onClicked: {
1121+ pageStack.push(Qt.resolvedUrl("../PageChooseCarriers.qml"), {
1122+ sims: sims
1123+ });
1124+ }
1125+ }
1126+
1127+ ListItem.Divider {}
1128+
1129+ SimEditor {
1130+ anchors { left: parent.left; right: parent.right }
1131+ }
1132+
1133+ ListItem.Divider {}
1134+
1135+ DefaultSim {
1136+ anchors { left: parent.left; right: parent.right }
1137+ }
1138+
1139+ GSettings {
1140+ id: phoneSettings
1141+ schema.id: "com.ubuntu.phone"
1142+ Component.onCompleted: {
1143+ // set default names
1144+ var simNames = phoneSettings.simNames;
1145+ var m0 = modems[0];
1146+ var m1 = modems[1];
1147+ if (!simNames[m0]) {
1148+ simNames[m0] = "SIM 1";
1149+ }
1150+ if (!simNames[m1]) {
1151+ simNames[m1] = "SIM 2";
1152+ }
1153+ phoneSettings.simNames = simNames;
1154+ }
1155+ }
1156+
1157+ Binding {
1158+ target: sims[0]
1159+ property: "name"
1160+ value: phoneSettings.simNames[modems[0]]
1161+ }
1162+
1163+ Binding {
1164+ target: sims[1]
1165+ property: "name"
1166+ value: phoneSettings.simNames[modems[1]]
1167+ }
1168+}
1169
1170=== added file 'plugins/cellular/Components/NoSim.qml'
1171--- plugins/cellular/Components/NoSim.qml 1970-01-01 00:00:00 +0000
1172+++ plugins/cellular/Components/NoSim.qml 2014-08-26 11:38:32 +0000
1173@@ -0,0 +1,51 @@
1174+/*
1175+ * Copyright (C) 2014 Canonical Ltd
1176+ *
1177+ * This program is free software: you can redistribute it and/or modify
1178+ * it under the terms of the GNU General Public License version 3 as
1179+ * published by the Free Software Foundation.
1180+ *
1181+ * This program is distributed in the hope that it will be useful,
1182+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1183+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1184+ * GNU General Public License for more details.
1185+ *
1186+ * You should have received a copy of the GNU General Public License
1187+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1188+ *
1189+ * Authors:
1190+ * Jonas G. Drange <jonas.drange@canonical.com>
1191+ *
1192+*/
1193+import QtQuick 2.0
1194+import Ubuntu.Components 0.1
1195+import Ubuntu.Components.ListItems 0.1 as ListItem
1196+
1197+Column {
1198+
1199+ objectName: "noSim"
1200+
1201+ ListItem.ItemSelector {
1202+ text: i18n.tr("Cellular data:")
1203+ expanded: true
1204+ enabled: false
1205+ model: [i18n.tr("Off"), i18n.tr("2G only (saves battery)"), i18n.tr("2G/3G/4G (faster)")]
1206+ selectedIndex: -1
1207+ }
1208+
1209+ ListItem.Standard {
1210+ text: i18n.tr("Data roaming")
1211+ enabled: false
1212+ control: Switch {
1213+ checked: false
1214+ }
1215+ }
1216+
1217+ ListItem.Divider {}
1218+
1219+ ListItem.SingleValue {
1220+ text: i18n.tr("Carrier");
1221+ value: i18n.tr("N/A")
1222+ enabled: false
1223+ }
1224+}
1225
1226=== modified file 'plugins/cellular/Components/Sim.qml'
1227--- plugins/cellular/Components/Sim.qml 2014-07-25 13:33:36 +0000
1228+++ plugins/cellular/Components/Sim.qml 2014-08-26 11:38:32 +0000
1229@@ -21,12 +21,14 @@
1230 import MeeGo.QOfono 0.2
1231
1232 Item {
1233+ id: root
1234 property alias modem: modem
1235 property alias netReg: netReg
1236 property alias radioSettings: radioSettings
1237 property alias simMng: simMng
1238 property alias connMan: connMan
1239
1240+ property alias present: simMng.present
1241 property string path
1242 property string name
1243 property string title: {
1244
1245=== modified file 'plugins/cellular/Components/SimEditor.qml'
1246--- plugins/cellular/Components/SimEditor.qml 2014-08-15 19:58:34 +0000
1247+++ plugins/cellular/Components/SimEditor.qml 2014-08-26 11:38:32 +0000
1248@@ -44,7 +44,7 @@
1249 name: "editingSim1"
1250 PropertyChanges {
1251 target: nameField
1252- text: sim1.name
1253+ text: sims[0].name
1254 }
1255 ParentChange {
1256 target: editor
1257@@ -60,7 +60,7 @@
1258 name: "editingSim2"
1259 PropertyChanges {
1260 target: nameField
1261- text: sim2.name
1262+ text: sims[1].name
1263 }
1264 ParentChange {
1265 target: editor
1266@@ -108,7 +108,7 @@
1267 right: parent.right
1268 verticalCenter: parent.verticalCenter
1269 }
1270- text: sim1.title
1271+ text: sims[0].title
1272 }
1273 }
1274 Column {
1275@@ -144,7 +144,7 @@
1276 right: parent.right
1277 verticalCenter: parent.verticalCenter
1278 }
1279- text: sim2.title
1280+ text: sims[1].title
1281 }
1282 }
1283 Column {
1284@@ -213,11 +213,11 @@
1285 onTriggered: {
1286 var tmpSimNames = {};
1287 if (simList.state === "editingSim1") {
1288- tmpSimNames[sim1.path] = nameField.text;
1289- tmpSimNames[sim2.path] = sim2.name;
1290+ tmpSimNames[sims[0].path] = nameField.text;
1291+ tmpSimNames[sims[1].path] = sims[1].name;
1292 } else if (simList.state === "editingSim2") {
1293- tmpSimNames[sim1.path] = sim1.name;
1294- tmpSimNames[sim2.path] = nameField.text;
1295+ tmpSimNames[sims[0].path] = sims[0].name;
1296+ tmpSimNames[sims[1].path] = nameField.text;
1297 }
1298 phoneSettings.simNames = tmpSimNames;
1299 simList.state = "";
1300
1301=== added file 'plugins/cellular/Components/SingleSim.qml'
1302--- plugins/cellular/Components/SingleSim.qml 1970-01-01 00:00:00 +0000
1303+++ plugins/cellular/Components/SingleSim.qml 2014-08-26 11:38:32 +0000
1304@@ -0,0 +1,76 @@
1305+/*
1306+ * Copyright (C) 2014 Canonical Ltd
1307+ *
1308+ * This program is free software: you can redistribute it and/or modify
1309+ * it under the terms of the GNU General Public License version 3 as
1310+ * published by the Free Software Foundation.
1311+ *
1312+ * This program is distributed in the hope that it will be useful,
1313+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1314+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1315+ * GNU General Public License for more details.
1316+ *
1317+ * You should have received a copy of the GNU General Public License
1318+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1319+ *
1320+ * Authors:
1321+ * Jonas G. Drange <jonas.drange@canonical.com>
1322+ *
1323+*/
1324+import QtQuick 2.0
1325+import Ubuntu.Components 0.1
1326+import Ubuntu.Components.ListItems 0.1 as ListItem
1327+
1328+Column {
1329+
1330+ objectName: "singleSim"
1331+
1332+ property var sim
1333+
1334+ CellularSingleSim {
1335+ anchors { left: parent.left; right: parent.right }
1336+ }
1337+
1338+ ListItem.Divider {}
1339+
1340+ ListItem.SingleValue {
1341+ text : i18n.tr("Hotspot disabled because Wi-Fi is off.")
1342+ visible: showAllUI && !hotspotItem.visible
1343+ }
1344+
1345+ ListItem.SingleValue {
1346+ id: hotspotItem
1347+ text: i18n.tr("Wi-Fi hotspot")
1348+ progression: true
1349+ onClicked: {
1350+ pageStack.push(Qt.resolvedUrl("Hotspot.qml"))
1351+ }
1352+ visible: showAllUI && (actionGroup.actionObject.valid ? actionGroup.actionObject.state : false)
1353+ }
1354+
1355+ ListItem.Standard {
1356+ text: i18n.tr("Data usage statistics")
1357+ progression: true
1358+ visible: showAllUI
1359+ }
1360+
1361+ ListItem.SingleValue {
1362+ text: i18n.tr("Carrier");
1363+ id: chooseCarrier
1364+ objectName: "chooseCarrier"
1365+ progression: enabled
1366+ value: sim.netReg.name || i18n.tr("N/A")
1367+ onClicked: {
1368+ pageStack.push(Qt.resolvedUrl("../PageChooseCarrier.qml"), {
1369+ netReg: sim.netReg,
1370+ title: i18n.tr("Carrier")
1371+ })
1372+ }
1373+ }
1374+
1375+ ListItem.Standard {
1376+ text: i18n.tr("APN")
1377+ progression: true
1378+ visible: showAllUI
1379+ }
1380+}
1381
1382=== modified file 'plugins/cellular/PageChooseCarriers.qml'
1383--- plugins/cellular/PageChooseCarriers.qml 2014-07-24 19:00:45 +0000
1384+++ plugins/cellular/PageChooseCarriers.qml 2014-08-26 11:38:32 +0000
1385@@ -28,8 +28,7 @@
1386 title: i18n.tr("Carriers")
1387 objectName: "chooseCarriersPage"
1388
1389- property var sim1
1390- property var sim2
1391+ property var sims
1392
1393 Flickable {
1394 anchors.fill: parent
1395@@ -42,33 +41,33 @@
1396 anchors.right: parent.right
1397
1398 ListItem.Standard {
1399- text: sim1.title
1400+ text: sims[0].title
1401 }
1402
1403 ListItem.SingleValue {
1404 objectName: "chooseCarrierSim1"
1405- value: sim1.netReg.name ? sim1.netReg.name : i18n.tr("N/A")
1406+ value: sims[0].netReg.name ? sims[0].netReg.name : i18n.tr("N/A")
1407 progression: true
1408 onClicked: {
1409 pageStack.push(Qt.resolvedUrl("PageChooseCarrier.qml"), {
1410- netReg: sim1.netReg,
1411- title: sim1.title
1412+ netReg: sims[0].netReg,
1413+ title: sims[0].title
1414 })
1415 }
1416 }
1417
1418 ListItem.Standard {
1419- text: sim2.title
1420+ text: sims[1].title
1421 }
1422
1423 ListItem.SingleValue {
1424 objectName: "chooseCarrierSim2"
1425- value: sim2.netReg.name ? sim2.netReg.name : i18n.tr("N/A")
1426+ value: sims[1].netReg.name ? sims[1].netReg.name : i18n.tr("N/A")
1427 progression: true
1428 onClicked: {
1429 pageStack.push(Qt.resolvedUrl("PageChooseCarrier.qml"), {
1430- netReg: sim2.netReg,
1431- title: sim2.title
1432+ netReg: sims[1].netReg,
1433+ title: sims[1].title
1434 })
1435 }
1436 }
1437
1438=== modified file 'plugins/cellular/PageComponent.qml'
1439--- plugins/cellular/PageComponent.qml 2014-08-12 16:25:26 +0000
1440+++ plugins/cellular/PageComponent.qml 2014-08-26 11:38:32 +0000
1441@@ -19,53 +19,69 @@
1442 */
1443
1444 import QtQuick 2.0
1445-import GSettings 1.0
1446 import SystemSettings 1.0
1447 import Ubuntu.Components 0.1
1448 import Ubuntu.Components.ListItems 0.1 as ListItem
1449 import MeeGo.QOfono 0.2
1450 import QMenuModel 0.1
1451-import "Components"
1452+import "Components" as LocalComponents
1453+import "sims.js" as Sims
1454
1455 ItemPage {
1456 id: root
1457 title: i18n.tr("Cellular")
1458 objectName: "cellularPage"
1459
1460- // pointers to sim 1 and 2, lazy loaded
1461- property alias sim1: simOneLoader.item
1462- property alias sim2: simTwoLoader.item
1463 property var modemsSorted: manager.modems.slice(0).sort()
1464+ property int simsLoaded: 0
1465
1466 states: [
1467 State {
1468+ name: "noSim"
1469+ when: (simsLoaded === 0) || (Sims.getPresentCount() === 0)
1470+ StateChangeScript {
1471+ script: loader.source = "Components/NoSim.qml"
1472+ }
1473+ },
1474+ State {
1475 name: "singleSim"
1476 StateChangeScript {
1477- name: "loadSim"
1478- script: {
1479- var p = modemsSorted[0];
1480- simOneLoader.setSource("Components/Sim.qml", {
1481- path: p
1482- });
1483- }
1484+ script: loader.setSource("Components/SingleSim.qml", {
1485+ sim: Sims.get(0)
1486+ })
1487 }
1488+ when: simsLoaded && (Sims.getPresentCount() === 1)
1489 },
1490 State {
1491- name: "dualSim"
1492- extend: "singleSim"
1493+ name: "multiSim"
1494 StateChangeScript {
1495- name: "loadSecondSim"
1496- script: {
1497- var p = modemsSorted[1];
1498- simTwoLoader.setSource("Components/Sim.qml", {
1499- path: p
1500- });
1501- defaultSimLoader.source = "Components/DefaultSim.qml";
1502- }
1503+ script: loader.setSource("Components/MultiSim.qml", {
1504+ sims: Sims.getAll(),
1505+ modems: modemsSorted
1506+ })
1507 }
1508+ when: simsLoaded && (Sims.getPresentCount() > 1)
1509 }
1510 ]
1511
1512+ OfonoManager {
1513+ id: manager
1514+ Component.onCompleted: {
1515+ var component = Qt.createComponent("Components/Sim.qml");
1516+ modemsSorted.forEach(function (path) {
1517+ console.warn('creating sim object for', path)
1518+ var sim = component.createObject(root, {
1519+ path: path
1520+ });
1521+ if (sim === null) {
1522+ console.warn('failed to create sim object');
1523+ } else {
1524+ Sims.add(sim);
1525+ }
1526+ });
1527+ }
1528+ }
1529+
1530 QDBusActionGroup {
1531 id: actionGroup
1532 busType: 1
1533@@ -78,42 +94,6 @@
1534 start()
1535 }
1536 }
1537-
1538- OfonoManager {
1539- id: manager
1540- Component.onCompleted: {
1541- if (modems.length === 1) {
1542- root.state = "singleSim";
1543- } else if (modems.length === 2) {
1544- root.state = "dualSim";
1545- }
1546- }
1547- }
1548-
1549- Loader {
1550- id: simOneLoader
1551- onLoaded: {
1552- if (parent.state === "singleSim") {
1553- cellData.setSource("Components/CellularSingleSim.qml", {
1554- sim1: sim1
1555- });
1556- }
1557- }
1558- }
1559-
1560- Loader {
1561- id: simTwoLoader
1562- onLoaded: {
1563- // unload any single sim setup
1564- cellData.source = "";
1565- cellData.setSource("Components/CellularDualSim.qml", {
1566- sim1: sim1,
1567- sim2: sim2
1568- });
1569- simEditorLoader.source = "Components/SimEditor.qml";
1570- }
1571- }
1572-
1573 Flickable {
1574 anchors.fill: parent
1575 contentWidth: parent.width
1576@@ -124,106 +104,9 @@
1577 anchors { left: parent.left; right: parent.right }
1578
1579 Loader {
1580- id: cellData
1581- anchors { left: parent.left; right: parent.right }
1582- }
1583-
1584- ListItem.SingleValue {
1585- text : i18n.tr("Hotspot disabled because Wi-Fi is off.")
1586- visible: showAllUI && !hotspotItem.visible
1587- }
1588-
1589- ListItem.SingleValue {
1590- id: hotspotItem
1591- text: i18n.tr("Wi-Fi hotspot")
1592- progression: true
1593- onClicked: {
1594- pageStack.push(Qt.resolvedUrl("Hotspot.qml"))
1595- }
1596- visible: showAllUI && (actionGroup.actionObject.valid ? actionGroup.actionObject.state : false)
1597- }
1598-
1599- ListItem.Standard {
1600- text: i18n.tr("Data usage statistics")
1601- progression: true
1602- visible: showAllUI
1603- }
1604-
1605- ListItem.SingleValue {
1606- text: i18n.tr("Carrier", "Carriers", manager.modems.length);
1607- id: chooseCarrier
1608- objectName: "chooseCarrier"
1609- progression: enabled
1610- onClicked: {
1611- if (root.state === 'singleSim') {
1612- pageStack.push(Qt.resolvedUrl("PageChooseCarrier.qml"), {
1613- netReg: sim1.netReg,
1614- title: i18n.tr("Carrier")
1615- })
1616- } else if (root.state === 'dualSim') {
1617- pageStack.push(Qt.resolvedUrl("PageChooseCarriers.qml"), {
1618- sim1: sim1,
1619- sim2: sim2
1620- });
1621- }
1622- }
1623- }
1624-
1625- Binding {
1626- target: chooseCarrier
1627- property: "value"
1628- value: sim1.netReg.name || i18n.tr("N/A")
1629- when: (simOneLoader.status === Loader.Ready) && root.state === "singleSim"
1630- }
1631-
1632- ListItem.Standard {
1633- text: i18n.tr("APN")
1634- progression: true
1635- visible: showAllUI
1636- }
1637-
1638- Loader {
1639- id: simEditorLoader
1640- anchors { left: parent.left; right: parent.right }
1641- }
1642-
1643- ListItem.Divider {}
1644-
1645- Loader {
1646- id: defaultSimLoader
1647- anchors.left: parent.left
1648- anchors.right: parent.right
1649- }
1650- }
1651- }
1652-
1653- GSettings {
1654- id: phoneSettings
1655- schema.id: "com.ubuntu.phone"
1656- Component.onCompleted: {
1657- // set default names
1658- var simNames = phoneSettings.simNames;
1659- var m0 = modemsSorted[0];
1660- var m1 = modemsSorted[1];
1661- if (!simNames[m0]) {
1662- simNames[m0] = "SIM 1";
1663- }
1664- if (!simNames[m1]) {
1665- simNames[m1] = "SIM 2";
1666- }
1667- phoneSettings.simNames = simNames;
1668- }
1669- }
1670-
1671- Binding {
1672- target: sim1
1673- property: "name"
1674- value: phoneSettings.simNames[modemsSorted[0]]
1675- }
1676-
1677- Binding {
1678- target: sim2
1679- property: "name"
1680- value: phoneSettings.simNames[modemsSorted[1]]
1681+ id: loader
1682+ anchors { left: parent.left; right: parent.right }
1683+ }
1684+ }
1685 }
1686 }
1687
1688=== added file 'plugins/cellular/sims.js'
1689--- plugins/cellular/sims.js 1970-01-01 00:00:00 +0000
1690+++ plugins/cellular/sims.js 2014-08-26 11:38:32 +0000
1691@@ -0,0 +1,34 @@
1692+var sims = [];
1693+
1694+function add (sim) {
1695+ sims.push(sim);
1696+ root.simsLoaded++;
1697+}
1698+
1699+function getAll () {
1700+ return sims;
1701+}
1702+
1703+function get (n) {
1704+ return getAll()[n];
1705+}
1706+
1707+function getCount () {
1708+ return getAll().length;
1709+}
1710+
1711+function getPresent () {
1712+ var present = [];
1713+ getAll().forEach(function (sim) {
1714+ if (sim.present) {
1715+ present.push(sim);
1716+ } else {
1717+ return;
1718+ }
1719+ });
1720+ return present;
1721+}
1722+
1723+function getPresentCount () {
1724+ return getPresent().length;
1725+}
1726
1727=== modified file 'plugins/notifications/notification_item.cpp'
1728--- plugins/notifications/notification_item.cpp 2014-07-18 15:22:59 +0000
1729+++ plugins/notifications/notification_item.cpp 2014-08-26 11:38:32 +0000
1730@@ -20,7 +20,8 @@
1731 namespace NotificationsPlugin {
1732
1733 NotificationItem::NotificationItem(QObject *parent) :
1734- QObject(parent)
1735+ QObject(parent),
1736+ m_status(false)
1737 {
1738 }
1739
1740
1741=== modified file 'plugins/phone/CMakeLists.txt'
1742--- plugins/phone/CMakeLists.txt 2014-07-09 13:17:47 +0000
1743+++ plugins/phone/CMakeLists.txt 2014-08-26 11:38:32 +0000
1744@@ -1,10 +1,15 @@
1745 set(QML_SOURCES
1746 CallForwarding.qml
1747 CallWaiting.qml
1748+ MultiSim.qml
1749+ NoSims.qml
1750+ Ofono.qml
1751 PageComponent.qml
1752 ServiceInfo.qml
1753 Services.qml
1754+ SingleSim.qml
1755 dateUtils.js
1756+ sims.js
1757 )
1758
1759 # We need a dummy target so the QML files show up in Qt Creator
1760
1761=== modified file 'plugins/phone/CallForwarding.qml'
1762--- plugins/phone/CallForwarding.qml 2014-07-22 20:10:26 +0000
1763+++ plugins/phone/CallForwarding.qml 2014-08-26 11:38:32 +0000
1764@@ -22,22 +22,22 @@
1765 import SystemSettings 1.0
1766 import Ubuntu.Components 0.1
1767 import Ubuntu.Components.ListItems 0.1 as ListItem
1768-import MeeGo.QOfono 0.2
1769
1770 ItemPage {
1771- title: i18n.tr("Call forwarding")
1772
1773- property bool forwarding: callForwarding.voiceUnconditional !== ""
1774- property string modem
1775+ objectName: "callForwardingPage"
1776+ title: headerTitle
1777+ property var sim
1778+ property bool forwarding: sim.callForwarding.voiceUnconditional !== ""
1779+ property string headerTitle: i18n.tr("Call forwarding")
1780
1781 onForwardingChanged: {
1782 if (callForwardingSwitch.checked !== forwarding)
1783 callForwardingSwitch.checked = forwarding;
1784 }
1785
1786- OfonoCallForwarding {
1787- id: callForwarding
1788- modemPath: modem
1789+ Connections {
1790+ target: sim.callForwarding
1791 onVoiceUnconditionalChanged: {
1792 destNumberField.text = voiceUnconditional;
1793 }
1794@@ -50,13 +50,14 @@
1795
1796 Switch {
1797 id: callForwardingSwitch
1798+ objectName: "callForwardingSwitch"
1799 checked: forwarding
1800 enabled: (forwarding === checked)
1801 visible: callForwardingItem.control === callForwardingSwitch
1802 onCheckedChanged: {
1803 if (!checked && forwarding) {
1804 callForwardingIndicator.running = true;
1805- callForwarding.voiceUnconditional = "";
1806+ sim.callForwarding.voiceUnconditional = "";
1807 }
1808 }
1809 }
1810@@ -101,17 +102,18 @@
1811 visible: callForwardingSwitch.checked
1812 control: TextInput {
1813 id: destNumberField
1814+ objectName: "destNumberField"
1815 horizontalAlignment: TextInput.AlignRight
1816 width: forwardToItem.width/2
1817 inputMethodHints: Qt.ImhDialableCharactersOnly
1818- text: callForwarding.voiceUnconditional
1819+ text: sim.callForwarding.voiceUnconditional
1820 font.pixelSize: units.dp(18)
1821 font.weight: Font.Light
1822 font.family: "Ubuntu"
1823 color: "#AAAAAA"
1824 maximumLength: 20
1825 focus: true
1826- cursorVisible: text !== callForwarding.voiceUnconditional ||
1827+ cursorVisible: text !== sim.callForwarding.voiceUnconditional ||
1828 text === ""
1829 clip: true
1830 opacity: 0.9
1831@@ -133,30 +135,32 @@
1832 spacing: units.gu(2)
1833
1834 Button {
1835+ objectName: "cancel"
1836 text: i18n.tr("Cancel")
1837 width: (buttonsRowId.width-units.gu(2)*4)/3
1838 enabled: !callForwardingIndicator.running
1839 onClicked: {
1840 destNumberField.text =
1841- callForwarding.voiceUnconditional;
1842+ sim.callForwarding.voiceUnconditional;
1843 if (forwarding !== callForwardingSwitch.checked)
1844 callForwardingSwitch.checked = forwarding;
1845 }
1846 }
1847
1848 Button {
1849+ objectName: "set"
1850 text: i18n.tr("Set")
1851 width: (buttonsRowId.width-units.gu(2)*4)/3
1852 enabled: !callForwardingIndicator.running
1853 onClicked: {
1854 callForwardingIndicator.running = true;
1855- callForwarding.voiceUnconditional = destNumberField.text;
1856+ sim.callForwarding.voiceUnconditional = destNumberField.text;
1857 }
1858 }
1859 }
1860 visible: callForwardingSwitch.checked &&
1861 (destNumberField.text !==
1862- callForwarding.voiceUnconditional)
1863+ sim.callForwarding.voiceUnconditional)
1864 }
1865 }
1866 }
1867
1868=== modified file 'plugins/phone/CallWaiting.qml'
1869--- plugins/phone/CallWaiting.qml 2014-07-16 16:45:25 +0000
1870+++ plugins/phone/CallWaiting.qml 2014-08-26 11:38:32 +0000
1871@@ -25,15 +25,24 @@
1872 import MeeGo.QOfono 0.2
1873
1874 ItemPage {
1875- title: i18n.tr("Call waiting")
1876- property string modem
1877+ objectName: "callWaitingPage"
1878+ title: headerTitle
1879+ property var sim
1880+ property string headerTitle: i18n.tr("Call waiting")
1881
1882 OfonoCallSettings {
1883 id: callSettings
1884- modemPath: modem
1885+ modemPath: sim.path
1886 onVoiceCallWaitingChanged: {
1887 callWaitingIndicator.running = false;
1888 }
1889+ onGetPropertiesFailed: {
1890+ console.warn('callSettings, onGetPropertiesFailed');
1891+ callWaitingIndicator.running = false;
1892+ }
1893+ onVoiceCallWaitingComplete: {
1894+ callWaitingIndicator.running = false;
1895+ }
1896 }
1897
1898 ActivityIndicator {
1899@@ -44,7 +53,9 @@
1900
1901 Switch {
1902 id: callWaitingSwitch
1903+ objectName: "callWaitingSwitch"
1904 visible: !callWaitingIndicator.running
1905+ enabled: callSettings.ready
1906 checked: callSettings.voiceCallWaiting !== "disabled"
1907 onClicked: {
1908 callWaitingIndicator.running = true;
1909
1910=== added file 'plugins/phone/MultiSim.qml'
1911--- plugins/phone/MultiSim.qml 1970-01-01 00:00:00 +0000
1912+++ plugins/phone/MultiSim.qml 2014-08-26 11:38:32 +0000
1913@@ -0,0 +1,135 @@
1914+/*
1915+ * Copyright (C) 2014 Canonical Ltd
1916+ *
1917+ * This program is free software: you can redistribute it and/or modify
1918+ * it under the terms of the GNU General Public License version 3 as
1919+ * published by the Free Software Foundation.
1920+ *
1921+ * This program is distributed in the hope that it will be useful,
1922+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
1923+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1924+ * GNU General Public License for more details.
1925+ *
1926+ * You should have received a copy of the GNU General Public License
1927+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
1928+ *
1929+ * Authors:
1930+ * Ken Vandine <ken.vandine@canonical.com>
1931+ * Jonas G. Drange <jonas.drange@canonical.com>
1932+ *
1933+*/
1934+import QtQuick 2.0
1935+import GSettings 1.0
1936+import Ubuntu.Components 1.1
1937+import Ubuntu.Components.ListItems 0.1 as ListItem
1938+
1939+Column {
1940+
1941+ property var sims
1942+
1943+ ListItem.Standard {
1944+ text: sims[0].title
1945+ }
1946+
1947+ ListItem.Standard {
1948+ objectName: "callFwdSim1"
1949+ text: i18n.tr("Call forwarding")
1950+ progression: true
1951+ onClicked: pageStack.push(Qt.resolvedUrl("CallForwarding.qml"), {
1952+ sim: sims[0],
1953+ headerTitle: sims[0].title
1954+ })
1955+ }
1956+
1957+ ListItem.Standard {
1958+ objectName: "callWaitSim1"
1959+ text: i18n.tr("Call waiting")
1960+ progression: true
1961+ onClicked: pageStack.push(Qt.resolvedUrl("CallWaiting.qml"), {
1962+ sim: sims[0],
1963+ headerTitle: sims[0].title
1964+ })
1965+ }
1966+
1967+ ListItem.Standard {
1968+ objectName: "simServicesSim1"
1969+ text: i18n.tr("Services")
1970+ progression: true
1971+ enabled: sims[0].simMng.present
1972+ onClicked: pageStack.push(Qt.resolvedUrl("Services.qml"), {
1973+ carrierString: sims[0].netReg.name,
1974+ sim: sims[0].simMng,
1975+ headerTitle: sims[0].title
1976+ })
1977+ }
1978+
1979+ ListItem.Divider {}
1980+
1981+ ListItem.Standard {
1982+ text: sims[1].title
1983+ }
1984+
1985+ ListItem.Standard {
1986+ objectName: "callFwdSim2"
1987+ text: i18n.tr("Call forwarding")
1988+ progression: true
1989+ onClicked: pageStack.push(Qt.resolvedUrl("CallForwarding.qml"), {
1990+ sim: sims[1],
1991+ headerTitle: sims[1].title
1992+ })
1993+ }
1994+
1995+ ListItem.Standard {
1996+ objectName: "callWaitSim2"
1997+ text: i18n.tr("Call waiting")
1998+ progression: true
1999+ onClicked: pageStack.push(Qt.resolvedUrl("CallWaiting.qml"), {
2000+ sim: sims[1],
2001+ headerTitle: sims[1].title
2002+ })
2003+ }
2004+
2005+ ListItem.Standard {
2006+ objectName: "simServicesSim2"
2007+ text: i18n.tr("Services")
2008+ progression: true
2009+ enabled: sims[1].simMng.present
2010+ onClicked: pageStack.push(Qt.resolvedUrl("Services.qml"), {
2011+ carrierString: sims[1].netReg.name,
2012+ sim: sims[1].simMng,
2013+ headerTitle: sims[1].title
2014+ })
2015+ }
2016+
2017+
2018+ GSettings {
2019+ id: phoneSettings
2020+ schema.id: "com.ubuntu.phone"
2021+ Component.onCompleted: {
2022+ // set default names
2023+ var simNames = phoneSettings.simNames;
2024+ var m0 = sims[0].path
2025+ var m1 = sims[1].path
2026+ if (!simNames[m0]) {
2027+ simNames[m0] = "SIM 1";
2028+ }
2029+ if (!simNames[m1]) {
2030+ simNames[m1] = "SIM 2";
2031+ }
2032+ phoneSettings.simNames = simNames;
2033+ }
2034+ }
2035+
2036+ Binding {
2037+ target: sims[0]
2038+ property: "name"
2039+ value: phoneSettings.simNames[modemsSorted[0]]
2040+ }
2041+
2042+ Binding {
2043+ target: sims[1]
2044+ property: "name"
2045+ value: phoneSettings.simNames[modemsSorted[1]]
2046+ }
2047+
2048+}
2049
2050=== added file 'plugins/phone/NoSims.qml'
2051--- plugins/phone/NoSims.qml 1970-01-01 00:00:00 +0000
2052+++ plugins/phone/NoSims.qml 2014-08-26 11:38:32 +0000
2053@@ -0,0 +1,46 @@
2054+/*
2055+ * Copyright (C) 2014 Canonical Ltd
2056+ *
2057+ * This program is free software: you can redistribute it and/or modify
2058+ * it under the terms of the GNU General Public License version 3 as
2059+ * published by the Free Software Foundation.
2060+ *
2061+ * This program is distributed in the hope that it will be useful,
2062+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2063+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2064+ * GNU General Public License for more details.
2065+ *
2066+ * You should have received a copy of the GNU General Public License
2067+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2068+ *
2069+ * Authors:
2070+ * Ken Vandine <ken.vandine@canonical.com>
2071+ * Jonas G. Drange <jonas.drange@canonical.com>
2072+ *
2073+*/
2074+import QtQuick 2.0
2075+import Ubuntu.Components 1.1
2076+import Ubuntu.Components.ListItems 0.1 as ListItem
2077+
2078+Column {
2079+
2080+ ListItem.Standard {
2081+ text: i18n.tr("Call forwarding")
2082+ progression: true
2083+ enabled: false
2084+ }
2085+
2086+ ListItem.Standard {
2087+ text: i18n.tr("Call waiting")
2088+ progression: true
2089+ enabled: false
2090+ }
2091+
2092+ ListItem.Divider {}
2093+
2094+ ListItem.Standard {
2095+ text: i18n.tr("Services")
2096+ progression: true
2097+ enabled: false
2098+ }
2099+}
2100
2101=== added file 'plugins/phone/Ofono.qml'
2102--- plugins/phone/Ofono.qml 1970-01-01 00:00:00 +0000
2103+++ plugins/phone/Ofono.qml 2014-08-26 11:38:32 +0000
2104@@ -0,0 +1,50 @@
2105+/*
2106+ * Copyright (C) 2014 Canonical Ltd
2107+ *
2108+ * This program is free software: you can redistribute it and/or modify
2109+ * it under the terms of the GNU General Public License version 3 as
2110+ * published by the Free Software Foundation.
2111+ *
2112+ * This program is distributed in the hope that it will be useful,
2113+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2114+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2115+ * GNU General Public License for more details.
2116+ *
2117+ * You should have received a copy of the GNU General Public License
2118+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2119+ *
2120+ * Authors:
2121+ * Jonas G. Drange <jonas.drange@canonical.com>
2122+ *
2123+*/
2124+import QtQuick 2.0
2125+import MeeGo.QOfono 0.2
2126+
2127+Item {
2128+ property alias callForwarding: callForwarding
2129+ property alias netReg: netReg
2130+ property alias simMng: simMng
2131+ property alias present: simMng.present
2132+
2133+ property string path
2134+ property string name
2135+ property string title: {
2136+ var number = simMng.subscriberNumbers[0] || simMng.subscriberIdentity;
2137+ return name + (number ? " (" + number + ")" : "");
2138+ }
2139+
2140+ OfonoCallForwarding {
2141+ id: callForwarding
2142+ modemPath: path
2143+ }
2144+
2145+ OfonoNetworkRegistration {
2146+ id: netReg
2147+ modemPath: path
2148+ }
2149+
2150+ OfonoSimManager {
2151+ id: simMng
2152+ modemPath: path
2153+ }
2154+}
2155
2156=== modified file 'plugins/phone/PageComponent.qml'
2157--- plugins/phone/PageComponent.qml 2014-07-18 13:00:36 +0000
2158+++ plugins/phone/PageComponent.qml 2014-08-26 11:38:32 +0000
2159@@ -23,52 +23,77 @@
2160 import Ubuntu.Components 0.1
2161 import Ubuntu.Components.ListItems 0.1 as ListItem
2162 import MeeGo.QOfono 0.2
2163+import "sims.js" as Sims
2164
2165 ItemPage {
2166+ id: root
2167+ objectName: "phonePage"
2168 title: i18n.tr("Phone")
2169- property string carrierName: netop.name
2170- property string carrierString: carrierName ? carrierName : i18n.tr("SIM")
2171+ flickable: flick
2172+
2173+ property var modemsSorted: manager.modems.slice(0).sort()
2174+ property var simsLoaded: 0
2175+
2176+ states: [
2177+ State {
2178+ name: "noSim"
2179+ StateChangeScript {
2180+ script: loader.setSource("NoSims.qml")
2181+ }
2182+ when: (simsLoaded === 0) || (Sims.getPresentCount() === 0)
2183+ },
2184+ State {
2185+ name: "singleSim"
2186+ StateChangeScript {
2187+ script: loader.setSource("SingleSim.qml", { sim: Sims.get(0) })
2188+
2189+ }
2190+ when: simsLoaded && (Sims.getPresentCount() === 1)
2191+ },
2192+ State {
2193+ name: "multiSim"
2194+ StateChangeScript {
2195+ script: loader.setSource("MultiSim.qml", {
2196+ sims: Sims.getAll()
2197+ })
2198+ }
2199+ when: simsLoaded && (Sims.getPresentCount() > 1)
2200+ }
2201+ ]
2202
2203 OfonoManager {
2204 id: manager
2205- }
2206-
2207- OfonoNetworkRegistration {
2208- id: netop;
2209- modemPath: manager.modems[0]
2210- onNameChanged: carrierName = netop.name
2211- }
2212-
2213- OfonoSimManager {
2214- id: sim
2215- modemPath: manager.modems[0]
2216- }
2217-
2218- Column {
2219+ Component.onCompleted: {
2220+ // create ofono bindings for all modem paths
2221+ var component = Qt.createComponent("Ofono.qml");
2222+ modemsSorted.forEach(function (path) {
2223+ var sim = component.createObject(root, {
2224+ path: path
2225+ });
2226+ if (sim === null) {
2227+ console.warn('failed to create sim object');
2228+ } else {
2229+ Sims.add(sim);
2230+ }
2231+ });
2232+ }
2233+ }
2234+
2235+ Flickable {
2236+ id: flick
2237 anchors.fill: parent
2238-
2239- ListItem.Standard {
2240- text: i18n.tr("Call forwarding")
2241- progression: true
2242- onClicked: pageStack.push(Qt.resolvedUrl("CallForwarding.qml"), {modem: manager.modems[0]})
2243- }
2244-
2245- ListItem.Standard {
2246- text: i18n.tr("Call waiting")
2247- progression: true
2248- onClicked: pageStack.push(Qt.resolvedUrl("CallWaiting.qml"), {modem: manager.modems[0]})
2249- showDivider: false
2250- }
2251-
2252- ListItem.Divider {}
2253-
2254- ListItem.Standard {
2255- // TRANSLATORS: %1 is the name of the (network) carrier
2256- text: i18n.tr("%1 Services").arg(carrierString)
2257- progression: true
2258- enabled: sim.present
2259- onClicked: pageStack.push(Qt.resolvedUrl("Services.qml"),
2260- {carrierString: carrierString, sim: sim})
2261+ contentWidth: parent.width
2262+ contentHeight: contentItem.childrenRect.height
2263+ boundsBehavior: (contentHeight > root.height) ?
2264+ Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
2265+
2266+ Column {
2267+ anchors { left: parent.left; right: parent.right }
2268+
2269+ Loader {
2270+ id: loader
2271+ anchors { left: parent.left; right: parent.right }
2272+ }
2273 }
2274 }
2275 }
2276
2277=== modified file 'plugins/phone/Services.qml'
2278--- plugins/phone/Services.qml 2014-06-19 03:54:01 +0000
2279+++ plugins/phone/Services.qml 2014-08-26 11:38:32 +0000
2280@@ -24,12 +24,15 @@
2281 import Ubuntu.Components.ListItems 0.1 as ListItem
2282
2283 ItemPage {
2284+ objectName: "servicesPage"
2285+ title: headerTitle
2286 property string carrierString
2287 property variant sim
2288 property var names: []
2289
2290 // TRANSLATORS: %1 is the name of the (network) carrier
2291- title: i18n.tr("%1 Services").arg(carrierString)
2292+ property string headerTitle: i18n.tr("%1 Services").arg(carrierString)
2293+
2294
2295 Component.onCompleted: {
2296 var keys = [];
2297
2298=== added file 'plugins/phone/SingleSim.qml'
2299--- plugins/phone/SingleSim.qml 1970-01-01 00:00:00 +0000
2300+++ plugins/phone/SingleSim.qml 2014-08-26 11:38:32 +0000
2301@@ -0,0 +1,57 @@
2302+/*
2303+ * Copyright (C) 2014 Canonical Ltd
2304+ *
2305+ * This program is free software: you can redistribute it and/or modify
2306+ * it under the terms of the GNU General Public License version 3 as
2307+ * published by the Free Software Foundation.
2308+ *
2309+ * This program is distributed in the hope that it will be useful,
2310+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
2311+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2312+ * GNU General Public License for more details.
2313+ *
2314+ * You should have received a copy of the GNU General Public License
2315+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
2316+ *
2317+ * Authors:
2318+ * Ken Vandine <ken.vandine@canonical.com>
2319+ * Jonas G. Drange <jonas.drange@canonical.com>
2320+ *
2321+*/
2322+import QtQuick 2.0
2323+import Ubuntu.Components 1.1
2324+import Ubuntu.Components.ListItems 0.1 as ListItem
2325+
2326+Column {
2327+
2328+ property var sim
2329+ property string carrierName: sim.netReg.name
2330+ property string carrierString: carrierName ? carrierName : i18n.tr("SIM")
2331+
2332+ ListItem.Standard {
2333+ objectName: "callFwd"
2334+ text: i18n.tr("Call forwarding")
2335+ progression: true
2336+ onClicked: pageStack.push(Qt.resolvedUrl("CallForwarding.qml"), {sim: sim})
2337+ }
2338+
2339+ ListItem.Standard {
2340+ objectName: "callWait"
2341+ text: i18n.tr("Call waiting")
2342+ progression: true
2343+ onClicked: pageStack.push(Qt.resolvedUrl("CallWaiting.qml"), {sim: sim})
2344+ showDivider: false
2345+ }
2346+
2347+ ListItem.Divider {}
2348+
2349+ ListItem.Standard {
2350+ objectName: "simServices"
2351+ // TRANSLATORS: %1 is the name of the (network) carrier
2352+ text: i18n.tr("%1 Services").arg(carrierString)
2353+ progression: true
2354+ enabled: sim.simMng.present
2355+ onClicked: pageStack.push(Qt.resolvedUrl("Services.qml"),
2356+ {carrierString: carrierString, sim: sim.simMng})
2357+ }
2358+}
2359
2360=== added file 'plugins/phone/sims.js'
2361--- plugins/phone/sims.js 1970-01-01 00:00:00 +0000
2362+++ plugins/phone/sims.js 2014-08-26 11:38:32 +0000
2363@@ -0,0 +1,34 @@
2364+var sims = [];
2365+
2366+function add (sim) {
2367+ sims.push(sim);
2368+ root.simsLoaded++;
2369+}
2370+
2371+function getAll () {
2372+ return sims;
2373+}
2374+
2375+function get (n) {
2376+ return getAll()[n];
2377+}
2378+
2379+function getCount () {
2380+ return getAll().length;
2381+}
2382+
2383+function getPresent () {
2384+ var present = [];
2385+ getAll().forEach(function (sim) {
2386+ if (sim.present) {
2387+ present.push(sim);
2388+ } else {
2389+ return;
2390+ }
2391+ });
2392+ return present;
2393+}
2394+
2395+function getPresentCount () {
2396+ return getPresent().length;
2397+}
2398
2399=== modified file 'plugins/security-privacy/LockSecurity.qml'
2400--- plugins/security-privacy/LockSecurity.qml 2014-08-12 08:37:44 +0000
2401+++ plugins/security-privacy/LockSecurity.qml 2014-08-26 11:38:32 +0000
2402@@ -89,9 +89,9 @@
2403 changeSecurityDialog.oldMethod) { // Changing existing
2404 switch (changeSecurityDialog.newMethod) {
2405 case UbuntuSecurityPrivacyPanel.Passcode:
2406- return i18n.tr("Change passcode")
2407+ return i18n.tr("Change passcode…")
2408 case UbuntuSecurityPrivacyPanel.Passphrase:
2409- return i18n.tr("Change passphrase")
2410+ return i18n.tr("Change passphrase…")
2411 default: // To stop the runtime complaining
2412 return ""
2413 }
2414@@ -390,6 +390,7 @@
2415
2416 onClicked: openDialog()
2417 }
2418+ showDivider: false
2419 }
2420 }
2421 }
2422
2423=== modified file 'plugins/security-privacy/PageComponent.qml'
2424--- plugins/security-privacy/PageComponent.qml 2014-08-11 11:05:58 +0000
2425+++ plugins/security-privacy/PageComponent.qml 2014-08-26 11:38:32 +0000
2426@@ -24,15 +24,20 @@
2427 import Ubuntu.Components 0.1
2428 import Ubuntu.Components.ListItems 0.1 as ListItem
2429 import SystemSettings 1.0
2430+import Ubuntu.SystemSettings.Battery 1.0
2431 import Ubuntu.SystemSettings.Diagnostics 1.0
2432 import Ubuntu.SystemSettings.SecurityPrivacy 1.0
2433
2434 ItemPage {
2435 id: root
2436+ objectName: "securityPrivacyPage"
2437
2438 title: i18n.tr("Security & Privacy")
2439 flickable: scrollWidget
2440
2441+ property alias usePowerd: batteryBackend.powerdRunning
2442+ property bool lockOnSuspend
2443+
2444 UbuntuDiagnostics {
2445 id: diagnosticsWidget
2446 }
2447@@ -41,6 +46,10 @@
2448 id: securityPrivacy
2449 }
2450
2451+ UbuntuBatteryPanel {
2452+ id: batteryBackend
2453+ }
2454+
2455 GSettings {
2456 id: unitySettings
2457 schema.id: "com.canonical.Unity.Lenses"
2458@@ -53,6 +62,11 @@
2459 }
2460 }
2461
2462+ GSettings {
2463+ id: powerSettings
2464+ schema.id: usePowerd ? "com.ubuntu.touch.system" : "org.gnome.desktop.session"
2465+ }
2466+
2467 Flickable {
2468 id: scrollWidget
2469 anchors.fill: parent
2470@@ -68,42 +82,34 @@
2471
2472 ListItem.Standard {
2473 id: securityTitle
2474- text: i18n.tr("Security:")
2475- // visible: lockingControl.visible || simControl.visible
2476- }
2477- /* When more of the phone locking page is implemented, we can
2478- * remove the next item below, which is a duplicate of an item in
2479- * PhoneLocking.qml, and uncomment the visible line above. */
2480+ text: i18n.tr("Security")
2481+ }
2482 ListItem.SingleValue {
2483- property string swipe: i18n.tr("None")
2484- property string passcode: i18n.tr("Passcode")
2485- property string passphrase: i18n.tr("Passphrase")
2486-
2487- text: i18n.tr("Lock security")
2488+ id: lockingControl
2489+ objectName: "lockingControl"
2490+ text: i18n.tr("Lock phone")
2491 value: {
2492- switch (securityPrivacy.securityType) {
2493- case UbuntuSecurityPrivacyPanel.Swipe:
2494- return swipe
2495- case UbuntuSecurityPrivacyPanel.Passcode:
2496- return passcode
2497- case UbuntuSecurityPrivacyPanel.Passphrase:
2498- return passphrase
2499+ if (batteryBackend.powerdRunning ) {
2500+ var timeout = Math.round(powerSettings.activityTimeout/60)
2501+ return (powerSettings.activityTimeout != 0) ?
2502+ // TRANSLATORS: %1 is the number of minutes
2503+ i18n.tr("After %1 minute",
2504+ "After %1 minutes",
2505+ timeout).arg(timeout) :
2506+ i18n.tr("Never")
2507+ }
2508+ else {
2509+ var timeout = Math.round(powerSettings.idleDelay/60)
2510+ return (powerSettings.idleDelay != 0) ?
2511+ // TRANSLATORS: %1 is the number of minutes
2512+ i18n.tr("After %1 minute",
2513+ "After %1 minutes",
2514+ timeout).arg(timeout) :
2515+ i18n.tr("Manually")
2516 }
2517 }
2518 progression: true
2519- onClicked: pageStack.push(Qt.resolvedUrl("LockSecurity.qml"))
2520- visible: !showAllUI
2521- }
2522- ListItem.SingleValue {
2523- id: lockingControl
2524- text: i18n.tr("Phone locking")
2525- // TRANSLATORS: %1 is the number of minutes
2526- value: i18n.tr("%1 minute",
2527- "%1 minutes",
2528- 5).arg(5)
2529- progression: true
2530- onClicked: pageStack.push(Qt.resolvedUrl("PhoneLocking.qml"))
2531- visible: showAllUI
2532+ onClicked: pageStack.push(Qt.resolvedUrl("PhoneLocking.qml"), {usePowerd: usePowerd, powerSettings: powerSettings})
2533 }
2534 ListItem.SingleValue {
2535 id: simControl
2536@@ -111,10 +117,24 @@
2537 value: "Off"
2538 progression: true
2539 visible: showAllUI
2540- }
2541- ListItem.Standard {
2542- text: i18n.tr("Privacy:")
2543- visible: securityTitle.visible
2544+ /* Not implemented yet */
2545+ //onClicked: pageStack.push(Qt.resolvedUrl("SimPin.qml"))
2546+ }
2547+ ListItem.Standard {
2548+ text: i18n.tr("Encryption")
2549+ control: Switch {
2550+ id: encryptionSwitch
2551+ checked: false
2552+ }
2553+ visible: showAllUI
2554+ }
2555+ ListItem.Caption {
2556+ text: i18n.tr(
2557+ "Encryption protects against access to phone data when the phone is connected to a PC or other device.")
2558+ visible: showAllUI
2559+ }
2560+ ListItem.Standard {
2561+ text: i18n.tr("Privacy")
2562 }
2563 ListItem.Standard {
2564 text: i18n.tr("Stats on welcome screen")
2565@@ -164,7 +184,8 @@
2566 }
2567 ListItem.SingleValue {
2568 text: i18n.tr("Location access")
2569- value: "On"
2570+ value: locationActionGroup.enabled.state ?
2571+ i18n.tr("On") : i18n.tr("Off")
2572 progression: true
2573 onClicked: pageStack.push(Qt.resolvedUrl("Location.qml"))
2574 visible: showAllUI && // Hidden until the indicator works
2575@@ -190,7 +211,6 @@
2576 pageStack.push(Qt.resolvedUrl(path));
2577 }
2578 }
2579-
2580 }
2581 }
2582 }
2583
2584=== modified file 'plugins/security-privacy/PhoneLocking.qml'
2585--- plugins/security-privacy/PhoneLocking.qml 2014-06-24 18:50:41 +0000
2586+++ plugins/security-privacy/PhoneLocking.qml 2014-08-26 11:38:32 +0000
2587@@ -26,8 +26,13 @@
2588 import Ubuntu.SystemSettings.SecurityPrivacy 1.0
2589
2590 ItemPage {
2591+ id: root
2592+ objectName: "phoneLockingPage"
2593 title: i18n.tr("Phone locking")
2594
2595+ property bool usePowerd
2596+ property variant powerSettings
2597+
2598 UbuntuSecurityPrivacyPanel {
2599 id: securityPrivacy
2600 }
2601@@ -57,14 +62,31 @@
2602 }
2603
2604 ListItem.SingleValue {
2605+ objectName: "lockTimeout"
2606 property bool lockOnSuspend: securityPrivacy.securityType !==
2607 UbuntuSecurityPrivacyPanel.Swipe
2608 text: lockOnSuspend ? i18n.tr("Lock when idle")
2609 : i18n.tr("Sleep when idle")
2610- // TRANSLATORS: %1 is the number of minutes
2611- value: i18n.tr("%1 minute",
2612- "%1 minutes",
2613- 5).arg(5)
2614+ value: {
2615+ if (usePowerd) {
2616+ var timeout = Math.round(powerSettings.activityTimeout/60)
2617+ return (powerSettings.activityTimeout != 0) ?
2618+ // TRANSLATORS: %1 is the number of minutes
2619+ i18n.tr("%1 minute",
2620+ "%1 minutes",
2621+ timeout).arg(timeout) :
2622+ i18n.tr("Never")
2623+ }
2624+ else {
2625+ var timeout = Math.round(powerSettings.idleDelay/60)
2626+ return (powerSettings.idleDelay != 0) ?
2627+ // TRANSLATORS: %1 is the number of minutes
2628+ i18n.tr("%1 minute",
2629+ "%1 minutes",
2630+ timeout).arg(timeout) :
2631+ i18n.tr("Never")
2632+ }
2633+ }
2634 progression: true
2635 onClicked:
2636 pageStack.push(
2637@@ -77,6 +99,7 @@
2638 checked: true
2639 }
2640 text: i18n.tr("Sleep locks immediately")
2641+ visible: showAllUI
2642 }
2643
2644 /* TODO: once we know how to do this
2645
2646=== modified file 'plugins/security-privacy/trust-store-model.cpp'
2647--- plugins/security-privacy/trust-store-model.cpp 2014-08-19 13:00:15 +0000
2648+++ plugins/security-privacy/trust-store-model.cpp 2014-08-26 11:38:32 +0000
2649@@ -179,7 +179,7 @@
2650 Q_Q(TrustStoreModel);
2651
2652 Q_ASSERT(trustStore);
2653- Q_ASSERT(row >= 0 && row < d->applications.count());
2654+ Q_ASSERT(row >= 0 && row < applications.count());
2655
2656 Application &app = applications[row];
2657 app.grantedFeatures.clear();
2658
2659=== modified file 'plugins/system-update/PageComponent.qml'
2660--- plugins/system-update/PageComponent.qml 2014-08-15 09:03:46 +0000
2661+++ plugins/system-update/PageComponent.qml 2014-08-26 11:38:32 +0000
2662@@ -33,7 +33,7 @@
2663 objectName: "systemUpdatesPage"
2664
2665 title: i18n.tr("Updates")
2666- flickable: null
2667+ flickable: scrollWidget
2668
2669 property bool installAll: false
2670 property bool includeSystemUpdate: false
2671@@ -140,9 +140,6 @@
2672
2673 onCredentialsNotFound: {
2674 credentialsNotification.visible = true;
2675- notification.text = i18n.tr("Please log into your Ubuntu One account.");
2676- notification.progression = true;
2677- notificationAction = root.open_online_accounts;
2678 }
2679
2680 onSystemUpdateDownloaded: {
2681@@ -152,320 +149,312 @@
2682
2683 onSystemUpdateFailed: {
2684 root.state = "SYSTEMUPDATEFAILED";
2685- if (lastReason) {
2686- notification.text = lastReason;
2687- } else {
2688- notification.text = i18n.tr("System update has failed.");
2689- }
2690- notification.progression = false;
2691- notificationAction = undefined;
2692 }
2693
2694 onUpdateProcessFailed: {
2695 root.state = "SYSTEMUPDATEFAILED";
2696- if (message) {
2697- notification.text = message;
2698- } else {
2699- notification.text = i18n.tr("System update failed.");
2700- }
2701- }
2702- }
2703-
2704- Item {
2705- id: checkForUpdatesArea
2706- objectName: "checkForUpdatesArea"
2707- visible: false
2708- anchors {
2709- left: parent.left
2710- right: parent.right
2711- top: parent.top
2712- topMargin: units.gu(2)
2713- leftMargin: units.gu(4)
2714- rightMargin: units.gu(4)
2715- }
2716- height: installAllButton.height
2717-
2718- ActivityIndicator {
2719- id: activity
2720- running: checkForUpdatesArea.visible
2721- visible: activity.running
2722- anchors {
2723- left: parent.left
2724- top: parent.top
2725- topMargin: units.gu(1)
2726- }
2727- }
2728-
2729- Label {
2730- text: i18n.tr("Checking for updates…")
2731- verticalAlignment: Text.AlignVCenter
2732- elide: Text.ElideRight
2733- anchors {
2734- left: activity.right
2735- top: parent.top
2736- right: checkForUpdatesArea.right
2737- bottom: parent.bottom
2738- leftMargin: units.gu(2)
2739- rightMargin: units.gu(2)
2740- }
2741- }
2742- }
2743-
2744- Button {
2745- id: installAllButton
2746- objectName: "installAllButton"
2747-
2748- property string primaryText: includeSystemUpdate ? i18n.tr("Install %1 updates…").arg(root.updatesAvailable) : i18n.tr("Install %1 updates").arg(root.updatesAvailable)
2749- property string secondaryText: i18n.tr("Pause All")
2750- text: root.installAll ? secondaryText : primaryText
2751- anchors {
2752- left: parent.left
2753- right: parent.right
2754- top: parent.top
2755- topMargin: units.gu(2)
2756- leftMargin: units.gu(4)
2757- rightMargin: units.gu(4)
2758- }
2759- visible: false
2760-
2761- color: UbuntuColors.orange
2762- onClicked: {
2763- root.installAll = !root.installAll;
2764- for (var i=0; i < updateList.count; i++) {
2765- updateList.currentIndex = i;
2766- var item = updateList.currentItem;
2767- var modelItem = updateManager.model[i];
2768- if (modelItem.updateState != root.installAll && !modelItem.updateReady) {
2769- item.actionButton.clicked();
2770- }
2771- }
2772- }
2773- opacity: root.updatesAvailable > 0 ? 1 : 0
2774-
2775- Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SlowDuration
2776- easing: UbuntuAnimation.StandardEasing } }
2777- }
2778-
2779- ListView {
2780- id: updateList
2781- objectName: "updateList"
2782- visible: false
2783- anchors {
2784- left: parent.left
2785- right: parent.right
2786- top: installAllButton.visible ? installAllButton.bottom : parent.top
2787- bottom: notification.visible ? notification.top : configuration.top
2788- margins: units.gu(2)
2789- bottomMargin: 0
2790- }
2791- model: updateManager.model
2792+ }
2793+ }
2794+ Flickable {
2795+ id: scrollWidget
2796+
2797+ anchors.top: parent.top
2798+ anchors.left: parent.left
2799+ anchors.right: parent.right
2800+ anchors.bottom: configuration.top
2801+
2802+ contentHeight: contentItem.childrenRect.height
2803+ boundsBehavior: (contentHeight > root.height) ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
2804 clip: true
2805- contentHeight: contentItem.childrenRect.height
2806- boundsBehavior: (contentHeight > (root.height - checkForUpdatesArea.height)) ? Flickable.DragAndOvershootBounds : Flickable.StopAtBounds
2807-
2808- delegate: ListItem.Subtitled {
2809- id: listItem
2810- iconSource: Qt.resolvedUrl(modelData.iconUrl)
2811- height: modelData.selected ? units.gu(14) : units.gu(8)
2812- showDivider: false
2813-
2814- property alias actionButton: buttonAppUpdate
2815-
2816- Rectangle {
2817- id: textArea
2818- objectName: "textArea"
2819- color: "transparent"
2820- anchors.fill: parent
2821- anchors.topMargin: units.gu(1)
2822-
2823- property string message: modelData.error
2824- property bool retry: false
2825-
2826- onMessageChanged: {
2827- if(message.length > 0) {
2828- labelVersion.text = message;
2829- buttonAppUpdate.text = i18n.tr("Retry");
2830- modelData.updateState = false;
2831- modelData.selected = false;
2832- textArea.retry = true;
2833- }
2834- }
2835-
2836- Button {
2837- id: buttonAppUpdate
2838- objectName: "buttonAppUpdate"
2839- anchors.top: parent.top
2840- anchors.right: parent.right
2841- anchors.topMargin: units.gu(1)
2842- anchors.rightMargin: units.gu(1)
2843- height: labelTitle.height
2844-
2845- property string actionText: modelData.systemUpdate ? i18n.tr("Download") : i18n.tr("Update")
2846- property string primaryText: modelData.selected ? i18n.tr("Resume") : actionText
2847- property string secondaryText: i18n.tr("Pause")
2848-
2849- text: modelData.updateState ? secondaryText : primaryText
2850+ /* Set the direction to workaround https://bugreports.qt-project.org/browse/QTBUG-31905
2851+ otherwise the UI might end up in a situation where scrolling doesn't work */
2852+ flickableDirection: Flickable.VerticalFlick
2853+
2854+ Column {
2855+ id: columnId
2856+
2857+ anchors.left: parent.left
2858+ anchors.right: parent.right
2859+
2860+ ListItem.Base {
2861+ id: checkForUpdatesArea
2862+ objectName: "checkForUpdatesArea"
2863+ showDivider: false
2864+ visible: false
2865+
2866+ ActivityIndicator {
2867+ id: activity
2868+ running: checkForUpdatesArea.visible
2869+ visible: activity.running
2870+ anchors {
2871+ left: parent.left
2872+ top: parent.top
2873+ rightMargin: units.gu(2)
2874+ }
2875+ height: parent.height
2876+ }
2877+
2878+ Label {
2879+ text: i18n.tr("Checking for updates…")
2880+ verticalAlignment: Text.AlignVCenter
2881+ elide: Text.ElideRight
2882+ anchors {
2883+ left: activity.right
2884+ top: parent.top
2885+ leftMargin: units.gu(2)
2886+ }
2887+ height: parent.height
2888+ }
2889+ }
2890+
2891+ ListItem.SingleControl {
2892+ id: installAllButton
2893+ objectName: "installAllButton"
2894+
2895+ control: Button {
2896+ property string primaryText: includeSystemUpdate ?
2897+ i18n.tr("Install %1 update…", "Install %1 updates…", root.updatesAvailable).arg(root.updatesAvailable) :
2898+ i18n.tr("Install %1 update", "Install %1 updates", root.updatesAvailable).arg(root.updatesAvailable)
2899+ property string secondaryText: i18n.tr("Pause All")
2900+ color: UbuntuColors.orange
2901+ text: root.installAll ? secondaryText : primaryText
2902+ width: parent.width - units.gu(4)
2903
2904 onClicked: {
2905- if (textArea.retry) {
2906- textArea.retry = false;
2907- updateManager.retryDownload(modelData.packageName);
2908- } else if (modelData.updateReady) {
2909- updateManager.applySystemUpdate();
2910- installingImageUpdate.visible = true;
2911- } else if (modelData.updateState) {
2912- if (modelData.systemUpdate) {
2913- updateManager.pauseDownload(modelData.packageName);
2914- } else {
2915+ root.installAll = !root.installAll;
2916+ for (var i=0; i < updateList.count; i++) {
2917+ updateList.currentIndex = i;
2918+ var item = updateList.currentItem;
2919+ var modelItem = updateManager.model[i];
2920+ if (modelItem.updateState != root.installAll && !modelItem.updateReady) {
2921+ item.actionButton.clicked();
2922+ }
2923+ }
2924+ }
2925+ }
2926+ }
2927+
2928+ ListView {
2929+ id: updateList
2930+ objectName: "updateList"
2931+ anchors {
2932+ left: parent.left
2933+ right: parent.right
2934+ }
2935+ model: updateManager.model
2936+ height: contentItem.childrenRect.height
2937+ interactive: false
2938+
2939+ delegate: ListItem.Subtitled {
2940+ id: listItem
2941+ iconSource: Qt.resolvedUrl(modelData.iconUrl)
2942+ height: modelData.selected ? units.gu(14) : units.gu(8)
2943+ showDivider: false
2944+
2945+ property alias actionButton: buttonAppUpdate
2946+
2947+ Rectangle {
2948+ id: textArea
2949+ objectName: "textArea"
2950+ color: "transparent"
2951+ anchors.fill: parent
2952+ anchors.topMargin: units.gu(1)
2953+
2954+ property string message: modelData.error
2955+ property bool retry: false
2956+
2957+ onMessageChanged: {
2958+ if(message.length > 0) {
2959+ labelVersion.text = message;
2960+ buttonAppUpdate.text = i18n.tr("Retry");
2961 modelData.updateState = false;
2962- tracker.pause();
2963- }
2964- } else {
2965- if (!modelData.selected || modelData.systemUpdate) {
2966- modelData.selected = true;
2967- updateManager.startDownload(modelData.packageName);
2968- } else {
2969- modelData.updateState = true;
2970- tracker.resume();
2971- }
2972- }
2973- }
2974- }
2975-
2976- Label {
2977- id: labelSize
2978- objectName: "labelSize"
2979- text: convert_bytes_to_size(modelData.binaryFilesize)
2980- anchors.bottom: labelVersion.bottom
2981- anchors.right: parent.right
2982- anchors.rightMargin: units.gu(1)
2983- visible: !modelData.selected
2984- }
2985-
2986- Label {
2987- id: labelTitle
2988- objectName: "labelTitle"
2989- anchors {
2990- top: parent.top
2991- left: parent.left
2992- right: buttonAppUpdate.left
2993- topMargin: units.gu(1)
2994- rightMargin: units.gu(1)
2995- }
2996- height: units.gu(3)
2997- text: modelData.title
2998- font.bold: true
2999- elide: buttonAppUpdate.visible ? Text.ElideRight : Text.ElideNone
3000- }
3001-
3002- Label {
3003- id: labelUpdateStatus
3004- objectName: "labelUpdateStatus"
3005- text: i18n.tr("Installing")
3006- anchors.top: labelTitle.bottom
3007- anchors.left: parent.left
3008- anchors.right: parent.right
3009- opacity: modelData.selected ? 1 : 0
3010- anchors.bottomMargin: units.gu(1)
3011-
3012- Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SleepyDuration } }
3013- }
3014-
3015- ProgressBar {
3016- id: progress
3017- objectName: "progress"
3018- height: units.gu(2)
3019- anchors.left: parent.left
3020- anchors.top: labelUpdateStatus.bottom
3021- anchors.topMargin: units.gu(1)
3022- anchors.right: parent.right
3023- opacity: modelData.selected ? 1 : 0
3024- value: modelData.systemUpdate ? modelData.downloadProgress : tracker.progress
3025- minimumValue: 0
3026- maximumValue: 100
3027-
3028- DownloadTracker {
3029- id: tracker
3030- objectName: "tracker"
3031- packageName: modelData.packageName
3032- clickToken: modelData.clickToken
3033- download: modelData.downloadUrl
3034-
3035- onFinished: {
3036- progress.visible = false;
3037- buttonAppUpdate.visible = false;
3038- textArea.message = i18n.tr("Installed");
3039- root.updatesAvailable -= 1;
3040- }
3041-
3042- onErrorFound: {
3043- modelData.updateState = false;
3044- textArea.message = error;
3045- }
3046- }
3047-
3048- Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SleepyDuration } }
3049- }
3050-
3051- Label {
3052- id: labelVersion
3053- objectName: "labelVersion"
3054- anchors {
3055- left: parent.left
3056- right: buttonAppUpdate.right
3057- top: (!progress.visible || progress.opacity == 0) ? labelTitle.bottom : progress.bottom
3058- topMargin: (!progress.visible || progress.opacity == 0) ? 0 : units.gu(1)
3059- bottom: parent.bottom
3060- bottomMargin: units.gu(1)
3061- }
3062- text: modelData.remoteVersion ? i18n.tr("Version: ") + modelData.remoteVersion : ""
3063- color: "black"
3064- elide: Text.ElideRight
3065- }
3066- }
3067- }
3068- }
3069-
3070- ListItem.Standard {
3071- id: notification
3072- objectName: "notification"
3073- visible: updateNotification.visible || credentialsNotification.visible ? true : false
3074- anchors.bottom: configuration.top
3075-
3076- onClicked: {
3077- if (notificationAction) {
3078- notificationAction();
3079- }
3080- }
3081- }
3082-
3083- ListItem.SingleValue {
3084- id: configuration
3085- objectName: "configuration"
3086- anchors.bottom: parent.bottom
3087- text: i18n.tr("Auto download")
3088- value: {
3089- if (updateManager.downloadMode === 0)
3090- return i18n.tr("Never")
3091- else if (updateManager.downloadMode === 1)
3092- return i18n.tr("On wi-fi")
3093- else if (updateManager.downloadMode === 2)
3094- return i18n.tr("Always")
3095- }
3096- progression: true
3097- onClicked: pageStack.push(Qt.resolvedUrl("Configuration.qml"), {updateManager: updateManager})
3098+ modelData.selected = false;
3099+ textArea.retry = true;
3100+ }
3101+ }
3102+
3103+ Button {
3104+ id: buttonAppUpdate
3105+ objectName: "buttonAppUpdate"
3106+ anchors.top: parent.top
3107+ anchors.right: parent.right
3108+ anchors.topMargin: units.gu(1)
3109+ anchors.rightMargin: units.gu(1)
3110+ height: labelTitle.height
3111+
3112+ property string actionText: modelData.systemUpdate ? i18n.tr("Download") : i18n.tr("Update")
3113+ property string primaryText: modelData.selected ? i18n.tr("Resume") : actionText
3114+ property string secondaryText: i18n.tr("Pause")
3115+
3116+ text: modelData.updateState ? secondaryText : primaryText
3117+
3118+ onClicked: {
3119+ if (textArea.retry) {
3120+ textArea.retry = false;
3121+ updateManager.retryDownload(modelData.packageName);
3122+ } else if (modelData.updateReady) {
3123+ updateManager.applySystemUpdate();
3124+ installingImageUpdate.visible = true;
3125+ } else if (modelData.updateState) {
3126+ if (modelData.systemUpdate) {
3127+ updateManager.pauseDownload(modelData.packageName);
3128+ } else {
3129+ modelData.updateState = false;
3130+ tracker.pause();
3131+ }
3132+ } else {
3133+ if (!modelData.selected || modelData.systemUpdate) {
3134+ modelData.selected = true;
3135+ updateManager.startDownload(modelData.packageName);
3136+ } else {
3137+ modelData.updateState = true;
3138+ tracker.resume();
3139+ }
3140+ }
3141+ }
3142+ }
3143+
3144+ Label {
3145+ id: labelSize
3146+ objectName: "labelSize"
3147+ text: convert_bytes_to_size(modelData.binaryFilesize)
3148+ anchors.bottom: labelVersion.bottom
3149+ anchors.right: parent.right
3150+ anchors.rightMargin: units.gu(1)
3151+ visible: !modelData.selected
3152+ }
3153+
3154+ Label {
3155+ id: labelTitle
3156+ objectName: "labelTitle"
3157+ anchors {
3158+ top: parent.top
3159+ left: parent.left
3160+ right: buttonAppUpdate.left
3161+ topMargin: units.gu(1)
3162+ rightMargin: units.gu(1)
3163+ }
3164+ height: units.gu(3)
3165+ text: modelData.title
3166+ font.bold: true
3167+ elide: buttonAppUpdate.visible ? Text.ElideRight : Text.ElideNone
3168+ }
3169+
3170+ Label {
3171+ id: labelUpdateStatus
3172+ objectName: "labelUpdateStatus"
3173+ text: i18n.tr("Installing")
3174+ anchors.top: labelTitle.bottom
3175+ anchors.left: parent.left
3176+ anchors.right: parent.right
3177+ opacity: modelData.selected ? 1 : 0
3178+ anchors.bottomMargin: units.gu(1)
3179+
3180+ Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SleepyDuration } }
3181+ }
3182+
3183+ ProgressBar {
3184+ id: progress
3185+ objectName: "progress"
3186+ height: units.gu(2)
3187+ anchors.left: parent.left
3188+ anchors.top: labelUpdateStatus.bottom
3189+ anchors.topMargin: units.gu(1)
3190+ anchors.right: parent.right
3191+ opacity: modelData.selected ? 1 : 0
3192+ value: modelData.systemUpdate ? modelData.downloadProgress : tracker.progress
3193+ minimumValue: 0
3194+ maximumValue: 100
3195+
3196+ DownloadTracker {
3197+ id: tracker
3198+ objectName: "tracker"
3199+ packageName: modelData.packageName
3200+ clickToken: modelData.clickToken
3201+ download: modelData.downloadUrl
3202+
3203+ onFinished: {
3204+ progress.visible = false;
3205+ buttonAppUpdate.visible = false;
3206+ textArea.message = i18n.tr("Installed");
3207+ root.updatesAvailable -= 1;
3208+ }
3209+
3210+ onErrorFound: {
3211+ modelData.updateState = false;
3212+ textArea.message = error;
3213+ }
3214+ }
3215+
3216+ Behavior on opacity { PropertyAnimation { duration: UbuntuAnimation.SleepyDuration } }
3217+ }
3218+
3219+ Label {
3220+ id: labelVersion
3221+ objectName: "labelVersion"
3222+ anchors {
3223+ left: parent.left
3224+ right: buttonAppUpdate.right
3225+ top: (!progress.visible || progress.opacity == 0) ? labelTitle.bottom : progress.bottom
3226+ topMargin: (!progress.visible || progress.opacity == 0) ? 0 : units.gu(1)
3227+ bottom: parent.bottom
3228+ bottomMargin: units.gu(1)
3229+ }
3230+ text: modelData.remoteVersion ? i18n.tr("Version: ") + modelData.remoteVersion : ""
3231+ color: "black"
3232+ elide: Text.ElideRight
3233+ }
3234+ }
3235+ }
3236+ }
3237+
3238+ Column {
3239+ id: credentialsNotification
3240+ objectName: "credentialsNotification"
3241+
3242+ visible: false
3243+
3244+ spacing: units.gu(2)
3245+ anchors {
3246+ left: parent.left
3247+ right: parent.right
3248+ }
3249+ ListItem.ThinDivider {}
3250+
3251+ Label {
3252+ text: i18n.tr("Sign in to Ubuntu One to receive updates for apps.")
3253+ horizontalAlignment: Text.AlignHCenter
3254+ wrapMode: Text.Wrap
3255+ anchors {
3256+ left: parent.left
3257+ right: parent.right
3258+ }
3259+ }
3260+ Button {
3261+ text: i18n.tr("Sign In…")
3262+ anchors {
3263+ left: parent.left
3264+ right: parent.right
3265+ leftMargin: units.gu(2)
3266+ rightMargin: units.gu(2)
3267+ }
3268+ onClicked: open_online_accounts()
3269+ }
3270+
3271+ }
3272+
3273+
3274+ }
3275 }
3276
3277 Rectangle {
3278 id: updateNotification
3279 objectName: "updateNotification"
3280 anchors {
3281+ bottom: configuration.top
3282 left: parent.left
3283 right: parent.right
3284- top: installAllButton.bottom
3285- bottom: notification.visible ? notification.top : configuration.top
3286- margins: units.gu(2)
3287- bottomMargin: 0
3288+ top: parent.top
3289 }
3290 visible: false
3291 property string text: ""
3292@@ -482,35 +471,14 @@
3293 }
3294
3295 Rectangle {
3296- id: credentialsNotification
3297- objectName: "credentialsNotification"
3298- anchors {
3299- left: parent.left
3300- right: parent.right
3301- top: installAllButton.bottom
3302- bottom: notification.visible ? notification.top : configuration.top
3303- margins: units.gu(2)
3304- bottomMargin: 0
3305- }
3306- visible: false
3307-
3308- color: "transparent"
3309-
3310- Column {
3311- anchors.centerIn: parent
3312-
3313- Label {
3314- text: i18n.tr("Credentials not found")
3315- anchors.horizontalCenter: parent.horizontalCenter
3316- fontSize: "large"
3317- }
3318- }
3319- }
3320-
3321- Rectangle {
3322 id: installingImageUpdate
3323 objectName: "installingImageUpdate"
3324- anchors.fill: parent
3325+ anchors {
3326+ bottom: configuration.top
3327+ left: parent.left
3328+ right: parent.right
3329+ top: parent.top
3330+ }
3331 visible: false
3332
3333 color: "#221e1c"
3334@@ -536,6 +504,29 @@
3335 }
3336 }
3337
3338+ Column {
3339+ id: configuration
3340+
3341+ anchors.bottom: parent.bottom
3342+ anchors.left: parent.left
3343+ anchors.right: parent.right
3344+ ListItem.ThinDivider {}
3345+ ListItem.SingleValue {
3346+ objectName: "configuration"
3347+ text: i18n.tr("Auto download")
3348+ value: {
3349+ if (updateManager.downloadMode === 0)
3350+ return i18n.tr("Never")
3351+ else if (updateManager.downloadMode === 1)
3352+ return i18n.tr("On wi-fi")
3353+ else if (updateManager.downloadMode === 2)
3354+ return i18n.tr("Always")
3355+ }
3356+ progression: true
3357+ onClicked: pageStack.push(Qt.resolvedUrl("Configuration.qml"), {updateManager: updateManager})
3358+ }
3359+ }
3360+
3361 function convert_bytes_to_size(bytes) {
3362 var SIZE_IN_GIB = 1024.0 * 1024.0 * 1024.0;
3363 var SIZE_IN_MIB = 1024.0 * 1024.0;
3364
3365=== modified file 'plugins/system-update/update_manager.cpp'
3366--- plugins/system-update/update_manager.cpp 2014-05-13 14:30:04 +0000
3367+++ plugins/system-update/update_manager.cpp 2014-08-26 11:38:32 +0000
3368@@ -40,7 +40,8 @@
3369 QObject(parent),
3370 m_systemCheckingUpdate(false),
3371 m_clickCheckingUpdate(false),
3372- m_checkingUpdates(0)
3373+ m_checkingUpdates(0),
3374+ m_downloadMode(-1)
3375 {
3376 // SSO SERVICE
3377 QObject::connect(&m_service, SIGNAL(credentialsFound(const Token&)),
3378
3379=== modified file 'plugins/time-date/timezonelocationmodel.cpp'
3380--- plugins/time-date/timezonelocationmodel.cpp 2014-06-11 13:05:23 +0000
3381+++ plugins/time-date/timezonelocationmodel.cpp 2014-08-26 11:38:32 +0000
3382@@ -134,6 +134,7 @@
3383 return QVariant();
3384 break;
3385 }
3386+ throw "Unreachable code";
3387 }
3388
3389 QHash<int, QByteArray> TimeZoneLocationModel::roleNames() const
3390@@ -193,11 +194,10 @@
3391 TzDB *tzdb = tz_load_db();
3392 GPtrArray *tz_locations = tz_get_locations(tzdb);
3393
3394- CcTimezoneLocation *tmp;
3395 TimeZoneLocationModel::TzLocation tmpTz;
3396
3397 for (guint i = 0; i < tz_locations->len; ++i) {
3398- tmp = (CcTimezoneLocation *) g_ptr_array_index(tz_locations, i);
3399+ auto tmp = static_cast<CcTimezoneLocation *>(g_ptr_array_index(tz_locations, i));
3400 gchar *en_name, *country, *zone, *state, *full_country;
3401 g_object_get (tmp, "en_name", &en_name,
3402 "country", &country,
3403
3404=== modified file 'po/am.po'
3405--- po/am.po 2014-08-22 07:38:19 +0000
3406+++ po/am.po 2014-08-26 11:38:32 +0000
3407@@ -15,7 +15,7 @@
3408 "Content-Type: text/plain; charset=UTF-8\n"
3409 "Content-Transfer-Encoding: 8bit\n"
3410 "Plural-Forms: nplurals=2; plural=n > 1;\n"
3411-"X-Launchpad-Export-Date: 2014-08-22 07:37+0000\n"
3412+"X-Launchpad-Export-Date: 2014-08-23 07:14+0000\n"
3413 "X-Generator: Launchpad (build 17163)\n"
3414
3415 #: ../plugins/language//SpellChecking.qml:27
3416
3417=== modified file 'po/en_AU.po'
3418--- po/en_AU.po 2014-08-20 06:22:04 +0000
3419+++ po/en_AU.po 2014-08-26 11:38:32 +0000
3420@@ -8,14 +8,14 @@
3421 "Project-Id-Version: ubuntu-system-settings\n"
3422 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3423 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
3424-"PO-Revision-Date: 2014-08-13 02:03+0000\n"
3425+"PO-Revision-Date: 2014-08-23 02:38+0000\n"
3426 "Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
3427 "Language-Team: English (Australia) <en_AU@li.org>\n"
3428 "MIME-Version: 1.0\n"
3429 "Content-Type: text/plain; charset=UTF-8\n"
3430 "Content-Transfer-Encoding: 8bit\n"
3431 "Plural-Forms: nplurals=2; plural=n != 1;\n"
3432-"X-Launchpad-Export-Date: 2014-08-20 06:21+0000\n"
3433+"X-Launchpad-Export-Date: 2014-08-24 06:45+0000\n"
3434 "X-Generator: Launchpad (build 17163)\n"
3435
3436 #: ../plugins/language//SpellChecking.qml:27
3437@@ -50,7 +50,7 @@
3438
3439 #: ../plugins/language//PageComponent.qml:128
3440 msgid "Auto correction"
3441-msgstr ""
3442+msgstr "Auto correction"
3443
3444 #: ../plugins/language//PageComponent.qml:138
3445 msgid "Word suggestions"
3446@@ -66,12 +66,13 @@
3447
3448 #: ../plugins/language//PageComponent.qml:168
3449 msgid "Auto punctuation"
3450-msgstr ""
3451+msgstr "Auto punctuation"
3452
3453 #: ../plugins/language//PageComponent.qml:178
3454 msgid ""
3455 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
3456 msgstr ""
3457+"Adds a period, and any missing quotes or brackets, when you tap Space twice."
3458
3459 #: ../plugins/language//PageComponent.qml:185
3460 #: ../plugins/sound//PageComponent.qml:186
3461@@ -80,7 +81,7 @@
3462
3463 #: ../plugins/language//PageComponent.qml:195
3464 msgid "Keyboard vibration"
3465-msgstr ""
3466+msgstr "Keyboard vibration"
3467
3468 #: ../plugins/language//KeyboardLayouts.qml:39
3469 msgid "Current layouts:"
3470@@ -310,7 +311,7 @@
3471
3472 #: ../plugins/security-privacy//AppAccess.qml:35
3473 msgid "Apps that you have granted and have requested access to:"
3474-msgstr ""
3475+msgstr "Apps that you have granted and have requested access to:"
3476
3477 #: ../plugins/security-privacy//AppAccess.qml:41
3478 #: ../plugins/bluetooth//PageComponent.qml:100
3479@@ -319,24 +320,24 @@
3480
3481 #: ../plugins/security-privacy//AppAccess.qml:42
3482 msgid "Apps that have requested access to your camera"
3483-msgstr ""
3484+msgstr "Apps that have requested access to your camera"
3485
3486 #: ../plugins/security-privacy//AppAccess.qml:46
3487 msgid "Mic"
3488-msgstr ""
3489+msgstr "Mic"
3490
3491 #: ../plugins/security-privacy//AppAccess.qml:47
3492 msgid "Apps that have requested access to your mic"
3493-msgstr ""
3494+msgstr "Apps that have requested access to your mic"
3495
3496 #: ../plugins/security-privacy//AppAccess.qml:59
3497 #, qt-format
3498 msgid "%1/%2"
3499-msgstr ""
3500+msgstr "%1/%2"
3501
3502 #: ../plugins/security-privacy//AppAccess.qml:60
3503 msgid "0"
3504-msgstr ""
3505+msgstr "0"
3506
3507 #: ../plugins/security-privacy//LockSecurity.qml:92
3508 msgid "Change passcode"
3509@@ -1075,7 +1076,7 @@
3510 #: ../plugins/battery//PageComponent.qml:290
3511 #: ../plugins/brightness//BrightnessSlider.qml:51
3512 msgid "Display brightness"
3513-msgstr ""
3514+msgstr "Display brightness"
3515
3516 #. TRANSLATORS: %1 is the number of minutes
3517 #: ../plugins/battery//PageComponent.qml:306
3518@@ -1418,7 +1419,7 @@
3519
3520 #: ../plugins/brightness//PageComponent.qml:65
3521 msgid "Brightens and dims the display to suit the surroundings."
3522-msgstr ""
3523+msgstr "Brightens and dims the display to suit the surroundings."
3524
3525 #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
3526 #: ../plugins/sound//PageComponent.qml:38
3527@@ -1564,27 +1565,27 @@
3528
3529 #: ../wizard/qml/Pages//15-passwd.qml:37
3530 msgid "Set lock security"
3531-msgstr ""
3532+msgstr "Set lock security"
3533
3534 #: ../wizard/qml/Pages//15-passwd.qml:86
3535 msgid "Swipe"
3536-msgstr ""
3537+msgstr "Swipe"
3538
3539 #: ../wizard/qml/Pages//15-passwd.qml:136
3540 msgid "Those passcodes don't match."
3541-msgstr ""
3542+msgstr "Those passcodes don't match."
3543
3544 #: ../wizard/qml/Pages//15-passwd.qml:138
3545 msgid "Those passphrases don't match."
3546-msgstr ""
3547+msgstr "Those passphrases don't match."
3548
3549 #: ../wizard/qml/Pages//15-passwd.qml:146
3550 msgid "Passcode must be at least four digits long."
3551-msgstr ""
3552+msgstr "Passcode must be at least four digits long."
3553
3554 #: ../wizard/qml/Pages//15-passwd.qml:148
3555 msgid "Passphrase must be at least four characters long."
3556-msgstr ""
3557+msgstr "Passphrase must be at least four characters long."
3558
3559 #: ../wizard/qml/Pages//10-welcome.qml:25
3560 msgid "Hello"
3561@@ -1890,8 +1891,8 @@
3562
3563 #: ../push-helper/software-updates-helper.py:78
3564 msgid "There's an updated system image."
3565-msgstr ""
3566+msgstr "There's an updated system image."
3567
3568 #: ../push-helper/software-updates-helper.py:79
3569 msgid "Tap to open the system updater."
3570-msgstr ""
3571+msgstr "Tap to open the system updater."
3572
3573=== modified file 'po/en_GB.po'
3574--- po/en_GB.po 2014-08-20 06:22:04 +0000
3575+++ po/en_GB.po 2014-08-26 11:38:32 +0000
3576@@ -8,14 +8,14 @@
3577 "Project-Id-Version: ubuntu-system-settings\n"
3578 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3579 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
3580-"PO-Revision-Date: 2014-08-12 12:45+0000\n"
3581+"PO-Revision-Date: 2014-08-22 11:37+0000\n"
3582 "Last-Translator: Alan Pope ㋛ <alan@ubuntu.com>\n"
3583 "Language-Team: English (United Kingdom) <en_GB@li.org>\n"
3584 "MIME-Version: 1.0\n"
3585 "Content-Type: text/plain; charset=UTF-8\n"
3586 "Content-Transfer-Encoding: 8bit\n"
3587 "Plural-Forms: nplurals=2; plural=n != 1;\n"
3588-"X-Launchpad-Export-Date: 2014-08-20 06:21+0000\n"
3589+"X-Launchpad-Export-Date: 2014-08-23 07:15+0000\n"
3590 "X-Generator: Launchpad (build 17163)\n"
3591
3592 #: ../plugins/language//SpellChecking.qml:27
3593@@ -50,7 +50,7 @@
3594
3595 #: ../plugins/language//PageComponent.qml:128
3596 msgid "Auto correction"
3597-msgstr ""
3598+msgstr "Auto correction"
3599
3600 #: ../plugins/language//PageComponent.qml:138
3601 msgid "Word suggestions"
3602@@ -66,12 +66,14 @@
3603
3604 #: ../plugins/language//PageComponent.qml:168
3605 msgid "Auto punctuation"
3606-msgstr ""
3607+msgstr "Auto punctuation"
3608
3609 #: ../plugins/language//PageComponent.qml:178
3610 msgid ""
3611 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
3612 msgstr ""
3613+"Adds a full-stop, and any missing quotes or brackets, when you tap Space "
3614+"twice."
3615
3616 #: ../plugins/language//PageComponent.qml:185
3617 #: ../plugins/sound//PageComponent.qml:186
3618@@ -80,7 +82,7 @@
3619
3620 #: ../plugins/language//PageComponent.qml:195
3621 msgid "Keyboard vibration"
3622-msgstr ""
3623+msgstr "Keyboard vibration"
3624
3625 #: ../plugins/language//KeyboardLayouts.qml:39
3626 msgid "Current layouts:"
3627@@ -310,7 +312,7 @@
3628
3629 #: ../plugins/security-privacy//AppAccess.qml:35
3630 msgid "Apps that you have granted and have requested access to:"
3631-msgstr ""
3632+msgstr "Apps that you have granted and have requested access to:"
3633
3634 #: ../plugins/security-privacy//AppAccess.qml:41
3635 #: ../plugins/bluetooth//PageComponent.qml:100
3636@@ -319,24 +321,24 @@
3637
3638 #: ../plugins/security-privacy//AppAccess.qml:42
3639 msgid "Apps that have requested access to your camera"
3640-msgstr ""
3641+msgstr "Apps that have requested access to your camera"
3642
3643 #: ../plugins/security-privacy//AppAccess.qml:46
3644 msgid "Mic"
3645-msgstr ""
3646+msgstr "Mic"
3647
3648 #: ../plugins/security-privacy//AppAccess.qml:47
3649 msgid "Apps that have requested access to your mic"
3650-msgstr ""
3651+msgstr "Apps that have requested access to your mic"
3652
3653 #: ../plugins/security-privacy//AppAccess.qml:59
3654 #, qt-format
3655 msgid "%1/%2"
3656-msgstr ""
3657+msgstr "%1/%2"
3658
3659 #: ../plugins/security-privacy//AppAccess.qml:60
3660 msgid "0"
3661-msgstr ""
3662+msgstr "0"
3663
3664 #: ../plugins/security-privacy//LockSecurity.qml:92
3665 msgid "Change passcode"
3666@@ -1075,7 +1077,7 @@
3667 #: ../plugins/battery//PageComponent.qml:290
3668 #: ../plugins/brightness//BrightnessSlider.qml:51
3669 msgid "Display brightness"
3670-msgstr ""
3671+msgstr "Display brightness"
3672
3673 #. TRANSLATORS: %1 is the number of minutes
3674 #: ../plugins/battery//PageComponent.qml:306
3675@@ -1418,7 +1420,7 @@
3676
3677 #: ../plugins/brightness//PageComponent.qml:65
3678 msgid "Brightens and dims the display to suit the surroundings."
3679-msgstr ""
3680+msgstr "Brightens and dims the display to suit the surroundings."
3681
3682 #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
3683 #: ../plugins/sound//PageComponent.qml:38
3684@@ -1564,27 +1566,27 @@
3685
3686 #: ../wizard/qml/Pages//15-passwd.qml:37
3687 msgid "Set lock security"
3688-msgstr ""
3689+msgstr "Set lock security"
3690
3691 #: ../wizard/qml/Pages//15-passwd.qml:86
3692 msgid "Swipe"
3693-msgstr ""
3694+msgstr "Swipe"
3695
3696 #: ../wizard/qml/Pages//15-passwd.qml:136
3697 msgid "Those passcodes don't match."
3698-msgstr ""
3699+msgstr "Those passcodes don't match."
3700
3701 #: ../wizard/qml/Pages//15-passwd.qml:138
3702 msgid "Those passphrases don't match."
3703-msgstr ""
3704+msgstr "Those passphrases don't match."
3705
3706 #: ../wizard/qml/Pages//15-passwd.qml:146
3707 msgid "Passcode must be at least four digits long."
3708-msgstr ""
3709+msgstr "Passcode must be at least four digits long."
3710
3711 #: ../wizard/qml/Pages//15-passwd.qml:148
3712 msgid "Passphrase must be at least four characters long."
3713-msgstr ""
3714+msgstr "Passphrase must be at least four characters long."
3715
3716 #: ../wizard/qml/Pages//10-welcome.qml:25
3717 msgid "Hello"
3718@@ -1890,8 +1892,8 @@
3719
3720 #: ../push-helper/software-updates-helper.py:78
3721 msgid "There's an updated system image."
3722-msgstr ""
3723+msgstr "There's an updated system image."
3724
3725 #: ../push-helper/software-updates-helper.py:79
3726 msgid "Tap to open the system updater."
3727-msgstr ""
3728+msgstr "Tap to open the system updater."
3729
3730=== modified file 'po/es.po'
3731--- po/es.po 2014-08-20 06:22:04 +0000
3732+++ po/es.po 2014-08-26 11:38:32 +0000
3733@@ -8,14 +8,14 @@
3734 "Project-Id-Version: ubuntu-system-settings\n"
3735 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3736 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
3737-"PO-Revision-Date: 2014-08-16 13:20+0000\n"
3738-"Last-Translator: Adolfo Jayme <fitoschido@gmail.com>\n"
3739+"PO-Revision-Date: 2014-08-26 05:19+0000\n"
3740+"Last-Translator: Leo Arias <leo.arias@canonical.com>\n"
3741 "Language-Team: Spanish <es@li.org>\n"
3742 "MIME-Version: 1.0\n"
3743 "Content-Type: text/plain; charset=UTF-8\n"
3744 "Content-Transfer-Encoding: 8bit\n"
3745 "Plural-Forms: nplurals=2; plural=n != 1;\n"
3746-"X-Launchpad-Export-Date: 2014-08-20 06:21+0000\n"
3747+"X-Launchpad-Export-Date: 2014-08-26 07:46+0000\n"
3748 "X-Generator: Launchpad (build 17163)\n"
3749
3750 #: ../plugins/language//SpellChecking.qml:27
3751@@ -50,7 +50,7 @@
3752
3753 #: ../plugins/language//PageComponent.qml:128
3754 msgid "Auto correction"
3755-msgstr ""
3756+msgstr "Corrección automática"
3757
3758 #: ../plugins/language//PageComponent.qml:138
3759 msgid "Word suggestions"
3760@@ -66,7 +66,7 @@
3761
3762 #: ../plugins/language//PageComponent.qml:168
3763 msgid "Auto punctuation"
3764-msgstr ""
3765+msgstr "Puntuación automática"
3766
3767 #: ../plugins/language//PageComponent.qml:178
3768 msgid ""
3769@@ -80,7 +80,7 @@
3770
3771 #: ../plugins/language//PageComponent.qml:195
3772 msgid "Keyboard vibration"
3773-msgstr ""
3774+msgstr "Vibración de teclado"
3775
3776 #: ../plugins/language//KeyboardLayouts.qml:39
3777 msgid "Current layouts:"
3778@@ -216,13 +216,13 @@
3779 #. reports are to be sent by the system.
3780 #: ../plugins/security-privacy//PageComponent.qml:184
3781 msgid "Sent"
3782-msgstr "Enviado"
3783+msgstr "Enviados"
3784
3785 #. TRANSLATORS: This string is shown when crash
3786 #. reports are not to be sent by the system
3787 #: ../plugins/security-privacy//PageComponent.qml:187
3788 msgid "Not sent"
3789-msgstr "No enviado"
3790+msgstr "No enviados"
3791
3792 #: ../plugins/security-privacy//PhoneLocking.qml:62
3793 #: ../plugins/battery//PageComponent.qml:300
3794@@ -321,24 +321,24 @@
3795
3796 #: ../plugins/security-privacy//AppAccess.qml:42
3797 msgid "Apps that have requested access to your camera"
3798-msgstr ""
3799+msgstr "Aplicaciones que solicitaron acceso a la cámara"
3800
3801 #: ../plugins/security-privacy//AppAccess.qml:46
3802 msgid "Mic"
3803-msgstr ""
3804+msgstr "Micrófono"
3805
3806 #: ../plugins/security-privacy//AppAccess.qml:47
3807 msgid "Apps that have requested access to your mic"
3808-msgstr ""
3809+msgstr "Aplicaciones que solicitaron acceso al micrófono"
3810
3811 #: ../plugins/security-privacy//AppAccess.qml:59
3812 #, qt-format
3813 msgid "%1/%2"
3814-msgstr ""
3815+msgstr "%1/%2"
3816
3817 #: ../plugins/security-privacy//AppAccess.qml:60
3818 msgid "0"
3819-msgstr ""
3820+msgstr "0"
3821
3822 #: ../plugins/security-privacy//LockSecurity.qml:92
3823 msgid "Change passcode"
3824@@ -1079,7 +1079,7 @@
3825 #: ../plugins/battery//PageComponent.qml:290
3826 #: ../plugins/brightness//BrightnessSlider.qml:51
3827 msgid "Display brightness"
3828-msgstr ""
3829+msgstr "Brillo de pantalla"
3830
3831 #. TRANSLATORS: %1 is the number of minutes
3832 #: ../plugins/battery//PageComponent.qml:306
3833@@ -1212,8 +1212,8 @@
3834 "Selected apps can alert you using notification bubbles, sounds, vibrations, "
3835 "and the Notification Center."
3836 msgstr ""
3837-"Aplicaciones seleccionadas pueden avisarle usando burbujas de notificación, "
3838-"sonidos, vibraciones y el Centro de notificaciones."
3839+"Las aplicaciones seleccionadas pueden alertarle mediante notificaciones, "
3840+"sonidos, vibración y el Centro de notificaciones."
3841
3842 #: ../plugins/phone//ServiceInfo.qml:109
3843 #, qt-format
3844@@ -1397,7 +1397,7 @@
3845
3846 #: ../plugins/system-update//Configuration.qml:35
3847 msgid "Download future updates automatically:"
3848-msgstr "Descargar automáticamente actualizaciones futuras:"
3849+msgstr "Descarga automática de actualizaciones:"
3850
3851 #: ../plugins/system-update//Configuration.qml:54
3852 msgid "When on wi-fi"
3853@@ -1423,7 +1423,7 @@
3854
3855 #: ../plugins/brightness//PageComponent.qml:65
3856 msgid "Brightens and dims the display to suit the surroundings."
3857-msgstr ""
3858+msgstr "Aumenta o disminuye el brillo de la pantalla según la luz ambiental."
3859
3860 #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
3861 #: ../plugins/sound//PageComponent.qml:38
3862@@ -1569,11 +1569,11 @@
3863
3864 #: ../wizard/qml/Pages//15-passwd.qml:37
3865 msgid "Set lock security"
3866-msgstr ""
3867+msgstr "Establecer la seguridad de bloqueo"
3868
3869 #: ../wizard/qml/Pages//15-passwd.qml:86
3870 msgid "Swipe"
3871-msgstr ""
3872+msgstr "Deslizar"
3873
3874 #: ../wizard/qml/Pages//15-passwd.qml:136
3875 msgid "Those passcodes don't match."
3876@@ -1895,7 +1895,7 @@
3877
3878 #: ../push-helper/software-updates-helper.py:78
3879 msgid "There's an updated system image."
3880-msgstr ""
3881+msgstr "Hay una actualización de la imagen del sistema disponible."
3882
3883 #: ../push-helper/software-updates-helper.py:79
3884 msgid "Tap to open the system updater."
3885
3886=== modified file 'po/fi.po'
3887--- po/fi.po 2014-08-20 06:22:04 +0000
3888+++ po/fi.po 2014-08-26 11:38:32 +0000
3889@@ -8,14 +8,14 @@
3890 "Project-Id-Version: ubuntu-system-settings\n"
3891 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3892 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
3893-"PO-Revision-Date: 2014-08-18 07:37+0000\n"
3894+"PO-Revision-Date: 2014-08-22 09:53+0000\n"
3895 "Last-Translator: Timo Jyrinki <timo.jyrinki@canonical.com>\n"
3896 "Language-Team: Finnish <fi@li.org>\n"
3897 "MIME-Version: 1.0\n"
3898 "Content-Type: text/plain; charset=UTF-8\n"
3899 "Content-Transfer-Encoding: 8bit\n"
3900 "Plural-Forms: nplurals=2; plural=n != 1;\n"
3901-"X-Launchpad-Export-Date: 2014-08-20 06:19+0000\n"
3902+"X-Launchpad-Export-Date: 2014-08-23 07:15+0000\n"
3903 "X-Generator: Launchpad (build 17163)\n"
3904
3905 #: ../plugins/language//SpellChecking.qml:27
3906@@ -50,7 +50,7 @@
3907
3908 #: ../plugins/language//PageComponent.qml:128
3909 msgid "Auto correction"
3910-msgstr ""
3911+msgstr "Automaattinen korjaus"
3912
3913 #: ../plugins/language//PageComponent.qml:138
3914 msgid "Word suggestions"
3915@@ -66,12 +66,14 @@
3916
3917 #: ../plugins/language//PageComponent.qml:168
3918 msgid "Auto punctuation"
3919-msgstr ""
3920+msgstr "Automaattiset välimerkit"
3921
3922 #: ../plugins/language//PageComponent.qml:178
3923 msgid ""
3924 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
3925 msgstr ""
3926+"Lisää pisteen sekä puuttuvat lainausmerkit ja sulut, kun painat välilyöntiä "
3927+"kahdesti."
3928
3929 #: ../plugins/language//PageComponent.qml:185
3930 #: ../plugins/sound//PageComponent.qml:186
3931@@ -80,7 +82,7 @@
3932
3933 #: ../plugins/language//PageComponent.qml:195
3934 msgid "Keyboard vibration"
3935-msgstr ""
3936+msgstr "Näppäimistön värinä"
3937
3938 #: ../plugins/language//KeyboardLayouts.qml:39
3939 msgid "Current layouts:"
3940@@ -148,14 +150,14 @@
3941 #: ../plugins/security-privacy//PhoneLocking.qml:41
3942 #: ../wizard/qml/Pages//15-passwd.qml:88
3943 msgid "Passcode"
3944-msgstr "Pääsykoodi"
3945+msgstr "Suojakoodi"
3946
3947 #: ../plugins/security-privacy//PageComponent.qml:80
3948 #: ../plugins/security-privacy//PhoneLocking.qml:42
3949 #: ../plugins/security-privacy//LockSecurity.qml:346
3950 #: ../wizard/qml/Pages//15-passwd.qml:90
3951 msgid "Passphrase"
3952-msgstr "Avainlause"
3953+msgstr "Salasana"
3954
3955 #: ../plugins/security-privacy//PageComponent.qml:82
3956 #: ../plugins/security-privacy//PhoneLocking.qml:44
3957@@ -312,7 +314,7 @@
3958
3959 #: ../plugins/security-privacy//AppAccess.qml:35
3960 msgid "Apps that you have granted and have requested access to:"
3961-msgstr ""
3962+msgstr "Sovellukset, jotka ovat pyytäneet ja joille on annettu oikeudet:"
3963
3964 #: ../plugins/security-privacy//AppAccess.qml:41
3965 #: ../plugins/bluetooth//PageComponent.qml:100
3966@@ -321,32 +323,32 @@
3967
3968 #: ../plugins/security-privacy//AppAccess.qml:42
3969 msgid "Apps that have requested access to your camera"
3970-msgstr ""
3971+msgstr "Sovellukset jotka ovat pyytäneet pääsyä kameraan"
3972
3973 #: ../plugins/security-privacy//AppAccess.qml:46
3974 msgid "Mic"
3975-msgstr ""
3976+msgstr "Mikrofoni"
3977
3978 #: ../plugins/security-privacy//AppAccess.qml:47
3979 msgid "Apps that have requested access to your mic"
3980-msgstr ""
3981+msgstr "Sovellukset jotka ovat pyytäneet pääsyä mikrofoniin"
3982
3983 #: ../plugins/security-privacy//AppAccess.qml:59
3984 #, qt-format
3985 msgid "%1/%2"
3986-msgstr ""
3987+msgstr "%1/%2"
3988
3989 #: ../plugins/security-privacy//AppAccess.qml:60
3990 msgid "0"
3991-msgstr ""
3992+msgstr "0"
3993
3994 #: ../plugins/security-privacy//LockSecurity.qml:92
3995 msgid "Change passcode"
3996-msgstr "Vaihda pääsykoodi"
3997+msgstr "Vaihda suojakoodi"
3998
3999 #: ../plugins/security-privacy//LockSecurity.qml:94
4000 msgid "Change passphrase"
4001-msgstr "Vaihda avainlause"
4002+msgstr "Vaihda salasanaa"
4003
4004 #: ../plugins/security-privacy//LockSecurity.qml:101
4005 msgid "Switch to swipe"
4006@@ -354,43 +356,43 @@
4007
4008 #: ../plugins/security-privacy//LockSecurity.qml:103
4009 msgid "Switch to passcode"
4010-msgstr "Vaihda pääsykoodiin"
4011+msgstr "Vaihda suojakoodiin"
4012
4013 #: ../plugins/security-privacy//LockSecurity.qml:105
4014 msgid "Switch to passphrase"
4015-msgstr "Vaihda avainlauseeseen"
4016+msgstr "Vaihda salasanaan"
4017
4018 #: ../plugins/security-privacy//LockSecurity.qml:114
4019 msgid "Existing passcode"
4020-msgstr "Nykyinen pääsykoodi"
4021+msgstr "Nykyinen suojakoodi"
4022
4023 #: ../plugins/security-privacy//LockSecurity.qml:116
4024 msgid "Existing passphrase"
4025-msgstr "Nykyinen avainlause"
4026+msgstr "Nykyinen salasana"
4027
4028 #: ../plugins/security-privacy//LockSecurity.qml:170
4029 msgid "Choose passcode"
4030-msgstr "Valitse pääsykoodi"
4031+msgstr "Valitse suojakoodi"
4032
4033 #: ../plugins/security-privacy//LockSecurity.qml:172
4034 msgid "Choose passphrase"
4035-msgstr "Valitse avainlause"
4036+msgstr "Valitse salasana"
4037
4038 #: ../plugins/security-privacy//LockSecurity.qml:216
4039 msgid "Confirm passcode"
4040-msgstr "Vahvista pääsykoodi"
4041+msgstr "Vahvista suojakoodi"
4042
4043 #: ../plugins/security-privacy//LockSecurity.qml:218
4044 msgid "Confirm passphrase"
4045-msgstr "Vahvista avainlause"
4046+msgstr "Vahvista salasana"
4047
4048 #: ../plugins/security-privacy//LockSecurity.qml:261
4049 msgid "Those passcodes don't match. Try again."
4050-msgstr "Pääsykoodit eivät vastaa toisiaan. Yritä uudelleen."
4051+msgstr "Suojakoodit eivät vastaa toisiaan. Yritä uudelleen."
4052
4053 #: ../plugins/security-privacy//LockSecurity.qml:264
4054 msgid "Those passphrases don't match. Try again."
4055-msgstr "Avainlauseet eivät vastaa toisiaan. Yritä uudelleen."
4056+msgstr "Salasanat eivät vastaa toisiaan. Yritä uudelleen."
4057
4058 #: ../plugins/security-privacy//LockSecurity.qml:295
4059 msgid "Unset"
4060@@ -418,7 +420,7 @@
4061
4062 #: ../plugins/security-privacy//LockSecurity.qml:345
4063 msgid "4-digit passcode"
4064-msgstr "4-numeroinen pääsykoodi"
4065+msgstr "4-numeroinen suojakoodi"
4066
4067 #: ../plugins/security-privacy//LockSecurity.qml:347
4068 msgid "Swipe (no security)… "
4069@@ -426,19 +428,19 @@
4070
4071 #: ../plugins/security-privacy//LockSecurity.qml:348
4072 msgid "4-digit passcode…"
4073-msgstr "Nelinumeroinen pääsykoodi…"
4074+msgstr "Nelinumeroinen suojakoodi…"
4075
4076 #: ../plugins/security-privacy//LockSecurity.qml:349
4077 msgid "Passphrase…"
4078-msgstr "Avainlause…"
4079+msgstr "Salasana…"
4080
4081 #: ../plugins/security-privacy//LockSecurity.qml:380
4082 msgid "Change passcode…"
4083-msgstr "Vaihda pääsykoodi…"
4084+msgstr "Vaihda suojakoodi…"
4085
4086 #: ../plugins/security-privacy//LockSecurity.qml:381
4087 msgid "Change passphrase…"
4088-msgstr "Vaihda avainlause…"
4089+msgstr "Vaihda salasana…"
4090
4091 #: ../plugins/security-privacy//Dash.qml:45
4092 msgid "Return results from:"
4093@@ -841,7 +843,7 @@
4094
4095 #: ../plugins/about//DevMode.qml:98
4096 msgid "You need a passcode or passphrase set to use Developer Mode."
4097-msgstr "Tarvitset kehittäjätilaa varten tunnuskoodin tai salasanan."
4098+msgstr "Tarvitset kehittäjätilaa varten suojakoodin tai salasanan."
4099
4100 #: ../plugins/about//Storage.qml:87
4101 msgid "Used by Ubuntu"
4102@@ -1077,7 +1079,7 @@
4103 #: ../plugins/battery//PageComponent.qml:290
4104 #: ../plugins/brightness//BrightnessSlider.qml:51
4105 msgid "Display brightness"
4106-msgstr ""
4107+msgstr "Näytön kirkkaus"
4108
4109 #. TRANSLATORS: %1 is the number of minutes
4110 #: ../plugins/battery//PageComponent.qml:306
4111@@ -1421,7 +1423,7 @@
4112
4113 #: ../plugins/brightness//PageComponent.qml:65
4114 msgid "Brightens and dims the display to suit the surroundings."
4115-msgstr ""
4116+msgstr "Näytön kirkkauden säätö ympäristöön sopivaksi"
4117
4118 #. TRANSLATORS: This is a keyword or name for the sound plugin which is used while searching
4119 #: ../plugins/sound//PageComponent.qml:38
4120@@ -1567,27 +1569,27 @@
4121
4122 #: ../wizard/qml/Pages//15-passwd.qml:37
4123 msgid "Set lock security"
4124-msgstr ""
4125+msgstr "Aseta lukitustapa"
4126
4127 #: ../wizard/qml/Pages//15-passwd.qml:86
4128 msgid "Swipe"
4129-msgstr ""
4130+msgstr "Pyyhkäisy"
4131
4132 #: ../wizard/qml/Pages//15-passwd.qml:136
4133 msgid "Those passcodes don't match."
4134-msgstr ""
4135+msgstr "Suojakoodit eivät täsmää."
4136
4137 #: ../wizard/qml/Pages//15-passwd.qml:138
4138 msgid "Those passphrases don't match."
4139-msgstr ""
4140+msgstr "Salasanat eivät täsmää."
4141
4142 #: ../wizard/qml/Pages//15-passwd.qml:146
4143 msgid "Passcode must be at least four digits long."
4144-msgstr ""
4145+msgstr "Suojakoodin tulee olla vähintään neljä numeroa."
4146
4147 #: ../wizard/qml/Pages//15-passwd.qml:148
4148 msgid "Passphrase must be at least four characters long."
4149-msgstr ""
4150+msgstr "Salasanan tulee olla vähintään neljä kirjainta."
4151
4152 #: ../wizard/qml/Pages//10-welcome.qml:25
4153 msgid "Hello"
4154@@ -1893,8 +1895,8 @@
4155
4156 #: ../push-helper/software-updates-helper.py:78
4157 msgid "There's an updated system image."
4158-msgstr ""
4159+msgstr "Päivitetty järjestelmäversio saatavilla."
4160
4161 #: ../push-helper/software-updates-helper.py:79
4162 msgid "Tap to open the system updater."
4163-msgstr ""
4164+msgstr "Kosketa avataksesi järjestelmän päivityksen."
4165
4166=== modified file 'po/fr.po'
4167--- po/fr.po 2014-08-22 07:38:19 +0000
4168+++ po/fr.po 2014-08-26 11:38:32 +0000
4169@@ -8,14 +8,15 @@
4170 "Project-Id-Version: ubuntu-system-settings\n"
4171 "Report-Msgid-Bugs-To: \n"
4172 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4173-"PO-Revision-Date: 2014-08-21 19:05+0000\n"
4174-"Last-Translator: Anne <anneonyme017@gmail.com>\n"
4175+"PO-Revision-Date: 2014-08-26 07:42+0000\n"
4176+"Last-Translator: Jean-Baptiste Lallement <jean-"
4177+"baptiste.lallement@ubuntu.com>\n"
4178 "Language-Team: LANGUAGE <LL@li.org>\n"
4179 "MIME-Version: 1.0\n"
4180 "Content-Type: text/plain; charset=UTF-8\n"
4181 "Content-Transfer-Encoding: 8bit\n"
4182 "Plural-Forms: nplurals=2; plural=n > 1;\n"
4183-"X-Launchpad-Export-Date: 2014-08-22 07:38+0000\n"
4184+"X-Launchpad-Export-Date: 2014-08-26 07:45+0000\n"
4185 "X-Generator: Launchpad (build 17163)\n"
4186 "Language: \n"
4187
4188@@ -75,6 +76,8 @@
4189 msgid ""
4190 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
4191 msgstr ""
4192+"Ajoute un point, ainsi que les parenthèses ou les guillemets manquants, "
4193+"lorsque vous appuyez deux fois sur Espace."
4194
4195 #: ../plugins/language//PageComponent.qml:185
4196 #: ../plugins/sound//PageComponent.qml:186
4197@@ -366,7 +369,7 @@
4198
4199 #: ../plugins/security-privacy//LockSecurity.qml:105
4200 msgid "Switch to passphrase"
4201-msgstr "Passer en verrouillage par phrase secrète"
4202+msgstr "Verrouiller par phrase secrète"
4203
4204 #: ../plugins/security-privacy//LockSecurity.qml:114
4205 msgid "Existing passcode"
4206@@ -1587,7 +1590,7 @@
4207
4208 #: ../wizard/qml/Pages//15-passwd.qml:86
4209 msgid "Swipe"
4210-msgstr ""
4211+msgstr "Glissement"
4212
4213 #: ../wizard/qml/Pages//15-passwd.qml:136
4214 msgid "Those passcodes don't match."
4215
4216=== modified file 'po/gl.po'
4217--- po/gl.po 2014-08-22 07:38:19 +0000
4218+++ po/gl.po 2014-08-26 11:38:32 +0000
4219@@ -8,14 +8,14 @@
4220 "Project-Id-Version: ubuntu-system-settings\n"
4221 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4222 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4223-"PO-Revision-Date: 2014-08-21 14:17+0000\n"
4224+"PO-Revision-Date: 2014-08-23 20:46+0000\n"
4225 "Last-Translator: Marcos Lans <Unknown>\n"
4226 "Language-Team: Galician <gl@li.org>\n"
4227 "MIME-Version: 1.0\n"
4228 "Content-Type: text/plain; charset=UTF-8\n"
4229 "Content-Transfer-Encoding: 8bit\n"
4230 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4231-"X-Launchpad-Export-Date: 2014-08-22 07:38+0000\n"
4232+"X-Launchpad-Export-Date: 2014-08-24 06:45+0000\n"
4233 "X-Generator: Launchpad (build 17163)\n"
4234 "Language: Galician\n"
4235
4236@@ -132,7 +132,7 @@
4237 #: ../plugins/security-privacy//PageComponent.qml:151
4238 #: ../plugins/security-privacy//Dash.qml:46
4239 msgid "Phone only"
4240-msgstr "Existente no teléfono"
4241+msgstr "Só do teléfono"
4242
4243 #: ../plugins/security-privacy//PageComponent.qml:71
4244 msgid "Security:"
4245@@ -846,8 +846,8 @@
4246 #: ../plugins/about//DevMode.qml:98
4247 msgid "You need a passcode or passphrase set to use Developer Mode."
4248 msgstr ""
4249-"Precisa estabelecer unha clave ou frase secreta para usar o Modo "
4250-"Desenvolvedor"
4251+"Precisa estabelecer unha clave ou unha frase secreta para usar o Modo "
4252+"Desenvolvedor."
4253
4254 #: ../plugins/about//Storage.qml:87
4255 msgid "Used by Ubuntu"
4256@@ -1586,7 +1586,7 @@
4257
4258 #: ../wizard/qml/Pages//15-passwd.qml:138
4259 msgid "Those passphrases don't match."
4260-msgstr "As frases de paso non coinciden."
4261+msgstr "As frases secretas non coinciden."
4262
4263 #: ../wizard/qml/Pages//15-passwd.qml:146
4264 msgid "Passcode must be at least four digits long."
4265@@ -1594,7 +1594,7 @@
4266
4267 #: ../wizard/qml/Pages//15-passwd.qml:148
4268 msgid "Passphrase must be at least four characters long."
4269-msgstr "A frase de paso debe ter 4 caracteres como mínimo."
4270+msgstr "A frase secreta debe ter 4 caracteres como mínimo."
4271
4272 #: ../wizard/qml/Pages//10-welcome.qml:25
4273 msgid "Hello"
4274
4275=== modified file 'po/he.po'
4276--- po/he.po 2014-08-20 06:22:04 +0000
4277+++ po/he.po 2014-08-26 11:38:32 +0000
4278@@ -8,14 +8,14 @@
4279 "Project-Id-Version: ubuntu-system-settings\n"
4280 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4281 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4282-"PO-Revision-Date: 2014-07-30 13:16+0000\n"
4283+"PO-Revision-Date: 2014-08-25 11:33+0000\n"
4284 "Last-Translator: Yaron <sh.yaron@gmail.com>\n"
4285 "Language-Team: Hebrew <he@li.org>\n"
4286 "MIME-Version: 1.0\n"
4287 "Content-Type: text/plain; charset=UTF-8\n"
4288 "Content-Transfer-Encoding: 8bit\n"
4289 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4290-"X-Launchpad-Export-Date: 2014-08-20 06:19+0000\n"
4291+"X-Launchpad-Export-Date: 2014-08-26 07:46+0000\n"
4292 "X-Generator: Launchpad (build 17163)\n"
4293
4294 #: ../plugins/language//SpellChecking.qml:27
4295@@ -50,7 +50,7 @@
4296
4297 #: ../plugins/language//PageComponent.qml:128
4298 msgid "Auto correction"
4299-msgstr ""
4300+msgstr "תיקון אוטומטי"
4301
4302 #: ../plugins/language//PageComponent.qml:138
4303 msgid "Word suggestions"
4304@@ -66,12 +66,12 @@
4305
4306 #: ../plugins/language//PageComponent.qml:168
4307 msgid "Auto punctuation"
4308-msgstr ""
4309+msgstr "פיסוק אוטומטי"
4310
4311 #: ../plugins/language//PageComponent.qml:178
4312 msgid ""
4313 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
4314-msgstr ""
4315+msgstr "הוספת נקודה וכל מרכאות או סוגריים חסרים בעת נגיעה כפולה ברווח."
4316
4317 #: ../plugins/language//PageComponent.qml:185
4318 #: ../plugins/sound//PageComponent.qml:186
4319@@ -80,7 +80,7 @@
4320
4321 #: ../plugins/language//PageComponent.qml:195
4322 msgid "Keyboard vibration"
4323-msgstr ""
4324+msgstr "רטט מקלדת"
4325
4326 #: ../plugins/language//KeyboardLayouts.qml:39
4327 msgid "Current layouts:"
4328@@ -310,7 +310,7 @@
4329
4330 #: ../plugins/security-privacy//AppAccess.qml:35
4331 msgid "Apps that you have granted and have requested access to:"
4332-msgstr ""
4333+msgstr "יישומים שאישרת וביקשו לגשת אל:"
4334
4335 #: ../plugins/security-privacy//AppAccess.qml:41
4336 #: ../plugins/bluetooth//PageComponent.qml:100
4337@@ -319,24 +319,24 @@
4338
4339 #: ../plugins/security-privacy//AppAccess.qml:42
4340 msgid "Apps that have requested access to your camera"
4341-msgstr ""
4342+msgstr "יישומים שביקשו לגשת למצלמה שלך"
4343
4344 #: ../plugins/security-privacy//AppAccess.qml:46
4345 msgid "Mic"
4346-msgstr ""
4347+msgstr "מיקרופון"
4348
4349 #: ../plugins/security-privacy//AppAccess.qml:47
4350 msgid "Apps that have requested access to your mic"
4351-msgstr ""
4352+msgstr "יישומים שביקשו לגשת למצלמה שלך"
4353
4354 #: ../plugins/security-privacy//AppAccess.qml:59
4355 #, qt-format
4356 msgid "%1/%2"
4357-msgstr ""
4358+msgstr "%1/%2"
4359
4360 #: ../plugins/security-privacy//AppAccess.qml:60
4361 msgid "0"
4362-msgstr ""
4363+msgstr "0"
4364
4365 #: ../plugins/security-privacy//LockSecurity.qml:92
4366 msgid "Change passcode"
4367@@ -550,19 +550,19 @@
4368
4369 #: ../plugins/bluetooth//PageComponent.qml:78
4370 msgid "Connecting…"
4371-msgstr ""
4372+msgstr "בהתחברות…"
4373
4374 #: ../plugins/bluetooth//PageComponent.qml:79
4375 msgid "Disconnecting…"
4376-msgstr ""
4377+msgstr "מתבצע ניתוק…"
4378
4379 #: ../plugins/bluetooth//PageComponent.qml:80
4380 msgid "Disconnected"
4381-msgstr ""
4382+msgstr "מנותק"
4383
4384 #: ../plugins/bluetooth//PageComponent.qml:81
4385 msgid "Unknown"
4386-msgstr ""
4387+msgstr "לא ידוע"
4388
4389 #: ../plugins/bluetooth//PageComponent.qml:87
4390 msgid "Computer"
4391@@ -665,7 +665,7 @@
4392
4393 #: ../plugins/bluetooth//PageComponent.qml:236
4394 msgid "Connect a device:"
4395-msgstr ""
4396+msgstr "חיבור התקן:"
4397
4398 #: ../plugins/bluetooth//PageComponent.qml:266
4399 msgid "None detected"
4400@@ -674,7 +674,7 @@
4401 #: ../plugins/bluetooth//PageComponent.qml:274
4402 #: ../plugins/bluetooth//PageComponent.qml:360
4403 msgid "Connect automatically when detected:"
4404-msgstr ""
4405+msgstr "חיבור אוטומטי בעת הזיהוי:"
4406
4407 #: ../plugins/bluetooth//PageComponent.qml:309
4408 #: ../plugins/wifi//NetworkDetails.qml:43
4409@@ -687,7 +687,7 @@
4410
4411 #: ../plugins/bluetooth//PageComponent.qml:351
4412 msgid "Status"
4413-msgstr ""
4414+msgstr "מצב"
4415
4416 #: ../plugins/bluetooth//PageComponent.qml:355
4417 msgid "Signal Strength"
4418@@ -704,7 +704,7 @@
4419
4420 #: ../plugins/bluetooth//PageComponent.qml:392
4421 msgid "Forget this device"
4422-msgstr ""
4423+msgstr "התעלמות מהתקן זה"
4424
4425 #: ../plugins/bluetooth//ProvidePinCodeDialog.qml:28
4426 #: ../plugins/bluetooth//ConfirmPasskeyDialog.qml:28
4427@@ -977,7 +977,7 @@
4428
4429 #: ../plugins/reset//ResetLauncherHome.qml:59
4430 msgid "The phone needs to restart for changes to take effect."
4431-msgstr ""
4432+msgstr "על הטלפון להפעיל עצמו מחדש כדי שהשינויים יכנסו לתוקף."
4433
4434 #: ../plugins/reset//EraseEverything.qml:41
4435 msgid ""
4436@@ -987,7 +987,7 @@
4437
4438 #: ../plugins/reset//EraseEverything.qml:44
4439 msgid "Erase & Reset Everything"
4440-msgstr ""
4441+msgstr "מחיקה ואיפוס של הכול"
4442
4443 #. TRANSLATORS: This is a keyword or name for the battery plugin which is used while searching
4444 #: ../plugins/battery//PageComponent.qml:34
4445@@ -1066,7 +1066,7 @@
4446 #: ../plugins/battery//PageComponent.qml:290
4447 #: ../plugins/brightness//BrightnessSlider.qml:51
4448 msgid "Display brightness"
4449-msgstr ""
4450+msgstr "בהירות התצוגה"
4451
4452 #. TRANSLATORS: %1 is the number of minutes
4453 #: ../plugins/battery//PageComponent.qml:306
4454@@ -1192,7 +1192,7 @@
4455 #: ../plugins/notifications//PageComponent.qml:29
4456 #: /home/elopio/workspace/canonical/ubuntu-system-settings/bugs/fix1357605-translations/builddir/po/settings.js:96
4457 msgid "Notifications"
4458-msgstr ""
4459+msgstr "התרעות"
4460
4461 #: ../plugins/notifications//PageComponent.qml:40
4462 msgid ""
4463@@ -1549,11 +1549,11 @@
4464
4465 #: ../wizard/qml/Pages//15-passwd.qml:37
4466 msgid "Set lock security"
4467-msgstr ""
4468+msgstr "הגדרת הגנת נעילה"
4469
4470 #: ../wizard/qml/Pages//15-passwd.qml:86
4471 msgid "Swipe"
4472-msgstr ""
4473+msgstr "החלקה"
4474
4475 #: ../wizard/qml/Pages//15-passwd.qml:136
4476 msgid "Those passcodes don't match."
4477@@ -1781,7 +1781,7 @@
4478 #. TRANSLATORS: This is a keyword or name for the notifications plugin which is used while searching
4479 #: /home/elopio/workspace/canonical/ubuntu-system-settings/bugs/fix1357605-translations/builddir/po/settings.js:100
4480 msgid "notifications"
4481-msgstr ""
4482+msgstr "התרעות"
4483
4484 #. TRANSLATORS: This is a keyword or name for the phone plugin which is used while searching
4485 #: /home/elopio/workspace/canonical/ubuntu-system-settings/bugs/fix1357605-translations/builddir/po/settings.js:106
4486@@ -1875,7 +1875,7 @@
4487
4488 #: ../push-helper/software-updates-helper.py:78
4489 msgid "There's an updated system image."
4490-msgstr ""
4491+msgstr "קיימת תמונת מערכת עדכנית יותר."
4492
4493 #: ../push-helper/software-updates-helper.py:79
4494 msgid "Tap to open the system updater."
4495
4496=== modified file 'po/hu.po'
4497--- po/hu.po 2014-08-22 07:38:19 +0000
4498+++ po/hu.po 2014-08-26 11:38:32 +0000
4499@@ -8,14 +8,14 @@
4500 "Project-Id-Version: ubuntu-system-settings\n"
4501 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4502 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4503-"PO-Revision-Date: 2014-08-21 19:21+0000\n"
4504+"PO-Revision-Date: 2014-08-25 08:27+0000\n"
4505 "Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
4506 "Language-Team: Hungarian <hu@li.org>\n"
4507 "MIME-Version: 1.0\n"
4508 "Content-Type: text/plain; charset=UTF-8\n"
4509 "Content-Transfer-Encoding: 8bit\n"
4510 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4511-"X-Launchpad-Export-Date: 2014-08-22 07:38+0000\n"
4512+"X-Launchpad-Export-Date: 2014-08-26 07:46+0000\n"
4513 "X-Generator: Launchpad (build 17163)\n"
4514
4515 #: ../plugins/language//SpellChecking.qml:27
4516@@ -41,7 +41,7 @@
4517
4518 #: ../plugins/language//PageComponent.qml:79
4519 msgid "Display language…"
4520-msgstr "Megjelenítési nyelv…"
4521+msgstr "Megjelenítés nyelve"
4522
4523 #: ../plugins/language//PageComponent.qml:93
4524 #: ../plugins/language//KeyboardLayouts.qml:26
4525@@ -72,7 +72,7 @@
4526 msgid ""
4527 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
4528 msgstr ""
4529-"Új mondatot kezd és hozzáad minden hiányzó idézőjelet vagy zárójelet ha "
4530+"Új mondatot kezd és hozzáad minden hiányzó idézőjelet vagy zárójelet, ha "
4531 "megérinti kétszer a Szóközt."
4532
4533 #: ../plugins/language//PageComponent.qml:185
4534@@ -208,7 +208,7 @@
4535 #: ../plugins/security-privacy//PageComponent.qml:174
4536 #: ../plugins/security-privacy//AppAccess.qml:28
4537 msgid "Other app access"
4538-msgstr "Egyéb alkalmazás hozzáférés"
4539+msgstr "Egyéb alkalmazás hozzáférések"
4540
4541 #: ../plugins/security-privacy//PageComponent.qml:179
4542 msgid "Diagnostics"
4543@@ -408,7 +408,7 @@
4544 #: ../plugins/background//Preview.qml:104
4545 #: ../plugins/phone//CallForwarding.qml:148
4546 msgid "Set"
4547-msgstr "Beállít"
4548+msgstr "Beállítás"
4549
4550 #: ../plugins/security-privacy//LockSecurity.qml:340
4551 msgid "Unlock the phone using:"
4552@@ -424,23 +424,23 @@
4553
4554 #: ../plugins/security-privacy//LockSecurity.qml:347
4555 msgid "Swipe (no security)… "
4556-msgstr "Csúsztatás (nincs zárolás)… "
4557+msgstr "Csúsztatás (nincs zárolás) "
4558
4559 #: ../plugins/security-privacy//LockSecurity.qml:348
4560 msgid "4-digit passcode…"
4561-msgstr "4 jegyű jelkód…"
4562+msgstr "4 jegyű jelkód"
4563
4564 #: ../plugins/security-privacy//LockSecurity.qml:349
4565 msgid "Passphrase…"
4566-msgstr "Jelmondat…"
4567+msgstr "Jelmondat"
4568
4569 #: ../plugins/security-privacy//LockSecurity.qml:380
4570 msgid "Change passcode…"
4571-msgstr "Jelkód módosítása…"
4572+msgstr "Jelkód módosítása"
4573
4574 #: ../plugins/security-privacy//LockSecurity.qml:381
4575 msgid "Change passphrase…"
4576-msgstr "Jelmondat módosítása…"
4577+msgstr "Jelmondat módosítása"
4578
4579 #: ../plugins/security-privacy//Dash.qml:45
4580 msgid "Return results from:"
4581@@ -535,7 +535,7 @@
4582
4583 #: ../plugins/cellular//Hotspot.qml:65
4584 msgid "Set up hotspot"
4585-msgstr "Hotspot felállítása"
4586+msgstr "Hotspot beállítása"
4587
4588 #: ../plugins/cellular//HotspotSetup.qml:29
4589 msgid "Change hotspot setup"
4590@@ -846,7 +846,8 @@
4591 #: ../plugins/about//DevMode.qml:98
4592 msgid "You need a passcode or passphrase set to use Developer Mode."
4593 msgstr ""
4594-"A Fejlesztői mód használatához egy jelkódra vagy jelmondatra van szüksége."
4595+"A Fejlesztői mód használatához be kell állítani egy jelkódot vagy "
4596+"jelmondatot."
4597
4598 #: ../plugins/about//Storage.qml:87
4599 msgid "Used by Ubuntu"
4600@@ -979,11 +980,11 @@
4601
4602 #: ../plugins/reset//PageComponent.qml:87
4603 msgid "Reset all system settings…"
4604-msgstr "Minden rendszerbeállítás visszaállítása…"
4605+msgstr "Minden rendszerbeállítás visszaállítása"
4606
4607 #: ../plugins/reset//PageComponent.qml:101
4608 msgid "Erase & Reset Everything…"
4609-msgstr "Minden visszaállítása és törlése…"
4610+msgstr "Minden visszaállítása és törlése"
4611
4612 #: ../plugins/reset//ResetLauncherHome.qml:40
4613 msgid "The Launcher will be returned to its original contents."
4614@@ -1115,11 +1116,11 @@
4615
4616 #: ../plugins/battery//SleepValues.qml:74
4617 msgid "Lock the phone when it's not in use:"
4618-msgstr "Telefon zárolása, ha nem aktív:"
4619+msgstr "Telefon zárolása, ha nincs használatban:"
4620
4621 #: ../plugins/battery//SleepValues.qml:74
4622 msgid "Put the phone to sleep when it is not in use:"
4623-msgstr "Altassa el a telefont ha nem aktív:"
4624+msgstr "Telefon altatása, ha nincs használatban:"
4625
4626 #: ../plugins/battery//SleepValues.qml:107
4627 msgid ""
4628@@ -1140,7 +1141,7 @@
4629
4630 #: ../plugins/wifi//PageComponent.qml:120 ../plugins/wifi//OtherNetwork.qml:27
4631 msgid "Other network"
4632-msgstr "Más hálózat"
4633+msgstr "Egyéb hálózat"
4634
4635 #: ../plugins/wifi//NetworkDetails.qml:36
4636 msgid "Network details"
4637@@ -1515,7 +1516,7 @@
4638
4639 #: ../wizard/qml/Pages//no-sim.qml:57
4640 msgid "To use the telephone and SMS features a SIM must be installed."
4641-msgstr "A telefonáláshoz vagy az SMS funkciókhoz szükséges egy SIM kártya."
4642+msgstr "A telefonáláshoz és az SMS funkciókhoz szükséges egy SIM kártya."
4643
4644 #: ../wizard/qml/Pages//no-sim.qml:59
4645 msgid "Install a SIM before continuing."
4646@@ -1534,7 +1535,7 @@
4647 "Your phone is set up to automatically report errors to Canonical. This can "
4648 "be disabled in system settings."
4649 msgstr ""
4650-"A telefonja automatikusan hibajelentéseket küld a Canonical-nak. Ezt a "
4651+"A telefonja automatikusan hibajelentéseket küld a Canonical felé. Ezt a "
4652 "rendszerbeállításokban kikapcsolhatja."
4653
4654 #: ../wizard/qml/Pages//30-location.qml:41
4655
4656=== modified file 'po/pt.po'
4657--- po/pt.po 2014-08-20 06:22:04 +0000
4658+++ po/pt.po 2014-08-26 11:38:32 +0000
4659@@ -8,14 +8,14 @@
4660 "Project-Id-Version: ubuntu-system-settings\n"
4661 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4662 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4663-"PO-Revision-Date: 2014-08-13 00:03+0000\n"
4664+"PO-Revision-Date: 2014-08-25 16:45+0000\n"
4665 "Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
4666 "Language-Team: Portuguese <pt@li.org>\n"
4667 "MIME-Version: 1.0\n"
4668 "Content-Type: text/plain; charset=UTF-8\n"
4669 "Content-Transfer-Encoding: 8bit\n"
4670 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4671-"X-Launchpad-Export-Date: 2014-08-20 06:20+0000\n"
4672+"X-Launchpad-Export-Date: 2014-08-26 07:46+0000\n"
4673 "X-Generator: Launchpad (build 17163)\n"
4674
4675 #: ../plugins/language//SpellChecking.qml:27
4676@@ -50,7 +50,7 @@
4677
4678 #: ../plugins/language//PageComponent.qml:128
4679 msgid "Auto correction"
4680-msgstr ""
4681+msgstr "Correção automática"
4682
4683 #: ../plugins/language//PageComponent.qml:138
4684 msgid "Word suggestions"
4685@@ -66,7 +66,7 @@
4686
4687 #: ../plugins/language//PageComponent.qml:168
4688 msgid "Auto punctuation"
4689-msgstr ""
4690+msgstr "Pontuação automática"
4691
4692 #: ../plugins/language//PageComponent.qml:178
4693 msgid ""
4694@@ -80,7 +80,7 @@
4695
4696 #: ../plugins/language//PageComponent.qml:195
4697 msgid "Keyboard vibration"
4698-msgstr ""
4699+msgstr "Vibração do teclado"
4700
4701 #: ../plugins/language//KeyboardLayouts.qml:39
4702 msgid "Current layouts:"
4703@@ -311,7 +311,7 @@
4704
4705 #: ../plugins/security-privacy//AppAccess.qml:35
4706 msgid "Apps that you have granted and have requested access to:"
4707-msgstr ""
4708+msgstr "Aplicações que garantiu acesso a:"
4709
4710 #: ../plugins/security-privacy//AppAccess.qml:41
4711 #: ../plugins/bluetooth//PageComponent.qml:100
4712@@ -320,24 +320,24 @@
4713
4714 #: ../plugins/security-privacy//AppAccess.qml:42
4715 msgid "Apps that have requested access to your camera"
4716-msgstr ""
4717+msgstr "Aplicações que requesitaram acesso à câmara"
4718
4719 #: ../plugins/security-privacy//AppAccess.qml:46
4720 msgid "Mic"
4721-msgstr ""
4722+msgstr "Mic"
4723
4724 #: ../plugins/security-privacy//AppAccess.qml:47
4725 msgid "Apps that have requested access to your mic"
4726-msgstr ""
4727+msgstr "Aplicações que requesitaram acesso ao mic"
4728
4729 #: ../plugins/security-privacy//AppAccess.qml:59
4730 #, qt-format
4731 msgid "%1/%2"
4732-msgstr ""
4733+msgstr "%1/%2"
4734
4735 #: ../plugins/security-privacy//AppAccess.qml:60
4736 msgid "0"
4737-msgstr ""
4738+msgstr "0"
4739
4740 #: ../plugins/security-privacy//LockSecurity.qml:92
4741 msgid "Change passcode"
4742@@ -1079,7 +1079,7 @@
4743 #: ../plugins/battery//PageComponent.qml:290
4744 #: ../plugins/brightness//BrightnessSlider.qml:51
4745 msgid "Display brightness"
4746-msgstr ""
4747+msgstr "Brilho do ecrã"
4748
4749 #. TRANSLATORS: %1 is the number of minutes
4750 #: ../plugins/battery//PageComponent.qml:306
4751@@ -1575,7 +1575,7 @@
4752
4753 #: ../wizard/qml/Pages//15-passwd.qml:86
4754 msgid "Swipe"
4755-msgstr ""
4756+msgstr "Deslize"
4757
4758 #: ../wizard/qml/Pages//15-passwd.qml:136
4759 msgid "Those passcodes don't match."
4760@@ -1587,7 +1587,7 @@
4761
4762 #: ../wizard/qml/Pages//15-passwd.qml:146
4763 msgid "Passcode must be at least four digits long."
4764-msgstr ""
4765+msgstr "A senha deve ter no mínimo 4 dígitos."
4766
4767 #: ../wizard/qml/Pages//15-passwd.qml:148
4768 msgid "Passphrase must be at least four characters long."
4769@@ -1897,8 +1897,8 @@
4770
4771 #: ../push-helper/software-updates-helper.py:78
4772 msgid "There's an updated system image."
4773-msgstr ""
4774+msgstr "Há uma nova imagem de sistema."
4775
4776 #: ../push-helper/software-updates-helper.py:79
4777 msgid "Tap to open the system updater."
4778-msgstr ""
4779+msgstr "Carregue para abrir o atualizador de sistema."
4780
4781=== modified file 'po/ro.po'
4782--- po/ro.po 2014-08-20 06:22:04 +0000
4783+++ po/ro.po 2014-08-26 11:38:32 +0000
4784@@ -8,15 +8,15 @@
4785 "Project-Id-Version: ubuntu-system-settings\n"
4786 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4787 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4788-"PO-Revision-Date: 2014-08-12 14:39+0000\n"
4789-"Last-Translator: Marian Vasile <marianvasile1972@gmail.com>\n"
4790+"PO-Revision-Date: 2014-08-24 16:50+0000\n"
4791+"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
4792 "Language-Team: Romanian <ro@li.org>\n"
4793 "MIME-Version: 1.0\n"
4794 "Content-Type: text/plain; charset=UTF-8\n"
4795 "Content-Transfer-Encoding: 8bit\n"
4796 "Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
4797 "== 0) && (n != 0))) ? 2: 1));\n"
4798-"X-Launchpad-Export-Date: 2014-08-20 06:20+0000\n"
4799+"X-Launchpad-Export-Date: 2014-08-25 08:05+0000\n"
4800 "X-Generator: Launchpad (build 17163)\n"
4801
4802 #: ../plugins/language//SpellChecking.qml:27
4803@@ -51,7 +51,7 @@
4804
4805 #: ../plugins/language//PageComponent.qml:128
4806 msgid "Auto correction"
4807-msgstr ""
4808+msgstr "Corecție automată"
4809
4810 #: ../plugins/language//PageComponent.qml:138
4811 msgid "Word suggestions"
4812@@ -68,12 +68,14 @@
4813
4814 #: ../plugins/language//PageComponent.qml:168
4815 msgid "Auto punctuation"
4816-msgstr ""
4817+msgstr "Punctuație automată"
4818
4819 #: ../plugins/language//PageComponent.qml:178
4820 msgid ""
4821 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
4822 msgstr ""
4823+"Adăugați o perioadă, și orice citate lipsă sau paranteze, atunci când "
4824+"atingeți Spațiu de două ori."
4825
4826 #: ../plugins/language//PageComponent.qml:185
4827 #: ../plugins/sound//PageComponent.qml:186
4828@@ -82,7 +84,7 @@
4829
4830 #: ../plugins/language//PageComponent.qml:195
4831 msgid "Keyboard vibration"
4832-msgstr ""
4833+msgstr "Vibrație tastatură"
4834
4835 #: ../plugins/language//KeyboardLayouts.qml:39
4836 msgid "Current layouts:"
4837@@ -326,24 +328,24 @@
4838
4839 #: ../plugins/security-privacy//AppAccess.qml:42
4840 msgid "Apps that have requested access to your camera"
4841-msgstr ""
4842+msgstr "Aplicații care au solicitat accesul la camera dumneavostră"
4843
4844 #: ../plugins/security-privacy//AppAccess.qml:46
4845 msgid "Mic"
4846-msgstr ""
4847+msgstr "Microfon"
4848
4849 #: ../plugins/security-privacy//AppAccess.qml:47
4850 msgid "Apps that have requested access to your mic"
4851-msgstr ""
4852+msgstr "Aplicații care au solicitat accesul la microfonul dumneavoastră"
4853
4854 #: ../plugins/security-privacy//AppAccess.qml:59
4855 #, qt-format
4856 msgid "%1/%2"
4857-msgstr ""
4858+msgstr "%1/%2"
4859
4860 #: ../plugins/security-privacy//AppAccess.qml:60
4861 msgid "0"
4862-msgstr ""
4863+msgstr "0"
4864
4865 #: ../plugins/security-privacy//LockSecurity.qml:92
4866 msgid "Change passcode"
4867@@ -1090,7 +1092,7 @@
4868 #: ../plugins/battery//PageComponent.qml:290
4869 #: ../plugins/brightness//BrightnessSlider.qml:51
4870 msgid "Display brightness"
4871-msgstr ""
4872+msgstr "Luminozitate afișaj"
4873
4874 #. TRANSLATORS: %1 is the number of minutes
4875 #: ../plugins/battery//PageComponent.qml:306
4876@@ -1594,11 +1596,11 @@
4877
4878 #: ../wizard/qml/Pages//15-passwd.qml:136
4879 msgid "Those passcodes don't match."
4880-msgstr ""
4881+msgstr "Aceste coduri de acces nu se potrivesc."
4882
4883 #: ../wizard/qml/Pages//15-passwd.qml:138
4884 msgid "Those passphrases don't match."
4885-msgstr ""
4886+msgstr "Aceste fraze secrete nu se potrivesc."
4887
4888 #: ../wizard/qml/Pages//15-passwd.qml:146
4889 msgid "Passcode must be at least four digits long."
4890@@ -1912,8 +1914,8 @@
4891
4892 #: ../push-helper/software-updates-helper.py:78
4893 msgid "There's an updated system image."
4894-msgstr ""
4895+msgstr "Există o imagine de sistem actualizată."
4896
4897 #: ../push-helper/software-updates-helper.py:79
4898 msgid "Tap to open the system updater."
4899-msgstr ""
4900+msgstr "Atingeți pentru a deschide programul de actualizare a sistemului."
4901
4902=== modified file 'po/ru.po'
4903--- po/ru.po 2014-08-20 06:22:04 +0000
4904+++ po/ru.po 2014-08-26 11:38:32 +0000
4905@@ -8,15 +8,15 @@
4906 "Project-Id-Version: ubuntu-system-settings\n"
4907 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4908 "POT-Creation-Date: 2014-08-15 19:11-0600\n"
4909-"PO-Revision-Date: 2014-08-12 11:23+0000\n"
4910-"Last-Translator: Ilya Barilo <mail@sourcelocalizer.ru>\n"
4911+"PO-Revision-Date: 2014-08-26 07:16+0000\n"
4912+"Last-Translator: Jay ZDLin <Unknown>\n"
4913 "Language-Team: Russian <ru@li.org>\n"
4914 "MIME-Version: 1.0\n"
4915 "Content-Type: text/plain; charset=UTF-8\n"
4916 "Content-Transfer-Encoding: 8bit\n"
4917 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
4918 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
4919-"X-Launchpad-Export-Date: 2014-08-20 06:21+0000\n"
4920+"X-Launchpad-Export-Date: 2014-08-26 07:46+0000\n"
4921 "X-Generator: Launchpad (build 17163)\n"
4922
4923 #: ../plugins/language//SpellChecking.qml:27
4924@@ -51,7 +51,7 @@
4925
4926 #: ../plugins/language//PageComponent.qml:128
4927 msgid "Auto correction"
4928-msgstr ""
4929+msgstr "Автоисправление"
4930
4931 #: ../plugins/language//PageComponent.qml:138
4932 msgid "Word suggestions"
4933@@ -68,12 +68,14 @@
4934
4935 #: ../plugins/language//PageComponent.qml:168
4936 msgid "Auto punctuation"
4937-msgstr ""
4938+msgstr "Пунктуация (автоматически)"
4939
4940 #: ../plugins/language//PageComponent.qml:178
4941 msgid ""
4942 "Adds a period, and any missing quotes or brackets, when you tap Space twice."
4943 msgstr ""
4944+"Добавление точек и отсутствующих кавычек или скобок при двойном нажатии "
4945+"пробела."
4946
4947 #: ../plugins/language//PageComponent.qml:185
4948 #: ../plugins/sound//PageComponent.qml:186
4949@@ -82,7 +84,7 @@
4950
4951 #: ../plugins/language//PageComponent.qml:195
4952 msgid "Keyboard vibration"
4953-msgstr ""
4954+msgstr "Вибрация клавиатуры"
4955
4956 #: ../plugins/language//KeyboardLayouts.qml:39
4957 msgid "Current layouts:"
4958@@ -325,24 +327,24 @@
4959
4960 #: ../plugins/security-privacy//AppAccess.qml:42
4961 msgid "Apps that have requested access to your camera"
4962-msgstr ""
4963+msgstr "Приложения, запросившие доступ к камере"
4964
4965 #: ../plugins/security-privacy//AppAccess.qml:46
4966 msgid "Mic"
4967-msgstr ""
4968+msgstr "Микрофон"
4969
4970 #: ../plugins/security-privacy//AppAccess.qml:47
4971 msgid "Apps that have requested access to your mic"
4972-msgstr ""
4973+msgstr "Приложения, запросившие доступ к микрофону"
4974
4975 #: ../plugins/security-privacy//AppAccess.qml:59
4976 #, qt-format
4977 msgid "%1/%2"
4978-msgstr ""
4979+msgstr "%1/%2"
4980
4981 #: ../plugins/security-privacy//AppAccess.qml:60
4982 msgid "0"
4983-msgstr ""
4984+msgstr "0"
4985
4986 #: ../plugins/security-privacy//LockSecurity.qml:92
4987 msgid "Change passcode"
4988@@ -1083,7 +1085,7 @@
4989 #: ../plugins/battery//PageComponent.qml:290
4990 #: ../plugins/brightness//BrightnessSlider.qml:51
4991 msgid "Display brightness"
4992-msgstr ""
4993+msgstr "Яркость экрана"
4994
4995 #. TRANSLATORS: %1 is the number of minutes
4996 #: ../plugins/battery//PageComponent.qml:306
4997@@ -1429,7 +1431,7 @@
4998
4999 #: ../plugins/brightness//PageComponent.qml:65
5000 msgid "Brightens and dims the display to suit the surroundings."
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches