on xenial help sign in
Merge trunk
commit221e0d28e06bf7af73c49ae63bddca1717db98ad authorMichał Sawicz <michal.sawicz@canonical.com> dateMon 8 Sep 2014, 11:27 (12 years ago) parent51d9b1b459fcbf
68 files changed+2745−1768
debian/changelog+7 debian/control+1−1 plugins/AccountsService/AccountsService.qmltypes+1 plugins/LightDM/LightDM.qmltypes+2 plugins/Ubuntu/SystemImage/SystemImage.qmltypes+2 plugins/Unity/Indicators/Indicators.qmltypes+6−4 po/am.po+51−49 po/ast.po+62−55 po/az.po+56−64 po/ca.po+39−45 po/de.po+38−44 po/en_AU.po+37−43 po/es.po+39−45 po/eu.po+61−56 po/fi.po+40−46 po/fr.po+37−45 po/hu.po+37−43 po/it.po+37−43 po/ja.po+37−42 po/nb.po+40−46 po/nl.po+39−45 po/pt.po+37−43 po/ro.po+40−43 po/ru.po+36−44 po/sl.po+37−43 po/sr.po+98−89 qml/Shell.qml+9 qml/Stages/Animations/BaseSurfaceAnimation.qml → qml/Stages/Animations/BaseSessionAnimation.qml+23−20 qml/Stages/Animations/DarkenAndFadeInAnimation.qml−48 qml/Stages/Animations/SwipeFromBottomAnimation.qml+24−19 qml/Stages/Animations/SwipeUpAnimation.qml−49 qml/Stages/ApplicationWindow.qml+50−71 qml/Stages/SessionContainer.qml+143 qml/Stages/SurfaceContainer.qml+22−67 tests/mocks/AccountsService/AccountsService.qmltypes+1 tests/mocks/LightDM/LightDM.qmltypes+2 tests/mocks/Ubuntu/SystemImage/SystemImage.qmltypes+3−1 tests/mocks/Unity/Application/Application.qmltypes+115−70 tests/mocks/Unity/Application/ApplicationDBusAdaptor.cpp−81 tests/mocks/Unity/Application/ApplicationInfo.cpp+36−85 tests/mocks/Unity/Application/ApplicationInfo.h+11−23 tests/mocks/Unity/Application/ApplicationManager.cpp+9−16 tests/mocks/Unity/Application/ApplicationManager.h+1−2 tests/mocks/Unity/Application/ApplicationTestInterface.cpp+117 tests/mocks/Unity/Application/ApplicationDBusAdaptor.h → tests/mocks/Unity/Application/ApplicationTestInterface.h+13−11 tests/mocks/Unity/Application/CMakeLists.txt+6−1 tests/mocks/Unity/Application/MirSurfaceItem.cpp+19−79 tests/mocks/Unity/Application/MirSurfaceItem.h+24−31 tests/mocks/Unity/Application/MirSurfaceItemModel.h+35 tests/mocks/Unity/Application/ObjectListModel.h+106 tests/mocks/Unity/Application/Session.cpp+174 tests/mocks/Unity/Application/Session.h+90 tests/mocks/Unity/Application/SessionManager.cpp+55 tests/mocks/Unity/Application/SessionManager.h+44 tests/mocks/Unity/Application/SessionModel.h+35 tests/mocks/Unity/Application/SurfaceManager.cpp+20−7 tests/mocks/Unity/Application/SurfaceManager.h+6−2 tests/mocks/Unity/Application/plugin.cpp+37−4 tests/mocks/Unity/Indicators/Indicators.qmltypes+20 tests/mocks/Unity/Unity.qmltypes+30−2 tests/qmltests/CMakeLists.txt+1 tests/qmltests/Panel/tst_ActiveCallHint.qml+1−1 tests/qmltests/Stages/RecursingChildSessionControl.qml+142 tests/qmltests/Stages/tst_ApplicationWindow.qml+99−47 tests/qmltests/Stages/tst_PhoneStage.qml+1−1 tests/qmltests/Stages/tst_SessionContainer.qml+267 tests/qmltests/Stages/tst_SurfaceContainer.qml+28−43 tests/qmltests/tst_Shell.qml+9−9
debian/changelog+7
@@ -1,3 +1,10 @@
1+unity8 (8.00+14.10.20140903.1-0ubuntu1) utopic; urgency=low
2+
3+ [ Nick Dedekind ]
4+ * Support for nested prompt session. (LP: #1358388)
5+
6+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Wed, 03 Sep 2014 07:58:49 +0000
7+
18unity8 (8.00+14.10.20140828.1-0ubuntu1) utopic; urgency=low
29
310 [ Michael Terry ]
debian/control+1−1
@@ -85,7 +85,7 @@ Depends: gsettings-desktop-schemas,
8585 qmenumodel-qml (>= 0.2.8),
8686 qml-module-qtquick-xmllistmodel,
8787 qtdeclarative5-gsettings1.0,
88− qtdeclarative5-qtmir-plugin (>= 0.4.1),
88+ qtdeclarative5-qtmir-plugin (>= 0.4.3),
8989 qtdeclarative5-ubuntu-telephony0.1,
9090 unity-launcher-impl-3,
9191 unity8-common (= ${source:Version}),
plugins/AccountsService/AccountsService.qmltypes+1
@@ -26,5 +26,6 @@ Module {
2626 Property { name: "backgroundFile"; type: "string"; isReadonly: true }
2727 Property { name: "statsWelcomeScreen"; type: "bool"; isReadonly: true }
2828 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
29+ Property { name: "failedLogins"; type: "uint" }
2930 }
3031}
plugins/LightDM/LightDM.qmltypes+2
@@ -27,6 +27,7 @@ Module {
2727 name: "showPrompt"
2828 Parameter { name: "text"; type: "string" }
2929 Parameter { name: "isSecret"; type: "bool" }
30+ Parameter { name: "isDefaultPrompt"; type: "bool" }
3031 }
3132 Signal { name: "authenticationComplete" }
3233 Signal {
@@ -34,6 +35,7 @@ Module {
3435 Parameter { name: "user"; type: "string" }
3536 }
3637 Signal { name: "isActiveChanged" }
38+ Signal { name: "isAuthenticatedChanged" }
3739 Signal { name: "showGreeter" }
3840 Signal {
3941 name: "requestAuthenticationUser"
plugins/Ubuntu/SystemImage/SystemImage.qmltypes+2
@@ -11,6 +11,8 @@ Module {
1111 name: "SystemImage"
1212 prototype: "QObject"
1313 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
14+ isCreatable: false
15+ isSingleton: true
1416 exportMetaObjectRevisions: [0]
1517 Method { name: "factoryReset" }
1618 }
plugins/Unity/Indicators/Indicators.qmltypes+6−4
@@ -219,12 +219,14 @@ Module {
219219 Method {
220220 name: "model"
221221 type: "UnityMenuModel*"
222− Parameter { name: "path"; type: "string" }
222+ Parameter { name: "bus"; type: "QByteArray" }
223+ Parameter { name: "path"; type: "QByteArray" }
224+ Parameter { name: "actions"; type: "QVariantMap" }
223225 }
224226 Method {
225− name: "registerModel"
226− Parameter { name: "path"; type: "string" }
227− Parameter { name: "menuModel"; type: "UnityMenuModel"; isPointer: true }
227+ name: "contains"
228+ type: "bool"
229+ Parameter { name: "path"; type: "QByteArray" }
228230 }
229231 }
230232 Component {
po/am.po+51−49
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-23 17:14+0000\n"
11+"PO-Revision-Date: 2014-09-02 01:51+0000\n"
1212"Last-Translator: samson <Unknown>\n"
1313"Language-Team: Amharic <am@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-03 07:05+0000\n"
18+"X-Generator: Launchpad (build 17196)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "የ መግቢያ ቃል: "
2323
@@ -32,53 +32,55 @@ msgstr "አቋራጭ መለያያ"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "መውጫ"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "በእርግጥ መውጣት ይፈልጋሉ?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "አይ"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "አዎ"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "ማጥፊያ"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "በእርግጥ ማጥፋት ይፈልጋሉ?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "እንደገና ማስነሻ"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "በእርግጥ እንደገና ማስነሳት ይፈልጋሉ?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "ሐይል"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"በእርግጥ ሐይሉን ማጥፋት\n"
77+"ይፈልጋሉ?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "ማጥፊያ"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "መሰረዣ"
8486
@@ -127,6 +129,7 @@ msgid ""
127129"You have now mastered the edge gestures and can start using the "
128130"phone<br><br>Tap on the screen to start"
129131msgstr ""
132+"አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
130133
131134#: qml/Components/Lockscreen.qml:167
132135msgid "Please wait"
@@ -161,21 +164,22 @@ msgstr "አነስተኛ መመልከቻ"
161164msgid "See all"
162165msgstr "ሁሉንም መመልከቻ"
163166
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
167+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
168+#: qml/Panel/SearchIndicator.qml:27
165169msgid "Search"
166170msgstr "መፈለጊያ"
167171
168172#: qml/Dash/PageHeader.qml:270
169173msgid "Settings"
170−msgstr ""
174+msgstr "ማሰናጃ"
171175
172176#: qml/Dash/PageHeader.qml:279
173177msgid "Remove from Favorites"
174−msgstr ""
178+msgstr "ከምወዳቸው ማስወገጃ"
175179
176180#: qml/Dash/PageHeader.qml:279
177181msgid "Add to Favorites"
178−msgstr ""
182+msgstr "ወደምወዳቸው መጨመሪያ"
179183
180184#: qml/Dash/Previews/PreviewActionCombo.qml:34
181185msgid "More..."
@@ -199,13 +203,13 @@ msgstr "መላኪያ"
199203
200204#: qml/Dash/ScopesOverview.qml:201
201205msgid "Manage Dash"
202−msgstr ""
206+msgstr "የ ዳሽ አስተዳዳሪ"
203207
204−#: qml/Dash/ScopesOverview.qml:408
208+#: qml/Dash/ScopesOverview.qml:417
205209msgid "Done"
206210msgstr "ጨርሷል"
207211
208−#: qml/Dash/ScopesOverview.qml:434
212+#: qml/Dash/ScopesOverview.qml:443
209213msgid "Store"
210214msgstr "ማስቀመጫ"
211215
@@ -221,7 +225,7 @@ msgstr "ሁሉንም"
221225msgid "Swipe to unlock"
222226msgstr "ለመክፈት ይጥረጉ"
223227
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
228+#: qml/Hud/HudParametrizedActionsPage.qml:139
225229msgid "Confirm"
226230msgstr "ማረጋገጫ"
227231
@@ -247,11 +251,11 @@ msgstr "የመግቢያ ቃል ማሳያ"
247251
248252#: qml/Notifications/NotificationMenuItemFactory.qml:120
249253msgid "Enter SIM PIN"
250−msgstr ""
254+msgstr "ሲም ፒን ያስገቡ"
251255
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256+#: qml/Notifications/NotificationMenuItemFactory.qml:121
253257msgid "Sorry, incorrect PIN"
254−msgstr ""
258+msgstr "አዝናለሁ የተሳሳተ ፒን"
255259
256260#: qml/Panel/ActiveCallHint.qml:77
257261msgid "Tap to return to call..."
@@ -287,64 +291,62 @@ msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
287291
288292#: qml/Panel/Indicators/ModemInfoItem.qml:105
289293msgid "Unlock SIM"
290−msgstr ""
294+msgstr "ሲም መክፈቻ"
291295
292296#: qml/Panel/Indicators/RoamingIndication.qml:27
293297msgid "Roaming"
294−msgstr ""
298+msgstr "ማዘዋወሪያ"
295299
296−#: qml/Shell.qml:266
300+#: qml/Shell.qml:279
297301msgid "Enter your passphrase"
298−msgstr ""
302+msgstr "የማለፊያ ሐረግ ያስገቡ"
299303
300−#: qml/Shell.qml:267
304+#: qml/Shell.qml:280
301305msgid "Sorry, incorrect passphrase"
302−msgstr ""
306+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
303307
304308#: qml/Shell.qml:282
305309msgid "Enter your passcode"
306−msgstr ""
310+msgstr "የ እርስዎን የማለፊያ ኮድ ያስገቡ"
307311
308312#: qml/Shell.qml:283
309313msgid "Sorry, incorrect passcode"
310−msgstr ""
314+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
311315
312−#: qml/Shell.qml:273
316+#: qml/Shell.qml:286
313317#, qt-format
314318msgid "Enter your %1"
315319msgstr "ያስገቡ የ እርስዎን %1"
316320
317−#: qml/Shell.qml:274
321+#: qml/Shell.qml:287
318322#, qt-format
319323msgid "Sorry, incorrect %1"
320324msgstr "አዝናለሁ: የተሳሳተ%1"
321325
322−#: qml/Shell.qml:310
326+#: qml/Shell.qml:323
323327msgid "Sorry, incorrect passphrase."
324−msgstr ""
328+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
325329
326−#: qml/Shell.qml:311
330+#: qml/Shell.qml:324
327331msgid "Sorry, incorrect passcode."
328−msgstr ""
332+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
329333
330−#: qml/Shell.qml:312
334+#: qml/Shell.qml:325
331335msgid "This will be your last attempt."
332336msgstr "ይህ የመጨረሻ ሙከራዎ ነው"
333337
334−#: qml/Shell.qml:314
338+#: qml/Shell.qml:327
335339msgid ""
336340"If passphrase is entered incorrectly, your phone will conduct a factory "
337341"reset and all personal data will be deleted."
338342msgstr ""
343+"የተሳሳተ የማለፊያ ሐረግ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
344+"ይጠፋል"
339345
340−#: qml/Shell.qml:315
346+#: qml/Shell.qml:328
341347msgid ""
342348"If passcode is entered incorrectly, your phone will conduct a factory reset "
343349"and all personal data will be deleted."
344350msgstr ""
345−
346−#~ msgid "Restart"
347−#~ msgstr "እንደገና ማስጀመሪያ"
348−
349−#~ msgid "Are you sure you would like to turn power off?"
350−#~ msgstr "በእርግጥ ሐይሉን ማጥፋት ይፈልጋሉ"
351+"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
352+"ይጠፋል"
po/ast.po+62−55
@@ -8,18 +8,18 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-07-25 16:51+0000\n"
11+"PO-Revision-Date: 2014-08-31 12:51+0000\n"
1212"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
1313"Language-Team: Asturian <ast@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
22−msgstr ""
22+msgstr "Contraseña: "
2323
2424#: plugins/Unity/Launcher/launcheritem.cpp:43
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,55 +32,57 @@ msgstr "Desanclar"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Zarrar sesión"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "De xuru que quies zarrar la sesión?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Non"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Sí"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Apagar"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "De xuru que quies apagar?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Reaniciar"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "De xuru que quies reaniciar?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Enerxía"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"De xuru que quies\n"
77+"apagar?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
79−msgstr ""
81+msgstr "Apagar"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
83−msgstr ""
85+msgstr "Encaboxar"
8486
8587#: qml/Components/EdgeDemoOverlay.qml:151
8688msgid "Skip intro"
@@ -134,11 +136,11 @@ msgstr ""
134136
135137#: qml/Components/Lockscreen.qml:167
136138msgid "Please wait"
137−msgstr ""
139+msgstr "Espera un segundu"
138140
139141#: qml/Components/Lockscreen.qml:172
140142msgid "Too many incorrect attempts"
141−msgstr ""
143+msgstr "Munchos intentos incorreutos"
142144
143145#: qml/Components/Lockscreen.qml:206
144146msgid "Emergency Call"
@@ -165,21 +167,22 @@ msgstr "Ver menos"
165167msgid "See all"
166168msgstr "Ver too"
167169
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
170+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
171+#: qml/Panel/SearchIndicator.qml:27
169172msgid "Search"
170173msgstr "Guetar"
171174
172175#: qml/Dash/PageHeader.qml:270
173176msgid "Settings"
174−msgstr ""
177+msgstr "Axustes"
175178
176179#: qml/Dash/PageHeader.qml:279
177180msgid "Remove from Favorites"
178−msgstr ""
181+msgstr "Desaniciar de favoritos"
179182
180183#: qml/Dash/PageHeader.qml:279
181184msgid "Add to Favorites"
182−msgstr ""
185+msgstr "Amestar a favoritos"
183186
184187#: qml/Dash/Previews/PreviewActionCombo.qml:34
185188msgid "More..."
@@ -203,29 +206,29 @@ msgstr "Unviar"
203206
204207#: qml/Dash/ScopesOverview.qml:201
205208msgid "Manage Dash"
206−msgstr ""
209+msgstr "Xestionar tableru"
207210
208−#: qml/Dash/ScopesOverview.qml:408
211+#: qml/Dash/ScopesOverview.qml:417
209212msgid "Done"
210−msgstr ""
213+msgstr "Fecho"
211214
212−#: qml/Dash/ScopesOverview.qml:434
215+#: qml/Dash/ScopesOverview.qml:443
213216msgid "Store"
214−msgstr ""
217+msgstr "Tienda"
215218
216219#: qml/Dash/ScopesOverviewTab.qml:36
217220msgid "Favorites"
218−msgstr ""
221+msgstr "Favoritos"
219222
220223#: qml/Dash/ScopesOverviewTab.qml:54
221224msgid "All"
222−msgstr ""
225+msgstr "Too"
223226
224227#: qml/Greeter/Greeter.qml:157
225228msgid "Swipe to unlock"
226229msgstr "Esliza pa desbloquiar"
227230
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
231+#: qml/Hud/HudParametrizedActionsPage.qml:139
229232msgid "Confirm"
230233msgstr "Confirmar"
231234
@@ -251,11 +254,11 @@ msgstr "Amosar contraseña"
251254
252255#: qml/Notifications/NotificationMenuItemFactory.qml:120
253256msgid "Enter SIM PIN"
254−msgstr ""
257+msgstr "Escribi'l PIN de la SIM"
255258
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259+#: qml/Notifications/NotificationMenuItemFactory.qml:121
257260msgid "Sorry, incorrect PIN"
258−msgstr ""
261+msgstr "PIN incorreutu"
259262
260263#: qml/Panel/ActiveCallHint.qml:77
261264msgid "Tap to return to call..."
@@ -291,58 +294,62 @@ msgstr "Falló, toca pa reintentar"
291294
292295#: qml/Panel/Indicators/ModemInfoItem.qml:105
293296msgid "Unlock SIM"
294−msgstr ""
297+msgstr "Desbloquiar SIM"
295298
296299#: qml/Panel/Indicators/RoamingIndication.qml:27
297300msgid "Roaming"
298−msgstr ""
301+msgstr "Roaming"
299302
300−#: qml/Shell.qml:266
303+#: qml/Shell.qml:279
301304msgid "Enter your passphrase"
302−msgstr ""
305+msgstr "Introduz contraseña"
303306
304−#: qml/Shell.qml:267
307+#: qml/Shell.qml:280
305308msgid "Sorry, incorrect passphrase"
306−msgstr ""
309+msgstr "Sentímoslo, contraseña incorreuta"
307310
308311#: qml/Shell.qml:282
309312msgid "Enter your passcode"
310−msgstr ""
313+msgstr "Introduz códigu de pasu"
311314
312315#: qml/Shell.qml:283
313316msgid "Sorry, incorrect passcode"
314−msgstr ""
317+msgstr "Sentímoslo, códigu de pasu incorreutu"
315318
316−#: qml/Shell.qml:273
319+#: qml/Shell.qml:286
317320#, qt-format
318321msgid "Enter your %1"
319−msgstr ""
322+msgstr "Introduz %1"
320323
321−#: qml/Shell.qml:274
324+#: qml/Shell.qml:287
322325#, qt-format
323326msgid "Sorry, incorrect %1"
324−msgstr ""
327+msgstr "Sentímoslo, %1 incorreutu"
325328
326−#: qml/Shell.qml:310
329+#: qml/Shell.qml:323
327330msgid "Sorry, incorrect passphrase."
328−msgstr ""
331+msgstr "Fras de pasu incorreuta"
329332
330−#: qml/Shell.qml:311
333+#: qml/Shell.qml:324
331334msgid "Sorry, incorrect passcode."
332−msgstr ""
335+msgstr "Códigu de pasu incorreutu"
333336
334−#: qml/Shell.qml:312
337+#: qml/Shell.qml:325
335338msgid "This will be your last attempt."
336−msgstr ""
339+msgstr "Esti ye'l caberu intentu."
337340
338−#: qml/Shell.qml:314
341+#: qml/Shell.qml:327
339342msgid ""
340343"If passphrase is entered incorrectly, your phone will conduct a factory "
341344"reset and all personal data will be deleted."
342345msgstr ""
346+"Si s'inxerta la fras incorreutamente, el teléfonu va volver a la "
347+"configuración de fábrica y van perdese tolos datos personales."
343348
344−#: qml/Shell.qml:315
349+#: qml/Shell.qml:328
345350msgid ""
346351"If passcode is entered incorrectly, your phone will conduct a factory reset "
347352"and all personal data will be deleted."
348353msgstr ""
354+"Si s'inxerta'l códigu incorreutamente, el teléfonu va volver a la "
355+"configuración de fábrica y van perdese tolos datos personales."
po/az.po+56−64
@@ -8,18 +8,18 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 22:12+0000\n"
12−"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
11+"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12+"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
1313"Language-Team: Azerbaijani <az@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-04 08:35+0000\n"
18+"X-Generator: Launchpad (build 17196)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
22−msgstr "Parol: "
22+msgstr "Şifrә: "
2323
2424#: plugins/Unity/Launcher/launcheritem.cpp:43
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,37 +32,37 @@ msgstr "Açma qısayolu"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Çıxış"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Çıxmaq istәdiyinizdәn әminsiniz?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Yox"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Hə"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Sistemi Söndür"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Sistemi söndürmәk istәdiyinizә әminsiniz?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Yenidən yüklə"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Yenidәn başlatmaq istәdiyinizә әminsiniz?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
@@ -74,17 +74,17 @@ msgid ""
7474"to power off?"
7575msgstr ""
7676
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
7878msgid "Power off"
7979msgstr "Söndür"
8080
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
8282msgid "Cancel"
8383msgstr "İmtina"
8484
8585#: qml/Components/EdgeDemoOverlay.qml:151
8686msgid "Skip intro"
87−msgstr "Intro -nu keç"
87+msgstr "Tәqdimatı keç"
8888
8989#: qml/Components/EdgeDemo.qml:112
9090msgid "Right edge"
@@ -92,7 +92,7 @@ msgstr "Sağ Künc"
9292
9393#: qml/Components/EdgeDemo.qml:113
9494msgid "Try swiping from the right edge to unlock the phone"
95−msgstr "Kilidi açmaq üçün sağ küncdən çəkin"
95+msgstr "Kilidi açmaq üçün sağ küncdən sürüşdürün"
9696
9797#: qml/Components/EdgeDemo.qml:144
9898msgid "Top edge"
@@ -100,7 +100,7 @@ msgstr "Yuxarı künc"
100100
101101#: qml/Components/EdgeDemo.qml:145
102102msgid "Try swiping from the top edge to access the indicators"
103−msgstr "Göstəricilərə keçid üçün yuxarı küncdən çəkin"
103+msgstr "Göstəriciləri görmәk üçün yuxarı küncdən sürüşdürün"
104104
105105#: qml/Components/EdgeDemo.qml:170
106106msgid "Close"
@@ -108,7 +108,7 @@ msgstr "Bağla"
108108
109109#: qml/Components/EdgeDemo.qml:171
110110msgid "Swipe up again to close the settings screen"
111−msgstr "Nizamlamalar ekranını bağlamaq üçün yenidən yuxarı çəkin"
111+msgstr "Nizamlamalar ekranını bağlamaq üçün yenidən yuxarı sürüşdürün"
112112
113113#: qml/Components/EdgeDemo.qml:198
114114msgid "Left edge"
@@ -128,16 +128,16 @@ msgid ""
128128"You have now mastered the edge gestures and can start using the "
129129"phone<br><br>Tap on the screen to start"
130130msgstr ""
131−"Siz künc jestlərini mənimsəmisiniz və telefonu istifadə etməyə başlaya "
131+"Siz künc hәrәkәtlәrini öyrәndiniz və telefonu istifadə etməyə başlaya "
132132"bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
133133
134134#: qml/Components/Lockscreen.qml:167
135135msgid "Please wait"
136−msgstr "Lütfən gözləyin"
136+msgstr "Xahiş edirik gözləyin"
137137
138138#: qml/Components/Lockscreen.qml:172
139139msgid "Too many incorrect attempts"
140−msgstr "Çoxlu yanlış cəhd"
140+msgstr "Çoxlu yanlış cəhdlәr"
141141
142142#: qml/Components/Lockscreen.qml:206
143143msgid "Emergency Call"
@@ -145,44 +145,45 @@ msgstr "Zərurət zəngi"
145145
146146#: qml/Components/Lockscreen.qml:226
147147msgid "OK"
148−msgstr "ОК"
148+msgstr "Oldu"
149149
150150#: qml/Components/PassphraseLockscreen.qml:61
151151#, qt-format
152152msgid "Hello %1"
153−msgstr "Xoş gördük %1"
153+msgstr "Salam %1"
154154
155155#: qml/Components/PassphraseLockscreen.qml:61
156156msgid "Hello"
157−msgstr "Xoş gördük"
157+msgstr "Salam"
158158
159159#: qml/Dash/GenericScopeView.qml:361
160160msgid "See less"
161−msgstr "Daha az gör"
161+msgstr "Daha azını gör"
162162
163163#: qml/Dash/GenericScopeView.qml:361
164164msgid "See all"
165165msgstr "Hamısını gör"
166166
167−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
167+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
168+#: qml/Panel/SearchIndicator.qml:27
168169msgid "Search"
169170msgstr "Axtar"
170171
171172#: qml/Dash/PageHeader.qml:270
172173msgid "Settings"
173−msgstr ""
174+msgstr "Tənzimləmələr"
174175
175176#: qml/Dash/PageHeader.qml:279
176177msgid "Remove from Favorites"
177−msgstr ""
178+msgstr "Seçilmişlәrdәn çıxart"
178179
179180#: qml/Dash/PageHeader.qml:279
180181msgid "Add to Favorites"
181−msgstr ""
182+msgstr "Seçilmişlәrә әlavә et"
182183
183184#: qml/Dash/Previews/PreviewActionCombo.qml:34
184185msgid "More..."
185−msgstr "Ətraflı..."
186+msgstr "Daha çox..."
186187
187188#: qml/Dash/Previews/PreviewActionCombo.qml:34
188189msgid "Less..."
@@ -190,7 +191,7 @@ msgstr "Az..."
190191
191192#: qml/Dash/Previews/PreviewRatingInput.qml:81
192193msgid "Rate this"
193−msgstr "Qiymət ver"
194+msgstr "Qiymәtlәndir"
194195
195196#: qml/Dash/Previews/PreviewRatingInput.qml:126
196197msgid "Add a review"
@@ -204,13 +205,13 @@ msgstr "Göndər"
204205msgid "Manage Dash"
205206msgstr ""
206207
207−#: qml/Dash/ScopesOverview.qml:408
208+#: qml/Dash/ScopesOverview.qml:417
208209msgid "Done"
209210msgstr "Başa çatdı"
210211
211−#: qml/Dash/ScopesOverview.qml:434
212+#: qml/Dash/ScopesOverview.qml:443
212213msgid "Store"
213−msgstr "Saxla"
214+msgstr ""
214215
215216#: qml/Dash/ScopesOverviewTab.qml:36
216217msgid "Favorites"
@@ -224,13 +225,13 @@ msgstr "Hamısı"
224225msgid "Swipe to unlock"
225226msgstr "Kilidi açmaq üçün sürüşdürün"
226227
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
228+#: qml/Hud/HudParametrizedActionsPage.qml:139
228229msgid "Confirm"
229230msgstr "Təsdiqlə"
230231
231232#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
232233msgid "Type or say a command"
233−msgstr "Əmri söyləyin və ya yazın"
234+msgstr "Bir әmr söyləyin və ya yazın"
234235
235236#: qml/Hud/Hud.qml:84
236237msgid "Loading. Please Wait..."
@@ -246,15 +247,15 @@ msgstr "Danışır..."
246247
247248#: qml/Notifications/NotificationMenuItemFactory.qml:105
248249msgid "Show password"
249−msgstr "Parolu göstər"
250+msgstr "Şifrәni göstәr"
250251
251252#: qml/Notifications/NotificationMenuItemFactory.qml:120
252253msgid "Enter SIM PIN"
253254msgstr "SIM PIN kodunuzu daxil edin"
254255
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256+#: qml/Notifications/NotificationMenuItemFactory.qml:121
256257msgid "Sorry, incorrect PIN"
257−msgstr "Təəssüf ki, PIN yanlışdır"
258+msgstr "Bağışlayın, PIN yanlışdır"
258259
259260#: qml/Panel/ActiveCallHint.qml:77
260261msgid "Tap to return to call..."
@@ -274,7 +275,7 @@ msgstr "Endirilir"
274275
275276#: qml/Panel/Indicators/MenuItemFactory.qml:657
276277msgid "Paused, tap to resume"
277−msgstr "Saxlanıldı, davam etmək üçün toxunun"
278+msgstr "Dayandırıldı. Davam etmək üçün toxunun"
278279
279280#: qml/Panel/Indicators/MenuItemFactory.qml:659
280281msgid "Canceled"
@@ -286,7 +287,7 @@ msgstr "Bitdi"
286287
287288#: qml/Panel/Indicators/MenuItemFactory.qml:663
288289msgid "Failed, tap to retry"
289−msgstr "Alınmadı, davam etmək üçün toxunun"
290+msgstr "Alınmadı. Yenidәn cәhd etmək üçün toxunun"
290291
291292#: qml/Panel/Indicators/ModemInfoItem.qml:105
292293msgid "Unlock SIM"
@@ -296,13 +297,13 @@ msgstr "SIM kilidini aç"
296297msgid "Roaming"
297298msgstr "Rominq"
298299
299−#: qml/Shell.qml:266
300+#: qml/Shell.qml:279
300301msgid "Enter your passphrase"
301302msgstr "Açar sözünüzü daxil edin"
302303
303−#: qml/Shell.qml:267
304+#: qml/Shell.qml:280
304305msgid "Sorry, incorrect passphrase"
305−msgstr "Təəssüf ki, açar söz yanlışdır"
306+msgstr "Bağışlayın, açar söz yanlışdır"
306307
307308#: qml/Shell.qml:282
308309msgid "Enter your passcode"
@@ -312,29 +313,29 @@ msgstr ""
312313msgid "Sorry, incorrect passcode"
313314msgstr ""
314315
315−#: qml/Shell.qml:273
316+#: qml/Shell.qml:286
316317#, qt-format
317318msgid "Enter your %1"
318319msgstr "%1 daxil edin"
319320
320−#: qml/Shell.qml:274
321+#: qml/Shell.qml:287
321322#, qt-format
322323msgid "Sorry, incorrect %1"
323−msgstr "Təəssüf ki, %1 yanlışdır"
324+msgstr "Bağışlayın, %1 yanlışdır"
324325
325−#: qml/Shell.qml:310
326+#: qml/Shell.qml:323
326327msgid "Sorry, incorrect passphrase."
327−msgstr "Təəssüf ki, açar söz yanlışdır."
328+msgstr "Bağışlayın, açar söz yanlışdır."
328329
329−#: qml/Shell.qml:311
330+#: qml/Shell.qml:324
330331msgid "Sorry, incorrect passcode."
331332msgstr "Təəssüf ki, açar kod yanlışdır."
332333
333−#: qml/Shell.qml:312
334+#: qml/Shell.qml:325
334335msgid "This will be your last attempt."
335336msgstr "Bu sizin son cəhdiniz olacaq."
336337
337−#: qml/Shell.qml:314
338+#: qml/Shell.qml:327
338339msgid ""
339340"If passphrase is entered incorrectly, your phone will conduct a factory "
340341"reset and all personal data will be deleted."
@@ -342,19 +343,10 @@ msgstr ""
342343"Əgər açar söz yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
343344"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
344345
345−#: qml/Shell.qml:315
346+#: qml/Shell.qml:328
346347msgid ""
347348"If passcode is entered incorrectly, your phone will conduct a factory reset "
348349"and all personal data will be deleted."
349350msgstr ""
350351"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
351352"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
352−
353−#~ msgid "Are you sure you would like to turn power off?"
354−#~ msgstr "Söndürmək istədiyinizə əminsiniz?"
355−
356−#~ msgid "Restart"
357−#~ msgstr "Yenidən Başlat"
358−
359−#~ msgid "Enter your PIN"
360−#~ msgstr "PIN kodunuzu daxil edin"
po/ca.po+39−45
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 14:23+0000\n"
11+"PO-Revision-Date: 2014-09-07 04:05+0000\n"
1212"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
1313"Language-Team: Catalan <ca@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-08 06:58+0000\n"
18+"X-Generator: Launchpad (build 17196)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Contrasenya: "
2323
@@ -32,53 +32,55 @@ msgstr "Desenganxa la drecera"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Surt"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Segur que voleu sortir?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "No"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Sí"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Apaga"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Segur que voleu apagar?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Reinicia"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Segur que voleu reiniciar?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Energia"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Segur que voleu\n"
77+"apagar?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
79−msgstr "Apaga'l"
81+msgstr "Apaga"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Cancel·la"
8486
@@ -169,21 +171,22 @@ msgstr "Mostra'n menys"
169171msgid "See all"
170172msgstr "Mostra-ho tot"
171173
172−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
174+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
175+#: qml/Panel/SearchIndicator.qml:27
173176msgid "Search"
174177msgstr "Cerca"
175178
176179#: qml/Dash/PageHeader.qml:270
177180msgid "Settings"
178−msgstr ""
181+msgstr "Paràmetres"
179182
180183#: qml/Dash/PageHeader.qml:279
181184msgid "Remove from Favorites"
182−msgstr ""
185+msgstr "Suprimeix dels preferits"
183186
184187#: qml/Dash/PageHeader.qml:279
185188msgid "Add to Favorites"
186−msgstr ""
189+msgstr "Afegeix als preferits"
187190
188191#: qml/Dash/Previews/PreviewActionCombo.qml:34
189192msgid "More..."
@@ -209,11 +212,11 @@ msgstr "Envia"
209212msgid "Manage Dash"
210213msgstr "Gestiona el tauler"
211214
212−#: qml/Dash/ScopesOverview.qml:408
215+#: qml/Dash/ScopesOverview.qml:417
213216msgid "Done"
214217msgstr "Fet"
215218
216−#: qml/Dash/ScopesOverview.qml:434
219+#: qml/Dash/ScopesOverview.qml:443
217220msgid "Store"
218221msgstr "Botiga"
219222
@@ -229,7 +232,7 @@ msgstr "Totes"
229232msgid "Swipe to unlock"
230233msgstr "Feu lliscar el dit per desbloquejar"
231234
232−#: qml/Hud/HudParametrizedActionsPage.qml:132
235+#: qml/Hud/HudParametrizedActionsPage.qml:139
233236msgid "Confirm"
234237msgstr "Confirma"
235238
@@ -255,9 +258,9 @@ msgstr "Mostra la contrasenya"
255258
256259#: qml/Notifications/NotificationMenuItemFactory.qml:120
257260msgid "Enter SIM PIN"
258−msgstr "Introduïu el PIN de la tarjeta SIM"
261+msgstr "Introduïu el PIN de la targeta SIM"
259262
260−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
263+#: qml/Notifications/NotificationMenuItemFactory.qml:121
261264msgid "Sorry, incorrect PIN"
262265msgstr "El PIN no és correcte"
263266
@@ -301,45 +304,45 @@ msgstr "Desbloca la SIM"
301304msgid "Roaming"
302305msgstr "Itinerància"
303306
304−#: qml/Shell.qml:266
307+#: qml/Shell.qml:279
305308msgid "Enter your passphrase"
306309msgstr "Escriviu la contrasenya"
307310
308−#: qml/Shell.qml:267
311+#: qml/Shell.qml:280
309312msgid "Sorry, incorrect passphrase"
310313msgstr "La contrasenya no és correcta"
311314
312315#: qml/Shell.qml:282
313316msgid "Enter your passcode"
314−msgstr ""
317+msgstr "Introduïu el codi d'accés"
315318
316319#: qml/Shell.qml:283
317320msgid "Sorry, incorrect passcode"
318−msgstr ""
321+msgstr "El codi d'accés no és correcte"
319322
320−#: qml/Shell.qml:273
323+#: qml/Shell.qml:286
321324#, qt-format
322325msgid "Enter your %1"
323326msgstr "Introduïu la %1"
324327
325−#: qml/Shell.qml:274
328+#: qml/Shell.qml:287
326329#, qt-format
327330msgid "Sorry, incorrect %1"
328331msgstr "Incorrecte (%1)"
329332
330−#: qml/Shell.qml:310
333+#: qml/Shell.qml:323
331334msgid "Sorry, incorrect passphrase."
332335msgstr "La contrasenya és incorrecta"
333336
334−#: qml/Shell.qml:311
337+#: qml/Shell.qml:324
335338msgid "Sorry, incorrect passcode."
336339msgstr "La clau és incorrecta"
337340
338−#: qml/Shell.qml:312
341+#: qml/Shell.qml:325
339342msgid "This will be your last attempt."
340343msgstr "Aquest serà el darrer intent."
341344
342−#: qml/Shell.qml:314
345+#: qml/Shell.qml:327
343346msgid ""
344347"If passphrase is entered incorrectly, your phone will conduct a factory "
345348"reset and all personal data will be deleted."
@@ -348,19 +351,10 @@ msgstr ""
348351"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
349352"personals."
350353
351−#: qml/Shell.qml:315
354+#: qml/Shell.qml:328
352355msgid ""
353356"If passcode is entered incorrectly, your phone will conduct a factory reset "
354357"and all personal data will be deleted."
355358msgstr ""
356359"Si la clau s'introdueix de manera incorrecta, el telèfon es reinicialitzarà "
357360"a l'estat de fàbrica i se suprimiran totes les dades personals."
358−
359−#~ msgid "Are you sure you would like to turn power off?"
360−#~ msgstr "Segur que voleu apagar el dispositiu?"
361−
362−#~ msgid "Restart"
363−#~ msgstr "Reinicia'l"
364−
365−#~ msgid "Enter your PIN"
366−#~ msgstr "Escriviu el PIN"
po/de.po+38−44
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 10:17+0000\n"
12−"Last-Translator: Martin Pitt <martin.pitt@ubuntu.com>\n"
11+"PO-Revision-Date: 2014-09-04 15:02+0000\n"
12+"Last-Translator: Niklas Wenzel <nikwen.developer@gmail.com>\n"
1313"Language-Team: German <de@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-05 07:50+0000\n"
18+"X-Generator: Launchpad (build 17196)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Passwort: "
2323
@@ -32,53 +32,55 @@ msgstr "Verknüpfung entfernen"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Abmelden"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Sind Sie sicher, dass Sie sich abmelden wollen?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Nein"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Ja"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Herunterfahren"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Sind Sie sicher, dass Sie herunterfahren wollen?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Neustart"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Sind Sie sicher, dass Sie neu starten wollen?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Energie"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Sind Sie sicher dass Sie\n"
77+"ausschalten wollen?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Ausschalten"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Abbrechen"
8486
@@ -166,21 +168,22 @@ msgstr "Weniger ansehen"
166168msgid "See all"
167169msgstr "Alle anzeigen"
168170
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
171+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
172+#: qml/Panel/SearchIndicator.qml:27
170173msgid "Search"
171174msgstr "Suchen"
172175
173176#: qml/Dash/PageHeader.qml:270
174177msgid "Settings"
175−msgstr ""
178+msgstr "Einstellungen"
176179
177180#: qml/Dash/PageHeader.qml:279
178181msgid "Remove from Favorites"
179−msgstr ""
182+msgstr "Aus den Favoriten entfernen"
180183
181184#: qml/Dash/PageHeader.qml:279
182185msgid "Add to Favorites"
183−msgstr ""
186+msgstr "Zu Favoriten hinzufügen"
184187
185188#: qml/Dash/Previews/PreviewActionCombo.qml:34
186189msgid "More..."
@@ -206,11 +209,11 @@ msgstr "Senden"
206209msgid "Manage Dash"
207210msgstr "Dash verwalten"
208211
209−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
210213msgid "Done"
211214msgstr "Erledigt"
212215
213−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
214217msgid "Store"
215218msgstr "Store"
216219
@@ -226,7 +229,7 @@ msgstr "Alle"
226229msgid "Swipe to unlock"
227230msgstr "Wischen zum Entsperren"
228231
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
230233msgid "Confirm"
231234msgstr "Bestätigen"
232235
@@ -254,7 +257,7 @@ msgstr "Passwort anzeigen"
254257msgid "Enter SIM PIN"
255258msgstr "Geben Sie die SIM-PIN ein"
256259
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258261msgid "Sorry, incorrect PIN"
259262msgstr "Die PIN ist nicht korrekt"
260263
@@ -298,45 +301,45 @@ msgstr "SIM-Karte entsprerren"
298301msgid "Roaming"
299302msgstr "Roaming"
300303
301−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
302305msgid "Enter your passphrase"
303306msgstr "Geben Sie Ihr Passwort ein"
304307
305−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
306309msgid "Sorry, incorrect passphrase"
307310msgstr "Das Passwort ist nicht korrekt"
308311
309312#: qml/Shell.qml:282
310313msgid "Enter your passcode"
311−msgstr ""
314+msgstr "Passwort eingeben"
312315
313316#: qml/Shell.qml:283
314317msgid "Sorry, incorrect passcode"
315−msgstr ""
318+msgstr "Falsches Passwort"
316319
317−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
318321#, qt-format
319322msgid "Enter your %1"
320323msgstr "%1 eingeben"
321324
322−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
323326#, qt-format
324327msgid "Sorry, incorrect %1"
325328msgstr "%1 falsch"
326329
327−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
328331msgid "Sorry, incorrect passphrase."
329332msgstr "Falsches Passwort."
330333
331−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
332335msgid "Sorry, incorrect passcode."
333336msgstr "Falsche PIN"
334337
335−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
336339msgid "This will be your last attempt."
337340msgstr "Dies ist Ihr letzter Versuch."
338341
339−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
340343msgid ""
341344"If passphrase is entered incorrectly, your phone will conduct a factory "
342345"reset and all personal data will be deleted."
@@ -344,19 +347,10 @@ msgstr ""
344347"Wird das Passwort falsch eingegeben, wird das Telefon auf den Werkszustand "
345348"zurückgesetzt und alle Daten werden gelöscht."
346349
347−#: qml/Shell.qml:315
350+#: qml/Shell.qml:328
348351msgid ""
349352"If passcode is entered incorrectly, your phone will conduct a factory reset "
350353"and all personal data will be deleted."
351354msgstr ""
352355"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
353356"zurückgesetzt und alle Daten werden gelöscht."
354−
355−#~ msgid "Restart"
356−#~ msgstr "Neustart"
357−
358−#~ msgid "Are you sure you would like to turn power off?"
359−#~ msgstr "Sind Sie sicher dass das Telefon ausgeschaltet werden soll?"
360−
361−#~ msgid "Enter your PIN"
362−#~ msgstr "Geben Sie Ihre PIN ein"
po/en_AU.po+37−43
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 09:59+0000\n"
11+"PO-Revision-Date: 2014-08-31 11:20+0000\n"
1212"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
1313"Language-Team: English (Australia) <en_AU@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Password: "
2323
@@ -32,53 +32,55 @@ msgstr "Unpin shortcut"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Log out"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Are you sure you want to log out?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "No"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Yes"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Shut down"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Are you sure you want to shut down?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Reboot"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Are you sure you want to reboot?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Power"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Are you sure you would like\n"
77+"to power off?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Power off"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Cancel"
8486
@@ -163,21 +165,22 @@ msgstr "See less"
163165msgid "See all"
164166msgstr "See all"
165167
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
168+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
169+#: qml/Panel/SearchIndicator.qml:27
167170msgid "Search"
168171msgstr "Search"
169172
170173#: qml/Dash/PageHeader.qml:270
171174msgid "Settings"
172−msgstr ""
175+msgstr "Settings"
173176
174177#: qml/Dash/PageHeader.qml:279
175178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Remove from Favourites"
177180
178181#: qml/Dash/PageHeader.qml:279
179182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Add to Favourites"
181184
182185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Send"
203206msgid "Manage Dash"
204207msgstr "Manage Dash"
205208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207210msgid "Done"
208211msgstr "Done"
209212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211214msgid "Store"
212215msgstr "Store"
213216
@@ -223,7 +226,7 @@ msgstr "All"
223226msgid "Swipe to unlock"
224227msgstr "Swipe to unlock"
225228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227230msgid "Confirm"
228231msgstr "Confirm"
229232
@@ -251,7 +254,7 @@ msgstr "Show password"
251254msgid "Enter SIM PIN"
252255msgstr "Enter SIM PIN"
253256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255258msgid "Sorry, incorrect PIN"
256259msgstr "Sorry, incorrect PIN"
257260
@@ -295,45 +298,45 @@ msgstr "Unlock SIM"
295298msgid "Roaming"
296299msgstr "Roaming"
297300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299302msgid "Enter your passphrase"
300303msgstr "Enter your passphrase"
301304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303306msgid "Sorry, incorrect passphrase"
304307msgstr "Sorry, incorrect passphrase"
305308
306309#: qml/Shell.qml:282
307310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Enter your passcode"
309312
310313#: qml/Shell.qml:283
311314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Sorry, incorrect passcode"
313316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315318#, qt-format
316319msgid "Enter your %1"
317320msgstr "Enter your %1"
318321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320323#, qt-format
321324msgid "Sorry, incorrect %1"
322325msgstr "Sorry, incorrect %1"
323326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325328msgid "Sorry, incorrect passphrase."
326329msgstr "Sorry, incorrect passphrase."
327330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329332msgid "Sorry, incorrect passcode."
330333msgstr "Sorry, incorrect passcode."
331334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333336msgid "This will be your last attempt."
334337msgstr "This will be your last attempt."
335338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337340msgid ""
338341"If passphrase is entered incorrectly, your phone will conduct a factory "
339342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341344"If passphrase is entered incorrectly, your phone will conduct a factory "
342345"reset and all personal data will be deleted."
343346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345348msgid ""
346349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347350"and all personal data will be deleted."
348351msgstr ""
349352"If passcode is entered incorrectly, your phone will conduct a factory reset "
350353"and all personal data will be deleted."
351−
352−#~ msgid "Are you sure you would like to turn power off?"
353−#~ msgstr "Are you sure you would like to turn power off?"
354−
355−#~ msgid "Restart"
356−#~ msgstr "Restart"
357−
358−#~ msgid "Enter your PIN"
359−#~ msgstr "Enter your PIN"
po/es.po+39−45
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 15:20+0000\n"
12−"Last-Translator: Leo Arias <leo.arias@canonical.com>\n"
11+"PO-Revision-Date: 2014-09-02 08:16+0000\n"
12+"Last-Translator: Víctor R. Ruiz <Unknown>\n"
1313"Language-Team: Spanish <es@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-03 07:05+0000\n"
18+"X-Generator: Launchpad (build 17196)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Contraseña: "
2323
@@ -32,53 +32,55 @@ msgstr "Desanclar"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Cerrar la sesión"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "̉¿Está seguro de que quiere cerrar la sesión?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "No"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Sí"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Apagar"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "¿Está seguro de que quiere apagar?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Reiniciar"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "¿Esta seguro de que quiere reiniciar?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Encendido"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"¿Está seguro de que quiere\n"
77+"apagar?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Apagar"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Cancelar"
8486
@@ -166,21 +168,22 @@ msgstr "Ver menos"
166168msgid "See all"
167169msgstr "Ver todo"
168170
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
171+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
172+#: qml/Panel/SearchIndicator.qml:27
170173msgid "Search"
171174msgstr "Buscar"
172175
173176#: qml/Dash/PageHeader.qml:270
174177msgid "Settings"
175−msgstr ""
178+msgstr "Configuración"
176179
177180#: qml/Dash/PageHeader.qml:279
178181msgid "Remove from Favorites"
179−msgstr ""
182+msgstr "Quitar de favoritos"
180183
181184#: qml/Dash/PageHeader.qml:279
182185msgid "Add to Favorites"
183−msgstr ""
186+msgstr "Añadir a favoritos"
184187
185188#: qml/Dash/Previews/PreviewActionCombo.qml:34
186189msgid "More..."
@@ -206,11 +209,11 @@ msgstr "Enviar"
206209msgid "Manage Dash"
207210msgstr "Gestionar tablero"
208211
209−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
210213msgid "Done"
211214msgstr "Hecho"
212215
213−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
214217msgid "Store"
215218msgstr "Tienda"
216219
@@ -226,7 +229,7 @@ msgstr "Todo"
226229msgid "Swipe to unlock"
227230msgstr "Deslice para desbloquear"
228231
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
230233msgid "Confirm"
231234msgstr "Confirmar"
232235
@@ -254,7 +257,7 @@ msgstr "Mostrar contraseña"
254257msgid "Enter SIM PIN"
255258msgstr "Escriba el PIN de la SIM"
256259
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258261msgid "Sorry, incorrect PIN"
259262msgstr "El PIN es incorrecto"
260263
@@ -298,45 +301,45 @@ msgstr "Desbloquear SIM"
298301msgid "Roaming"
299302msgstr "Itinerancia"
300303
301−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
302305msgid "Enter your passphrase"
303306msgstr "Introudzca su contraseña"
304307
305−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
306309msgid "Sorry, incorrect passphrase"
307310msgstr "Lo sentimos, contraseña incorrecta"
308311
309312#: qml/Shell.qml:282
310313msgid "Enter your passcode"
311−msgstr ""
314+msgstr "Escriba su código de acceso"
312315
313316#: qml/Shell.qml:283
314317msgid "Sorry, incorrect passcode"
315−msgstr ""
318+msgstr "El código de acceso es incorrecto"
316319
317−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
318321#, qt-format
319322msgid "Enter your %1"
320323msgstr "Introduzca su %1"
321324
322−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
323326#, qt-format
324327msgid "Sorry, incorrect %1"
325328msgstr "Lo sentimos, %1 incorrecto"
326329
327−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
328331msgid "Sorry, incorrect passphrase."
329332msgstr "Frase de paso incorrecta"
330333
331−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
332335msgid "Sorry, incorrect passcode."
333−msgstr "Código de paso incorrecto"
336+msgstr "Código de acceso incorrecto."
334337
335−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
336339msgid "This will be your last attempt."
337340msgstr "Este será su último intento."
338341
339−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
340343msgid ""
341344"If passphrase is entered incorrectly, your phone will conduct a factory "
342345"reset and all personal data will be deleted."
@@ -344,19 +347,10 @@ msgstr ""
344347"Si se introduce la frase incorrectamente, el teléfono volverá a la "
345348"configuración de fábrica y se perderán todos los datos personales."
346349
347−#: qml/Shell.qml:315
350+#: qml/Shell.qml:328
348351msgid ""
349352"If passcode is entered incorrectly, your phone will conduct a factory reset "
350353"and all personal data will be deleted."
351354msgstr ""
352355"Si se introduce el código incorrectamente, el teléfono volverá a la "
353356"configuración de fábrica y se perderán todos los datos personales."
354−
355−#~ msgid "Restart"
356−#~ msgstr "Reiniciar"
357−
358−#~ msgid "Are you sure you would like to turn power off?"
359−#~ msgstr "¿Está seguro de que quiere apagarlo?"
360−
361−#~ msgid "Enter your PIN"
362−#~ msgstr "Escriba el PIN"
po/eu.po+61−56
@@ -8,18 +8,18 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-06 22:51+0000\n"
11+"PO-Revision-Date: 2014-09-02 20:34+0000\n"
1212"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
1313"Language-Team: Basque <eu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-03 07:05+0000\n"
18+"X-Generator: Launchpad (build 17196)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
22−msgstr ""
22+msgstr "Pasahitza: "
2323
2424#: plugins/Unity/Launcher/launcheritem.cpp:43
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,55 +32,55 @@ msgstr "Askatu lasterbidea"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Amaitu saioa"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Ziur saioa amaitu nahi duzula?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Ez"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Bai"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Itzali"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Ziur itzali nahi duzula?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Berrabiarazi"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Ziur berrabiarazi nahi duzula?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Energia"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
75−msgstr ""
75+msgstr "Ziur itzali nahi duzula?"
7676
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
7878msgid "Power off"
79−msgstr ""
79+msgstr "Itzali"
8080
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
8282msgid "Cancel"
83−msgstr ""
83+msgstr "Utzi"
8484
8585#: qml/Components/EdgeDemoOverlay.qml:151
8686msgid "Skip intro"
@@ -135,11 +135,11 @@ msgstr ""
135135
136136#: qml/Components/Lockscreen.qml:167
137137msgid "Please wait"
138−msgstr ""
138+msgstr "Itxaron"
139139
140140#: qml/Components/Lockscreen.qml:172
141141msgid "Too many incorrect attempts"
142−msgstr ""
142+msgstr "Okerreko saiakera gehiegi"
143143
144144#: qml/Components/Lockscreen.qml:206
145145msgid "Emergency Call"
@@ -166,21 +166,22 @@ msgstr "Ikusi gutxiago"
166166msgid "See all"
167167msgstr "Ikusi guztiak"
168168
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
169+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
170+#: qml/Panel/SearchIndicator.qml:27
170171msgid "Search"
171172msgstr "Bilatu"
172173
173174#: qml/Dash/PageHeader.qml:270
174175msgid "Settings"
175−msgstr ""
176+msgstr "Ezarpenak"
176177
177178#: qml/Dash/PageHeader.qml:279
178179msgid "Remove from Favorites"
179−msgstr ""
180+msgstr "Kendu gogokoetatik"
180181
181182#: qml/Dash/PageHeader.qml:279
182183msgid "Add to Favorites"
183−msgstr ""
184+msgstr "Gehitu gogokoetara"
184185
185186#: qml/Dash/Previews/PreviewActionCombo.qml:34
186187msgid "More..."
@@ -204,29 +205,29 @@ msgstr "Bidali"
204205
205206#: qml/Dash/ScopesOverview.qml:201
206207msgid "Manage Dash"
207−msgstr ""
208+msgstr "Kudeatu abio-leihoa"
208209
209−#: qml/Dash/ScopesOverview.qml:408
210+#: qml/Dash/ScopesOverview.qml:417
210211msgid "Done"
211−msgstr ""
212+msgstr "Eginda"
212213
213−#: qml/Dash/ScopesOverview.qml:434
214+#: qml/Dash/ScopesOverview.qml:443
214215msgid "Store"
215−msgstr ""
216+msgstr "Denda"
216217
217218#: qml/Dash/ScopesOverviewTab.qml:36
218219msgid "Favorites"
219−msgstr ""
220+msgstr "Gogokoak"
220221
221222#: qml/Dash/ScopesOverviewTab.qml:54
222223msgid "All"
223−msgstr ""
224+msgstr "Guztiak"
224225
225226#: qml/Greeter/Greeter.qml:157
226227msgid "Swipe to unlock"
227228msgstr "Pasatu hatza desblokeatzeko"
228229
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
230+#: qml/Hud/HudParametrizedActionsPage.qml:139
230231msgid "Confirm"
231232msgstr "Baieztatu"
232233
@@ -252,11 +253,11 @@ msgstr "Erakutsi pasahitza"
252253
253254#: qml/Notifications/NotificationMenuItemFactory.qml:120
254255msgid "Enter SIM PIN"
255−msgstr ""
256+msgstr "Sartu SIM PINa"
256257
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258259msgid "Sorry, incorrect PIN"
259−msgstr ""
260+msgstr "Sentitzen dugu, PINa okerrekoa da"
260261
261262#: qml/Panel/ActiveCallHint.qml:77
262263msgid "Tap to return to call..."
@@ -292,58 +293,62 @@ msgstr "Huts egin du, sakatu berriro saiatzeko"
292293
293294#: qml/Panel/Indicators/ModemInfoItem.qml:105
294295msgid "Unlock SIM"
295−msgstr ""
296+msgstr "Desblokeatu SIMa"
296297
297298#: qml/Panel/Indicators/RoamingIndication.qml:27
298299msgid "Roaming"
299−msgstr ""
300+msgstr "Ibiltaritza"
300301
301−#: qml/Shell.qml:266
302+#: qml/Shell.qml:279
302303msgid "Enter your passphrase"
303−msgstr ""
304+msgstr "Sartu pasaesaldia"
304305
305−#: qml/Shell.qml:267
306+#: qml/Shell.qml:280
306307msgid "Sorry, incorrect passphrase"
307−msgstr ""
308+msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
308309
309310#: qml/Shell.qml:282
310311msgid "Enter your passcode"
311−msgstr ""
312+msgstr "Sartu pasakodea"
312313
313314#: qml/Shell.qml:283
314315msgid "Sorry, incorrect passcode"
315−msgstr ""
316+msgstr "Sentitzen dugu, pasakodea okerrekoa da"
316317
317−#: qml/Shell.qml:273
318+#: qml/Shell.qml:286
318319#, qt-format
319320msgid "Enter your %1"
320−msgstr ""
321+msgstr "Sartu %1"
321322
322−#: qml/Shell.qml:274
323+#: qml/Shell.qml:287
323324#, qt-format
324325msgid "Sorry, incorrect %1"
325−msgstr ""
326+msgstr "Sentitzen dugu, %1 okerrekoa da"
326327
327−#: qml/Shell.qml:310
328+#: qml/Shell.qml:323
328329msgid "Sorry, incorrect passphrase."
329−msgstr ""
330+msgstr "Sentitzen dugu, pasaesaldia okerrekoa da."
330331
331−#: qml/Shell.qml:311
332+#: qml/Shell.qml:324
332333msgid "Sorry, incorrect passcode."
333−msgstr ""
334+msgstr "Sentitzen dugu, pasakodea okerrekoa da."
334335
335−#: qml/Shell.qml:312
336+#: qml/Shell.qml:325
336337msgid "This will be your last attempt."
337−msgstr ""
338+msgstr "Hau duzu azken saiakera."
338339
339−#: qml/Shell.qml:314
340+#: qml/Shell.qml:327
340341msgid ""
341342"If passphrase is entered incorrectly, your phone will conduct a factory "
342343"reset and all personal data will be deleted."
343344msgstr ""
345+"Okerreko pasaesaldia sartzen baduzu, telefonoaren jatorrizko ezarpenak "
346+"berrezarri eta datu pertsonal guztiak ezabatuko dira."
344347
345−#: qml/Shell.qml:315
348+#: qml/Shell.qml:328
346349msgid ""
347350"If passcode is entered incorrectly, your phone will conduct a factory reset "
348351"and all personal data will be deleted."
349352msgstr ""
353+"Okerreko pasakodea sartzen baduzu, telefonoaren jatorrizko ezarpenak "
354+"berrezarri eta datu pertsonal guztiak ezabatuko dira."
po/fi.po+40−46
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 18:32+0000\n"
12−"Last-Translator: Jiri Grönroos <Unknown>\n"
11+"PO-Revision-Date: 2014-08-28 13:47+0000\n"
12+"Last-Translator: Timo Jyrinki <timo.jyrinki@canonical.com>\n"
1313"Language-Team: Finnish <fi@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Salasana: "
2323
@@ -32,53 +32,55 @@ msgstr "Poista pikakuvakkeen kiinnitys"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Kirjaudu ulos"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Haluatko varmasti kirjautua ulos?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Ei"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Kyllä"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Sammuta"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Haluatko varmasti sammuttaa laitteen?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Käynnistä uudelleen"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Haluatko varmasti käynnistää laitteen uudelleen?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Virran katkaisu"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Haluatko varmasti\n"
77+"sammuttaa laitteen?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Sammuta"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Peru"
8486
@@ -163,21 +165,22 @@ msgstr "Näytä vähemmän"
163165msgid "See all"
164166msgstr "Näytä kaikki"
165167
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
168+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
169+#: qml/Panel/SearchIndicator.qml:27
167170msgid "Search"
168171msgstr "Hae"
169172
170173#: qml/Dash/PageHeader.qml:270
171174msgid "Settings"
172−msgstr ""
175+msgstr "Asetukset"
173176
174177#: qml/Dash/PageHeader.qml:279
175178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Poista suosikeista"
177180
178181#: qml/Dash/PageHeader.qml:279
179182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Lisää suosikkeihin"
181184
182185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Lähetä"
203206msgid "Manage Dash"
204207msgstr "Unityn hallinta"
205208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207210msgid "Done"
208211msgstr "Valmis"
209212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211214msgid "Store"
212215msgstr "Kauppa"
213216
@@ -223,7 +226,7 @@ msgstr "Kaikki"
223226msgid "Swipe to unlock"
224227msgstr "Avaa pyyhkäisemällä"
225228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227230msgid "Confirm"
228231msgstr "Hyväksy"
229232
@@ -251,7 +254,7 @@ msgstr "Näytä salasana"
251254msgid "Enter SIM PIN"
252255msgstr "Anna SIM-kortin PIN-koodi"
253256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255258msgid "Sorry, incorrect PIN"
256259msgstr "Väärä PIN-koodi"
257260
@@ -295,45 +298,45 @@ msgstr "Avaa SIM-kortin lukitus"
295298msgid "Roaming"
296299msgstr "Verkkovierailu"
297300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299302msgid "Enter your passphrase"
300303msgstr "Anna tunnuslause"
301304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303306msgid "Sorry, incorrect passphrase"
304307msgstr "Virheellinen tunnuslause"
305308
306309#: qml/Shell.qml:282
307310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Anna suojakoodi"
309312
310313#: qml/Shell.qml:283
311314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Väärä suojakoodi"
313316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315318#, qt-format
316319msgid "Enter your %1"
317320msgstr "Anna %1"
318321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320323#, qt-format
321324msgid "Sorry, incorrect %1"
322325msgstr "Väärä %1"
323326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325328msgid "Sorry, incorrect passphrase."
326329msgstr "Virheellinen tunnuslause."
327330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329332msgid "Sorry, incorrect passcode."
330−msgstr "Virheellinen tunnuskoodi."
333+msgstr "Virheellinen suojakoodi."
331334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333336msgid "This will be your last attempt."
334337msgstr "Tämä on viimeinen yritys."
335338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337340msgid ""
338341"If passphrase is entered incorrectly, your phone will conduct a factory "
339342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341344"Jos kirjoitat tunnuslauseen virheellisesti, puhelimesi palautetaan "
342345"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
343346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345348msgid ""
346349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347350"and all personal data will be deleted."
348351msgstr ""
349−"Jos kirjoitat tunnuskoodin virheellisesti, puhelimesi palautetaan "
352+"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
350353"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
351−
352−#~ msgid "Are you sure you would like to turn power off?"
353−#~ msgstr "Haluatko varmasti sammuttaa laitteen?"
354−
355−#~ msgid "Restart"
356−#~ msgstr "Käynnistä uudelleen"
357−
358−#~ msgid "Enter your PIN"
359−#~ msgstr "Anna PIN-koodi"
po/fr.po+37−45
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 17:24+0000\n"
12−"Last-Translator: Jean Marc <Unknown>\n"
11+"PO-Revision-Date: 2014-08-29 10:31+0000\n"
12+"Last-Translator: Sébastien Maes <nautilussebastien@gmail.com>\n"
1313"Language-Team: French <fr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Mot de passe : "
2323
@@ -32,37 +32,37 @@ msgstr "Détacher le raccourci"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Se déconnecter"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Êtes-vous sûr de vouloir vous déconnecter ?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Non"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Oui"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Éteindre"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Êtes-vous sûr de vouloir éteindre ?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Redémarrer"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Êtes-vous sûr de vouloir redémarrer ?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
@@ -74,11 +74,11 @@ msgid ""
7474"to power off?"
7575msgstr ""
7676
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
7878msgid "Power off"
7979msgstr "Éteindre"
8080
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
8282msgid "Cancel"
8383msgstr "Annuler"
8484
@@ -170,21 +170,22 @@ msgstr "Voir moins"
170170msgid "See all"
171171msgstr "Tout voir"
172172
173−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
173+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
174+#: qml/Panel/SearchIndicator.qml:27
174175msgid "Search"
175176msgstr "Rechercher"
176177
177178#: qml/Dash/PageHeader.qml:270
178179msgid "Settings"
179−msgstr ""
180+msgstr "Paramètres"
180181
181182#: qml/Dash/PageHeader.qml:279
182183msgid "Remove from Favorites"
183−msgstr ""
184+msgstr "Retirer des favoris"
184185
185186#: qml/Dash/PageHeader.qml:279
186187msgid "Add to Favorites"
187−msgstr ""
188+msgstr "Ajouter aux favoris"
188189
189190#: qml/Dash/Previews/PreviewActionCombo.qml:34
190191msgid "More..."
@@ -210,11 +211,11 @@ msgstr "Envoyer"
210211msgid "Manage Dash"
211212msgstr "Gérer le tableau de bord"
212213
213−#: qml/Dash/ScopesOverview.qml:408
214+#: qml/Dash/ScopesOverview.qml:417
214215msgid "Done"
215216msgstr "Terminé"
216217
217−#: qml/Dash/ScopesOverview.qml:434
218+#: qml/Dash/ScopesOverview.qml:443
218219msgid "Store"
219220msgstr ""
220221
@@ -230,7 +231,7 @@ msgstr "Toutes"
230231msgid "Swipe to unlock"
231232msgstr "Faites glisser pour déverrouiller"
232233
233−#: qml/Hud/HudParametrizedActionsPage.qml:132
234+#: qml/Hud/HudParametrizedActionsPage.qml:139
234235msgid "Confirm"
235236msgstr "Confirmez"
236237
@@ -258,7 +259,7 @@ msgstr "Afficher le mot de passe"
258259msgid "Enter SIM PIN"
259260msgstr "Entrez le code PIN de la SIM"
260261
261−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
262+#: qml/Notifications/NotificationMenuItemFactory.qml:121
262263msgid "Sorry, incorrect PIN"
263264msgstr "Désolé, code PIN incorrect"
264265
@@ -302,45 +303,45 @@ msgstr "Déverrouiller la carte SIM"
302303msgid "Roaming"
303304msgstr "Roaming"
304305
305−#: qml/Shell.qml:266
306+#: qml/Shell.qml:279
306307msgid "Enter your passphrase"
307−msgstr ""
308+msgstr "Entrez votre phrase secrète"
308309
309−#: qml/Shell.qml:267
310+#: qml/Shell.qml:280
310311msgid "Sorry, incorrect passphrase"
311−msgstr ""
312+msgstr "Désolé, phrase secrète incorrecte"
312313
313314#: qml/Shell.qml:282
314315msgid "Enter your passcode"
315−msgstr ""
316+msgstr "Entrez votre code"
316317
317318#: qml/Shell.qml:283
318319msgid "Sorry, incorrect passcode"
319−msgstr ""
320+msgstr "Désolé, code incorrect"
320321
321−#: qml/Shell.qml:273
322+#: qml/Shell.qml:286
322323#, qt-format
323324msgid "Enter your %1"
324325msgstr "Saisissez votre %1"
325326
326−#: qml/Shell.qml:274
327+#: qml/Shell.qml:287
327328#, qt-format
328329msgid "Sorry, incorrect %1"
329330msgstr "Désolé, %1 incorrect"
330331
331−#: qml/Shell.qml:310
332+#: qml/Shell.qml:323
332333msgid "Sorry, incorrect passphrase."
333334msgstr "Désolé, phrase secrète incorrecte."
334335
335−#: qml/Shell.qml:311
336+#: qml/Shell.qml:324
336337msgid "Sorry, incorrect passcode."
337338msgstr "Désolé, code incorrect."
338339
339−#: qml/Shell.qml:312
340+#: qml/Shell.qml:325
340341msgid "This will be your last attempt."
341342msgstr "Ceci sera votre dernière tentative."
342343
343−#: qml/Shell.qml:314
344+#: qml/Shell.qml:327
344345msgid ""
345346"If passphrase is entered incorrectly, your phone will conduct a factory "
346347"reset and all personal data will be deleted."
@@ -349,7 +350,7 @@ msgstr ""
349350"effectuera une réinitialisation aux paramètres d'usine et toutes les données "
350351"personnelles seront supprimées."
351352
352−#: qml/Shell.qml:315
353+#: qml/Shell.qml:328
353354msgid ""
354355"If passcode is entered incorrectly, your phone will conduct a factory reset "
355356"and all personal data will be deleted."
@@ -357,12 +358,3 @@ msgstr ""
357358"Si le code est saisi de manière incorrecte, votre téléphone effectuera une "
358359"réinitialisation aux paramètres d'usine et toutes les données personnelles "
359360"seront supprimées."
360−
361−#~ msgid "Restart"
362−#~ msgstr "Redémarrer"
363−
364−#~ msgid "Are you sure you would like to turn power off?"
365−#~ msgstr "Êtes-vous sûr de vouloir éteindre ?"
366−
367−#~ msgid "Enter your PIN"
368−#~ msgstr "Entrez votre code PIN"
po/hu.po+37−43
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 15:34+0000\n"
11+"PO-Revision-Date: 2014-08-30 08:11+0000\n"
1212"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
1313"Language-Team: Hungarian <hu@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-31 07:30+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Jelszó: "
2323
@@ -32,53 +32,55 @@ msgstr "Indító feloldása"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Kijelentkezés"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Biztos benne, hogy kijelentkezik?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Nem"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Igen"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Leállítás"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Biztosan le szeretné állítani?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Újraindítás"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Biztosan újra szeretné indítani?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Kikapcsolás"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Biztos benne, hogy ki\n"
77+"szeretné kapcsolni?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Kikapcsolás"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Mégse"
8486
@@ -165,21 +167,22 @@ msgstr "Kevesebb"
165167msgid "See all"
166168msgstr "Összes megtekintése"
167169
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
170+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
171+#: qml/Panel/SearchIndicator.qml:27
169172msgid "Search"
170173msgstr "Keresés"
171174
172175#: qml/Dash/PageHeader.qml:270
173176msgid "Settings"
174−msgstr ""
177+msgstr "Beállítások"
175178
176179#: qml/Dash/PageHeader.qml:279
177180msgid "Remove from Favorites"
178−msgstr ""
181+msgstr "Eltávolítás a kedvencek közül"
179182
180183#: qml/Dash/PageHeader.qml:279
181184msgid "Add to Favorites"
182−msgstr ""
185+msgstr "Hozzáadás a kedvencekhez"
183186
184187#: qml/Dash/Previews/PreviewActionCombo.qml:34
185188msgid "More..."
@@ -205,11 +208,11 @@ msgstr "Küldés"
205208msgid "Manage Dash"
206209msgstr "Dash kezelése"
207210
208−#: qml/Dash/ScopesOverview.qml:408
211+#: qml/Dash/ScopesOverview.qml:417
209212msgid "Done"
210213msgstr "Kész"
211214
212−#: qml/Dash/ScopesOverview.qml:434
215+#: qml/Dash/ScopesOverview.qml:443
213216msgid "Store"
214217msgstr "Áruház"
215218
@@ -225,7 +228,7 @@ msgstr "Összes"
225228msgid "Swipe to unlock"
226229msgstr "Csúsztasson a feloldáshoz"
227230
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
231+#: qml/Hud/HudParametrizedActionsPage.qml:139
229232msgid "Confirm"
230233msgstr "Megerősítés"
231234
@@ -253,7 +256,7 @@ msgstr "Jelszó megjelenítése"
253256msgid "Enter SIM PIN"
254257msgstr "Adja meg a SIM PIN kódját"
255258
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259+#: qml/Notifications/NotificationMenuItemFactory.qml:121
257260msgid "Sorry, incorrect PIN"
258261msgstr "Sajnáljuk, helytelen PIN"
259262
@@ -297,45 +300,45 @@ msgstr "SIM feloldása"
297300msgid "Roaming"
298301msgstr "Barangolás"
299302
300−#: qml/Shell.qml:266
303+#: qml/Shell.qml:279
301304msgid "Enter your passphrase"
302305msgstr "Adja meg a jelmondatot"
303306
304−#: qml/Shell.qml:267
307+#: qml/Shell.qml:280
305308msgid "Sorry, incorrect passphrase"
306309msgstr "Sajnáljuk, helytelen jelmondat"
307310
308311#: qml/Shell.qml:282
309312msgid "Enter your passcode"
310−msgstr ""
313+msgstr "Adja meg a jelkódját"
311314
312315#: qml/Shell.qml:283
313316msgid "Sorry, incorrect passcode"
314−msgstr ""
317+msgstr "Sajnáljuk, helytelen jelkód"
315318
316−#: qml/Shell.qml:273
319+#: qml/Shell.qml:286
317320#, qt-format
318321msgid "Enter your %1"
319322msgstr "Kérjük adja meg: %1"
320323
321−#: qml/Shell.qml:274
324+#: qml/Shell.qml:287
322325#, qt-format
323326msgid "Sorry, incorrect %1"
324327msgstr "Sajnáljuk, helytelen %1"
325328
326−#: qml/Shell.qml:310
329+#: qml/Shell.qml:323
327330msgid "Sorry, incorrect passphrase."
328331msgstr "Sajnáljuk, helytelen jelmondat."
329332
330−#: qml/Shell.qml:311
333+#: qml/Shell.qml:324
331334msgid "Sorry, incorrect passcode."
332335msgstr "Sajnáljuk, helytelen jelkód."
333336
334−#: qml/Shell.qml:312
337+#: qml/Shell.qml:325
335338msgid "This will be your last attempt."
336339msgstr "Ez az utolsó próbálkozási lehetősége."
337340
338−#: qml/Shell.qml:314
341+#: qml/Shell.qml:327
339342msgid ""
340343"If passphrase is entered incorrectly, your phone will conduct a factory "
341344"reset and all personal data will be deleted."
@@ -343,19 +346,10 @@ msgstr ""
343346"Ha helytelen jelmondatot ad meg, a telefonja visszaállítja a gyári "
344347"beállításokat és törli minden személyes adatát."
345348
346−#: qml/Shell.qml:315
349+#: qml/Shell.qml:328
347350msgid ""
348351"If passcode is entered incorrectly, your phone will conduct a factory reset "
349352"and all personal data will be deleted."
350353msgstr ""
351354"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
352355"beállításokat és törli minden személyes adatát."
353−
354−#~ msgid "Restart"
355−#~ msgstr "Újraindítás"
356−
357−#~ msgid "Are you sure you would like to turn power off?"
358−#~ msgstr "Biztos benne, hogy ki szeretné kapcsolni?"
359−
360−#~ msgid "Enter your PIN"
361−#~ msgstr "Adja meg a PIN kódot"
po/it.po+37−43
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-23 07:47+0000\n"
11+"PO-Revision-Date: 2014-08-28 15:31+0000\n"
1212"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
1313"Language-Team: Italian <it@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Password: "
2323
@@ -32,53 +32,55 @@ msgstr "Sblocca scorciatoia"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Termina sessione"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Terminare veramente la sessione?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "No"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Sì"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Spegni"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Spegnere veramente il dispositivo?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Riavvia"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Riavviare veramente il dispositivo?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Alimentazione"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Spegnere veramente\n"
77+"il dispositivo?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Spegni"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Annulla"
8486
@@ -168,21 +170,22 @@ msgstr "Mostra meno"
168170msgid "See all"
169171msgstr "Mostra tutto"
170172
171−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
173+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
174+#: qml/Panel/SearchIndicator.qml:27
172175msgid "Search"
173176msgstr "Cerca"
174177
175178#: qml/Dash/PageHeader.qml:270
176179msgid "Settings"
177−msgstr ""
180+msgstr "Impostazioni"
178181
179182#: qml/Dash/PageHeader.qml:279
180183msgid "Remove from Favorites"
181−msgstr ""
184+msgstr "Rimuovi dai preferiti"
182185
183186#: qml/Dash/PageHeader.qml:279
184187msgid "Add to Favorites"
185−msgstr ""
188+msgstr "Aggiungi ai preferiti"
186189
187190#: qml/Dash/Previews/PreviewActionCombo.qml:34
188191msgid "More..."
@@ -208,11 +211,11 @@ msgstr "Invia"
208211msgid "Manage Dash"
209212msgstr "Gestione della Dash"
210213
211−#: qml/Dash/ScopesOverview.qml:408
214+#: qml/Dash/ScopesOverview.qml:417
212215msgid "Done"
213216msgstr "Fatto"
214217
215−#: qml/Dash/ScopesOverview.qml:434
218+#: qml/Dash/ScopesOverview.qml:443
216219msgid "Store"
217220msgstr "Store"
218221
@@ -228,7 +231,7 @@ msgstr "Tutto"
228231msgid "Swipe to unlock"
229232msgstr "Scorrere per sbloccare"
230233
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
234+#: qml/Hud/HudParametrizedActionsPage.qml:139
232235msgid "Confirm"
233236msgstr "Conferma"
234237
@@ -256,7 +259,7 @@ msgstr "Mostra password"
256259msgid "Enter SIM PIN"
257260msgstr "Inserire il PIN della SIM"
258261
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
262+#: qml/Notifications/NotificationMenuItemFactory.qml:121
260263msgid "Sorry, incorrect PIN"
261264msgstr "PIN errato"
262265
@@ -300,45 +303,45 @@ msgstr "Sblocca SIM"
300303msgid "Roaming"
301304msgstr "Roaming"
302305
303−#: qml/Shell.qml:266
306+#: qml/Shell.qml:279
304307msgid "Enter your passphrase"
305308msgstr "Digitare la passphrase"
306309
307−#: qml/Shell.qml:267
310+#: qml/Shell.qml:280
308311msgid "Sorry, incorrect passphrase"
309312msgstr "Passphrase errata"
310313
311314#: qml/Shell.qml:282
312315msgid "Enter your passcode"
313−msgstr ""
316+msgstr "Inserire il passcode"
314317
315318#: qml/Shell.qml:283
316319msgid "Sorry, incorrect passcode"
317−msgstr ""
320+msgstr "Passcode non corretto"
318321
319−#: qml/Shell.qml:273
322+#: qml/Shell.qml:286
320323#, qt-format
321324msgid "Enter your %1"
322325msgstr "Inserire %1"
323326
324−#: qml/Shell.qml:274
327+#: qml/Shell.qml:287
325328#, qt-format
326329msgid "Sorry, incorrect %1"
327330msgstr "%1 non corretto"
328331
329−#: qml/Shell.qml:310
332+#: qml/Shell.qml:323
330333msgid "Sorry, incorrect passphrase."
331334msgstr "Passphrase non corretta"
332335
333−#: qml/Shell.qml:311
336+#: qml/Shell.qml:324
334337msgid "Sorry, incorrect passcode."
335338msgstr "Passcode non corretto"
336339
337−#: qml/Shell.qml:312
340+#: qml/Shell.qml:325
338341msgid "This will be your last attempt."
339342msgstr "Questo sarà l'ultimo tentativo."
340343
341−#: qml/Shell.qml:314
344+#: qml/Shell.qml:327
342345msgid ""
343346"If passphrase is entered incorrectly, your phone will conduct a factory "
344347"reset and all personal data will be deleted."
@@ -346,19 +349,10 @@ msgstr ""
346349"Se verrà inserita una passphrase errata, il telefono eseguirà un ripristino "
347350"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
348351
349−#: qml/Shell.qml:315
352+#: qml/Shell.qml:328
350353msgid ""
351354"If passcode is entered incorrectly, your phone will conduct a factory reset "
352355"and all personal data will be deleted."
353356msgstr ""
354357"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
355358"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
356−
357−#~ msgid "Are you sure you would like to turn power off?"
358−#~ msgstr "Spegnere veramente il dispositivo?"
359−
360−#~ msgid "Restart"
361−#~ msgstr "Riavvia"
362−
363−#~ msgid "Enter your PIN"
364−#~ msgstr "Inserire il PIN"
po/ja.po+37−42
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-18 15:03+0000\n"
11+"PO-Revision-Date: 2014-09-01 06:20+0000\n"
1212"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
1313"Language-Team: Japanese <ja@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-02 07:20+0000\n"
18+"X-Generator: Launchpad (build 17192)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "パスワード: "
2323
@@ -32,7 +32,7 @@ msgstr "ショートカットを削除する"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "ログアウト"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
@@ -41,16 +41,16 @@ msgstr ""
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "いいえ"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "はい"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "シャットダウン"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
@@ -58,7 +58,7 @@ msgstr ""
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "再起動"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
@@ -74,11 +74,11 @@ msgid ""
7474"to power off?"
7575msgstr ""
7676
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
7878msgid "Power off"
7979msgstr "電源を切る"
8080
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
8282msgid "Cancel"
8383msgstr "キャンセル"
8484
@@ -156,27 +156,28 @@ msgstr "こんにちは"
156156
157157#: qml/Dash/GenericScopeView.qml:361
158158msgid "See less"
159−msgstr ""
159+msgstr "隠す"
160160
161161#: qml/Dash/GenericScopeView.qml:361
162162msgid "See all"
163163msgstr "すべて表示する"
164164
165−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
165+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
166+#: qml/Panel/SearchIndicator.qml:27
166167msgid "Search"
167168msgstr "検索"
168169
169170#: qml/Dash/PageHeader.qml:270
170171msgid "Settings"
171−msgstr ""
172+msgstr "設定"
172173
173174#: qml/Dash/PageHeader.qml:279
174175msgid "Remove from Favorites"
175−msgstr ""
176+msgstr "お気に入りから削除する"
176177
177178#: qml/Dash/PageHeader.qml:279
178179msgid "Add to Favorites"
179−msgstr ""
180+msgstr "お気に入りに追加する"
180181
181182#: qml/Dash/Previews/PreviewActionCombo.qml:34
182183msgid "More..."
@@ -202,11 +203,11 @@ msgstr "送信"
202203msgid "Manage Dash"
203204msgstr "Dashの管理"
204205
205−#: qml/Dash/ScopesOverview.qml:408
206+#: qml/Dash/ScopesOverview.qml:417
206207msgid "Done"
207208msgstr "完了"
208209
209−#: qml/Dash/ScopesOverview.qml:434
210+#: qml/Dash/ScopesOverview.qml:443
210211msgid "Store"
211212msgstr "保存"
212213
@@ -222,7 +223,7 @@ msgstr "すべて"
222223msgid "Swipe to unlock"
223224msgstr "スワイプしてロック解除"
224225
225−#: qml/Hud/HudParametrizedActionsPage.qml:132
226+#: qml/Hud/HudParametrizedActionsPage.qml:139
226227msgid "Confirm"
227228msgstr "確認"
228229
@@ -250,7 +251,7 @@ msgstr "パスワードを表示"
250251msgid "Enter SIM PIN"
251252msgstr ""
252253
253−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
254+#: qml/Notifications/NotificationMenuItemFactory.qml:121
254255msgid "Sorry, incorrect PIN"
255256msgstr ""
256257
@@ -260,11 +261,11 @@ msgstr "タップすると通話に戻ります..."
260261
261262#: qml/Panel/ActiveCallHint.qml:90
262263msgid "Conference"
263−msgstr ""
264+msgstr "グループ通話"
264265
265266#: qml/Panel/Indicators/MenuItemFactory.qml:651
266267msgid "In queue…"
267−msgstr ""
268+msgstr "開始待ち..."
268269
269270#: qml/Panel/Indicators/MenuItemFactory.qml:655
270271msgid "Downloading"
@@ -276,11 +277,11 @@ msgstr "停止中、再開するにはタップしてください"
276277
277278#: qml/Panel/Indicators/MenuItemFactory.qml:659
278279msgid "Canceled"
279−msgstr ""
280+msgstr "中止しました"
280281
281282#: qml/Panel/Indicators/MenuItemFactory.qml:661
282283msgid "Finished"
283−msgstr ""
284+msgstr "完了しました"
284285
285286#: qml/Panel/Indicators/MenuItemFactory.qml:663
286287msgid "Failed, tap to retry"
@@ -294,11 +295,11 @@ msgstr "SIMのアンロック"
294295msgid "Roaming"
295296msgstr "ローミング"
296297
297−#: qml/Shell.qml:266
298+#: qml/Shell.qml:279
298299msgid "Enter your passphrase"
299300msgstr ""
300301
301−#: qml/Shell.qml:267
302+#: qml/Shell.qml:280
302303msgid "Sorry, incorrect passphrase"
303304msgstr ""
304305
@@ -308,44 +309,38 @@ msgstr ""
308309
309310#: qml/Shell.qml:283
310311msgid "Sorry, incorrect passcode"
311−msgstr ""
312+msgstr "ごめんなさい、誤ったパスコードです"
312313
313−#: qml/Shell.qml:273
314+#: qml/Shell.qml:286
314315#, qt-format
315316msgid "Enter your %1"
316317msgstr "%1を入力してください"
317318
318−#: qml/Shell.qml:274
319+#: qml/Shell.qml:287
319320#, qt-format
320321msgid "Sorry, incorrect %1"
321322msgstr ""
322323
323−#: qml/Shell.qml:310
324+#: qml/Shell.qml:323
324325msgid "Sorry, incorrect passphrase."
325326msgstr "パスフレーズが間違っています。"
326327
327−#: qml/Shell.qml:311
328+#: qml/Shell.qml:324
328329msgid "Sorry, incorrect passcode."
329330msgstr "パスコードが間違っています。"
330331
331−#: qml/Shell.qml:312
332+#: qml/Shell.qml:325
332333msgid "This will be your last attempt."
333334msgstr "これが最後のチャンスです。"
334335
335−#: qml/Shell.qml:314
336+#: qml/Shell.qml:327
336337msgid ""
337338"If passphrase is entered incorrectly, your phone will conduct a factory "
338339"reset and all personal data will be deleted."
339−msgstr ""
340+msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
340341
341−#: qml/Shell.qml:315
342+#: qml/Shell.qml:328
342343msgid ""
343344"If passcode is entered incorrectly, your phone will conduct a factory reset "
344345"and all personal data will be deleted."
345−msgstr ""
346−
347−#~ msgid "Are you sure you would like to turn power off?"
348−#~ msgstr "本当に電源を切りますか?"
349−
350−#~ msgid "Restart"
351−#~ msgstr "再起動"
346+msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
po/nb.po+40−46
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 15:52+0000\n"
11+"PO-Revision-Date: 2014-08-28 16:54+0000\n"
1212"Last-Translator: Åka Sikrom <Unknown>\n"
1313"Language-Team: Norwegian Bokmal <nb@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Passord: "
2323
@@ -32,53 +32,55 @@ msgstr "Fjern snarvei"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Logg ut"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Er du sikker på at du vil logge ut?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Nei"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Ja"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Slå av"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Er du sikker på at du vil slå av?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Start på nytt"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Er du sikker på at du vil starte på nytt?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Strøm"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Er du sikker på at du vil \n"
77+"skru av?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Slå av"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Avbryt"
8486
@@ -116,11 +118,11 @@ msgstr "Venstre kant"
116118
117119#: qml/Components/EdgeDemo.qml:199
118120msgid "Swipe from the left to reveal the launcher for quick access to apps"
119−msgstr "Sveip fra venstre for å få tilgang til programoppstarteren"
121+msgstr "Skyv fra venstre for å få tilgang til programoppstarteren"
120122
121123#: qml/Components/EdgeDemo.qml:226
122124msgid "Well done"
123−msgstr "Bra jobba"
125+msgstr "Godt jobba"
124126
125127#: qml/Components/EdgeDemo.qml:227
126128msgid ""
@@ -163,21 +165,22 @@ msgstr "Vis mindre"
163165msgid "See all"
164166msgstr "Vis alt"
165167
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
168+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
169+#: qml/Panel/SearchIndicator.qml:27
167170msgid "Search"
168171msgstr "Søk"
169172
170173#: qml/Dash/PageHeader.qml:270
171174msgid "Settings"
172−msgstr ""
175+msgstr "Innstillinger"
173176
174177#: qml/Dash/PageHeader.qml:279
175178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Fjern fra favoritter"
177180
178181#: qml/Dash/PageHeader.qml:279
179182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Legg til i favoritter"
181184
182185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Send"
203206msgid "Manage Dash"
204207msgstr "Håndter dashbord"
205208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207210msgid "Done"
208211msgstr "Ferdig"
209212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211214msgid "Store"
212215msgstr "Butikk"
213216
@@ -221,9 +224,9 @@ msgstr "Alt"
221224
222225#: qml/Greeter/Greeter.qml:157
223226msgid "Swipe to unlock"
224−msgstr "Sveip for å låse opp"
227+msgstr "Skyv for å låse opp"
225228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227230msgid "Confirm"
228231msgstr "Bekreft"
229232
@@ -251,7 +254,7 @@ msgstr "Vis passord"
251254msgid "Enter SIM PIN"
252255msgstr "Tast SIM-kortets PIN-kode"
253256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255258msgid "Sorry, incorrect PIN"
256259msgstr "Feil PIN"
257260
@@ -295,45 +298,45 @@ msgstr "Lås opp SIM"
295298msgid "Roaming"
296299msgstr "Fremmednett"
297300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299302msgid "Enter your passphrase"
300303msgstr "Skriv inn passordfrasen din"
301304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303306msgid "Sorry, incorrect passphrase"
304307msgstr "Feil passordfrase"
305308
306309#: qml/Shell.qml:282
307310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Tast koden din"
309312
310313#: qml/Shell.qml:283
311314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Feil kode"
313316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315318#, qt-format
316319msgid "Enter your %1"
317320msgstr "Skriv inn %1"
318321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320323#, qt-format
321324msgid "Sorry, incorrect %1"
322325msgstr "Feil %1"
323326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325328msgid "Sorry, incorrect passphrase."
326329msgstr "Feil passordfrase."
327330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329332msgid "Sorry, incorrect passcode."
330333msgstr "Feil kode."
331334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333336msgid "This will be your last attempt."
334337msgstr "Dette er ditt siste forsøk."
335338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337340msgid ""
338341"If passphrase is entered incorrectly, your phone will conduct a factory "
339342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341344"Hvis du skriver feil passordfrase en gang til, tilbakestilles telefonen til "
342345"fabrikkinnstillinger, og alle personlige data slettes."
343346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345348msgid ""
346349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347350"and all personal data will be deleted."
348351msgstr ""
349352"Hvis du skriver feil kode en gang til, tilbakestilles telefonen til "
350353"fabrikkinnstillinger, og alle personlige data slettes."
351−
352−#~ msgid "Are you sure you would like to turn power off?"
353−#~ msgstr "Er du sikker på at du vil slå av?"
354−
355−#~ msgid "Restart"
356−#~ msgstr "Start på nytt"
357−
358−#~ msgid "Enter your PIN"
359−#~ msgstr "Tast PIN-koden din"
po/nl.po+39−45
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 19:39+0000\n"
11+"PO-Revision-Date: 2014-08-30 18:22+0000\n"
1212"Last-Translator: rob <linuxned@gmail.com>\n"
1313"Language-Team: Dutch <nl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-31 07:30+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Wachtwoord: "
2323
@@ -32,53 +32,55 @@ msgstr "Snelkoppeling losmaken"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Afmelden"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Weet u zeker dat u zich wilt afmelden?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Nee"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Ja"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Uitschakelen"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Weet u zeker dat u het apparaat wilt uitschakelen?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Herstarten"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Weet u zeker dat u het apparaat wilt herstarten?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Energie"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Weet u zeker dat u het apparaat\n"
77+"wilt uitschakelen?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Uitschakelen"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Annuleren"
8486
@@ -163,21 +165,22 @@ msgstr "Minder zien"
163165msgid "See all"
164166msgstr "Alles zien"
165167
166−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
168+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
169+#: qml/Panel/SearchIndicator.qml:27
167170msgid "Search"
168171msgstr "Zoeken"
169172
170173#: qml/Dash/PageHeader.qml:270
171174msgid "Settings"
172−msgstr ""
175+msgstr "Instellingen"
173176
174177#: qml/Dash/PageHeader.qml:279
175178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Verwijderen uit favorieten"
177180
178181#: qml/Dash/PageHeader.qml:279
179182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Toevoegen aan favorieten"
181184
182185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Versturen"
203206msgid "Manage Dash"
204207msgstr "Snelzoeker-beheer"
205208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207210msgid "Done"
208211msgstr "Klaar"
209212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211214msgid "Store"
212215msgstr "Winkel"
213216
@@ -223,7 +226,7 @@ msgstr "Alles"
223226msgid "Swipe to unlock"
224227msgstr "Veeg om te ontgrendelen"
225228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227230msgid "Confirm"
228231msgstr "Bevestigen"
229232
@@ -249,9 +252,9 @@ msgstr "Wachtwoord tonen"
249252
250253#: qml/Notifications/NotificationMenuItemFactory.qml:120
251254msgid "Enter SIM PIN"
252−msgstr "Voer SIM-pincode in"
255+msgstr "Voer simpincode in"
253256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255258msgid "Sorry, incorrect PIN"
256259msgstr "Sorry, onjuiste pincode"
257260
@@ -289,51 +292,51 @@ msgstr "Mislukt, tik om het opnieuw te proberen"
289292
290293#: qml/Panel/Indicators/ModemInfoItem.qml:105
291294msgid "Unlock SIM"
292−msgstr "SIM-kaart deblokkeren"
295+msgstr "Simkaart deblokkeren"
293296
294297#: qml/Panel/Indicators/RoamingIndication.qml:27
295298msgid "Roaming"
296299msgstr "Roaming"
297300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299302msgid "Enter your passphrase"
300303msgstr "Voer uw wachtwoordzin in"
301304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303306msgid "Sorry, incorrect passphrase"
304307msgstr "Sorry, onjuiste wachtwoordzin"
305308
306309#: qml/Shell.qml:282
307310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Voer uw toegangscode in"
309312
310313#: qml/Shell.qml:283
311314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Sorry, onjuiste toegangscode"
313316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315318#, qt-format
316319msgid "Enter your %1"
317320msgstr "Voer uw %1 in"
318321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320323#, qt-format
321324msgid "Sorry, incorrect %1"
322325msgstr "Sorry, onjuiste %1"
323326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325328msgid "Sorry, incorrect passphrase."
326329msgstr "Sorry, onjuiste wachtwoordzin."
327330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329332msgid "Sorry, incorrect passcode."
330333msgstr "Sorry, onjuiste toegangscode."
331334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333336msgid "This will be your last attempt."
334337msgstr "Dit zal uw laatste poging worden."
335338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337340msgid ""
338341"If passphrase is entered incorrectly, your phone will conduct a factory "
339342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341344"Wanneer de wachtwoordzin nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
342345"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
343346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345348msgid ""
346349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347350"and all personal data will be deleted."
348351msgstr ""
349352"Wanneer de toegangscode nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
350353"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
351−
352−#~ msgid "Restart"
353−#~ msgstr "Herstarten"
354−
355−#~ msgid "Are you sure you would like to turn power off?"
356−#~ msgstr "Weet u zeker dat u het apparaat wilt uitschakelen?"
357−
358−#~ msgid "Enter your PIN"
359−#~ msgstr "Voer uw pincode in"
po/pt.po+37−43
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity8\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-25 16:51+0000\n"
11+"PO-Revision-Date: 2014-08-29 10:59+0000\n"
1212"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
1313"Language-Team: Portuguese <pt@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Senha: "
2323
@@ -32,53 +32,55 @@ msgstr "Remover atalho"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Terminar sessão"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Tem a certeza de que quer sair?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Não"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Sim"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Encerrar"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Tem a certeza de que quer encerrar?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Reiniciar"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Tem a certeza de que quer reiniciar?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Energia"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Tem a certeza de quer\n"
77+"desligar?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Desligar"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Cancelar"
8486
@@ -164,21 +166,22 @@ msgstr "Ver menos"
164166msgid "See all"
165167msgstr "Ver todos"
166168
167−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
169+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
170+#: qml/Panel/SearchIndicator.qml:27
168171msgid "Search"
169172msgstr "Procurar"
170173
171174#: qml/Dash/PageHeader.qml:270
172175msgid "Settings"
173−msgstr ""
176+msgstr "Definições"
174177
175178#: qml/Dash/PageHeader.qml:279
176179msgid "Remove from Favorites"
177−msgstr ""
180+msgstr "Remover dos favoritos"
178181
179182#: qml/Dash/PageHeader.qml:279
180183msgid "Add to Favorites"
181−msgstr ""
184+msgstr "Adicionar aos favoritos"
182185
183186#: qml/Dash/Previews/PreviewActionCombo.qml:34
184187msgid "More..."
@@ -204,11 +207,11 @@ msgstr "Enviar"
204207msgid "Manage Dash"
205208msgstr "Gerir o Dash"
206209
207−#: qml/Dash/ScopesOverview.qml:408
210+#: qml/Dash/ScopesOverview.qml:417
208211msgid "Done"
209212msgstr "Concluído"
210213
211−#: qml/Dash/ScopesOverview.qml:434
214+#: qml/Dash/ScopesOverview.qml:443
212215msgid "Store"
213216msgstr "Loja"
214217
@@ -224,7 +227,7 @@ msgstr "Todos"
224227msgid "Swipe to unlock"
225228msgstr "Deslize para desbloquear"
226229
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
230+#: qml/Hud/HudParametrizedActionsPage.qml:139
228231msgid "Confirm"
229232msgstr "Confirmar"
230233
@@ -252,7 +255,7 @@ msgstr "Mostrar palavra-passe"
252255msgid "Enter SIM PIN"
253256msgstr "Introduza o PIN do SIM"
254257
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258+#: qml/Notifications/NotificationMenuItemFactory.qml:121
256259msgid "Sorry, incorrect PIN"
257260msgstr "Desculpe, PIN incorreto"
258261
@@ -296,45 +299,45 @@ msgstr "Desbloquear SIM"
296299msgid "Roaming"
297300msgstr "Roaming"
298301
299−#: qml/Shell.qml:266
302+#: qml/Shell.qml:279
300303msgid "Enter your passphrase"
301304msgstr "Introduza a sua frase-senha"
302305
303−#: qml/Shell.qml:267
306+#: qml/Shell.qml:280
304307msgid "Sorry, incorrect passphrase"
305308msgstr "Desculpe, frase-senha incorreta"
306309
307310#: qml/Shell.qml:282
308311msgid "Enter your passcode"
309−msgstr ""
312+msgstr "Introduza a sua senha"
310313
311314#: qml/Shell.qml:283
312315msgid "Sorry, incorrect passcode"
313−msgstr ""
316+msgstr "Desculpe, senha incorreta"
314317
315−#: qml/Shell.qml:273
318+#: qml/Shell.qml:286
316319#, qt-format
317320msgid "Enter your %1"
318321msgstr "Introduza o seu %1"
319322
320−#: qml/Shell.qml:274
323+#: qml/Shell.qml:287
321324#, qt-format
322325msgid "Sorry, incorrect %1"
323326msgstr "Desculpe, incorreto %1"
324327
325−#: qml/Shell.qml:310
328+#: qml/Shell.qml:323
326329msgid "Sorry, incorrect passphrase."
327330msgstr "Desculpe, frase de acesso incorreta."
328331
329−#: qml/Shell.qml:311
332+#: qml/Shell.qml:324
330333msgid "Sorry, incorrect passcode."
331334msgstr "Desculpe, senha incorreta."
332335
333−#: qml/Shell.qml:312
336+#: qml/Shell.qml:325
334337msgid "This will be your last attempt."
335338msgstr "Esta será a sua última tentativa."
336339
337−#: qml/Shell.qml:314
340+#: qml/Shell.qml:327
338341msgid ""
339342"If passphrase is entered incorrectly, your phone will conduct a factory "
340343"reset and all personal data will be deleted."
@@ -342,19 +345,10 @@ msgstr ""
342345"Se a frase de acesso for introduzida incorretamente, o seu telemóvel vai "
343346"proceder ao restauro de fábrica e apagará toda a sua informação pessoal."
344347
345−#: qml/Shell.qml:315
348+#: qml/Shell.qml:328
346349msgid ""
347350"If passcode is entered incorrectly, your phone will conduct a factory reset "
348351"and all personal data will be deleted."
349352msgstr ""
350353"Se a senha for introduzida incorretamente, o seu telemóvel vai apagar todos "
351354"os seus dados pessoais."
352−
353−#~ msgid "Are you sure you would like to turn power off?"
354−#~ msgstr "Tem a certeza de que quer desligar?"
355−
356−#~ msgid "Restart"
357−#~ msgstr "Reiniciar"
358−
359−#~ msgid "Enter your PIN"
360−#~ msgstr "Introduza o seu PIN"
po/ro.po+40−43
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 18:53+0000\n"
11+"PO-Revision-Date: 2014-08-31 09:24+0000\n"
1212"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
1313"Language-Team: Romanian <ro@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Parolă: "
2323
@@ -32,53 +32,55 @@ msgstr "Eliberează scurtătura"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Închide sesiunea"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Sunteți sigur că doriți să închideți sesiunea?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Nu"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Da"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Închideți"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Sunteți sigur că doriți să închideți?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Repornire"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Sunteți sigur că doriți să reporniți?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Alimentare"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Sunteți sigur că doriți să\n"
77+"opriți alimentarea?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Oprire"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Anulează"
8486
@@ -166,21 +168,22 @@ msgstr "Afișează mai puține"
166168msgid "See all"
167169msgstr "Afișează tot"
168170
169−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
171+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
172+#: qml/Panel/SearchIndicator.qml:27
170173msgid "Search"
171174msgstr "Căutare"
172175
173176#: qml/Dash/PageHeader.qml:270
174177msgid "Settings"
175−msgstr ""
178+msgstr "Configurări"
176179
177180#: qml/Dash/PageHeader.qml:279
178181msgid "Remove from Favorites"
179−msgstr ""
182+msgstr "Șterge din favorite"
180183
181184#: qml/Dash/PageHeader.qml:279
182185msgid "Add to Favorites"
183−msgstr ""
186+msgstr "Adaugă la favorite"
184187
185188#: qml/Dash/Previews/PreviewActionCombo.qml:34
186189msgid "More..."
@@ -206,11 +209,11 @@ msgstr "Trimite"
206209msgid "Manage Dash"
207210msgstr "Administrare Panou principal"
208211
209−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
210213msgid "Done"
211214msgstr "Finalizat"
212215
213−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
214217msgid "Store"
215218msgstr "Magazin"
216219
@@ -226,7 +229,7 @@ msgstr "Tot"
226229msgid "Swipe to unlock"
227230msgstr "Glisați pentru deblocare"
228231
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
230233msgid "Confirm"
231234msgstr "Confirmați"
232235
@@ -254,9 +257,9 @@ msgstr "Arată parola"
254257msgid "Enter SIM PIN"
255258msgstr "Introduceți codul PIN pentru SIM"
256259
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258261msgid "Sorry, incorrect PIN"
259−msgstr ""
262+msgstr "Cod PIN incorect"
260263
261264#: qml/Panel/ActiveCallHint.qml:77
262265msgid "Tap to return to call..."
@@ -298,45 +301,45 @@ msgstr "Deblocare SIM"
298301msgid "Roaming"
299302msgstr "Roaming"
300303
301−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
302305msgid "Enter your passphrase"
303306msgstr "Introduceți fraza dumneavoastră secretă"
304307
305−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
306309msgid "Sorry, incorrect passphrase"
307−msgstr ""
310+msgstr "Frază secretă incorectă"
308311
309312#: qml/Shell.qml:282
310313msgid "Enter your passcode"
311−msgstr ""
314+msgstr "Introduceți parola"
312315
313316#: qml/Shell.qml:283
314317msgid "Sorry, incorrect passcode"
315−msgstr ""
318+msgstr "Parolă incorectă"
316319
317−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
318321#, qt-format
319322msgid "Enter your %1"
320323msgstr "Introduceți %1"
321324
322−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
323326#, qt-format
324327msgid "Sorry, incorrect %1"
325−msgstr ""
328+msgstr "%1 incorectă"
326329
327−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
328331msgid "Sorry, incorrect passphrase."
329332msgstr "Frază parolă greșită"
330333
331−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
332335msgid "Sorry, incorrect passcode."
333336msgstr "Parolă greșită"
334337
335−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
336339msgid "This will be your last attempt."
337340msgstr "Aceasta va fi ultima încercare"
338341
339−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
340343msgid ""
341344"If passphrase is entered incorrectly, your phone will conduct a factory "
342345"reset and all personal data will be deleted."
@@ -345,7 +348,7 @@ msgstr ""
345348"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
346349"șterse."
347350
348−#: qml/Shell.qml:315
351+#: qml/Shell.qml:328
349352msgid ""
350353"If passcode is entered incorrectly, your phone will conduct a factory reset "
351354"and all personal data will be deleted."
@@ -353,9 +356,3 @@ msgstr ""
353356"Dacă parola este introdusă greșit, telefonul va iniția o resetare la "
354357"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
355358"șterse."
356−
357−#~ msgid "Are you sure you would like to turn power off?"
358−#~ msgstr "Sigur doriți să opriți dispozitivul?"
359−
360−#~ msgid "Restart"
361−#~ msgstr "Repornire"
po/ru.po+36−44
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 10:01+0000\n"
11+"PO-Revision-Date: 2014-08-29 08:06+0000\n"
1212"Last-Translator: Jay ZDLin <Unknown>\n"
1313"Language-Team: Russian <ru@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Пароль: "
2323
@@ -32,53 +32,53 @@ msgstr "Изъять ярлык"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Завершение сеанса"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Завершить сеанс?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Нет"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Да"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Выключение"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Выключить?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Перезагрузка"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Перезагрузить систему?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Питание"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
75−msgstr ""
75+msgstr "Отключить питание?"
7676
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
7878msgid "Power off"
7979msgstr "Отключить"
8080
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
8282msgid "Cancel"
8383msgstr "Отменить"
8484
@@ -168,21 +168,22 @@ msgstr "Вкратце"
168168msgid "See all"
169169msgstr "Показать всё"
170170
171−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
171+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
172+#: qml/Panel/SearchIndicator.qml:27
172173msgid "Search"
173174msgstr "Поиск"
174175
175176#: qml/Dash/PageHeader.qml:270
176177msgid "Settings"
177−msgstr ""
178+msgstr "Настройки"
178179
179180#: qml/Dash/PageHeader.qml:279
180181msgid "Remove from Favorites"
181−msgstr ""
182+msgstr "Удалить из избранного"
182183
183184#: qml/Dash/PageHeader.qml:279
184185msgid "Add to Favorites"
185−msgstr ""
186+msgstr "Добавить в избранное"
186187
187188#: qml/Dash/Previews/PreviewActionCombo.qml:34
188189msgid "More..."
@@ -208,11 +209,11 @@ msgstr "Отправить"
208209msgid "Manage Dash"
209210msgstr ""
210211
211−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
212213msgid "Done"
213214msgstr "Готово"
214215
215−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
216217msgid "Store"
217218msgstr ""
218219
@@ -228,7 +229,7 @@ msgstr "Все"
228229msgid "Swipe to unlock"
229230msgstr "Смахните, чтобы разблокировать"
230231
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
232233msgid "Confirm"
233234msgstr "Подтвердить"
234235
@@ -256,7 +257,7 @@ msgstr "Показать пароль"
256257msgid "Enter SIM PIN"
257258msgstr "Введите ПИН-код SIM-карты"
258259
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
260261msgid "Sorry, incorrect PIN"
261262msgstr "Введён неверный ПИН-код"
262263
@@ -300,45 +301,45 @@ msgstr "Разблокировать SIM-карту"
300301msgid "Roaming"
301302msgstr "Роуминг"
302303
303−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
304305msgid "Enter your passphrase"
305306msgstr "Введите кодовую фразу"
306307
307−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
308309msgid "Sorry, incorrect passphrase"
309310msgstr "Введена неверная кодовая фраза"
310311
311312#: qml/Shell.qml:282
312313msgid "Enter your passcode"
313−msgstr ""
314+msgstr "Введите секретный код"
314315
315316#: qml/Shell.qml:283
316317msgid "Sorry, incorrect passcode"
317−msgstr ""
318+msgstr "Секретный код введён неверно"
318319
319−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
320321#, qt-format
321322msgid "Enter your %1"
322323msgstr "Введите %1"
323324
324−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
325326#, qt-format
326327msgid "Sorry, incorrect %1"
327328msgstr "Некорректный ввод %1"
328329
329−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
330331msgid "Sorry, incorrect passphrase."
331332msgstr "Неверная ключевая фраза."
332333
333−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
334335msgid "Sorry, incorrect passcode."
335336msgstr "Неверный секретный код."
336337
337−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
338339msgid "This will be your last attempt."
339340msgstr "Осталась последняя попытка."
340341
341−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
342343msgid ""
343344"If passphrase is entered incorrectly, your phone will conduct a factory "
344345"reset and all personal data will be deleted."
@@ -346,19 +347,10 @@ msgstr ""
346347"Если ключевая фраза будет введена неверно, то телефон вернётся к заводским "
347348"настройкам, а все личные данные будут удалены."
348349
349−#: qml/Shell.qml:315
350+#: qml/Shell.qml:328
350351msgid ""
351352"If passcode is entered incorrectly, your phone will conduct a factory reset "
352353"and all personal data will be deleted."
353354msgstr ""
354355"Если секретный код будет введен неверно, то телефон вернётся к заводским "
355356"настройкам, а все личные данные будут удалены."
356−
357−#~ msgid "Are you sure you would like to turn power off?"
358−#~ msgstr "Отключить питание?"
359−
360−#~ msgid "Restart"
361−#~ msgstr "Перезапустить"
362−
363−#~ msgid "Enter your PIN"
364−#~ msgstr "Введите ПИН-код"
po/sl.po+37−43
@@ -8,16 +8,16 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-19 12:54+0000\n"
11+"PO-Revision-Date: 2014-08-28 06:43+0000\n"
1212"Last-Translator: Damir Jerovšek <Unknown>\n"
1313"Language-Team: Slovenian <sl@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
2222msgstr "Geslo: "
2323
@@ -32,53 +32,55 @@ msgstr "Odpni bližnjico"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Odjava"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Ali ste prepričani, da se želite odjaviti?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Ne"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Da"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Izklop"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Ali ste prepričani, da želite izklopiti?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Ponovni zagon"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Ali ste prepričani, da želite ponovno zagnati?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Izključitev"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Ali ste prepričani, da želite\n"
77+"izključiti?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
7981msgstr "Izklopi"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
8385msgstr "Prekliči"
8486
@@ -165,21 +167,22 @@ msgstr "Pokaži manj"
165167msgid "See all"
166168msgstr "Ogled vsega"
167169
168−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
170+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
171+#: qml/Panel/SearchIndicator.qml:27
169172msgid "Search"
170173msgstr "Iskanje"
171174
172175#: qml/Dash/PageHeader.qml:270
173176msgid "Settings"
174−msgstr ""
177+msgstr "Nastavitve"
175178
176179#: qml/Dash/PageHeader.qml:279
177180msgid "Remove from Favorites"
178−msgstr ""
181+msgstr "Odstrani iz priljubljenih"
179182
180183#: qml/Dash/PageHeader.qml:279
181184msgid "Add to Favorites"
182−msgstr ""
185+msgstr "Dodaj med priljubljene"
183186
184187#: qml/Dash/Previews/PreviewActionCombo.qml:34
185188msgid "More..."
@@ -205,11 +208,11 @@ msgstr "Pošlji"
205208msgid "Manage Dash"
206209msgstr "Upravljaj s pregledno ploščo"
207210
208−#: qml/Dash/ScopesOverview.qml:408
211+#: qml/Dash/ScopesOverview.qml:417
209212msgid "Done"
210213msgstr "Končano"
211214
212−#: qml/Dash/ScopesOverview.qml:434
215+#: qml/Dash/ScopesOverview.qml:443
213216msgid "Store"
214217msgstr "Trgovina"
215218
@@ -225,7 +228,7 @@ msgstr "Vse"
225228msgid "Swipe to unlock"
226229msgstr "Podrsajte za odklenitev"
227230
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
231+#: qml/Hud/HudParametrizedActionsPage.qml:139
229232msgid "Confirm"
230233msgstr "Potrdi"
231234
@@ -253,7 +256,7 @@ msgstr "Pokaži geslo"
253256msgid "Enter SIM PIN"
254257msgstr "Vnesite PIN kartice SIM"
255258
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259+#: qml/Notifications/NotificationMenuItemFactory.qml:121
257260msgid "Sorry, incorrect PIN"
258261msgstr "Oprostite, napačen PIN"
259262
@@ -297,45 +300,45 @@ msgstr "Odkleni SIM"
297300msgid "Roaming"
298301msgstr "Gostovanje"
299302
300−#: qml/Shell.qml:266
303+#: qml/Shell.qml:279
301304msgid "Enter your passphrase"
302305msgstr "Vnesite svoje šifrirno reklo"
303306
304−#: qml/Shell.qml:267
307+#: qml/Shell.qml:280
305308msgid "Sorry, incorrect passphrase"
306309msgstr "Oprostite, napačno šifrirno reklo"
307310
308311#: qml/Shell.qml:282
309312msgid "Enter your passcode"
310−msgstr ""
313+msgstr "Vnesite svoje geslo"
311314
312315#: qml/Shell.qml:283
313316msgid "Sorry, incorrect passcode"
314−msgstr ""
317+msgstr "Nepravilno geslo"
315318
316−#: qml/Shell.qml:273
319+#: qml/Shell.qml:286
317320#, qt-format
318321msgid "Enter your %1"
319322msgstr "Vnesite vaš %1"
320323
321−#: qml/Shell.qml:274
324+#: qml/Shell.qml:287
322325#, qt-format
323326msgid "Sorry, incorrect %1"
324327msgstr "Oprostite, napačen %1"
325328
326−#: qml/Shell.qml:310
329+#: qml/Shell.qml:323
327330msgid "Sorry, incorrect passphrase."
328331msgstr "Nepravilno geslo."
329332
330−#: qml/Shell.qml:311
333+#: qml/Shell.qml:324
331334msgid "Sorry, incorrect passcode."
332335msgstr "Nepravilno geslo."
333336
334−#: qml/Shell.qml:312
337+#: qml/Shell.qml:325
335338msgid "This will be your last attempt."
336339msgstr "To je vaš zadnji poskus"
337340
338−#: qml/Shell.qml:314
341+#: qml/Shell.qml:327
339342msgid ""
340343"If passphrase is entered incorrectly, your phone will conduct a factory "
341344"reset and all personal data will be deleted."
@@ -343,19 +346,10 @@ msgstr ""
343346"Če je vneseno nepravilno šifrirno reklo, bo telefon ponastavljen na "
344347"tovarniške nastavitve ter vsi osebni podatki bodo izbrisani."
345348
346−#: qml/Shell.qml:315
349+#: qml/Shell.qml:328
347350msgid ""
348351"If passcode is entered incorrectly, your phone will conduct a factory reset "
349352"and all personal data will be deleted."
350353msgstr ""
351354"Če je vneseno nepravilno geslo, bo telefon ponastavljen na tovarniške "
352355"nastavitve ter vsi osebni podatki bodo izbrisani."
353−
354−#~ msgid "Are you sure you would like to turn power off?"
355−#~ msgstr "Ali ste prepričani, da želite izklopiti?"
356−
357−#~ msgid "Restart"
358−#~ msgstr "Ponovno zaženi"
359−
360−#~ msgid "Enter your PIN"
361−#~ msgstr "Vnesite svoj PIN"
po/sr.po+98−89
@@ -8,220 +8,225 @@ msgstr ""
88"Project-Id-Version: unity\n"
99"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1010"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2013-06-27 09:19+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
11+"PO-Revision-Date: 2014-08-30 11:46+0000\n"
12+"Last-Translator: Данило Шеган <Unknown>\n"
1313"Language-Team: Serbian <sr@li.org>\n"
1414"MIME-Version: 1.0\n"
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
17+"X-Launchpad-Export-Date: 2014-08-31 07:30+0000\n"
18+"X-Generator: Launchpad (build 17176)\n"
1919
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
2121msgid "Password: "
22−msgstr ""
22+msgstr "Лозинка: "
2323
2424#: plugins/Unity/Launcher/launcheritem.cpp:43
2525#: plugins/Unity/Launcher/launcheritem.cpp:73
2626msgid "Pin shortcut"
27−msgstr ""
27+msgstr "Прикачи пречицу"
2828
2929#: plugins/Unity/Launcher/launcheritem.cpp:73
3030msgid "Unpin shortcut"
31−msgstr ""
31+msgstr "Откачи пречицу"
3232
3333#: qml/Components/Dialogs.qml:70
3434msgid "Log out"
35−msgstr ""
35+msgstr "Одјави се"
3636
3737#: qml/Components/Dialogs.qml:71
3838msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Сигурно желите да се одјавите?"
4040
4141#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
4242#: qml/Components/Dialogs.qml:122
4343msgid "No"
44−msgstr ""
44+msgstr "Не"
4545
4646#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
4747#: qml/Components/Dialogs.qml:129
4848msgid "Yes"
49−msgstr ""
49+msgstr "Да"
5050
5151#: qml/Components/Dialogs.qml:94
5252msgid "Shut down"
53−msgstr ""
53+msgstr "Угаси"
5454
5555#: qml/Components/Dialogs.qml:95
5656msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Сигурно желите да угасите?"
5858
5959#: qml/Components/Dialogs.qml:119
6060msgid "Reboot"
61−msgstr ""
61+msgstr "Ресетуј"
6262
6363#: qml/Components/Dialogs.qml:120
6464msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Сигурно желите да ресетујете?"
6666
6767#: qml/Components/Dialogs.qml:144
6868msgid "Power"
69−msgstr ""
69+msgstr "Напајање"
7070
7171#: qml/Components/Dialogs.qml:145
7272msgid ""
7373"Are you sure you would like\n"
7474"to power off?"
7575msgstr ""
76+"Сигурно желите да\n"
77+"искључите?"
7678
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
7880msgid "Power off"
79−msgstr ""
81+msgstr "Искључи"
8082
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
8284msgid "Cancel"
83−msgstr ""
85+msgstr "Откажи"
8486
8587#: qml/Components/EdgeDemoOverlay.qml:151
8688msgid "Skip intro"
87−msgstr ""
89+msgstr "Прескочи увод"
8890
8991#: qml/Components/EdgeDemo.qml:112
9092msgid "Right edge"
91−msgstr ""
93+msgstr "Десна ивица"
9294
9395#: qml/Components/EdgeDemo.qml:113
9496msgid "Try swiping from the right edge to unlock the phone"
95−msgstr ""
97+msgstr "Превуците прстом од десне ивице да откључате телефон"
9698
9799#: qml/Components/EdgeDemo.qml:144
98100msgid "Top edge"
99−msgstr ""
101+msgstr "Горња ивица"
100102
101103#: qml/Components/EdgeDemo.qml:145
102104msgid "Try swiping from the top edge to access the indicators"
103−msgstr ""
105+msgstr "Превуците прстом од горње ивице да би приступили показатељима"
104106
105107#: qml/Components/EdgeDemo.qml:170
106108msgid "Close"
107−msgstr ""
109+msgstr "Затвори"
108110
109111#: qml/Components/EdgeDemo.qml:171
110112msgid "Swipe up again to close the settings screen"
111−msgstr ""
113+msgstr "Превуците поново на горе да би затворили подешавања"
112114
113115#: qml/Components/EdgeDemo.qml:198
114116msgid "Left edge"
115−msgstr ""
117+msgstr "Лева ивица"
116118
117119#: qml/Components/EdgeDemo.qml:199
118120msgid "Swipe from the left to reveal the launcher for quick access to apps"
119−msgstr ""
121+msgstr "Превуците с лева да би открили покретач за брз приступ програмима"
120122
121123#: qml/Components/EdgeDemo.qml:226
122124msgid "Well done"
123−msgstr ""
125+msgstr "Одлично"
124126
125127#: qml/Components/EdgeDemo.qml:227
126128msgid ""
127129"You have now mastered the edge gestures and can start using the "
128130"phone<br><br>Tap on the screen to start"
129131msgstr ""
132+"Сада сте савладали превлачења са ивица и можете да користите "
133+"телефон<br><br>Тапните на екран да почнете"
130134
131135#: qml/Components/Lockscreen.qml:167
132136msgid "Please wait"
133−msgstr ""
137+msgstr "Сачекајте"
134138
135139#: qml/Components/Lockscreen.qml:172
136140msgid "Too many incorrect attempts"
137−msgstr ""
141+msgstr "Превише нетачних покушаја"
138142
139143#: qml/Components/Lockscreen.qml:206
140144msgid "Emergency Call"
141−msgstr ""
145+msgstr "Хитан позив"
142146
143147#: qml/Components/Lockscreen.qml:226
144148msgid "OK"
145−msgstr ""
149+msgstr "У реду"
146150
147151#: qml/Components/PassphraseLockscreen.qml:61
148152#, qt-format
149153msgid "Hello %1"
150−msgstr ""
154+msgstr "Здраво %1"
151155
152156#: qml/Components/PassphraseLockscreen.qml:61
153157msgid "Hello"
154−msgstr ""
158+msgstr "Здраво"
155159
156160#: qml/Dash/GenericScopeView.qml:361
157161msgid "See less"
158−msgstr ""
162+msgstr "Сажетије"
159163
160164#: qml/Dash/GenericScopeView.qml:361
161165msgid "See all"
162−msgstr ""
166+msgstr "Опширније"
163167
164−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
168+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
169+#: qml/Panel/SearchIndicator.qml:27
165170msgid "Search"
166171msgstr "Претрага"
167172
168173#: qml/Dash/PageHeader.qml:270
169174msgid "Settings"
170−msgstr ""
175+msgstr "Подешавања"
171176
172177#: qml/Dash/PageHeader.qml:279
173178msgid "Remove from Favorites"
174−msgstr ""
179+msgstr "Уклони из омиљених"
175180
176181#: qml/Dash/PageHeader.qml:279
177182msgid "Add to Favorites"
178−msgstr ""
183+msgstr "Додај међу омиљене"
179184
180185#: qml/Dash/Previews/PreviewActionCombo.qml:34
181186msgid "More..."
182−msgstr ""
187+msgstr "Више..."
183188
184189#: qml/Dash/Previews/PreviewActionCombo.qml:34
185190msgid "Less..."
186−msgstr ""
191+msgstr "Мање..."
187192
188193#: qml/Dash/Previews/PreviewRatingInput.qml:81
189194msgid "Rate this"
190−msgstr ""
195+msgstr "Оцени"
191196
192197#: qml/Dash/Previews/PreviewRatingInput.qml:126
193198msgid "Add a review"
194−msgstr ""
199+msgstr "Напиши оцену"
195200
196201#: qml/Dash/Previews/PreviewRatingInput.qml:166
197202msgid "Send"
198−msgstr ""
203+msgstr "Пошаљи"
199204
200205#: qml/Dash/ScopesOverview.qml:201
201206msgid "Manage Dash"
202−msgstr ""
207+msgstr "Управљај Полицом"
203208
204−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
205210msgid "Done"
206−msgstr ""
211+msgstr "Готово"
207212
208−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
209214msgid "Store"
210−msgstr ""
215+msgstr "Продавница"
211216
212217#: qml/Dash/ScopesOverviewTab.qml:36
213218msgid "Favorites"
214−msgstr ""
219+msgstr "Омиљени"
215220
216221#: qml/Dash/ScopesOverviewTab.qml:54
217222msgid "All"
218−msgstr ""
223+msgstr "Сви"
219224
220225#: qml/Greeter/Greeter.qml:157
221226msgid "Swipe to unlock"
222−msgstr ""
227+msgstr "Повуците да откључате"
223228
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
225230msgid "Confirm"
226231msgstr "Потврди"
227232
@@ -243,102 +248,106 @@ msgstr "Говор..."
243248
244249#: qml/Notifications/NotificationMenuItemFactory.qml:105
245250msgid "Show password"
246−msgstr ""
251+msgstr "Прикажи лозинку"
247252
248253#: qml/Notifications/NotificationMenuItemFactory.qml:120
249254msgid "Enter SIM PIN"
250−msgstr ""
255+msgstr "Унеси пин СИМ картице"
251256
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
253258msgid "Sorry, incorrect PIN"
254−msgstr ""
259+msgstr "Жао ми је, погрешан ПИН код"
255260
256261#: qml/Panel/ActiveCallHint.qml:77
257262msgid "Tap to return to call..."
258−msgstr ""
263+msgstr "Тапните да одговорите на позив"
259264
260265#: qml/Panel/ActiveCallHint.qml:90
261266msgid "Conference"
262−msgstr ""
267+msgstr "Конференција"
263268
264269#: qml/Panel/Indicators/MenuItemFactory.qml:651
265270msgid "In queue…"
266−msgstr ""
271+msgstr "У реду..."
267272
268273#: qml/Panel/Indicators/MenuItemFactory.qml:655
269274msgid "Downloading"
270−msgstr ""
275+msgstr "Преузимам"
271276
272277#: qml/Panel/Indicators/MenuItemFactory.qml:657
273278msgid "Paused, tap to resume"
274−msgstr ""
279+msgstr "Заустављено, тапните да наставите"
275280
276281#: qml/Panel/Indicators/MenuItemFactory.qml:659
277282msgid "Canceled"
278−msgstr ""
283+msgstr "Отказано"
279284
280285#: qml/Panel/Indicators/MenuItemFactory.qml:661
281286msgid "Finished"
282−msgstr ""
287+msgstr "Завршено"
283288
284289#: qml/Panel/Indicators/MenuItemFactory.qml:663
285290msgid "Failed, tap to retry"
286−msgstr ""
291+msgstr "Неуспешно, тапните да покушате поново"
287292
288293#: qml/Panel/Indicators/ModemInfoItem.qml:105
289294msgid "Unlock SIM"
290−msgstr ""
295+msgstr "Откључај СИМ картицу"
291296
292297#: qml/Panel/Indicators/RoamingIndication.qml:27
293298msgid "Roaming"
294−msgstr ""
299+msgstr "Роминг"
295300
296−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
297302msgid "Enter your passphrase"
298−msgstr ""
303+msgstr "Унесите вашу лозинку"
299304
300−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
301306msgid "Sorry, incorrect passphrase"
302−msgstr ""
307+msgstr "Жао ми је, погрешна лозинка"
303308
304309#: qml/Shell.qml:282
305310msgid "Enter your passcode"
306−msgstr ""
311+msgstr "Унесите ваш код"
307312
308313#: qml/Shell.qml:283
309314msgid "Sorry, incorrect passcode"
310−msgstr ""
315+msgstr "Жао ми је, погрешан код"
311316
312−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
313318#, qt-format
314319msgid "Enter your %1"
315−msgstr ""
320+msgstr "Унесите ваш %1"
316321
317−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
318323#, qt-format
319324msgid "Sorry, incorrect %1"
320−msgstr ""
325+msgstr "Жао ми је, погрешан %1"
321326
322−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
323328msgid "Sorry, incorrect passphrase."
324−msgstr ""
329+msgstr "Жао ми је, погрешна лозинка."
325330
326−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
327332msgid "Sorry, incorrect passcode."
328−msgstr ""
333+msgstr "Жао ми је, погрешан код."
329334
330−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
331336msgid "This will be your last attempt."
332−msgstr ""
337+msgstr "Ово је ваш последњи покушај."
333338
334−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
335340msgid ""
336341"If passphrase is entered incorrectly, your phone will conduct a factory "
337342"reset and all personal data will be deleted."
338343msgstr ""
344+"Ако се унесе погрешна лозинка, ваш телефон ће се ресетовати и сви лични "
345+"подаци ће бити обрисани."
339346
340−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
341348msgid ""
342349"If passcode is entered incorrectly, your phone will conduct a factory reset "
343350"and all personal data will be deleted."
344351msgstr ""
352+"Ако се унесе погрешан код, ваш телефон ће се ресетовати и сви лични подаци "
353+"ће бити обрисани."
qml/Shell.qml+9
@@ -233,6 +233,15 @@ Item {
233233 }
234234 }
235235 }
236+ Connections {
237+ target: SessionManager
238+ onSessionStopping: {
239+ if (!session.parentSession && !session.application) {
240+ // nothing is using it. delete it right away
241+ session.release();
242+ }
243+ }
244+ }
236245
237246 Lockscreen {
238247 id: lockscreen
qml/Stages/Animations/BaseSurfaceAnimation.qml → qml/Stages/Animations/BaseSessionAnimation.qmlrenamed+23−20
@@ -37,57 +37,60 @@ import QtQuick 2.0
3737 */
3838Item {
3939 id: base
40− property Item surface: null
40+ property var container
41+ objectName: "sessionAnimation"
4142
42− // changes applied when state changes to "in"
43− property list<QtObject> outChanges
44− // transition animations when changing state to "in"
45− property list<QtObject> outAnimations
43+ // changes applied when state changes to "from"
44+ property list<QtObject> fromChanges
45+ // transition animations when changing state to "from"
46+ property list<QtObject> fromAnimations
4647
47− // changes applied when state changes to "out"
48− property list<QtObject> inChanges
49− // transition animations when changing state to "out"
50− property list<QtObject> inAnimations
48+ // changes applied when state changes to "to"
49+ property list<QtObject> toChanges
50+ // transition animations when changing state to "to"
51+ property list<QtObject> toAnimations
5152
5253 function start() {
53− // "prep" state forces outChanges without transition animations.
54+ // "prep" state forces toChanges without transition animations.
5455 state = "prep"
55− state = "in";
56+ state = "to";
5657 }
5758 function end() {
58− state = "out";
59+ state = "from";
5960 }
6061
62+ signal completed()
63+
6164 states: [
6265 State {
6366 name: "baseAnimation"
64− PropertyChanges { target: base.surface; anchors.fill: undefined }
67+ PropertyChanges { target: container; anchors.fill: undefined }
6568 },
6669
6770 State {
6871 name: "prep"
6972 extend: "baseAnimation"
70− changes: outChanges
73+ changes: fromChanges
7174 },
7275 State {
73− name: "out"
76+ name: "from"
7477 extend: "prep"
7578 },
7679 State {
7780 name: "in"
7881 extend: "baseAnimation"
79− changes: inChanges
82+ changes: toChanges
8083 }
8184 ]
8285
8386 transitions: [
8487 Transition {
85− to: "out"
86− animations: outAnimations
88+ to: "from"
89+ animations: fromAnimations
8790 },
8891 Transition {
89− to: "in"
90− animations: inAnimations
92+ to: "to"
93+ animations: toAnimations
9194 }
9295 ]
9396}
qml/Stages/Animations/DarkenAndFadeInAnimation.qmldeleted−48
@@ -1,48 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−import Ubuntu.Components 1.1
19−
20−BaseSurfaceAnimation {
21− id: animation
22−
23− property Rectangle darkenItem: Rectangle {
24− parent: animation.surface.parent
25− anchors.fill: parent
26− color: Qt.rgba(0,0,0,0.0)
27− }
28−
29− outChanges: [ PropertyChanges { target: animation.surface; opacity: 0.0 } ]
30− outAnimations: [
31− SequentialAnimation {
32− UbuntuNumberAnimation { target: animation.surface; property: "opacity"; duration: UbuntuAnimation.FastDuration }
33− ColorAnimation { target: darkenItem; duration: UbuntuAnimation.FastDuration }
34− ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
35− }
36− ]
37−
38− inChanges: [
39− PropertyChanges { target: darkenItem; color: Qt.rgba(0,0,0,0.7) },
40− PropertyChanges { target: animation.surface; opacity: 1.0 }
41− ]
42− inAnimations: [
43− SequentialAnimation {
44− ColorAnimation { target: darkenItem; duration: UbuntuAnimation.FastDuration }
45− UbuntuNumberAnimation { target: animation.surface; property: "opacity"; duration: UbuntuAnimation.FastDuration }
46− }
47− ]
48−}
qml/Stages/Animations/SwipeFromBottomAnimation.qml+24−19
@@ -15,34 +15,39 @@
1515 */
1616
1717import QtQuick 2.0
18+import Ubuntu.Components 1.1
1819
19−BaseSurfaceAnimation {
20+BaseSessionAnimation {
2021 id: animation
2122
22− outChanges: [ AnchorChanges { target: animation.surface; anchors.top: animation.parent.bottom } ]
23− outAnimations: [
23+ fromChanges: [
24+ AnchorChanges {
25+ target: container;
26+ anchors.top: container.parent.bottom
27+ }
28+ ]
29+ fromAnimations: [
2430 SequentialAnimation {
25− PropertyAction { target: animation.parent; property: "clip"; value: true }
26− AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
27− PropertyAction { target: animation.surface; property: "visible"; value: !animation.parent.removing }
28− PropertyAction { target: animation.parent; property: "clip"; value: false }
29− ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
31+ // clip so we don't go out of parent's bounds during spread
32+ PropertyAction { target: container.parent; property: "clip"; value: true }
33+ AnchorAnimation { easing: UbuntuAnimation.StandardEasing; duration: UbuntuAnimation.BriskDuration }
34+ PropertyAction { target: container.parent; property: "clip"; value: false }
35+ ScriptAction { script: { animation.completed(); } }
3036 }
3137 ]
3238
33− inChanges: [
39+ toChanges: [
3440 AnchorChanges {
35− target: animation.surface;
36− anchors.top: animation.parent.top
37− anchors.right: undefined
38− anchors.bottom: undefined
39− anchors.left: undefined
40− } ]
41− inAnimations: [
41+ target: container;
42+ anchors.top: container.parent.top
43+ }
44+ ]
45+ toAnimations: [
4246 SequentialAnimation {
43− PropertyAction { target: animation.parent; property: "clip"; value: true }
44− AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
45− PropertyAction { target: animation.parent; property: "clip"; value: false }
47+ // clip so we don't go out of parent's bounds during spread
48+ PropertyAction { target: container.parent; property: "clip"; value: true }
49+ AnchorAnimation { easing: UbuntuAnimation.StandardEasing; duration: UbuntuAnimation.BriskDuration }
50+ PropertyAction { target: container.parent; property: "clip"; value: false }
4651 }
4752 ]
4853}
qml/Stages/Animations/SwipeUpAnimation.qmldeleted−49
@@ -1,49 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.0
18−
19−BaseSurfaceAnimation {
20− id: animation
21−
22− outAnimations: [
23− SequentialAnimation {
24− PropertyAction { target: animation.parent; property: "clip"; value: true }
25− PropertyAction { target: animation.surface; property: "visible"; value: true }
26− AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
27− PropertyAction { target: animation.parent; property: "clip"; value: false }
28− ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
29− }
30− ]
31−
32− inChanges: [
33− AnchorChanges {
34− target: animation.surface;
35− anchors.top: undefined
36− anchors.right: undefined
37− anchors.bottom: animation.parent.top
38− anchors.left: undefined
39− }
40− ]
41− inAnimations: [
42− SequentialAnimation {
43− PropertyAction { target: animation.parent; property: "clip"; value: true }
44− AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
45− PropertyAction { target: animation.surface; property: "visible"; value: false}
46− PropertyAction { target: animation.parent; property: "clip"; value: false }
47− }
48− ]
49−}
qml/Stages/ApplicationWindow.qml+50−71
@@ -23,9 +23,9 @@ Item {
2323
2424 // to be read from outside
2525 readonly property bool fullscreen: application ? application.fullscreen : false
26+ property alias interactive: sessionContainer.interactive
2627
2728 // to be set from outside
28− property bool interactive: true
2929 property QtObject application
3030
3131 QtObject {
@@ -35,16 +35,14 @@ Item {
3535 // (in order to avoid breaking qml binding due to a javascript exception)
3636 readonly property string name: root.application ? root.application.name : ""
3737 readonly property url icon: root.application ? root.application.icon : ""
38− readonly property Item surface: root.application ? root.application.surface : null
3938 readonly property int applicationState: root.application ? root.application.state : -1
40− readonly property var promptSurfaces: root.application ? root.application.promptSurfaces : null
4139
4240 // Whether the Application had a surface before but lost it.
43− property bool hadSurface: false
41+ property bool hadSurface: sessionContainer.surfaceContainer.hadSurface
4442
4543 property bool needToTakeScreenshot:
46− d.surface && d.surfaceInitialized && screenshotImage.status === Image.Null
47− && d.applicationState === ApplicationInfo.Stopped
44+ sessionContainer.surface && d.surfaceInitialized && screenshotImage.status === Image.Null
45+ && d.applicationState === ApplicationInfoInterface.Stopped
4846 onNeedToTakeScreenshotChanged: {
4947 if (needToTakeScreenshot) {
5048 screenshotImage.take();
@@ -55,12 +53,12 @@ Item {
5553 // might show the UI accommodating due to surface resizes on startup.
5654 // Remove this when possible
5755 property bool surfaceInitialized: false
58− onSurfaceChanged: {
59− if (surface) {
60− surfaceInitTimer.start();
61− } else {
62− hadSurface = true;
63− surfaceInitialized = false;
56+
57+ function forceSurfaceActiveFocusIfReady() {
58+ if (sessionContainer.surface.focus &&
59+ sessionContainer.surface.parent === sessionContainer.surfaceContainer &&
60+ sessionContainer.surface.enabled) {
61+ sessionContainer.surface.forceActiveFocus();
6462 }
6563 }
6664 }
@@ -68,40 +66,16 @@ Item {
6866 Timer {
6967 id: surfaceInitTimer
7068 interval: 100
71− onTriggered: { if (d.surface) {d.surfaceInitialized = true;} }
69+ onTriggered: { if (sessionContainer.surface) {d.surfaceInitialized = true;} }
7270 }
7371
74− Binding {
75− target: d.surface
76− when: d.surface
77− property: "enabled"
78− value: root.interactive
79− }
80− Binding {
81− target: d.surface
82− when: d.surface
83− property: "focus"
84− value: root.interactive
85− }
8672 Connections {
87− target: d.surface
73+ target: sessionContainer.surface
8874 // FIXME: I would rather not need to do this, but currently it doesn't get
8975 // active focus without it and I don't know why.
90− onFocusChanged: forceSurfaceActiveFocusIfReady();
91− onParentChanged: forceSurfaceActiveFocusIfReady();
92− onEnabledChanged: forceSurfaceActiveFocusIfReady();
93− function forceSurfaceActiveFocusIfReady() {
94− if (d.surface.focus && d.surface.parent === surfaceContainer && d.surface.enabled) {
95− d.surface.forceActiveFocus();
96− }
97− }
98− }
99−
100− SurfaceContainer {
101− id: surfaceContainer
102− objectName: "surfaceContainer"
103− anchors.fill: parent
104− surface: d.surface
76+ onFocusChanged: d.forceSurfaceActiveFocusIfReady();
77+ onParentChanged: d.forceSurfaceActiveFocusIfReady();
78+ onEnabledChanged: d.forceSurfaceActiveFocusIfReady();
10579 }
10680
10781 Image {
@@ -126,25 +100,24 @@ Item {
126100 id: splashLoader
127101 visible: active
128102 active: false
129− anchors.fill: surfaceContainer
103+ anchors.fill: parent
130104 sourceComponent: Component {
131105 Splash { name: d.name; image: d.icon }
132106 }
133107 }
134108
135− Repeater {
136− model: d.promptSurfaces
137−
138− delegate: SurfaceContainer {
139− anchors {
140− fill: surfaceContainer
141− }
142−
143− surface: modelData
109+ SessionContainer {
110+ id: sessionContainer
111+ session: application ? application.session : null
112+ anchors.fill: parent
144113
145− Component.onCompleted: {
146− animateIn();
114+ onSurfaceChanged: {
115+ if (sessionContainer.surface) {
116+ surfaceInitTimer.start();
117+ } else {
118+ d.surfaceInitialized = false;
147119 }
120+ d.forceSurfaceActiveFocusIfReady();
148121 }
149122 }
150123
@@ -154,23 +127,23 @@ Item {
154127 State {
155128 name: "void"
156129 when:
157− d.hadSurface && (!d.surface || !d.surfaceInitialized)
130+ d.hadSurface && (!sessionContainer.surface || !d.surfaceInitialized)
158131 &&
159132 screenshotImage.status !== Image.Ready
160133 },
161134 State {
162135 name: "splashScreen"
163136 when:
164− !d.hadSurface && (!d.surface || !d.surfaceInitialized)
137+ !d.hadSurface && (!sessionContainer.surface || !d.surfaceInitialized)
165138 &&
166139 screenshotImage.status !== Image.Ready
167140 },
168141 State {
169142 name: "surface"
170143 when:
171− (d.surface && d.surfaceInitialized)
144+ (sessionContainer.surface && d.surfaceInitialized)
172145 &&
173− (d.applicationState !== ApplicationInfo.Stopped
146+ (d.applicationState !== ApplicationInfoInterface.Stopped
174147 || screenshotImage.status !== Image.Ready)
175148 },
176149 State {
@@ -178,8 +151,8 @@ Item {
178151 when:
179152 screenshotImage.status === Image.Ready
180153 &&
181− (d.applicationState === ApplicationInfo.Stopped
182− || !d.surface || !d.surfaceInitialized)
154+ (d.applicationState === ApplicationInfoInterface.Stopped
155+ || !sessionContainer.surface || !d.surfaceInitialized)
183156 }
184157 ]
185158
@@ -187,14 +160,18 @@ Item {
187160 Transition {
188161 from: ""; to: "splashScreen"
189162 PropertyAction { target: splashLoader; property: "active"; value: true }
163+ PropertyAction { target: sessionContainer.surfaceContainer
164+ property: "visible"; value: false }
190165 },
191166 Transition {
192167 from: "splashScreen"; to: "surface"
193168 SequentialAnimation {
194− PropertyAction { target: surfaceContainer
169+ PropertyAction { target: sessionContainer.surfaceContainer
170+ property: "opacity"; value: 0.0 }
171+ PropertyAction { target: sessionContainer.surfaceContainer
195172 property: "visible"; value: true }
196− UbuntuNumberAnimation { target: splashLoader; property: "opacity";
197− from: 1.0; to: 0.0
173+ UbuntuNumberAnimation { target: sessionContainer.surfaceContainer; property: "opacity";
174+ from: 0.0; to: 1.0
198175 duration: UbuntuAnimation.BriskDuration }
199176 PropertyAction { target: splashLoader; property: "active"; value: false }
200177 }
@@ -203,11 +180,13 @@ Item {
203180 from: "surface"; to: "splashScreen"
204181 SequentialAnimation {
205182 PropertyAction { target: splashLoader; property: "active"; value: true }
206− PropertyAction { target: surfaceContainer
183+ PropertyAction { target: sessionContainer.surfaceContainer
207184 property: "visible"; value: true }
208185 UbuntuNumberAnimation { target: splashLoader; property: "opacity";
209186 from: 0.0; to: 1.0
210187 duration: UbuntuAnimation.BriskDuration }
188+ PropertyAction { target: sessionContainer.surfaceContainer
189+ property: "visible"; value: false }
211190 }
212191 },
213192 Transition {
@@ -218,15 +197,15 @@ Item {
218197 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
219198 from: 0.0; to: 1.0
220199 duration: UbuntuAnimation.BriskDuration }
221− PropertyAction { target: surfaceContainer
200+ PropertyAction { target: sessionContainer.surfaceContainer
222201 property: "visible"; value: false }
223− ScriptAction { script: { if (d.surface) { d.surface.release(); } } }
202+ ScriptAction { script: { if (sessionContainer.session) { sessionContainer.session.release(); } } }
224203 }
225204 },
226205 Transition {
227206 from: "screenshot"; to: "surface"
228207 SequentialAnimation {
229− PropertyAction { target: surfaceContainer
208+ PropertyAction { target: sessionContainer.surfaceContainer
230209 property: "visible"; value: true }
231210 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
232211 from: 1.0; to: 0.0
@@ -238,16 +217,16 @@ Item {
238217 Transition {
239218 from: "surface"; to: "void"
240219 SequentialAnimation {
241− PropertyAction { target: surfaceContainer; property: "visible"; value: false }
242− ScriptAction { script: { if (d.surface) { d.surface.release(); } } }
220+ PropertyAction { target: sessionContainer.surfaceContainer; property: "visible"; value: false }
221+ ScriptAction { script: { if (sessionContainer.session) { sessionContainer.session.release(); } } }
243222 }
244223 },
245224 Transition {
246225 from: "void"; to: "surface"
247226 SequentialAnimation {
248− PropertyAction { target: surfaceContainer; property: "opacity"; value: 0.0 }
249− PropertyAction { target: surfaceContainer; property: "visible"; value: true }
250− UbuntuNumberAnimation { target: surfaceContainer; property: "opacity";
227+ PropertyAction { target: sessionContainer.surfaceContainer; property: "opacity"; value: 0.0 }
228+ PropertyAction { target: sessionContainer.surfaceContainer; property: "visible"; value: true }
229+ UbuntuNumberAnimation { target: sessionContainer.surfaceContainer; property: "opacity";
251230 from: 0.0; to: 1.0
252231 duration: UbuntuAnimation.BriskDuration }
253232 }
qml/Stages/SessionContainer.qmlnew file+143
@@ -0,0 +1,143 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU Lesser General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+*/
16+
17+import QtQuick 2.0
18+import "Animations"
19+
20+Item {
21+ id: root
22+ objectName: "sessionContainer"
23+ property QtObject session
24+ readonly property var childSessions: session ? session.childSessions : null
25+ readonly property alias surface: _surfaceContainer.surface
26+ property bool interactive: true
27+
28+ readonly property alias surfaceContainer: _surfaceContainer
29+ SurfaceContainer {
30+ id: _surfaceContainer
31+ anchors.fill: parent
32+ surface: session ? session.surface : null
33+ }
34+
35+ Binding {
36+ target: surfaceContainer.surface
37+ when: surfaceContainer.surface
38+ property: "enabled"
39+ value: root.interactive
40+ }
41+ Binding {
42+ target: surfaceContainer.surface
43+ when: surfaceContainer.surface
44+ property: "focus"
45+ value: root.interactive
46+ }
47+
48+ Repeater {
49+ model: root.childSessions
50+
51+ delegate: Loader {
52+ objectName: "childDelegate" + index
53+ anchors.fill: surfaceContainer
54+
55+ // Only way to do recursive qml items.
56+ source: Qt.resolvedUrl("SessionContainer.qml")
57+
58+ Binding {
59+ target: item; when: item
60+ property: "interactive"; value: root.interactive
61+ }
62+
63+ Binding {
64+ target: item; when: item
65+ property: "session"; value: modelData
66+ }
67+
68+ Binding {
69+ target: item; when: item
70+ property: "width"; value: root.width
71+ }
72+
73+ Binding {
74+ target: item; when: item
75+ property: "height"; value: root.height
76+ }
77+ }
78+ }
79+
80+ states: [
81+ State {
82+ name: "rootSession"
83+ when: root.session && !root.session.parentSession
84+ },
85+
86+ State {
87+ name: "childSession"
88+ when: root.session && root.session.parentSession !== null && root.session.live
89+ && !root.session.surface
90+ },
91+
92+ State {
93+ name: "childSessionReady"
94+ when: root.session && root.session.parentSession !== null && root.session.live
95+ && root.session.surface !== null
96+ },
97+
98+ State {
99+ name: "childSessionZombie"
100+ when: root.session && root.session.parentSession !== null && !root.session.live
101+ }
102+ ]
103+
104+ transitions: [
105+ Transition {
106+ to: "childSessionReady"
107+ ScriptAction { script: { if (!surfaceContainer.hadSurface) { animateIn(swipeFromBottom); } } }
108+ },
109+ Transition {
110+ to: "childSessionZombie"
111+ ScriptAction { script: { animateOut(); } }
112+ }
113+ ]
114+
115+ function animateIn(component) {
116+ var animation = component.createObject(root, { "container": root, });
117+ animation.start();
118+
119+ var tmp = d.animations;
120+ tmp.push(animation);
121+ d.animations = tmp;
122+ }
123+
124+ function animateOut() {
125+ if (d.animations.length > 0) {
126+ var tmp = d.animations;
127+ var popped = tmp.pop();
128+ popped.completed.connect(function() { root.session.release(); } );
129+ popped.end();
130+ d.animations = tmp;
131+ }
132+ }
133+
134+ Component {
135+ id: swipeFromBottom
136+ SwipeFromBottomAnimation {}
137+ }
138+
139+ QtObject {
140+ id: d
141+ property var animations: []
142+ }
143+}
qml/Stages/SurfaceContainer.qml+22−67
@@ -15,86 +15,41 @@
1515*/
1616
1717import QtQuick 2.0
18−import "Animations"
18+import Ubuntu.Components 1.1
1919
2020Item {
21− id: container
21+ id: root
22+ objectName: "surfaceContainer"
2223 property Item surface: null
23− property bool removing: false
24+ property bool hadSurface: false
2425
2526 onSurfaceChanged: {
2627 if (surface) {
27− surface.parent = container;
28− surface.z = 1;
28+ surface.parent = root;
29+ } else {
30+ hadSurface = true;
2931 }
3032 }
3133 Binding {
3234 target: surface
33− property: "anchors.fill"; value: container
35+ property: "anchors.fill"; value: root
3436 }
3537
36− Connections {
37− target: surface
38− onRemoved: {
39− container.removing = true;
40−
41− var childSurfaces = surface.childSurfaces;
42− for (var i=0; i<childSurfaces.length; i++) {
43− childSurfaces[i].removed();
44− }
45−
46− animateOut();
38+ states: [
39+ State {
40+ name: "zombie"
41+ when: surface && !surface.live
4742 }
48− }
49−
50− Repeater {
51− model: surface ? surface.childSurfaces : null
52−
53− delegate: Loader {
54− z: 2
55− anchors {
56− fill: container
57− topMargin: container.surface.anchors.topMargin
58− rightMargin: container.surface.anchors.rightMargin
59− bottomMargin: container.surface.anchors.bottomMargin
60− leftMargin: container.surface.anchors.leftMargin
43+ ]
44+ transitions: [
45+ Transition {
46+ from: ""; to: "zombie"
47+ SequentialAnimation {
48+ UbuntuNumberAnimation { target: surface; property: "opacity"; to: 0.0
49+ duration: UbuntuAnimation.BriskDuration }
50+ PropertyAction { target: surface; property: "visible"; value: false }
51+ ScriptAction { script: { if (root.surface) { root.surface.release(); } } }
6152 }
62−
63− // Only way to do recursive qml items.
64− source: Qt.resolvedUrl("SurfaceContainer.qml")
65− onLoaded: {
66− item.surface = modelData;
67− item.animateIn();
68− }
69− }
70− }
71−
72− function animateIn() {
73− var animation = swipeFromBottom.createObject(container, { "surface": container.surface });
74− animation.start();
75−
76− var tmp = d.animations;
77− tmp.push(animation);
78− d.animations = tmp;
79− }
80−
81− function animateOut() {
82− if (d.animations.length > 0) {
83− var tmp = d.animations;
84− var popped = tmp.pop();
85− popped.end();
86− d.animations = tmp;
8753 }
88− }
89−
90− QtObject {
91− id: d
92− property var animations: []
93− property var currentAnimation: animations.length > 0 ? animations[animations.length-1] : undefined
94− }
95−
96− Component {
97− id: swipeFromBottom
98− SwipeFromBottomAnimation {}
99− }
54+ ]
10055}
tests/mocks/AccountsService/AccountsService.qmltypes+1
@@ -26,5 +26,6 @@ Module {
2626 Property { name: "backgroundFile"; type: "string" }
2727 Property { name: "statsWelcomeScreen"; type: "bool" }
2828 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
29+ Property { name: "failedLogins"; type: "uint" }
2930 }
3031}
tests/mocks/LightDM/LightDM.qmltypes+2
@@ -27,6 +27,7 @@ Module {
2727 name: "showPrompt"
2828 Parameter { name: "text"; type: "string" }
2929 Parameter { name: "isSecret"; type: "bool" }
30+ Parameter { name: "isDefaultPrompt"; type: "bool" }
3031 }
3132 Signal { name: "authenticationComplete" }
3233 Signal {
@@ -34,6 +35,7 @@ Module {
3435 Parameter { name: "user"; type: "string" }
3536 }
3637 Signal { name: "isActiveChanged" }
38+ Signal { name: "isAuthenticatedChanged" }
3739 Signal { name: "showGreeter" }
3840 Signal {
3941 name: "requestAuthenticationUser"
tests/mocks/Ubuntu/SystemImage/SystemImage.qmltypes+3−1
@@ -4,13 +4,15 @@ import QtQuick.tooling 1.1
44// It is used for QML tooling purposes only.
55//
66// This file was auto-generated by:
7−// 'qmlplugindump -notrelocatable Ubuntu.SystemImage 0.1 plugins'
7+// 'qmlplugindump -notrelocatable Ubuntu.SystemImage 0.1 tests/mocks'
88
99Module {
1010 Component {
1111 name: "MockSystemImage"
1212 prototype: "QObject"
1313 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
14+ isCreatable: false
15+ isSingleton: true
1416 exportMetaObjectRevisions: [0]
1517 Signal { name: "resettingDevice" }
1618 Method { name: "factoryReset" }
tests/mocks/Unity/Application/Application.qmltypes+115−70
@@ -13,58 +13,24 @@ Module {
1313 exports: ["Unity.Application/ApplicationInfo 0.1"]
1414 exportMetaObjectRevisions: [0]
1515 Property { name: "fullscreen"; type: "bool" }
16− Property { name: "stage"; type: "Stage" }
17− Property { name: "surface"; type: "MirSurfaceItem"; isReadonly: true; isPointer: true }
18− Property { name: "promptSurfaces"; type: "MirSurfaceItem"; isList: true; isReadonly: true }
19− Property { name: "imageQml"; type: "string" }
20− Property { name: "windowQml"; type: "string" }
21− Signal {
22− name: "appIdChanged"
23− Parameter { type: "string" }
24− }
25− Signal {
26− name: "nameChanged"
27− Parameter { type: "string" }
28− }
29− Signal {
30− name: "commentChanged"
31− Parameter { type: "string" }
32− }
33− Signal {
34− name: "iconChanged"
35− Parameter { type: "QUrl" }
36− }
16+ Property { name: "session"; type: "Session"; isReadonly: true; isPointer: true }
17+ Property { name: "manualSurfaceCreation"; type: "bool" }
3718 Signal {
38− name: "stageChanged"
39− Parameter { type: "Stage" }
40− }
41− Signal {
42− name: "stateChanged"
43− Parameter { type: "State" }
44− }
45− Signal {
46− name: "focusedChanged"
47− Parameter { type: "bool" }
19+ name: "sessionChanged"
20+ Parameter { type: "Session"; isPointer: true }
4821 }
4922 Signal {
5023 name: "fullscreenChanged"
51− Parameter { type: "bool" }
52− }
53− Signal {
54− name: "imageQmlChanged"
55− Parameter { type: "string" }
56− }
57− Signal {
58− name: "windowQmlChanged"
59− Parameter { type: "string" }
24+ Parameter { name: "value"; type: "bool" }
6025 }
6126 Signal {
62− name: "screenshotChanged"
63− Parameter { type: "QUrl" }
27+ name: "manualSurfaceCreationChanged"
28+ Parameter { name: "value"; type: "bool" }
6429 }
65− Signal {
66− name: "surfaceChanged"
67− Parameter { type: "MirSurfaceItem"; isPointer: true }
30+ Method { name: "createSession" }
31+ Method {
32+ name: "setState"
33+ Parameter { name: "value"; type: "State" }
6834 }
6935 }
7036 Component {
@@ -198,17 +164,50 @@ Module {
198164 type: "bool"
199165 Parameter { name: "appId"; type: "string" }
200166 }
167+ Method { name: "availableApplications"; type: "QStringList" }
201168 Method {
202− name: "updateScreenshot"
203− type: "bool"
169+ name: "add"
170+ type: "ApplicationInfo*"
204171 Parameter { name: "appId"; type: "string" }
205172 }
206− Method { name: "availableApplications"; type: "QStringList" }
173+ }
174+ Component {
175+ name: "ApplicationTestInterface"
176+ prototype: "QDBusAbstractAdaptor"
177+ exports: ["Unity.Application/ApplicationTest 0.1"]
178+ isCreatable: false
179+ isSingleton: true
180+ exportMetaObjectRevisions: [0]
181+ Method {
182+ name: "addChildSession"
183+ type: "uint"
184+ Parameter { name: "appId"; type: "string" }
185+ Parameter { name: "existingSessionId"; type: "uint" }
186+ Parameter { name: "surfaceImage"; type: "string" }
187+ }
188+ Method {
189+ name: "removeSession"
190+ Parameter { name: "sessionId"; type: "uint" }
191+ }
192+ Method {
193+ name: "addChildSession"
194+ type: "Session*"
195+ Parameter { name: "existingSession"; type: "Session"; isPointer: true }
196+ Parameter { name: "surfaceImage"; type: "string" }
197+ }
198+ Method {
199+ name: "removeSession"
200+ Parameter { name: "existingSession"; type: "Session"; isPointer: true }
201+ }
202+ Method {
203+ name: "removeSurface"
204+ Parameter { name: "existingSurface"; type: "MirSurfaceItem"; isPointer: true }
205+ }
207206 }
208207 Component {
209208 name: "MirSurfaceItem"
210209 defaultProperty: "data"
211− prototype: "QQuickPaintedItem"
210+ prototype: "QQuickItem"
212211 exports: ["Unity.Application/MirSurfaceItem 0.1"]
213212 isCreatable: false
214213 exportMetaObjectRevisions: [0]
@@ -238,8 +237,7 @@ Module {
238237 Property { name: "type"; type: "Type"; isReadonly: true }
239238 Property { name: "state"; type: "State"; isReadonly: true }
240239 Property { name: "name"; type: "string"; isReadonly: true }
241− Property { name: "parentSurface"; type: "MirSurfaceItem"; isReadonly: true; isPointer: true }
242− Property { name: "childSurfaces"; type: "MirSurfaceItem"; isList: true; isReadonly: true }
240+ Property { name: "live"; type: "bool"; isReadonly: true }
243241 Signal {
244242 name: "typeChanged"
245243 Parameter { type: "Type" }
@@ -249,22 +247,72 @@ Module {
249247 Parameter { type: "State" }
250248 }
251249 Signal {
252− name: "nameChanged"
253− Parameter { type: "string" }
254− }
255− Signal {
256− name: "parentSurfaceChanged"
257− Parameter { type: "MirSurfaceItem"; isPointer: true }
250+ name: "liveChanged"
251+ Parameter { name: "live"; type: "bool" }
258252 }
259− Signal { name: "removed" }
260253 Signal { name: "inputMethodRequested" }
261254 Signal { name: "inputMethodDismissed" }
255+ Signal { name: "deregister" }
262256 Method {
263257 name: "setState"
264258 Parameter { name: "newState"; type: "State" }
265259 }
266260 Method { name: "release" }
267261 }
262+ Component { name: "QDBusAbstractAdaptor"; prototype: "QObject" }
263+ Component {
264+ name: "Session"
265+ prototype: "QObject"
266+ exports: ["Unity.Application/Session 0.1"]
267+ isCreatable: false
268+ exportMetaObjectRevisions: [0]
269+ Property { name: "name"; type: "string"; isReadonly: true }
270+ Property { name: "surface"; type: "MirSurfaceItem"; isReadonly: true; isPointer: true }
271+ Property { name: "parentSession"; type: "Session"; isReadonly: true; isPointer: true }
272+ Property { name: "childSessions"; type: "SessionModel"; isReadonly: true; isPointer: true }
273+ Property { name: "live"; type: "bool"; isReadonly: true }
274+ Signal {
275+ name: "surfaceChanged"
276+ Parameter { type: "MirSurfaceItem"; isPointer: true }
277+ }
278+ Signal {
279+ name: "parentSessionChanged"
280+ Parameter { type: "Session"; isPointer: true }
281+ }
282+ Signal {
283+ name: "liveChanged"
284+ Parameter { name: "live"; type: "bool" }
285+ }
286+ Signal { name: "deregister" }
287+ Method { name: "createSurface" }
288+ Method { name: "release" }
289+ Method {
290+ name: "addChildSession"
291+ Parameter { name: "session"; type: "Session"; isPointer: true }
292+ }
293+ }
294+ Component {
295+ name: "SessionManager"
296+ prototype: "QObject"
297+ exports: ["Unity.Application/SessionManager 0.1"]
298+ isCreatable: false
299+ isSingleton: true
300+ exportMetaObjectRevisions: [0]
301+ Signal {
302+ name: "sessionStarting"
303+ Parameter { name: "session"; type: "Session"; isPointer: true }
304+ }
305+ Signal {
306+ name: "sessionStopping"
307+ Parameter { name: "session"; type: "Session"; isPointer: true }
308+ }
309+ Method {
310+ name: "createSession"
311+ type: "Session*"
312+ Parameter { name: "name"; type: "string" }
313+ Parameter { name: "screenshot"; type: "QUrl" }
314+ }
315+ }
268316 Component {
269317 name: "SurfaceManager"
270318 prototype: "QObject"
@@ -281,6 +329,14 @@ Module {
281329 name: "surfaceDestroyed"
282330 Parameter { name: "surface"; type: "MirSurfaceItem"; isPointer: true }
283331 }
332+ Method {
333+ name: "createSurface"
334+ type: "MirSurfaceItem*"
335+ Parameter { name: "name"; type: "string" }
336+ Parameter { name: "type"; type: "MirSurfaceItem::Type" }
337+ Parameter { name: "state"; type: "MirSurfaceItem::State" }
338+ Parameter { name: "screenshot"; type: "QUrl" }
339+ }
284340 Method { name: "inputMethodSurface"; type: "MirSurfaceItem*" }
285341 }
286342 Component {
@@ -312,7 +368,6 @@ Module {
312368 Property { name: "stage"; type: "Stage"; isReadonly: true }
313369 Property { name: "state"; type: "State"; isReadonly: true }
314370 Property { name: "focused"; type: "bool"; isReadonly: true }
315− Property { name: "screenshot"; type: "QUrl"; isReadonly: true }
316371 Signal {
317372 name: "nameChanged"
318373 Parameter { name: "name"; type: "string" }
@@ -337,10 +392,6 @@ Module {
337392 name: "focusedChanged"
338393 Parameter { name: "focused"; type: "bool" }
339394 }
340− Signal {
341− name: "screenshotChanged"
342− Parameter { name: "screenshot"; type: "QUrl" }
343− }
344395 }
345396 Component {
346397 name: "unity::shell::application::ApplicationManagerInterface"
@@ -357,8 +408,7 @@ Module {
357408 "RoleIcon": 259,
358409 "RoleStage": 260,
359410 "RoleState": 261,
360− "RoleFocused": 262,
361− "RoleScreenshot": 263
411+ "RoleFocused": 262
362412 }
363413 }
364414 Property { name: "count"; type: "int"; isReadonly: true }
@@ -408,10 +458,5 @@ Module {
408458 type: "bool"
409459 Parameter { name: "appId"; type: "string" }
410460 }
411− Method {
412− name: "updateScreenshot"
413− type: "bool"
414− Parameter { name: "appId"; type: "string" }
415− }
416461 }
417462}
tests/mocks/Unity/Application/ApplicationDBusAdaptor.cppdeleted−81
@@ -1,81 +0,0 @@
1−/*
2− * Copyright (C) 2014 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−#include "ApplicationInfo.h"
18−#include "ApplicationDBusAdaptor.h"
19−#include "ApplicationManager.h"
20−#include "SurfaceManager.h"
21−#include "MirSurfaceItem.h"
22−
23−quint32 nextId = 0;
24−
25−ApplicationDBusAdaptor::ApplicationDBusAdaptor(ApplicationManager* applicationManager)
26− : QDBusAbstractAdaptor(applicationManager)
27− , m_applicationManager(applicationManager)
28−{
29−}
30−
31−MirSurfaceItem* topSurface(MirSurfaceItem* surface)
32−{
33− if (!surface)
34− return nullptr;
35−
36− MirSurfaceItem* child = nullptr;
37− Q_FOREACH (MirSurfaceItem *childSurface, surface->childSurfaceList()) {
38− child = topSurface(childSurface);
39− if (child) {
40− break;
41− }
42− }
43− return child ? child : surface;
44−}
45−
46−quint32 ApplicationDBusAdaptor::addPromptSurface(const QString &appId, const QString &surfaceImage)
47−{
48− qDebug() << "ApplicationDBusAdaptor::addPromptSurface to " << appId;
49−
50− ApplicationInfo* application = m_applicationManager->findApplication(appId);
51− if (!application) {
52− qDebug() << "ApplicationDBusAdaptor::addChildSurface - No application found for " << appId;
53− return 0;
54− }
55− quint32 surfaceId = ++nextId;
56− MirSurfaceItem* surface = new MirSurfaceItem(QString("%1-ChildSurface%2").arg(appId).arg(surfaceId),
57− MirSurfaceItem::Normal,
58− MirSurfaceItem::Maximized,
59− QUrl(surfaceImage));
60− m_childItems[surfaceId] = surface;
61−
62− if (application->promptSurfaceList().count() > 0) {
63− surface->setParentSurface(topSurface(application->promptSurfaceList()[0]));
64− } else {
65− application->addPromptSurface(surface);
66− }
67−
68− return surfaceId;
69−}
70−
71−void ApplicationDBusAdaptor::removeChildSurface(int surfaceId)
72−{
73− qDebug() << "ApplicationDBusAdaptor::removeChildSurface - " << surfaceId;
74−
75− if (!m_childItems.contains(surfaceId)) {
76− qDebug() << "ApplicationDBusAdaptor::removeChildSurface - No added surface for " << surfaceId;
77− return;
78− }
79− MirSurfaceItem* surface = m_childItems.take(surfaceId);
80− Q_EMIT surface->removed();
81−}
tests/mocks/Unity/Application/ApplicationInfo.cpp+36−85
@@ -15,8 +15,8 @@
1515 */
1616
1717#include "ApplicationInfo.h"
18−#include "MirSurfaceItem.h"
19−#include "SurfaceManager.h"
18+#include "Session.h"
19+#include "SessionManager.h"
2020
2121#include <paths.h>
2222
@@ -33,9 +33,8 @@ ApplicationInfo::ApplicationInfo(const QString &appId, QObject *parent)
3333 , m_state(Starting)
3434 , m_focused(false)
3535 , m_fullscreen(false)
36− , m_surface(0)
36+ , m_session(0)
3737 , m_manualSurfaceCreation(false)
38− , m_parentItem(0)
3938{
4039}
4140
@@ -45,107 +44,50 @@ ApplicationInfo::ApplicationInfo(QObject *parent)
4544 , m_state(Starting)
4645 , m_focused(false)
4746 , m_fullscreen(false)
48− , m_surface(0)
47+ , m_session(0)
4948 , m_manualSurfaceCreation(false)
50− , m_parentItem(0)
5149{
5250}
5351
5452ApplicationInfo::~ApplicationInfo()
5553{
56− if (m_surface) {
57− Q_EMIT SurfaceManager::singleton()->surfaceDestroyed(m_surface);
58− m_surface->deleteLater();
59− setSurface(nullptr);
60− }
54+ delete m_session;
6155}
6256
63−void ApplicationInfo::createSurface()
57+void ApplicationInfo::createSession()
6458{
65− if (m_surface || state() == ApplicationInfo::Stopped) return;
59+ if (m_session || state() == ApplicationInfo::Stopped) { return; }
6660
6761 QUrl screenshotUrl = QString("file://%1").arg(m_screenshotFileName);
68−
69− setSurface(new MirSurfaceItem(name(),
70− MirSurfaceItem::Normal,
71− fullscreen() ? MirSurfaceItem::Fullscreen : MirSurfaceItem::Maximized,
72− screenshotUrl));
62+ setSession(SessionManager::singleton()->createSession(appId(), screenshotUrl));
7363}
7464
75−void ApplicationInfo::setSurface(MirSurfaceItem* surface)
65+void ApplicationInfo::setSession(Session* session)
7666{
77− qDebug() << "Application::setSurface - appId=" << appId() << "surface=" << surface;
78− if (m_surface == surface)
67+ qDebug() << "Application::setSession - appId=" << appId() << "session=" << session;
68+ if (m_session == session)
7969 return;
8070
81− if (m_surface) {
82− m_surface->setApplication(nullptr);
83− m_surface->setParent(nullptr);
84− SurfaceManager::singleton()->unregisterSurface(m_surface);
85− }
86−
87− m_surface = surface;
88−
89− if (m_surface) {
90− m_surface->setApplication(this);
91− m_surface->setParent(this);
92− SurfaceManager::singleton()->registerSurface(m_surface);
71+ if (m_session) {
72+ disconnect(this, 0, m_session, 0);
73+ m_session->setApplication(nullptr);
74+ m_session->setParent(nullptr);
75+ Q_EMIT m_session->deregister();
9376 }
9477
95− Q_EMIT surfaceChanged(m_surface);
96− SurfaceManager::singleton()->registerSurface(m_surface);
97−}
78+ m_session = session;
9879
99−void ApplicationInfo::addPromptSurface(MirSurfaceItem* surface)
100−{
101− qDebug() << "ApplicationInfo::addPromptSurface " << surface->name() << " to " << name();
102− if (surface == m_surface || m_promptSurfaces.contains(surface)) return;
80+ if (m_session) {
81+ m_session->setApplication(this);
82+ m_session->setParent(this);
83+ SessionManager::singleton()->registerSession(m_session);
10384
104− surface->setApplication(this);
105− m_promptSurfaces.append(surface);
106− Q_EMIT promptSurfacesChanged();
107−}
108−
109−void ApplicationInfo::removeSurface(MirSurfaceItem* surface)
110−{
111− if (m_surface == surface) {
112− setSurface(nullptr);
113− } else if (m_promptSurfaces.contains(surface)) {
114− qDebug() << "Application::removeSurface " << surface->name() << " from " << name();
115−
116− m_promptSurfaces.removeAll(surface);
117− surface->setApplication(nullptr);
118−
119− Q_EMIT promptSurfacesChanged();
85+ if (!m_manualSurfaceCreation) {
86+ QTimer::singleShot(500, m_session, SLOT(createSurface()));
87+ }
12088 }
121−}
12289
123−QList<MirSurfaceItem*> ApplicationInfo::promptSurfaceList() const
124−{
125− return m_promptSurfaces;
126−}
127−
128−QQmlListProperty<MirSurfaceItem> ApplicationInfo::promptSurfaces()
129−{
130− return QQmlListProperty<MirSurfaceItem>(this,
131− 0,
132− ApplicationInfo::promptSurfaceCount,
133− ApplicationInfo::promptSurfaceAt);
134−}
135−
136−int ApplicationInfo::promptSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop)
137−{
138− ApplicationInfo *p = qobject_cast<ApplicationInfo*>(prop->object);
139− return p->m_promptSurfaces.count();
140−}
141−
142−MirSurfaceItem* ApplicationInfo::promptSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index)
143−{
144− ApplicationInfo *p = qobject_cast<ApplicationInfo*>(prop->object);
145−
146− if (index < 0 || index >= p->m_promptSurfaces.count())
147− return nullptr;
148− return p->m_promptSurfaces[index];
90+ Q_EMIT sessionChanged(m_session);
14991}
15092
15193void ApplicationInfo::setIconId(const QString &iconId)
@@ -157,9 +99,18 @@ void ApplicationInfo::setIconId(const QString &iconId)
15799
158100void ApplicationInfo::setScreenshotId(const QString &screenshotId)
159101{
160− m_screenshotFileName = QString("%1/Dash/graphics/phone/screenshots/%2@12.png")
102+ QString screenshotFileName = QString("%1/Dash/graphics/phone/screenshots/%2@12.png")
161103 .arg(qmlDirectory())
162104 .arg(screenshotId);
105+
106+ if (screenshotFileName != m_screenshotFileName) {
107+ m_screenshotFileName = screenshotFileName;
108+
109+ QUrl screenshotUrl = QString("file://%1").arg(m_screenshotFileName);
110+ if (m_session) {
111+ m_session->setScreenshot(screenshotUrl);
112+ }
113+ }
163114}
164115
165116void ApplicationInfo::setName(const QString &value)
@@ -193,7 +144,7 @@ void ApplicationInfo::setState(State value)
193144 Q_EMIT stateChanged(value);
194145
195146 if (!m_manualSurfaceCreation && m_state == ApplicationInfo::Running) {
196− QTimer::singleShot(1000, this, SLOT(createSurface()));
147+ QTimer::singleShot(500, this, SLOT(createSession()));
197148 }
198149 }
199150}
tests/mocks/Unity/Application/ApplicationInfo.h+11−23
@@ -17,8 +17,10 @@
1717#ifndef APPLICATION_H
1818#define APPLICATION_H
1919
20+#include "SurfaceManager.h"
21+#include "MirSurfaceItemModel.h"
22+
2023#include <QObject>
21−#include <QQmlComponent>
2224
2325class QQuickItem;
2426class MirSurfaceItem;
@@ -32,8 +34,7 @@ class ApplicationInfo : public ApplicationInfoInterface {
3234 Q_OBJECT
3335
3436 Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged)
35− Q_PROPERTY(MirSurfaceItem* surface READ surface NOTIFY surfaceChanged)
36− Q_PROPERTY(QQmlListProperty<MirSurfaceItem> promptSurfaces READ promptSurfaces NOTIFY promptSurfacesChanged DESIGNABLE false)
37+ Q_PROPERTY(Session* session READ session NOTIFY sessionChanged)
3738
3839 // Only exists in this fake implementation
3940
@@ -72,32 +73,23 @@ public:
7273 void setFullscreen(bool value);
7374 bool fullscreen() const { return m_fullscreen; }
7475
75− void setSurface(MirSurfaceItem* surface);
76− MirSurfaceItem* surface() const { return m_surface; }
77−
78− void removeSurface(MirSurfaceItem* surface);
79−
80− void addPromptSurface(MirSurfaceItem* surface);
81− QList<MirSurfaceItem*> promptSurfaceList() const;
82− QQmlListProperty<MirSurfaceItem> promptSurfaces();
83−
8476 bool manualSurfaceCreation() const { return m_manualSurfaceCreation; }
8577 void setManualSurfaceCreation(bool value);
8678
79+public:
80+ void setSession(Session* session);
81+ Session* session() const { return m_session; }
82+
8783Q_SIGNALS:
88− void surfaceChanged(MirSurfaceItem*);
89− void promptSurfacesChanged();
84+ void sessionChanged(Session*);
9085 void fullscreenChanged(bool value);
9186 void manualSurfaceCreationChanged(bool value);
9287
9388public Q_SLOTS:
94− Q_INVOKABLE void createSurface();
89+ Q_INVOKABLE void createSession();
9590
9691private:
97− static int promptSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop);
98− static MirSurfaceItem* promptSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index);
9992 void setIcon(const QUrl &value);
100− void setScreenshot(const QUrl &value);
10193
10294 QString m_screenshotFileName;
10395
@@ -108,15 +100,11 @@ private:
108100 State m_state;
109101 bool m_focused;
110102 bool m_fullscreen;
111− MirSurfaceItem* m_surface;
103+ Session* m_session;
112104
113105 bool m_manualSurfaceCreation;
114−
115− QQuickItem *m_parentItem;
116− QList<MirSurfaceItem*> m_promptSurfaces;
117106};
118107
119108Q_DECLARE_METATYPE(ApplicationInfo*)
120−Q_DECLARE_METATYPE(QQmlListProperty<MirSurfaceItem>)
121109
122110#endif // APPLICATION_H
tests/mocks/Unity/Application/ApplicationManager.cpp+9−16
@@ -15,9 +15,9 @@
1515 */
1616
1717#include "ApplicationManager.h"
18−#include "ApplicationDBusAdaptor.h"
1918#include "ApplicationInfo.h"
20−#include "MirSurfaceItem.h"
19+#include "Session.h"
20+#include "ApplicationTestInterface.h"
2121
2222#include <paths.h>
2323
@@ -36,11 +36,6 @@ ApplicationManager *ApplicationManager::singleton()
3636{
3737 if (!the_application_manager) {
3838 the_application_manager = new ApplicationManager();
39− new ApplicationDBusAdaptor(the_application_manager);
40−
41− QDBusConnection connection = QDBusConnection::sessionBus();
42− connection.registerService("com.canonical.Unity8");
43− connection.registerObject("/com/canonical/Unity8/Mocks", the_application_manager);
4439 }
4540 return the_application_manager;
4641}
@@ -49,9 +44,8 @@ ApplicationManager::ApplicationManager(QObject *parent)
4944 : ApplicationManagerInterface(parent)
5045 , m_suspended(false)
5146{
52− m_roleNames.insert(RoleSurface, "surface");
47+ m_roleNames.insert(RoleSession, "session");
5348 m_roleNames.insert(RoleFullscreen, "fullscreen");
54− m_roleNames.insert(RoleApplication, "application");
5549
5650 buildListOfAvailableApplications();
5751
@@ -105,12 +99,10 @@ QVariant ApplicationManager::data(const QModelIndex& index, int role) const {
10599 return app->state();
106100 case RoleFocused:
107101 return app->focused();
108− case RoleSurface:
109− return QVariant::fromValue(app->surface());
102+ case RoleSession:
103+ return QVariant::fromValue(app->session());
110104 case RoleFullscreen:
111105 return app->fullscreen();
112− case RoleApplication:
113− return QVariant::fromValue(app);
114106 default:
115107 return QVariant();
116108 }
@@ -154,10 +146,10 @@ void ApplicationManager::add(ApplicationInfo *application) {
154146 Q_EMIT countChanged();
155147 if (count() == 1) Q_EMIT emptyChanged(isEmpty()); // was empty but not anymore
156148
157− connect(application, &ApplicationInfo::surfaceChanged, this, [application, this]() {
149+ connect(application, &ApplicationInfo::sessionChanged, this, [application, this]() {
158150 QModelIndex appIndex = findIndex(application);
159151 if (!appIndex.isValid()) return;
160− Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << ApplicationManager::RoleSurface);
152+ Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << ApplicationManager::RoleSession);
161153 });
162154 connect(application, &ApplicationInfo::focusedChanged, this, [application, this]() {
163155 QModelIndex appIndex = findIndex(application);
@@ -181,7 +173,7 @@ void ApplicationManager::remove(ApplicationInfo *application) {
181173 Q_EMIT countChanged();
182174 if (isEmpty()) Q_EMIT emptyChanged(isEmpty());
183175 }
184− disconnect(application, 0, this, 0);
176+ application->disconnect(this);
185177}
186178
187179void ApplicationManager::move(int from, int to) {
@@ -464,6 +456,7 @@ void ApplicationManager::buildListOfAvailableApplications()
464456 m_availableApplications.append(application);
465457}
466458
459+
467460QStringList ApplicationManager::availableApplications()
468461{
469462 QStringList appIds;
tests/mocks/Unity/Application/ApplicationManager.h+1−2
@@ -52,9 +52,8 @@ class ApplicationManager : public ApplicationManagerInterface {
5252 static ApplicationManager *singleton();
5353
5454 enum MoreRoles {
55− RoleSurface = RoleFocused+1,
55+ RoleSession = RoleFocused+1,
5656 RoleFullscreen,
57− RoleApplication,
5857 };
5958 enum Role {
6059 Dash, Default, Indicators, Notifications, Greeter, Launcher, OnScreenKeyboard,
tests/mocks/Unity/Application/ApplicationTestInterface.cppnew file+117
@@ -0,0 +1,117 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "ApplicationInfo.h"
18+#include "ApplicationTestInterface.h"
19+#include "ApplicationManager.h"
20+#include "SessionManager.h"
21+#include "SurfaceManager.h"
22+#include "Session.h"
23+#include "MirSurfaceItem.h"
24+
25+#include <paths.h>
26+
27+#include <QtDBus/QtDBus>
28+
29+quint32 nextId = 0;
30+
31+ApplicationTestInterface::ApplicationTestInterface(QObject* parent)
32+ : QDBusAbstractAdaptor(parent)
33+{
34+ QDBusConnection connection = QDBusConnection::sessionBus();
35+ connection.registerService("com.canonical.Unity8");
36+ connection.registerObject("/com/canonical/Unity8/Mocks", parent);
37+}
38+
39+Session* ApplicationTestInterface::addChildSession(Session* existingSession, const QString& surfaceImage)
40+{
41+ if (!existingSession) return nullptr;
42+
43+ QUrl screenshotUrl = QString("file://%1/Dash/graphics/phone/screenshots/%2@12.png")
44+ .arg(qmlDirectory())
45+ .arg(surfaceImage);
46+
47+ Session* session = SessionManager::singleton()->createSession(
48+ QString("%1-Child%2").arg(existingSession->name())
49+ .arg(existingSession->childSessions()->count()),
50+ screenshotUrl);
51+ existingSession->addChildSession(session);
52+ session->createSurface();
53+
54+ return session;
55+}
56+
57+void ApplicationTestInterface::removeSession(Session* existingSession)
58+{
59+ qDebug() << "ApplicationTestInterface::removeSession - " << existingSession;
60+
61+ if (existingSession)
62+ existingSession->setLive(false);
63+}
64+
65+void ApplicationTestInterface::removeSurface(MirSurfaceItem* existingSurface)
66+{
67+ qDebug() << "ApplicationTestInterface::removeSurface - " << existingSurface;
68+
69+ if (existingSurface)
70+ existingSurface->setLive(false);
71+}
72+
73+quint32 ApplicationTestInterface::addChildSession(const QString& appId, quint32 existingSessionId, const QString& surfaceImage)
74+{
75+ qDebug() << "ApplicationTestInterface::addChildSession to " << appId;
76+
77+ ApplicationInfo* application = ApplicationManager::singleton()->findApplication(appId);
78+ if (!application) {
79+ qDebug() << "ApplicationTestInterface::addChildSession - No application found for " << appId;
80+ return 0;
81+ }
82+
83+ Session* parentSession = nullptr;
84+ if (m_childSessions.contains(existingSessionId)) {
85+ parentSession = m_childSessions[existingSessionId];
86+ } else if (application->session()) {
87+ parentSession = application->session();
88+ } else {
89+ qDebug() << "ApplicationTestInterface::addChildSession - No session for " << appId << ":" << existingSessionId;
90+ return 0;
91+ }
92+
93+ QUrl screenshotUrl = QString("file://%1/Dash/graphics/phone/screenshots/%2@12.png")
94+ .arg(qmlDirectory())
95+ .arg(surfaceImage);
96+
97+ quint32 sessionId = ++nextId;
98+ Session* session = SessionManager::singleton()->createSession(
99+ QString("%1-Child%2").arg(parentSession->name())
100+ .arg(parentSession->childSessions()->count()),
101+ screenshotUrl);
102+ parentSession->addChildSession(session);
103+ session->createSurface();
104+ m_childSessions[sessionId] = session;
105+
106+ return sessionId;
107+}
108+
109+void ApplicationTestInterface::removeSession(quint32 sessionId)
110+{
111+ if (!m_childSessions.contains(sessionId)) {
112+ qDebug() << "ApplicationTestInterface::removeSession - No added session for " << sessionId;
113+ return;
114+ }
115+ Session* session = m_childSessions.take(sessionId);
116+ removeSession(session);
117+}
tests/mocks/Unity/Application/ApplicationDBusAdaptor.h → tests/mocks/Unity/Application/ApplicationTestInterface.hrenamed+13−11
@@ -14,30 +14,32 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−#ifndef APPLICATIONDBUSADAPTOR_H
18−#define APPLICATIONDBUSADAPTOR_H
17+#ifndef APPLICATIONTESTINTERFACE_H
18+#define APPLICATIONTESTINTERFACE_H
1919
2020#include <QtDBus/QtDBus>
2121
2222class ApplicationManager;
23−class SurfaceManager;
23+class Session;
2424class MirSurfaceItem;
2525
26−class ApplicationDBusAdaptor : public QDBusAbstractAdaptor
26+class ApplicationTestInterface : public QDBusAbstractAdaptor
2727{
2828 Q_OBJECT
2929 Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity8.Mocks.Application")
3030public:
31− ApplicationDBusAdaptor(ApplicationManager* applicationManager);
31+ ApplicationTestInterface(QObject* parent = 0);
32+
33+ Q_INVOKABLE Session* addChildSession(Session* existingSession, const QString& surfaceImage);
34+ Q_INVOKABLE void removeSession(Session* existingSession);
35+ Q_INVOKABLE void removeSurface(MirSurfaceItem* existingSurface);
3236
3337public Q_SLOTS:
34− quint32 addPromptSurface(const QString& appId, const QString& surfaceImage);
35− void removeChildSurface(int surfaceId);
38+ quint32 addChildSession(const QString& appId, quint32 existingSessionId, const QString& surfaceImage);
39+ void removeSession(quint32 sessionId);
3640
3741private:
38− ApplicationManager* m_applicationManager;
39−
40− QHash<quint32, MirSurfaceItem*> m_childItems;
42+ QHash<quint32, Session*> m_childSessions;
4143};
4244
43−#endif // APPLICATIONDBUSADAPTOR_H
45+#endif // APPLICATIONTESTINTERFACE_H
tests/mocks/Unity/Application/CMakeLists.txt+6−1
@@ -2,12 +2,17 @@ pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=3)
22
33set(FakeUnityApplicationQml_SOURCES
44 plugin.cpp
5− ApplicationDBusAdaptor.cpp
65 ApplicationInfo.cpp
76 ApplicationManager.cpp
87 ApplicationScreenshotProvider.cpp
8+ ApplicationTestInterface.cpp
99 MirSurfaceItem.cpp
10+ MirSurfaceItemModel.h
11+ ObjectListModel.h
12+ Session.cpp
13+ SessionManager.cpp
1014 SurfaceManager.cpp
15+ SessionModel.h
1116 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
1217 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
1318)
tests/mocks/Unity/Application/MirSurfaceItem.cpp+19−79
@@ -15,7 +15,7 @@
1515 */
1616
1717#include "MirSurfaceItem.h"
18−#include "ApplicationInfo.h"
18+#include "Session.h"
1919
2020#include <paths.h>
2121
@@ -34,11 +34,11 @@ MirSurfaceItem::MirSurfaceItem(const QString& name,
3434 const QString &qmlFilePath,
3535 QQuickItem *parent)
3636 : QQuickItem(parent)
37− , m_application(nullptr)
37+ , m_session(nullptr)
3838 , m_name(name)
3939 , m_type(type)
4040 , m_state(state)
41− , m_parentSurface(nullptr)
41+ , m_live(true)
4242 , m_qmlItem(nullptr)
4343 , m_screenshotUrl(screenshot)
4444{
@@ -83,16 +83,9 @@ MirSurfaceItem::MirSurfaceItem(const QString& name,
8383MirSurfaceItem::~MirSurfaceItem()
8484{
8585 qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << name();
86−
87− QList<MirSurfaceItem*> children(m_children);
88− for (MirSurfaceItem* child : children) {
89− child->setParentSurface(nullptr);
86+ if (m_session) {
87+ m_session->setSurface(nullptr);
9088 }
91− if (m_parentSurface)
92− m_parentSurface->removeChildSurface(this);
93−
94− if (m_application)
95− m_application->removeSurface(this);
9689}
9790
9891void MirSurfaceItem::printComponentErrors()
@@ -105,91 +98,38 @@ void MirSurfaceItem::printComponentErrors()
10598
10699void MirSurfaceItem::release()
107100{
108− QList<MirSurfaceItem*> children(m_children);
109− for (MirSurfaceItem* child : children) {
110− child->release();
111− }
112− if (m_parentSurface) {
113− m_parentSurface->removeChildSurface(this);
114− }
101+ qDebug() << "MirSurfaceItem::release " << name();
115102
116− if (m_application) {
117− m_application->removeSurface(this);
103+ if (m_session) {
104+ m_session->setSurface(nullptr);
118105 }
119106 if (!parent()) {
120107 deleteLater();
121108 }
122109}
123110
124−void MirSurfaceItem::setApplication(ApplicationInfo* application)
111+void MirSurfaceItem::setSession(Session* session)
125112{
126− m_application = application;
113+ m_session = session;
127114}
128115
129−void MirSurfaceItem::setParentSurface(MirSurfaceItem* surface)
116+void MirSurfaceItem::setScreenshot(const QUrl& screenshot)
130117{
131− if (m_parentSurface == surface || surface == this)
132− return;
133−
134− if (m_parentSurface) {
135− m_parentSurface->removeChildSurface(this);
136− }
137−
138− m_parentSurface = surface;
139−
140− if (m_parentSurface) {
141− m_parentSurface->addChildSurface(this);
118+ m_screenshotUrl = screenshot;
119+ if (m_qmlItem) {
120+ QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
121+ screenshotSource.write(QVariant::fromValue(m_screenshotUrl));
142122 }
143− Q_EMIT parentSurfaceChanged(surface);
144123}
145124
146−void MirSurfaceItem::addChildSurface(MirSurfaceItem* surface)
125+void MirSurfaceItem::setLive(bool live)
147126{
148− qDebug() << "MirSurfaceItem::addChildSurface " << surface->name() << " to " << name();
149−
150− m_children.append(surface);
151− Q_EMIT childSurfacesChanged();
152−}
153−
154−void MirSurfaceItem::removeChildSurface(MirSurfaceItem* surface)
155−{
156− qDebug() << "MirSurfaceItem::removeChildSurface " << surface->name() << " from " << name();
157−
158− if (m_children.contains(surface)) {
159− m_children.removeOne(surface);
160− Q_EMIT childSurfacesChanged();
127+ if (m_live != live) {
128+ m_live = live;
129+ Q_EMIT liveChanged(m_live);
161130 }
162131}
163132
164−QList<MirSurfaceItem*> MirSurfaceItem::childSurfaceList()
165−{
166− return m_children;
167−}
168−
169−QQmlListProperty<MirSurfaceItem> MirSurfaceItem::childSurfaces()
170−{
171− return QQmlListProperty<MirSurfaceItem>(this,
172− 0,
173− MirSurfaceItem::childSurfaceCount,
174− MirSurfaceItem::childSurfaceAt);
175−}
176−
177−int MirSurfaceItem::childSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop)
178−{
179− MirSurfaceItem *p = qobject_cast<MirSurfaceItem*>(prop->object);
180− return p->m_children.count();
181−}
182−
183−MirSurfaceItem* MirSurfaceItem::childSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index)
184−{
185− MirSurfaceItem *p = qobject_cast<MirSurfaceItem*>(prop->object);
186−
187− if (index < 0 || index >= p->m_children.count())
188− return nullptr;
189− return p->m_children[index];
190−}
191−
192−
193133void MirSurfaceItem::onQmlWantInputMethodChanged()
194134{
195135 QQmlProperty prop(m_qmlItem, "wantInputMethod");
tests/mocks/Unity/Application/MirSurfaceItem.h+24−31
@@ -17,11 +17,12 @@
1717#ifndef MIRSURFACEITEM_H
1818#define MIRSURFACEITEM_H
1919
20+#include "MirSurfaceItemModel.h"
21+
2022#include <QQuickItem>
21−#include <QQmlComponent>
2223#include <QUrl>
2324
24−class ApplicationInfo;
25+class Session;
2526
2627class MirSurfaceItem : public QQuickItem
2728{
@@ -31,9 +32,8 @@ class MirSurfaceItem : public QQuickItem
3132
3233 Q_PROPERTY(Type type READ type NOTIFY typeChanged)
3334 Q_PROPERTY(State state READ state NOTIFY stateChanged)
34− Q_PROPERTY(QString name READ name NOTIFY nameChanged)
35− Q_PROPERTY(MirSurfaceItem* parentSurface READ parentSurface NOTIFY parentSurfaceChanged)
36− Q_PROPERTY(QQmlListProperty<MirSurfaceItem> childSurfaces READ childSurfaces NOTIFY childSurfacesChanged DESIGNABLE false)
35+ Q_PROPERTY(QString name READ name CONSTANT)
36+ Q_PROPERTY(bool live READ live NOTIFY liveChanged)
3737
3838public:
3939 enum Type {
@@ -56,24 +56,18 @@ public:
5656 Fullscreen,
5757 };
5858
59− explicit MirSurfaceItem(const QString& name,
60− Type type,
61− State state,
62− const QUrl& screenshot,
63− const QString &qmlFilePath = QString(),
64− QQuickItem *parent = 0);
6559 ~MirSurfaceItem();
6660
6761 //getters
68− ApplicationInfo* application() const { return m_application; }
62+ Session* session() const { return m_session; }
6963 Type type() const { return m_type; }
7064 State state() const { return m_state; }
7165 QString name() const { return m_name; }
72− MirSurfaceItem* parentSurface() const { return m_parentSurface; }
73− QList<MirSurfaceItem*> childSurfaceList();
66+ bool live() const { return m_live; }
7467
75− void setApplication(ApplicationInfo* item);
76− void setParentSurface(MirSurfaceItem* item);
68+ void setSession(Session* item);
69+ void setScreenshot(const QUrl& screenshot);
70+ void setLive(bool live);
7771
7872 Q_INVOKABLE void setState(State newState);
7973 Q_INVOKABLE void release();
@@ -81,42 +75,41 @@ public:
8175Q_SIGNALS:
8276 void typeChanged(Type);
8377 void stateChanged(State);
84− void nameChanged(QString);
85− void parentSurfaceChanged(MirSurfaceItem*);
86− void childSurfacesChanged();
87−
88− void removed();
78+ void liveChanged(bool live);
8979
9080 void inputMethodRequested();
9181 void inputMethodDismissed();
9282
83+ // internal mock use
84+ void deregister();
85+
9386private Q_SLOTS:
9487 void onFocusChanged();
9588 void onComponentStatusChanged(QQmlComponent::Status status);
9689 void onQmlWantInputMethodChanged();
9790
9891private:
99− void addChildSurface(MirSurfaceItem* surface);
100− void removeChildSurface(MirSurfaceItem* surface);
101−
102− QQmlListProperty<MirSurfaceItem> childSurfaces();
103− static int childSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop);
104− static MirSurfaceItem* childSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index);
92+ explicit MirSurfaceItem(const QString& name,
93+ Type type,
94+ State state,
95+ const QUrl& screenshot,
96+ const QString &qmlFilePath = QString(),
97+ QQuickItem *parent = 0);
10598
10699 void createQmlContentItem();
107100 void printComponentErrors();
108101
109− ApplicationInfo* m_application;
102+ Session* m_session;
110103 const QString m_name;
111104 const Type m_type;
112105 State m_state;
113−
114− MirSurfaceItem* m_parentSurface;
115− QList<MirSurfaceItem*> m_children;
106+ bool m_live;
116107
117108 QQmlComponent *m_qmlContentComponent;
118109 QQuickItem *m_qmlItem;
119110 QUrl m_screenshotUrl;
111+
112+ friend class SurfaceManager;
120113};
121114
122115Q_DECLARE_METATYPE(MirSurfaceItem*)
tests/mocks/Unity/Application/MirSurfaceItemModel.hnew file+35
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef MIRSURFACEITEMMODEL_H
18+#define MIRSURFACEITEMMODEL_H
19+
20+// Local
21+#include "ObjectListModel.h"
22+
23+class MirSurfaceItem;
24+class MirSurfaceItemModel: public ObjectListModel<MirSurfaceItem>
25+{
26+ Q_OBJECT
27+public:
28+ MirSurfaceItemModel(QObject *parent = 0): ObjectListModel(parent) {}
29+
30+ Q_INVOKABLE int count() const { return rowCount(); }
31+};
32+
33+Q_DECLARE_METATYPE(MirSurfaceItemModel*)
34+
35+#endif // MIRSURFACEITEMMODEL_H
tests/mocks/Unity/Application/ObjectListModel.hnew file+106
@@ -0,0 +1,106 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef OBJECTLISTMODEL_H
18+#define OBJECTLISTMODEL_H
19+
20+// Qt
21+#include <QAbstractListModel>
22+
23+template<class TYPE>
24+class ObjectListModel : public QAbstractListModel
25+{
26+public:
27+ ObjectListModel(QObject *parent = 0)
28+ : QAbstractListModel(parent)
29+ {}
30+
31+ enum Roles {
32+ RoleModelData = Qt::UserRole,
33+ };
34+
35+ const QList<TYPE*>& list() const { return m_items; }
36+ bool contains(TYPE* item) const { return m_items.contains(item); }
37+
38+ void insert(uint index, TYPE* item)
39+ {
40+ index = qMin(index, (uint)m_items.count());
41+
42+ int existingIndex = m_items.indexOf(item);
43+ if (existingIndex != -1) {
44+ move(existingIndex, qMin(index, (uint)(m_items.count()-1)));
45+ } else {
46+ beginInsertRows(QModelIndex(), index, index);
47+ m_items.insert(index, item);
48+ endInsertRows();
49+ }
50+ }
51+
52+ void remove(TYPE* item)
53+ {
54+ int existingIndex = m_items.indexOf(item);
55+ if (existingIndex != -1) {
56+ beginRemoveRows(QModelIndex(), existingIndex, existingIndex);
57+ m_items.removeAt(existingIndex);
58+ endRemoveRows();
59+ }
60+ }
61+
62+ // from QAbstractItemModel
63+ int rowCount(const QModelIndex& = QModelIndex()) const override
64+ {
65+ return m_items.count();
66+ }
67+
68+ QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override
69+ {
70+ if (index.row() >= 0 && index.row() < m_items.count()) {
71+ if (role == RoleModelData) {
72+ TYPE *item = m_items.at(index.row());
73+ return QVariant::fromValue(item);
74+ }
75+ }
76+ return QVariant();
77+ }
78+
79+ QHash<int, QByteArray> roleNames() const
80+ {
81+ QHash<int, QByteArray> roleNames;
82+ roleNames.insert(RoleModelData, "modelData");
83+ return roleNames;
84+ }
85+
86+protected:
87+ void move(int from, int to)
88+ {
89+ if (from == to) return;
90+
91+ if (from >= 0 && from < m_items.size() && to >= 0 && to < m_items.size()) {
92+ QModelIndex parent;
93+ /* When moving an item down, the destination index needs to be incremented
94+ by one, as explained in the documentation:
95+ http://qt-project.org/doc/qt-5.0/qtcore/qabstractitemmodel.html#beginMoveRows */
96+
97+ beginMoveRows(parent, from, from, parent, to + (to > from ? 1 : 0));
98+ m_items.move(from, to);
99+ endMoveRows();
100+ }
101+ }
102+
103+ QList<TYPE*> m_items;
104+};
105+
106+#endif // OBJECTLISTMODEL_H
tests/mocks/Unity/Application/Session.cppnew file+174
@@ -0,0 +1,174 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "Session.h"
18+#include "ApplicationInfo.h"
19+#include "SessionManager.h"
20+#include "SurfaceManager.h"
21+
22+#include <QPainter>
23+#include <QQmlEngine>
24+#include <QTimer>
25+
26+Session::Session(const QString &name,
27+ const QUrl& screenshot,
28+ QObject *parent)
29+ : QObject(parent)
30+ , m_name(name)
31+ , m_live(true)
32+ , m_screenshot(screenshot)
33+ , m_application(nullptr)
34+ , m_surface(nullptr)
35+ , m_parentSession(nullptr)
36+ , m_children(new SessionModel(this))
37+{
38+ qDebug() << "Session::Session() " << this->name();
39+
40+ QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership);
41+}
42+
43+Session::~Session()
44+{
45+ qDebug() << "Session::~Session() " << name();
46+
47+ QList<Session*> children(m_children->list());
48+ for (Session* child : children) {
49+ delete child;
50+ }
51+ if (m_parentSession) {
52+ m_parentSession->removeChildSession(this);
53+ }
54+ if (m_application) {
55+ m_application->setSession(nullptr);
56+ }
57+ delete m_surface;
58+ delete m_children;
59+}
60+
61+void Session::release()
62+{
63+ qDebug() << "Session::release " << name();
64+
65+ if (m_parentSession) {
66+ m_parentSession->removeChildSession(this);
67+ }
68+ if (m_application) {
69+ m_application->setSession(nullptr);
70+ }
71+ if (!parent()) {
72+ deleteLater();
73+ }
74+}
75+
76+void Session::setApplication(ApplicationInfo* application)
77+{
78+ if (m_application == application)
79+ return;
80+
81+ m_application = application;
82+ Q_EMIT applicationChanged(application);
83+}
84+
85+void Session::setSurface(MirSurfaceItem* surface)
86+{
87+ qDebug() << "Session::setSurface - session=" << name() << "surface=" << surface;
88+ if (m_surface == surface)
89+ return;
90+
91+ if (m_surface) {
92+ m_surface->setSession(nullptr);
93+ m_surface->setParent(nullptr);
94+ Q_EMIT m_surface->deregister();
95+ }
96+
97+ m_surface = surface;
98+
99+ if (m_surface) {
100+ m_surface->setSession(this);
101+ m_surface->setParent(this);
102+ SurfaceManager::singleton()->registerSurface(m_surface);
103+ }
104+
105+ Q_EMIT surfaceChanged(m_surface);
106+}
107+
108+void Session::setScreenshot(const QUrl& screenshot)
109+{
110+ if (screenshot != m_screenshot) {
111+ m_screenshot = screenshot;
112+ if (m_surface) {
113+ m_surface->setScreenshot(m_screenshot);
114+ }
115+ }
116+}
117+
118+void Session::setLive(bool live)
119+{
120+ if (m_live != live) {
121+ m_live = live;
122+ Q_EMIT liveChanged(m_live);
123+ }
124+}
125+
126+void Session::setParentSession(Session* session)
127+{
128+ if (m_parentSession == session || session == this)
129+ return;
130+
131+ m_parentSession = session;
132+ Q_EMIT parentSessionChanged(session);
133+}
134+
135+void Session::createSurface()
136+{
137+ if (m_surface) return;
138+
139+ setSurface(SurfaceManager::singleton()->createSurface(name(),
140+ MirSurfaceItem::Normal,
141+ m_application && m_application->fullscreen() ? MirSurfaceItem::Fullscreen :
142+ MirSurfaceItem::Maximized,
143+ m_screenshot));
144+}
145+
146+void Session::addChildSession(Session* session)
147+{
148+ insertChildSession(m_children->rowCount(), session);
149+}
150+
151+void Session::insertChildSession(uint index, Session* session)
152+{
153+ qDebug() << "Session::insertChildSession - " << session->name() << " to " << name() << " @ " << index;
154+
155+ session->setParentSession(this);
156+ m_children->insert(index, session);
157+ SessionManager::singleton()->registerSession(session);
158+}
159+
160+void Session::removeChildSession(Session* session)
161+{
162+ qDebug() << "Session::removeChildSession - " << session->name() << " from " << name();
163+
164+ if (m_children->contains(session)) {
165+ m_children->remove(session);
166+ session->setParentSession(nullptr);
167+ Q_EMIT session->deregister();
168+ }
169+}
170+
171+SessionModel* Session::childSessions() const
172+{
173+ return m_children;
174+}
tests/mocks/Unity/Application/Session.hnew file+90
@@ -0,0 +1,90 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef SESSION_H
18+#define SESSION_H
19+
20+#include "SessionModel.h"
21+
22+#include <QQuickItem>
23+
24+class ApplicationInfo;
25+class MirSurfaceItem;
26+
27+class Session : public QObject
28+{
29+ Q_OBJECT
30+ Q_PROPERTY(QString name READ name CONSTANT)
31+ Q_PROPERTY(MirSurfaceItem* surface READ surface NOTIFY surfaceChanged)
32+ Q_PROPERTY(ApplicationInfo* application READ application NOTIFY applicationChanged)
33+ Q_PROPERTY(Session* parentSession READ parentSession NOTIFY parentSessionChanged DESIGNABLE false)
34+ Q_PROPERTY(SessionModel* childSessions READ childSessions DESIGNABLE false CONSTANT)
35+ Q_PROPERTY(bool live READ live NOTIFY liveChanged)
36+
37+public:
38+ explicit Session(const QString &name,
39+ const QUrl& screenshot,
40+ QObject *parent = 0);
41+ ~Session();
42+
43+ Q_INVOKABLE void release();
44+
45+ //getters
46+ QString name() const { return m_name; }
47+ bool live() const { return m_live; }
48+ ApplicationInfo* application() const { return m_application; }
49+ MirSurfaceItem* surface() const { return m_surface; }
50+ Session* parentSession() const { return m_parentSession; }
51+
52+ void setApplication(ApplicationInfo* item);
53+ void setSurface(MirSurfaceItem* surface);
54+ void setScreenshot(const QUrl& m_screenshot);
55+ void setLive(bool live);
56+
57+ Q_INVOKABLE void addChildSession(Session* session);
58+ void insertChildSession(uint index, Session* session);
59+ void removeChildSession(Session* session);
60+
61+Q_SIGNALS:
62+ void applicationChanged(ApplicationInfo*);
63+ void surfaceChanged(MirSurfaceItem*);
64+ void parentSessionChanged(Session*);
65+ void liveChanged(bool live);
66+
67+ // internal mock use
68+ void deregister();
69+
70+public Q_SLOTS:
71+ Q_INVOKABLE void createSurface();
72+
73+private:
74+ SessionModel* childSessions() const;
75+ void setParentSession(Session* session);
76+
77+ QString m_name;
78+ bool m_live;
79+ QUrl m_screenshot;
80+ ApplicationInfo* m_application;
81+ MirSurfaceItem* m_surface;
82+ Session* m_parentSession;
83+ SessionModel* m_children;
84+
85+ friend class ApplicationTestInterface;
86+};
87+
88+Q_DECLARE_METATYPE(Session*)
89+
90+#endif // SESSION_H
tests/mocks/Unity/Application/SessionManager.cppnew file+55
@@ -0,0 +1,55 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "SessionManager.h"
18+
19+#include "Session.h"
20+
21+SessionManager *SessionManager::the_session_manager = nullptr;
22+
23+SessionManager *SessionManager::singleton()
24+{
25+ if (!the_session_manager) {
26+ the_session_manager = new SessionManager();
27+ }
28+ return the_session_manager;
29+}
30+
31+SessionManager::SessionManager(QObject *parent) :
32+ QObject(parent)
33+{
34+}
35+
36+
37+Session *SessionManager::createSession(const QString& name,
38+ const QUrl& screenshot)
39+{
40+ Session* session = new Session(name, screenshot);
41+ Q_EMIT sessionStarting(session);
42+ return session;
43+}
44+
45+void SessionManager::registerSession(Session *session)
46+{
47+ connect(session, &Session::deregister, this, [this] {
48+ Session* session = qobject_cast<Session*>(sender());
49+
50+ disconnect(session, 0, this, 0);
51+
52+ session->setLive(false);
53+ Q_EMIT sessionStopping(session);
54+ });
55+}
tests/mocks/Unity/Application/SessionManager.hnew file+44
@@ -0,0 +1,44 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef SESSIONMANAGER_H
18+#define SESSIONMANAGER_H
19+
20+#include <QObject>
21+
22+class Session;
23+
24+class SessionManager : public QObject
25+{
26+ Q_OBJECT
27+public:
28+ explicit SessionManager(QObject *parent = 0);
29+
30+ static SessionManager *singleton();
31+
32+ Q_INVOKABLE Session* createSession(const QString& name, const QUrl& screenshot);
33+
34+ void registerSession(Session *session);
35+
36+Q_SIGNALS:
37+ void sessionStarting(Session *session);
38+ void sessionStopping(Session *session);
39+
40+private:
41+ static SessionManager *the_session_manager;
42+};
43+
44+#endif // SESSIONMANAGER_H
tests/mocks/Unity/Application/SessionModel.hnew file+35
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software: you can redistribute it and/or modify it under
5+ * the terms of the GNU Lesser General Public License version 3, as published by
6+ * the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful, but WITHOUT
9+ * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10+ * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11+ * Lesser General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU Lesser General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#ifndef SESSIONMODEL_H
18+#define SESSIONMODEL_H
19+
20+// Local
21+#include "ObjectListModel.h"
22+
23+class Session;
24+class SessionModel: public ObjectListModel<Session>
25+{
26+ Q_OBJECT
27+public:
28+ SessionModel(QObject *parent = 0): ObjectListModel(parent) {}
29+
30+ Q_INVOKABLE int count() const { return rowCount(); }
31+};
32+
33+Q_DECLARE_METATYPE(SessionModel*)
34+
35+#endif // SESSIONMODEL_H
tests/mocks/Unity/Application/SurfaceManager.cpp+20−7
@@ -35,19 +35,32 @@ SurfaceManager::SurfaceManager(QObject *parent) :
3535{
3636}
3737
38+MirSurfaceItem *SurfaceManager::createSurface(const QString& name,
39+ MirSurfaceItem::Type type,
40+ MirSurfaceItem::State state,
41+ const QUrl& screenshot)
42+{
43+ MirSurfaceItem* surface = new MirSurfaceItem(name,
44+ type,
45+ state,
46+ screenshot);
47+ Q_EMIT surfaceCreated(surface);
48+ return surface;
49+}
50+
3851void SurfaceManager::registerSurface(MirSurfaceItem *surface)
3952{
53+ connect(surface, &MirSurfaceItem::deregister, this, [this] {
54+ MirSurfaceItem* surface = qobject_cast<MirSurfaceItem*>(sender());
55+ disconnect(surface, 0, this, 0);
56+
57+ surface->setLive(false);
58+ Q_EMIT surfaceDestroyed(surface);
59+ });
4060 connect(surface, &MirSurfaceItem::inputMethodRequested,
4161 this, &SurfaceManager::showInputMethod);
4262 connect(surface, &MirSurfaceItem::inputMethodDismissed,
4363 this, &SurfaceManager::hideInputMethod);
44− Q_EMIT surfaceCreated(surface);
45−}
46−
47−void SurfaceManager::unregisterSurface(MirSurfaceItem *surface)
48−{
49− disconnect(surface, 0, this, 0);
50− Q_EMIT surfaceDestroyed(surface);
5164}
5265
5366void SurfaceManager::showInputMethod()
tests/mocks/Unity/Application/SurfaceManager.h+6−2
@@ -19,7 +19,7 @@
1919
2020#include <QObject>
2121
22−class MirSurfaceItem;
22+#include "MirSurfaceItem.h"
2323
2424class SurfaceManager : public QObject
2525{
@@ -29,9 +29,13 @@ public:
2929
3030 static SurfaceManager *singleton();
3131
32+ Q_INVOKABLE MirSurfaceItem *createSurface(const QString& name,
33+ MirSurfaceItem::Type type,
34+ MirSurfaceItem::State state,
35+ const QUrl& screenshot);
36+
3237 // Internal mock use
3338 void registerSurface(MirSurfaceItem *surface);
34− void unregisterSurface(MirSurfaceItem *surface);
3539
3640 // To be used in the tests
3741 Q_INVOKABLE MirSurfaceItem *inputMethodSurface();
tests/mocks/Unity/Application/plugin.cpp+37−4
@@ -18,8 +18,12 @@
1818#include "ApplicationInfo.h"
1919#include "ApplicationManager.h"
2020#include "ApplicationScreenshotProvider.h"
21+#include "Session.h"
2122#include "MirSurfaceItem.h"
23+#include "MirSurfaceItemModel.h"
2224#include "SurfaceManager.h"
25+#include "SessionManager.h"
26+#include "ApplicationTestInterface.h"
2327
2428#include <qqml.h>
2529#include <QQmlEngine>
@@ -36,18 +40,45 @@ static QObject* surfaceManagerSingleton(QQmlEngine* engine, QJSEngine* scriptEng
3640 return SurfaceManager::singleton();
3741}
3842
43+static QObject* sessionManagerSingleton(QQmlEngine* engine, QJSEngine* scriptEngine) {
44+ Q_UNUSED(engine);
45+ Q_UNUSED(scriptEngine);
46+ return SessionManager::singleton();
47+}
48+
49+ApplicationTestInterface* s_appTestInterface = nullptr;
50+
51+static QObject* applicationTestInterface(QQmlEngine* engine, QJSEngine* scriptEngine) {
52+ Q_UNUSED(engine);
53+ Q_UNUSED(scriptEngine);
54+ if (!s_appTestInterface) {
55+ s_appTestInterface = new ApplicationTestInterface(engine);
56+ }
57+ return s_appTestInterface;
58+}
59+
3960void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
4061{
62+ qRegisterMetaType<Session*>("Session*");
63+ qRegisterMetaType<ApplicationInfo*>("ApplicationInfo*");
64+ qRegisterMetaType<MirSurfaceItemModel*>("SessionModel*");
4165 qRegisterMetaType<MirSurfaceItem*>("MirSurfaceItem*");
66+ qRegisterMetaType<MirSurfaceItemModel*>("MirSurfaceItemModel*");
4267
4368 qmlRegisterUncreatableType<unity::shell::application::ApplicationManagerInterface>(uri, 0, 1, "ApplicationManagerInterface", "Abstract interface. Cannot be created in QML");
44− qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
45− qmlRegisterSingletonType<SurfaceManager>(uri, 0, 1, "SurfaceManager", surfaceManagerSingleton);
46−
4769 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
70+ qmlRegisterUncreatableType<Session>(uri, 0, 1, "Session", "Session can't be instantiated from QML");
71+ qmlRegisterUncreatableType<MirSurfaceItem>(uri, 0, 1, "MirSurfaceItem", "MirSurfaceItem can't be instantiated from QML");
72+
4873 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
4974
50− qmlRegisterUncreatableType<MirSurfaceItem>(uri, 0, 1, "MirSurfaceItem", "MirSurfaceItem can't be instantiated from QML");
75+ qmlRegisterSingletonType<ApplicationManager>(uri, 0, 1, "ApplicationManager", applicationManagerSingleton);
76+ qmlRegisterSingletonType<SurfaceManager>(uri, 0, 1, "SurfaceManager", surfaceManagerSingleton);
77+ qmlRegisterSingletonType<SessionManager>(uri, 0, 1, "SessionManager", sessionManagerSingleton);
78+ qmlRegisterSingletonType<ApplicationTestInterface>(uri, 0, 1, "ApplicationTest", applicationTestInterface);
79+
80+ qRegisterMetaType<MirSurfaceItem::Type>("MirSurfaceItem::Type");
81+ qRegisterMetaType<MirSurfaceItem::State>("MirSurfaceItem::State");
5182}
5283
5384void FakeUnityApplicationQmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
@@ -55,4 +86,6 @@ void FakeUnityApplicationQmlPlugin::initializeEngine(QQmlEngine *engine, const c
5586 QQmlExtensionPlugin::initializeEngine(engine, uri);
5687
5788 engine->addImageProvider(QLatin1String("application"), new ApplicationScreenshotProvider(ApplicationManager::singleton()));
89+ // make sure we initialise our test interface.
90+ applicationTestInterface(engine, nullptr);
5891}
tests/mocks/Unity/Indicators/Indicators.qmltypes+20
@@ -159,6 +159,26 @@ Module {
159159 Property { name: "sourceModel"; type: "QAbstractItemModel"; isPointer: true }
160160 }
161161 Component { name: "QIdentityProxyModel"; prototype: "QAbstractProxyModel" }
162+ Component {
163+ name: "UnityMenuModelCache"
164+ prototype: "QObject"
165+ exports: ["Unity.Indicators/UnityMenuModelCache 0.1"]
166+ isCreatable: false
167+ isSingleton: true
168+ exportMetaObjectRevisions: [0]
169+ Method {
170+ name: "model"
171+ type: "UnityMenuModel*"
172+ Parameter { name: "bus"; type: "QByteArray" }
173+ Parameter { name: "path"; type: "QByteArray" }
174+ Parameter { name: "actions"; type: "QVariantMap" }
175+ }
176+ Method {
177+ name: "contains"
178+ type: "bool"
179+ Parameter { name: "path"; type: "QByteArray" }
180+ }
181+ }
162182 Component {
163183 name: "UnityMenuModelStack"
164184 prototype: "QObject"
tests/mocks/Unity/Unity.qmltypes+30−2
@@ -36,6 +36,10 @@ Module {
3636 prototype: "unity::shell::scopes::PreviewModelInterface"
3737 exports: ["Unity/FakePreviewModel 0.2"]
3838 exportMetaObjectRevisions: [0]
39+ Method {
40+ name: "setLoaded"
41+ Parameter { type: "bool" }
42+ }
3943 }
4044 Component {
4145 name: "PreviewStack"
@@ -59,9 +63,9 @@ Module {
5963 Component {
6064 name: "ResultsModel"
6165 prototype: "unity::shell::scopes::ResultsModelInterface"
62− exports: ["Unity/ResultsModel 0.2"]
66+ exports: ["Unity/FakeResultsModel 0.2", "Unity/ResultsModel 0.2"]
6367 isCreatable: false
64− exportMetaObjectRevisions: [0]
68+ exportMetaObjectRevisions: [0, 0]
6569 }
6670 Component {
6771 name: "Scope"
@@ -134,7 +138,13 @@ Module {
134138 }
135139 Method { name: "clear" }
136140 Method { name: "load" }
141+ Method {
142+ name: "getScopeFromAll"
143+ type: "Scope*"
144+ Parameter { name: "scope_id"; type: "string" }
145+ }
137146 }
147+ Component { name: "SettingsModel"; prototype: "unity::shell::scopes::SettingsModelInterface" }
138148 Component {
139149 name: "unity::shell::scopes::CategoriesInterface"
140150 prototype: "QAbstractListModel"
@@ -402,4 +412,22 @@ Module {
402412 Parameter { name: "scopeId"; type: "string" }
403413 }
404414 }
415+ Component {
416+ name: "unity::shell::scopes::SettingsModelInterface"
417+ prototype: "QAbstractListModel"
418+ exports: ["Unity/SettingsModel 0.2"]
419+ isCreatable: false
420+ exportMetaObjectRevisions: [0]
421+ Enum {
422+ name: "Roles"
423+ values: {
424+ "RoleSettingId": 0,
425+ "RoleDisplayName": 1,
426+ "RoleType": 2,
427+ "RoleProperties": 3,
428+ "RoleValue": 4
429+ }
430+ }
431+ Property { name: "count"; type: "int"; isReadonly: true }
432+ }
405433}
tests/qmltests/CMakeLists.txt+1
@@ -86,3 +86,4 @@ add_qml_test(Stages ApplicationWindow ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINAR
8686add_qml_test(Stages PhoneStage ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
8787add_qml_test(Stages SpreadDelegate ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
8888add_qml_test(Stages SurfaceContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
89+add_qml_test(Stages SessionContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
tests/qmltests/Panel/tst_ActiveCallHint.qml+1−1
@@ -97,7 +97,7 @@ Item {
9797 var application = ApplicationManager.startApplication("dialer-app");
9898 ApplicationManager.focusApplication("dialer-app");
9999 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
100− tryCompare(application, "state", ApplicationInfo.Running);
100+ tryCompare(application, "state", ApplicationInfoInterface.Running);
101101
102102 if (!data.focused) { ApplicationManager.unfocusCurrentApplication(); }
103103 }
tests/qmltests/Stages/RecursingChildSessionControl.qmlnew file+142
@@ -0,0 +1,142 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.1
18+import QtQuick.Layouts 1.1
19+import Ubuntu.Components 0.1
20+import Unity.Application 0.1
21+
22+ColumnLayout {
23+ id: root
24+
25+ property var session
26+ property var childSessions: session ? session.childSessions : 0
27+ property bool removable: false
28+ property alias surfaceCheckbox: _surfaceCheckbox
29+
30+ property var screenshotIds: [ "gallery", "map", "facebook", "camera", "browser", "music", "twitter"]
31+
32+ onSessionChanged: {
33+ if (!session) surfaceCheckbox.checked = false;
34+ }
35+
36+ Column {
37+ id: column
38+ Layout.fillWidth: true
39+ visible: repeater.count
40+ spacing: units.gu(1)
41+
42+ Repeater {
43+ id: repeater
44+ model: root.childSessions
45+ delegate: Rectangle {
46+ border {
47+ color: "black"
48+ width: 1
49+ }
50+ anchors {
51+ left: column.left
52+ right: column.right
53+ leftMargin: units.gu(1)
54+ rightMargin: units.gu(1)
55+ }
56+ height: loader.height
57+
58+ Rectangle {
59+ anchors.fill: parent
60+ color: Qt.rgba(Math.random(), Math.random(), Math.random(), 0.4 )
61+ }
62+
63+ Loader {
64+ id: loader
65+ visible: status == Loader.Ready
66+ source: Qt.resolvedUrl("RecursingChildSessionControl.qml")
67+
68+ anchors {
69+ left: parent.left
70+ right: parent.right
71+ }
72+
73+ onLoaded: {
74+ item.session = modelData;
75+ item.removable = true;
76+ }
77+ }
78+ }
79+ }
80+ }
81+
82+ ColumnLayout {
83+ Layout.fillWidth: true
84+ spacing: units.gu(1)
85+
86+ RowLayout {
87+ Layout.fillWidth: true
88+
89+ CheckBox {
90+ id: _surfaceCheckbox;
91+ checked: false;
92+ enabled: root.session
93+ onCheckedChanged: {
94+ if (checked) {
95+ root.session.createSurface();
96+ } else if (root.session.surface) {
97+ ApplicationTest.removeSurface(root.session.surface);
98+ }
99+ }
100+
101+ Connections {
102+ target: root.session ? root.session : null
103+ onSurfaceChanged: {
104+ surfaceCheckbox.checked = root.session.surface !== null
105+ }
106+ }
107+ }
108+
109+ Label {
110+ text: "Surface"
111+ anchors.verticalCenter: parent.verticalCenter
112+ }
113+ }
114+
115+ RowLayout {
116+ id: buttonLayout
117+
118+ Button {
119+ enabled: root.session
120+ text: removable ? "Remove" : "Release"
121+ onClicked: {
122+ if (removable) {
123+ // release the surface first. simulates mir app closing
124+ if (root.session.surface) ApplicationTest.removeSurface(root.session.surface);
125+ ApplicationTest.removeSession(root.session);
126+ } else {
127+ root.session.release();
128+ }
129+ }
130+ }
131+
132+ Button {
133+ enabled: root.session !== null
134+ text: "Add Child"
135+ onClicked: {
136+ var screenshot = Math.round(Math.random()*100 % (screenshotIds.length-1));
137+ var session = ApplicationTest.addChildSession(root.session, root.screenshotIds[screenshot]);
138+ }
139+ }
140+ }
141+ }
142+}
tests/qmltests/Stages/tst_ApplicationWindow.qml+99−47
@@ -14,7 +14,8 @@
1414 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1515 */
1616
17−import QtQuick 2.0
17+import QtQuick 2.1
18+import QtQuick.Layouts 1.1
1819import QtTest 1.0
1920import Unity.Test 0.1 as UT
2021import ".."
@@ -32,14 +33,15 @@ Rectangle {
3233 Component.onCompleted: {
3334 root.fakeApplication = ApplicationManager.add("gallery-app");
3435 root.fakeApplication.manualSurfaceCreation = true;
35− root.fakeApplication.setState(ApplicationInfo.Starting);
36+ root.fakeApplication.setState(ApplicationInfoInterface.Starting);
3637 }
3738 property QtObject fakeApplication: null
39+ readonly property var fakeSession: fakeApplication ? fakeApplication.session : null
3840
3941 Connections {
4042 target: fakeApplication
41− onSurfaceChanged: {
42− surfaceCheckbox.checked = fakeApplication.surface !== null;
43+ onSessionChanged: {
44+ sessionCheckbox.checked = fakeApplication.session !== null
4345 }
4446 }
4547
@@ -50,15 +52,20 @@ Rectangle {
5052 application: fakeApplication
5153 }
5254 }
53− Loader {
54− id: applicationWindowLoader
55+ FocusScope {
56+ id: appFocus
5557 anchors {
5658 top: parent.top
5759 bottom: parent.bottom
5860 left: parent.left
5961 }
6062 width: units.gu(40)
61− sourceComponent: applicationWindowComponent
63+
64+ Loader {
65+ id: applicationWindowLoader
66+ anchors.fill: parent
67+ sourceComponent: applicationWindowComponent
68+ }
6269 }
6370
6471 Rectangle {
@@ -66,30 +73,55 @@ Rectangle {
6673 anchors {
6774 top: parent.top
6875 bottom: parent.bottom
69− left: applicationWindowLoader.right
76+ left: appFocus.right
7077 right: parent.right
7178 }
7279
73− Column {
80+ ColumnLayout {
7481 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
7582 spacing: units.gu(1)
76− Row {
77− anchors { left: parent.left; right: parent.right }
83+
84+ RowLayout {
85+ Layout.fillWidth: true
86+
7887 CheckBox {
79− id: surfaceCheckbox; checked: false
88+ id: sessionCheckbox; checked: false
8089 onCheckedChanged: {
8190 if (applicationWindowLoader.status !== Loader.Ready)
8291 return;
8392
84− if (checked && !fakeApplication.surface) {
85− fakeApplication.createSurface();
86− } else if (!checked && fakeApplication.surface) {
87− fakeApplication.surface.release();
93+ if (checked && !fakeApplication.session) {
94+ fakeApplication.createSession();
95+ } else if (!checked && fakeApplication.session) {
96+ fakeApplication.session.release();
8897 }
8998 }
9099 }
91− Label { text: "Surface" }
100+ Label {
101+ text: "Session"
102+ anchors.verticalCenter: parent.verticalCenter
103+ }
92104 }
105+
106+ Rectangle {
107+ border {
108+ color: "black"
109+ width: 1
110+ }
111+ anchors {
112+ left: parent.left
113+ right: parent.right
114+ }
115+ Layout.preferredHeight: sessionControl.height
116+
117+ RecursingChildSessionControl {
118+ id: sessionControl
119+ anchors { left: parent.left; right: parent.right; }
120+
121+ session: fakeSession
122+ }
123+ }
124+
93125 ListItem.ItemSelector {
94126 id: appStateSelector
95127 anchors { left: parent.left; right: parent.right }
@@ -100,13 +132,13 @@ Rectangle {
100132 "Stopped"]
101133 property int selectedApplicationState: {
102134 if (model[selectedIndex] === "Starting") {
103− return ApplicationInfo.Starting;
135+ return ApplicationInfoInterface.Starting;
104136 } else if (model[selectedIndex] === "Running") {
105− return ApplicationInfo.Running;
137+ return ApplicationInfoInterface.Running;
106138 } else if (model[selectedIndex] === "Suspended") {
107− return ApplicationInfo.Suspended;
139+ return ApplicationInfoInterface.Suspended;
108140 } else {
109− return ApplicationInfo.Stopped;
141+ return ApplicationInfoInterface.Stopped;
110142 }
111143 }
112144 onSelectedApplicationStateChanged: {
@@ -114,6 +146,7 @@ Rectangle {
114146 fakeApplication.setState(selectedApplicationState);
115147 }
116148 }
149+
117150 }
118151 }
119152
@@ -123,10 +156,10 @@ Rectangle {
123156 when: windowShown
124157
125158 // just to make them shorter
126− property int appStarting: ApplicationInfo.Starting
127− property int appRunning: ApplicationInfo.Running
128− property int appSuspended: ApplicationInfo.Suspended
129− property int appStopped: ApplicationInfo.Stopped
159+ property int appStarting: ApplicationInfoInterface.Starting
160+ property int appRunning: ApplicationInfoInterface.Running
161+ property int appSuspended: ApplicationInfoInterface.Suspended
162+ property int appStopped: ApplicationInfoInterface.Stopped
130163
131164 function setApplicationState(appState) {
132165 switch (appState) {
@@ -170,6 +203,14 @@ Rectangle {
170203 findInterestingApplicationWindowChildren();
171204 }
172205
206+ function initSession() {
207+ sessionCheckbox.checked = true;
208+ sessionControl.surfaceCheckbox.checked = true;
209+ }
210+ function cleanupSession() {
211+ sessionCheckbox.checked = false;
212+ }
213+
173214 function cleanup() {
174215 forgetApplicationWindowChildren();
175216
@@ -177,10 +218,10 @@ Rectangle {
177218 applicationWindowLoader.active = false;
178219
179220 appStateSelector.selectedIndex = 0;
180− surfaceCheckbox.checked = false;
221+ cleanupSession();
181222
182− if (fakeApplication.surface)
183− fakeApplication.surface.release();
223+ if (fakeApplication.session)
224+ fakeApplication.session.release();
184225
185226 applicationWindowLoader.active = true;
186227 }
@@ -197,7 +238,7 @@ Rectangle {
197238 verify(stateGroup.state === "splashScreen");
198239
199240 if (data.swapInitOrder) {
200− surfaceCheckbox.checked = true;
241+ initSession();
201242 } else {
202243 setApplicationState(appRunning);
203244 }
@@ -207,14 +248,14 @@ Rectangle {
207248 if (data.swapInitOrder) {
208249 setApplicationState(appRunning);
209250 } else {
210− surfaceCheckbox.checked = true;
251+ initSession();
211252 }
212253
213254 tryCompare(stateGroup, "state", "surface");
214255 }
215256
216257 function test_suspendedAppShowsSurface() {
217− surfaceCheckbox.checked = true;
258+ initSession();
218259 setApplicationState(appRunning);
219260
220261 tryCompare(stateGroup, "state", "surface");
@@ -228,7 +269,7 @@ Rectangle {
228269 }
229270
230271 function test_killedAppShowsScreenshot() {
231− surfaceCheckbox.checked = true;
272+ initSession();
232273 setApplicationState(appRunning);
233274 tryCompare(stateGroup, "state", "surface");
234275
@@ -241,13 +282,13 @@ Rectangle {
241282 setApplicationState(appStopped);
242283
243284 tryCompare(stateGroup, "state", "screenshot");
244− tryCompare(fakeApplication, "surface", null);
285+ tryCompare(fakeApplication, "session", null);
245286 }
246287
247288 function test_restartApp() {
248289 var screenshotImage = findChild(applicationWindowLoader.item, "screenshotImage");
249290
250− surfaceCheckbox.checked = true;
291+ initSession();
251292 setApplicationState(appRunning);
252293 tryCompare(stateGroup, "state", "surface");
253294 waitUntilTransitionsEnd();
@@ -259,28 +300,28 @@ Rectangle {
259300
260301 tryCompare(stateGroup, "state", "screenshot");
261302 waitUntilTransitionsEnd();
262− tryCompare(fakeApplication, "surface", null);
303+ tryCompare(fakeApplication, "session", null);
263304
264305 // and restart it
265306 setApplicationState(appStarting);
266307
267308 waitUntilTransitionsEnd();
268309 verify(stateGroup.state === "screenshot");
269− verify(fakeApplication.surface === null);
310+ verify(fakeSession === null);
270311
271312 setApplicationState(appRunning);
272313
273314 waitUntilTransitionsEnd();
274315 verify(stateGroup.state === "screenshot");
275316
276− surfaceCheckbox.checked = true;
317+ initSession();
277318
278319 tryCompare(stateGroup, "state", "surface");
279320 tryCompare(screenshotImage, "status", Image.Null);
280321 }
281322
282323 function test_appCrashed() {
283− surfaceCheckbox.checked = true;
324+ initSession();
284325 setApplicationState(appRunning);
285326 tryCompare(stateGroup, "state", "surface");
286327 waitUntilTransitionsEnd();
@@ -289,39 +330,39 @@ Rectangle {
289330 setApplicationState(appStopped);
290331
291332 tryCompare(stateGroup, "state", "screenshot");
292− tryCompare(fakeApplication, "surface", null);
333+ tryCompare(fakeApplication, "session", null);
293334 }
294335
295336 function test_keepSurfaceWhileInvisible() {
296− surfaceCheckbox.checked = true;
337+ initSession();
297338 setApplicationState(appRunning);
298339 tryCompare(stateGroup, "state", "surface");
299340 waitUntilTransitionsEnd();
300− verify(fakeApplication.surface !== null);
341+ verify(fakeSession.surface !== null);
301342
302343 applicationWindowLoader.item.visible = false;
303344
304345 waitUntilTransitionsEnd();
305346 verify(stateGroup.state === "surface");
306− verify(fakeApplication.surface !== null);
347+ verify(fakeSession.surface !== null);
307348
308349 applicationWindowLoader.item.visible = true;
309350
310351 waitUntilTransitionsEnd();
311352 verify(stateGroup.state === "surface");
312− verify(fakeApplication.surface !== null);
353+ verify(fakeSession.surface !== null);
313354 }
314355
315356 function test_touchesReachSurfaceWhenItsShown() {
316357 setApplicationState(appRunning);
317− surfaceCheckbox.checked = true;
358+ initSession();
318359
319360 tryCompare(stateGroup, "state", "surface");
320361
321362 waitUntilTransitionsEnd();
322363
323364 // Because doing stuff in C++ is a PITA we keep the counter in the interal qml impl.
324− var fakeSurface = findChild(fakeApplication.surface, "fakeSurfaceQML");
365+ var fakeSurface = findChild(fakeSession.surface, "fakeSurfaceQML");
325366 fakeSurface.touchPressCount = 0;
326367 fakeSurface.touchReleaseCount = 0;
327368
@@ -333,14 +374,25 @@ Rectangle {
333374 }
334375
335376 function test_showNothingOnSuddenSurfaceLoss() {
336− surfaceCheckbox.checked = true;
377+ initSession();
337378 setApplicationState(appRunning);
338379 tryCompare(stateGroup, "state", "surface");
339380 waitUntilTransitionsEnd();
340381
341− surfaceCheckbox.checked = false;
382+ cleanupSession();
342383
343384 verify(stateGroup.state === "void");
344385 }
386+
387+ // should be forcing active focus when interactive changes,
388+ // which will cause a FocusScope higher in the object hierarchy tp be given the focus
389+ function test_forceActiveFocusFollowsInterative() {
390+ fakeApplication.createSession();
391+ applicationWindowLoader.item.interactive = false;
392+ applicationWindowLoader.item.interactive = true;
393+ fakeSession.createSurface();
394+
395+ compare(appFocus.focus, true);
396+ }
345397 }
346398}
tests/qmltests/Stages/tst_PhoneStage.qml+1−1
@@ -64,7 +64,7 @@ Item {
6464 anchors { left: parent.left; right: parent.right }
6565 text: "Stop Selected"
6666 onClicked: {
67− ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfo.Stopped);
67+ ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfoInterface.Stopped);
6868 }
6969 }
7070 }
tests/qmltests/Stages/tst_SessionContainer.qmlnew file+267
@@ -0,0 +1,267 @@
1+/*
2+ * Copyright 2014 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.1
18+import QtQuick.Layouts 1.1
19+import QtTest 1.0
20+import Unity.Test 0.1 as UT
21+import Ubuntu.Components 0.1
22+import Unity.Application 0.1
23+import "../../../qml/Stages"
24+
25+Rectangle {
26+ color: "red"
27+ id: root
28+ width: units.gu(80)
29+ height: units.gu(70)
30+
31+ Connections {
32+ target: sessionContainerLoader.status === Loader.Ready ? sessionContainerLoader.item : null
33+ onSessionChanged: {
34+ sessionCheckbox.checked = sessionContainerLoader.item.session !== null
35+ }
36+ }
37+
38+ Component {
39+ id: sessionContainerComponent
40+
41+ SessionContainer {
42+ id: sessionContainer
43+ anchors.fill: parent
44+ }
45+ }
46+
47+ Loader {
48+ id: sessionContainerLoader
49+ anchors {
50+ top: parent.top
51+ bottom: parent.bottom
52+ left: parent.left
53+ }
54+ width: units.gu(40)
55+ sourceComponent: sessionContainerComponent
56+ }
57+
58+ Rectangle {
59+ color: "white"
60+ anchors {
61+ top: parent.top
62+ bottom: parent.bottom
63+ left: sessionContainerLoader.right
64+ right: parent.right
65+ }
66+
67+ ColumnLayout {
68+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
69+ spacing: units.gu(1)
70+
71+ RowLayout {
72+ Layout.fillWidth: true
73+
74+ CheckBox {
75+ id: sessionCheckbox;
76+ checked: false;
77+ onCheckedChanged: {
78+ if (sessionContainerLoader.status !== Loader.Ready)
79+ return;
80+
81+ if (checked) {
82+ var fakeSession = SessionManager.createSession("music-player", Qt.resolvedUrl("../Dash/artwork/music-player-design.png"));
83+ sessionContainerLoader.item.session = fakeSession;
84+ fakeSession.createSurface();
85+ } else {
86+ sessionContainerLoader.item.session.release();
87+ }
88+ }
89+ }
90+
91+ Label {
92+ text: "session"
93+ anchors.verticalCenter: parent.verticalCenter
94+ }
95+ }
96+
97+ Rectangle {
98+ border {
99+ color: "black"
100+ width: 1
101+ }
102+ anchors {
103+ left: parent.left
104+ right: parent.right
105+ }
106+ Layout.preferredHeight: sessionChildrenControl.height
107+
108+ RecursingChildSessionControl {
109+ id: sessionChildrenControl
110+ anchors { left: parent.left; right: parent.right; }
111+
112+ session: sessionContainerLoader.item ? sessionContainerLoader.item.session : null
113+ }
114+ }
115+ }
116+ }
117+
118+ SignalSpy {
119+ id: sessionSpy
120+ target: SessionManager
121+ signalName: "sessionStopping"
122+ }
123+
124+ UT.UnityTestCase {
125+ id: testCase
126+ name: "SessionContainer"
127+
128+ function init() {
129+ // reload our test subject to get it in a fresh state once again
130+ sessionContainerLoader.active = false;
131+ sessionCheckbox.checked = false;
132+ sessionContainerLoader.active = true;
133+
134+ tryCompare(sessionContainerLoader.item, "session", null);
135+ sessionSpy.clear();
136+ }
137+
138+ when: windowShown
139+
140+ function test_addChildSession_data() {
141+ return [ { tag: "count=1", count: 1 },
142+ { tag: "count=4", count: 4 } ];
143+ }
144+
145+ function test_addChildSession(data) {
146+ sessionCheckbox.checked = true;
147+ var sessionContainer = sessionContainerLoader.item;
148+ compare(sessionContainer.childSessions.count(), 0);
149+
150+ var i;
151+ var sessions = [];
152+ for (i = 0; i < data.count; i++) {
153+ var session = ApplicationTest.addChildSession(sessionContainer.session,
154+ "gallery");
155+ session.createSurface();
156+ sessionContainer.session.addChildSession(session);
157+ compare(sessionContainer.childSessions.count(), i+1);
158+
159+ sessions.push(session);
160+ }
161+
162+ for (i = data.count-1; i >= 0; i--) {
163+ ApplicationTest.removeSession(sessions[i]);
164+ tryCompareFunction(function() { return sessionContainer.childSessions.count(); }, i);
165+ }
166+ tryCompare(sessionSpy, "count", data.count);
167+ }
168+
169+ function test_nestedChildSessions_data() {
170+ return [ { tag: "depth=2", depth: 2 },
171+ { tag: "depth=8", depth: 8 }
172+ ];
173+ }
174+
175+ function test_nestedChildSessions(data) {
176+ sessionCheckbox.checked = true;
177+ var sessionContainer = sessionContainerLoader.item;
178+ compare(sessionContainer.childSessions.count(), 0);
179+
180+ var i;
181+ var sessions = [];
182+ var lastSession = sessionContainer.session;
183+ var delegate;
184+ var container = sessionContainer;
185+ for (i = 0; i < data.depth; i++) {
186+ var session = ApplicationTest.addChildSession(lastSession,
187+ "gallery");
188+ session.createSurface();
189+ lastSession.addChildSession(session);
190+ compare(container.childSessions.count(), 1);
191+ sessions.push(session);
192+
193+ delegate = findChild(container, "childDelegate0");
194+ container = findChild(delegate, "sessionContainer");
195+ lastSession = session;
196+ }
197+
198+ for (i = data.depth-1; i >= 0; i--) {
199+ ApplicationTest.removeSession(sessions[i]);
200+ }
201+
202+ tryCompareFunction(function() { return sessionContainer.childSessions.count(); }, 0);
203+ tryCompare(sessionSpy, "count", data.depth);
204+ }
205+
206+ function test_childrenAdjustForParentSize() {
207+ sessionCheckbox.checked = true;
208+ var sessionContainer = sessionContainerLoader.item;
209+
210+ var session = ApplicationTest.addChildSession(sessionContainer.session,
211+ "gallery");
212+ session.createSurface();
213+ sessionContainer.session.addChildSession(session);
214+
215+ var delegate = findChild(sessionContainer, "childDelegate0");
216+ var childContainer = findChild(delegate, "sessionContainer");
217+
218+ tryCompareFunction(function() { return childContainer.height === sessionContainer.height; }, true);
219+ tryCompareFunction(function() { return childContainer.width === sessionContainer.width; }, true);
220+ tryCompareFunction(function() { return childContainer.x === 0; }, true);
221+ tryCompareFunction(function() { return childContainer.y === 0; }, true);
222+
223+ sessionContainer.anchors.margins = units.gu(2);
224+
225+ tryCompareFunction(function() { return childContainer.height === sessionContainer.height; }, true);
226+ tryCompareFunction(function() { return childContainer.width === sessionContainer.width; }, true);
227+ tryCompareFunction(function() { return childContainer.x === 0; }, true);
228+ tryCompareFunction(function() { return childContainer.y === 0; }, true);
229+ }
230+
231+ function isContainerAnimating(container) {
232+ var animation = findInvisibleChild(container, "sessionAnimation");
233+ if (!animation) return false;
234+
235+ var animating = false;
236+ for (var i = 0; i < animation.transitions.length; ++i) {
237+ if (animation.transitions[i].running) {
238+ return true;
239+ }
240+ }
241+ return false;
242+ }
243+
244+ function test_childrenAnimate() {
245+ sessionCheckbox.checked = true;
246+ var sessionContainer = sessionContainerLoader.item;
247+
248+ var session = ApplicationTest.addChildSession(sessionContainer.session,
249+ "gallery");
250+
251+ var delegate = findChild(sessionContainer, "childDelegate0");
252+ var childContainer = findChild(delegate, "sessionContainer");
253+
254+ // wait for animation to begin
255+ tryCompareFunction(function() { return isContainerAnimating(childContainer); }, true);
256+ // wait for animation to end
257+ tryCompareFunction(function() { return isContainerAnimating(childContainer); }, false);
258+
259+ ApplicationTest.removeSession(session);
260+
261+ // wait for animation to begin
262+ tryCompareFunction(function() { return isContainerAnimating(childContainer); }, true);
263+ // wait for animation to end
264+ tryCompareFunction(function() { return isContainerAnimating(childContainer); }, false);
265+ }
266+ }
267+}
tests/qmltests/Stages/tst_SurfaceContainer.qml+28−43
@@ -28,43 +28,6 @@ Rectangle {
2828 width: units.gu(70)
2929 height: units.gu(70)
3030
31− Component {
32− id: fakeSurfaceComponent
33− Rectangle {
34− color: "green"
35−
36− Rectangle {
37− color: "blue"
38− anchors.fill: parent
39− anchors.margins: units.gu(2)
40− Text {
41− anchors.fill: parent
42− text: "Surface"
43− color: "green"
44− font.bold: true
45− fontSizeMode: Text.Fit
46− minimumPixelSize: 10; font.pixelSize: 200
47− verticalAlignment: Text.AlignVCenter
48− }
49− }
50−
51− width: units.gu(1)
52− height: units.gu(1)
53−
54− property int type: MirSurfaceItem.Normal
55− property int state: MirSurfaceItem.Restored
56− property string name: "Fake Surface"
57− property Item parentSurface: null
58− property list<Item> childSurfaces
59− function release() {}
60− signal removed();
61− }
62− }
63−
64− Item {
65− id: tempSurfaceHolder
66− }
67−
6831 Component {
6932 id: surfaceContainerComponent
7033 SurfaceContainer {
@@ -98,19 +61,20 @@ Rectangle {
9861 Row {
9962 anchors { left: parent.left; right: parent.right }
10063 CheckBox {
101− id: surfaceCheckbox; checked: false;
64+ id: surfaceCheckbox;
65+ checked: false;
10266 onCheckedChanged: {
10367 if (surfaceContainerLoader.status !== Loader.Ready)
10468 return;
10569
10670 if (checked) {
107− var fakeSurface = fakeSurfaceComponent.createObject(tempSurfaceHolder);
71+ var fakeSurface = SurfaceManager.createSurface("fake-surface",
72+ MirSurfaceItem.Normal,
73+ MirSurfaceItem.Restored,
74+ Qt.resolvedUrl("../Dash/artwork/music-player-design.png"));
10875 surfaceContainerLoader.item.surface = fakeSurface;
10976 } else {
110− var fakeSurface = surfaceContainerLoader.item.surface;
111− surfaceContainerLoader.item.surface = null;
112− fakeSurface.parent = null;
113− fakeSurface.destroy();
77+ ApplicationTest.removeSurface(surfaceContainerLoader.item.surface);
11478 }
11579 }
11680 }
@@ -124,6 +88,12 @@ Rectangle {
12488 }
12589 }
12690
91+ SignalSpy {
92+ id: surfaceSpy
93+ target: SurfaceManager
94+ signalName: "surfaceDestroyed"
95+ }
96+
12797 UT.UnityTestCase {
12898 id: testCase
12999 name: "SurfaceContainer"
@@ -134,6 +104,9 @@ Rectangle {
134104 surfaceContainerLoader.active = false;
135105 surfaceCheckbox.checked = false;
136106 surfaceContainerLoader.active = true;
107+
108+ tryCompare(surfaceContainerLoader.item, "surface", null);
109+ surfaceSpy.clear();
137110 }
138111
139112 /*
@@ -150,5 +123,17 @@ Rectangle {
150123 compare(fakeSurface.width, surfaceContainerLoader.item.width);
151124 compare(fakeSurface.height, surfaceContainerLoader.item.height);
152125 }
126+
127+ function test_animateRemoval() {
128+ surfaceCheckbox.checked = true;
129+ var surfaceContainer = surfaceContainerLoader.item;
130+
131+ verify(surfaceContainer.surface !== null);
132+
133+ ApplicationTest.removeSurface(surfaceContainer.surface);
134+
135+ compare(surfaceContainer.state, "zombie");
136+ tryCompare(surfaceContainer, "surface", null);
137+ }
153138 }
154139}
tests/qmltests/tst_Shell.qml+9−9
@@ -144,7 +144,7 @@ Item {
144144 verify(mainAppId != "");
145145 var mainApp = ApplicationManager.findApplication(mainAppId);
146146 verify(mainApp);
147− tryCompare(mainApp, "state", ApplicationInfo.Running);
147+ tryCompare(mainApp, "state", ApplicationInfoInterface.Running);
148148
149149 // Try to suspend while proximity is engaged...
150150 Powerd.displayPowerStateChange(Powerd.Off, Powerd.Proximity);
@@ -157,7 +157,7 @@ Item {
157157 tryCompare(greeter, "showProgress", 1);
158158
159159 tryCompare(ApplicationManager, "suspended", true);
160− compare(mainApp.state, ApplicationInfo.Suspended);
160+ compare(mainApp.state, ApplicationInfoInterface.Suspended);
161161
162162 // And wake up
163163 Powerd.displayPowerStateChange(Powerd.On, 0);
@@ -166,7 +166,7 @@ Item {
166166 // Swipe away greeter to focus app
167167 swipeAwayGreeter();
168168 tryCompare(ApplicationManager, "suspended", false);
169− compare(mainApp.state, ApplicationInfo.Running);
169+ compare(mainApp.state, ApplicationInfoInterface.Running);
170170 tryCompare(ApplicationManager, "focusedApplicationId", mainAppId);
171171 }
172172
@@ -237,9 +237,9 @@ Item {
237237 function test_surfaceLosesFocusWhilePanelIsOpen() {
238238 var app = ApplicationManager.startApplication("dialer-app");
239239 // wait until the app is fully loaded (ie, real surface replaces splash screen)
240− tryCompareFunction(function() { return app.surface != null }, true);
240+ tryCompareFunction(function() { return app.session !== null && app.session.surface !== null }, true);
241241
242− tryCompare(app.surface, "focus", true);
242+ tryCompare(app.session.surface, "focus", true);
243243
244244 // Drag the indicators panel half-open
245245 var touchX = shell.width / 2;
@@ -250,7 +250,7 @@ Item {
250250 true /* beginTouch */, false /* endTouch */);
251251 verify(indicators.partiallyOpened);
252252
253− tryCompare(app.surface, "focus", false);
253+ tryCompare(app.session.surface, "focus", false);
254254
255255 // And finish getting it open
256256 touchFlick(indicators,
@@ -259,11 +259,11 @@ Item {
259259 false /* beginTouch */, true /* endTouch */);
260260 tryCompare(indicators, "fullyOpened", true);
261261
262− tryCompare(app.surface, "focus", false);
262+ tryCompare(app.session.surface, "focus", false);
263263
264264 dragToCloseIndicatorsPanel();
265265
266− tryCompare(app.surface, "focus", true);
266+ tryCompare(app.session.surface, "focus", true);
267267 }
268268
269269 // Wait for the whole UI to settle down
@@ -361,7 +361,7 @@ Item {
361361
362362 var app = ApplicationManager.startApplication("dialer-app");
363363 // wait until the app is fully loaded (ie, real surface replaces splash screen)
364− tryCompareFunction(function() { return app.surface != null }, true);
364+ tryCompareFunction(function() { return app.session !== null && app.session.surface !== null }, true);
365365
366366 // Minimize the application we just launched
367367 swipeFromLeftEdge(units.gu(26) + 1);