on xenial help sign in
Merge trunk.
commite7358c196479eca339ad66d9e10c4619de069182 authorMichał Sawicz <michal.sawicz@canonical.com> dateFri 28 Mar 2014, 01:32 (13 years ago) parent7a6d21bfe8ee39
85 files changed+570−195
cmake/modules/QmlTest.cmake+20−7 data/unity8.conf+1−1 debian/changelog+29 plugins/Powerd/CMakeLists.txt+8 plugins/Powerd/Powerd.cpp+17 plugins/Powerd/Powerd.h+3 po/am.po+2−2 po/ar.po+2−2 po/ast.po+2−2 po/az.po+2−2 po/bg.po+2−2 po/bs.po+2−2 po/ca.po+2−2 po/ckb.po+2−2 po/cs.po+2−2 po/da.po+2−2 po/de.po+2−2 po/el.po+2−2 po/en_AU.po+2−2 po/en_GB.po+2−2 po/eo.po+2−2 po/es.po+2−2 po/eu.po+2−2 po/fa.po+2−2 po/fi.po+2−2 po/fo.po+2−2 po/fr.po+2−2 po/gd.po+2−2 po/gl.po+2−2 po/he.po+2−2 po/hi.po+2−2 po/hr.po+2−2 po/hu.po+2−2 po/hy.po+2−2 po/id.po+2−2 po/is.po+2−2 po/it.po+2−2 po/ja.po+2−2 po/km.po+2−2 po/kn.po+2−2 po/ko.po+2−2 po/ky.po+2−2 po/lo.po+2−2 po/lt.po+2−2 po/lv.po+2−2 po/ml.po+2−2 po/mr.po+2−2 po/ms.po+2−2 po/my.po+2−2 po/nb.po+2−2 po/nl.po+2−2 po/pl.po+2−2 po/pt.po+2−2 po/pt_BR.po+2−2 po/ro.po+2−2 po/ru.po+2−2 po/shn.po+2−2 po/si.po+2−2 po/sl.po+2−2 po/sq.po+2−2 po/sr.po+2−2 po/sv.po+2−2 po/sw.po+2−2 po/ta.po+2−2 po/te.po+2−2 po/tr.po+2−2 po/ug.po+2−2 po/uk.po+2−2 po/unity8.pot+14−28 po/vi.po+2−2 po/xh.po+2−2 po/zh_CN.po+2−2 po/zh_HK.po+2−2 po/zh_TW.po+2−2 qml/Components/LazyImage.qml+2−2 qml/Dash/DashApps.qml+1−1 qml/Notifications/Notification.qml+61−4 qml/Notifications/Notifications.qml+4 src/ApplicationArguments.h+2−2 src/Panel/Indicators/client/indicatorsclient.cpp+2−2 tests/autopilot/unity8/shell/tests/__init__.py+1−1 tests/qmltests/CMakeLists.txt+1 tests/qmltests/Components/tst_LazyImage.qml+6 tests/qmltests/Notifications/tst_Notifications.qml+27−13 tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+237
cmake/modules/QmlTest.cmake+20−7
@@ -80,13 +80,26 @@ macro(add_qml_test SUBPATH COMPONENT_NAME)
8080 endforeach(IMPORT_PATH)
8181 endif()
8282
83− set(qmltest_command
84− env ${qmltest_ENVIRONMENT}
85− ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
86− ${qmltestrunner_imports}
87− -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
88− -o -,txt
89− )
83+ string(TOLOWER "${CMAKE_GENERATOR}" cmake_generator_lower)
84+ if(cmake_generator_lower STREQUAL "unix makefiles")
85+ set(qmltest_command
86+ env ${qmltest_ENVIRONMENT}
87+ ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
88+ ${qmltestrunner_imports}
89+ -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
90+ -o -,txt
91+ $(FUNCTION)
92+ )
93+ else()
94+ set(qmltest_command
95+ env ${qmltest_ENVIRONMENT}
96+ ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
97+ ${qmltestrunner_imports}
98+ -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
99+ -o -,txt
100+ )
101+ endif()
102+
90103 add_custom_target(${qmltest_TARGET} ${qmltest_command})
91104
92105 if(NOT "${qmltest_PROPERTIES}" STREQUAL "")
data/unity8.conf+1−1
@@ -6,7 +6,7 @@ emits scope-ui-starting
66start on ((xsession SESSION=ubuntu-touch) or (xsession SESSION=ubuntu-touch-surfaceflinger)) and started dbus
77stop on desktop-end
88
9−kill timeout 30
9+kill timeout 120
1010
1111respawn
1212expect stop
debian/changelog+29
@@ -1,3 +1,32 @@
1+unity8 (7.84+14.04.20140327.1-0ubuntu1) trusty; urgency=low
2+
3+ [ Michał Sawicz ]
4+ * Increase kill timeout so that crashes are not truncated.
5+
6+ [ Ying-Chun Liu ]
7+ * Fix a small typo in LazyImage: scale -> scaleTo
8+
9+ [ Albert Astals ]
10+ * Make geometry calls for autopilot work again -geometry is a internal
11+ Qt argument that only works for QWidget based apps Before it was
12+ being returned to us in -args but now it's eaten so we need to use a
13+ different one, -windowgeometry
14+ * Make "Recent" translatable and update pot file
15+
16+ [ Mirco Müller ]
17+ * Make visual queue of (up to five) snap-decisions contract and expand
18+ according to visual design-spec.
19+
20+ [ Michael Terry ]
21+ * Pass user's preference for auto-brightness on to powerd. (LP:
22+ #1273174)
23+
24+ [ Michael Zanetti ]
25+ * allow executing a single test function example: make testShell
26+ FUNCTION="Shell::test_background"
27+
28+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Thu, 27 Mar 2014 12:38:21 +0000
29+
130unity8 (7.84+14.04.20140324.4-0ubuntu1) trusty; urgency=low
231
332 [ Michal Hruby ]
plugins/Powerd/CMakeLists.txt+8
@@ -1,4 +1,11 @@
11include(Plugins)
2+include(FindPkgConfig)
3+
4+pkg_search_module(GIO REQUIRED gio-2.0)
5+
6+include_directories(
7+ ${GIO_INCLUDE_DIRS}
8+)
29
310add_definitions(-DSM_BUSNAME=systemBus)
411
@@ -8,6 +15,7 @@ add_library(Powerd-qml MODULE
815 )
916
1017qt5_use_modules(Powerd-qml DBus Qml)
18+target_link_libraries(Powerd-qml ${GIO_LDFLAGS})
1119
1220export_qmlfiles(Powerd Powerd)
1321export_qmlplugin(Powerd 0.1 Powerd TARGETS Powerd-qml)
plugins/Powerd/Powerd.cpp+17
@@ -17,6 +17,13 @@
1717 */
1818
1919#include "Powerd.h"
20+#include <QDBusPendingCall>
21+
22+void autoBrightnessChanged(GSettings *settings, const gchar *key, QDBusInterface *powerd)
23+{
24+ bool value = g_settings_get_boolean(settings, key);
25+ powerd->asyncCall("userAutobrightnessEnable", QVariant(value));
26+}
2027
2128Powerd::Powerd(QObject* parent)
2229 : QObject(parent),
@@ -33,4 +40,14 @@ Powerd::Powerd(QObject* parent)
3340 "DisplayPowerStateChange",
3441 this,
3542 SIGNAL(displayPowerStateChange(int, unsigned int)));
43+
44+ systemSettings = g_settings_new("com.ubuntu.touch.system");
45+ g_signal_connect(systemSettings, "changed::auto-brightness", G_CALLBACK(autoBrightnessChanged), powerd);
46+ autoBrightnessChanged(systemSettings, "auto-brightness", powerd);
47+}
48+
49+Powerd::~Powerd()
50+{
51+ g_signal_handlers_disconnect_by_data(systemSettings, powerd);
52+ g_object_unref(systemSettings);
3653}
plugins/Powerd/Powerd.h+3
@@ -20,6 +20,7 @@
2020#ifndef UNITY_POWERD_H
2121#define UNITY_POWERD_H
2222
23+#include <gio/gio.h>
2324#include <QtCore/QObject>
2425#include <QtDBus/QDBusInterface>
2526
@@ -43,12 +44,14 @@ public:
4344 };
4445
4546 explicit Powerd(QObject *parent = 0);
47+ ~Powerd();
4648
4749Q_SIGNALS:
4850 void displayPowerStateChange(int status, unsigned int flags);
4951
5052private:
5153 QDBusInterface *powerd;
54+ GSettings *systemSettings;
5255};
5356
5457#endif
po/am.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ar.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
1818"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ast.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/az.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/bg.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/bs.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ca.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ckb.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/cs.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/da.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/de.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/el.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/en_AU.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/en_GB.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/eo.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/es.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/eu.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/fa.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/fi.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/fo.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/fr.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/gd.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : "
1818"(n > 2 && n < 20) ? 2 : 3;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/gl.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/he.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/hi.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/hr.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/hu.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/hy.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/id.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/is.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/it.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ja.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/km.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/kn.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ko.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ky.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/lo.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/lt.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"(n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/lv.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ml.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/mr.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ms.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/my.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/nb.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/nl.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/pl.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
1818"|| n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/pt.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/pt_BR.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n > 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ro.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=(n == 1 ? 0: (((n % 100 > 19) || ((n % 100 "
1818"== 0) && (n != 0))) ? 2: 1));\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ru.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/shn.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=(n == 1) ? 0 : 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/si.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/sl.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || "
1818"n%100==4 ? 3 : 0);\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/sq.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:25+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/sr.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/sv.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/sw.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ta.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020"Language: ta\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
po/te.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/tr.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/ug.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/uk.po+2−2
@@ -16,8 +16,8 @@ msgstr ""
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
1818"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
20−"X-Generator: Launchpad (build 16963)\n"
19+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
20+"X-Generator: Launchpad (build 16967)\n"
2121
2222#: plugins/Unity/Launcher/launcheritem.cpp:43
2323#: plugins/Unity/Launcher/launcheritem.cpp:73
po/unity8.pot+14−28
@@ -8,7 +8,7 @@ msgid ""
88msgstr ""
99"Project-Id-Version: unity8\n"
1010"Report-Msgid-Bugs-To: \n"
11−"POT-Creation-Date: 2014-02-13 18:37+0000\n"
11+"POT-Creation-Date: 2014-03-25 16:48+0100\n"
1212"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,7 +16,6 @@ msgstr ""
1616"MIME-Version: 1.0\n"
1717"Content-Type: text/plain; charset=CHARSET\n"
1818"Content-Transfer-Encoding: 8bit\n"
19−"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
2019
2120#: plugins/Unity/Launcher/launcheritem.cpp:43
2221#: plugins/Unity/Launcher/launcheritem.cpp:73
@@ -73,7 +72,7 @@ msgid ""
7372"phone<br><br>Tap on the screen to start"
7473msgstr ""
7574
76−#: qml/Components/PageHeader.qml:340
75+#: qml/Components/PageHeader.qml:365
7776msgid "Recent searches"
7877msgstr ""
7978
@@ -81,28 +80,19 @@ msgstr ""
8180msgid "See more"
8281msgstr ""
8382
84−#: qml/Components/SeeMore.qml:57
83+#: qml/Components/SeeMore.qml:58
8584msgid "See less"
8685msgstr ""
8786
88−#: qml/Dash/Apps/AppPreview.qml:136 qml/Dash/Previews/PreviewRating.qml:70
89−msgid "Rate this"
87+#: qml/Dash/DashApps.qml:38
88+msgid "Recent"
9089msgstr ""
9190
92−#. TRANSLATORS: Number of persons who rated this app/video/whatever
93−#: qml/Dash/Previews/Header.qml:93
91+#: qml/Dash/PreviewListView.qml:52
9492#, qt-format
95−msgid "(%1)"
93+msgid "%1 Preview"
9694msgstr ""
9795
98−#. TRANSLATORS: Number of persons who wrote reviews for this app/video/whatever
99−#: qml/Dash/Previews/Header.qml:105
100−#, qt-format
101−msgid "%1 review"
102−msgid_plural "%1 reviews"
103−msgstr[0] ""
104−msgstr[1] ""
105−
10696#: qml/Dash/Previews/PreviewActionCombo.qml:34
10797msgid "More..."
10898msgstr ""
@@ -111,20 +101,16 @@ msgstr ""
111101msgid "Less..."
112102msgstr ""
113103
114−#: qml/Dash/Previews/PreviewRating.qml:114 qml/Dash/Previews/Reviews.qml:74
115−msgid "Add a review"
116−msgstr ""
117−
118−#: qml/Dash/Previews/PreviewRating.qml:153 qml/Dash/Previews/Reviews.qml:121
119−msgid "Send"
104+#: qml/Dash/Previews/PreviewRatingInput.qml:81
105+msgid "Rate this"
120106msgstr ""
121107
122−#: qml/Dash/Previews/Reviews.qml:86
123−msgid "Review"
108+#: qml/Dash/Previews/PreviewRatingInput.qml:126
109+msgid "Add a review"
124110msgstr ""
125111
126−#: qml/Dash/Previews/Reviews.qml:139
127−msgid "Comments:"
112+#: qml/Dash/Previews/PreviewRatingInput.qml:166
113+msgid "Send"
128114msgstr ""
129115
130116#: qml/Greeter/Lockscreen.qml:149
@@ -172,7 +158,7 @@ msgstr ""
172158msgid "Search"
173159msgstr ""
174160
175−#: qml/Shell.qml:440
161+#: qml/Shell.qml:417
176162#, qt-format
177163msgid "Please enter %1"
178164msgstr ""
po/vi.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/xh.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/zh_CN.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/zh_HK.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
po/zh_TW.po+2−2
@@ -15,8 +15,8 @@ msgstr ""
1515"Content-Type: text/plain; charset=UTF-8\n"
1616"Content-Transfer-Encoding: 8bit\n"
1717"Plural-Forms: nplurals=1; plural=0;\n"
18−"X-Launchpad-Export-Date: 2014-03-18 06:26+0000\n"
19−"X-Generator: Launchpad (build 16963)\n"
18+"X-Launchpad-Export-Date: 2014-03-27 08:17+0000\n"
19+"X-Generator: Launchpad (build 16967)\n"
2020
2121#: plugins/Unity/Launcher/launcheritem.cpp:43
2222#: plugins/Unity/Launcher/launcheritem.cpp:73
qml/Components/LazyImage.qml+2−2
@@ -99,10 +99,10 @@ Item {
9999 horizontalAlignment: Image.AlignHCenter
100100 verticalAlignment: Image.AlignVCenter
101101 sourceSize.width: root.scaleTo == "width" ? root.width
102− : root.scaleTo == "fit" && root.width < root.height ? root.width
102+ : root.scaleTo == "fit" && root.width <= root.height ? root.width
103103 : 0
104104 sourceSize.height: root.scaleTo == "height" ? root.height
105− : root.scale == "fit" && root.height < root.width ? root.height
105+ : root.scaleTo == "fit" && root.height <= root.width ? root.height
106106 : 0
107107 }
108108 }
qml/Dash/DashApps.qml+1−1
@@ -34,7 +34,7 @@ GenericScopeView {
3434 }
3535
3636 onScopeChanged: {
37− scopeView.scope.categories.addSpecialCategory("running.apps.category", "Recent", "", "{ \"template\": { \"category-layout\": \"running-apps\" } }", countObject);
37+ scopeView.scope.categories.addSpecialCategory("running.apps.category", i18n.tr("Recent"), "", "{ \"template\": { \"category-layout\": \"running-apps\" } }", countObject);
3838 enableHeightBehaviorOnNextCreation = scopeView.runningApps.count === 0
3939 }
4040}
qml/Notifications/Notification.qml+61−4
@@ -39,20 +39,72 @@ Item {
3939
4040 fullscreen: false
4141 objectName: "background"
42− implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 4) : 0
42+ implicitHeight: type !== Notification.PlaceHolder ? (fullscreen ? maxHeight : contentColumn.height + contentColumn.spacing * 2) : 0
4343
4444 color: Qt.rgba(0.132, 0.117, 0.109, 0.97)
4545 opacity: 0
4646
47+ state: {
48+ var result = "";
49+
50+ if (type == Notification.SnapDecision) {
51+ if (ListView.view.currentIndex == index) {
52+ result = "expanded";
53+ } else {
54+ if (ListView.view.count > 2) {
55+ if (ListView.view.currentIndex == -1 && index == 1) {
56+ result = "expanded";
57+ } else {
58+ result = "contracted";
59+ }
60+ } else {
61+ result = "expanded";
62+ }
63+ }
64+ }
65+
66+ return result;
67+ }
68+
69+ Behavior on height {
70+ id: normalHeightBehavior
71+
72+ //enabled: menuItemFactory.progress == 1
73+ enabled: true
74+ SequentialAnimation {
75+ PauseAnimation {
76+ duration: UbuntuAnimation.SnapDuration
77+ }
78+ UbuntuNumberAnimation {
79+ duration: UbuntuAnimation.SnapDuration
80+ }
81+ }
82+ }
83+
84+ states:[
85+ State {
86+ name: "contracted"
87+ PropertyChanges {target: notification; height: units.gu(8)}
88+ },
89+ State {
90+ name: "expanded"
91+ PropertyChanges {target: notification; height: implicitHeight}
92+ }
93+ ]
94+
4795 clip: fullscreen ? false : true
96+
4897 visible: type != Notification.PlaceHolder
4998
5099 UbuntuShape {
51100 id: shapedBack
52101
53102 visible: !fullscreen
54− anchors.fill: parent
55− anchors.margins: notification.margins
103+ anchors {
104+ fill: parent
105+ leftMargin: notification.margins
106+ rightMargin: notification.margins
107+ }
56108 color: parent.color
57109 opacity: parent.opacity
58110 radius: "medium"
@@ -104,17 +156,20 @@ Item {
104156 MouseArea {
105157 id: interactiveArea
106158
107− anchors.fill: contentColumn
159+ anchors.fill: parent
108160 objectName: "interactiveArea"
109161 onClicked: {
110162 if (notification.type == Notification.Interactive) {
111163 notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
164+ } else {
165+ notificationList.currentIndex = index;
112166 }
113167 }
114168 }
115169
116170 Column {
117171 id: contentColumn
172+ objectName: "contentColumn"
118173
119174 anchors {
120175 left: parent.left
@@ -207,6 +262,8 @@ Item {
207262 model: unityMenuModel
208263
209264 NotificationMenuItemFactory {
265+ id: menuItemFactory
266+
210267 anchors.left: parent.left; anchors.right: parent.right
211268
212269 menuModel: unityMenuModel
qml/Notifications/Notifications.qml+4
@@ -25,6 +25,9 @@ ListView {
2525 interactive: false
2626
2727 property real margin
28+ spacing: delegate.fullscreen ? 0 : units.gu(.5)
29+
30+ currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
2831
2932 delegate: Notification {
3033 objectName: "notification" + index
@@ -75,6 +78,7 @@ ListView {
7578 displaced: Transition {
7679 UbuntuNumberAnimation {
7780 properties: "x,y"
81+ duration: UbuntuAnimation.SnapDuration
7882 }
7983 }
8084}
src/ApplicationArguments.h+2−2
@@ -29,8 +29,8 @@ class ApplicationArguments : public QObject
2929 Q_OBJECT
3030public:
3131 ApplicationArguments(const QStringList& args) {
32− if (args.contains(QLatin1String("-geometry")) && args.size() > args.indexOf(QLatin1String("-geometry")) + 1) {
33− QStringList geometryArg = args.at(args.indexOf(QLatin1String("-geometry")) + 1).split('x');
32+ if (args.contains(QLatin1String("-windowgeometry")) && args.size() > args.indexOf(QLatin1String("-windowgeometry")) + 1) {
33+ QStringList geometryArg = args.at(args.indexOf(QLatin1String("-windowgeometry")) + 1).split('x');
3434 if (geometryArg.size() == 2) {
3535 m_size.rwidth() = geometryArg.at(0).toInt();
3636 m_size.rheight() = geometryArg.at(1).toInt();
src/Panel/Indicators/client/indicatorsclient.cpp+2−2
@@ -49,8 +49,8 @@ IndicatorsClient::IndicatorsClient(int &argc, char **argv)
4949
5050 m_view->setSource(QUrl("IndicatorsClient.qml"));
5151 m_view->setResizeMode(QQuickView::SizeRootObjectToView);
52− if (args.contains(QLatin1String("-geometry")) && args.size() > args.indexOf(QLatin1String("-geometry")) + 1) {
53− QStringList geometryArg = args.at(args.indexOf(QLatin1String("-geometry")) + 1).split('x');
52+ if (args.contains(QLatin1String("-windowgeometry")) && args.size() > args.indexOf(QLatin1String("-windowgeometry")) + 1) {
53+ QStringList geometryArg = args.at(args.indexOf(QLatin1String("-windowgeometry")) + 1).split('x');
5454 if (geometryArg.size() == 2) {
5555 m_view->resize(geometryArg.at(0).toInt(), geometryArg.at(1).toInt());
5656 }
tests/autopilot/unity8/shell/tests/__init__.py+1−1
@@ -181,7 +181,7 @@ class UnityTestCase(AutopilotTestCase):
181181 )
182182 geo_string = "%dx%d" % (width, height)
183183 self.unity_geometry_args = [
184− '-geometry',
184+ '-windowgeometry',
185185 geo_string,
186186 '-frameless',
187187 '-mousetouch'
tests/qmltests/CMakeLists.txt+1
@@ -72,6 +72,7 @@ add_qml_test(Hud Hud)
7272add_qml_test(Hud Result)
7373add_qml_test(Launcher Launcher IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
7474add_qml_test(Notifications Notifications IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
75+add_qml_test(Notifications VisualSnapDecisionsQueue IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/plugins)
7576add_qml_test(Panel IndicatorRow)
7677add_qml_test(Panel Indicators IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
7778add_qml_test(Panel MenuContent IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS})
tests/qmltests/Components/tst_LazyImage.qml+6
@@ -168,6 +168,12 @@ Rectangle {
168168 compare(data.image.initialHeight, data.initialHeight);
169169 compare(data.image.initialWidth, data.initialWidth);
170170
171+ // check the sourceSize
172+ var sourceHeight = (data.image.scaleTo === "height" || (data.image.scaleTo === "fit" && data.height <= data.width)) ? data.height : 0
173+ var sourceWidth = (data.image.scaleTo === "width" || (data.image.scaleTo === "fit" && data.width <= data.height)) ? data.width : 0
174+ compare(data.image.sourceSize.height, sourceHeight);
175+ compare(data.image.sourceSize.width, sourceWidth);
176+
171177 // check the shape dimensions
172178 var shape = findChild(data.image, "shape");
173179 compare(shape.width, data.imageWidth);
tests/qmltests/Notifications/tst_Notifications.qml+27−13
@@ -43,6 +43,21 @@ Row {
4343 function getRaw(id) {
4444 return mockNotification.createObject(mockModel)
4545 }
46+
47+ // add the default/PlaceHolder notification to the model
48+ Component.onCompleted: {
49+ var n = {
50+ type: Notification.PlaceHolder,
51+ hints: {},
52+ summary: "",
53+ body: "",
54+ icon: "",
55+ secondaryIcon: "",
56+ actions: []
57+ }
58+
59+ append(n)
60+ }
4661 }
4762
4863 function addSnapDecisionNotification() {
@@ -376,6 +391,8 @@ Row {
376391 var notification = findChild(notifications, "notification" + (mockModel.count - 1))
377392 verify(notification !== undefined, "notification wasn't found");
378393
394+ waitForRendering(notification);
395+
379396 var icon = findChild(notification, "icon")
380397 var shapedIcon = findChild(notification, "shapedIcon")
381398 var nonShapedIcon = findChild(notification, "nonShapedIcon")
@@ -384,7 +401,6 @@ Row {
384401 var summaryLabel = findChild(notification, "summaryLabel")
385402 var bodyLabel = findChild(notification, "bodyLabel")
386403 var buttonRow = findChild(notification, "buttonRow")
387− waitForRendering(buttonRow)
388404
389405 compare(icon.visible, data.iconVisible, "avatar-icon visibility is incorrect")
390406 compare(shapedIcon.visible, data.shapedIcon, "shaped-icon visibility is incorrect")
@@ -407,12 +423,9 @@ Row {
407423 var buttonCancel = findChild(buttonRow, "button1")
408424 var buttonAccept = findChild(buttonRow, "button0")
409425
410− waitForRendering(notification)
411−
412426 // only test the left/cancel-button if two actions have been passed in
413427 if (data.actions.length == 2) {
414− mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
415− actionSpy.wait()
428+ tryCompareFunction(function() { mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2); return actionSpy.signalArguments.length > 0; }, true);
416429 compare(actionSpy.signalArguments[0][0], data.actions[1]["id"], "got wrong id for negative action")
417430 actionSpy.clear()
418431 }
@@ -421,38 +434,39 @@ Row {
421434 verify(buttonAccept.gradient === data.buttonTinted ? UbuntuColors.orangeGradient : UbuntuColors.greyGradient, "button has the wrong color-tint")
422435
423436 // click the positive/right button
424− mouseClick(buttonAccept, buttonAccept.width / 2, buttonAccept.height / 2)
425− actionSpy.wait()
437+ tryCompareFunction(function() { mouseClick(buttonAccept, buttonAccept.width / 2, buttonAccept.height / 2); return actionSpy.signalArguments.length > 0; }, true);
426438 compare(actionSpy.signalArguments[0][0], data.actions[0]["id"], "got wrong id positive action")
427439 actionSpy.clear()
440+ waitForRendering(notification)
428441
429442 // check if there's more than one negative choice
430443 if (data.actions.length > 2) {
431− var initialHeight = notification.height
444+ var initialHeight = notification.implicitHeight
432445
433446 // click to expand
434447 mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
435− waitForRendering(notification)
448+ var contentColumn = findChild(notification, "contentColumn")
449+ var collapsedContentColumnHeight = contentColumn.height;
450+ // Waiting for the inner column to change height because buttons appear
451+ tryCompareFunction(function() { return collapsedContentColumnHeight != contentColumn.height; }, true);
452+ // Waiting for notification to reach its target size
453+ tryCompare(notification, "height", contentColumn.height + contentColumn.spacing * 2)
436454 actionSpy.clear()
437455
438456 // test the additional buttons
439457 for (var i = 2; i < data.actions.length; i++) {
440− waitForRendering(notification)
441458 var buttonColumn = findChild(notification, "buttonColumn")
442459 var button = findChild(buttonColumn, "button" + i)
443460 mouseClick(button, button.width / 2, button.height / 2)
444− actionSpy.wait()
445461 compare(actionSpy.signalArguments[0][0], data.actions[i]["id"], "got wrong id for additional negative action")
446462 actionSpy.clear()
447463 }
448464
449465 // click to collapse
450466 mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
451− waitForRendering(notification)
452467 tryCompare(notification, "height", initialHeight)
453468 } else {
454469 mouseClick(buttonCancel, buttonCancel.width / 2, buttonCancel.height / 2)
455− actionSpy.wait()
456470 compare(actionSpy.signalArguments[0][0], data.actions[1]["id"], "got wrong id for negative action")
457471 }
458472 }
tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qmlnew file+237
@@ -0,0 +1,237 @@
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 QtTest 1.0
19+import ".."
20+import "../../../qml/Notifications"
21+import Ubuntu.Components 0.1
22+import Unity.Test 0.1
23+import Unity.Notifications 1.0
24+
25+Row {
26+ id: rootRow
27+
28+ Component {
29+ id: mockNotification
30+
31+ QtObject {
32+ function invokeAction(actionId) {
33+ mockModel.actionInvoked(actionId)
34+ }
35+ }
36+ }
37+
38+ ListModel {
39+ id: mockModel
40+
41+ signal actionInvoked(string actionId)
42+
43+ function getRaw(id) {
44+ return mockNotification.createObject(mockModel)
45+ }
46+
47+ // add the default/PlaceHolder notification to the model
48+ Component.onCompleted: {
49+ var n = {
50+ type: Notification.PlaceHolder,
51+ hints: {},
52+ summary: "",
53+ body: "",
54+ icon: "",
55+ secondaryIcon: "",
56+ actions: []
57+ }
58+
59+ append(n)
60+ }
61+ }
62+
63+ function addSomeSnapDecisionNotifications() {
64+ var n = [{
65+ type: Notification.SnapDecision,
66+ hints: {"x-canonical-private-button-tint": "true"},
67+ summary: "Incoming call",
68+ body: "Frank Zappa\n+44 (0)7736 027340",
69+ icon: "../graphics/avatars/funky.png",
70+ secondaryIcon: "../graphics/applicationIcons/phone-app.png",
71+ actions: [{ id: "pickup_id", label: "Pick up"},
72+ { id: "decline_1_id", label: "Decline"},
73+ { id: "decline_2_id", label: "Can't talk now, what's up?"},
74+ { id: "decline_3_id", label: "I call you back."},
75+ { id: "decline_4_id", label: "Send custom message..."}]
76+ },
77+ {
78+ type: Notification.SnapDecision,
79+ hints: {"x-canonical-private-button-tint": "true",
80+ "x-canonical-non-shaped-icon": "true"},
81+ summary: "Incoming file",
82+ body: "Frank would like to send you the file: essay.pdf.",
83+ icon: "image://theme/search",
84+ actions: [{ id: "accept_id", label: "Accept"},
85+ { id: "reject_id", label: "Reject"}]
86+ },
87+ {
88+ type: Notification.SnapDecision,
89+ hints: {"x-canonical-private-button-tint": "true",
90+ "x-canonical-non-shaped-icon": "true"},
91+ summary: "Authentication error",
92+ body: "Please authorise Ubuntu to access your Google account.",
93+ icon: "image://theme/search",
94+ actions: [{ id: "settings_id", label: "Settings..."},
95+ { id: "cancel_id", label: "Cancel"}]
96+ },
97+ {
98+ type: Notification.SnapDecision,
99+ hints: {"x-canonical-private-button-tint": "true",
100+ "x-canonical-non-shaped-icon": "true"},
101+ summary: "Morning alarm",
102+ body: "It's 6:30... time to get up!",
103+ icon: "image://theme/search",
104+ actions: [{ id: "ok_reply", label: "Ok"},
105+ { id: "snooze_id", label: "Snooze"}]
106+ },
107+ {
108+ type: Notification.SnapDecision,
109+ hints: {"x-canonical-private-button-tint": "true"},
110+ summary: "Jenny Sample",
111+ body: "Hey there! Have you been watching the latest episode of that TV-show I told you about last week?",
112+ icon: "../graphics/avatars/amanda.png",
113+ secondaryIcon: "../graphics/applicationIcons/messages-app.png",
114+ actions: [{ id: "reply_id", label: "Reply"},
115+ { id: "ignore_id", label: "Ignore"}]
116+ }]
117+
118+ mockModel.append(n)
119+ }
120+
121+ function clearNotifications() {
122+ // remove all but the first (PlaceHolder) notification
123+ mockModel.remove(1, mockModel.count - 1)
124+ }
125+
126+ function removeTopMostNotification() {
127+ // leave real/first (PlaceHolder) notification untouched
128+ if (mockModel.count > 1)
129+ mockModel.remove(1)
130+ }
131+
132+ Rectangle {
133+ id: notificationsRect
134+
135+ width: units.gu(40)
136+ height: units.gu(71)
137+
138+ MouseArea{
139+ id: clickThroughCatcher
140+
141+ anchors.fill: parent
142+ }
143+
144+ Notifications {
145+ id: notifications
146+
147+ margin: units.gu(1)
148+
149+ anchors.fill: parent
150+ model: mockModel
151+ }
152+ }
153+
154+ Rectangle {
155+ id: interactiveControls
156+
157+ width: units.gu(30)
158+ height: units.gu(81)
159+ color: "grey"
160+
161+ Column {
162+ spacing: units.gu(1)
163+ anchors.fill: parent
164+ anchors.margins: units.gu(1)
165+
166+ Button {
167+ width: parent.width
168+ text: "add some snap-decisions"
169+ onClicked: addSomeSnapDecisionNotifications()
170+ }
171+
172+ Button {
173+ width: parent.width
174+ text: "remove top-most notification"
175+ onClicked: removeTopMostNotification()
176+ }
177+
178+ Button {
179+ width: parent.width
180+ text: "clear model"
181+ onClicked: clearNotifications()
182+ }
183+ }
184+ }
185+
186+ UnityTestCase {
187+ id: root
188+ name: "VisualQueueTest"
189+ when: windowShown
190+
191+ function test_VisualSnapDecisionsQueue() {
192+ // populate model with some mock notifications
193+ addSomeSnapDecisionNotifications();
194+
195+ // make sure the view is properly updated before going on
196+ waitForRendering(notifications);
197+
198+ var snap_decision = [findChild(notifications, "notification1"),
199+ findChild(notifications, "notification2"),
200+ findChild(notifications, "notification3"),
201+ findChild(notifications, "notification4"),
202+ findChild(notifications, "notification5")]
203+
204+ for (var index = 0; index < snap_decision.length; index++) {
205+ verify(snap_decision[index] !== undefined, index + ". snap-decision wasn't found");
206+ }
207+
208+ // check initial states once all five snap-decisions were appended to the model
209+ compare(snap_decision[0].state, "expanded", "state of first snap-decision is not expanded");
210+ for (var index = 1; index < snap_decision.length; index++) {
211+ compare(snap_decision[index].state, "contracted", "state of "+ index + ".snap-decision is not contracted");
212+ }
213+
214+ // click/tap on each snap-decision and verify only one is in expanded-state at any time
215+ for (var index = 0; index < snap_decision.length; index++) {
216+ mouseClick(snap_decision[index], snap_decision[index].width / 2, snap_decision[index].height / 2)
217+ for (var kindex = 0; kindex < snap_decision.length; kindex++) {
218+ if (kindex == index) {
219+ compare(snap_decision[kindex].state, "expanded", "state of "+ kindex + ".snap-decision is not expanded");
220+ } else {
221+ compare(snap_decision[kindex].state, "contracted", "state of "+ kindex + ".snap-decision is not contracted");
222+ }
223+ }
224+ }
225+
226+ // remove top-most and verify one of the remaining ones is still getting expanded
227+
228+ // make first snap-decision expand
229+ mouseClick(snap_decision[0], snap_decision[0].width / 2, snap_decision[0].height / 2);
230+
231+ for (var index = 1; index < snap_decision.length; index++) {
232+ removeTopMostNotification();
233+ compare(snap_decision[index].state, "expanded", "state of " + index + ". snap-decision is not expanded");
234+ }
235+ }
236+ }
237+}