on xenial help sign in
Merged with trunk.
724d096Mirco Müller
debian/changelog+22
@@ -1,3 +1,25 @@
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+
8+unity8 (8.00+14.10.20140828.1-0ubuntu1) utopic; urgency=low
9+
10+ [ Michael Terry ]
11+ * Reverse default for the user option "allow launcher/panel in greeter
12+ when locked." And allow that property to be controlled by an
13+ AccountsService property. (LP: #1358340) (LP: #1358340)
14+ * With recent password support, we want to be able to unlock the
15+ device even with a password set. And we need to be able to do this
16+ once the new adbd lands. So I've added a DBus command to hide the
17+ greeter. This should be secure because all apps are constrained and
18+ if you're on the local session bus unconstrained, you already have
19+ access to anything you want.
20+
21+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 28 Aug 2014 20:06:41 +0000
22+
1unity8 (8.00+14.10.20140827.2-0ubuntu1) utopic; urgency=low
23unity8 (8.00+14.10.20140827.2-0ubuntu1) utopic; urgency=low
2
24
3 [ Michał Sawicz ]
25 [ Michał Sawicz ]
debian/control+2−2
@@ -85,7 +85,7 @@ Depends: gsettings-desktop-schemas,
85 qmenumodel-qml (>= 0.2.8),
85 qmenumodel-qml (>= 0.2.8),
86 qml-module-qtquick-xmllistmodel,
86 qml-module-qtquick-xmllistmodel,
87 qtdeclarative5-gsettings1.0,
87 qtdeclarative5-gsettings1.0,
88− qtdeclarative5-qtmir-plugin (>= 0.4.1),
88+ qtdeclarative5-qtmir-plugin (>= 0.4.3),
89 qtdeclarative5-ubuntu-telephony0.1,
89 qtdeclarative5-ubuntu-telephony0.1,
90 unity-launcher-impl-3,
90 unity-launcher-impl-3,
91 unity8-common (= ${source:Version}),
91 unity8-common (= ${source:Version}),
@@ -168,7 +168,7 @@ Package: unity8-private
168Architecture: any
168Architecture: any
169Multi-Arch: same
169Multi-Arch: same
170Pre-Depends: ${misc:Pre-Depends},
170Pre-Depends: ${misc:Pre-Depends},
171−Depends: accountsservice-ubuntu-schemas,
171+Depends: accountsservice-ubuntu-schemas (>= 0.0.3),
172 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
172 gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
173 libhardware2,
173 libhardware2,
174 libunity-core-6.0-9,
174 libunity-core-6.0-9,
plugins/AccountsService/AccountsService.cpp+38
@@ -26,6 +26,8 @@ AccountsService::AccountsService(QObject* parent)
26 m_service(new AccountsServiceDBusAdaptor(this)),
26 m_service(new AccountsServiceDBusAdaptor(this)),
27 m_user(qgetenv("USER")),
27 m_user(qgetenv("USER")),
28 m_demoEdges(false),
28 m_demoEdges(false),
29+ m_enableLauncherWhileLocked(false),
30+ m_enableIndicatorsWhileLocked(false),
29 m_statsWelcomeScreen(false),
31 m_statsWelcomeScreen(false),
30 m_passwordDisplayHint(Keyboard),
32 m_passwordDisplayHint(Keyboard),
31 m_failedLogins(0)
33 m_failedLogins(0)
@@ -47,6 +49,8 @@ void AccountsService::setUser(const QString &user)
47 Q_EMIT userChanged();
49 Q_EMIT userChanged();
48
50
49 updateDemoEdges();
51 updateDemoEdges();
52+ updateEnableLauncherWhileLocked();
53+ updateEnableIndicatorsWhileLocked();
50 updateBackgroundFile();
54 updateBackgroundFile();
51 updateStatsWelcomeScreen();
55 updateStatsWelcomeScreen();
52 updatePasswordDisplayHint();
56 updatePasswordDisplayHint();
@@ -64,6 +68,16 @@ void AccountsService::setDemoEdges(bool demoEdges)
64 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
68 m_service->setUserProperty(m_user, "com.canonical.unity.AccountsService", "demo-edges", demoEdges);
65}
69}
66
70
71+bool AccountsService::enableLauncherWhileLocked() const
72+{
73+ return m_enableLauncherWhileLocked;
74+}
75+
76+bool AccountsService::enableIndicatorsWhileLocked() const
77+{
78+ return m_enableIndicatorsWhileLocked;
79+}
80+
67QString AccountsService::backgroundFile() const
81QString AccountsService::backgroundFile() const
68{
82{
69 return m_backgroundFile;
83 return m_backgroundFile;
@@ -88,6 +102,24 @@ void AccountsService::updateDemoEdges()
88 }
102 }
89}
103}
90
104
105+void AccountsService::updateEnableLauncherWhileLocked()
106+{
107+ auto enableLauncherWhileLocked = m_service->getUserProperty(m_user, "com.ubuntu.AccountsService.SecurityPrivacy", "EnableLauncherWhileLocked").toBool();
108+ if (m_enableLauncherWhileLocked != enableLauncherWhileLocked) {
109+ m_enableLauncherWhileLocked = enableLauncherWhileLocked;
110+ Q_EMIT enableLauncherWhileLockedChanged();
111+ }
112+}
113+
114+void AccountsService::updateEnableIndicatorsWhileLocked()
115+{
116+ auto enableIndicatorsWhileLocked = m_service->getUserProperty(m_user, "com.ubuntu.AccountsService.SecurityPrivacy", "EnableIndicatorsWhileLocked").toBool();
117+ if (m_enableIndicatorsWhileLocked != enableIndicatorsWhileLocked) {
118+ m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
119+ Q_EMIT enableIndicatorsWhileLockedChanged();
120+ }
121+}
122+
91void AccountsService::updateBackgroundFile()
123void AccountsService::updateBackgroundFile()
92{
124{
93 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
125 auto backgroundFile = m_service->getUserProperty(m_user, "org.freedesktop.Accounts.User", "BackgroundFile").toString();
@@ -157,6 +189,12 @@ void AccountsService::propertiesChanged(const QString &user, const QString &inte
157 if (changed.contains("PasswordDisplayHint")) {
189 if (changed.contains("PasswordDisplayHint")) {
158 updatePasswordDisplayHint();
190 updatePasswordDisplayHint();
159 }
191 }
192+ if (changed.contains("EnableLauncherWhileLocked")) {
193+ updateEnableLauncherWhileLocked();
194+ }
195+ if (changed.contains("EnableIndicatorsWhileLocked")) {
196+ updateEnableIndicatorsWhileLocked();
197+ }
160 }
198 }
161}
199}
162
200
plugins/AccountsService/AccountsService.h+14
@@ -36,6 +36,12 @@ class AccountsService: public QObject
36 READ demoEdges
36 READ demoEdges
37 WRITE setDemoEdges
37 WRITE setDemoEdges
38 NOTIFY demoEdgesChanged)
38 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool enableLauncherWhileLocked
40+ READ enableLauncherWhileLocked
41+ NOTIFY enableLauncherWhileLockedChanged)
42+ Q_PROPERTY (bool enableIndicatorsWhileLocked
43+ READ enableIndicatorsWhileLocked
44+ NOTIFY enableIndicatorsWhileLockedChanged)
39 Q_PROPERTY (QString backgroundFile
45 Q_PROPERTY (QString backgroundFile
40 READ backgroundFile
46 READ backgroundFile
41 NOTIFY backgroundFileChanged)
47 NOTIFY backgroundFileChanged)
@@ -62,6 +68,8 @@ public:
62 void setUser(const QString &user);
68 void setUser(const QString &user);
63 bool demoEdges() const;
69 bool demoEdges() const;
64 void setDemoEdges(bool demoEdges);
70 void setDemoEdges(bool demoEdges);
71+ bool enableLauncherWhileLocked() const;
72+ bool enableIndicatorsWhileLocked() const;
65 QString backgroundFile() const;
73 QString backgroundFile() const;
66 bool statsWelcomeScreen() const;
74 bool statsWelcomeScreen() const;
67 PasswordDisplayHint passwordDisplayHint() const;
75 PasswordDisplayHint passwordDisplayHint() const;
@@ -71,6 +79,8 @@ public:
71Q_SIGNALS:
79Q_SIGNALS:
72 void userChanged();
80 void userChanged();
73 void demoEdgesChanged();
81 void demoEdgesChanged();
82+ void enableLauncherWhileLockedChanged();
83+ void enableIndicatorsWhileLockedChanged();
74 void backgroundFileChanged();
84 void backgroundFileChanged();
75 void statsWelcomeScreenChanged();
85 void statsWelcomeScreenChanged();
76 void passwordDisplayHintChanged();
86 void passwordDisplayHintChanged();
@@ -82,6 +92,8 @@ private Q_SLOTS:
82
92
83private:
93private:
84 void updateDemoEdges();
94 void updateDemoEdges();
95+ void updateEnableLauncherWhileLocked();
96+ void updateEnableIndicatorsWhileLocked();
85 void updateBackgroundFile();
97 void updateBackgroundFile();
86 void updateStatsWelcomeScreen();
98 void updateStatsWelcomeScreen();
87 void updatePasswordDisplayHint();
99 void updatePasswordDisplayHint();
@@ -90,6 +102,8 @@ private:
90 AccountsServiceDBusAdaptor *m_service;
102 AccountsServiceDBusAdaptor *m_service;
91 QString m_user;
103 QString m_user;
92 bool m_demoEdges;
104 bool m_demoEdges;
105+ bool m_enableLauncherWhileLocked;
106+ bool m_enableIndicatorsWhileLocked;
93 QString m_backgroundFile;
107 QString m_backgroundFile;
94 bool m_statsWelcomeScreen;
108 bool m_statsWelcomeScreen;
95 PasswordDisplayHint m_passwordDisplayHint;
109 PasswordDisplayHint m_passwordDisplayHint;
plugins/AccountsService/AccountsService.qmltypes+1
@@ -26,5 +26,6 @@ Module {
26 Property { name: "backgroundFile"; type: "string"; isReadonly: true }
26 Property { name: "backgroundFile"; type: "string"; isReadonly: true }
27 Property { name: "statsWelcomeScreen"; type: "bool"; isReadonly: true }
27 Property { name: "statsWelcomeScreen"; type: "bool"; isReadonly: true }
28 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
28 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
29+ Property { name: "failedLogins"; type: "uint" }
29 }
30 }
30}
31}
plugins/LightDM/DBusGreeter.cpp+5
@@ -39,6 +39,11 @@ void DBusGreeter::ShowGreeter()
39 return Q_EMIT m_greeter->showGreeter();
39 return Q_EMIT m_greeter->showGreeter();
40}
40}
41
41
42+void DBusGreeter::HideGreeter()
43+{
44+ return Q_EMIT m_greeter->hideGreeter();
45+}
46+
42void DBusGreeter::isActiveChangedHandler()
47void DBusGreeter::isActiveChangedHandler()
43{
48{
44 notifyPropertyChanged("IsActive", isActive());
49 notifyPropertyChanged("IsActive", isActive());
plugins/LightDM/DBusGreeter.h+1
@@ -38,6 +38,7 @@ public:
38
38
39 bool isActive() const;
39 bool isActive() const;
40 Q_SCRIPTABLE void ShowGreeter(); // temporary, until we split the greeter again
40 Q_SCRIPTABLE void ShowGreeter(); // temporary, until we split the greeter again
41+ Q_SCRIPTABLE void HideGreeter(); // temporary, until we split the greeter again
41
42
42Q_SIGNALS:
43Q_SIGNALS:
43 void isActiveChanged();
44 void isActiveChanged();
plugins/LightDM/Greeter.h+1
@@ -62,6 +62,7 @@ Q_SIGNALS:
62 void isAuthenticatedChanged();
62 void isAuthenticatedChanged();
63 void promptlessChanged();
63 void promptlessChanged();
64 void showGreeter();
64 void showGreeter();
65+ void hideGreeter();
65
66
66 // This signal is emitted by external agents like indicators, and the UI
67 // This signal is emitted by external agents like indicators, and the UI
67 // should switch to this user if possible.
68 // should switch to this user if possible.
plugins/LightDM/LightDM.qmltypes+2
@@ -27,6 +27,7 @@ Module {
27 name: "showPrompt"
27 name: "showPrompt"
28 Parameter { name: "text"; type: "string" }
28 Parameter { name: "text"; type: "string" }
29 Parameter { name: "isSecret"; type: "bool" }
29 Parameter { name: "isSecret"; type: "bool" }
30+ Parameter { name: "isDefaultPrompt"; type: "bool" }
30 }
31 }
31 Signal { name: "authenticationComplete" }
32 Signal { name: "authenticationComplete" }
32 Signal {
33 Signal {
@@ -34,6 +35,7 @@ Module {
34 Parameter { name: "user"; type: "string" }
35 Parameter { name: "user"; type: "string" }
35 }
36 }
36 Signal { name: "isActiveChanged" }
37 Signal { name: "isActiveChanged" }
38+ Signal { name: "isAuthenticatedChanged" }
37 Signal { name: "showGreeter" }
39 Signal { name: "showGreeter" }
38 Signal {
40 Signal {
39 name: "requestAuthenticationUser"
41 name: "requestAuthenticationUser"
plugins/Ubuntu/SystemImage/SystemImage.qmltypes+2
@@ -11,6 +11,8 @@ Module {
11 name: "SystemImage"
11 name: "SystemImage"
12 prototype: "QObject"
12 prototype: "QObject"
13 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
13 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
14+ isCreatable: false
15+ isSingleton: true
14 exportMetaObjectRevisions: [0]
16 exportMetaObjectRevisions: [0]
15 Method { name: "factoryReset" }
17 Method { name: "factoryReset" }
16 }
18 }
plugins/Unity/Indicators/Indicators.qmltypes+6−4
@@ -219,12 +219,14 @@ Module {
219 Method {
219 Method {
220 name: "model"
220 name: "model"
221 type: "UnityMenuModel*"
221 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" }
223 }
225 }
224 Method {
226 Method {
225− name: "registerModel"
227+ name: "contains"
228+ type: "bool"
226− Parameter { name: "path"; type: "string" }
229+ Parameter { name: "path"; type: "QByteArray" }
227− Parameter { name: "menuModel"; type: "UnityMenuModel"; isPointer: true }
228 }
230 }
229 }
231 }
230 Component {
232 Component {
po/am.po+51−49
@@ -8,16 +8,16 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: samson <Unknown>\n"
12"Last-Translator: samson <Unknown>\n"
13"Language-Team: Amharic <am@li.org>\n"
13"Language-Team: Amharic <am@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-03 07:05+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17196)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "የ መግቢያ ቃል: "
22msgstr "የ መግቢያ ቃል: "
23
23
@@ -32,53 +32,55 @@ msgstr "አቋራጭ መለያያ"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "መውጫ"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "በእርግጥ መውጣት ይፈልጋሉ?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "አይ"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "አዎ"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "ማጥፊያ"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "በእርግጥ ማጥፋት ይፈልጋሉ?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "እንደገና ማስነሻ"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "በእርግጥ እንደገና ማስነሳት ይፈልጋሉ?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "ሐይል"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"በእርግጥ ሐይሉን ማጥፋት\n"
77+"ይፈልጋሉ?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "ማጥፊያ"
81msgstr "ማጥፊያ"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "መሰረዣ"
85msgstr "መሰረዣ"
84
86
@@ -127,6 +129,7 @@ msgid ""
127"You have now mastered the edge gestures and can start using the "
129"You have now mastered the edge gestures and can start using the "
128"phone<br><br>Tap on the screen to start"
130"phone<br><br>Tap on the screen to start"
129msgstr ""
131msgstr ""
132+"አሁን የ ጠርዝ እንቅስቃሴን አውቀዋል እና መጀመር ይችላሉ ስልኩን መጠቀም <br><br>መመልከቻውን መታ ያድርጉ ለመጀመር"
130
133
131#: qml/Components/Lockscreen.qml:167
134#: qml/Components/Lockscreen.qml:167
132msgid "Please wait"
135msgid "Please wait"
@@ -161,21 +164,22 @@ msgstr "አነስተኛ መመልከቻ"
161msgid "See all"
164msgid "See all"
162msgstr "ሁሉንም መመልከቻ"
165msgstr "ሁሉንም መመልከቻ"
163
166
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
165msgid "Search"
169msgid "Search"
166msgstr "መፈለጊያ"
170msgstr "መፈለጊያ"
167
171
168#: qml/Dash/PageHeader.qml:270
172#: qml/Dash/PageHeader.qml:270
169msgid "Settings"
173msgid "Settings"
170−msgstr ""
174+msgstr "ማሰናጃ"
171
175
172#: qml/Dash/PageHeader.qml:279
176#: qml/Dash/PageHeader.qml:279
173msgid "Remove from Favorites"
177msgid "Remove from Favorites"
174−msgstr ""
178+msgstr "ከምወዳቸው ማስወገጃ"
175
179
176#: qml/Dash/PageHeader.qml:279
180#: qml/Dash/PageHeader.qml:279
177msgid "Add to Favorites"
181msgid "Add to Favorites"
178−msgstr ""
182+msgstr "ወደምወዳቸው መጨመሪያ"
179
183
180#: qml/Dash/Previews/PreviewActionCombo.qml:34
184#: qml/Dash/Previews/PreviewActionCombo.qml:34
181msgid "More..."
185msgid "More..."
@@ -199,13 +203,13 @@ msgstr "መላኪያ"
199
203
200#: qml/Dash/ScopesOverview.qml:201
204#: qml/Dash/ScopesOverview.qml:201
201msgid "Manage Dash"
205msgid "Manage Dash"
202−msgstr ""
206+msgstr "የ ዳሽ አስተዳዳሪ"
203
207
204−#: qml/Dash/ScopesOverview.qml:408
208+#: qml/Dash/ScopesOverview.qml:417
205msgid "Done"
209msgid "Done"
206msgstr "ጨርሷል"
210msgstr "ጨርሷል"
207
211
208−#: qml/Dash/ScopesOverview.qml:434
212+#: qml/Dash/ScopesOverview.qml:443
209msgid "Store"
213msgid "Store"
210msgstr "ማስቀመጫ"
214msgstr "ማስቀመጫ"
211
215
@@ -221,7 +225,7 @@ msgstr "ሁሉንም"
221msgid "Swipe to unlock"
225msgid "Swipe to unlock"
222msgstr "ለመክፈት ይጥረጉ"
226msgstr "ለመክፈት ይጥረጉ"
223
227
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
228+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
229msgid "Confirm"
226msgstr "ማረጋገጫ"
230msgstr "ማረጋገጫ"
227
231
@@ -247,11 +251,11 @@ msgstr "የመግቢያ ቃል ማሳያ"
247
251
248#: qml/Notifications/NotificationMenuItemFactory.qml:120
252#: qml/Notifications/NotificationMenuItemFactory.qml:120
249msgid "Enter SIM PIN"
253msgid "Enter SIM PIN"
250−msgstr ""
254+msgstr "ሲም ፒን ያስገቡ"
251
255
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256+#: qml/Notifications/NotificationMenuItemFactory.qml:121
253msgid "Sorry, incorrect PIN"
257msgid "Sorry, incorrect PIN"
254−msgstr ""
258+msgstr "አዝናለሁ የተሳሳተ ፒን"
255
259
256#: qml/Panel/ActiveCallHint.qml:77
260#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
261msgid "Tap to return to call..."
@@ -287,64 +291,62 @@ msgstr "አልተቻለም: እንደገና ለመሞከር መታ ያድርጉ"
287
291
288#: qml/Panel/Indicators/ModemInfoItem.qml:105
292#: qml/Panel/Indicators/ModemInfoItem.qml:105
289msgid "Unlock SIM"
293msgid "Unlock SIM"
290−msgstr ""
294+msgstr "ሲም መክፈቻ"
291
295
292#: qml/Panel/Indicators/RoamingIndication.qml:27
296#: qml/Panel/Indicators/RoamingIndication.qml:27
293msgid "Roaming"
297msgid "Roaming"
294−msgstr ""
298+msgstr "ማዘዋወሪያ"
295
299
296−#: qml/Shell.qml:266
300+#: qml/Shell.qml:279
297msgid "Enter your passphrase"
301msgid "Enter your passphrase"
298−msgstr ""
302+msgstr "የማለፊያ ሐረግ ያስገቡ"
299
303
300−#: qml/Shell.qml:267
304+#: qml/Shell.qml:280
301msgid "Sorry, incorrect passphrase"
305msgid "Sorry, incorrect passphrase"
302−msgstr ""
306+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
303
307
304#: qml/Shell.qml:282
308#: qml/Shell.qml:282
305msgid "Enter your passcode"
309msgid "Enter your passcode"
306−msgstr ""
310+msgstr "የ እርስዎን የማለፊያ ኮድ ያስገቡ"
307
311
308#: qml/Shell.qml:283
312#: qml/Shell.qml:283
309msgid "Sorry, incorrect passcode"
313msgid "Sorry, incorrect passcode"
310−msgstr ""
314+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
311
315
312−#: qml/Shell.qml:273
316+#: qml/Shell.qml:286
313#, qt-format
317#, qt-format
314msgid "Enter your %1"
318msgid "Enter your %1"
315msgstr "ያስገቡ የ እርስዎን %1"
319msgstr "ያስገቡ የ እርስዎን %1"
316
320
317−#: qml/Shell.qml:274
321+#: qml/Shell.qml:287
318#, qt-format
322#, qt-format
319msgid "Sorry, incorrect %1"
323msgid "Sorry, incorrect %1"
320msgstr "አዝናለሁ: የተሳሳተ%1"
324msgstr "አዝናለሁ: የተሳሳተ%1"
321
325
322−#: qml/Shell.qml:310
326+#: qml/Shell.qml:323
323msgid "Sorry, incorrect passphrase."
327msgid "Sorry, incorrect passphrase."
324−msgstr ""
328+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ሐረግ"
325
329
326−#: qml/Shell.qml:311
330+#: qml/Shell.qml:324
327msgid "Sorry, incorrect passcode."
331msgid "Sorry, incorrect passcode."
328−msgstr ""
332+msgstr "አዝናለሁ የተሳሳተ የማለፊያ ኮድ"
329
333
330−#: qml/Shell.qml:312
334+#: qml/Shell.qml:325
331msgid "This will be your last attempt."
335msgid "This will be your last attempt."
332msgstr "ይህ የመጨረሻ ሙከራዎ ነው"
336msgstr "ይህ የመጨረሻ ሙከራዎ ነው"
333
337
334−#: qml/Shell.qml:314
338+#: qml/Shell.qml:327
335msgid ""
339msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
340"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
341"reset and all personal data will be deleted."
338msgstr ""
342msgstr ""
343+"የተሳሳተ የማለፊያ ሐረግ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
344+"ይጠፋል"
339
345
340−#: qml/Shell.qml:315
346+#: qml/Shell.qml:328
341msgid ""
347msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
349"and all personal data will be deleted."
344msgstr ""
350msgstr ""
345−
351+"የተሳሳተ የማለፊያ ኮድ ካስገቡ የ እርስዎ ስልክ ወደ ነበረበት ወደ ፋክቶሪው ዘዴ ይመለሳል: እና የ ግል ዳታ በሙሉ "
346−#~ msgid "Restart"
352+"ይጠፋል"
347−#~ msgstr "እንደገና ማስጀመሪያ"
348−
349−#~ msgid "Are you sure you would like to turn power off?"
350−#~ msgstr "በእርግጥ ሐይሉን ማጥፋት ይፈልጋሉ"
po/ast.po+62−55
@@ -8,18 +8,18 @@ msgstr ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
12"Last-Translator: ivarela <ivarela@ubuntu.com>\n"
13"Language-Team: Asturian <ast@li.org>\n"
13"Language-Team: Asturian <ast@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22−msgstr ""
22+msgstr "Contraseña: "
23
23
24#: plugins/Unity/Launcher/launcheritem.cpp:43
24#: plugins/Unity/Launcher/launcheritem.cpp:43
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,55 +32,57 @@ msgstr "Desanclar"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Zarrar sesión"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "De xuru que quies zarrar la sesión?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Non"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Sí"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Apagar"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "De xuru que quies apagar?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Reaniciar"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "De xuru que quies reaniciar?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Enerxía"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"De xuru que quies\n"
77+"apagar?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79−msgstr ""
81+msgstr "Apagar"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83−msgstr ""
85+msgstr "Encaboxar"
84
86
85#: qml/Components/EdgeDemoOverlay.qml:151
87#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
88msgid "Skip intro"
@@ -134,11 +136,11 @@ msgstr ""
134
136
135#: qml/Components/Lockscreen.qml:167
137#: qml/Components/Lockscreen.qml:167
136msgid "Please wait"
138msgid "Please wait"
137−msgstr ""
139+msgstr "Espera un segundu"
138
140
139#: qml/Components/Lockscreen.qml:172
141#: qml/Components/Lockscreen.qml:172
140msgid "Too many incorrect attempts"
142msgid "Too many incorrect attempts"
141−msgstr ""
143+msgstr "Munchos intentos incorreutos"
142
144
143#: qml/Components/Lockscreen.qml:206
145#: qml/Components/Lockscreen.qml:206
144msgid "Emergency Call"
146msgid "Emergency Call"
@@ -165,21 +167,22 @@ msgstr "Ver menos"
165msgid "See all"
167msgid "See all"
166msgstr "Ver too"
168msgstr "Ver too"
167
169
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
169msgid "Search"
172msgid "Search"
170msgstr "Guetar"
173msgstr "Guetar"
171
174
172#: qml/Dash/PageHeader.qml:270
175#: qml/Dash/PageHeader.qml:270
173msgid "Settings"
176msgid "Settings"
174−msgstr ""
177+msgstr "Axustes"
175
178
176#: qml/Dash/PageHeader.qml:279
179#: qml/Dash/PageHeader.qml:279
177msgid "Remove from Favorites"
180msgid "Remove from Favorites"
178−msgstr ""
181+msgstr "Desaniciar de favoritos"
179
182
180#: qml/Dash/PageHeader.qml:279
183#: qml/Dash/PageHeader.qml:279
181msgid "Add to Favorites"
184msgid "Add to Favorites"
182−msgstr ""
185+msgstr "Amestar a favoritos"
183
186
184#: qml/Dash/Previews/PreviewActionCombo.qml:34
187#: qml/Dash/Previews/PreviewActionCombo.qml:34
185msgid "More..."
188msgid "More..."
@@ -203,29 +206,29 @@ msgstr "Unviar"
203
206
204#: qml/Dash/ScopesOverview.qml:201
207#: qml/Dash/ScopesOverview.qml:201
205msgid "Manage Dash"
208msgid "Manage Dash"
206−msgstr ""
209+msgstr "Xestionar tableru"
207
210
208−#: qml/Dash/ScopesOverview.qml:408
211+#: qml/Dash/ScopesOverview.qml:417
209msgid "Done"
212msgid "Done"
210−msgstr ""
213+msgstr "Fecho"
211
214
212−#: qml/Dash/ScopesOverview.qml:434
215+#: qml/Dash/ScopesOverview.qml:443
213msgid "Store"
216msgid "Store"
214−msgstr ""
217+msgstr "Tienda"
215
218
216#: qml/Dash/ScopesOverviewTab.qml:36
219#: qml/Dash/ScopesOverviewTab.qml:36
217msgid "Favorites"
220msgid "Favorites"
218−msgstr ""
221+msgstr "Favoritos"
219
222
220#: qml/Dash/ScopesOverviewTab.qml:54
223#: qml/Dash/ScopesOverviewTab.qml:54
221msgid "All"
224msgid "All"
222−msgstr ""
225+msgstr "Too"
223
226
224#: qml/Greeter/Greeter.qml:157
227#: qml/Greeter/Greeter.qml:157
225msgid "Swipe to unlock"
228msgid "Swipe to unlock"
226msgstr "Esliza pa desbloquiar"
229msgstr "Esliza pa desbloquiar"
227
230
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
231+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
232msgid "Confirm"
230msgstr "Confirmar"
233msgstr "Confirmar"
231
234
@@ -251,11 +254,11 @@ msgstr "Amosar contraseña"
251
254
252#: qml/Notifications/NotificationMenuItemFactory.qml:120
255#: qml/Notifications/NotificationMenuItemFactory.qml:120
253msgid "Enter SIM PIN"
256msgid "Enter SIM PIN"
254−msgstr ""
257+msgstr "Escribi'l PIN de la SIM"
255
258
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259+#: qml/Notifications/NotificationMenuItemFactory.qml:121
257msgid "Sorry, incorrect PIN"
260msgid "Sorry, incorrect PIN"
258−msgstr ""
261+msgstr "PIN incorreutu"
259
262
260#: qml/Panel/ActiveCallHint.qml:77
263#: qml/Panel/ActiveCallHint.qml:77
261msgid "Tap to return to call..."
264msgid "Tap to return to call..."
@@ -291,58 +294,62 @@ msgstr "Falló, toca pa reintentar"
291
294
292#: qml/Panel/Indicators/ModemInfoItem.qml:105
295#: qml/Panel/Indicators/ModemInfoItem.qml:105
293msgid "Unlock SIM"
296msgid "Unlock SIM"
294−msgstr ""
297+msgstr "Desbloquiar SIM"
295
298
296#: qml/Panel/Indicators/RoamingIndication.qml:27
299#: qml/Panel/Indicators/RoamingIndication.qml:27
297msgid "Roaming"
300msgid "Roaming"
298−msgstr ""
301+msgstr "Roaming"
299
302
300−#: qml/Shell.qml:266
303+#: qml/Shell.qml:279
301msgid "Enter your passphrase"
304msgid "Enter your passphrase"
302−msgstr ""
305+msgstr "Introduz contraseña"
303
306
304−#: qml/Shell.qml:267
307+#: qml/Shell.qml:280
305msgid "Sorry, incorrect passphrase"
308msgid "Sorry, incorrect passphrase"
306−msgstr ""
309+msgstr "Sentímoslo, contraseña incorreuta"
307
310
308#: qml/Shell.qml:282
311#: qml/Shell.qml:282
309msgid "Enter your passcode"
312msgid "Enter your passcode"
310−msgstr ""
313+msgstr "Introduz códigu de pasu"
311
314
312#: qml/Shell.qml:283
315#: qml/Shell.qml:283
313msgid "Sorry, incorrect passcode"
316msgid "Sorry, incorrect passcode"
314−msgstr ""
317+msgstr "Sentímoslo, códigu de pasu incorreutu"
315
318
316−#: qml/Shell.qml:273
319+#: qml/Shell.qml:286
317#, qt-format
320#, qt-format
318msgid "Enter your %1"
321msgid "Enter your %1"
319−msgstr ""
322+msgstr "Introduz %1"
320
323
321−#: qml/Shell.qml:274
324+#: qml/Shell.qml:287
322#, qt-format
325#, qt-format
323msgid "Sorry, incorrect %1"
326msgid "Sorry, incorrect %1"
324−msgstr ""
327+msgstr "Sentímoslo, %1 incorreutu"
325
328
326−#: qml/Shell.qml:310
329+#: qml/Shell.qml:323
327msgid "Sorry, incorrect passphrase."
330msgid "Sorry, incorrect passphrase."
328−msgstr ""
331+msgstr "Fras de pasu incorreuta"
329
332
330−#: qml/Shell.qml:311
333+#: qml/Shell.qml:324
331msgid "Sorry, incorrect passcode."
334msgid "Sorry, incorrect passcode."
332−msgstr ""
335+msgstr "Códigu de pasu incorreutu"
333
336
334−#: qml/Shell.qml:312
337+#: qml/Shell.qml:325
335msgid "This will be your last attempt."
338msgid "This will be your last attempt."
336−msgstr ""
339+msgstr "Esti ye'l caberu intentu."
337
340
338−#: qml/Shell.qml:314
341+#: qml/Shell.qml:327
339msgid ""
342msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
343"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
344"reset and all personal data will be deleted."
342msgstr ""
345msgstr ""
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."
343
348
344−#: qml/Shell.qml:315
349+#: qml/Shell.qml:328
345msgid ""
350msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
352"and all personal data will be deleted."
348msgstr ""
353msgstr ""
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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 22:12+0000\n"
11+"PO-Revision-Date: 2014-09-03 16:39+0000\n"
12−"Last-Translator: Turan Mahmudov <turan.mahmudov@gmail.com>\n"
12+"Last-Translator: Nicat Məmmədov <n1c4t97@gmail.com>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
13"Language-Team: Azerbaijani <az@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-04 08:35+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17196)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22−msgstr "Parol: "
22+msgstr "Şifrә: "
23
23
24#: plugins/Unity/Launcher/launcheritem.cpp:43
24#: plugins/Unity/Launcher/launcheritem.cpp:43
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,37 +32,37 @@ msgstr "Açma qısayolu"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Çıxış"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Çıxmaq istәdiyinizdәn әminsiniz?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Yox"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Hə"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Sistemi Söndür"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Sistemi söndürmәk istәdiyinizә әminsiniz?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Yenidən yüklə"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Yenidәn başlatmaq istәdiyinizә әminsiniz?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
@@ -74,17 +74,17 @@ msgid ""
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76
76
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
78msgid "Power off"
79msgstr "Söndür"
79msgstr "Söndür"
80
80
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
82msgid "Cancel"
83msgstr "İmtina"
83msgstr "İmtina"
84
84
85#: qml/Components/EdgeDemoOverlay.qml:151
85#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
86msgid "Skip intro"
87−msgstr "Intro -nu keç"
87+msgstr "Tәqdimatı keç"
88
88
89#: qml/Components/EdgeDemo.qml:112
89#: qml/Components/EdgeDemo.qml:112
90msgid "Right edge"
90msgid "Right edge"
@@ -92,7 +92,7 @@ msgstr "Sağ Künc"
92
92
93#: qml/Components/EdgeDemo.qml:113
93#: qml/Components/EdgeDemo.qml:113
94msgid "Try swiping from the right edge to unlock the phone"
94msgid "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"
96
96
97#: qml/Components/EdgeDemo.qml:144
97#: qml/Components/EdgeDemo.qml:144
98msgid "Top edge"
98msgid "Top edge"
@@ -100,7 +100,7 @@ msgstr "Yuxarı künc"
100
100
101#: qml/Components/EdgeDemo.qml:145
101#: qml/Components/EdgeDemo.qml:145
102msgid "Try swiping from the top edge to access the indicators"
102msgid "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"
104
104
105#: qml/Components/EdgeDemo.qml:170
105#: qml/Components/EdgeDemo.qml:170
106msgid "Close"
106msgid "Close"
@@ -108,7 +108,7 @@ msgstr "Bağla"
108
108
109#: qml/Components/EdgeDemo.qml:171
109#: qml/Components/EdgeDemo.qml:171
110msgid "Swipe up again to close the settings screen"
110msgid "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"
112
112
113#: qml/Components/EdgeDemo.qml:198
113#: qml/Components/EdgeDemo.qml:198
114msgid "Left edge"
114msgid "Left edge"
@@ -128,16 +128,16 @@ msgid ""
128"You have now mastered the edge gestures and can start using the "
128"You have now mastered the edge gestures and can start using the "
129"phone<br><br>Tap on the screen to start"
129"phone<br><br>Tap on the screen to start"
130msgstr ""
130msgstr ""
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 "
132"bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
132"bilərsiniz.<br><br>Başlamaq üçün ekrana toxunun"
133
133
134#: qml/Components/Lockscreen.qml:167
134#: qml/Components/Lockscreen.qml:167
135msgid "Please wait"
135msgid "Please wait"
136−msgstr "Lütfən gözləyin"
136+msgstr "Xahiş edirik gözləyin"
137
137
138#: qml/Components/Lockscreen.qml:172
138#: qml/Components/Lockscreen.qml:172
139msgid "Too many incorrect attempts"
139msgid "Too many incorrect attempts"
140−msgstr "Çoxlu yanlış cəhd"
140+msgstr "Çoxlu yanlış cəhdlәr"
141
141
142#: qml/Components/Lockscreen.qml:206
142#: qml/Components/Lockscreen.qml:206
143msgid "Emergency Call"
143msgid "Emergency Call"
@@ -145,44 +145,45 @@ msgstr "Zərurət zəngi"
145
145
146#: qml/Components/Lockscreen.qml:226
146#: qml/Components/Lockscreen.qml:226
147msgid "OK"
147msgid "OK"
148−msgstr "ОК"
148+msgstr "Oldu"
149
149
150#: qml/Components/PassphraseLockscreen.qml:61
150#: qml/Components/PassphraseLockscreen.qml:61
151#, qt-format
151#, qt-format
152msgid "Hello %1"
152msgid "Hello %1"
153−msgstr "Xoş gördük %1"
153+msgstr "Salam %1"
154
154
155#: qml/Components/PassphraseLockscreen.qml:61
155#: qml/Components/PassphraseLockscreen.qml:61
156msgid "Hello"
156msgid "Hello"
157−msgstr "Xoş gördük"
157+msgstr "Salam"
158
158
159#: qml/Dash/GenericScopeView.qml:361
159#: qml/Dash/GenericScopeView.qml:361
160msgid "See less"
160msgid "See less"
161−msgstr "Daha az gör"
161+msgstr "Daha azını gör"
162
162
163#: qml/Dash/GenericScopeView.qml:361
163#: qml/Dash/GenericScopeView.qml:361
164msgid "See all"
164msgid "See all"
165msgstr "Hamısını gör"
165msgstr "Hamısını gör"
166
166
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
168msgid "Search"
169msgid "Search"
169msgstr "Axtar"
170msgstr "Axtar"
170
171
171#: qml/Dash/PageHeader.qml:270
172#: qml/Dash/PageHeader.qml:270
172msgid "Settings"
173msgid "Settings"
173−msgstr ""
174+msgstr "Tənzimləmələr"
174
175
175#: qml/Dash/PageHeader.qml:279
176#: qml/Dash/PageHeader.qml:279
176msgid "Remove from Favorites"
177msgid "Remove from Favorites"
177−msgstr ""
178+msgstr "Seçilmişlәrdәn çıxart"
178
179
179#: qml/Dash/PageHeader.qml:279
180#: qml/Dash/PageHeader.qml:279
180msgid "Add to Favorites"
181msgid "Add to Favorites"
181−msgstr ""
182+msgstr "Seçilmişlәrә әlavә et"
182
183
183#: qml/Dash/Previews/PreviewActionCombo.qml:34
184#: qml/Dash/Previews/PreviewActionCombo.qml:34
184msgid "More..."
185msgid "More..."
185−msgstr "Ətraflı..."
186+msgstr "Daha çox..."
186
187
187#: qml/Dash/Previews/PreviewActionCombo.qml:34
188#: qml/Dash/Previews/PreviewActionCombo.qml:34
188msgid "Less..."
189msgid "Less..."
@@ -190,7 +191,7 @@ msgstr "Az..."
190
191
191#: qml/Dash/Previews/PreviewRatingInput.qml:81
192#: qml/Dash/Previews/PreviewRatingInput.qml:81
192msgid "Rate this"
193msgid "Rate this"
193−msgstr "Qiymət ver"
194+msgstr "Qiymәtlәndir"
194
195
195#: qml/Dash/Previews/PreviewRatingInput.qml:126
196#: qml/Dash/Previews/PreviewRatingInput.qml:126
196msgid "Add a review"
197msgid "Add a review"
@@ -204,13 +205,13 @@ msgstr "Göndər"
204msgid "Manage Dash"
205msgid "Manage Dash"
205msgstr ""
206msgstr ""
206
207
207−#: qml/Dash/ScopesOverview.qml:408
208+#: qml/Dash/ScopesOverview.qml:417
208msgid "Done"
209msgid "Done"
209msgstr "Başa çatdı"
210msgstr "Başa çatdı"
210
211
211−#: qml/Dash/ScopesOverview.qml:434
212+#: qml/Dash/ScopesOverview.qml:443
212msgid "Store"
213msgid "Store"
213−msgstr "Saxla"
214+msgstr ""
214
215
215#: qml/Dash/ScopesOverviewTab.qml:36
216#: qml/Dash/ScopesOverviewTab.qml:36
216msgid "Favorites"
217msgid "Favorites"
@@ -224,13 +225,13 @@ msgstr "Hamısı"
224msgid "Swipe to unlock"
225msgid "Swipe to unlock"
225msgstr "Kilidi açmaq üçün sürüşdürün"
226msgstr "Kilidi açmaq üçün sürüşdürün"
226
227
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
228+#: qml/Hud/HudParametrizedActionsPage.qml:139
228msgid "Confirm"
229msgid "Confirm"
229msgstr "Təsdiqlə"
230msgstr "Təsdiqlə"
230
231
231#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
232#: qml/Hud/Hud.qml:61 qml/Hud/Hud.qml:99 qml/Hud/Hud.qml:372
232msgid "Type or say a command"
233msgid "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"
234
235
235#: qml/Hud/Hud.qml:84
236#: qml/Hud/Hud.qml:84
236msgid "Loading. Please Wait..."
237msgid "Loading. Please Wait..."
@@ -246,15 +247,15 @@ msgstr "Danışır..."
246
247
247#: qml/Notifications/NotificationMenuItemFactory.qml:105
248#: qml/Notifications/NotificationMenuItemFactory.qml:105
248msgid "Show password"
249msgid "Show password"
249−msgstr "Parolu göstər"
250+msgstr "Şifrәni göstәr"
250
251
251#: qml/Notifications/NotificationMenuItemFactory.qml:120
252#: qml/Notifications/NotificationMenuItemFactory.qml:120
252msgid "Enter SIM PIN"
253msgid "Enter SIM PIN"
253msgstr "SIM PIN kodunuzu daxil edin"
254msgstr "SIM PIN kodunuzu daxil edin"
254
255
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
256+#: qml/Notifications/NotificationMenuItemFactory.qml:121
256msgid "Sorry, incorrect PIN"
257msgid "Sorry, incorrect PIN"
257−msgstr "Təəssüf ki, PIN yanlışdır"
258+msgstr "Bağışlayın, PIN yanlışdır"
258
259
259#: qml/Panel/ActiveCallHint.qml:77
260#: qml/Panel/ActiveCallHint.qml:77
260msgid "Tap to return to call..."
261msgid "Tap to return to call..."
@@ -274,7 +275,7 @@ msgstr "Endirilir"
274
275
275#: qml/Panel/Indicators/MenuItemFactory.qml:657
276#: qml/Panel/Indicators/MenuItemFactory.qml:657
276msgid "Paused, tap to resume"
277msgid "Paused, tap to resume"
277−msgstr "Saxlanıldı, davam etmək üçün toxunun"
278+msgstr "Dayandırıldı. Davam etmək üçün toxunun"
278
279
279#: qml/Panel/Indicators/MenuItemFactory.qml:659
280#: qml/Panel/Indicators/MenuItemFactory.qml:659
280msgid "Canceled"
281msgid "Canceled"
@@ -286,7 +287,7 @@ msgstr "Bitdi"
286
287
287#: qml/Panel/Indicators/MenuItemFactory.qml:663
288#: qml/Panel/Indicators/MenuItemFactory.qml:663
288msgid "Failed, tap to retry"
289msgid "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"
290
291
291#: qml/Panel/Indicators/ModemInfoItem.qml:105
292#: qml/Panel/Indicators/ModemInfoItem.qml:105
292msgid "Unlock SIM"
293msgid "Unlock SIM"
@@ -296,13 +297,13 @@ msgstr "SIM kilidini aç"
296msgid "Roaming"
297msgid "Roaming"
297msgstr "Rominq"
298msgstr "Rominq"
298
299
299−#: qml/Shell.qml:266
300+#: qml/Shell.qml:279
300msgid "Enter your passphrase"
301msgid "Enter your passphrase"
301msgstr "Açar sözünüzü daxil edin"
302msgstr "Açar sözünüzü daxil edin"
302
303
303−#: qml/Shell.qml:267
304+#: qml/Shell.qml:280
304msgid "Sorry, incorrect passphrase"
305msgid "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"
306
307
307#: qml/Shell.qml:282
308#: qml/Shell.qml:282
308msgid "Enter your passcode"
309msgid "Enter your passcode"
@@ -312,29 +313,29 @@ msgstr ""
312msgid "Sorry, incorrect passcode"
313msgid "Sorry, incorrect passcode"
313msgstr ""
314msgstr ""
314
315
315−#: qml/Shell.qml:273
316+#: qml/Shell.qml:286
316#, qt-format
317#, qt-format
317msgid "Enter your %1"
318msgid "Enter your %1"
318msgstr "%1 daxil edin"
319msgstr "%1 daxil edin"
319
320
320−#: qml/Shell.qml:274
321+#: qml/Shell.qml:287
321#, qt-format
322#, qt-format
322msgid "Sorry, incorrect %1"
323msgid "Sorry, incorrect %1"
323−msgstr "Təəssüf ki, %1 yanlışdır"
324+msgstr "Bağışlayın, %1 yanlışdır"
324
325
325−#: qml/Shell.qml:310
326+#: qml/Shell.qml:323
326msgid "Sorry, incorrect passphrase."
327msgid "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."
328
329
329−#: qml/Shell.qml:311
330+#: qml/Shell.qml:324
330msgid "Sorry, incorrect passcode."
331msgid "Sorry, incorrect passcode."
331msgstr "Təəssüf ki, açar kod yanlışdır."
332msgstr "Təəssüf ki, açar kod yanlışdır."
332
333
333−#: qml/Shell.qml:312
334+#: qml/Shell.qml:325
334msgid "This will be your last attempt."
335msgid "This will be your last attempt."
335msgstr "Bu sizin son cəhdiniz olacaq."
336msgstr "Bu sizin son cəhdiniz olacaq."
336
337
337−#: qml/Shell.qml:314
338+#: qml/Shell.qml:327
338msgid ""
339msgid ""
339"If passphrase is entered incorrectly, your phone will conduct a factory "
340"If passphrase is entered incorrectly, your phone will conduct a factory "
340"reset and all personal data will be deleted."
341"reset and all personal data will be deleted."
@@ -342,19 +343,10 @@ msgstr ""
342"Əgər açar söz yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
343"Əgər açar söz yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
343"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
344"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
344
345
345−#: qml/Shell.qml:315
346+#: qml/Shell.qml:328
346msgid ""
347msgid ""
347"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"and all personal data will be deleted."
349"and all personal data will be deleted."
349msgstr ""
350msgstr ""
350"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
351"Əgər açar kod yanlış daxil edilibsə, onda telefonunuz fabrika parametrlərinə "
351"geri qayıdacaq və bütün şəxsi məlumatlarınız silinəcək."
352"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+34−42
@@ -8,16 +8,16 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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-01 01:01+0000\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
12"Last-Translator: David Planella <david.planella@ubuntu.com>\n"
13"Language-Team: Catalan <ca@li.org>\n"
13"Language-Team: Catalan <ca@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Contrasenya: "
22msgstr "Contrasenya: "
23
23
@@ -32,21 +32,21 @@ msgstr "Desenganxa la drecera"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Surt"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Segur que voleu sortir?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "No"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Sí"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
@@ -58,15 +58,15 @@ msgstr ""
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Reinicia"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Segur que voleu reiniciar?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Energia"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
@@ -74,11 +74,11 @@ msgid ""
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76
76
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
78msgid "Power off"
79msgstr "Apaga'l"
79msgstr "Apaga'l"
80
80
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
82msgid "Cancel"
83msgstr "Cancel·la"
83msgstr "Cancel·la"
84
84
@@ -169,21 +169,22 @@ msgstr "Mostra'n menys"
169msgid "See all"
169msgid "See all"
170msgstr "Mostra-ho tot"
170msgstr "Mostra-ho tot"
171
171
172−#: qml/Dash/GenericScopeView.qml:424 qml/Panel/SearchIndicator.qml:27
172+#: qml/Dash/GenericScopeView.qml:424 qml/Dash/PageHeader.qml:260
173+#: qml/Panel/SearchIndicator.qml:27
173msgid "Search"
174msgid "Search"
174msgstr "Cerca"
175msgstr "Cerca"
175
176
176#: qml/Dash/PageHeader.qml:270
177#: qml/Dash/PageHeader.qml:270
177msgid "Settings"
178msgid "Settings"
178−msgstr ""
179+msgstr "Paràmetres"
179
180
180#: qml/Dash/PageHeader.qml:279
181#: qml/Dash/PageHeader.qml:279
181msgid "Remove from Favorites"
182msgid "Remove from Favorites"
182−msgstr ""
183+msgstr "Suprimeix dels preferits"
183
184
184#: qml/Dash/PageHeader.qml:279
185#: qml/Dash/PageHeader.qml:279
185msgid "Add to Favorites"
186msgid "Add to Favorites"
186−msgstr ""
187+msgstr "Afegeix als preferits"
187
188
188#: qml/Dash/Previews/PreviewActionCombo.qml:34
189#: qml/Dash/Previews/PreviewActionCombo.qml:34
189msgid "More..."
190msgid "More..."
@@ -209,11 +210,11 @@ msgstr "Envia"
209msgid "Manage Dash"
210msgid "Manage Dash"
210msgstr "Gestiona el tauler"
211msgstr "Gestiona el tauler"
211
212
212−#: qml/Dash/ScopesOverview.qml:408
213+#: qml/Dash/ScopesOverview.qml:417
213msgid "Done"
214msgid "Done"
214msgstr "Fet"
215msgstr "Fet"
215
216
216−#: qml/Dash/ScopesOverview.qml:434
217+#: qml/Dash/ScopesOverview.qml:443
217msgid "Store"
218msgid "Store"
218msgstr "Botiga"
219msgstr "Botiga"
219
220
@@ -229,7 +230,7 @@ msgstr "Totes"
229msgid "Swipe to unlock"
230msgid "Swipe to unlock"
230msgstr "Feu lliscar el dit per desbloquejar"
231msgstr "Feu lliscar el dit per desbloquejar"
231
232
232−#: qml/Hud/HudParametrizedActionsPage.qml:132
233+#: qml/Hud/HudParametrizedActionsPage.qml:139
233msgid "Confirm"
234msgid "Confirm"
234msgstr "Confirma"
235msgstr "Confirma"
235
236
@@ -255,9 +256,9 @@ msgstr "Mostra la contrasenya"
255
256
256#: qml/Notifications/NotificationMenuItemFactory.qml:120
257#: qml/Notifications/NotificationMenuItemFactory.qml:120
257msgid "Enter SIM PIN"
258msgid "Enter SIM PIN"
258−msgstr "Introduïu el PIN de la tarjeta SIM"
259+msgstr "Introduïu el PIN de la targeta SIM"
259
260
260−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
261+#: qml/Notifications/NotificationMenuItemFactory.qml:121
261msgid "Sorry, incorrect PIN"
262msgid "Sorry, incorrect PIN"
262msgstr "El PIN no és correcte"
263msgstr "El PIN no és correcte"
263
264
@@ -301,45 +302,45 @@ msgstr "Desbloca la SIM"
301msgid "Roaming"
302msgid "Roaming"
302msgstr "Itinerància"
303msgstr "Itinerància"
303
304
304−#: qml/Shell.qml:266
305+#: qml/Shell.qml:279
305msgid "Enter your passphrase"
306msgid "Enter your passphrase"
306msgstr "Escriviu la contrasenya"
307msgstr "Escriviu la contrasenya"
307
308
308−#: qml/Shell.qml:267
309+#: qml/Shell.qml:280
309msgid "Sorry, incorrect passphrase"
310msgid "Sorry, incorrect passphrase"
310msgstr "La contrasenya no és correcta"
311msgstr "La contrasenya no és correcta"
311
312
312#: qml/Shell.qml:282
313#: qml/Shell.qml:282
313msgid "Enter your passcode"
314msgid "Enter your passcode"
314−msgstr ""
315+msgstr "Introduïu el codi d'accés"
315
316
316#: qml/Shell.qml:283
317#: qml/Shell.qml:283
317msgid "Sorry, incorrect passcode"
318msgid "Sorry, incorrect passcode"
318−msgstr ""
319+msgstr "El codi d'accés no és correcte"
319
320
320−#: qml/Shell.qml:273
321+#: qml/Shell.qml:286
321#, qt-format
322#, qt-format
322msgid "Enter your %1"
323msgid "Enter your %1"
323msgstr "Introduïu la %1"
324msgstr "Introduïu la %1"
324
325
325−#: qml/Shell.qml:274
326+#: qml/Shell.qml:287
326#, qt-format
327#, qt-format
327msgid "Sorry, incorrect %1"
328msgid "Sorry, incorrect %1"
328msgstr "Incorrecte (%1)"
329msgstr "Incorrecte (%1)"
329
330
330−#: qml/Shell.qml:310
331+#: qml/Shell.qml:323
331msgid "Sorry, incorrect passphrase."
332msgid "Sorry, incorrect passphrase."
332msgstr "La contrasenya és incorrecta"
333msgstr "La contrasenya és incorrecta"
333
334
334−#: qml/Shell.qml:311
335+#: qml/Shell.qml:324
335msgid "Sorry, incorrect passcode."
336msgid "Sorry, incorrect passcode."
336msgstr "La clau és incorrecta"
337msgstr "La clau és incorrecta"
337
338
338−#: qml/Shell.qml:312
339+#: qml/Shell.qml:325
339msgid "This will be your last attempt."
340msgid "This will be your last attempt."
340msgstr "Aquest serà el darrer intent."
341msgstr "Aquest serà el darrer intent."
341
342
342−#: qml/Shell.qml:314
343+#: qml/Shell.qml:327
343msgid ""
344msgid ""
344"If passphrase is entered incorrectly, your phone will conduct a factory "
345"If passphrase is entered incorrectly, your phone will conduct a factory "
345"reset and all personal data will be deleted."
346"reset and all personal data will be deleted."
@@ -348,19 +349,10 @@ msgstr ""
348"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
349"reinicialitzarà a l'estat de fàbrica i se suprimiran totes les dades "
349"personals."
350"personals."
350
351
351−#: qml/Shell.qml:315
352+#: qml/Shell.qml:328
352msgid ""
353msgid ""
353"If passcode is entered incorrectly, your phone will conduct a factory reset "
354"If passcode is entered incorrectly, your phone will conduct a factory reset "
354"and all personal data will be deleted."
355"and all personal data will be deleted."
355msgstr ""
356msgstr ""
356"Si la clau s'introdueix de manera incorrecta, el telèfon es reinicialitzarà "
357"Si la clau s'introdueix de manera incorrecta, el telèfon es reinicialitzarà "
357"a l'estat de fàbrica i se suprimiran totes les dades personals."
358"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 10:17+0000\n"
11+"PO-Revision-Date: 2014-09-04 15:02+0000\n"
12−"Last-Translator: Martin Pitt <martin.pitt@ubuntu.com>\n"
12+"Last-Translator: Niklas Wenzel <nikwen.developer@gmail.com>\n"
13"Language-Team: German <de@li.org>\n"
13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-05 07:50+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17196)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Passwort: "
22msgstr "Passwort: "
23
23
@@ -32,53 +32,55 @@ msgstr "Verknüpfung entfernen"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Abmelden"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Sind Sie sicher, dass Sie sich abmelden wollen?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Nein"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Ja"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Herunterfahren"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Sind Sie sicher, dass Sie herunterfahren wollen?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Neustart"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Sind Sie sicher, dass Sie neu starten wollen?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Energie"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Sind Sie sicher dass Sie\n"
77+"ausschalten wollen?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Ausschalten"
81msgstr "Ausschalten"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Abbrechen"
85msgstr "Abbrechen"
84
86
@@ -166,21 +168,22 @@ msgstr "Weniger ansehen"
166msgid "See all"
168msgid "See all"
167msgstr "Alle anzeigen"
169msgstr "Alle anzeigen"
168
170
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
170msgid "Search"
173msgid "Search"
171msgstr "Suchen"
174msgstr "Suchen"
172
175
173#: qml/Dash/PageHeader.qml:270
176#: qml/Dash/PageHeader.qml:270
174msgid "Settings"
177msgid "Settings"
175−msgstr ""
178+msgstr "Einstellungen"
176
179
177#: qml/Dash/PageHeader.qml:279
180#: qml/Dash/PageHeader.qml:279
178msgid "Remove from Favorites"
181msgid "Remove from Favorites"
179−msgstr ""
182+msgstr "Aus den Favoriten entfernen"
180
183
181#: qml/Dash/PageHeader.qml:279
184#: qml/Dash/PageHeader.qml:279
182msgid "Add to Favorites"
185msgid "Add to Favorites"
183−msgstr ""
186+msgstr "Zu Favoriten hinzufügen"
184
187
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
188#: qml/Dash/Previews/PreviewActionCombo.qml:34
186msgid "More..."
189msgid "More..."
@@ -206,11 +209,11 @@ msgstr "Senden"
206msgid "Manage Dash"
209msgid "Manage Dash"
207msgstr "Dash verwalten"
210msgstr "Dash verwalten"
208
211
209−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
210msgid "Done"
213msgid "Done"
211msgstr "Erledigt"
214msgstr "Erledigt"
212
215
213−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
214msgid "Store"
217msgid "Store"
215msgstr "Store"
218msgstr "Store"
216
219
@@ -226,7 +229,7 @@ msgstr "Alle"
226msgid "Swipe to unlock"
229msgid "Swipe to unlock"
227msgstr "Wischen zum Entsperren"
230msgstr "Wischen zum Entsperren"
228
231
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
233msgid "Confirm"
231msgstr "Bestätigen"
234msgstr "Bestätigen"
232
235
@@ -254,7 +257,7 @@ msgstr "Passwort anzeigen"
254msgid "Enter SIM PIN"
257msgid "Enter SIM PIN"
255msgstr "Geben Sie die SIM-PIN ein"
258msgstr "Geben Sie die SIM-PIN ein"
256
259
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258msgid "Sorry, incorrect PIN"
261msgid "Sorry, incorrect PIN"
259msgstr "Die PIN ist nicht korrekt"
262msgstr "Die PIN ist nicht korrekt"
260
263
@@ -298,45 +301,45 @@ msgstr "SIM-Karte entsprerren"
298msgid "Roaming"
301msgid "Roaming"
299msgstr "Roaming"
302msgstr "Roaming"
300
303
301−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
302msgid "Enter your passphrase"
305msgid "Enter your passphrase"
303msgstr "Geben Sie Ihr Passwort ein"
306msgstr "Geben Sie Ihr Passwort ein"
304
307
305−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
306msgid "Sorry, incorrect passphrase"
309msgid "Sorry, incorrect passphrase"
307msgstr "Das Passwort ist nicht korrekt"
310msgstr "Das Passwort ist nicht korrekt"
308
311
309#: qml/Shell.qml:282
312#: qml/Shell.qml:282
310msgid "Enter your passcode"
313msgid "Enter your passcode"
311−msgstr ""
314+msgstr "Passwort eingeben"
312
315
313#: qml/Shell.qml:283
316#: qml/Shell.qml:283
314msgid "Sorry, incorrect passcode"
317msgid "Sorry, incorrect passcode"
315−msgstr ""
318+msgstr "Falsches Passwort"
316
319
317−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
318#, qt-format
321#, qt-format
319msgid "Enter your %1"
322msgid "Enter your %1"
320msgstr "%1 eingeben"
323msgstr "%1 eingeben"
321
324
322−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
323#, qt-format
326#, qt-format
324msgid "Sorry, incorrect %1"
327msgid "Sorry, incorrect %1"
325msgstr "%1 falsch"
328msgstr "%1 falsch"
326
329
327−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
328msgid "Sorry, incorrect passphrase."
331msgid "Sorry, incorrect passphrase."
329msgstr "Falsches Passwort."
332msgstr "Falsches Passwort."
330
333
331−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
332msgid "Sorry, incorrect passcode."
335msgid "Sorry, incorrect passcode."
333msgstr "Falsche PIN"
336msgstr "Falsche PIN"
334
337
335−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
336msgid "This will be your last attempt."
339msgid "This will be your last attempt."
337msgstr "Dies ist Ihr letzter Versuch."
340msgstr "Dies ist Ihr letzter Versuch."
338
341
339−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
340msgid ""
343msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
344"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
345"reset and all personal data will be deleted."
@@ -344,19 +347,10 @@ msgstr ""
344"Wird das Passwort falsch eingegeben, wird das Telefon auf den Werkszustand "
347"Wird das Passwort falsch eingegeben, wird das Telefon auf den Werkszustand "
345"zurückgesetzt und alle Daten werden gelöscht."
348"zurückgesetzt und alle Daten werden gelöscht."
346
349
347−#: qml/Shell.qml:315
350+#: qml/Shell.qml:328
348msgid ""
351msgid ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
353"and all personal data will be deleted."
351msgstr ""
354msgstr ""
352"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
355"Wird die PIN falsch eingegeben, wird das Telefon auf den Werkszustand "
353"zurückgesetzt und alle Daten werden gelöscht."
356"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
12"Last-Translator: Jared Norris <jarednorris@ubuntu.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Password: "
22msgstr "Password: "
23
23
@@ -32,53 +32,55 @@ msgstr "Unpin shortcut"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Log out"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Are you sure you want to log out?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "No"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Yes"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Shut down"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Are you sure you want to shut down?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Reboot"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Are you sure you want to reboot?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Power"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Are you sure you would like\n"
77+"to power off?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Power off"
81msgstr "Power off"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Cancel"
85msgstr "Cancel"
84
86
@@ -163,21 +165,22 @@ msgstr "See less"
163msgid "See all"
165msgid "See all"
164msgstr "See all"
166msgstr "See all"
165
167
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
167msgid "Search"
170msgid "Search"
168msgstr "Search"
171msgstr "Search"
169
172
170#: qml/Dash/PageHeader.qml:270
173#: qml/Dash/PageHeader.qml:270
171msgid "Settings"
174msgid "Settings"
172−msgstr ""
175+msgstr "Settings"
173
176
174#: qml/Dash/PageHeader.qml:279
177#: qml/Dash/PageHeader.qml:279
175msgid "Remove from Favorites"
178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Remove from Favourites"
177
180
178#: qml/Dash/PageHeader.qml:279
181#: qml/Dash/PageHeader.qml:279
179msgid "Add to Favorites"
182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Add to Favourites"
181
184
182#: qml/Dash/Previews/PreviewActionCombo.qml:34
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183msgid "More..."
186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Send"
203msgid "Manage Dash"
206msgid "Manage Dash"
204msgstr "Manage Dash"
207msgstr "Manage Dash"
205
208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207msgid "Done"
210msgid "Done"
208msgstr "Done"
211msgstr "Done"
209
212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211msgid "Store"
214msgid "Store"
212msgstr "Store"
215msgstr "Store"
213
216
@@ -223,7 +226,7 @@ msgstr "All"
223msgid "Swipe to unlock"
226msgid "Swipe to unlock"
224msgstr "Swipe to unlock"
227msgstr "Swipe to unlock"
225
228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
230msgid "Confirm"
228msgstr "Confirm"
231msgstr "Confirm"
229
232
@@ -251,7 +254,7 @@ msgstr "Show password"
251msgid "Enter SIM PIN"
254msgid "Enter SIM PIN"
252msgstr "Enter SIM PIN"
255msgstr "Enter SIM PIN"
253
256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255msgid "Sorry, incorrect PIN"
258msgid "Sorry, incorrect PIN"
256msgstr "Sorry, incorrect PIN"
259msgstr "Sorry, incorrect PIN"
257
260
@@ -295,45 +298,45 @@ msgstr "Unlock SIM"
295msgid "Roaming"
298msgid "Roaming"
296msgstr "Roaming"
299msgstr "Roaming"
297
300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299msgid "Enter your passphrase"
302msgid "Enter your passphrase"
300msgstr "Enter your passphrase"
303msgstr "Enter your passphrase"
301
304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303msgid "Sorry, incorrect passphrase"
306msgid "Sorry, incorrect passphrase"
304msgstr "Sorry, incorrect passphrase"
307msgstr "Sorry, incorrect passphrase"
305
308
306#: qml/Shell.qml:282
309#: qml/Shell.qml:282
307msgid "Enter your passcode"
310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Enter your passcode"
309
312
310#: qml/Shell.qml:283
313#: qml/Shell.qml:283
311msgid "Sorry, incorrect passcode"
314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Sorry, incorrect passcode"
313
316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315#, qt-format
318#, qt-format
316msgid "Enter your %1"
319msgid "Enter your %1"
317msgstr "Enter your %1"
320msgstr "Enter your %1"
318
321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320#, qt-format
323#, qt-format
321msgid "Sorry, incorrect %1"
324msgid "Sorry, incorrect %1"
322msgstr "Sorry, incorrect %1"
325msgstr "Sorry, incorrect %1"
323
326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325msgid "Sorry, incorrect passphrase."
328msgid "Sorry, incorrect passphrase."
326msgstr "Sorry, incorrect passphrase."
329msgstr "Sorry, incorrect passphrase."
327
330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329msgid "Sorry, incorrect passcode."
332msgid "Sorry, incorrect passcode."
330msgstr "Sorry, incorrect passcode."
333msgstr "Sorry, incorrect passcode."
331
334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333msgid "This will be your last attempt."
336msgid "This will be your last attempt."
334msgstr "This will be your last attempt."
337msgstr "This will be your last attempt."
335
338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337msgid ""
340msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
341"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
344"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
345"reset and all personal data will be deleted."
343
346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345msgid ""
348msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
350"and all personal data will be deleted."
348msgstr ""
351msgstr ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
353"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 15:20+0000\n"
11+"PO-Revision-Date: 2014-09-02 08:16+0000\n"
12−"Last-Translator: Leo Arias <leo.arias@canonical.com>\n"
12+"Last-Translator: Víctor R. Ruiz <Unknown>\n"
13"Language-Team: Spanish <es@li.org>\n"
13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-03 07:05+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17196)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Contraseña: "
22msgstr "Contraseña: "
23
23
@@ -32,53 +32,55 @@ msgstr "Desanclar"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Cerrar la sesión"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "̉¿Está seguro de que quiere cerrar la sesión?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "No"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Sí"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Apagar"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "¿Está seguro de que quiere apagar?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Reiniciar"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "¿Esta seguro de que quiere reiniciar?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Encendido"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"¿Está seguro de que quiere\n"
77+"apagar?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Apagar"
81msgstr "Apagar"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Cancelar"
85msgstr "Cancelar"
84
86
@@ -166,21 +168,22 @@ msgstr "Ver menos"
166msgid "See all"
168msgid "See all"
167msgstr "Ver todo"
169msgstr "Ver todo"
168
170
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
170msgid "Search"
173msgid "Search"
171msgstr "Buscar"
174msgstr "Buscar"
172
175
173#: qml/Dash/PageHeader.qml:270
176#: qml/Dash/PageHeader.qml:270
174msgid "Settings"
177msgid "Settings"
175−msgstr ""
178+msgstr "Configuración"
176
179
177#: qml/Dash/PageHeader.qml:279
180#: qml/Dash/PageHeader.qml:279
178msgid "Remove from Favorites"
181msgid "Remove from Favorites"
179−msgstr ""
182+msgstr "Quitar de favoritos"
180
183
181#: qml/Dash/PageHeader.qml:279
184#: qml/Dash/PageHeader.qml:279
182msgid "Add to Favorites"
185msgid "Add to Favorites"
183−msgstr ""
186+msgstr "Añadir a favoritos"
184
187
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
188#: qml/Dash/Previews/PreviewActionCombo.qml:34
186msgid "More..."
189msgid "More..."
@@ -206,11 +209,11 @@ msgstr "Enviar"
206msgid "Manage Dash"
209msgid "Manage Dash"
207msgstr "Gestionar tablero"
210msgstr "Gestionar tablero"
208
211
209−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
210msgid "Done"
213msgid "Done"
211msgstr "Hecho"
214msgstr "Hecho"
212
215
213−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
214msgid "Store"
217msgid "Store"
215msgstr "Tienda"
218msgstr "Tienda"
216
219
@@ -226,7 +229,7 @@ msgstr "Todo"
226msgid "Swipe to unlock"
229msgid "Swipe to unlock"
227msgstr "Deslice para desbloquear"
230msgstr "Deslice para desbloquear"
228
231
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
233msgid "Confirm"
231msgstr "Confirmar"
234msgstr "Confirmar"
232
235
@@ -254,7 +257,7 @@ msgstr "Mostrar contraseña"
254msgid "Enter SIM PIN"
257msgid "Enter SIM PIN"
255msgstr "Escriba el PIN de la SIM"
258msgstr "Escriba el PIN de la SIM"
256
259
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258msgid "Sorry, incorrect PIN"
261msgid "Sorry, incorrect PIN"
259msgstr "El PIN es incorrecto"
262msgstr "El PIN es incorrecto"
260
263
@@ -298,45 +301,45 @@ msgstr "Desbloquear SIM"
298msgid "Roaming"
301msgid "Roaming"
299msgstr "Itinerancia"
302msgstr "Itinerancia"
300
303
301−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
302msgid "Enter your passphrase"
305msgid "Enter your passphrase"
303msgstr "Introudzca su contraseña"
306msgstr "Introudzca su contraseña"
304
307
305−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
306msgid "Sorry, incorrect passphrase"
309msgid "Sorry, incorrect passphrase"
307msgstr "Lo sentimos, contraseña incorrecta"
310msgstr "Lo sentimos, contraseña incorrecta"
308
311
309#: qml/Shell.qml:282
312#: qml/Shell.qml:282
310msgid "Enter your passcode"
313msgid "Enter your passcode"
311−msgstr ""
314+msgstr "Escriba su código de acceso"
312
315
313#: qml/Shell.qml:283
316#: qml/Shell.qml:283
314msgid "Sorry, incorrect passcode"
317msgid "Sorry, incorrect passcode"
315−msgstr ""
318+msgstr "El código de acceso es incorrecto"
316
319
317−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
318#, qt-format
321#, qt-format
319msgid "Enter your %1"
322msgid "Enter your %1"
320msgstr "Introduzca su %1"
323msgstr "Introduzca su %1"
321
324
322−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
323#, qt-format
326#, qt-format
324msgid "Sorry, incorrect %1"
327msgid "Sorry, incorrect %1"
325msgstr "Lo sentimos, %1 incorrecto"
328msgstr "Lo sentimos, %1 incorrecto"
326
329
327−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
328msgid "Sorry, incorrect passphrase."
331msgid "Sorry, incorrect passphrase."
329msgstr "Frase de paso incorrecta"
332msgstr "Frase de paso incorrecta"
330
333
331−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
332msgid "Sorry, incorrect passcode."
335msgid "Sorry, incorrect passcode."
333−msgstr "Código de paso incorrecto"
336+msgstr "Código de acceso incorrecto."
334
337
335−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
336msgid "This will be your last attempt."
339msgid "This will be your last attempt."
337msgstr "Este será su último intento."
340msgstr "Este será su último intento."
338
341
339−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
340msgid ""
343msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
344"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
345"reset and all personal data will be deleted."
@@ -344,19 +347,10 @@ msgstr ""
344"Si se introduce la frase incorrectamente, el teléfono volverá a la "
347"Si se introduce la frase incorrectamente, el teléfono volverá a la "
345"configuración de fábrica y se perderán todos los datos personales."
348"configuración de fábrica y se perderán todos los datos personales."
346
349
347−#: qml/Shell.qml:315
350+#: qml/Shell.qml:328
348msgid ""
351msgid ""
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"and all personal data will be deleted."
353"and all personal data will be deleted."
351msgstr ""
354msgstr ""
352"Si se introduce el código incorrectamente, el teléfono volverá a la "
355"Si se introduce el código incorrectamente, el teléfono volverá a la "
353"configuración de fábrica y se perderán todos los datos personales."
356"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 ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
12"Last-Translator: Ibai Oihanguren Sala <Unknown>\n"
13"Language-Team: Basque <eu@li.org>\n"
13"Language-Team: Basque <eu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:29+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-03 07:05+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17196)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22−msgstr ""
22+msgstr "Pasahitza: "
23
23
24#: plugins/Unity/Launcher/launcheritem.cpp:43
24#: plugins/Unity/Launcher/launcheritem.cpp:43
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -32,55 +32,55 @@ msgstr "Askatu lasterbidea"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Amaitu saioa"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Ziur saioa amaitu nahi duzula?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Ez"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Bai"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Itzali"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Ziur itzali nahi duzula?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Berrabiarazi"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Ziur berrabiarazi nahi duzula?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Energia"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75−msgstr ""
75+msgstr "Ziur itzali nahi duzula?"
76
76
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
78msgid "Power off"
79−msgstr ""
79+msgstr "Itzali"
80
80
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
82msgid "Cancel"
83−msgstr ""
83+msgstr "Utzi"
84
84
85#: qml/Components/EdgeDemoOverlay.qml:151
85#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
86msgid "Skip intro"
@@ -135,11 +135,11 @@ msgstr ""
135
135
136#: qml/Components/Lockscreen.qml:167
136#: qml/Components/Lockscreen.qml:167
137msgid "Please wait"
137msgid "Please wait"
138−msgstr ""
138+msgstr "Itxaron"
139
139
140#: qml/Components/Lockscreen.qml:172
140#: qml/Components/Lockscreen.qml:172
141msgid "Too many incorrect attempts"
141msgid "Too many incorrect attempts"
142−msgstr ""
142+msgstr "Okerreko saiakera gehiegi"
143
143
144#: qml/Components/Lockscreen.qml:206
144#: qml/Components/Lockscreen.qml:206
145msgid "Emergency Call"
145msgid "Emergency Call"
@@ -166,21 +166,22 @@ msgstr "Ikusi gutxiago"
166msgid "See all"
166msgid "See all"
167msgstr "Ikusi guztiak"
167msgstr "Ikusi guztiak"
168
168
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
170msgid "Search"
171msgid "Search"
171msgstr "Bilatu"
172msgstr "Bilatu"
172
173
173#: qml/Dash/PageHeader.qml:270
174#: qml/Dash/PageHeader.qml:270
174msgid "Settings"
175msgid "Settings"
175−msgstr ""
176+msgstr "Ezarpenak"
176
177
177#: qml/Dash/PageHeader.qml:279
178#: qml/Dash/PageHeader.qml:279
178msgid "Remove from Favorites"
179msgid "Remove from Favorites"
179−msgstr ""
180+msgstr "Kendu gogokoetatik"
180
181
181#: qml/Dash/PageHeader.qml:279
182#: qml/Dash/PageHeader.qml:279
182msgid "Add to Favorites"
183msgid "Add to Favorites"
183−msgstr ""
184+msgstr "Gehitu gogokoetara"
184
185
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
186#: qml/Dash/Previews/PreviewActionCombo.qml:34
186msgid "More..."
187msgid "More..."
@@ -204,29 +205,29 @@ msgstr "Bidali"
204
205
205#: qml/Dash/ScopesOverview.qml:201
206#: qml/Dash/ScopesOverview.qml:201
206msgid "Manage Dash"
207msgid "Manage Dash"
207−msgstr ""
208+msgstr "Kudeatu abio-leihoa"
208
209
209−#: qml/Dash/ScopesOverview.qml:408
210+#: qml/Dash/ScopesOverview.qml:417
210msgid "Done"
211msgid "Done"
211−msgstr ""
212+msgstr "Eginda"
212
213
213−#: qml/Dash/ScopesOverview.qml:434
214+#: qml/Dash/ScopesOverview.qml:443
214msgid "Store"
215msgid "Store"
215−msgstr ""
216+msgstr "Denda"
216
217
217#: qml/Dash/ScopesOverviewTab.qml:36
218#: qml/Dash/ScopesOverviewTab.qml:36
218msgid "Favorites"
219msgid "Favorites"
219−msgstr ""
220+msgstr "Gogokoak"
220
221
221#: qml/Dash/ScopesOverviewTab.qml:54
222#: qml/Dash/ScopesOverviewTab.qml:54
222msgid "All"
223msgid "All"
223−msgstr ""
224+msgstr "Guztiak"
224
225
225#: qml/Greeter/Greeter.qml:157
226#: qml/Greeter/Greeter.qml:157
226msgid "Swipe to unlock"
227msgid "Swipe to unlock"
227msgstr "Pasatu hatza desblokeatzeko"
228msgstr "Pasatu hatza desblokeatzeko"
228
229
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
230+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
231msgid "Confirm"
231msgstr "Baieztatu"
232msgstr "Baieztatu"
232
233
@@ -252,11 +253,11 @@ msgstr "Erakutsi pasahitza"
252
253
253#: qml/Notifications/NotificationMenuItemFactory.qml:120
254#: qml/Notifications/NotificationMenuItemFactory.qml:120
254msgid "Enter SIM PIN"
255msgid "Enter SIM PIN"
255−msgstr ""
256+msgstr "Sartu SIM PINa"
256
257
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258msgid "Sorry, incorrect PIN"
259msgid "Sorry, incorrect PIN"
259−msgstr ""
260+msgstr "Sentitzen dugu, PINa okerrekoa da"
260
261
261#: qml/Panel/ActiveCallHint.qml:77
262#: qml/Panel/ActiveCallHint.qml:77
262msgid "Tap to return to call..."
263msgid "Tap to return to call..."
@@ -292,58 +293,62 @@ msgstr "Huts egin du, sakatu berriro saiatzeko"
292
293
293#: qml/Panel/Indicators/ModemInfoItem.qml:105
294#: qml/Panel/Indicators/ModemInfoItem.qml:105
294msgid "Unlock SIM"
295msgid "Unlock SIM"
295−msgstr ""
296+msgstr "Desblokeatu SIMa"
296
297
297#: qml/Panel/Indicators/RoamingIndication.qml:27
298#: qml/Panel/Indicators/RoamingIndication.qml:27
298msgid "Roaming"
299msgid "Roaming"
299−msgstr ""
300+msgstr "Ibiltaritza"
300
301
301−#: qml/Shell.qml:266
302+#: qml/Shell.qml:279
302msgid "Enter your passphrase"
303msgid "Enter your passphrase"
303−msgstr ""
304+msgstr "Sartu pasaesaldia"
304
305
305−#: qml/Shell.qml:267
306+#: qml/Shell.qml:280
306msgid "Sorry, incorrect passphrase"
307msgid "Sorry, incorrect passphrase"
307−msgstr ""
308+msgstr "Sentitzen dugu, pasaesaldia okerrekoa da"
308
309
309#: qml/Shell.qml:282
310#: qml/Shell.qml:282
310msgid "Enter your passcode"
311msgid "Enter your passcode"
311−msgstr ""
312+msgstr "Sartu pasakodea"
312
313
313#: qml/Shell.qml:283
314#: qml/Shell.qml:283
314msgid "Sorry, incorrect passcode"
315msgid "Sorry, incorrect passcode"
315−msgstr ""
316+msgstr "Sentitzen dugu, pasakodea okerrekoa da"
316
317
317−#: qml/Shell.qml:273
318+#: qml/Shell.qml:286
318#, qt-format
319#, qt-format
319msgid "Enter your %1"
320msgid "Enter your %1"
320−msgstr ""
321+msgstr "Sartu %1"
321
322
322−#: qml/Shell.qml:274
323+#: qml/Shell.qml:287
323#, qt-format
324#, qt-format
324msgid "Sorry, incorrect %1"
325msgid "Sorry, incorrect %1"
325−msgstr ""
326+msgstr "Sentitzen dugu, %1 okerrekoa da"
326
327
327−#: qml/Shell.qml:310
328+#: qml/Shell.qml:323
328msgid "Sorry, incorrect passphrase."
329msgid "Sorry, incorrect passphrase."
329−msgstr ""
330+msgstr "Sentitzen dugu, pasaesaldia okerrekoa da."
330
331
331−#: qml/Shell.qml:311
332+#: qml/Shell.qml:324
332msgid "Sorry, incorrect passcode."
333msgid "Sorry, incorrect passcode."
333−msgstr ""
334+msgstr "Sentitzen dugu, pasakodea okerrekoa da."
334
335
335−#: qml/Shell.qml:312
336+#: qml/Shell.qml:325
336msgid "This will be your last attempt."
337msgid "This will be your last attempt."
337−msgstr ""
338+msgstr "Hau duzu azken saiakera."
338
339
339−#: qml/Shell.qml:314
340+#: qml/Shell.qml:327
340msgid ""
341msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
342"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
343"reset and all personal data will be deleted."
343msgstr ""
344msgstr ""
345+"Okerreko pasaesaldia sartzen baduzu, telefonoaren jatorrizko ezarpenak "
346+"berrezarri eta datu pertsonal guztiak ezabatuko dira."
344
347
345−#: qml/Shell.qml:315
348+#: qml/Shell.qml:328
346msgid ""
349msgid ""
347"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"and all personal data will be deleted."
351"and all personal data will be deleted."
349msgstr ""
352msgstr ""
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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-26 18:32+0000\n"
11+"PO-Revision-Date: 2014-08-28 13:47+0000\n"
12−"Last-Translator: Jiri Grönroos <Unknown>\n"
12+"Last-Translator: Timo Jyrinki <timo.jyrinki@canonical.com>\n"
13"Language-Team: Finnish <fi@li.org>\n"
13"Language-Team: Finnish <fi@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Salasana: "
22msgstr "Salasana: "
23
23
@@ -32,53 +32,55 @@ msgstr "Poista pikakuvakkeen kiinnitys"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Kirjaudu ulos"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Haluatko varmasti kirjautua ulos?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Ei"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Kyllä"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Sammuta"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Haluatko varmasti sammuttaa laitteen?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Käynnistä uudelleen"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Haluatko varmasti käynnistää laitteen uudelleen?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Virran katkaisu"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Haluatko varmasti\n"
77+"sammuttaa laitteen?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Sammuta"
81msgstr "Sammuta"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Peru"
85msgstr "Peru"
84
86
@@ -163,21 +165,22 @@ msgstr "Näytä vähemmän"
163msgid "See all"
165msgid "See all"
164msgstr "Näytä kaikki"
166msgstr "Näytä kaikki"
165
167
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
167msgid "Search"
170msgid "Search"
168msgstr "Hae"
171msgstr "Hae"
169
172
170#: qml/Dash/PageHeader.qml:270
173#: qml/Dash/PageHeader.qml:270
171msgid "Settings"
174msgid "Settings"
172−msgstr ""
175+msgstr "Asetukset"
173
176
174#: qml/Dash/PageHeader.qml:279
177#: qml/Dash/PageHeader.qml:279
175msgid "Remove from Favorites"
178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Poista suosikeista"
177
180
178#: qml/Dash/PageHeader.qml:279
181#: qml/Dash/PageHeader.qml:279
179msgid "Add to Favorites"
182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Lisää suosikkeihin"
181
184
182#: qml/Dash/Previews/PreviewActionCombo.qml:34
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183msgid "More..."
186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Lähetä"
203msgid "Manage Dash"
206msgid "Manage Dash"
204msgstr "Unityn hallinta"
207msgstr "Unityn hallinta"
205
208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207msgid "Done"
210msgid "Done"
208msgstr "Valmis"
211msgstr "Valmis"
209
212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211msgid "Store"
214msgid "Store"
212msgstr "Kauppa"
215msgstr "Kauppa"
213
216
@@ -223,7 +226,7 @@ msgstr "Kaikki"
223msgid "Swipe to unlock"
226msgid "Swipe to unlock"
224msgstr "Avaa pyyhkäisemällä"
227msgstr "Avaa pyyhkäisemällä"
225
228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
230msgid "Confirm"
228msgstr "Hyväksy"
231msgstr "Hyväksy"
229
232
@@ -251,7 +254,7 @@ msgstr "Näytä salasana"
251msgid "Enter SIM PIN"
254msgid "Enter SIM PIN"
252msgstr "Anna SIM-kortin PIN-koodi"
255msgstr "Anna SIM-kortin PIN-koodi"
253
256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255msgid "Sorry, incorrect PIN"
258msgid "Sorry, incorrect PIN"
256msgstr "Väärä PIN-koodi"
259msgstr "Väärä PIN-koodi"
257
260
@@ -295,45 +298,45 @@ msgstr "Avaa SIM-kortin lukitus"
295msgid "Roaming"
298msgid "Roaming"
296msgstr "Verkkovierailu"
299msgstr "Verkkovierailu"
297
300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299msgid "Enter your passphrase"
302msgid "Enter your passphrase"
300msgstr "Anna tunnuslause"
303msgstr "Anna tunnuslause"
301
304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303msgid "Sorry, incorrect passphrase"
306msgid "Sorry, incorrect passphrase"
304msgstr "Virheellinen tunnuslause"
307msgstr "Virheellinen tunnuslause"
305
308
306#: qml/Shell.qml:282
309#: qml/Shell.qml:282
307msgid "Enter your passcode"
310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Anna suojakoodi"
309
312
310#: qml/Shell.qml:283
313#: qml/Shell.qml:283
311msgid "Sorry, incorrect passcode"
314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Väärä suojakoodi"
313
316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315#, qt-format
318#, qt-format
316msgid "Enter your %1"
319msgid "Enter your %1"
317msgstr "Anna %1"
320msgstr "Anna %1"
318
321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320#, qt-format
323#, qt-format
321msgid "Sorry, incorrect %1"
324msgid "Sorry, incorrect %1"
322msgstr "Väärä %1"
325msgstr "Väärä %1"
323
326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325msgid "Sorry, incorrect passphrase."
328msgid "Sorry, incorrect passphrase."
326msgstr "Virheellinen tunnuslause."
329msgstr "Virheellinen tunnuslause."
327
330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329msgid "Sorry, incorrect passcode."
332msgid "Sorry, incorrect passcode."
330−msgstr "Virheellinen tunnuskoodi."
333+msgstr "Virheellinen suojakoodi."
331
334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333msgid "This will be your last attempt."
336msgid "This will be your last attempt."
334msgstr "Tämä on viimeinen yritys."
337msgstr "Tämä on viimeinen yritys."
335
338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337msgid ""
340msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
341"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341"Jos kirjoitat tunnuslauseen virheellisesti, puhelimesi palautetaan "
344"Jos kirjoitat tunnuslauseen virheellisesti, puhelimesi palautetaan "
342"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
345"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
343
346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345msgid ""
348msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
350"and all personal data will be deleted."
348msgstr ""
351msgstr ""
349−"Jos kirjoitat tunnuskoodin virheellisesti, puhelimesi palautetaan "
352+"Jos kirjoitat suojakoodin virheellisesti, puhelimesi palautetaan "
350"tehdastilaan ja kaikki henkilökohtaiset tietosi poistetaan."
353"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2014-08-27 17:24+0000\n"
11+"PO-Revision-Date: 2014-08-29 10:31+0000\n"
12−"Last-Translator: Jean Marc <Unknown>\n"
12+"Last-Translator: Sébastien Maes <nautilussebastien@gmail.com>\n"
13"Language-Team: French <fr@li.org>\n"
13"Language-Team: French <fr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Mot de passe : "
22msgstr "Mot de passe : "
23
23
@@ -32,37 +32,37 @@ msgstr "Détacher le raccourci"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Se déconnecter"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Êtes-vous sûr de vouloir vous déconnecter ?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Non"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Oui"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Éteindre"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Êtes-vous sûr de vouloir éteindre ?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Redémarrer"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Êtes-vous sûr de vouloir redémarrer ?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
@@ -74,11 +74,11 @@ msgid ""
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76
76
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
78msgid "Power off"
79msgstr "Éteindre"
79msgstr "Éteindre"
80
80
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
82msgid "Cancel"
83msgstr "Annuler"
83msgstr "Annuler"
84
84
@@ -170,21 +170,22 @@ msgstr "Voir moins"
170msgid "See all"
170msgid "See all"
171msgstr "Tout voir"
171msgstr "Tout voir"
172
172
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
174msgid "Search"
175msgid "Search"
175msgstr "Rechercher"
176msgstr "Rechercher"
176
177
177#: qml/Dash/PageHeader.qml:270
178#: qml/Dash/PageHeader.qml:270
178msgid "Settings"
179msgid "Settings"
179−msgstr ""
180+msgstr "Paramètres"
180
181
181#: qml/Dash/PageHeader.qml:279
182#: qml/Dash/PageHeader.qml:279
182msgid "Remove from Favorites"
183msgid "Remove from Favorites"
183−msgstr ""
184+msgstr "Retirer des favoris"
184
185
185#: qml/Dash/PageHeader.qml:279
186#: qml/Dash/PageHeader.qml:279
186msgid "Add to Favorites"
187msgid "Add to Favorites"
187−msgstr ""
188+msgstr "Ajouter aux favoris"
188
189
189#: qml/Dash/Previews/PreviewActionCombo.qml:34
190#: qml/Dash/Previews/PreviewActionCombo.qml:34
190msgid "More..."
191msgid "More..."
@@ -210,11 +211,11 @@ msgstr "Envoyer"
210msgid "Manage Dash"
211msgid "Manage Dash"
211msgstr "Gérer le tableau de bord"
212msgstr "Gérer le tableau de bord"
212
213
213−#: qml/Dash/ScopesOverview.qml:408
214+#: qml/Dash/ScopesOverview.qml:417
214msgid "Done"
215msgid "Done"
215msgstr "Terminé"
216msgstr "Terminé"
216
217
217−#: qml/Dash/ScopesOverview.qml:434
218+#: qml/Dash/ScopesOverview.qml:443
218msgid "Store"
219msgid "Store"
219msgstr ""
220msgstr ""
220
221
@@ -230,7 +231,7 @@ msgstr "Toutes"
230msgid "Swipe to unlock"
231msgid "Swipe to unlock"
231msgstr "Faites glisser pour déverrouiller"
232msgstr "Faites glisser pour déverrouiller"
232
233
233−#: qml/Hud/HudParametrizedActionsPage.qml:132
234+#: qml/Hud/HudParametrizedActionsPage.qml:139
234msgid "Confirm"
235msgid "Confirm"
235msgstr "Confirmez"
236msgstr "Confirmez"
236
237
@@ -258,7 +259,7 @@ msgstr "Afficher le mot de passe"
258msgid "Enter SIM PIN"
259msgid "Enter SIM PIN"
259msgstr "Entrez le code PIN de la SIM"
260msgstr "Entrez le code PIN de la SIM"
260
261
261−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
262+#: qml/Notifications/NotificationMenuItemFactory.qml:121
262msgid "Sorry, incorrect PIN"
263msgid "Sorry, incorrect PIN"
263msgstr "Désolé, code PIN incorrect"
264msgstr "Désolé, code PIN incorrect"
264
265
@@ -302,45 +303,45 @@ msgstr "Déverrouiller la carte SIM"
302msgid "Roaming"
303msgid "Roaming"
303msgstr "Roaming"
304msgstr "Roaming"
304
305
305−#: qml/Shell.qml:266
306+#: qml/Shell.qml:279
306msgid "Enter your passphrase"
307msgid "Enter your passphrase"
307−msgstr ""
308+msgstr "Entrez votre phrase secrète"
308
309
309−#: qml/Shell.qml:267
310+#: qml/Shell.qml:280
310msgid "Sorry, incorrect passphrase"
311msgid "Sorry, incorrect passphrase"
311−msgstr ""
312+msgstr "Désolé, phrase secrète incorrecte"
312
313
313#: qml/Shell.qml:282
314#: qml/Shell.qml:282
314msgid "Enter your passcode"
315msgid "Enter your passcode"
315−msgstr ""
316+msgstr "Entrez votre code"
316
317
317#: qml/Shell.qml:283
318#: qml/Shell.qml:283
318msgid "Sorry, incorrect passcode"
319msgid "Sorry, incorrect passcode"
319−msgstr ""
320+msgstr "Désolé, code incorrect"
320
321
321−#: qml/Shell.qml:273
322+#: qml/Shell.qml:286
322#, qt-format
323#, qt-format
323msgid "Enter your %1"
324msgid "Enter your %1"
324msgstr "Saisissez votre %1"
325msgstr "Saisissez votre %1"
325
326
326−#: qml/Shell.qml:274
327+#: qml/Shell.qml:287
327#, qt-format
328#, qt-format
328msgid "Sorry, incorrect %1"
329msgid "Sorry, incorrect %1"
329msgstr "Désolé, %1 incorrect"
330msgstr "Désolé, %1 incorrect"
330
331
331−#: qml/Shell.qml:310
332+#: qml/Shell.qml:323
332msgid "Sorry, incorrect passphrase."
333msgid "Sorry, incorrect passphrase."
333msgstr "Désolé, phrase secrète incorrecte."
334msgstr "Désolé, phrase secrète incorrecte."
334
335
335−#: qml/Shell.qml:311
336+#: qml/Shell.qml:324
336msgid "Sorry, incorrect passcode."
337msgid "Sorry, incorrect passcode."
337msgstr "Désolé, code incorrect."
338msgstr "Désolé, code incorrect."
338
339
339−#: qml/Shell.qml:312
340+#: qml/Shell.qml:325
340msgid "This will be your last attempt."
341msgid "This will be your last attempt."
341msgstr "Ceci sera votre dernière tentative."
342msgstr "Ceci sera votre dernière tentative."
342
343
343−#: qml/Shell.qml:314
344+#: qml/Shell.qml:327
344msgid ""
345msgid ""
345"If passphrase is entered incorrectly, your phone will conduct a factory "
346"If passphrase is entered incorrectly, your phone will conduct a factory "
346"reset and all personal data will be deleted."
347"reset and all personal data will be deleted."
@@ -349,7 +350,7 @@ msgstr ""
349"effectuera une réinitialisation aux paramètres d'usine et toutes les données "
350"effectuera une réinitialisation aux paramètres d'usine et toutes les données "
350"personnelles seront supprimées."
351"personnelles seront supprimées."
351
352
352−#: qml/Shell.qml:315
353+#: qml/Shell.qml:328
353msgid ""
354msgid ""
354"If passcode is entered incorrectly, your phone will conduct a factory reset "
355"If passcode is entered incorrectly, your phone will conduct a factory reset "
355"and all personal data will be deleted."
356"and all personal data will be deleted."
@@ -357,12 +358,3 @@ msgstr ""
357"Si le code est saisi de manière incorrecte, votre téléphone effectuera une "
358"Si le code est saisi de manière incorrecte, votre téléphone effectuera une "
358"réinitialisation aux paramètres d'usine et toutes les données personnelles "
359"réinitialisation aux paramètres d'usine et toutes les données personnelles "
359"seront supprimées."
360"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
12"Last-Translator: Richard Somlói <ricsipontaz@gmail.com>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
13"Language-Team: Hungarian <hu@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-31 07:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Jelszó: "
22msgstr "Jelszó: "
23
23
@@ -32,53 +32,55 @@ msgstr "Indító feloldása"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Kijelentkezés"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Biztos benne, hogy kijelentkezik?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Nem"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Igen"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Leállítás"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Biztosan le szeretné állítani?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Újraindítás"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Biztosan újra szeretné indítani?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Kikapcsolás"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Biztos benne, hogy ki\n"
77+"szeretné kapcsolni?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Kikapcsolás"
81msgstr "Kikapcsolás"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Mégse"
85msgstr "Mégse"
84
86
@@ -165,21 +167,22 @@ msgstr "Kevesebb"
165msgid "See all"
167msgid "See all"
166msgstr "Összes megtekintése"
168msgstr "Összes megtekintése"
167
169
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
169msgid "Search"
172msgid "Search"
170msgstr "Keresés"
173msgstr "Keresés"
171
174
172#: qml/Dash/PageHeader.qml:270
175#: qml/Dash/PageHeader.qml:270
173msgid "Settings"
176msgid "Settings"
174−msgstr ""
177+msgstr "Beállítások"
175
178
176#: qml/Dash/PageHeader.qml:279
179#: qml/Dash/PageHeader.qml:279
177msgid "Remove from Favorites"
180msgid "Remove from Favorites"
178−msgstr ""
181+msgstr "Eltávolítás a kedvencek közül"
179
182
180#: qml/Dash/PageHeader.qml:279
183#: qml/Dash/PageHeader.qml:279
181msgid "Add to Favorites"
184msgid "Add to Favorites"
182−msgstr ""
185+msgstr "Hozzáadás a kedvencekhez"
183
186
184#: qml/Dash/Previews/PreviewActionCombo.qml:34
187#: qml/Dash/Previews/PreviewActionCombo.qml:34
185msgid "More..."
188msgid "More..."
@@ -205,11 +208,11 @@ msgstr "Küldés"
205msgid "Manage Dash"
208msgid "Manage Dash"
206msgstr "Dash kezelése"
209msgstr "Dash kezelése"
207
210
208−#: qml/Dash/ScopesOverview.qml:408
211+#: qml/Dash/ScopesOverview.qml:417
209msgid "Done"
212msgid "Done"
210msgstr "Kész"
213msgstr "Kész"
211
214
212−#: qml/Dash/ScopesOverview.qml:434
215+#: qml/Dash/ScopesOverview.qml:443
213msgid "Store"
216msgid "Store"
214msgstr "Áruház"
217msgstr "Áruház"
215
218
@@ -225,7 +228,7 @@ msgstr "Összes"
225msgid "Swipe to unlock"
228msgid "Swipe to unlock"
226msgstr "Csúsztasson a feloldáshoz"
229msgstr "Csúsztasson a feloldáshoz"
227
230
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
231+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
232msgid "Confirm"
230msgstr "Megerősítés"
233msgstr "Megerősítés"
231
234
@@ -253,7 +256,7 @@ msgstr "Jelszó megjelenítése"
253msgid "Enter SIM PIN"
256msgid "Enter SIM PIN"
254msgstr "Adja meg a SIM PIN kódját"
257msgstr "Adja meg a SIM PIN kódját"
255
258
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259+#: qml/Notifications/NotificationMenuItemFactory.qml:121
257msgid "Sorry, incorrect PIN"
260msgid "Sorry, incorrect PIN"
258msgstr "Sajnáljuk, helytelen PIN"
261msgstr "Sajnáljuk, helytelen PIN"
259
262
@@ -297,45 +300,45 @@ msgstr "SIM feloldása"
297msgid "Roaming"
300msgid "Roaming"
298msgstr "Barangolás"
301msgstr "Barangolás"
299
302
300−#: qml/Shell.qml:266
303+#: qml/Shell.qml:279
301msgid "Enter your passphrase"
304msgid "Enter your passphrase"
302msgstr "Adja meg a jelmondatot"
305msgstr "Adja meg a jelmondatot"
303
306
304−#: qml/Shell.qml:267
307+#: qml/Shell.qml:280
305msgid "Sorry, incorrect passphrase"
308msgid "Sorry, incorrect passphrase"
306msgstr "Sajnáljuk, helytelen jelmondat"
309msgstr "Sajnáljuk, helytelen jelmondat"
307
310
308#: qml/Shell.qml:282
311#: qml/Shell.qml:282
309msgid "Enter your passcode"
312msgid "Enter your passcode"
310−msgstr ""
313+msgstr "Adja meg a jelkódját"
311
314
312#: qml/Shell.qml:283
315#: qml/Shell.qml:283
313msgid "Sorry, incorrect passcode"
316msgid "Sorry, incorrect passcode"
314−msgstr ""
317+msgstr "Sajnáljuk, helytelen jelkód"
315
318
316−#: qml/Shell.qml:273
319+#: qml/Shell.qml:286
317#, qt-format
320#, qt-format
318msgid "Enter your %1"
321msgid "Enter your %1"
319msgstr "Kérjük adja meg: %1"
322msgstr "Kérjük adja meg: %1"
320
323
321−#: qml/Shell.qml:274
324+#: qml/Shell.qml:287
322#, qt-format
325#, qt-format
323msgid "Sorry, incorrect %1"
326msgid "Sorry, incorrect %1"
324msgstr "Sajnáljuk, helytelen %1"
327msgstr "Sajnáljuk, helytelen %1"
325
328
326−#: qml/Shell.qml:310
329+#: qml/Shell.qml:323
327msgid "Sorry, incorrect passphrase."
330msgid "Sorry, incorrect passphrase."
328msgstr "Sajnáljuk, helytelen jelmondat."
331msgstr "Sajnáljuk, helytelen jelmondat."
329
332
330−#: qml/Shell.qml:311
333+#: qml/Shell.qml:324
331msgid "Sorry, incorrect passcode."
334msgid "Sorry, incorrect passcode."
332msgstr "Sajnáljuk, helytelen jelkód."
335msgstr "Sajnáljuk, helytelen jelkód."
333
336
334−#: qml/Shell.qml:312
337+#: qml/Shell.qml:325
335msgid "This will be your last attempt."
338msgid "This will be your last attempt."
336msgstr "Ez az utolsó próbálkozási lehetősége."
339msgstr "Ez az utolsó próbálkozási lehetősége."
337
340
338−#: qml/Shell.qml:314
341+#: qml/Shell.qml:327
339msgid ""
342msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
343"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
344"reset and all personal data will be deleted."
@@ -343,19 +346,10 @@ msgstr ""
343"Ha helytelen jelmondatot ad meg, a telefonja visszaállítja a gyári "
346"Ha helytelen jelmondatot ad meg, a telefonja visszaállítja a gyári "
344"beállításokat és törli minden személyes adatát."
347"beállításokat és törli minden személyes adatát."
345
348
346−#: qml/Shell.qml:315
349+#: qml/Shell.qml:328
347msgid ""
350msgid ""
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"and all personal data will be deleted."
352"and all personal data will be deleted."
350msgstr ""
353msgstr ""
351"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
354"Ha helytelen jelkódot ad meg, a telefonja visszaállítja a gyári "
352"beállításokat és törli minden személyes adatát."
355"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
12"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
13"Language-Team: Italian <it@li.org>\n"
13"Language-Team: Italian <it@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Password: "
22msgstr "Password: "
23
23
@@ -32,53 +32,55 @@ msgstr "Sblocca scorciatoia"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Termina sessione"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Terminare veramente la sessione?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "No"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Sì"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Spegni"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Spegnere veramente il dispositivo?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Riavvia"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Riavviare veramente il dispositivo?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Alimentazione"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Spegnere veramente\n"
77+"il dispositivo?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Spegni"
81msgstr "Spegni"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Annulla"
85msgstr "Annulla"
84
86
@@ -168,21 +170,22 @@ msgstr "Mostra meno"
168msgid "See all"
170msgid "See all"
169msgstr "Mostra tutto"
171msgstr "Mostra tutto"
170
172
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
172msgid "Search"
175msgid "Search"
173msgstr "Cerca"
176msgstr "Cerca"
174
177
175#: qml/Dash/PageHeader.qml:270
178#: qml/Dash/PageHeader.qml:270
176msgid "Settings"
179msgid "Settings"
177−msgstr ""
180+msgstr "Impostazioni"
178
181
179#: qml/Dash/PageHeader.qml:279
182#: qml/Dash/PageHeader.qml:279
180msgid "Remove from Favorites"
183msgid "Remove from Favorites"
181−msgstr ""
184+msgstr "Rimuovi dai preferiti"
182
185
183#: qml/Dash/PageHeader.qml:279
186#: qml/Dash/PageHeader.qml:279
184msgid "Add to Favorites"
187msgid "Add to Favorites"
185−msgstr ""
188+msgstr "Aggiungi ai preferiti"
186
189
187#: qml/Dash/Previews/PreviewActionCombo.qml:34
190#: qml/Dash/Previews/PreviewActionCombo.qml:34
188msgid "More..."
191msgid "More..."
@@ -208,11 +211,11 @@ msgstr "Invia"
208msgid "Manage Dash"
211msgid "Manage Dash"
209msgstr "Gestione della Dash"
212msgstr "Gestione della Dash"
210
213
211−#: qml/Dash/ScopesOverview.qml:408
214+#: qml/Dash/ScopesOverview.qml:417
212msgid "Done"
215msgid "Done"
213msgstr "Fatto"
216msgstr "Fatto"
214
217
215−#: qml/Dash/ScopesOverview.qml:434
218+#: qml/Dash/ScopesOverview.qml:443
216msgid "Store"
219msgid "Store"
217msgstr "Store"
220msgstr "Store"
218
221
@@ -228,7 +231,7 @@ msgstr "Tutto"
228msgid "Swipe to unlock"
231msgid "Swipe to unlock"
229msgstr "Scorrere per sbloccare"
232msgstr "Scorrere per sbloccare"
230
233
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
234+#: qml/Hud/HudParametrizedActionsPage.qml:139
232msgid "Confirm"
235msgid "Confirm"
233msgstr "Conferma"
236msgstr "Conferma"
234
237
@@ -256,7 +259,7 @@ msgstr "Mostra password"
256msgid "Enter SIM PIN"
259msgid "Enter SIM PIN"
257msgstr "Inserire il PIN della SIM"
260msgstr "Inserire il PIN della SIM"
258
261
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
262+#: qml/Notifications/NotificationMenuItemFactory.qml:121
260msgid "Sorry, incorrect PIN"
263msgid "Sorry, incorrect PIN"
261msgstr "PIN errato"
264msgstr "PIN errato"
262
265
@@ -300,45 +303,45 @@ msgstr "Sblocca SIM"
300msgid "Roaming"
303msgid "Roaming"
301msgstr "Roaming"
304msgstr "Roaming"
302
305
303−#: qml/Shell.qml:266
306+#: qml/Shell.qml:279
304msgid "Enter your passphrase"
307msgid "Enter your passphrase"
305msgstr "Digitare la passphrase"
308msgstr "Digitare la passphrase"
306
309
307−#: qml/Shell.qml:267
310+#: qml/Shell.qml:280
308msgid "Sorry, incorrect passphrase"
311msgid "Sorry, incorrect passphrase"
309msgstr "Passphrase errata"
312msgstr "Passphrase errata"
310
313
311#: qml/Shell.qml:282
314#: qml/Shell.qml:282
312msgid "Enter your passcode"
315msgid "Enter your passcode"
313−msgstr ""
316+msgstr "Inserire il passcode"
314
317
315#: qml/Shell.qml:283
318#: qml/Shell.qml:283
316msgid "Sorry, incorrect passcode"
319msgid "Sorry, incorrect passcode"
317−msgstr ""
320+msgstr "Passcode non corretto"
318
321
319−#: qml/Shell.qml:273
322+#: qml/Shell.qml:286
320#, qt-format
323#, qt-format
321msgid "Enter your %1"
324msgid "Enter your %1"
322msgstr "Inserire %1"
325msgstr "Inserire %1"
323
326
324−#: qml/Shell.qml:274
327+#: qml/Shell.qml:287
325#, qt-format
328#, qt-format
326msgid "Sorry, incorrect %1"
329msgid "Sorry, incorrect %1"
327msgstr "%1 non corretto"
330msgstr "%1 non corretto"
328
331
329−#: qml/Shell.qml:310
332+#: qml/Shell.qml:323
330msgid "Sorry, incorrect passphrase."
333msgid "Sorry, incorrect passphrase."
331msgstr "Passphrase non corretta"
334msgstr "Passphrase non corretta"
332
335
333−#: qml/Shell.qml:311
336+#: qml/Shell.qml:324
334msgid "Sorry, incorrect passcode."
337msgid "Sorry, incorrect passcode."
335msgstr "Passcode non corretto"
338msgstr "Passcode non corretto"
336
339
337−#: qml/Shell.qml:312
340+#: qml/Shell.qml:325
338msgid "This will be your last attempt."
341msgid "This will be your last attempt."
339msgstr "Questo sarà l'ultimo tentativo."
342msgstr "Questo sarà l'ultimo tentativo."
340
343
341−#: qml/Shell.qml:314
344+#: qml/Shell.qml:327
342msgid ""
345msgid ""
343"If passphrase is entered incorrectly, your phone will conduct a factory "
346"If passphrase is entered incorrectly, your phone will conduct a factory "
344"reset and all personal data will be deleted."
347"reset and all personal data will be deleted."
@@ -346,19 +349,10 @@ msgstr ""
346"Se verrà inserita una passphrase errata, il telefono eseguirà un ripristino "
349"Se verrà inserita una passphrase errata, il telefono eseguirà un ripristino "
347"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
350"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
348
351
349−#: qml/Shell.qml:315
352+#: qml/Shell.qml:328
350msgid ""
353msgid ""
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
354"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"and all personal data will be deleted."
355"and all personal data will be deleted."
353msgstr ""
356msgstr ""
354"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
357"Se verrà inserito una passcode errato, il telefono eseguirà un ripristino "
355"delle impostazioni di fabbrica e tutti i dati personali verranno eliminati."
358"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
12"Last-Translator: Mitsuya Shibata <mty.shibata@gmail.com>\n"
13"Language-Team: Japanese <ja@li.org>\n"
13"Language-Team: Japanese <ja@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-02 07:20+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17192)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "パスワード: "
22msgstr "パスワード: "
23
23
@@ -32,7 +32,7 @@ msgstr "ショートカットを削除する"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "ログアウト"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
@@ -41,16 +41,16 @@ msgstr ""
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "いいえ"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "はい"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "シャットダウン"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
@@ -58,7 +58,7 @@ msgstr ""
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "再起動"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
@@ -74,11 +74,11 @@ msgid ""
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76
76
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
78msgid "Power off"
79msgstr "電源を切る"
79msgstr "電源を切る"
80
80
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
82msgid "Cancel"
83msgstr "キャンセル"
83msgstr "キャンセル"
84
84
@@ -156,27 +156,28 @@ msgstr "こんにちは"
156
156
157#: qml/Dash/GenericScopeView.qml:361
157#: qml/Dash/GenericScopeView.qml:361
158msgid "See less"
158msgid "See less"
159−msgstr ""
159+msgstr "隠す"
160
160
161#: qml/Dash/GenericScopeView.qml:361
161#: qml/Dash/GenericScopeView.qml:361
162msgid "See all"
162msgid "See all"
163msgstr "すべて表示する"
163msgstr "すべて表示する"
164
164
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
166msgid "Search"
167msgid "Search"
167msgstr "検索"
168msgstr "検索"
168
169
169#: qml/Dash/PageHeader.qml:270
170#: qml/Dash/PageHeader.qml:270
170msgid "Settings"
171msgid "Settings"
171−msgstr ""
172+msgstr "設定"
172
173
173#: qml/Dash/PageHeader.qml:279
174#: qml/Dash/PageHeader.qml:279
174msgid "Remove from Favorites"
175msgid "Remove from Favorites"
175−msgstr ""
176+msgstr "お気に入りから削除する"
176
177
177#: qml/Dash/PageHeader.qml:279
178#: qml/Dash/PageHeader.qml:279
178msgid "Add to Favorites"
179msgid "Add to Favorites"
179−msgstr ""
180+msgstr "お気に入りに追加する"
180
181
181#: qml/Dash/Previews/PreviewActionCombo.qml:34
182#: qml/Dash/Previews/PreviewActionCombo.qml:34
182msgid "More..."
183msgid "More..."
@@ -202,11 +203,11 @@ msgstr "送信"
202msgid "Manage Dash"
203msgid "Manage Dash"
203msgstr "Dashの管理"
204msgstr "Dashの管理"
204
205
205−#: qml/Dash/ScopesOverview.qml:408
206+#: qml/Dash/ScopesOverview.qml:417
206msgid "Done"
207msgid "Done"
207msgstr "完了"
208msgstr "完了"
208
209
209−#: qml/Dash/ScopesOverview.qml:434
210+#: qml/Dash/ScopesOverview.qml:443
210msgid "Store"
211msgid "Store"
211msgstr "保存"
212msgstr "保存"
212
213
@@ -222,7 +223,7 @@ msgstr "すべて"
222msgid "Swipe to unlock"
223msgid "Swipe to unlock"
223msgstr "スワイプしてロック解除"
224msgstr "スワイプしてロック解除"
224
225
225−#: qml/Hud/HudParametrizedActionsPage.qml:132
226+#: qml/Hud/HudParametrizedActionsPage.qml:139
226msgid "Confirm"
227msgid "Confirm"
227msgstr "確認"
228msgstr "確認"
228
229
@@ -250,7 +251,7 @@ msgstr "パスワードを表示"
250msgid "Enter SIM PIN"
251msgid "Enter SIM PIN"
251msgstr ""
252msgstr ""
252
253
253−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
254+#: qml/Notifications/NotificationMenuItemFactory.qml:121
254msgid "Sorry, incorrect PIN"
255msgid "Sorry, incorrect PIN"
255msgstr ""
256msgstr ""
256
257
@@ -260,11 +261,11 @@ msgstr "タップすると通話に戻ります..."
260
261
261#: qml/Panel/ActiveCallHint.qml:90
262#: qml/Panel/ActiveCallHint.qml:90
262msgid "Conference"
263msgid "Conference"
263−msgstr ""
264+msgstr "グループ通話"
264
265
265#: qml/Panel/Indicators/MenuItemFactory.qml:651
266#: qml/Panel/Indicators/MenuItemFactory.qml:651
266msgid "In queue…"
267msgid "In queue…"
267−msgstr ""
268+msgstr "開始待ち..."
268
269
269#: qml/Panel/Indicators/MenuItemFactory.qml:655
270#: qml/Panel/Indicators/MenuItemFactory.qml:655
270msgid "Downloading"
271msgid "Downloading"
@@ -276,11 +277,11 @@ msgstr "停止中、再開するにはタップしてください"
276
277
277#: qml/Panel/Indicators/MenuItemFactory.qml:659
278#: qml/Panel/Indicators/MenuItemFactory.qml:659
278msgid "Canceled"
279msgid "Canceled"
279−msgstr ""
280+msgstr "中止しました"
280
281
281#: qml/Panel/Indicators/MenuItemFactory.qml:661
282#: qml/Panel/Indicators/MenuItemFactory.qml:661
282msgid "Finished"
283msgid "Finished"
283−msgstr ""
284+msgstr "完了しました"
284
285
285#: qml/Panel/Indicators/MenuItemFactory.qml:663
286#: qml/Panel/Indicators/MenuItemFactory.qml:663
286msgid "Failed, tap to retry"
287msgid "Failed, tap to retry"
@@ -294,11 +295,11 @@ msgstr "SIMのアンロック"
294msgid "Roaming"
295msgid "Roaming"
295msgstr "ローミング"
296msgstr "ローミング"
296
297
297−#: qml/Shell.qml:266
298+#: qml/Shell.qml:279
298msgid "Enter your passphrase"
299msgid "Enter your passphrase"
299msgstr ""
300msgstr ""
300
301
301−#: qml/Shell.qml:267
302+#: qml/Shell.qml:280
302msgid "Sorry, incorrect passphrase"
303msgid "Sorry, incorrect passphrase"
303msgstr ""
304msgstr ""
304
305
@@ -308,44 +309,38 @@ msgstr ""
308
309
309#: qml/Shell.qml:283
310#: qml/Shell.qml:283
310msgid "Sorry, incorrect passcode"
311msgid "Sorry, incorrect passcode"
311−msgstr ""
312+msgstr "ごめんなさい、誤ったパスコードです"
312
313
313−#: qml/Shell.qml:273
314+#: qml/Shell.qml:286
314#, qt-format
315#, qt-format
315msgid "Enter your %1"
316msgid "Enter your %1"
316msgstr "%1を入力してください"
317msgstr "%1を入力してください"
317
318
318−#: qml/Shell.qml:274
319+#: qml/Shell.qml:287
319#, qt-format
320#, qt-format
320msgid "Sorry, incorrect %1"
321msgid "Sorry, incorrect %1"
321msgstr ""
322msgstr ""
322
323
323−#: qml/Shell.qml:310
324+#: qml/Shell.qml:323
324msgid "Sorry, incorrect passphrase."
325msgid "Sorry, incorrect passphrase."
325msgstr "パスフレーズが間違っています。"
326msgstr "パスフレーズが間違っています。"
326
327
327−#: qml/Shell.qml:311
328+#: qml/Shell.qml:324
328msgid "Sorry, incorrect passcode."
329msgid "Sorry, incorrect passcode."
329msgstr "パスコードが間違っています。"
330msgstr "パスコードが間違っています。"
330
331
331−#: qml/Shell.qml:312
332+#: qml/Shell.qml:325
332msgid "This will be your last attempt."
333msgid "This will be your last attempt."
333msgstr "これが最後のチャンスです。"
334msgstr "これが最後のチャンスです。"
334
335
335−#: qml/Shell.qml:314
336+#: qml/Shell.qml:327
336msgid ""
337msgid ""
337"If passphrase is entered incorrectly, your phone will conduct a factory "
338"If passphrase is entered incorrectly, your phone will conduct a factory "
338"reset and all personal data will be deleted."
339"reset and all personal data will be deleted."
339−msgstr ""
340+msgstr "パスフレーズが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
340
341
341−#: qml/Shell.qml:315
342+#: qml/Shell.qml:328
342msgid ""
343msgid ""
343"If passcode is entered incorrectly, your phone will conduct a factory reset "
344"If passcode is entered incorrectly, your phone will conduct a factory reset "
344"and all personal data will be deleted."
345"and all personal data will be deleted."
345−msgstr ""
346+msgstr "パスコードが間違っている場合、ファクトリーリセットを実施し、すべての個人データは削除されます。"
346−
347−#~ msgid "Are you sure you would like to turn power off?"
348−#~ msgstr "本当に電源を切りますか?"
349−
350−#~ msgid "Restart"
351−#~ msgstr "再起動"
po/nb.po+40−46
@@ -8,16 +8,16 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Åka Sikrom <Unknown>\n"
12"Last-Translator: Åka Sikrom <Unknown>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Passord: "
22msgstr "Passord: "
23
23
@@ -32,53 +32,55 @@ msgstr "Fjern snarvei"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Logg ut"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Er du sikker på at du vil logge ut?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Nei"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Ja"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Slå av"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Er du sikker på at du vil slå av?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Start på nytt"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Er du sikker på at du vil starte på nytt?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Strøm"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Er du sikker på at du vil \n"
77+"skru av?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Slå av"
81msgstr "Slå av"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Avbryt"
85msgstr "Avbryt"
84
86
@@ -116,11 +118,11 @@ msgstr "Venstre kant"
116
118
117#: qml/Components/EdgeDemo.qml:199
119#: qml/Components/EdgeDemo.qml:199
118msgid "Swipe from the left to reveal the launcher for quick access to apps"
120msgid "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"
120
122
121#: qml/Components/EdgeDemo.qml:226
123#: qml/Components/EdgeDemo.qml:226
122msgid "Well done"
124msgid "Well done"
123−msgstr "Bra jobba"
125+msgstr "Godt jobba"
124
126
125#: qml/Components/EdgeDemo.qml:227
127#: qml/Components/EdgeDemo.qml:227
126msgid ""
128msgid ""
@@ -163,21 +165,22 @@ msgstr "Vis mindre"
163msgid "See all"
165msgid "See all"
164msgstr "Vis alt"
166msgstr "Vis alt"
165
167
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
167msgid "Search"
170msgid "Search"
168msgstr "Søk"
171msgstr "Søk"
169
172
170#: qml/Dash/PageHeader.qml:270
173#: qml/Dash/PageHeader.qml:270
171msgid "Settings"
174msgid "Settings"
172−msgstr ""
175+msgstr "Innstillinger"
173
176
174#: qml/Dash/PageHeader.qml:279
177#: qml/Dash/PageHeader.qml:279
175msgid "Remove from Favorites"
178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Fjern fra favoritter"
177
180
178#: qml/Dash/PageHeader.qml:279
181#: qml/Dash/PageHeader.qml:279
179msgid "Add to Favorites"
182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Legg til i favoritter"
181
184
182#: qml/Dash/Previews/PreviewActionCombo.qml:34
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183msgid "More..."
186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Send"
203msgid "Manage Dash"
206msgid "Manage Dash"
204msgstr "Håndter dashbord"
207msgstr "Håndter dashbord"
205
208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207msgid "Done"
210msgid "Done"
208msgstr "Ferdig"
211msgstr "Ferdig"
209
212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211msgid "Store"
214msgid "Store"
212msgstr "Butikk"
215msgstr "Butikk"
213
216
@@ -221,9 +224,9 @@ msgstr "Alt"
221
224
222#: qml/Greeter/Greeter.qml:157
225#: qml/Greeter/Greeter.qml:157
223msgid "Swipe to unlock"
226msgid "Swipe to unlock"
224−msgstr "Sveip for å låse opp"
227+msgstr "Skyv for å låse opp"
225
228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
230msgid "Confirm"
228msgstr "Bekreft"
231msgstr "Bekreft"
229
232
@@ -251,7 +254,7 @@ msgstr "Vis passord"
251msgid "Enter SIM PIN"
254msgid "Enter SIM PIN"
252msgstr "Tast SIM-kortets PIN-kode"
255msgstr "Tast SIM-kortets PIN-kode"
253
256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255msgid "Sorry, incorrect PIN"
258msgid "Sorry, incorrect PIN"
256msgstr "Feil PIN"
259msgstr "Feil PIN"
257
260
@@ -295,45 +298,45 @@ msgstr "Lås opp SIM"
295msgid "Roaming"
298msgid "Roaming"
296msgstr "Fremmednett"
299msgstr "Fremmednett"
297
300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299msgid "Enter your passphrase"
302msgid "Enter your passphrase"
300msgstr "Skriv inn passordfrasen din"
303msgstr "Skriv inn passordfrasen din"
301
304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303msgid "Sorry, incorrect passphrase"
306msgid "Sorry, incorrect passphrase"
304msgstr "Feil passordfrase"
307msgstr "Feil passordfrase"
305
308
306#: qml/Shell.qml:282
309#: qml/Shell.qml:282
307msgid "Enter your passcode"
310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Tast koden din"
309
312
310#: qml/Shell.qml:283
313#: qml/Shell.qml:283
311msgid "Sorry, incorrect passcode"
314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Feil kode"
313
316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315#, qt-format
318#, qt-format
316msgid "Enter your %1"
319msgid "Enter your %1"
317msgstr "Skriv inn %1"
320msgstr "Skriv inn %1"
318
321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320#, qt-format
323#, qt-format
321msgid "Sorry, incorrect %1"
324msgid "Sorry, incorrect %1"
322msgstr "Feil %1"
325msgstr "Feil %1"
323
326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325msgid "Sorry, incorrect passphrase."
328msgid "Sorry, incorrect passphrase."
326msgstr "Feil passordfrase."
329msgstr "Feil passordfrase."
327
330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329msgid "Sorry, incorrect passcode."
332msgid "Sorry, incorrect passcode."
330msgstr "Feil kode."
333msgstr "Feil kode."
331
334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333msgid "This will be your last attempt."
336msgid "This will be your last attempt."
334msgstr "Dette er ditt siste forsøk."
337msgstr "Dette er ditt siste forsøk."
335
338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337msgid ""
340msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
341"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341"Hvis du skriver feil passordfrase en gang til, tilbakestilles telefonen til "
344"Hvis du skriver feil passordfrase en gang til, tilbakestilles telefonen til "
342"fabrikkinnstillinger, og alle personlige data slettes."
345"fabrikkinnstillinger, og alle personlige data slettes."
343
346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345msgid ""
348msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
350"and all personal data will be deleted."
348msgstr ""
351msgstr ""
349"Hvis du skriver feil kode en gang til, tilbakestilles telefonen til "
352"Hvis du skriver feil kode en gang til, tilbakestilles telefonen til "
350"fabrikkinnstillinger, og alle personlige data slettes."
353"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: rob <linuxned@gmail.com>\n"
12"Last-Translator: rob <linuxned@gmail.com>\n"
13"Language-Team: Dutch <nl@li.org>\n"
13"Language-Team: Dutch <nl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-31 07:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Wachtwoord: "
22msgstr "Wachtwoord: "
23
23
@@ -32,53 +32,55 @@ msgstr "Snelkoppeling losmaken"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Afmelden"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Weet u zeker dat u zich wilt afmelden?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Nee"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Ja"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Uitschakelen"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Weet u zeker dat u het apparaat wilt uitschakelen?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Herstarten"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Weet u zeker dat u het apparaat wilt herstarten?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Energie"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Weet u zeker dat u het apparaat\n"
77+"wilt uitschakelen?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Uitschakelen"
81msgstr "Uitschakelen"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Annuleren"
85msgstr "Annuleren"
84
86
@@ -163,21 +165,22 @@ msgstr "Minder zien"
163msgid "See all"
165msgid "See all"
164msgstr "Alles zien"
166msgstr "Alles zien"
165
167
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
167msgid "Search"
170msgid "Search"
168msgstr "Zoeken"
171msgstr "Zoeken"
169
172
170#: qml/Dash/PageHeader.qml:270
173#: qml/Dash/PageHeader.qml:270
171msgid "Settings"
174msgid "Settings"
172−msgstr ""
175+msgstr "Instellingen"
173
176
174#: qml/Dash/PageHeader.qml:279
177#: qml/Dash/PageHeader.qml:279
175msgid "Remove from Favorites"
178msgid "Remove from Favorites"
176−msgstr ""
179+msgstr "Verwijderen uit favorieten"
177
180
178#: qml/Dash/PageHeader.qml:279
181#: qml/Dash/PageHeader.qml:279
179msgid "Add to Favorites"
182msgid "Add to Favorites"
180−msgstr ""
183+msgstr "Toevoegen aan favorieten"
181
184
182#: qml/Dash/Previews/PreviewActionCombo.qml:34
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
183msgid "More..."
186msgid "More..."
@@ -203,11 +206,11 @@ msgstr "Versturen"
203msgid "Manage Dash"
206msgid "Manage Dash"
204msgstr "Snelzoeker-beheer"
207msgstr "Snelzoeker-beheer"
205
208
206−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
207msgid "Done"
210msgid "Done"
208msgstr "Klaar"
211msgstr "Klaar"
209
212
210−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
211msgid "Store"
214msgid "Store"
212msgstr "Winkel"
215msgstr "Winkel"
213
216
@@ -223,7 +226,7 @@ msgstr "Alles"
223msgid "Swipe to unlock"
226msgid "Swipe to unlock"
224msgstr "Veeg om te ontgrendelen"
227msgstr "Veeg om te ontgrendelen"
225
228
226−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
227msgid "Confirm"
230msgid "Confirm"
228msgstr "Bevestigen"
231msgstr "Bevestigen"
229
232
@@ -249,9 +252,9 @@ msgstr "Wachtwoord tonen"
249
252
250#: qml/Notifications/NotificationMenuItemFactory.qml:120
253#: qml/Notifications/NotificationMenuItemFactory.qml:120
251msgid "Enter SIM PIN"
254msgid "Enter SIM PIN"
252−msgstr "Voer SIM-pincode in"
255+msgstr "Voer simpincode in"
253
256
254−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
255msgid "Sorry, incorrect PIN"
258msgid "Sorry, incorrect PIN"
256msgstr "Sorry, onjuiste pincode"
259msgstr "Sorry, onjuiste pincode"
257
260
@@ -289,51 +292,51 @@ msgstr "Mislukt, tik om het opnieuw te proberen"
289
292
290#: qml/Panel/Indicators/ModemInfoItem.qml:105
293#: qml/Panel/Indicators/ModemInfoItem.qml:105
291msgid "Unlock SIM"
294msgid "Unlock SIM"
292−msgstr "SIM-kaart deblokkeren"
295+msgstr "Simkaart deblokkeren"
293
296
294#: qml/Panel/Indicators/RoamingIndication.qml:27
297#: qml/Panel/Indicators/RoamingIndication.qml:27
295msgid "Roaming"
298msgid "Roaming"
296msgstr "Roaming"
299msgstr "Roaming"
297
300
298−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
299msgid "Enter your passphrase"
302msgid "Enter your passphrase"
300msgstr "Voer uw wachtwoordzin in"
303msgstr "Voer uw wachtwoordzin in"
301
304
302−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
303msgid "Sorry, incorrect passphrase"
306msgid "Sorry, incorrect passphrase"
304msgstr "Sorry, onjuiste wachtwoordzin"
307msgstr "Sorry, onjuiste wachtwoordzin"
305
308
306#: qml/Shell.qml:282
309#: qml/Shell.qml:282
307msgid "Enter your passcode"
310msgid "Enter your passcode"
308−msgstr ""
311+msgstr "Voer uw toegangscode in"
309
312
310#: qml/Shell.qml:283
313#: qml/Shell.qml:283
311msgid "Sorry, incorrect passcode"
314msgid "Sorry, incorrect passcode"
312−msgstr ""
315+msgstr "Sorry, onjuiste toegangscode"
313
316
314−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
315#, qt-format
318#, qt-format
316msgid "Enter your %1"
319msgid "Enter your %1"
317msgstr "Voer uw %1 in"
320msgstr "Voer uw %1 in"
318
321
319−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
320#, qt-format
323#, qt-format
321msgid "Sorry, incorrect %1"
324msgid "Sorry, incorrect %1"
322msgstr "Sorry, onjuiste %1"
325msgstr "Sorry, onjuiste %1"
323
326
324−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
325msgid "Sorry, incorrect passphrase."
328msgid "Sorry, incorrect passphrase."
326msgstr "Sorry, onjuiste wachtwoordzin."
329msgstr "Sorry, onjuiste wachtwoordzin."
327
330
328−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
329msgid "Sorry, incorrect passcode."
332msgid "Sorry, incorrect passcode."
330msgstr "Sorry, onjuiste toegangscode."
333msgstr "Sorry, onjuiste toegangscode."
331
334
332−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
333msgid "This will be your last attempt."
336msgid "This will be your last attempt."
334msgstr "Dit zal uw laatste poging worden."
337msgstr "Dit zal uw laatste poging worden."
335
338
336−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
337msgid ""
340msgid ""
338"If passphrase is entered incorrectly, your phone will conduct a factory "
341"If passphrase is entered incorrectly, your phone will conduct a factory "
339"reset and all personal data will be deleted."
342"reset and all personal data will be deleted."
@@ -341,19 +344,10 @@ msgstr ""
341"Wanneer de wachtwoordzin nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
344"Wanneer de wachtwoordzin nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
342"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
345"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
343
346
344−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
345msgid ""
348msgid ""
346"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
347"and all personal data will be deleted."
350"and all personal data will be deleted."
348msgstr ""
351msgstr ""
349"Wanneer de toegangscode nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
352"Wanneer de toegangscode nu opnieuw onjuist wordt ingevoerd, zal uw telefoon "
350"teruggaan naar de fabrieksinstellingen en zal al uw eigen data verloren gaan."
353"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 ""
8"Project-Id-Version: unity8\n"
8"Project-Id-Version: unity8\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
12"Last-Translator: Ivo Xavier <ivofernandes12@gmail.com>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
13"Language-Team: Portuguese <pt@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Senha: "
22msgstr "Senha: "
23
23
@@ -32,53 +32,55 @@ msgstr "Remover atalho"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Terminar sessão"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Tem a certeza de que quer sair?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Não"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Sim"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Encerrar"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Tem a certeza de que quer encerrar?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Reiniciar"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Tem a certeza de que quer reiniciar?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Energia"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Tem a certeza de quer\n"
77+"desligar?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Desligar"
81msgstr "Desligar"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Cancelar"
85msgstr "Cancelar"
84
86
@@ -164,21 +166,22 @@ msgstr "Ver menos"
164msgid "See all"
166msgid "See all"
165msgstr "Ver todos"
167msgstr "Ver todos"
166
168
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
168msgid "Search"
171msgid "Search"
169msgstr "Procurar"
172msgstr "Procurar"
170
173
171#: qml/Dash/PageHeader.qml:270
174#: qml/Dash/PageHeader.qml:270
172msgid "Settings"
175msgid "Settings"
173−msgstr ""
176+msgstr "Definições"
174
177
175#: qml/Dash/PageHeader.qml:279
178#: qml/Dash/PageHeader.qml:279
176msgid "Remove from Favorites"
179msgid "Remove from Favorites"
177−msgstr ""
180+msgstr "Remover dos favoritos"
178
181
179#: qml/Dash/PageHeader.qml:279
182#: qml/Dash/PageHeader.qml:279
180msgid "Add to Favorites"
183msgid "Add to Favorites"
181−msgstr ""
184+msgstr "Adicionar aos favoritos"
182
185
183#: qml/Dash/Previews/PreviewActionCombo.qml:34
186#: qml/Dash/Previews/PreviewActionCombo.qml:34
184msgid "More..."
187msgid "More..."
@@ -204,11 +207,11 @@ msgstr "Enviar"
204msgid "Manage Dash"
207msgid "Manage Dash"
205msgstr "Gerir o Dash"
208msgstr "Gerir o Dash"
206
209
207−#: qml/Dash/ScopesOverview.qml:408
210+#: qml/Dash/ScopesOverview.qml:417
208msgid "Done"
211msgid "Done"
209msgstr "Concluído"
212msgstr "Concluído"
210
213
211−#: qml/Dash/ScopesOverview.qml:434
214+#: qml/Dash/ScopesOverview.qml:443
212msgid "Store"
215msgid "Store"
213msgstr "Loja"
216msgstr "Loja"
214
217
@@ -224,7 +227,7 @@ msgstr "Todos"
224msgid "Swipe to unlock"
227msgid "Swipe to unlock"
225msgstr "Deslize para desbloquear"
228msgstr "Deslize para desbloquear"
226
229
227−#: qml/Hud/HudParametrizedActionsPage.qml:132
230+#: qml/Hud/HudParametrizedActionsPage.qml:139
228msgid "Confirm"
231msgid "Confirm"
229msgstr "Confirmar"
232msgstr "Confirmar"
230
233
@@ -252,7 +255,7 @@ msgstr "Mostrar palavra-passe"
252msgid "Enter SIM PIN"
255msgid "Enter SIM PIN"
253msgstr "Introduza o PIN do SIM"
256msgstr "Introduza o PIN do SIM"
254
257
255−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
258+#: qml/Notifications/NotificationMenuItemFactory.qml:121
256msgid "Sorry, incorrect PIN"
259msgid "Sorry, incorrect PIN"
257msgstr "Desculpe, PIN incorreto"
260msgstr "Desculpe, PIN incorreto"
258
261
@@ -296,45 +299,45 @@ msgstr "Desbloquear SIM"
296msgid "Roaming"
299msgid "Roaming"
297msgstr "Roaming"
300msgstr "Roaming"
298
301
299−#: qml/Shell.qml:266
302+#: qml/Shell.qml:279
300msgid "Enter your passphrase"
303msgid "Enter your passphrase"
301msgstr "Introduza a sua frase-senha"
304msgstr "Introduza a sua frase-senha"
302
305
303−#: qml/Shell.qml:267
306+#: qml/Shell.qml:280
304msgid "Sorry, incorrect passphrase"
307msgid "Sorry, incorrect passphrase"
305msgstr "Desculpe, frase-senha incorreta"
308msgstr "Desculpe, frase-senha incorreta"
306
309
307#: qml/Shell.qml:282
310#: qml/Shell.qml:282
308msgid "Enter your passcode"
311msgid "Enter your passcode"
309−msgstr ""
312+msgstr "Introduza a sua senha"
310
313
311#: qml/Shell.qml:283
314#: qml/Shell.qml:283
312msgid "Sorry, incorrect passcode"
315msgid "Sorry, incorrect passcode"
313−msgstr ""
316+msgstr "Desculpe, senha incorreta"
314
317
315−#: qml/Shell.qml:273
318+#: qml/Shell.qml:286
316#, qt-format
319#, qt-format
317msgid "Enter your %1"
320msgid "Enter your %1"
318msgstr "Introduza o seu %1"
321msgstr "Introduza o seu %1"
319
322
320−#: qml/Shell.qml:274
323+#: qml/Shell.qml:287
321#, qt-format
324#, qt-format
322msgid "Sorry, incorrect %1"
325msgid "Sorry, incorrect %1"
323msgstr "Desculpe, incorreto %1"
326msgstr "Desculpe, incorreto %1"
324
327
325−#: qml/Shell.qml:310
328+#: qml/Shell.qml:323
326msgid "Sorry, incorrect passphrase."
329msgid "Sorry, incorrect passphrase."
327msgstr "Desculpe, frase de acesso incorreta."
330msgstr "Desculpe, frase de acesso incorreta."
328
331
329−#: qml/Shell.qml:311
332+#: qml/Shell.qml:324
330msgid "Sorry, incorrect passcode."
333msgid "Sorry, incorrect passcode."
331msgstr "Desculpe, senha incorreta."
334msgstr "Desculpe, senha incorreta."
332
335
333−#: qml/Shell.qml:312
336+#: qml/Shell.qml:325
334msgid "This will be your last attempt."
337msgid "This will be your last attempt."
335msgstr "Esta será a sua última tentativa."
338msgstr "Esta será a sua última tentativa."
336
339
337−#: qml/Shell.qml:314
340+#: qml/Shell.qml:327
338msgid ""
341msgid ""
339"If passphrase is entered incorrectly, your phone will conduct a factory "
342"If passphrase is entered incorrectly, your phone will conduct a factory "
340"reset and all personal data will be deleted."
343"reset and all personal data will be deleted."
@@ -342,19 +345,10 @@ msgstr ""
342"Se a frase de acesso for introduzida incorretamente, o seu telemóvel vai "
345"Se a frase de acesso for introduzida incorretamente, o seu telemóvel vai "
343"proceder ao restauro de fábrica e apagará toda a sua informação pessoal."
346"proceder ao restauro de fábrica e apagará toda a sua informação pessoal."
344
347
345−#: qml/Shell.qml:315
348+#: qml/Shell.qml:328
346msgid ""
349msgid ""
347"If passcode is entered incorrectly, your phone will conduct a factory reset "
350"If passcode is entered incorrectly, your phone will conduct a factory reset "
348"and all personal data will be deleted."
351"and all personal data will be deleted."
349msgstr ""
352msgstr ""
350"Se a senha for introduzida incorretamente, o seu telemóvel vai apagar todos "
353"Se a senha for introduzida incorretamente, o seu telemóvel vai apagar todos "
351"os seus dados pessoais."
354"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
12"Last-Translator: Meriuță Cornel <meriutacornel@neacornel.eu>\n"
13"Language-Team: Romanian <ro@li.org>\n"
13"Language-Team: Romanian <ro@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-09-01 07:33+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Parolă: "
22msgstr "Parolă: "
23
23
@@ -32,53 +32,55 @@ msgstr "Eliberează scurtătura"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Închide sesiunea"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Sunteți sigur că doriți să închideți sesiunea?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Nu"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Da"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Închideți"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Sunteți sigur că doriți să închideți?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Repornire"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Sunteți sigur că doriți să reporniți?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Alimentare"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Sunteți sigur că doriți să\n"
77+"opriți alimentarea?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Oprire"
81msgstr "Oprire"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Anulează"
85msgstr "Anulează"
84
86
@@ -166,21 +168,22 @@ msgstr "Afișează mai puține"
166msgid "See all"
168msgid "See all"
167msgstr "Afișează tot"
169msgstr "Afișează tot"
168
170
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
170msgid "Search"
173msgid "Search"
171msgstr "Căutare"
174msgstr "Căutare"
172
175
173#: qml/Dash/PageHeader.qml:270
176#: qml/Dash/PageHeader.qml:270
174msgid "Settings"
177msgid "Settings"
175−msgstr ""
178+msgstr "Configurări"
176
179
177#: qml/Dash/PageHeader.qml:279
180#: qml/Dash/PageHeader.qml:279
178msgid "Remove from Favorites"
181msgid "Remove from Favorites"
179−msgstr ""
182+msgstr "Șterge din favorite"
180
183
181#: qml/Dash/PageHeader.qml:279
184#: qml/Dash/PageHeader.qml:279
182msgid "Add to Favorites"
185msgid "Add to Favorites"
183−msgstr ""
186+msgstr "Adaugă la favorite"
184
187
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
188#: qml/Dash/Previews/PreviewActionCombo.qml:34
186msgid "More..."
189msgid "More..."
@@ -206,11 +209,11 @@ msgstr "Trimite"
206msgid "Manage Dash"
209msgid "Manage Dash"
207msgstr "Administrare Panou principal"
210msgstr "Administrare Panou principal"
208
211
209−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
210msgid "Done"
213msgid "Done"
211msgstr "Finalizat"
214msgstr "Finalizat"
212
215
213−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
214msgid "Store"
217msgid "Store"
215msgstr "Magazin"
218msgstr "Magazin"
216
219
@@ -226,7 +229,7 @@ msgstr "Tot"
226msgid "Swipe to unlock"
229msgid "Swipe to unlock"
227msgstr "Glisați pentru deblocare"
230msgstr "Glisați pentru deblocare"
228
231
229−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
230msgid "Confirm"
233msgid "Confirm"
231msgstr "Confirmați"
234msgstr "Confirmați"
232
235
@@ -254,9 +257,9 @@ msgstr "Arată parola"
254msgid "Enter SIM PIN"
257msgid "Enter SIM PIN"
255msgstr "Introduceți codul PIN pentru SIM"
258msgstr "Introduceți codul PIN pentru SIM"
256
259
257−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
258msgid "Sorry, incorrect PIN"
261msgid "Sorry, incorrect PIN"
259−msgstr ""
262+msgstr "Cod PIN incorect"
260
263
261#: qml/Panel/ActiveCallHint.qml:77
264#: qml/Panel/ActiveCallHint.qml:77
262msgid "Tap to return to call..."
265msgid "Tap to return to call..."
@@ -298,45 +301,45 @@ msgstr "Deblocare SIM"
298msgid "Roaming"
301msgid "Roaming"
299msgstr "Roaming"
302msgstr "Roaming"
300
303
301−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
302msgid "Enter your passphrase"
305msgid "Enter your passphrase"
303msgstr "Introduceți fraza dumneavoastră secretă"
306msgstr "Introduceți fraza dumneavoastră secretă"
304
307
305−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
306msgid "Sorry, incorrect passphrase"
309msgid "Sorry, incorrect passphrase"
307−msgstr ""
310+msgstr "Frază secretă incorectă"
308
311
309#: qml/Shell.qml:282
312#: qml/Shell.qml:282
310msgid "Enter your passcode"
313msgid "Enter your passcode"
311−msgstr ""
314+msgstr "Introduceți parola"
312
315
313#: qml/Shell.qml:283
316#: qml/Shell.qml:283
314msgid "Sorry, incorrect passcode"
317msgid "Sorry, incorrect passcode"
315−msgstr ""
318+msgstr "Parolă incorectă"
316
319
317−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
318#, qt-format
321#, qt-format
319msgid "Enter your %1"
322msgid "Enter your %1"
320msgstr "Introduceți %1"
323msgstr "Introduceți %1"
321
324
322−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
323#, qt-format
326#, qt-format
324msgid "Sorry, incorrect %1"
327msgid "Sorry, incorrect %1"
325−msgstr ""
328+msgstr "%1 incorectă"
326
329
327−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
328msgid "Sorry, incorrect passphrase."
331msgid "Sorry, incorrect passphrase."
329msgstr "Frază parolă greșită"
332msgstr "Frază parolă greșită"
330
333
331−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
332msgid "Sorry, incorrect passcode."
335msgid "Sorry, incorrect passcode."
333msgstr "Parolă greșită"
336msgstr "Parolă greșită"
334
337
335−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
336msgid "This will be your last attempt."
339msgid "This will be your last attempt."
337msgstr "Aceasta va fi ultima încercare"
340msgstr "Aceasta va fi ultima încercare"
338
341
339−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
340msgid ""
343msgid ""
341"If passphrase is entered incorrectly, your phone will conduct a factory "
344"If passphrase is entered incorrectly, your phone will conduct a factory "
342"reset and all personal data will be deleted."
345"reset and all personal data will be deleted."
@@ -345,7 +348,7 @@ msgstr ""
345"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
348"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
346"șterse."
349"șterse."
347
350
348−#: qml/Shell.qml:315
351+#: qml/Shell.qml:328
349msgid ""
352msgid ""
350"If passcode is entered incorrectly, your phone will conduct a factory reset "
353"If passcode is entered incorrectly, your phone will conduct a factory reset "
351"and all personal data will be deleted."
354"and all personal data will be deleted."
@@ -353,9 +356,3 @@ msgstr ""
353"Dacă parola este introdusă greșit, telefonul va iniția o resetare la "
356"Dacă parola este introdusă greșit, telefonul va iniția o resetare la "
354"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
357"configurările inițiale, ale fabricantului, iar toate datele personale vor fi "
355"șterse."
358"ș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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Jay ZDLin <Unknown>\n"
12"Last-Translator: Jay ZDLin <Unknown>\n"
13"Language-Team: Russian <ru@li.org>\n"
13"Language-Team: Russian <ru@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Пароль: "
22msgstr "Пароль: "
23
23
@@ -32,53 +32,53 @@ msgstr "Изъять ярлык"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Завершение сеанса"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Завершить сеанс?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Нет"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Да"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Выключение"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Выключить?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Перезагрузка"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Перезагрузить систему?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Питание"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75−msgstr ""
75+msgstr "Отключить питание?"
76
76
77−#: qml/Components/Dialogs.qml:144
77+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
78msgid "Power off"
79msgstr "Отключить"
79msgstr "Отключить"
80
80
81−#: qml/Components/Dialogs.qml:162
81+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
82msgid "Cancel"
83msgstr "Отменить"
83msgstr "Отменить"
84
84
@@ -168,21 +168,22 @@ msgstr "Вкратце"
168msgid "See all"
168msgid "See all"
169msgstr "Показать всё"
169msgstr "Показать всё"
170
170
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
172msgid "Search"
173msgid "Search"
173msgstr "Поиск"
174msgstr "Поиск"
174
175
175#: qml/Dash/PageHeader.qml:270
176#: qml/Dash/PageHeader.qml:270
176msgid "Settings"
177msgid "Settings"
177−msgstr ""
178+msgstr "Настройки"
178
179
179#: qml/Dash/PageHeader.qml:279
180#: qml/Dash/PageHeader.qml:279
180msgid "Remove from Favorites"
181msgid "Remove from Favorites"
181−msgstr ""
182+msgstr "Удалить из избранного"
182
183
183#: qml/Dash/PageHeader.qml:279
184#: qml/Dash/PageHeader.qml:279
184msgid "Add to Favorites"
185msgid "Add to Favorites"
185−msgstr ""
186+msgstr "Добавить в избранное"
186
187
187#: qml/Dash/Previews/PreviewActionCombo.qml:34
188#: qml/Dash/Previews/PreviewActionCombo.qml:34
188msgid "More..."
189msgid "More..."
@@ -208,11 +209,11 @@ msgstr "Отправить"
208msgid "Manage Dash"
209msgid "Manage Dash"
209msgstr ""
210msgstr ""
210
211
211−#: qml/Dash/ScopesOverview.qml:408
212+#: qml/Dash/ScopesOverview.qml:417
212msgid "Done"
213msgid "Done"
213msgstr "Готово"
214msgstr "Готово"
214
215
215−#: qml/Dash/ScopesOverview.qml:434
216+#: qml/Dash/ScopesOverview.qml:443
216msgid "Store"
217msgid "Store"
217msgstr ""
218msgstr ""
218
219
@@ -228,7 +229,7 @@ msgstr "Все"
228msgid "Swipe to unlock"
229msgid "Swipe to unlock"
229msgstr "Смахните, чтобы разблокировать"
230msgstr "Смахните, чтобы разблокировать"
230
231
231−#: qml/Hud/HudParametrizedActionsPage.qml:132
232+#: qml/Hud/HudParametrizedActionsPage.qml:139
232msgid "Confirm"
233msgid "Confirm"
233msgstr "Подтвердить"
234msgstr "Подтвердить"
234
235
@@ -256,7 +257,7 @@ msgstr "Показать пароль"
256msgid "Enter SIM PIN"
257msgid "Enter SIM PIN"
257msgstr "Введите ПИН-код SIM-карты"
258msgstr "Введите ПИН-код SIM-карты"
258
259
259−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
260+#: qml/Notifications/NotificationMenuItemFactory.qml:121
260msgid "Sorry, incorrect PIN"
261msgid "Sorry, incorrect PIN"
261msgstr "Введён неверный ПИН-код"
262msgstr "Введён неверный ПИН-код"
262
263
@@ -300,45 +301,45 @@ msgstr "Разблокировать SIM-карту"
300msgid "Roaming"
301msgid "Roaming"
301msgstr "Роуминг"
302msgstr "Роуминг"
302
303
303−#: qml/Shell.qml:266
304+#: qml/Shell.qml:279
304msgid "Enter your passphrase"
305msgid "Enter your passphrase"
305msgstr "Введите кодовую фразу"
306msgstr "Введите кодовую фразу"
306
307
307−#: qml/Shell.qml:267
308+#: qml/Shell.qml:280
308msgid "Sorry, incorrect passphrase"
309msgid "Sorry, incorrect passphrase"
309msgstr "Введена неверная кодовая фраза"
310msgstr "Введена неверная кодовая фраза"
310
311
311#: qml/Shell.qml:282
312#: qml/Shell.qml:282
312msgid "Enter your passcode"
313msgid "Enter your passcode"
313−msgstr ""
314+msgstr "Введите секретный код"
314
315
315#: qml/Shell.qml:283
316#: qml/Shell.qml:283
316msgid "Sorry, incorrect passcode"
317msgid "Sorry, incorrect passcode"
317−msgstr ""
318+msgstr "Секретный код введён неверно"
318
319
319−#: qml/Shell.qml:273
320+#: qml/Shell.qml:286
320#, qt-format
321#, qt-format
321msgid "Enter your %1"
322msgid "Enter your %1"
322msgstr "Введите %1"
323msgstr "Введите %1"
323
324
324−#: qml/Shell.qml:274
325+#: qml/Shell.qml:287
325#, qt-format
326#, qt-format
326msgid "Sorry, incorrect %1"
327msgid "Sorry, incorrect %1"
327msgstr "Некорректный ввод %1"
328msgstr "Некорректный ввод %1"
328
329
329−#: qml/Shell.qml:310
330+#: qml/Shell.qml:323
330msgid "Sorry, incorrect passphrase."
331msgid "Sorry, incorrect passphrase."
331msgstr "Неверная ключевая фраза."
332msgstr "Неверная ключевая фраза."
332
333
333−#: qml/Shell.qml:311
334+#: qml/Shell.qml:324
334msgid "Sorry, incorrect passcode."
335msgid "Sorry, incorrect passcode."
335msgstr "Неверный секретный код."
336msgstr "Неверный секретный код."
336
337
337−#: qml/Shell.qml:312
338+#: qml/Shell.qml:325
338msgid "This will be your last attempt."
339msgid "This will be your last attempt."
339msgstr "Осталась последняя попытка."
340msgstr "Осталась последняя попытка."
340
341
341−#: qml/Shell.qml:314
342+#: qml/Shell.qml:327
342msgid ""
343msgid ""
343"If passphrase is entered incorrectly, your phone will conduct a factory "
344"If passphrase is entered incorrectly, your phone will conduct a factory "
344"reset and all personal data will be deleted."
345"reset and all personal data will be deleted."
@@ -346,19 +347,10 @@ msgstr ""
346"Если ключевая фраза будет введена неверно, то телефон вернётся к заводским "
347"Если ключевая фраза будет введена неверно, то телефон вернётся к заводским "
347"настройкам, а все личные данные будут удалены."
348"настройкам, а все личные данные будут удалены."
348
349
349−#: qml/Shell.qml:315
350+#: qml/Shell.qml:328
350msgid ""
351msgid ""
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"If passcode is entered incorrectly, your phone will conduct a factory reset "
352"and all personal data will be deleted."
353"and all personal data will be deleted."
353msgstr ""
354msgstr ""
354"Если секретный код будет введен неверно, то телефон вернётся к заводским "
355"Если секретный код будет введен неверно, то телефон вернётся к заводским "
355"настройкам, а все личные данные будут удалены."
356"настройкам, а все личные данные будут удалены."
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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"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"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
12"Last-Translator: Damir Jerovšek <Unknown>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
13"Language-Team: Slovenian <sl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-30 07:46+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22msgstr "Geslo: "
22msgstr "Geslo: "
23
23
@@ -32,53 +32,55 @@ msgstr "Odpni bližnjico"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Odjava"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Ali ste prepričani, da se želite odjaviti?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Ne"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Da"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Izklop"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Ali ste prepričani, da želite izklopiti?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Ponovni zagon"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Ali ste prepričani, da želite ponovno zagnati?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Izključitev"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Ali ste prepričani, da želite\n"
77+"izključiti?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79msgstr "Izklopi"
81msgstr "Izklopi"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83msgstr "Prekliči"
85msgstr "Prekliči"
84
86
@@ -165,21 +167,22 @@ msgstr "Pokaži manj"
165msgid "See all"
167msgid "See all"
166msgstr "Ogled vsega"
168msgstr "Ogled vsega"
167
169
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
169msgid "Search"
172msgid "Search"
170msgstr "Iskanje"
173msgstr "Iskanje"
171
174
172#: qml/Dash/PageHeader.qml:270
175#: qml/Dash/PageHeader.qml:270
173msgid "Settings"
176msgid "Settings"
174−msgstr ""
177+msgstr "Nastavitve"
175
178
176#: qml/Dash/PageHeader.qml:279
179#: qml/Dash/PageHeader.qml:279
177msgid "Remove from Favorites"
180msgid "Remove from Favorites"
178−msgstr ""
181+msgstr "Odstrani iz priljubljenih"
179
182
180#: qml/Dash/PageHeader.qml:279
183#: qml/Dash/PageHeader.qml:279
181msgid "Add to Favorites"
184msgid "Add to Favorites"
182−msgstr ""
185+msgstr "Dodaj med priljubljene"
183
186
184#: qml/Dash/Previews/PreviewActionCombo.qml:34
187#: qml/Dash/Previews/PreviewActionCombo.qml:34
185msgid "More..."
188msgid "More..."
@@ -205,11 +208,11 @@ msgstr "Pošlji"
205msgid "Manage Dash"
208msgid "Manage Dash"
206msgstr "Upravljaj s pregledno ploščo"
209msgstr "Upravljaj s pregledno ploščo"
207
210
208−#: qml/Dash/ScopesOverview.qml:408
211+#: qml/Dash/ScopesOverview.qml:417
209msgid "Done"
212msgid "Done"
210msgstr "Končano"
213msgstr "Končano"
211
214
212−#: qml/Dash/ScopesOverview.qml:434
215+#: qml/Dash/ScopesOverview.qml:443
213msgid "Store"
216msgid "Store"
214msgstr "Trgovina"
217msgstr "Trgovina"
215
218
@@ -225,7 +228,7 @@ msgstr "Vse"
225msgid "Swipe to unlock"
228msgid "Swipe to unlock"
226msgstr "Podrsajte za odklenitev"
229msgstr "Podrsajte za odklenitev"
227
230
228−#: qml/Hud/HudParametrizedActionsPage.qml:132
231+#: qml/Hud/HudParametrizedActionsPage.qml:139
229msgid "Confirm"
232msgid "Confirm"
230msgstr "Potrdi"
233msgstr "Potrdi"
231
234
@@ -253,7 +256,7 @@ msgstr "Pokaži geslo"
253msgid "Enter SIM PIN"
256msgid "Enter SIM PIN"
254msgstr "Vnesite PIN kartice SIM"
257msgstr "Vnesite PIN kartice SIM"
255
258
256−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
259+#: qml/Notifications/NotificationMenuItemFactory.qml:121
257msgid "Sorry, incorrect PIN"
260msgid "Sorry, incorrect PIN"
258msgstr "Oprostite, napačen PIN"
261msgstr "Oprostite, napačen PIN"
259
262
@@ -297,45 +300,45 @@ msgstr "Odkleni SIM"
297msgid "Roaming"
300msgid "Roaming"
298msgstr "Gostovanje"
301msgstr "Gostovanje"
299
302
300−#: qml/Shell.qml:266
303+#: qml/Shell.qml:279
301msgid "Enter your passphrase"
304msgid "Enter your passphrase"
302msgstr "Vnesite svoje šifrirno reklo"
305msgstr "Vnesite svoje šifrirno reklo"
303
306
304−#: qml/Shell.qml:267
307+#: qml/Shell.qml:280
305msgid "Sorry, incorrect passphrase"
308msgid "Sorry, incorrect passphrase"
306msgstr "Oprostite, napačno šifrirno reklo"
309msgstr "Oprostite, napačno šifrirno reklo"
307
310
308#: qml/Shell.qml:282
311#: qml/Shell.qml:282
309msgid "Enter your passcode"
312msgid "Enter your passcode"
310−msgstr ""
313+msgstr "Vnesite svoje geslo"
311
314
312#: qml/Shell.qml:283
315#: qml/Shell.qml:283
313msgid "Sorry, incorrect passcode"
316msgid "Sorry, incorrect passcode"
314−msgstr ""
317+msgstr "Nepravilno geslo"
315
318
316−#: qml/Shell.qml:273
319+#: qml/Shell.qml:286
317#, qt-format
320#, qt-format
318msgid "Enter your %1"
321msgid "Enter your %1"
319msgstr "Vnesite vaš %1"
322msgstr "Vnesite vaš %1"
320
323
321−#: qml/Shell.qml:274
324+#: qml/Shell.qml:287
322#, qt-format
325#, qt-format
323msgid "Sorry, incorrect %1"
326msgid "Sorry, incorrect %1"
324msgstr "Oprostite, napačen %1"
327msgstr "Oprostite, napačen %1"
325
328
326−#: qml/Shell.qml:310
329+#: qml/Shell.qml:323
327msgid "Sorry, incorrect passphrase."
330msgid "Sorry, incorrect passphrase."
328msgstr "Nepravilno geslo."
331msgstr "Nepravilno geslo."
329
332
330−#: qml/Shell.qml:311
333+#: qml/Shell.qml:324
331msgid "Sorry, incorrect passcode."
334msgid "Sorry, incorrect passcode."
332msgstr "Nepravilno geslo."
335msgstr "Nepravilno geslo."
333
336
334−#: qml/Shell.qml:312
337+#: qml/Shell.qml:325
335msgid "This will be your last attempt."
338msgid "This will be your last attempt."
336msgstr "To je vaš zadnji poskus"
339msgstr "To je vaš zadnji poskus"
337
340
338−#: qml/Shell.qml:314
341+#: qml/Shell.qml:327
339msgid ""
342msgid ""
340"If passphrase is entered incorrectly, your phone will conduct a factory "
343"If passphrase is entered incorrectly, your phone will conduct a factory "
341"reset and all personal data will be deleted."
344"reset and all personal data will be deleted."
@@ -343,19 +346,10 @@ msgstr ""
343"Če je vneseno nepravilno šifrirno reklo, bo telefon ponastavljen na "
346"Če je vneseno nepravilno šifrirno reklo, bo telefon ponastavljen na "
344"tovarniške nastavitve ter vsi osebni podatki bodo izbrisani."
347"tovarniške nastavitve ter vsi osebni podatki bodo izbrisani."
345
348
346−#: qml/Shell.qml:315
349+#: qml/Shell.qml:328
347msgid ""
350msgid ""
348"If passcode is entered incorrectly, your phone will conduct a factory reset "
351"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"and all personal data will be deleted."
352"and all personal data will be deleted."
350msgstr ""
353msgstr ""
351"Če je vneseno nepravilno geslo, bo telefon ponastavljen na tovarniške "
354"Če je vneseno nepravilno geslo, bo telefon ponastavljen na tovarniške "
352"nastavitve ter vsi osebni podatki bodo izbrisani."
355"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 ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
10"POT-Creation-Date: 2014-08-26 18:24+0200\n"
11−"PO-Revision-Date: 2013-06-27 09:19+0000\n"
11+"PO-Revision-Date: 2014-08-30 11:46+0000\n"
12−"Last-Translator: Michał Sawicz <michal.sawicz@canonical.com>\n"
12+"Last-Translator: Данило Шеган <Unknown>\n"
13"Language-Team: Serbian <sr@li.org>\n"
13"Language-Team: Serbian <sr@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17−"X-Launchpad-Export-Date: 2014-08-28 06:30+0000\n"
17+"X-Launchpad-Export-Date: 2014-08-31 07:30+0000\n"
18−"X-Generator: Launchpad (build 17174)\n"
18+"X-Generator: Launchpad (build 17176)\n"
19
19
20−#: plugins/LightDM/Greeter.cpp:129
20+#: plugins/LightDM/Greeter.cpp:130
21msgid "Password: "
21msgid "Password: "
22−msgstr ""
22+msgstr "Лозинка: "
23
23
24#: plugins/Unity/Launcher/launcheritem.cpp:43
24#: plugins/Unity/Launcher/launcheritem.cpp:43
25#: plugins/Unity/Launcher/launcheritem.cpp:73
25#: plugins/Unity/Launcher/launcheritem.cpp:73
26msgid "Pin shortcut"
26msgid "Pin shortcut"
27−msgstr ""
27+msgstr "Прикачи пречицу"
28
28
29#: plugins/Unity/Launcher/launcheritem.cpp:73
29#: plugins/Unity/Launcher/launcheritem.cpp:73
30msgid "Unpin shortcut"
30msgid "Unpin shortcut"
31−msgstr ""
31+msgstr "Откачи пречицу"
32
32
33#: qml/Components/Dialogs.qml:70
33#: qml/Components/Dialogs.qml:70
34msgid "Log out"
34msgid "Log out"
35−msgstr ""
35+msgstr "Одјави се"
36
36
37#: qml/Components/Dialogs.qml:71
37#: qml/Components/Dialogs.qml:71
38msgid "Are you sure you want to log out?"
38msgid "Are you sure you want to log out?"
39−msgstr ""
39+msgstr "Сигурно желите да се одјавите?"
40
40
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
41#: qml/Components/Dialogs.qml:73 qml/Components/Dialogs.qml:97
42#: qml/Components/Dialogs.qml:122
42#: qml/Components/Dialogs.qml:122
43msgid "No"
43msgid "No"
44−msgstr ""
44+msgstr "Не"
45
45
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
46#: qml/Components/Dialogs.qml:80 qml/Components/Dialogs.qml:104
47#: qml/Components/Dialogs.qml:129
47#: qml/Components/Dialogs.qml:129
48msgid "Yes"
48msgid "Yes"
49−msgstr ""
49+msgstr "Да"
50
50
51#: qml/Components/Dialogs.qml:94
51#: qml/Components/Dialogs.qml:94
52msgid "Shut down"
52msgid "Shut down"
53−msgstr ""
53+msgstr "Угаси"
54
54
55#: qml/Components/Dialogs.qml:95
55#: qml/Components/Dialogs.qml:95
56msgid "Are you sure you want to shut down?"
56msgid "Are you sure you want to shut down?"
57−msgstr ""
57+msgstr "Сигурно желите да угасите?"
58
58
59#: qml/Components/Dialogs.qml:119
59#: qml/Components/Dialogs.qml:119
60msgid "Reboot"
60msgid "Reboot"
61−msgstr ""
61+msgstr "Ресетуј"
62
62
63#: qml/Components/Dialogs.qml:120
63#: qml/Components/Dialogs.qml:120
64msgid "Are you sure you want to reboot?"
64msgid "Are you sure you want to reboot?"
65−msgstr ""
65+msgstr "Сигурно желите да ресетујете?"
66
66
67#: qml/Components/Dialogs.qml:144
67#: qml/Components/Dialogs.qml:144
68msgid "Power"
68msgid "Power"
69−msgstr ""
69+msgstr "Напајање"
70
70
71#: qml/Components/Dialogs.qml:145
71#: qml/Components/Dialogs.qml:145
72msgid ""
72msgid ""
73"Are you sure you would like\n"
73"Are you sure you would like\n"
74"to power off?"
74"to power off?"
75msgstr ""
75msgstr ""
76+"Сигурно желите да\n"
77+"искључите?"
76
78
77−#: qml/Components/Dialogs.qml:144
79+#: qml/Components/Dialogs.qml:147
78msgid "Power off"
80msgid "Power off"
79−msgstr ""
81+msgstr "Искључи"
80
82
81−#: qml/Components/Dialogs.qml:162
83+#: qml/Components/Dialogs.qml:157
82msgid "Cancel"
84msgid "Cancel"
83−msgstr ""
85+msgstr "Откажи"
84
86
85#: qml/Components/EdgeDemoOverlay.qml:151
87#: qml/Components/EdgeDemoOverlay.qml:151
86msgid "Skip intro"
88msgid "Skip intro"
87−msgstr ""
89+msgstr "Прескочи увод"
88
90
89#: qml/Components/EdgeDemo.qml:112
91#: qml/Components/EdgeDemo.qml:112
90msgid "Right edge"
92msgid "Right edge"
91−msgstr ""
93+msgstr "Десна ивица"
92
94
93#: qml/Components/EdgeDemo.qml:113
95#: qml/Components/EdgeDemo.qml:113
94msgid "Try swiping from the right edge to unlock the phone"
96msgid "Try swiping from the right edge to unlock the phone"
95−msgstr ""
97+msgstr "Превуците прстом од десне ивице да откључате телефон"
96
98
97#: qml/Components/EdgeDemo.qml:144
99#: qml/Components/EdgeDemo.qml:144
98msgid "Top edge"
100msgid "Top edge"
99−msgstr ""
101+msgstr "Горња ивица"
100
102
101#: qml/Components/EdgeDemo.qml:145
103#: qml/Components/EdgeDemo.qml:145
102msgid "Try swiping from the top edge to access the indicators"
104msgid "Try swiping from the top edge to access the indicators"
103−msgstr ""
105+msgstr "Превуците прстом од горње ивице да би приступили показатељима"
104
106
105#: qml/Components/EdgeDemo.qml:170
107#: qml/Components/EdgeDemo.qml:170
106msgid "Close"
108msgid "Close"
107−msgstr ""
109+msgstr "Затвори"
108
110
109#: qml/Components/EdgeDemo.qml:171
111#: qml/Components/EdgeDemo.qml:171
110msgid "Swipe up again to close the settings screen"
112msgid "Swipe up again to close the settings screen"
111−msgstr ""
113+msgstr "Превуците поново на горе да би затворили подешавања"
112
114
113#: qml/Components/EdgeDemo.qml:198
115#: qml/Components/EdgeDemo.qml:198
114msgid "Left edge"
116msgid "Left edge"
115−msgstr ""
117+msgstr "Лева ивица"
116
118
117#: qml/Components/EdgeDemo.qml:199
119#: qml/Components/EdgeDemo.qml:199
118msgid "Swipe from the left to reveal the launcher for quick access to apps"
120msgid "Swipe from the left to reveal the launcher for quick access to apps"
119−msgstr ""
121+msgstr "Превуците с лева да би открили покретач за брз приступ програмима"
120
122
121#: qml/Components/EdgeDemo.qml:226
123#: qml/Components/EdgeDemo.qml:226
122msgid "Well done"
124msgid "Well done"
123−msgstr ""
125+msgstr "Одлично"
124
126
125#: qml/Components/EdgeDemo.qml:227
127#: qml/Components/EdgeDemo.qml:227
126msgid ""
128msgid ""
127"You have now mastered the edge gestures and can start using the "
129"You have now mastered the edge gestures and can start using the "
128"phone<br><br>Tap on the screen to start"
130"phone<br><br>Tap on the screen to start"
129msgstr ""
131msgstr ""
132+"Сада сте савладали превлачења са ивица и можете да користите "
133+"телефон<br><br>Тапните на екран да почнете"
130
134
131#: qml/Components/Lockscreen.qml:167
135#: qml/Components/Lockscreen.qml:167
132msgid "Please wait"
136msgid "Please wait"
133−msgstr ""
137+msgstr "Сачекајте"
134
138
135#: qml/Components/Lockscreen.qml:172
139#: qml/Components/Lockscreen.qml:172
136msgid "Too many incorrect attempts"
140msgid "Too many incorrect attempts"
137−msgstr ""
141+msgstr "Превише нетачних покушаја"
138
142
139#: qml/Components/Lockscreen.qml:206
143#: qml/Components/Lockscreen.qml:206
140msgid "Emergency Call"
144msgid "Emergency Call"
141−msgstr ""
145+msgstr "Хитан позив"
142
146
143#: qml/Components/Lockscreen.qml:226
147#: qml/Components/Lockscreen.qml:226
144msgid "OK"
148msgid "OK"
145−msgstr ""
149+msgstr "У реду"
146
150
147#: qml/Components/PassphraseLockscreen.qml:61
151#: qml/Components/PassphraseLockscreen.qml:61
148#, qt-format
152#, qt-format
149msgid "Hello %1"
153msgid "Hello %1"
150−msgstr ""
154+msgstr "Здраво %1"
151
155
152#: qml/Components/PassphraseLockscreen.qml:61
156#: qml/Components/PassphraseLockscreen.qml:61
153msgid "Hello"
157msgid "Hello"
154−msgstr ""
158+msgstr "Здраво"
155
159
156#: qml/Dash/GenericScopeView.qml:361
160#: qml/Dash/GenericScopeView.qml:361
157msgid "See less"
161msgid "See less"
158−msgstr ""
162+msgstr "Сажетије"
159
163
160#: qml/Dash/GenericScopeView.qml:361
164#: qml/Dash/GenericScopeView.qml:361
161msgid "See all"
165msgid "See all"
162−msgstr ""
166+msgstr "Опширније"
163
167
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
165msgid "Search"
170msgid "Search"
166msgstr "Претрага"
171msgstr "Претрага"
167
172
168#: qml/Dash/PageHeader.qml:270
173#: qml/Dash/PageHeader.qml:270
169msgid "Settings"
174msgid "Settings"
170−msgstr ""
175+msgstr "Подешавања"
171
176
172#: qml/Dash/PageHeader.qml:279
177#: qml/Dash/PageHeader.qml:279
173msgid "Remove from Favorites"
178msgid "Remove from Favorites"
174−msgstr ""
179+msgstr "Уклони из омиљених"
175
180
176#: qml/Dash/PageHeader.qml:279
181#: qml/Dash/PageHeader.qml:279
177msgid "Add to Favorites"
182msgid "Add to Favorites"
178−msgstr ""
183+msgstr "Додај међу омиљене"
179
184
180#: qml/Dash/Previews/PreviewActionCombo.qml:34
185#: qml/Dash/Previews/PreviewActionCombo.qml:34
181msgid "More..."
186msgid "More..."
182−msgstr ""
187+msgstr "Више..."
183
188
184#: qml/Dash/Previews/PreviewActionCombo.qml:34
189#: qml/Dash/Previews/PreviewActionCombo.qml:34
185msgid "Less..."
190msgid "Less..."
186−msgstr ""
191+msgstr "Мање..."
187
192
188#: qml/Dash/Previews/PreviewRatingInput.qml:81
193#: qml/Dash/Previews/PreviewRatingInput.qml:81
189msgid "Rate this"
194msgid "Rate this"
190−msgstr ""
195+msgstr "Оцени"
191
196
192#: qml/Dash/Previews/PreviewRatingInput.qml:126
197#: qml/Dash/Previews/PreviewRatingInput.qml:126
193msgid "Add a review"
198msgid "Add a review"
194−msgstr ""
199+msgstr "Напиши оцену"
195
200
196#: qml/Dash/Previews/PreviewRatingInput.qml:166
201#: qml/Dash/Previews/PreviewRatingInput.qml:166
197msgid "Send"
202msgid "Send"
198−msgstr ""
203+msgstr "Пошаљи"
199
204
200#: qml/Dash/ScopesOverview.qml:201
205#: qml/Dash/ScopesOverview.qml:201
201msgid "Manage Dash"
206msgid "Manage Dash"
202−msgstr ""
207+msgstr "Управљај Полицом"
203
208
204−#: qml/Dash/ScopesOverview.qml:408
209+#: qml/Dash/ScopesOverview.qml:417
205msgid "Done"
210msgid "Done"
206−msgstr ""
211+msgstr "Готово"
207
212
208−#: qml/Dash/ScopesOverview.qml:434
213+#: qml/Dash/ScopesOverview.qml:443
209msgid "Store"
214msgid "Store"
210−msgstr ""
215+msgstr "Продавница"
211
216
212#: qml/Dash/ScopesOverviewTab.qml:36
217#: qml/Dash/ScopesOverviewTab.qml:36
213msgid "Favorites"
218msgid "Favorites"
214−msgstr ""
219+msgstr "Омиљени"
215
220
216#: qml/Dash/ScopesOverviewTab.qml:54
221#: qml/Dash/ScopesOverviewTab.qml:54
217msgid "All"
222msgid "All"
218−msgstr ""
223+msgstr "Сви"
219
224
220#: qml/Greeter/Greeter.qml:157
225#: qml/Greeter/Greeter.qml:157
221msgid "Swipe to unlock"
226msgid "Swipe to unlock"
222−msgstr ""
227+msgstr "Повуците да откључате"
223
228
224−#: qml/Hud/HudParametrizedActionsPage.qml:132
229+#: qml/Hud/HudParametrizedActionsPage.qml:139
225msgid "Confirm"
230msgid "Confirm"
226msgstr "Потврди"
231msgstr "Потврди"
227
232
@@ -243,102 +248,106 @@ msgstr "Говор..."
243
248
244#: qml/Notifications/NotificationMenuItemFactory.qml:105
249#: qml/Notifications/NotificationMenuItemFactory.qml:105
245msgid "Show password"
250msgid "Show password"
246−msgstr ""
251+msgstr "Прикажи лозинку"
247
252
248#: qml/Notifications/NotificationMenuItemFactory.qml:120
253#: qml/Notifications/NotificationMenuItemFactory.qml:120
249msgid "Enter SIM PIN"
254msgid "Enter SIM PIN"
250−msgstr ""
255+msgstr "Унеси пин СИМ картице"
251
256
252−#: qml/Notifications/NotificationMenuItemFactory.qml:121 qml/Shell.qml:270
257+#: qml/Notifications/NotificationMenuItemFactory.qml:121
253msgid "Sorry, incorrect PIN"
258msgid "Sorry, incorrect PIN"
254−msgstr ""
259+msgstr "Жао ми је, погрешан ПИН код"
255
260
256#: qml/Panel/ActiveCallHint.qml:77
261#: qml/Panel/ActiveCallHint.qml:77
257msgid "Tap to return to call..."
262msgid "Tap to return to call..."
258−msgstr ""
263+msgstr "Тапните да одговорите на позив"
259
264
260#: qml/Panel/ActiveCallHint.qml:90
265#: qml/Panel/ActiveCallHint.qml:90
261msgid "Conference"
266msgid "Conference"
262−msgstr ""
267+msgstr "Конференција"
263
268
264#: qml/Panel/Indicators/MenuItemFactory.qml:651
269#: qml/Panel/Indicators/MenuItemFactory.qml:651
265msgid "In queue…"
270msgid "In queue…"
266−msgstr ""
271+msgstr "У реду..."
267
272
268#: qml/Panel/Indicators/MenuItemFactory.qml:655
273#: qml/Panel/Indicators/MenuItemFactory.qml:655
269msgid "Downloading"
274msgid "Downloading"
270−msgstr ""
275+msgstr "Преузимам"
271
276
272#: qml/Panel/Indicators/MenuItemFactory.qml:657
277#: qml/Panel/Indicators/MenuItemFactory.qml:657
273msgid "Paused, tap to resume"
278msgid "Paused, tap to resume"
274−msgstr ""
279+msgstr "Заустављено, тапните да наставите"
275
280
276#: qml/Panel/Indicators/MenuItemFactory.qml:659
281#: qml/Panel/Indicators/MenuItemFactory.qml:659
277msgid "Canceled"
282msgid "Canceled"
278−msgstr ""
283+msgstr "Отказано"
279
284
280#: qml/Panel/Indicators/MenuItemFactory.qml:661
285#: qml/Panel/Indicators/MenuItemFactory.qml:661
281msgid "Finished"
286msgid "Finished"
282−msgstr ""
287+msgstr "Завршено"
283
288
284#: qml/Panel/Indicators/MenuItemFactory.qml:663
289#: qml/Panel/Indicators/MenuItemFactory.qml:663
285msgid "Failed, tap to retry"
290msgid "Failed, tap to retry"
286−msgstr ""
291+msgstr "Неуспешно, тапните да покушате поново"
287
292
288#: qml/Panel/Indicators/ModemInfoItem.qml:105
293#: qml/Panel/Indicators/ModemInfoItem.qml:105
289msgid "Unlock SIM"
294msgid "Unlock SIM"
290−msgstr ""
295+msgstr "Откључај СИМ картицу"
291
296
292#: qml/Panel/Indicators/RoamingIndication.qml:27
297#: qml/Panel/Indicators/RoamingIndication.qml:27
293msgid "Roaming"
298msgid "Roaming"
294−msgstr ""
299+msgstr "Роминг"
295
300
296−#: qml/Shell.qml:266
301+#: qml/Shell.qml:279
297msgid "Enter your passphrase"
302msgid "Enter your passphrase"
298−msgstr ""
303+msgstr "Унесите вашу лозинку"
299
304
300−#: qml/Shell.qml:267
305+#: qml/Shell.qml:280
301msgid "Sorry, incorrect passphrase"
306msgid "Sorry, incorrect passphrase"
302−msgstr ""
307+msgstr "Жао ми је, погрешна лозинка"
303
308
304#: qml/Shell.qml:282
309#: qml/Shell.qml:282
305msgid "Enter your passcode"
310msgid "Enter your passcode"
306−msgstr ""
311+msgstr "Унесите ваш код"
307
312
308#: qml/Shell.qml:283
313#: qml/Shell.qml:283
309msgid "Sorry, incorrect passcode"
314msgid "Sorry, incorrect passcode"
310−msgstr ""
315+msgstr "Жао ми је, погрешан код"
311
316
312−#: qml/Shell.qml:273
317+#: qml/Shell.qml:286
313#, qt-format
318#, qt-format
314msgid "Enter your %1"
319msgid "Enter your %1"
315−msgstr ""
320+msgstr "Унесите ваш %1"
316
321
317−#: qml/Shell.qml:274
322+#: qml/Shell.qml:287
318#, qt-format
323#, qt-format
319msgid "Sorry, incorrect %1"
324msgid "Sorry, incorrect %1"
320−msgstr ""
325+msgstr "Жао ми је, погрешан %1"
321
326
322−#: qml/Shell.qml:310
327+#: qml/Shell.qml:323
323msgid "Sorry, incorrect passphrase."
328msgid "Sorry, incorrect passphrase."
324−msgstr ""
329+msgstr "Жао ми је, погрешна лозинка."
325
330
326−#: qml/Shell.qml:311
331+#: qml/Shell.qml:324
327msgid "Sorry, incorrect passcode."
332msgid "Sorry, incorrect passcode."
328−msgstr ""
333+msgstr "Жао ми је, погрешан код."
329
334
330−#: qml/Shell.qml:312
335+#: qml/Shell.qml:325
331msgid "This will be your last attempt."
336msgid "This will be your last attempt."
332−msgstr ""
337+msgstr "Ово је ваш последњи покушај."
333
338
334−#: qml/Shell.qml:314
339+#: qml/Shell.qml:327
335msgid ""
340msgid ""
336"If passphrase is entered incorrectly, your phone will conduct a factory "
341"If passphrase is entered incorrectly, your phone will conduct a factory "
337"reset and all personal data will be deleted."
342"reset and all personal data will be deleted."
338msgstr ""
343msgstr ""
344+"Ако се унесе погрешна лозинка, ваш телефон ће се ресетовати и сви лични "
345+"подаци ће бити обрисани."
339
346
340−#: qml/Shell.qml:315
347+#: qml/Shell.qml:328
341msgid ""
348msgid ""
342"If passcode is entered incorrectly, your phone will conduct a factory reset "
349"If passcode is entered incorrectly, your phone will conduct a factory reset "
343"and all personal data will be deleted."
350"and all personal data will be deleted."
344msgstr ""
351msgstr ""
352+"Ако се унесе погрешан код, ваш телефон ће се ресетовати и сви лични подаци "
353+"ће бити обрисани."
qml/Shell.qml+12−3
@@ -233,6 +233,15 @@ Item {
233 }
233 }
234 }
234 }
235 }
235 }
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+ }
236
245
237 Lockscreen {
246 Lockscreen {
238 id: lockscreen
247 id: lockscreen
@@ -271,6 +280,7 @@ Item {
271 target: LightDM.Greeter
280 target: LightDM.Greeter
272
281
273 onShowGreeter: greeter.show()
282 onShowGreeter: greeter.show()
283+ onHideGreeter: greeter.login()
274
284
275 onShowPrompt: {
285 onShowPrompt: {
276 if (greeter.narrowMode) {
286 if (greeter.narrowMode) {
@@ -313,7 +323,6 @@ Item {
313 }
323 }
314
324
315 if (LightDM.Greeter.authenticated) {
325 if (LightDM.Greeter.authenticated) {
316− lockscreen.hide();
317 greeter.login();
326 greeter.login();
318 } else {
327 } else {
319 AccountsService.failedLogins++
328 AccountsService.failedLogins++
@@ -506,7 +515,7 @@ Item {
506 anchors.fill: parent //because this draws indicator menus
515 anchors.fill: parent //because this draws indicator menus
507 indicators {
516 indicators {
508 hides: [launcher]
517 hides: [launcher]
509− available: edgeDemo.panelEnabled && !shell.locked
518+ available: edgeDemo.panelEnabled && (!shell.locked || AccountsService.enableIndicatorsWhileLocked) && greeter.fakeActiveForApp === ""
510 contentEnabled: edgeDemo.panelContentEnabled
519 contentEnabled: edgeDemo.panelContentEnabled
511 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
520 width: parent.width > units.gu(60) ? units.gu(40) : parent.width
512 panelHeight: units.gu(3)
521 panelHeight: units.gu(3)
@@ -530,7 +539,7 @@ Item {
530 anchors.bottom: parent.bottom
539 anchors.bottom: parent.bottom
531 width: parent.width
540 width: parent.width
532 dragAreaWidth: shell.edgeSize
541 dragAreaWidth: shell.edgeSize
533− available: edgeDemo.launcherEnabled && !shell.locked
542+ available: edgeDemo.launcherEnabled && (!shell.locked || AccountsService.enableLauncherWhileLocked) && greeter.fakeActiveForApp === ""
534
543
535 onShowDashHome: showHome()
544 onShowDashHome: showHome()
536 onDash: showDash()
545 onDash: showDash()
qml/Stages/Animations/BaseSurfaceAnimation.qml → qml/Stages/Animations/BaseSessionAnimation.qmlrenamed+23−20
@@ -37,57 +37,60 @@ import QtQuick 2.0
37 */
37 */
38Item {
38Item {
39 id: base
39 id: base
40− property Item surface: null
40+ property var container
41+ objectName: "sessionAnimation"
41
42
42− // changes applied when state changes to "in"
43+ // changes applied when state changes to "from"
43− property list<QtObject> outChanges
44+ property list<QtObject> fromChanges
44− // transition animations when changing state to "in"
45+ // transition animations when changing state to "from"
45− property list<QtObject> outAnimations
46+ property list<QtObject> fromAnimations
46
47
47− // changes applied when state changes to "out"
48+ // changes applied when state changes to "to"
48− property list<QtObject> inChanges
49+ property list<QtObject> toChanges
49− // transition animations when changing state to "out"
50+ // transition animations when changing state to "to"
50− property list<QtObject> inAnimations
51+ property list<QtObject> toAnimations
51
52
52 function start() {
53 function start() {
53− // "prep" state forces outChanges without transition animations.
54+ // "prep" state forces toChanges without transition animations.
54 state = "prep"
55 state = "prep"
55− state = "in";
56+ state = "to";
56 }
57 }
57 function end() {
58 function end() {
58− state = "out";
59+ state = "from";
59 }
60 }
60
61
62+ signal completed()
63+
61 states: [
64 states: [
62 State {
65 State {
63 name: "baseAnimation"
66 name: "baseAnimation"
64− PropertyChanges { target: base.surface; anchors.fill: undefined }
67+ PropertyChanges { target: container; anchors.fill: undefined }
65 },
68 },
66
69
67 State {
70 State {
68 name: "prep"
71 name: "prep"
69 extend: "baseAnimation"
72 extend: "baseAnimation"
70− changes: outChanges
73+ changes: fromChanges
71 },
74 },
72 State {
75 State {
73− name: "out"
76+ name: "from"
74 extend: "prep"
77 extend: "prep"
75 },
78 },
76 State {
79 State {
77 name: "in"
80 name: "in"
78 extend: "baseAnimation"
81 extend: "baseAnimation"
79− changes: inChanges
82+ changes: toChanges
80 }
83 }
81 ]
84 ]
82
85
83 transitions: [
86 transitions: [
84 Transition {
87 Transition {
85− to: "out"
88+ to: "from"
86− animations: outAnimations
89+ animations: fromAnimations
87 },
90 },
88 Transition {
91 Transition {
89− to: "in"
92+ to: "to"
90− animations: inAnimations
93+ animations: toAnimations
91 }
94 }
92 ]
95 ]
93}
96}
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 @@
15 */
15 */
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18+import Ubuntu.Components 1.1
18
19
19−BaseSurfaceAnimation {
20+BaseSessionAnimation {
20 id: animation
21 id: animation
21
22
23+ fromChanges: [
24+ AnchorChanges {
25+ target: container;
22− outChanges: [ AnchorChanges { target: animation.surface; anchors.top: animation.parent.bottom } ]
26+ anchors.top: container.parent.bottom
23− outAnimations: [
27+ }
28+ ]
29+ fromAnimations: [
24 SequentialAnimation {
30 SequentialAnimation {
31+ // clip so we don't go out of parent's bounds during spread
25− PropertyAction { target: animation.parent; property: "clip"; value: true }
32+ PropertyAction { target: container.parent; property: "clip"; value: true }
26− AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
33+ AnchorAnimation { easing: UbuntuAnimation.StandardEasing; duration: UbuntuAnimation.BriskDuration }
27− PropertyAction { target: animation.surface; property: "visible"; value: !animation.parent.removing }
28− PropertyAction { target: animation.parent; property: "clip"; value: false }
34+ PropertyAction { target: container.parent; property: "clip"; value: false }
29− ScriptAction { script: { if (animation.parent.removing) animation.surface.release(); } }
35+ ScriptAction { script: { animation.completed(); } }
30 }
36 }
31 ]
37 ]
32
38
33− inChanges: [
39+ toChanges: [
34 AnchorChanges {
40 AnchorChanges {
35− target: animation.surface;
41+ target: container;
36− anchors.top: animation.parent.top
42+ anchors.top: container.parent.top
37− anchors.right: undefined
38− anchors.bottom: undefined
39− anchors.left: undefined
40− } ]
43+ }
41− inAnimations: [
44+ ]
45+ toAnimations: [
42 SequentialAnimation {
46 SequentialAnimation {
47+ // clip so we don't go out of parent's bounds during spread
43− PropertyAction { target: animation.parent; property: "clip"; value: true }
48+ PropertyAction { target: container.parent; property: "clip"; value: true }
44− AnchorAnimation { easing.type: Easing.InOutQuad; duration: 400 }
49+ AnchorAnimation { easing: UbuntuAnimation.StandardEasing; duration: UbuntuAnimation.BriskDuration }
45− PropertyAction { target: animation.parent; property: "clip"; value: false }
50+ PropertyAction { target: container.parent; property: "clip"; value: false }
46 }
51 }
47 ]
52 ]
48}
53}
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 {
23
23
24 // to be read from outside
24 // to be read from outside
25 readonly property bool fullscreen: application ? application.fullscreen : false
25 readonly property bool fullscreen: application ? application.fullscreen : false
26+ property alias interactive: sessionContainer.interactive
26
27
27 // to be set from outside
28 // to be set from outside
28− property bool interactive: true
29 property QtObject application
29 property QtObject application
30
30
31 QtObject {
31 QtObject {
@@ -35,16 +35,14 @@ Item {
35 // (in order to avoid breaking qml binding due to a javascript exception)
35 // (in order to avoid breaking qml binding due to a javascript exception)
36 readonly property string name: root.application ? root.application.name : ""
36 readonly property string name: root.application ? root.application.name : ""
37 readonly property url icon: root.application ? root.application.icon : ""
37 readonly property url icon: root.application ? root.application.icon : ""
38− readonly property Item surface: root.application ? root.application.surface : null
39 readonly property int applicationState: root.application ? root.application.state : -1
38 readonly property int applicationState: root.application ? root.application.state : -1
40− readonly property var promptSurfaces: root.application ? root.application.promptSurfaces : null
41
39
42 // Whether the Application had a surface before but lost it.
40 // Whether the Application had a surface before but lost it.
43− property bool hadSurface: false
41+ property bool hadSurface: sessionContainer.surfaceContainer.hadSurface
44
42
45 property bool needToTakeScreenshot:
43 property bool needToTakeScreenshot:
46− d.surface && d.surfaceInitialized && screenshotImage.status === Image.Null
44+ sessionContainer.surface && d.surfaceInitialized && screenshotImage.status === Image.Null
47− && d.applicationState === ApplicationInfo.Stopped
45+ && d.applicationState === ApplicationInfoInterface.Stopped
48 onNeedToTakeScreenshotChanged: {
46 onNeedToTakeScreenshotChanged: {
49 if (needToTakeScreenshot) {
47 if (needToTakeScreenshot) {
50 screenshotImage.take();
48 screenshotImage.take();
@@ -55,12 +53,12 @@ Item {
55 // might show the UI accommodating due to surface resizes on startup.
53 // might show the UI accommodating due to surface resizes on startup.
56 // Remove this when possible
54 // Remove this when possible
57 property bool surfaceInitialized: false
55 property bool surfaceInitialized: false
58− onSurfaceChanged: {
56+
57+ function forceSurfaceActiveFocusIfReady() {
59− if (surface) {
58+ if (sessionContainer.surface.focus &&
60− surfaceInitTimer.start();
59+ sessionContainer.surface.parent === sessionContainer.surfaceContainer &&
61− } else {
60+ sessionContainer.surface.enabled) {
62− hadSurface = true;
61+ sessionContainer.surface.forceActiveFocus();
63− surfaceInitialized = false;
64 }
62 }
65 }
63 }
66 }
64 }
@@ -68,40 +66,16 @@ Item {
68 Timer {
66 Timer {
69 id: surfaceInitTimer
67 id: surfaceInitTimer
70 interval: 100
68 interval: 100
71− onTriggered: { if (d.surface) {d.surfaceInitialized = true;} }
69+ onTriggered: { if (sessionContainer.surface) {d.surfaceInitialized = true;} }
72 }
70 }
73
71
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− }
86 Connections {
72 Connections {
87− target: d.surface
73+ target: sessionContainer.surface
88 // FIXME: I would rather not need to do this, but currently it doesn't get
74 // FIXME: I would rather not need to do this, but currently it doesn't get
89 // active focus without it and I don't know why.
75 // active focus without it and I don't know why.
90− onFocusChanged: forceSurfaceActiveFocusIfReady();
76+ onFocusChanged: d.forceSurfaceActiveFocusIfReady();
91− onParentChanged: forceSurfaceActiveFocusIfReady();
77+ onParentChanged: d.forceSurfaceActiveFocusIfReady();
92− onEnabledChanged: forceSurfaceActiveFocusIfReady();
78+ onEnabledChanged: d.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
105 }
79 }
106
80
107 Image {
81 Image {
@@ -126,25 +100,24 @@ Item {
126 id: splashLoader
100 id: splashLoader
127 visible: active
101 visible: active
128 active: false
102 active: false
129− anchors.fill: surfaceContainer
103+ anchors.fill: parent
130 sourceComponent: Component {
104 sourceComponent: Component {
131 Splash { name: d.name; image: d.icon }
105 Splash { name: d.name; image: d.icon }
132 }
106 }
133 }
107 }
134
108
135− Repeater {
109+ SessionContainer {
136− model: d.promptSurfaces
110+ id: sessionContainer
137−
111+ session: application ? application.session : null
138− delegate: SurfaceContainer {
139− anchors {
112+ anchors.fill: parent
140− fill: surfaceContainer
141− }
142−
143− surface: modelData
144
113
145− Component.onCompleted: {
114+ onSurfaceChanged: {
146− animateIn();
115+ if (sessionContainer.surface) {
116+ surfaceInitTimer.start();
117+ } else {
118+ d.surfaceInitialized = false;
147 }
119 }
120+ d.forceSurfaceActiveFocusIfReady();
148 }
121 }
149 }
122 }
150
123
@@ -154,23 +127,23 @@ Item {
154 State {
127 State {
155 name: "void"
128 name: "void"
156 when:
129 when:
157− d.hadSurface && (!d.surface || !d.surfaceInitialized)
130+ d.hadSurface && (!sessionContainer.surface || !d.surfaceInitialized)
158 &&
131 &&
159 screenshotImage.status !== Image.Ready
132 screenshotImage.status !== Image.Ready
160 },
133 },
161 State {
134 State {
162 name: "splashScreen"
135 name: "splashScreen"
163 when:
136 when:
164− !d.hadSurface && (!d.surface || !d.surfaceInitialized)
137+ !d.hadSurface && (!sessionContainer.surface || !d.surfaceInitialized)
165 &&
138 &&
166 screenshotImage.status !== Image.Ready
139 screenshotImage.status !== Image.Ready
167 },
140 },
168 State {
141 State {
169 name: "surface"
142 name: "surface"
170 when:
143 when:
171− (d.surface && d.surfaceInitialized)
144+ (sessionContainer.surface && d.surfaceInitialized)
172 &&
145 &&
173− (d.applicationState !== ApplicationInfo.Stopped
146+ (d.applicationState !== ApplicationInfoInterface.Stopped
174 || screenshotImage.status !== Image.Ready)
147 || screenshotImage.status !== Image.Ready)
175 },
148 },
176 State {
149 State {
@@ -178,8 +151,8 @@ Item {
178 when:
151 when:
179 screenshotImage.status === Image.Ready
152 screenshotImage.status === Image.Ready
180 &&
153 &&
181− (d.applicationState === ApplicationInfo.Stopped
154+ (d.applicationState === ApplicationInfoInterface.Stopped
182− || !d.surface || !d.surfaceInitialized)
155+ || !sessionContainer.surface || !d.surfaceInitialized)
183 }
156 }
184 ]
157 ]
185
158
@@ -187,14 +160,18 @@ Item {
187 Transition {
160 Transition {
188 from: ""; to: "splashScreen"
161 from: ""; to: "splashScreen"
189 PropertyAction { target: splashLoader; property: "active"; value: true }
162 PropertyAction { target: splashLoader; property: "active"; value: true }
163+ PropertyAction { target: sessionContainer.surfaceContainer
164+ property: "visible"; value: false }
190 },
165 },
191 Transition {
166 Transition {
192 from: "splashScreen"; to: "surface"
167 from: "splashScreen"; to: "surface"
193 SequentialAnimation {
168 SequentialAnimation {
194− PropertyAction { target: surfaceContainer
169+ PropertyAction { target: sessionContainer.surfaceContainer
170+ property: "opacity"; value: 0.0 }
171+ PropertyAction { target: sessionContainer.surfaceContainer
195 property: "visible"; value: true }
172 property: "visible"; value: true }
196− UbuntuNumberAnimation { target: splashLoader; property: "opacity";
173+ UbuntuNumberAnimation { target: sessionContainer.surfaceContainer; property: "opacity";
197− from: 1.0; to: 0.0
174+ from: 0.0; to: 1.0
198 duration: UbuntuAnimation.BriskDuration }
175 duration: UbuntuAnimation.BriskDuration }
199 PropertyAction { target: splashLoader; property: "active"; value: false }
176 PropertyAction { target: splashLoader; property: "active"; value: false }
200 }
177 }
@@ -203,11 +180,13 @@ Item {
203 from: "surface"; to: "splashScreen"
180 from: "surface"; to: "splashScreen"
204 SequentialAnimation {
181 SequentialAnimation {
205 PropertyAction { target: splashLoader; property: "active"; value: true }
182 PropertyAction { target: splashLoader; property: "active"; value: true }
206− PropertyAction { target: surfaceContainer
183+ PropertyAction { target: sessionContainer.surfaceContainer
207 property: "visible"; value: true }
184 property: "visible"; value: true }
208 UbuntuNumberAnimation { target: splashLoader; property: "opacity";
185 UbuntuNumberAnimation { target: splashLoader; property: "opacity";
209 from: 0.0; to: 1.0
186 from: 0.0; to: 1.0
210 duration: UbuntuAnimation.BriskDuration }
187 duration: UbuntuAnimation.BriskDuration }
188+ PropertyAction { target: sessionContainer.surfaceContainer
189+ property: "visible"; value: false }
211 }
190 }
212 },
191 },
213 Transition {
192 Transition {
@@ -218,15 +197,15 @@ Item {
218 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
197 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
219 from: 0.0; to: 1.0
198 from: 0.0; to: 1.0
220 duration: UbuntuAnimation.BriskDuration }
199 duration: UbuntuAnimation.BriskDuration }
221− PropertyAction { target: surfaceContainer
200+ PropertyAction { target: sessionContainer.surfaceContainer
222 property: "visible"; value: false }
201 property: "visible"; value: false }
223− ScriptAction { script: { if (d.surface) { d.surface.release(); } } }
202+ ScriptAction { script: { if (sessionContainer.session) { sessionContainer.session.release(); } } }
224 }
203 }
225 },
204 },
226 Transition {
205 Transition {
227 from: "screenshot"; to: "surface"
206 from: "screenshot"; to: "surface"
228 SequentialAnimation {
207 SequentialAnimation {
229− PropertyAction { target: surfaceContainer
208+ PropertyAction { target: sessionContainer.surfaceContainer
230 property: "visible"; value: true }
209 property: "visible"; value: true }
231 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
210 UbuntuNumberAnimation { target: screenshotImage; property: "opacity";
232 from: 1.0; to: 0.0
211 from: 1.0; to: 0.0
@@ -238,16 +217,16 @@ Item {
238 Transition {
217 Transition {
239 from: "surface"; to: "void"
218 from: "surface"; to: "void"
240 SequentialAnimation {
219 SequentialAnimation {
241− PropertyAction { target: surfaceContainer; property: "visible"; value: false }
220+ PropertyAction { target: sessionContainer.surfaceContainer; property: "visible"; value: false }
242− ScriptAction { script: { if (d.surface) { d.surface.release(); } } }
221+ ScriptAction { script: { if (sessionContainer.session) { sessionContainer.session.release(); } } }
243 }
222 }
244 },
223 },
245 Transition {
224 Transition {
246 from: "void"; to: "surface"
225 from: "void"; to: "surface"
247 SequentialAnimation {
226 SequentialAnimation {
248− PropertyAction { target: surfaceContainer; property: "opacity"; value: 0.0 }
227+ PropertyAction { target: sessionContainer.surfaceContainer; property: "opacity"; value: 0.0 }
249− PropertyAction { target: surfaceContainer; property: "visible"; value: true }
228+ PropertyAction { target: sessionContainer.surfaceContainer; property: "visible"; value: true }
250− UbuntuNumberAnimation { target: surfaceContainer; property: "opacity";
229+ UbuntuNumberAnimation { target: sessionContainer.surfaceContainer; property: "opacity";
251 from: 0.0; to: 1.0
230 from: 0.0; to: 1.0
252 duration: UbuntuAnimation.BriskDuration }
231 duration: UbuntuAnimation.BriskDuration }
253 }
232 }
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 @@
15*/
15*/
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18−import "Animations"
18+import Ubuntu.Components 1.1
19
19
20Item {
20Item {
21− id: container
21+ id: root
22+ objectName: "surfaceContainer"
22 property Item surface: null
23 property Item surface: null
23− property bool removing: false
24+ property bool hadSurface: false
24
25
25 onSurfaceChanged: {
26 onSurfaceChanged: {
26 if (surface) {
27 if (surface) {
27− surface.parent = container;
28+ surface.parent = root;
28− surface.z = 1;
29+ } else {
30+ hadSurface = true;
29 }
31 }
30 }
32 }
31 Binding {
33 Binding {
32 target: surface
34 target: surface
33− property: "anchors.fill"; value: container
35+ property: "anchors.fill"; value: root
34 }
36 }
35
37
36− Connections {
38+ states: [
37− target: surface
39+ State {
38− onRemoved: {
40+ name: "zombie"
39− container.removing = true;
41+ when: surface && !surface.live
40−
41− var childSurfaces = surface.childSurfaces;
42− for (var i=0; i<childSurfaces.length; i++) {
43− childSurfaces[i].removed();
44− }
45−
46− animateOut();
47 }
42 }
48− }
43+ ]
49−
44+ transitions: [
50− Repeater {
45+ Transition {
51− model: surface ? surface.childSurfaces : null
46+ from: ""; to: "zombie"
52−
47+ SequentialAnimation {
53− delegate: Loader {
48+ UbuntuNumberAnimation { target: surface; property: "opacity"; to: 0.0
54− z: 2
49+ duration: UbuntuAnimation.BriskDuration }
55− anchors {
50+ PropertyAction { target: surface; property: "visible"; value: false }
56− fill: container
51+ ScriptAction { script: { if (root.surface) { root.surface.release(); } } }
57− topMargin: container.surface.anchors.topMargin
58− rightMargin: container.surface.anchors.rightMargin
59− bottomMargin: container.surface.anchors.bottomMargin
60− leftMargin: container.surface.anchors.leftMargin
61 }
52 }
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;
87 }
53 }
88− }
54+ ]
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− }
100}
55}
tests/mocks/AccountsService/AccountsService.cpp+24
@@ -22,6 +22,8 @@
22
22
23AccountsService::AccountsService(QObject* parent)
23AccountsService::AccountsService(QObject* parent)
24 : QObject(parent),
24 : QObject(parent),
25+ m_enableLauncherWhileLocked(true),
26+ m_enableIndicatorsWhileLocked(true),
25 m_backgroundFile(qmlDirectory() + "graphics/phone_background.jpg"),
27 m_backgroundFile(qmlDirectory() + "graphics/phone_background.jpg"),
26 m_statsWelcomeScreen(true),
28 m_statsWelcomeScreen(true),
27 m_failedLogins(0)
29 m_failedLogins(0)
@@ -50,6 +52,28 @@ void AccountsService::setDemoEdges(bool demoEdges)
50 Q_UNUSED(demoEdges)
52 Q_UNUSED(demoEdges)
51}
53}
52
54
55+bool AccountsService::enableLauncherWhileLocked() const
56+{
57+ return m_enableLauncherWhileLocked;
58+}
59+
60+void AccountsService::setEnableLauncherWhileLocked(bool enableLauncherWhileLocked)
61+{
62+ m_enableLauncherWhileLocked = enableLauncherWhileLocked;
63+ Q_EMIT enableLauncherWhileLockedChanged();
64+}
65+
66+bool AccountsService::enableIndicatorsWhileLocked() const
67+{
68+ return m_enableIndicatorsWhileLocked;
69+}
70+
71+void AccountsService::setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileLocked)
72+{
73+ m_enableIndicatorsWhileLocked = enableIndicatorsWhileLocked;
74+ Q_EMIT enableIndicatorsWhileLockedChanged();
75+}
76+
53QString AccountsService::backgroundFile() const
77QString AccountsService::backgroundFile() const
54{
78{
55 return m_backgroundFile;
79 return m_backgroundFile;
tests/mocks/AccountsService/AccountsService.h+16
@@ -36,6 +36,14 @@ class AccountsService: public QObject
36 READ demoEdges
36 READ demoEdges
37 WRITE setDemoEdges
37 WRITE setDemoEdges
38 NOTIFY demoEdgesChanged)
38 NOTIFY demoEdgesChanged)
39+ Q_PROPERTY (bool enableLauncherWhileLocked
40+ READ enableLauncherWhileLocked
41+ WRITE setEnableLauncherWhileLocked // only available in mock
42+ NOTIFY enableLauncherWhileLockedChanged)
43+ Q_PROPERTY (bool enableIndicatorsWhileLocked
44+ READ enableIndicatorsWhileLocked
45+ WRITE setEnableIndicatorsWhileLocked // only available in mock
46+ NOTIFY enableIndicatorsWhileLockedChanged)
39 Q_PROPERTY (QString backgroundFile
47 Q_PROPERTY (QString backgroundFile
40 READ backgroundFile
48 READ backgroundFile
41 WRITE setBackgroundFile // only available in mock
49 WRITE setBackgroundFile // only available in mock
@@ -64,6 +72,10 @@ public:
64 void setUser(const QString &user);
72 void setUser(const QString &user);
65 bool demoEdges() const;
73 bool demoEdges() const;
66 void setDemoEdges(bool demoEdges);
74 void setDemoEdges(bool demoEdges);
75+ bool enableLauncherWhileLocked() const;
76+ void setEnableLauncherWhileLocked(bool enableLauncherWhileLocked);
77+ bool enableIndicatorsWhileLocked() const;
78+ void setEnableIndicatorsWhileLocked(bool enableIndicatorsWhileLocked);
67 QString backgroundFile() const;
79 QString backgroundFile() const;
68 void setBackgroundFile(const QString &backgroundFile);
80 void setBackgroundFile(const QString &backgroundFile);
69 bool statsWelcomeScreen() const;
81 bool statsWelcomeScreen() const;
@@ -75,12 +87,16 @@ public:
75Q_SIGNALS:
87Q_SIGNALS:
76 void userChanged();
88 void userChanged();
77 void demoEdgesChanged();
89 void demoEdgesChanged();
90+ void enableLauncherWhileLockedChanged();
91+ void enableIndicatorsWhileLockedChanged();
78 void backgroundFileChanged();
92 void backgroundFileChanged();
79 void statsWelcomeScreenChanged();
93 void statsWelcomeScreenChanged();
80 void passwordDisplayHintChanged();
94 void passwordDisplayHintChanged();
81 void failedLoginsChanged();
95 void failedLoginsChanged();
82
96
83private:
97private:
98+ bool m_enableLauncherWhileLocked;
99+ bool m_enableIndicatorsWhileLocked;
84 QString m_backgroundFile;
100 QString m_backgroundFile;
85 QString m_user;
101 QString m_user;
86 bool m_statsWelcomeScreen;
102 bool m_statsWelcomeScreen;
tests/mocks/AccountsService/AccountsService.qmltypes+1
@@ -26,5 +26,6 @@ Module {
26 Property { name: "backgroundFile"; type: "string" }
26 Property { name: "backgroundFile"; type: "string" }
27 Property { name: "statsWelcomeScreen"; type: "bool" }
27 Property { name: "statsWelcomeScreen"; type: "bool" }
28 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
28 Property { name: "passwordDisplayHint"; type: "PasswordDisplayHint"; isReadonly: true }
29+ Property { name: "failedLogins"; type: "uint" }
29 }
30 }
30}
31}
tests/mocks/LightDM/LightDM.qmltypes+2
@@ -27,6 +27,7 @@ Module {
27 name: "showPrompt"
27 name: "showPrompt"
28 Parameter { name: "text"; type: "string" }
28 Parameter { name: "text"; type: "string" }
29 Parameter { name: "isSecret"; type: "bool" }
29 Parameter { name: "isSecret"; type: "bool" }
30+ Parameter { name: "isDefaultPrompt"; type: "bool" }
30 }
31 }
31 Signal { name: "authenticationComplete" }
32 Signal { name: "authenticationComplete" }
32 Signal {
33 Signal {
@@ -34,6 +35,7 @@ Module {
34 Parameter { name: "user"; type: "string" }
35 Parameter { name: "user"; type: "string" }
35 }
36 }
36 Signal { name: "isActiveChanged" }
37 Signal { name: "isActiveChanged" }
38+ Signal { name: "isAuthenticatedChanged" }
37 Signal { name: "showGreeter" }
39 Signal { name: "showGreeter" }
38 Signal {
40 Signal {
39 name: "requestAuthenticationUser"
41 name: "requestAuthenticationUser"
tests/mocks/Ubuntu/SystemImage/SystemImage.qmltypes+3−1
@@ -4,13 +4,15 @@ import QtQuick.tooling 1.1
4// It is used for QML tooling purposes only.
4// It is used for QML tooling purposes only.
5//
5//
6// This file was auto-generated by:
6// This file was auto-generated by:
7−// 'qmlplugindump -notrelocatable Ubuntu.SystemImage 0.1 plugins'
7+// 'qmlplugindump -notrelocatable Ubuntu.SystemImage 0.1 tests/mocks'
8
8
9Module {
9Module {
10 Component {
10 Component {
11 name: "MockSystemImage"
11 name: "MockSystemImage"
12 prototype: "QObject"
12 prototype: "QObject"
13 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
13 exports: ["Ubuntu.SystemImage/SystemImage 0.1"]
14+ isCreatable: false
15+ isSingleton: true
14 exportMetaObjectRevisions: [0]
16 exportMetaObjectRevisions: [0]
15 Signal { name: "resettingDevice" }
17 Signal { name: "resettingDevice" }
16 Method { name: "factoryReset" }
18 Method { name: "factoryReset" }
tests/mocks/Unity/Application/Application.qmltypes+115−70
@@ -13,58 +13,24 @@ Module {
13 exports: ["Unity.Application/ApplicationInfo 0.1"]
13 exports: ["Unity.Application/ApplicationInfo 0.1"]
14 exportMetaObjectRevisions: [0]
14 exportMetaObjectRevisions: [0]
15 Property { name: "fullscreen"; type: "bool" }
15 Property { name: "fullscreen"; type: "bool" }
16− Property { name: "stage"; type: "Stage" }
17− Property { name: "surface"; type: "MirSurfaceItem"; isReadonly: true; isPointer: true }
16+ Property { name: "session"; type: "Session"; isReadonly: true; isPointer: true }
18− Property { name: "promptSurfaces"; type: "MirSurfaceItem"; isList: true; isReadonly: true }
17+ Property { name: "manualSurfaceCreation"; type: "bool" }
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− }
37 Signal {
18 Signal {
38− name: "stageChanged"
19+ name: "sessionChanged"
39− Parameter { type: "Stage" }
20+ Parameter { type: "Session"; isPointer: true }
40− }
41− Signal {
42− name: "stateChanged"
43− Parameter { type: "State" }
44− }
45− Signal {
46− name: "focusedChanged"
47− Parameter { type: "bool" }
48 }
21 }
49 Signal {
22 Signal {
50 name: "fullscreenChanged"
23 name: "fullscreenChanged"
51− Parameter { type: "bool" }
24+ Parameter { name: "value"; type: "bool" }
52− }
53− Signal {
54− name: "imageQmlChanged"
55− Parameter { type: "string" }
56− }
57− Signal {
58− name: "windowQmlChanged"
59− Parameter { type: "string" }
60 }
25 }
61 Signal {
26 Signal {
62− name: "screenshotChanged"
27+ name: "manualSurfaceCreationChanged"
63− Parameter { type: "QUrl" }
28+ Parameter { name: "value"; type: "bool" }
64 }
29 }
65− Signal {
30+ Method { name: "createSession" }
66− name: "surfaceChanged"
31+ Method {
67− Parameter { type: "MirSurfaceItem"; isPointer: true }
32+ name: "setState"
33+ Parameter { name: "value"; type: "State" }
68 }
34 }
69 }
35 }
70 Component {
36 Component {
@@ -198,17 +164,50 @@ Module {
198 type: "bool"
164 type: "bool"
199 Parameter { name: "appId"; type: "string" }
165 Parameter { name: "appId"; type: "string" }
200 }
166 }
167+ Method { name: "availableApplications"; type: "QStringList" }
201 Method {
168 Method {
202− name: "updateScreenshot"
169+ name: "add"
203− type: "bool"
170+ type: "ApplicationInfo*"
204 Parameter { name: "appId"; type: "string" }
171 Parameter { name: "appId"; type: "string" }
205 }
172 }
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+ }
207 }
206 }
208 Component {
207 Component {
209 name: "MirSurfaceItem"
208 name: "MirSurfaceItem"
210 defaultProperty: "data"
209 defaultProperty: "data"
211− prototype: "QQuickPaintedItem"
210+ prototype: "QQuickItem"
212 exports: ["Unity.Application/MirSurfaceItem 0.1"]
211 exports: ["Unity.Application/MirSurfaceItem 0.1"]
213 isCreatable: false
212 isCreatable: false
214 exportMetaObjectRevisions: [0]
213 exportMetaObjectRevisions: [0]
@@ -238,8 +237,7 @@ Module {
238 Property { name: "type"; type: "Type"; isReadonly: true }
237 Property { name: "type"; type: "Type"; isReadonly: true }
239 Property { name: "state"; type: "State"; isReadonly: true }
238 Property { name: "state"; type: "State"; isReadonly: true }
240 Property { name: "name"; type: "string"; isReadonly: true }
239 Property { name: "name"; type: "string"; isReadonly: true }
241− Property { name: "parentSurface"; type: "MirSurfaceItem"; isReadonly: true; isPointer: true }
240+ Property { name: "live"; type: "bool"; isReadonly: true }
242− Property { name: "childSurfaces"; type: "MirSurfaceItem"; isList: true; isReadonly: true }
243 Signal {
241 Signal {
244 name: "typeChanged"
242 name: "typeChanged"
245 Parameter { type: "Type" }
243 Parameter { type: "Type" }
@@ -249,22 +247,72 @@ Module {
249 Parameter { type: "State" }
247 Parameter { type: "State" }
250 }
248 }
251 Signal {
249 Signal {
252− name: "nameChanged"
250+ name: "liveChanged"
253− Parameter { type: "string" }
251+ Parameter { name: "live"; type: "bool" }
254− }
255− Signal {
256− name: "parentSurfaceChanged"
257− Parameter { type: "MirSurfaceItem"; isPointer: true }
258 }
252 }
259− Signal { name: "removed" }
260 Signal { name: "inputMethodRequested" }
253 Signal { name: "inputMethodRequested" }
261 Signal { name: "inputMethodDismissed" }
254 Signal { name: "inputMethodDismissed" }
255+ Signal { name: "deregister" }
262 Method {
256 Method {
263 name: "setState"
257 name: "setState"
264 Parameter { name: "newState"; type: "State" }
258 Parameter { name: "newState"; type: "State" }
265 }
259 }
266 Method { name: "release" }
260 Method { name: "release" }
267 }
261 }
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+ }
268 Component {
316 Component {
269 name: "SurfaceManager"
317 name: "SurfaceManager"
270 prototype: "QObject"
318 prototype: "QObject"
@@ -281,6 +329,14 @@ Module {
281 name: "surfaceDestroyed"
329 name: "surfaceDestroyed"
282 Parameter { name: "surface"; type: "MirSurfaceItem"; isPointer: true }
330 Parameter { name: "surface"; type: "MirSurfaceItem"; isPointer: true }
283 }
331 }
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+ }
284 Method { name: "inputMethodSurface"; type: "MirSurfaceItem*" }
340 Method { name: "inputMethodSurface"; type: "MirSurfaceItem*" }
285 }
341 }
286 Component {
342 Component {
@@ -312,7 +368,6 @@ Module {
312 Property { name: "stage"; type: "Stage"; isReadonly: true }
368 Property { name: "stage"; type: "Stage"; isReadonly: true }
313 Property { name: "state"; type: "State"; isReadonly: true }
369 Property { name: "state"; type: "State"; isReadonly: true }
314 Property { name: "focused"; type: "bool"; isReadonly: true }
370 Property { name: "focused"; type: "bool"; isReadonly: true }
315− Property { name: "screenshot"; type: "QUrl"; isReadonly: true }
316 Signal {
371 Signal {
317 name: "nameChanged"
372 name: "nameChanged"
318 Parameter { name: "name"; type: "string" }
373 Parameter { name: "name"; type: "string" }
@@ -337,10 +392,6 @@ Module {
337 name: "focusedChanged"
392 name: "focusedChanged"
338 Parameter { name: "focused"; type: "bool" }
393 Parameter { name: "focused"; type: "bool" }
339 }
394 }
340− Signal {
341− name: "screenshotChanged"
342− Parameter { name: "screenshot"; type: "QUrl" }
343− }
344 }
395 }
345 Component {
396 Component {
346 name: "unity::shell::application::ApplicationManagerInterface"
397 name: "unity::shell::application::ApplicationManagerInterface"
@@ -357,8 +408,7 @@ Module {
357 "RoleIcon": 259,
408 "RoleIcon": 259,
358 "RoleStage": 260,
409 "RoleStage": 260,
359 "RoleState": 261,
410 "RoleState": 261,
360− "RoleFocused": 262,
411+ "RoleFocused": 262
361− "RoleScreenshot": 263
362 }
412 }
363 }
413 }
364 Property { name: "count"; type: "int"; isReadonly: true }
414 Property { name: "count"; type: "int"; isReadonly: true }
@@ -408,10 +458,5 @@ Module {
408 type: "bool"
458 type: "bool"
409 Parameter { name: "appId"; type: "string" }
459 Parameter { name: "appId"; type: "string" }
410 }
460 }
411− Method {
412− name: "updateScreenshot"
413− type: "bool"
414− Parameter { name: "appId"; type: "string" }
415− }
416 }
461 }
417}
462}
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 @@
15 */
15 */
16
16
17#include "ApplicationInfo.h"
17#include "ApplicationInfo.h"
18−#include "MirSurfaceItem.h"
18+#include "Session.h"
19−#include "SurfaceManager.h"
19+#include "SessionManager.h"
20
20
21#include <paths.h>
21#include <paths.h>
22
22
@@ -33,9 +33,8 @@ ApplicationInfo::ApplicationInfo(const QString &appId, QObject *parent)
33 , m_state(Starting)
33 , m_state(Starting)
34 , m_focused(false)
34 , m_focused(false)
35 , m_fullscreen(false)
35 , m_fullscreen(false)
36− , m_surface(0)
36+ , m_session(0)
37 , m_manualSurfaceCreation(false)
37 , m_manualSurfaceCreation(false)
38− , m_parentItem(0)
39{
38{
40}
39}
41
40
@@ -45,107 +44,50 @@ ApplicationInfo::ApplicationInfo(QObject *parent)
45 , m_state(Starting)
44 , m_state(Starting)
46 , m_focused(false)
45 , m_focused(false)
47 , m_fullscreen(false)
46 , m_fullscreen(false)
48− , m_surface(0)
47+ , m_session(0)
49 , m_manualSurfaceCreation(false)
48 , m_manualSurfaceCreation(false)
50− , m_parentItem(0)
51{
49{
52}
50}
53
51
54ApplicationInfo::~ApplicationInfo()
52ApplicationInfo::~ApplicationInfo()
55{
53{
56− if (m_surface) {
54+ delete m_session;
57− Q_EMIT SurfaceManager::singleton()->surfaceDestroyed(m_surface);
58− m_surface->deleteLater();
59− setSurface(nullptr);
60− }
61}
55}
62
56
63−void ApplicationInfo::createSurface()
57+void ApplicationInfo::createSession()
64{
58{
65− if (m_surface || state() == ApplicationInfo::Stopped) return;
59+ if (m_session || state() == ApplicationInfo::Stopped) { return; }
66
60
67 QUrl screenshotUrl = QString("file://%1").arg(m_screenshotFileName);
61 QUrl screenshotUrl = QString("file://%1").arg(m_screenshotFileName);
68−
62+ setSession(SessionManager::singleton()->createSession(appId(), screenshotUrl));
69− setSurface(new MirSurfaceItem(name(),
70− MirSurfaceItem::Normal,
71− fullscreen() ? MirSurfaceItem::Fullscreen : MirSurfaceItem::Maximized,
72− screenshotUrl));
73}
63}
74
64
75−void ApplicationInfo::setSurface(MirSurfaceItem* surface)
65+void ApplicationInfo::setSession(Session* session)
76{
66{
77− qDebug() << "Application::setSurface - appId=" << appId() << "surface=" << surface;
67+ qDebug() << "Application::setSession - appId=" << appId() << "session=" << session;
78− if (m_surface == surface)
68+ if (m_session == session)
79 return;
69 return;
80
70
81− if (m_surface) {
71+ if (m_session) {
82− m_surface->setApplication(nullptr);
72+ disconnect(this, 0, m_session, 0);
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);
73+ m_session->setApplication(nullptr);
91− m_surface->setParent(this);
74+ m_session->setParent(nullptr);
92− SurfaceManager::singleton()->registerSurface(m_surface);
75+ Q_EMIT m_session->deregister();
93 }
76 }
94
77
95− Q_EMIT surfaceChanged(m_surface);
78+ m_session = session;
96− SurfaceManager::singleton()->registerSurface(m_surface);
97−}
98
79
99−void ApplicationInfo::addPromptSurface(MirSurfaceItem* surface)
80+ if (m_session) {
100−{
81+ m_session->setApplication(this);
101− qDebug() << "ApplicationInfo::addPromptSurface " << surface->name() << " to " << name();
82+ m_session->setParent(this);
102− if (surface == m_surface || m_promptSurfaces.contains(surface)) return;
83+ SessionManager::singleton()->registerSession(m_session);
103
84
104− surface->setApplication(this);
85+ if (!m_manualSurfaceCreation) {
105− m_promptSurfaces.append(surface);
86+ QTimer::singleShot(500, m_session, SLOT(createSurface()));
106− Q_EMIT promptSurfacesChanged();
87+ }
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();
120 }
88 }
121−}
122
89
123−QList<MirSurfaceItem*> ApplicationInfo::promptSurfaceList() const
90+ Q_EMIT sessionChanged(m_session);
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];
149}
91}
150
92
151void ApplicationInfo::setIconId(const QString &iconId)
93void ApplicationInfo::setIconId(const QString &iconId)
@@ -157,9 +99,18 @@ void ApplicationInfo::setIconId(const QString &iconId)
157
99
158void ApplicationInfo::setScreenshotId(const QString &screenshotId)
100void ApplicationInfo::setScreenshotId(const QString &screenshotId)
159{
101{
160− m_screenshotFileName = QString("%1/Dash/graphics/phone/screenshots/%2@12.png")
102+ QString screenshotFileName = QString("%1/Dash/graphics/phone/screenshots/%2@12.png")
161 .arg(qmlDirectory())
103 .arg(qmlDirectory())
162 .arg(screenshotId);
104 .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+ }
163}
114}
164
115
165void ApplicationInfo::setName(const QString &value)
116void ApplicationInfo::setName(const QString &value)
@@ -193,7 +144,7 @@ void ApplicationInfo::setState(State value)
193 Q_EMIT stateChanged(value);
144 Q_EMIT stateChanged(value);
194
145
195 if (!m_manualSurfaceCreation && m_state == ApplicationInfo::Running) {
146 if (!m_manualSurfaceCreation && m_state == ApplicationInfo::Running) {
196− QTimer::singleShot(1000, this, SLOT(createSurface()));
147+ QTimer::singleShot(500, this, SLOT(createSession()));
197 }
148 }
198 }
149 }
199}
150}
tests/mocks/Unity/Application/ApplicationInfo.h+11−23
@@ -17,8 +17,10 @@
17#ifndef APPLICATION_H
17#ifndef APPLICATION_H
18#define APPLICATION_H
18#define APPLICATION_H
19
19
20+#include "SurfaceManager.h"
21+#include "MirSurfaceItemModel.h"
22+
20#include <QObject>
23#include <QObject>
21−#include <QQmlComponent>
22
24
23class QQuickItem;
25class QQuickItem;
24class MirSurfaceItem;
26class MirSurfaceItem;
@@ -32,8 +34,7 @@ class ApplicationInfo : public ApplicationInfoInterface {
32 Q_OBJECT
34 Q_OBJECT
33
35
34 Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged)
36 Q_PROPERTY(bool fullscreen READ fullscreen WRITE setFullscreen NOTIFY fullscreenChanged)
35− Q_PROPERTY(MirSurfaceItem* surface READ surface NOTIFY surfaceChanged)
37+ Q_PROPERTY(Session* session READ session NOTIFY sessionChanged)
36− Q_PROPERTY(QQmlListProperty<MirSurfaceItem> promptSurfaces READ promptSurfaces NOTIFY promptSurfacesChanged DESIGNABLE false)
37
38
38 // Only exists in this fake implementation
39 // Only exists in this fake implementation
39
40
@@ -72,32 +73,23 @@ public:
72 void setFullscreen(bool value);
73 void setFullscreen(bool value);
73 bool fullscreen() const { return m_fullscreen; }
74 bool fullscreen() const { return m_fullscreen; }
74
75
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−
84 bool manualSurfaceCreation() const { return m_manualSurfaceCreation; }
76 bool manualSurfaceCreation() const { return m_manualSurfaceCreation; }
85 void setManualSurfaceCreation(bool value);
77 void setManualSurfaceCreation(bool value);
86
78
79+public:
80+ void setSession(Session* session);
81+ Session* session() const { return m_session; }
82+
87Q_SIGNALS:
83Q_SIGNALS:
88− void surfaceChanged(MirSurfaceItem*);
84+ void sessionChanged(Session*);
89− void promptSurfacesChanged();
90 void fullscreenChanged(bool value);
85 void fullscreenChanged(bool value);
91 void manualSurfaceCreationChanged(bool value);
86 void manualSurfaceCreationChanged(bool value);
92
87
93public Q_SLOTS:
88public Q_SLOTS:
94− Q_INVOKABLE void createSurface();
89+ Q_INVOKABLE void createSession();
95
90
96private:
91private:
97− static int promptSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop);
98− static MirSurfaceItem* promptSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index);
99 void setIcon(const QUrl &value);
92 void setIcon(const QUrl &value);
100− void setScreenshot(const QUrl &value);
101
93
102 QString m_screenshotFileName;
94 QString m_screenshotFileName;
103
95
@@ -108,15 +100,11 @@ private:
108 State m_state;
100 State m_state;
109 bool m_focused;
101 bool m_focused;
110 bool m_fullscreen;
102 bool m_fullscreen;
111− MirSurfaceItem* m_surface;
103+ Session* m_session;
112
104
113 bool m_manualSurfaceCreation;
105 bool m_manualSurfaceCreation;
114−
115− QQuickItem *m_parentItem;
116− QList<MirSurfaceItem*> m_promptSurfaces;
117};
106};
118
107
119Q_DECLARE_METATYPE(ApplicationInfo*)
108Q_DECLARE_METATYPE(ApplicationInfo*)
120−Q_DECLARE_METATYPE(QQmlListProperty<MirSurfaceItem>)
121
109
122#endif // APPLICATION_H
110#endif // APPLICATION_H
tests/mocks/Unity/Application/ApplicationManager.cpp+9−16
@@ -15,9 +15,9 @@
15 */
15 */
16
16
17#include "ApplicationManager.h"
17#include "ApplicationManager.h"
18−#include "ApplicationDBusAdaptor.h"
19#include "ApplicationInfo.h"
18#include "ApplicationInfo.h"
20−#include "MirSurfaceItem.h"
19+#include "Session.h"
20+#include "ApplicationTestInterface.h"
21
21
22#include <paths.h>
22#include <paths.h>
23
23
@@ -36,11 +36,6 @@ ApplicationManager *ApplicationManager::singleton()
36{
36{
37 if (!the_application_manager) {
37 if (!the_application_manager) {
38 the_application_manager = new ApplicationManager();
38 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);
44 }
39 }
45 return the_application_manager;
40 return the_application_manager;
46}
41}
@@ -49,9 +44,8 @@ ApplicationManager::ApplicationManager(QObject *parent)
49 : ApplicationManagerInterface(parent)
44 : ApplicationManagerInterface(parent)
50 , m_suspended(false)
45 , m_suspended(false)
51{
46{
52− m_roleNames.insert(RoleSurface, "surface");
47+ m_roleNames.insert(RoleSession, "session");
53 m_roleNames.insert(RoleFullscreen, "fullscreen");
48 m_roleNames.insert(RoleFullscreen, "fullscreen");
54− m_roleNames.insert(RoleApplication, "application");
55
49
56 buildListOfAvailableApplications();
50 buildListOfAvailableApplications();
57
51
@@ -105,12 +99,10 @@ QVariant ApplicationManager::data(const QModelIndex& index, int role) const {
105 return app->state();
99 return app->state();
106 case RoleFocused:
100 case RoleFocused:
107 return app->focused();
101 return app->focused();
108− case RoleSurface:
102+ case RoleSession:
109− return QVariant::fromValue(app->surface());
103+ return QVariant::fromValue(app->session());
110 case RoleFullscreen:
104 case RoleFullscreen:
111 return app->fullscreen();
105 return app->fullscreen();
112− case RoleApplication:
113− return QVariant::fromValue(app);
114 default:
106 default:
115 return QVariant();
107 return QVariant();
116 }
108 }
@@ -154,10 +146,10 @@ void ApplicationManager::add(ApplicationInfo *application) {
154 Q_EMIT countChanged();
146 Q_EMIT countChanged();
155 if (count() == 1) Q_EMIT emptyChanged(isEmpty()); // was empty but not anymore
147 if (count() == 1) Q_EMIT emptyChanged(isEmpty()); // was empty but not anymore
156
148
157− connect(application, &ApplicationInfo::surfaceChanged, this, [application, this]() {
149+ connect(application, &ApplicationInfo::sessionChanged, this, [application, this]() {
158 QModelIndex appIndex = findIndex(application);
150 QModelIndex appIndex = findIndex(application);
159 if (!appIndex.isValid()) return;
151 if (!appIndex.isValid()) return;
160− Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << ApplicationManager::RoleSurface);
152+ Q_EMIT dataChanged(appIndex, appIndex, QVector<int>() << ApplicationManager::RoleSession);
161 });
153 });
162 connect(application, &ApplicationInfo::focusedChanged, this, [application, this]() {
154 connect(application, &ApplicationInfo::focusedChanged, this, [application, this]() {
163 QModelIndex appIndex = findIndex(application);
155 QModelIndex appIndex = findIndex(application);
@@ -181,7 +173,7 @@ void ApplicationManager::remove(ApplicationInfo *application) {
181 Q_EMIT countChanged();
173 Q_EMIT countChanged();
182 if (isEmpty()) Q_EMIT emptyChanged(isEmpty());
174 if (isEmpty()) Q_EMIT emptyChanged(isEmpty());
183 }
175 }
184− disconnect(application, 0, this, 0);
176+ application->disconnect(this);
185}
177}
186
178
187void ApplicationManager::move(int from, int to) {
179void ApplicationManager::move(int from, int to) {
@@ -464,6 +456,7 @@ void ApplicationManager::buildListOfAvailableApplications()
464 m_availableApplications.append(application);
456 m_availableApplications.append(application);
465}
457}
466
458
459+
467QStringList ApplicationManager::availableApplications()
460QStringList ApplicationManager::availableApplications()
468{
461{
469 QStringList appIds;
462 QStringList appIds;
tests/mocks/Unity/Application/ApplicationManager.h+1−2
@@ -52,9 +52,8 @@ class ApplicationManager : public ApplicationManagerInterface {
52 static ApplicationManager *singleton();
52 static ApplicationManager *singleton();
53
53
54 enum MoreRoles {
54 enum MoreRoles {
55− RoleSurface = RoleFocused+1,
55+ RoleSession = RoleFocused+1,
56 RoleFullscreen,
56 RoleFullscreen,
57− RoleApplication,
58 };
57 };
59 enum Role {
58 enum Role {
60 Dash, Default, Indicators, Notifications, Greeter, Launcher, OnScreenKeyboard,
59 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 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−#ifndef APPLICATIONDBUSADAPTOR_H
17+#ifndef APPLICATIONTESTINTERFACE_H
18−#define APPLICATIONDBUSADAPTOR_H
18+#define APPLICATIONTESTINTERFACE_H
19
19
20#include <QtDBus/QtDBus>
20#include <QtDBus/QtDBus>
21
21
22class ApplicationManager;
22class ApplicationManager;
23−class SurfaceManager;
23+class Session;
24class MirSurfaceItem;
24class MirSurfaceItem;
25
25
26−class ApplicationDBusAdaptor : public QDBusAbstractAdaptor
26+class ApplicationTestInterface : public QDBusAbstractAdaptor
27{
27{
28 Q_OBJECT
28 Q_OBJECT
29 Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity8.Mocks.Application")
29 Q_CLASSINFO("D-Bus Interface", "com.canonical.Unity8.Mocks.Application")
30public:
30public:
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);
32
36
33public Q_SLOTS:
37public Q_SLOTS:
34− quint32 addPromptSurface(const QString& appId, const QString& surfaceImage);
38+ quint32 addChildSession(const QString& appId, quint32 existingSessionId, const QString& surfaceImage);
35− void removeChildSurface(int surfaceId);
39+ void removeSession(quint32 sessionId);
36
40
37private:
41private:
38− ApplicationManager* m_applicationManager;
42+ QHash<quint32, Session*> m_childSessions;
39−
40− QHash<quint32, MirSurfaceItem*> m_childItems;
41};
43};
42
44
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)
2
2
3set(FakeUnityApplicationQml_SOURCES
3set(FakeUnityApplicationQml_SOURCES
4 plugin.cpp
4 plugin.cpp
5− ApplicationDBusAdaptor.cpp
6 ApplicationInfo.cpp
5 ApplicationInfo.cpp
7 ApplicationManager.cpp
6 ApplicationManager.cpp
8 ApplicationScreenshotProvider.cpp
7 ApplicationScreenshotProvider.cpp
8+ ApplicationTestInterface.cpp
9 MirSurfaceItem.cpp
9 MirSurfaceItem.cpp
10+ MirSurfaceItemModel.h
11+ ObjectListModel.h
12+ Session.cpp
13+ SessionManager.cpp
10 SurfaceManager.cpp
14 SurfaceManager.cpp
15+ SessionModel.h
11 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
16 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationInfoInterface.h
12 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
17 ${APPLICATION_API_INCLUDEDIR}/unity/shell/application/ApplicationManagerInterface.h
13)
18)
tests/mocks/Unity/Application/MirSurfaceItem.cpp+19−79
@@ -15,7 +15,7 @@
15 */
15 */
16
16
17#include "MirSurfaceItem.h"
17#include "MirSurfaceItem.h"
18−#include "ApplicationInfo.h"
18+#include "Session.h"
19
19
20#include <paths.h>
20#include <paths.h>
21
21
@@ -34,11 +34,11 @@ MirSurfaceItem::MirSurfaceItem(const QString& name,
34 const QString &qmlFilePath,
34 const QString &qmlFilePath,
35 QQuickItem *parent)
35 QQuickItem *parent)
36 : QQuickItem(parent)
36 : QQuickItem(parent)
37− , m_application(nullptr)
37+ , m_session(nullptr)
38 , m_name(name)
38 , m_name(name)
39 , m_type(type)
39 , m_type(type)
40 , m_state(state)
40 , m_state(state)
41− , m_parentSurface(nullptr)
41+ , m_live(true)
42 , m_qmlItem(nullptr)
42 , m_qmlItem(nullptr)
43 , m_screenshotUrl(screenshot)
43 , m_screenshotUrl(screenshot)
44{
44{
@@ -83,16 +83,9 @@ MirSurfaceItem::MirSurfaceItem(const QString& name,
83MirSurfaceItem::~MirSurfaceItem()
83MirSurfaceItem::~MirSurfaceItem()
84{
84{
85 qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << name();
85 qDebug() << "MirSurfaceItem::~MirSurfaceItem() " << name();
86−
86+ if (m_session) {
87− QList<MirSurfaceItem*> children(m_children);
87+ m_session->setSurface(nullptr);
88− for (MirSurfaceItem* child : children) {
89− child->setParentSurface(nullptr);
90 }
88 }
91− if (m_parentSurface)
92− m_parentSurface->removeChildSurface(this);
93−
94− if (m_application)
95− m_application->removeSurface(this);
96}
89}
97
90
98void MirSurfaceItem::printComponentErrors()
91void MirSurfaceItem::printComponentErrors()
@@ -105,91 +98,38 @@ void MirSurfaceItem::printComponentErrors()
105
98
106void MirSurfaceItem::release()
99void MirSurfaceItem::release()
107{
100{
108− QList<MirSurfaceItem*> children(m_children);
101+ qDebug() << "MirSurfaceItem::release " << name();
109− for (MirSurfaceItem* child : children) {
110− child->release();
111− }
112− if (m_parentSurface) {
113− m_parentSurface->removeChildSurface(this);
114− }
115
102
116− if (m_application) {
103+ if (m_session) {
117− m_application->removeSurface(this);
104+ m_session->setSurface(nullptr);
118 }
105 }
119 if (!parent()) {
106 if (!parent()) {
120 deleteLater();
107 deleteLater();
121 }
108 }
122}
109}
123
110
124−void MirSurfaceItem::setApplication(ApplicationInfo* application)
111+void MirSurfaceItem::setSession(Session* session)
125{
112{
126− m_application = application;
113+ m_session = session;
127}
114}
128
115
129−void MirSurfaceItem::setParentSurface(MirSurfaceItem* surface)
116+void MirSurfaceItem::setScreenshot(const QUrl& screenshot)
130{
117{
131− if (m_parentSurface == surface || surface == this)
118+ m_screenshotUrl = screenshot;
132− return;
119+ if (m_qmlItem) {
133−
120+ QQmlProperty screenshotSource(m_qmlItem, "screenshotSource");
134− if (m_parentSurface) {
121+ screenshotSource.write(QVariant::fromValue(m_screenshotUrl));
135− m_parentSurface->removeChildSurface(this);
136− }
137−
138− m_parentSurface = surface;
139−
140− if (m_parentSurface) {
141− m_parentSurface->addChildSurface(this);
142 }
122 }
143− Q_EMIT parentSurfaceChanged(surface);
144}
123}
145
124
146−void MirSurfaceItem::addChildSurface(MirSurfaceItem* surface)
125+void MirSurfaceItem::setLive(bool live)
147{
126{
148− qDebug() << "MirSurfaceItem::addChildSurface " << surface->name() << " to " << name();
127+ if (m_live != live) {
149−
128+ m_live = live;
150− m_children.append(surface);
129+ Q_EMIT liveChanged(m_live);
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();
161 }
130 }
162}
131}
163
132
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−
193void MirSurfaceItem::onQmlWantInputMethodChanged()
133void MirSurfaceItem::onQmlWantInputMethodChanged()
194{
134{
195 QQmlProperty prop(m_qmlItem, "wantInputMethod");
135 QQmlProperty prop(m_qmlItem, "wantInputMethod");
tests/mocks/Unity/Application/MirSurfaceItem.h+24−31
@@ -17,11 +17,12 @@
17#ifndef MIRSURFACEITEM_H
17#ifndef MIRSURFACEITEM_H
18#define MIRSURFACEITEM_H
18#define MIRSURFACEITEM_H
19
19
20+#include "MirSurfaceItemModel.h"
21+
20#include <QQuickItem>
22#include <QQuickItem>
21−#include <QQmlComponent>
22#include <QUrl>
23#include <QUrl>
23
24
24−class ApplicationInfo;
25+class Session;
25
26
26class MirSurfaceItem : public QQuickItem
27class MirSurfaceItem : public QQuickItem
27{
28{
@@ -31,9 +32,8 @@ class MirSurfaceItem : public QQuickItem
31
32
32 Q_PROPERTY(Type type READ type NOTIFY typeChanged)
33 Q_PROPERTY(Type type READ type NOTIFY typeChanged)
33 Q_PROPERTY(State state READ state NOTIFY stateChanged)
34 Q_PROPERTY(State state READ state NOTIFY stateChanged)
34− Q_PROPERTY(QString name READ name NOTIFY nameChanged)
35+ Q_PROPERTY(QString name READ name CONSTANT)
35− Q_PROPERTY(MirSurfaceItem* parentSurface READ parentSurface NOTIFY parentSurfaceChanged)
36+ Q_PROPERTY(bool live READ live NOTIFY liveChanged)
36− Q_PROPERTY(QQmlListProperty<MirSurfaceItem> childSurfaces READ childSurfaces NOTIFY childSurfacesChanged DESIGNABLE false)
37
37
38public:
38public:
39 enum Type {
39 enum Type {
@@ -56,24 +56,18 @@ public:
56 Fullscreen,
56 Fullscreen,
57 };
57 };
58
58
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);
65 ~MirSurfaceItem();
59 ~MirSurfaceItem();
66
60
67 //getters
61 //getters
68− ApplicationInfo* application() const { return m_application; }
62+ Session* session() const { return m_session; }
69 Type type() const { return m_type; }
63 Type type() const { return m_type; }
70 State state() const { return m_state; }
64 State state() const { return m_state; }
71 QString name() const { return m_name; }
65 QString name() const { return m_name; }
72− MirSurfaceItem* parentSurface() const { return m_parentSurface; }
66+ bool live() const { return m_live; }
73− QList<MirSurfaceItem*> childSurfaceList();
74
67
75− void setApplication(ApplicationInfo* item);
68+ void setSession(Session* item);
76− void setParentSurface(MirSurfaceItem* item);
69+ void setScreenshot(const QUrl& screenshot);
70+ void setLive(bool live);
77
71
78 Q_INVOKABLE void setState(State newState);
72 Q_INVOKABLE void setState(State newState);
79 Q_INVOKABLE void release();
73 Q_INVOKABLE void release();
@@ -81,42 +75,41 @@ public:
81Q_SIGNALS:
75Q_SIGNALS:
82 void typeChanged(Type);
76 void typeChanged(Type);
83 void stateChanged(State);
77 void stateChanged(State);
84− void nameChanged(QString);
78+ void liveChanged(bool live);
85− void parentSurfaceChanged(MirSurfaceItem*);
86− void childSurfacesChanged();
87−
88− void removed();
89
79
90 void inputMethodRequested();
80 void inputMethodRequested();
91 void inputMethodDismissed();
81 void inputMethodDismissed();
92
82
83+ // internal mock use
84+ void deregister();
85+
93private Q_SLOTS:
86private Q_SLOTS:
94 void onFocusChanged();
87 void onFocusChanged();
95 void onComponentStatusChanged(QQmlComponent::Status status);
88 void onComponentStatusChanged(QQmlComponent::Status status);
96 void onQmlWantInputMethodChanged();
89 void onQmlWantInputMethodChanged();
97
90
98private:
91private:
99− void addChildSurface(MirSurfaceItem* surface);
92+ explicit MirSurfaceItem(const QString& name,
100− void removeChildSurface(MirSurfaceItem* surface);
93+ Type type,
101−
94+ State state,
102− QQmlListProperty<MirSurfaceItem> childSurfaces();
95+ const QUrl& screenshot,
103− static int childSurfaceCount(QQmlListProperty<MirSurfaceItem> *prop);
96+ const QString &qmlFilePath = QString(),
104− static MirSurfaceItem* childSurfaceAt(QQmlListProperty<MirSurfaceItem> *prop, int index);
97+ QQuickItem *parent = 0);
105
98
106 void createQmlContentItem();
99 void createQmlContentItem();
107 void printComponentErrors();
100 void printComponentErrors();
108
101
109− ApplicationInfo* m_application;
102+ Session* m_session;
110 const QString m_name;
103 const QString m_name;
111 const Type m_type;
104 const Type m_type;
112 State m_state;
105 State m_state;
113−
106+ bool m_live;
114− MirSurfaceItem* m_parentSurface;
115− QList<MirSurfaceItem*> m_children;
116
107
117 QQmlComponent *m_qmlContentComponent;
108 QQmlComponent *m_qmlContentComponent;
118 QQuickItem *m_qmlItem;
109 QQuickItem *m_qmlItem;
119 QUrl m_screenshotUrl;
110 QUrl m_screenshotUrl;
111+
112+ friend class SurfaceManager;
120};
113};
121
114
122Q_DECLARE_METATYPE(MirSurfaceItem*)
115Q_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) :
35{
35{
36}
36}
37
37
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+
38void SurfaceManager::registerSurface(MirSurfaceItem *surface)
51void SurfaceManager::registerSurface(MirSurfaceItem *surface)
39{
52{
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+ });
40 connect(surface, &MirSurfaceItem::inputMethodRequested,
60 connect(surface, &MirSurfaceItem::inputMethodRequested,
41 this, &SurfaceManager::showInputMethod);
61 this, &SurfaceManager::showInputMethod);
42 connect(surface, &MirSurfaceItem::inputMethodDismissed,
62 connect(surface, &MirSurfaceItem::inputMethodDismissed,
43 this, &SurfaceManager::hideInputMethod);
63 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);
51}
64}
52
65
53void SurfaceManager::showInputMethod()
66void SurfaceManager::showInputMethod()
tests/mocks/Unity/Application/SurfaceManager.h+6−2
@@ -19,7 +19,7 @@
19
19
20#include <QObject>
20#include <QObject>
21
21
22−class MirSurfaceItem;
22+#include "MirSurfaceItem.h"
23
23
24class SurfaceManager : public QObject
24class SurfaceManager : public QObject
25{
25{
@@ -29,9 +29,13 @@ public:
29
29
30 static SurfaceManager *singleton();
30 static SurfaceManager *singleton();
31
31
32+ Q_INVOKABLE MirSurfaceItem *createSurface(const QString& name,
33+ MirSurfaceItem::Type type,
34+ MirSurfaceItem::State state,
35+ const QUrl& screenshot);
36+
32 // Internal mock use
37 // Internal mock use
33 void registerSurface(MirSurfaceItem *surface);
38 void registerSurface(MirSurfaceItem *surface);
34− void unregisterSurface(MirSurfaceItem *surface);
35
39
36 // To be used in the tests
40 // To be used in the tests
37 Q_INVOKABLE MirSurfaceItem *inputMethodSurface();
41 Q_INVOKABLE MirSurfaceItem *inputMethodSurface();
tests/mocks/Unity/Application/plugin.cpp+37−4
@@ -18,8 +18,12 @@
18#include "ApplicationInfo.h"
18#include "ApplicationInfo.h"
19#include "ApplicationManager.h"
19#include "ApplicationManager.h"
20#include "ApplicationScreenshotProvider.h"
20#include "ApplicationScreenshotProvider.h"
21+#include "Session.h"
21#include "MirSurfaceItem.h"
22#include "MirSurfaceItem.h"
23+#include "MirSurfaceItemModel.h"
22#include "SurfaceManager.h"
24#include "SurfaceManager.h"
25+#include "SessionManager.h"
26+#include "ApplicationTestInterface.h"
23
27
24#include <qqml.h>
28#include <qqml.h>
25#include <QQmlEngine>
29#include <QQmlEngine>
@@ -36,18 +40,45 @@ static QObject* surfaceManagerSingleton(QQmlEngine* engine, QJSEngine* scriptEng
36 return SurfaceManager::singleton();
40 return SurfaceManager::singleton();
37}
41}
38
42
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+
39void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
60void FakeUnityApplicationQmlPlugin::registerTypes(const char *uri)
40{
61{
62+ qRegisterMetaType<Session*>("Session*");
63+ qRegisterMetaType<ApplicationInfo*>("ApplicationInfo*");
64+ qRegisterMetaType<MirSurfaceItemModel*>("SessionModel*");
41 qRegisterMetaType<MirSurfaceItem*>("MirSurfaceItem*");
65 qRegisterMetaType<MirSurfaceItem*>("MirSurfaceItem*");
66+ qRegisterMetaType<MirSurfaceItemModel*>("MirSurfaceItemModel*");
42
67
43 qmlRegisterUncreatableType<unity::shell::application::ApplicationManagerInterface>(uri, 0, 1, "ApplicationManagerInterface", "Abstract interface. Cannot be created in QML");
68 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−
47 qmlRegisterUncreatableType<unity::shell::application::ApplicationInfoInterface>(uri, 0, 1, "ApplicationInfoInterface", "Abstract interface. Cannot be created in QML");
69 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+
48 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
73 qmlRegisterType<ApplicationInfo>(uri, 0, 1, "ApplicationInfo");
49
74
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");
51}
82}
52
83
53void FakeUnityApplicationQmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
84void FakeUnityApplicationQmlPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
@@ -55,4 +86,6 @@ void FakeUnityApplicationQmlPlugin::initializeEngine(QQmlEngine *engine, const c
55 QQmlExtensionPlugin::initializeEngine(engine, uri);
86 QQmlExtensionPlugin::initializeEngine(engine, uri);
56
87
57 engine->addImageProvider(QLatin1String("application"), new ApplicationScreenshotProvider(ApplicationManager::singleton()));
88 engine->addImageProvider(QLatin1String("application"), new ApplicationScreenshotProvider(ApplicationManager::singleton()));
89+ // make sure we initialise our test interface.
90+ applicationTestInterface(engine, nullptr);
58}
91}
tests/mocks/Unity/Indicators/Indicators.qmltypes+20
@@ -159,6 +159,26 @@ Module {
159 Property { name: "sourceModel"; type: "QAbstractItemModel"; isPointer: true }
159 Property { name: "sourceModel"; type: "QAbstractItemModel"; isPointer: true }
160 }
160 }
161 Component { name: "QIdentityProxyModel"; prototype: "QAbstractProxyModel" }
161 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+ }
162 Component {
182 Component {
163 name: "UnityMenuModelStack"
183 name: "UnityMenuModelStack"
164 prototype: "QObject"
184 prototype: "QObject"
tests/mocks/Unity/Unity.qmltypes+30−2
@@ -36,6 +36,10 @@ Module {
36 prototype: "unity::shell::scopes::PreviewModelInterface"
36 prototype: "unity::shell::scopes::PreviewModelInterface"
37 exports: ["Unity/FakePreviewModel 0.2"]
37 exports: ["Unity/FakePreviewModel 0.2"]
38 exportMetaObjectRevisions: [0]
38 exportMetaObjectRevisions: [0]
39+ Method {
40+ name: "setLoaded"
41+ Parameter { type: "bool" }
42+ }
39 }
43 }
40 Component {
44 Component {
41 name: "PreviewStack"
45 name: "PreviewStack"
@@ -59,9 +63,9 @@ Module {
59 Component {
63 Component {
60 name: "ResultsModel"
64 name: "ResultsModel"
61 prototype: "unity::shell::scopes::ResultsModelInterface"
65 prototype: "unity::shell::scopes::ResultsModelInterface"
62− exports: ["Unity/ResultsModel 0.2"]
66+ exports: ["Unity/FakeResultsModel 0.2", "Unity/ResultsModel 0.2"]
63 isCreatable: false
67 isCreatable: false
64− exportMetaObjectRevisions: [0]
68+ exportMetaObjectRevisions: [0, 0]
65 }
69 }
66 Component {
70 Component {
67 name: "Scope"
71 name: "Scope"
@@ -134,7 +138,13 @@ Module {
134 }
138 }
135 Method { name: "clear" }
139 Method { name: "clear" }
136 Method { name: "load" }
140 Method { name: "load" }
141+ Method {
142+ name: "getScopeFromAll"
143+ type: "Scope*"
144+ Parameter { name: "scope_id"; type: "string" }
145+ }
137 }
146 }
147+ Component { name: "SettingsModel"; prototype: "unity::shell::scopes::SettingsModelInterface" }
138 Component {
148 Component {
139 name: "unity::shell::scopes::CategoriesInterface"
149 name: "unity::shell::scopes::CategoriesInterface"
140 prototype: "QAbstractListModel"
150 prototype: "QAbstractListModel"
@@ -402,4 +412,22 @@ Module {
402 Parameter { name: "scopeId"; type: "string" }
412 Parameter { name: "scopeId"; type: "string" }
403 }
413 }
404 }
414 }
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+ }
405}
433}
tests/qmltests/CMakeLists.txt+1
@@ -86,3 +86,4 @@ add_qml_test(Stages ApplicationWindow ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINAR
86add_qml_test(Stages PhoneStage ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
86add_qml_test(Stages PhoneStage ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
87add_qml_test(Stages SpreadDelegate ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
87add_qml_test(Stages SpreadDelegate ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
88add_qml_test(Stages SurfaceContainer ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/single")
88add_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 {
97 var application = ApplicationManager.startApplication("dialer-app");
97 var application = ApplicationManager.startApplication("dialer-app");
98 ApplicationManager.focusApplication("dialer-app");
98 ApplicationManager.focusApplication("dialer-app");
99 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
99 tryCompare(ApplicationManager, "focusedApplicationId", "dialer-app");
100− tryCompare(application, "state", ApplicationInfo.Running);
100+ tryCompare(application, "state", ApplicationInfoInterface.Running);
101
101
102 if (!data.focused) { ApplicationManager.unfocusCurrentApplication(); }
102 if (!data.focused) { ApplicationManager.unfocusCurrentApplication(); }
103 }
103 }
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 @@
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
15 */
16
16
17−import QtQuick 2.0
17+import QtQuick 2.1
18+import QtQuick.Layouts 1.1
18import QtTest 1.0
19import QtTest 1.0
19import Unity.Test 0.1 as UT
20import Unity.Test 0.1 as UT
20import ".."
21import ".."
@@ -32,14 +33,15 @@ Rectangle {
32 Component.onCompleted: {
33 Component.onCompleted: {
33 root.fakeApplication = ApplicationManager.add("gallery-app");
34 root.fakeApplication = ApplicationManager.add("gallery-app");
34 root.fakeApplication.manualSurfaceCreation = true;
35 root.fakeApplication.manualSurfaceCreation = true;
35− root.fakeApplication.setState(ApplicationInfo.Starting);
36+ root.fakeApplication.setState(ApplicationInfoInterface.Starting);
36 }
37 }
37 property QtObject fakeApplication: null
38 property QtObject fakeApplication: null
39+ readonly property var fakeSession: fakeApplication ? fakeApplication.session : null
38
40
39 Connections {
41 Connections {
40 target: fakeApplication
42 target: fakeApplication
41− onSurfaceChanged: {
43+ onSessionChanged: {
42− surfaceCheckbox.checked = fakeApplication.surface !== null;
44+ sessionCheckbox.checked = fakeApplication.session !== null
43 }
45 }
44 }
46 }
45
47
@@ -50,15 +52,20 @@ Rectangle {
50 application: fakeApplication
52 application: fakeApplication
51 }
53 }
52 }
54 }
53− Loader {
55+ FocusScope {
54− id: applicationWindowLoader
56+ id: appFocus
55 anchors {
57 anchors {
56 top: parent.top
58 top: parent.top
57 bottom: parent.bottom
59 bottom: parent.bottom
58 left: parent.left
60 left: parent.left
59 }
61 }
60 width: units.gu(40)
62 width: units.gu(40)
63+
64+ Loader {
65+ id: applicationWindowLoader
66+ anchors.fill: parent
61− sourceComponent: applicationWindowComponent
67+ sourceComponent: applicationWindowComponent
68+ }
62 }
69 }
63
70
64 Rectangle {
71 Rectangle {
@@ -66,30 +73,55 @@ Rectangle {
66 anchors {
73 anchors {
67 top: parent.top
74 top: parent.top
68 bottom: parent.bottom
75 bottom: parent.bottom
69− left: applicationWindowLoader.right
76+ left: appFocus.right
70 right: parent.right
77 right: parent.right
71 }
78 }
72
79
73− Column {
80+ ColumnLayout {
74 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
81 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
75 spacing: units.gu(1)
82 spacing: units.gu(1)
76− Row {
83+
77− anchors { left: parent.left; right: parent.right }
84+ RowLayout {
85+ Layout.fillWidth: true
86+
78 CheckBox {
87 CheckBox {
79− id: surfaceCheckbox; checked: false
88+ id: sessionCheckbox; checked: false
80 onCheckedChanged: {
89 onCheckedChanged: {
81 if (applicationWindowLoader.status !== Loader.Ready)
90 if (applicationWindowLoader.status !== Loader.Ready)
82 return;
91 return;
83
92
84− if (checked && !fakeApplication.surface) {
93+ if (checked && !fakeApplication.session) {
85− fakeApplication.createSurface();
94+ fakeApplication.createSession();
86− } else if (!checked && fakeApplication.surface) {
95+ } else if (!checked && fakeApplication.session) {
87− fakeApplication.surface.release();
96+ fakeApplication.session.release();
88 }
97 }
89 }
98 }
90 }
99 }
91− Label { text: "Surface" }
100+ Label {
101+ text: "Session"
102+ anchors.verticalCenter: parent.verticalCenter
103+ }
92 }
104 }
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+
93 ListItem.ItemSelector {
125 ListItem.ItemSelector {
94 id: appStateSelector
126 id: appStateSelector
95 anchors { left: parent.left; right: parent.right }
127 anchors { left: parent.left; right: parent.right }
@@ -100,13 +132,13 @@ Rectangle {
100 "Stopped"]
132 "Stopped"]
101 property int selectedApplicationState: {
133 property int selectedApplicationState: {
102 if (model[selectedIndex] === "Starting") {
134 if (model[selectedIndex] === "Starting") {
103− return ApplicationInfo.Starting;
135+ return ApplicationInfoInterface.Starting;
104 } else if (model[selectedIndex] === "Running") {
136 } else if (model[selectedIndex] === "Running") {
105− return ApplicationInfo.Running;
137+ return ApplicationInfoInterface.Running;
106 } else if (model[selectedIndex] === "Suspended") {
138 } else if (model[selectedIndex] === "Suspended") {
107− return ApplicationInfo.Suspended;
139+ return ApplicationInfoInterface.Suspended;
108 } else {
140 } else {
109− return ApplicationInfo.Stopped;
141+ return ApplicationInfoInterface.Stopped;
110 }
142 }
111 }
143 }
112 onSelectedApplicationStateChanged: {
144 onSelectedApplicationStateChanged: {
@@ -114,6 +146,7 @@ Rectangle {
114 fakeApplication.setState(selectedApplicationState);
146 fakeApplication.setState(selectedApplicationState);
115 }
147 }
116 }
148 }
149+
117 }
150 }
118 }
151 }
119
152
@@ -123,10 +156,10 @@ Rectangle {
123 when: windowShown
156 when: windowShown
124
157
125 // just to make them shorter
158 // just to make them shorter
126− property int appStarting: ApplicationInfo.Starting
159+ property int appStarting: ApplicationInfoInterface.Starting
127− property int appRunning: ApplicationInfo.Running
160+ property int appRunning: ApplicationInfoInterface.Running
128− property int appSuspended: ApplicationInfo.Suspended
161+ property int appSuspended: ApplicationInfoInterface.Suspended
129− property int appStopped: ApplicationInfo.Stopped
162+ property int appStopped: ApplicationInfoInterface.Stopped
130
163
131 function setApplicationState(appState) {
164 function setApplicationState(appState) {
132 switch (appState) {
165 switch (appState) {
@@ -170,6 +203,14 @@ Rectangle {
170 findInterestingApplicationWindowChildren();
203 findInterestingApplicationWindowChildren();
171 }
204 }
172
205
206+ function initSession() {
207+ sessionCheckbox.checked = true;
208+ sessionControl.surfaceCheckbox.checked = true;
209+ }
210+ function cleanupSession() {
211+ sessionCheckbox.checked = false;
212+ }
213+
173 function cleanup() {
214 function cleanup() {
174 forgetApplicationWindowChildren();
215 forgetApplicationWindowChildren();
175
216
@@ -177,10 +218,10 @@ Rectangle {
177 applicationWindowLoader.active = false;
218 applicationWindowLoader.active = false;
178
219
179 appStateSelector.selectedIndex = 0;
220 appStateSelector.selectedIndex = 0;
180− surfaceCheckbox.checked = false;
221+ cleanupSession();
181
222
182− if (fakeApplication.surface)
223+ if (fakeApplication.session)
183− fakeApplication.surface.release();
224+ fakeApplication.session.release();
184
225
185 applicationWindowLoader.active = true;
226 applicationWindowLoader.active = true;
186 }
227 }
@@ -197,7 +238,7 @@ Rectangle {
197 verify(stateGroup.state === "splashScreen");
238 verify(stateGroup.state === "splashScreen");
198
239
199 if (data.swapInitOrder) {
240 if (data.swapInitOrder) {
200− surfaceCheckbox.checked = true;
241+ initSession();
201 } else {
242 } else {
202 setApplicationState(appRunning);
243 setApplicationState(appRunning);
203 }
244 }
@@ -207,14 +248,14 @@ Rectangle {
207 if (data.swapInitOrder) {
248 if (data.swapInitOrder) {
208 setApplicationState(appRunning);
249 setApplicationState(appRunning);
209 } else {
250 } else {
210− surfaceCheckbox.checked = true;
251+ initSession();
211 }
252 }
212
253
213 tryCompare(stateGroup, "state", "surface");
254 tryCompare(stateGroup, "state", "surface");
214 }
255 }
215
256
216 function test_suspendedAppShowsSurface() {
257 function test_suspendedAppShowsSurface() {
217− surfaceCheckbox.checked = true;
258+ initSession();
218 setApplicationState(appRunning);
259 setApplicationState(appRunning);
219
260
220 tryCompare(stateGroup, "state", "surface");
261 tryCompare(stateGroup, "state", "surface");
@@ -228,7 +269,7 @@ Rectangle {
228 }
269 }
229
270
230 function test_killedAppShowsScreenshot() {
271 function test_killedAppShowsScreenshot() {
231− surfaceCheckbox.checked = true;
272+ initSession();
232 setApplicationState(appRunning);
273 setApplicationState(appRunning);
233 tryCompare(stateGroup, "state", "surface");
274 tryCompare(stateGroup, "state", "surface");
234
275
@@ -241,13 +282,13 @@ Rectangle {
241 setApplicationState(appStopped);
282 setApplicationState(appStopped);
242
283
243 tryCompare(stateGroup, "state", "screenshot");
284 tryCompare(stateGroup, "state", "screenshot");
244− tryCompare(fakeApplication, "surface", null);
285+ tryCompare(fakeApplication, "session", null);
245 }
286 }
246
287
247 function test_restartApp() {
288 function test_restartApp() {
248 var screenshotImage = findChild(applicationWindowLoader.item, "screenshotImage");
289 var screenshotImage = findChild(applicationWindowLoader.item, "screenshotImage");
249
290
250− surfaceCheckbox.checked = true;
291+ initSession();
251 setApplicationState(appRunning);
292 setApplicationState(appRunning);
252 tryCompare(stateGroup, "state", "surface");
293 tryCompare(stateGroup, "state", "surface");
253 waitUntilTransitionsEnd();
294 waitUntilTransitionsEnd();
@@ -259,28 +300,28 @@ Rectangle {
259
300
260 tryCompare(stateGroup, "state", "screenshot");
301 tryCompare(stateGroup, "state", "screenshot");
261 waitUntilTransitionsEnd();
302 waitUntilTransitionsEnd();
262− tryCompare(fakeApplication, "surface", null);
303+ tryCompare(fakeApplication, "session", null);
263
304
264 // and restart it
305 // and restart it
265 setApplicationState(appStarting);
306 setApplicationState(appStarting);
266
307
267 waitUntilTransitionsEnd();
308 waitUntilTransitionsEnd();
268 verify(stateGroup.state === "screenshot");
309 verify(stateGroup.state === "screenshot");
269− verify(fakeApplication.surface === null);
310+ verify(fakeSession === null);
270
311
271 setApplicationState(appRunning);
312 setApplicationState(appRunning);
272
313
273 waitUntilTransitionsEnd();
314 waitUntilTransitionsEnd();
274 verify(stateGroup.state === "screenshot");
315 verify(stateGroup.state === "screenshot");
275
316
276− surfaceCheckbox.checked = true;
317+ initSession();
277
318
278 tryCompare(stateGroup, "state", "surface");
319 tryCompare(stateGroup, "state", "surface");
279 tryCompare(screenshotImage, "status", Image.Null);
320 tryCompare(screenshotImage, "status", Image.Null);
280 }
321 }
281
322
282 function test_appCrashed() {
323 function test_appCrashed() {
283− surfaceCheckbox.checked = true;
324+ initSession();
284 setApplicationState(appRunning);
325 setApplicationState(appRunning);
285 tryCompare(stateGroup, "state", "surface");
326 tryCompare(stateGroup, "state", "surface");
286 waitUntilTransitionsEnd();
327 waitUntilTransitionsEnd();
@@ -289,39 +330,39 @@ Rectangle {
289 setApplicationState(appStopped);
330 setApplicationState(appStopped);
290
331
291 tryCompare(stateGroup, "state", "screenshot");
332 tryCompare(stateGroup, "state", "screenshot");
292− tryCompare(fakeApplication, "surface", null);
333+ tryCompare(fakeApplication, "session", null);
293 }
334 }
294
335
295 function test_keepSurfaceWhileInvisible() {
336 function test_keepSurfaceWhileInvisible() {
296− surfaceCheckbox.checked = true;
337+ initSession();
297 setApplicationState(appRunning);
338 setApplicationState(appRunning);
298 tryCompare(stateGroup, "state", "surface");
339 tryCompare(stateGroup, "state", "surface");
299 waitUntilTransitionsEnd();
340 waitUntilTransitionsEnd();
300− verify(fakeApplication.surface !== null);
341+ verify(fakeSession.surface !== null);
301
342
302 applicationWindowLoader.item.visible = false;
343 applicationWindowLoader.item.visible = false;
303
344
304 waitUntilTransitionsEnd();
345 waitUntilTransitionsEnd();
305 verify(stateGroup.state === "surface");
346 verify(stateGroup.state === "surface");
306− verify(fakeApplication.surface !== null);
347+ verify(fakeSession.surface !== null);
307
348
308 applicationWindowLoader.item.visible = true;
349 applicationWindowLoader.item.visible = true;
309
350
310 waitUntilTransitionsEnd();
351 waitUntilTransitionsEnd();
311 verify(stateGroup.state === "surface");
352 verify(stateGroup.state === "surface");
312− verify(fakeApplication.surface !== null);
353+ verify(fakeSession.surface !== null);
313 }
354 }
314
355
315 function test_touchesReachSurfaceWhenItsShown() {
356 function test_touchesReachSurfaceWhenItsShown() {
316 setApplicationState(appRunning);
357 setApplicationState(appRunning);
317− surfaceCheckbox.checked = true;
358+ initSession();
318
359
319 tryCompare(stateGroup, "state", "surface");
360 tryCompare(stateGroup, "state", "surface");
320
361
321 waitUntilTransitionsEnd();
362 waitUntilTransitionsEnd();
322
363
323 // Because doing stuff in C++ is a PITA we keep the counter in the interal qml impl.
364 // 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");
325 fakeSurface.touchPressCount = 0;
366 fakeSurface.touchPressCount = 0;
326 fakeSurface.touchReleaseCount = 0;
367 fakeSurface.touchReleaseCount = 0;
327
368
@@ -333,14 +374,25 @@ Rectangle {
333 }
374 }
334
375
335 function test_showNothingOnSuddenSurfaceLoss() {
376 function test_showNothingOnSuddenSurfaceLoss() {
336− surfaceCheckbox.checked = true;
377+ initSession();
337 setApplicationState(appRunning);
378 setApplicationState(appRunning);
338 tryCompare(stateGroup, "state", "surface");
379 tryCompare(stateGroup, "state", "surface");
339 waitUntilTransitionsEnd();
380 waitUntilTransitionsEnd();
340
381
341− surfaceCheckbox.checked = false;
382+ cleanupSession();
342
383
343 verify(stateGroup.state === "void");
384 verify(stateGroup.state === "void");
344 }
385 }
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+ }
345 }
397 }
346}
398}
tests/qmltests/Stages/tst_PhoneStage.qml+1−1
@@ -64,7 +64,7 @@ Item {
64 anchors { left: parent.left; right: parent.right }
64 anchors { left: parent.left; right: parent.right }
65 text: "Stop Selected"
65 text: "Stop Selected"
66 onClicked: {
66 onClicked: {
67− ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfo.Stopped);
67+ ApplicationManager.get(appList.selectedAppIndex).setState(ApplicationInfoInterface.Stopped);
68 }
68 }
69 }
69 }
70 }
70 }
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 {
28 width: units.gu(70)
28 width: units.gu(70)
29 height: units.gu(70)
29 height: units.gu(70)
30
30
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−
68 Component {
31 Component {
69 id: surfaceContainerComponent
32 id: surfaceContainerComponent
70 SurfaceContainer {
33 SurfaceContainer {
@@ -98,19 +61,20 @@ Rectangle {
98 Row {
61 Row {
99 anchors { left: parent.left; right: parent.right }
62 anchors { left: parent.left; right: parent.right }
100 CheckBox {
63 CheckBox {
101− id: surfaceCheckbox; checked: false;
64+ id: surfaceCheckbox;
65+ checked: false;
102 onCheckedChanged: {
66 onCheckedChanged: {
103 if (surfaceContainerLoader.status !== Loader.Ready)
67 if (surfaceContainerLoader.status !== Loader.Ready)
104 return;
68 return;
105
69
106 if (checked) {
70 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"));
108 surfaceContainerLoader.item.surface = fakeSurface;
75 surfaceContainerLoader.item.surface = fakeSurface;
109 } else {
76 } else {
110− var fakeSurface = surfaceContainerLoader.item.surface;
77+ ApplicationTest.removeSurface(surfaceContainerLoader.item.surface);
111− surfaceContainerLoader.item.surface = null;
112− fakeSurface.parent = null;
113− fakeSurface.destroy();
114 }
78 }
115 }
79 }
116 }
80 }
@@ -124,6 +88,12 @@ Rectangle {
124 }
88 }
125 }
89 }
126
90
91+ SignalSpy {
92+ id: surfaceSpy
93+ target: SurfaceManager
94+ signalName: "surfaceDestroyed"
95+ }
96+
127 UT.UnityTestCase {
97 UT.UnityTestCase {
128 id: testCase
98 id: testCase
129 name: "SurfaceContainer"
99 name: "SurfaceContainer"
@@ -134,6 +104,9 @@ Rectangle {
134 surfaceContainerLoader.active = false;
104 surfaceContainerLoader.active = false;
135 surfaceCheckbox.checked = false;
105 surfaceCheckbox.checked = false;
136 surfaceContainerLoader.active = true;
106 surfaceContainerLoader.active = true;
107+
108+ tryCompare(surfaceContainerLoader.item, "surface", null);
109+ surfaceSpy.clear();
137 }
110 }
138
111
139 /*
112 /*
@@ -150,5 +123,17 @@ Rectangle {
150 compare(fakeSurface.width, surfaceContainerLoader.item.width);
123 compare(fakeSurface.width, surfaceContainerLoader.item.width);
151 compare(fakeSurface.height, surfaceContainerLoader.item.height);
124 compare(fakeSurface.height, surfaceContainerLoader.item.height);
152 }
125 }
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+ }
153 }
138 }
154}
139}
tests/qmltests/tst_Shell.qml+12−11
@@ -144,7 +144,7 @@ Item {
144 verify(mainAppId != "");
144 verify(mainAppId != "");
145 var mainApp = ApplicationManager.findApplication(mainAppId);
145 var mainApp = ApplicationManager.findApplication(mainAppId);
146 verify(mainApp);
146 verify(mainApp);
147− tryCompare(mainApp, "state", ApplicationInfo.Running);
147+ tryCompare(mainApp, "state", ApplicationInfoInterface.Running);
148
148
149 // Try to suspend while proximity is engaged...
149 // Try to suspend while proximity is engaged...
150 Powerd.displayPowerStateChange(Powerd.Off, Powerd.Proximity);
150 Powerd.displayPowerStateChange(Powerd.Off, Powerd.Proximity);
@@ -157,7 +157,7 @@ Item {
157 tryCompare(greeter, "showProgress", 1);
157 tryCompare(greeter, "showProgress", 1);
158
158
159 tryCompare(ApplicationManager, "suspended", true);
159 tryCompare(ApplicationManager, "suspended", true);
160− compare(mainApp.state, ApplicationInfo.Suspended);
160+ compare(mainApp.state, ApplicationInfoInterface.Suspended);
161
161
162 // And wake up
162 // And wake up
163 Powerd.displayPowerStateChange(Powerd.On, 0);
163 Powerd.displayPowerStateChange(Powerd.On, 0);
@@ -166,7 +166,7 @@ Item {
166 // Swipe away greeter to focus app
166 // Swipe away greeter to focus app
167 swipeAwayGreeter();
167 swipeAwayGreeter();
168 tryCompare(ApplicationManager, "suspended", false);
168 tryCompare(ApplicationManager, "suspended", false);
169− compare(mainApp.state, ApplicationInfo.Running);
169+ compare(mainApp.state, ApplicationInfoInterface.Running);
170 tryCompare(ApplicationManager, "focusedApplicationId", mainAppId);
170 tryCompare(ApplicationManager, "focusedApplicationId", mainAppId);
171 }
171 }
172
172
@@ -237,9 +237,9 @@ Item {
237 function test_surfaceLosesFocusWhilePanelIsOpen() {
237 function test_surfaceLosesFocusWhilePanelIsOpen() {
238 var app = ApplicationManager.startApplication("dialer-app");
238 var app = ApplicationManager.startApplication("dialer-app");
239 // wait until the app is fully loaded (ie, real surface replaces splash screen)
239 // 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);
241
241
242− tryCompare(app.surface, "focus", true);
242+ tryCompare(app.session.surface, "focus", true);
243
243
244 // Drag the indicators panel half-open
244 // Drag the indicators panel half-open
245 var touchX = shell.width / 2;
245 var touchX = shell.width / 2;
@@ -250,7 +250,7 @@ Item {
250 true /* beginTouch */, false /* endTouch */);
250 true /* beginTouch */, false /* endTouch */);
251 verify(indicators.partiallyOpened);
251 verify(indicators.partiallyOpened);
252
252
253− tryCompare(app.surface, "focus", false);
253+ tryCompare(app.session.surface, "focus", false);
254
254
255 // And finish getting it open
255 // And finish getting it open
256 touchFlick(indicators,
256 touchFlick(indicators,
@@ -259,11 +259,11 @@ Item {
259 false /* beginTouch */, true /* endTouch */);
259 false /* beginTouch */, true /* endTouch */);
260 tryCompare(indicators, "fullyOpened", true);
260 tryCompare(indicators, "fullyOpened", true);
261
261
262− tryCompare(app.surface, "focus", false);
262+ tryCompare(app.session.surface, "focus", false);
263
263
264 dragToCloseIndicatorsPanel();
264 dragToCloseIndicatorsPanel();
265
265
266− tryCompare(app.surface, "focus", true);
266+ tryCompare(app.session.surface, "focus", true);
267 }
267 }
268
268
269 // Wait for the whole UI to settle down
269 // Wait for the whole UI to settle down
@@ -361,7 +361,7 @@ Item {
361
361
362 var app = ApplicationManager.startApplication("dialer-app");
362 var app = ApplicationManager.startApplication("dialer-app");
363 // wait until the app is fully loaded (ie, real surface replaces splash screen)
363 // 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);
365
365
366 // Minimize the application we just launched
366 // Minimize the application we just launched
367 swipeFromLeftEdge(units.gu(26) + 1);
367 swipeFromLeftEdge(units.gu(26) + 1);
@@ -389,13 +389,14 @@ Item {
389 tryCompare(indicators, "fullyClosed", true);
389 tryCompare(indicators, "fullyClosed", true);
390 }
390 }
391
391
392−
392+ function test_showAndHideGreeterDBusCalls() {
393− function test_showGreeterDBusCall() {
394 var greeter = findChild(shell, "greeter")
393 var greeter = findChild(shell, "greeter")
395 tryCompare(greeter, "showProgress", 0)
394 tryCompare(greeter, "showProgress", 0)
396 waitForRendering(greeter);
395 waitForRendering(greeter);
397 LightDM.Greeter.showGreeter()
396 LightDM.Greeter.showGreeter()
398 tryCompare(greeter, "showProgress", 1)
397 tryCompare(greeter, "showProgress", 1)
398+ LightDM.Greeter.hideGreeter()
399+ tryCompare(greeter, "showProgress", 0)
399 }
400 }
400
401
401 function test_login() {
402 function test_login() {
tests/qmltests/tst_ShellWithPin.qml+10−5
@@ -90,6 +90,8 @@ Item {
90 swipeAwayGreeter()
90 swipeAwayGreeter()
91 shell.failedLoginsDelayAttempts = -1
91 shell.failedLoginsDelayAttempts = -1
92 maxRetriesTextField.text = "-1"
92 maxRetriesTextField.text = "-1"
93+ AccountsService.enableLauncherWhileLocked = true
94+ AccountsService.enableIndicatorsWhileLocked = true
93 }
95 }
94
96
95 function cleanup() {
97 function cleanup() {
@@ -145,9 +147,13 @@ Item {
145
147
146 function test_disabledEdges() {
148 function test_disabledEdges() {
147 var launcher = findChild(shell, "launcher")
149 var launcher = findChild(shell, "launcher")
150+ tryCompare(launcher, "available", true)
151+ AccountsService.enableLauncherWhileLocked = false
148 tryCompare(launcher, "available", false)
152 tryCompare(launcher, "available", false)
149
153
150 var indicators = findChild(shell, "indicators")
154 var indicators = findChild(shell, "indicators")
155+ tryCompare(indicators, "available", true)
156+ AccountsService.enableIndicatorsWhileLocked = false
151 tryCompare(indicators, "available", false)
157 tryCompare(indicators, "available", false)
152 }
158 }
153
159
@@ -165,12 +171,9 @@ Item {
165 tryCompare(greeter, "fakeActiveForApp", "dialer-app")
171 tryCompare(greeter, "fakeActiveForApp", "dialer-app")
166 tryCompare(lockscreen, "shown", false)
172 tryCompare(lockscreen, "shown", false)
167 tryCompare(panel, "fullscreenMode", true)
173 tryCompare(panel, "fullscreenMode", true)
168− tryCompare(stage, "spreadEnabled", false)
169−
170− // These are normally false anyway, but confirm they remain so in
171− // emergency mode.
172− tryCompare(launcher, "available", false)
173 tryCompare(indicators, "available", false)
174 tryCompare(indicators, "available", false)
175+ tryCompare(launcher, "available", false)
176+ tryCompare(stage, "spreadEnabled", false)
174
177
175 // Cancel emergency mode, and go back to normal
178 // Cancel emergency mode, and go back to normal
176 waitForRendering(greeter)
179 waitForRendering(greeter)
@@ -180,6 +183,8 @@ Item {
180 tryCompare(greeter, "fakeActiveForApp", "")
183 tryCompare(greeter, "fakeActiveForApp", "")
181 tryCompare(lockscreen, "shown", true)
184 tryCompare(lockscreen, "shown", true)
182 tryCompare(panel, "fullscreenMode", false)
185 tryCompare(panel, "fullscreenMode", false)
186+ tryCompare(indicators, "available", true)
187+ tryCompare(launcher, "available", true)
183 tryCompare(stage, "spreadEnabled", true)
188 tryCompare(stage, "spreadEnabled", true)
184 }
189 }
185
190
tools/unlock-device+8−13
@@ -4,7 +4,7 @@
4# Our goal here is to get an Ubuntu Touch device into a testable unlocked state.
4# Our goal here is to get an Ubuntu Touch device into a testable unlocked state.
5# This will include a reboot.
5# This will include a reboot.
6
6
7−WAIT_COMMAND="adb reboot; sleep 5; adb wait-for-device; sleep 20"
7+WAIT_COMMAND="adb reboot; sleep 5; adb wait-for-device"
8
8
9while getopts s:w: opt; do
9while getopts s:w: opt; do
10 case $opt in
10 case $opt in
@@ -17,20 +17,15 @@ while getopts s:w: opt; do
17 esac
17 esac
18done
18done
19
19
20−UNLOCK_SCRIPT='
21−import dbus, logging;
22−from unity8 import process_helpers as helpers;
23−logging.basicConfig(level=logging.INFO);
24−bus = dbus.SystemBus().get_object("com.canonical.powerd", "/com/canonical/powerd");
25−cookie = bus.requestSysState("unlock-device-hold", 1, dbus_interface="com.canonical.powerd");
26−helpers.restart_unity_with_testability();
27−bus.clearSysState(cookie, dbus_interface="com.canonical.powerd");
28−helpers.unlock_unity()
29−'
30−
31eval "$WAIT_COMMAND"
20eval "$WAIT_COMMAND"
32
21
22+# Force a sleep of twenty no matter what, since we may need to wait for unity8
23+# to finish coming up (it's hard to tell when the greeter is actually rendered)
24+sleep 20
25+
26+GDBUS_CMD="gdbus call --session --dest com.canonical.UnityGreeter --object-path / --method com.canonical.UnityGreeter.HideGreeter && echo Greeter unlocked"
27+
33−UNLOCK_OUTPUT=$(adb shell "sudo -u phablet -i python3 -c '$UNLOCK_SCRIPT'" 2>&1)
28+UNLOCK_OUTPUT=$(adb shell "if [ \"\$(id -u)\" = 0 ]; then sudo -u phablet -i $GDBUS_CMD; else $GDBUS_CMD; fi" 2>&1)
34if echo "$UNLOCK_OUTPUT" | grep 'Greeter unlocked' >/dev/null; then
29if echo "$UNLOCK_OUTPUT" | grep 'Greeter unlocked' >/dev/null; then
35 echo "I: Unlock passed"
30 echo "I: Unlock passed"
36 exit 0
31 exit 0