.bazaar/Makefiledeleted−6
@@ -1,6 +0,0 @@
2− mkdir -p ~/.bazaar/plugins
3− cp plugins/* ~/.bazaar/plugins
6− rm ~/.bazaar/plugins/makecheck_unity_phablet.py*
.bazaar/plugins/makecheck_unity_phablet.pydeleted−43
@@ -1,43 +0,0 @@
2−# Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17−from bzrlib import branch, errors
18−from bzrlib.urlutils import dirname, local_path_from_url
20−def execute_makecheck(local_branch, master_branch, old_revision_number, old_revision_id, future_revision_number, future_revision_id, tree_delta, future_tree):
21− if not master_branch.basis_tree().has_filename("Shell.qml"):
24− os.chdir(local_path_from_url(master_branch.base))
26− print "Executing 'make -C builddir test'.."
27− os.environ['CTEST_OUTPUT_ON_FAILURE'] = "1"
28− if (subprocess.call("make -C builddir test", shell=True) != 0):
30− print("\n\n*** Warning ***\n\nBasic tests failed. This commit will not pass continuous integration.")
32− branch = local_branch or master_branch
33− revision = branch.repository.get_revision(future_revision_id)
34− msg_file = open('message.txt', 'w')
35− msg_file.write(revision.message)
38− print("\n\nSaved commit message to $SRC_DIR/message.txt.")
39− print("You can uncommit this revision, fix the tests and reuse your message running:\n\nbzr commit -F message.txt\n\n")
40− elif os.path.isfile("message.txt"):
41− os.remove("message.txt")
43−branch.Branch.hooks.install_named_hook('pre_commit', execute_makecheck, 'make check pre-commit')
.bzr-builddeb/default.confdeleted−2
@@ -1,10 +0,0 @@
3−# QtCreator project files
5−# Eclipse project files
.crossbuilder/post_deploynew file+1
@@ -2,8 +2,15 @@
3# QtCreator project files
3# QtCreator project files
5# Eclipse project files
7# Eclipse project files
9/.pydevproject
11/.pydevproject
12+# KDevelop project Files
@@ -0,0 +1,17 @@
1+<?xml version="1.0" encoding="UTF-8"?>
9+ <name>org.python.pydev.PyDevBuilder</name>
15+ <nature>org.python.pydev.pythonNature</nature>
@@ -0,0 +1,10 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<?eclipse-pydev version="1.0"?><pydev_project>
3+<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
4+<path>/Unity8/tests/autopilot</path>
5+<path>/Unity8/.bazaar</path>
6+<path>/Unity8/tests/whitespace</path>
8+<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
9+<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
.settings/Autopilot List.launchnew file+14
@@ -0,0 +1,14 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<launchConfiguration type="org.python.pydev.debug.regularLaunchConfigurationType">
3+<stringAttribute key="bad_container_name" value="/Unity8/.pyd"/>
4+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"/>
5+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"/>
6+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
7+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
9+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/autopilot"/>
10+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_OTHER_WORKING_DIRECTORY" value=""/>
11+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="list unity8"/>
12+<stringAttribute key="org.python.pydev.debug.ATTR_INTERPRETER" value="__default"/>
13+<stringAttribute key="org.python.pydev.debug.ATTR_PROJECT" value="Unity8"/>
14+</launchConfiguration>
.settings/Autopilot Run.launchnew file+14
@@ -0,0 +1,14 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<launchConfiguration type="org.python.pydev.debug.regularLaunchConfigurationType">
3+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"/>
4+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"/>
5+<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
6+<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
7+<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
9+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="/usr/bin/autopilot"/>
10+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_OTHER_WORKING_DIRECTORY" value=""/>
11+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="run ${string_prompt:the test suite to run:unity8}"/>
12+<stringAttribute key="org.python.pydev.debug.ATTR_INTERPRETER" value="__default"/>
13+<stringAttribute key="org.python.pydev.debug.ATTR_PROJECT" value="Unity8"/>
14+</launchConfiguration>
Applications/Application.qmldeleted−54
@@ -1,54 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "applications.js" as ApplicationsModel
19−import Ubuntu.Application 0.1
21−/* This class is temporary. It is meant to be API compatible with qthybris' Application
23− This class can be removed as soon as qthybris' Application is instantiable from QML
24− and its 'desktopFile' property becomes writable.
25− This also requires qthybris to be easily compilable on the desktop.
30− property string desktopFile
32− property string comment
35− property string stage
36− property bool fullscreen
38− onDesktopFileChanged: {
39− var applicationData = ApplicationsModel.__availableApplications[desktopFile];
40− if (applicationData) {
41− application.name = applicationData.name;
42− application.icon = applicationData.icon;
43− application.exec = applicationData.exec;
44− application.stage = applicationData.stage ? applicationData.stage : ApplicationInfo.MainStage;
45− application.fullscreen = applicationData.fullscreen ? applicationData.fullscreen : false;
47− application.name = "";
48− application.icon = "";
49− application.exec = "";
50− application.stage = "";
51− application.fullscreen = false;
Applications/applications.jsdeleted−115
@@ -1,115 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
17−// mimic qtubuntu's Application.Stage enum
21−var __availableApplications = {
22− '/usr/share/applications/phone-app.desktop': {
23− 'name': i18n.tr("Phone"),
25− 'exec': '/usr/bin/phone-app',
28− '/usr/share/applications/camera-app.desktop': {
29− 'name': i18n.tr("Camera"),
32− 'exec': '/usr/bin/camera-app --fullscreen'
34− '/usr/share/applications/gallery-app.desktop': {
35− 'name': i18n.tr("Gallery"),
37− 'exec': '/usr/bin/gallery-app'
39− '/usr/share/applications/facebook-webapp.desktop': {
40− 'name': i18n.tr("Facebook"),
42− 'exec': '/usr/bin/webbrowser-app --chromeless http://m.facebook.com',
45− '/usr/share/applications/webbrowser-app.desktop': {
46− 'name': i18n.tr("Browser"),
48− 'exec': '/usr/bin/webbrowser-app'
50− '/usr/share/applications/twitter-webapp.desktop': {
51− 'name': i18n.tr("Twitter"),
53− 'exec': '/usr/bin/webbrowser-app --chromeless http://www.twitter.com',
56− '/usr/share/applications/gmail-webapp.desktop': {
57− 'name': i18n.tr("GMail"),
59− 'exec': '/usr/bin/webbrowser-app --chromeless http://m.gmail.com'
61− '/usr/share/applications/ubuntu-weather-app.desktop': {
62− 'name': i18n.tr("Weather"),
64− 'exec': '/usr/bin/qmlscene /usr/share/ubuntu-weather-app/ubuntu-weather-app.qml',
67− '/usr/share/applications/notes-app.desktop': {
68− 'name': i18n.tr("Notepad"),
70− 'exec': '/usr/bin/qmlscene /usr/share/notes-app/NotesApp.qml',
73− '/usr/share/applications/ubuntu-calendar-app.desktop': {
74− 'name': i18n.tr("Calendar"),
76− 'exec': '/usr/bin/qmlscene /usr/share/ubuntu-calendar-app/calendar.qml',
79− '/usr/share/applications/mediaplayer-app.desktop': {
80− 'name': i18n.tr("Media Player"),
81− 'icon': 'mediaplayer-app',
83− 'exec': '/usr/bin/mediaplayer-app'
85− '/usr/share/applications/evernote.desktop': {
86− 'name': i18n.tr("Evernote"),
90− '/usr/share/applications/map.desktop': {
91− 'name': i18n.tr("Map"),
95− '/usr/share/applications/pinterest.desktop': {
96− 'name': i18n.tr("Pinterest"),
100− '/usr/share/applications/soundcloud.desktop': {
101− 'name': i18n.tr("SoundCloud"),
102− 'icon': 'soundcloud',
105− '/usr/share/applications/wikipedia.desktop': {
106− 'name': i18n.tr("Wikipedia"),
107− 'icon': 'wikipedia',
110− '/usr/share/applications/youtube.desktop': {
111− 'name': i18n.tr("YouTube"),
Bottombar/Bottombar.qmldeleted−106
@@ -1,106 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "../Components"
19−import "../Components/Math.js" as MathLocal
21−import Ubuntu.Gestures 0.1
26− // Whether there's an application on foreground (as opposed to have shell's Dash on foreground)
27− property bool applicationIsOnForeground
29− property variant theHud
30− property bool enabled: false
31− readonly property real bottomEdgeButtonCenterDistance: units.gu(34)
33− state: dragArea.status === DirectionalDragArea.Recognized ? "shown" : "hidden"
38− x: MathLocal.clamp(dragArea.touchStartX - (width / 2), 0, bottombar.width - width)
39− y: bottombar.height - bottomEdgeButtonCenterDistance - (height / 2) - bottomMargin
42− if (dragArea.status === DirectionalDragArea.Recognized) {
43− var touchLocal = mapFromItem(dragArea, dragArea.touchX, dragArea.touchY)
44− return touchLocal.x > 0 && touchLocal.x < width
45− && touchLocal.y > 0 && touchLocal.y < height
51− onClicked: theHud.show()
53− Behavior on bottomMargin {
54− NumberAnimation{duration: hudButton.opacity < 0.01 ? 200 : 70; easing.type: Easing.OutQuart}
57− Behavior on opacity {
58− NumberAnimation{ duration: 200; easing.type: Easing.OutCubic}
64− onShownChanged: bottomBarVisibilityCommunicatorShell.forceHidden = theHud.shown
70− height: distanceThreshold
71− anchors.bottom: parent.bottom
73− enabled: !theHud.shown && bottombar.enabled && applicationIsOnForeground
74− direction: Direction.Upwards
76− property int previousStatus: -1
77− property real touchStartX: -1
80− if (status === DirectionalDragArea.WaitingForTouch) {
81− if (previousStatus == DirectionalDragArea.Recognized) {
82− if (hudButton.mouseOver) {
86− } else if (status === DirectionalDragArea.Undecided) {
89− previousStatus = status
96− PropertyChanges { target: hudButton; opacity: 0}
97− PropertyChanges { target: hudButton; bottomMargin: units.gu(-1)}
101− PropertyChanges { target: hudButton; opacity: 1}
102− PropertyChanges { target: hudButton; bottomMargin: units.gu(0)}
Bottombar/HudButton.qmldeleted−64
@@ -1,64 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− property bool mouseOver
25− property int bottomMargin: units.gu(2)
29− readonly property real scaleOnMouseOver: 1.2
31− width: hudButton.width * scaleOnMouseOver
32− height: hudButton.height * scaleOnMouseOver
36− property alias actionButton: actionButton
38− anchors.centerIn: parent
41− opacity: item.mouseOver ? 1 : 0.7
42− scale: item.mouseOver ? scaleOnMouseOver : 1
43− Behavior on opacity {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
44− Behavior on scale {NumberAnimation{duration: 200; easing.type: Easing.OutQuart}}
52− source: "graphics/hud_invoke_button_active.png"
59− source: "graphics/hud.png"
60− anchors.centerIn: parent
61− fillMode: Image.PreserveAspectFit
Bottombar/graphics/hud@20.pngdeleted
Binary file not shown.
Bottombar/graphics/hud_invoke_button_active@20.pngdeleted
Binary file not shown.
@@ -13,8 +13,9 @@ endif()
14set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
14set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules)
16−# Instruct CMake to run moc automatically when needed.
16+# Instruct CMake to run moc and rcc automatically when needed.
17set(CMAKE_AUTOMOC ON)
17set(CMAKE_AUTOMOC ON)
19# enable QML debugging
20# enable QML debugging
20string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower) # Build types should always be lowercase but sometimes they are not.
21string(TOLOWER "${CMAKE_BUILD_TYPE}" cmake_build_type_lower) # Build types should always be lowercase but sometimes they are not.
@@ -39,6 +40,19 @@ if(cmake_build_type_lower MATCHES coverage)
39 ENABLE_COVERAGE_REPORT(TARGETS ${SHELL_APP} FILTER /usr/include ${CMAKE_SOURCE_DIR}/tests/* ${CMAKE_BINARY_DIR}/*)
40 ENABLE_COVERAGE_REPORT(TARGETS ${SHELL_APP} FILTER /usr/include ${CMAKE_SOURCE_DIR}/tests/* ${CMAKE_BINARY_DIR}/*)
43+find_package (ECM 1.7.0 QUIET NO_MODULE)
45+ # Provides us with -DECM_ENABLE_SANITIZERS='X'
46+ # Where X can be address, thread, memory, leak, undefined
47+ include("${ECM_MODULE_DIR}/ECMEnableSanitizers.cmake")
50+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
51+ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0.0")
52+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override" )
42# Make sure we have all the needed symbols
56# Make sure we have all the needed symbols
43set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs")
57set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,defs")
44set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,defs")
58set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,defs")
@@ -48,10 +62,41 @@ add_custom_target(cppcheck COMMAND cppcheck --enable=all -q --error-exitcode=2
48 ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
62 ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests)
50include(FindPkgConfig)
64include(FindPkgConfig)
51−find_package(Qt5Qml)
65+find_package(Qt5Core 5.6 REQUIRED)
66+find_package(Qt5Qml 5.6 REQUIRED)
52−find_package(Qt5Quick)
67+find_package(Qt5Quick 5.6 REQUIRED)
53−find_package(Qt5Gui)
68+find_package(Qt5Gui 5.6 REQUIRED)
54−find_package(Qt5DBus)
69+find_package(Qt5DBus 5.6 REQUIRED)
70+find_package(Qt5Concurrent 5.6 REQUIRED)
71+find_package(Qt5Sql 5.6 REQUIRED)
72+find_package(Qt5Test 5.6 REQUIRED)
73+find_package(Qt5Svg 5.6 REQUIRED)
74+find_package(Qt5Network 5.6 REQUIRED)
75+find_package(Qt5Xml 5.6 REQUIRED)
77+pkg_check_modules(APPLICATION_API REQUIRED unity-shell-application=27)
78+pkg_check_modules(GEONAMES REQUIRED geonames>=0.2)
79+pkg_check_modules(GIO REQUIRED gio-2.0>=2.32)
80+pkg_check_modules(GLIB REQUIRED glib-2.0>=2.32)
81+pkg_check_modules(LAUNCHER_API REQUIRED unity-shell-launcher=13)
82+pkg_check_modules(QMENUMODEL REQUIRED qmenumodel)
83+pkg_check_modules(GD3 REQUIRED gnome-desktop-3.0)
84+pkg_check_modules(UAL REQUIRED ubuntu-app-launch-2)
85+pkg_check_modules(UBUNTUGESTURES REQUIRED UbuntuGestures)
86+pkg_check_modules(QTDBUSTEST REQUIRED
91+### Check UbuntuGestures private headers. No pkg-config (.pc) file is provided for them
92+find_path(UBUNTUGESTUREPRIV
93+ NAMES UbuntuGestures/private/damper_p.h UbuntuGestures/private/ucswipearea_p.h UbuntuGestures/private/ucswipearea_p_p.h
94+ PATHS ${UBUNTUGESTURES_INCLUDEDIR}/UbuntuGestures/${UBUNTUGESTURES_VERSION}
96+if (${UBUNTUGESTUREPRIV} STREQUAL UBUNTUGESTUREPRIV-NOTFOUND)
97+ message(FATAL_ERROR "UbuntuGestures private headers not found.")
99+# end of UbuntuGesture private headers check
56# Standard install paths
101# Standard install paths
57include(GNUInstallDirs)
102include(GNUInstallDirs)
@@ -59,16 +104,23 @@ include(GNUInstallDirs)
59set(SHELL_APP_DIR ${CMAKE_INSTALL_DATADIR}/unity8)
104set(SHELL_APP_DIR ${CMAKE_INSTALL_DATADIR}/unity8)
60set(SHELL_PRIVATE_LIBDIR ${CMAKE_INSTALL_LIBDIR}/unity8)
105set(SHELL_PRIVATE_LIBDIR ${CMAKE_INSTALL_LIBDIR}/unity8)
62−configure_file(paths.h.in ${CMAKE_CURRENT_BINARY_DIR}/paths.h @ONLY)
107+execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugin_private_module_dir SystemSettings OUTPUT_VARIABLE USS_PRIVATE_PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
108+if(USS_PRIVATE_PLUGINDIR STREQUAL "")
109+ message(FATAL_ERROR "Could not determine USS private plugin installation dir.")
64−include_directories(
112+execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir_suffix unity-shell-api OUTPUT_VARIABLE SHELL_INSTALL_QML OUTPUT_STRIP_TRAILING_WHITESPACE)
65− ${CMAKE_CURRENT_BINARY_DIR}
113+if(SHELL_INSTALL_QML STREQUAL "")
66− ${CMAKE_CURRENT_SOURCE_DIR}
114+ message(FATAL_ERROR "Could not determine plugin installation dir.")
67− ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
115+endif()
70set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
117set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden")
119+execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=plugindir unity-shell-api OUTPUT_VARIABLE SHELL_PLUGINDIR OUTPUT_STRIP_TRAILING_WHITESPACE)
120+if(SHELL_PLUGINDIR STREQUAL "")
121+ message(FATAL_ERROR "Could not determine plugin import dir.")
72set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
124set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-permissive -pedantic -Wall -Wextra")
74if ("${CMAKE_BUILD_TYPE}" STREQUAL "release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "relwithdebinfo")
126if ("${CMAKE_BUILD_TYPE}" STREQUAL "release" OR "${CMAKE_BUILD_TYPE}" STREQUAL "relwithdebinfo")
@@ -85,84 +137,72 @@ endif()
85# "signals" and "slots"
137# "signals" and "slots"
86add_definitions(-DQT_NO_KEYWORDS)
138add_definitions(-DQT_NO_KEYWORDS)
88−# Tests
140+# Save a few container detach and conversions
89−include(CTest)
141+add_definitions(-DQT_STRICT_ITERATORS)
143+# Use the fast string builder
144+add_definitions(-DQT_USE_QSTRINGBUILDER)
92# Autopilot tests
146# Autopilot tests
93include(autopilot)
147include(autopilot)
94declare_autopilot_test(shell unity8.shell ${CMAKE_SOURCE_DIR}/tests/autopilot/)
148declare_autopilot_test(shell unity8.shell ${CMAKE_SOURCE_DIR}/tests/autopilot/)
95−declare_autopilot_test(indicators_client unity8.indicators_client ${CMAKE_SOURCE_DIR}/tests/autopilot/)
97set(SHELL_APP unity8)
150set(SHELL_APP unity8)
151+set(INDICATORS_CLIENT_APP indicators-client)
152+set(GREETER_APP unity8-greeter)
153+set(MOCK_INDICATOR_SERVICE_APP unity-mock-indicator-service)
99−set(shell_app_HDRS
155+include_directories(
100− )
156+ ${CMAKE_SOURCE_DIR}/include
101−
157+ ${CMAKE_BINARY_DIR}/include
102−add_executable(${SHELL_APP}
158+ ${APPLICATION_API_INCLUDE_DIRS}
103− ${shellapplication_MOC_SRCS}
105− MouseTouchAdaptor.cpp
108−qt5_use_modules(${SHELL_APP} Qml Quick Test)
161+# Quiet logger
109−pkg_check_modules(XCB REQUIRED xcb)
162+set(QUIET_LOGGER OFF CACHE BOOL "Disable test output on stdout.")
110−
163+if(NOT QUIET_LOGGER)
111−if (NOT "${XCB_INCLUDE_DIRS}" STREQUAL "")
164+ set(STDOUT_LOGGER "-o" "-,txt")
112− set_target_properties(${SHELL_APP} PROPERTIES INCLUDE_DIRECTORIES ${XCB_INCLUDE_DIRS})
115−target_link_libraries(${SHELL_APP}
167+execute_process(COMMAND dpkg-architecture -qDEB_HOST_ARCH OUTPUT_VARIABLE ARCH)
116− ${Qt5Qml_LIBRARIES}
168+if (NOT ARCH MATCHES "arm*")
117− ${Qt5Quick_LIBRARIES}
169+ set(ENABLE_TOUCH_EMULATION true)
118− ${XCB_LDFLAGS}
170+ add_definitions(-DUNITY8_ENABLE_TOUCH_EMULATION)
119− )
171+ pkg_check_modules(MOUSETOUCHADAPTOR_LIBS REQUIRED x11 xcb xi)
121−# install binaries
173+ set(ENABLE_TOUCH_EMULATION false)
122−install(TARGETS ${SHELL_APP}
174+ message(STATUS "Touch emulation support disabled.")
123− RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
175+endif()
126−# install top level qml and js files
127−file(GLOB QML_JS_FILES *.qml *.js)
129−install(FILES ${QML_JS_FILES}
130− DESTINATION ${SHELL_APP_DIR}
133# add subdirectories to build
177# add subdirectories to build
134−add_subdirectory(tests)
178+add_subdirectory(include)
135−add_subdirectory(plugins)
136add_subdirectory(src)
179add_subdirectory(src)
180+add_subdirectory(tools)
181+add_subdirectory(qml)
138−# install subdirectories
183+# Tests
139−set(QML_DIRS
184+set(NO_TESTS OFF CACHE BOOL "Disable tests.")
140− Applications
185+if (NOT NO_TESTS)
141− Bottombar
186+ include(CTest)
142− Components
187+ enable_testing()
143− Dash
188+ add_subdirectory(tests)
145− Greeter
190+ message(STATUS "Tests disabled")
153−install(DIRECTORY ${QML_DIRS}
154− DESTINATION ${SHELL_APP_DIR}
157−# generate desktop file
193+add_subdirectory(plugins)
158−configure_file(${SHELL_APP}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop @ONLY)
160−# install desktop file
195+#
161−install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop
196+# Data files
162− DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
197+#
163− )
198+add_subdirectory(data)
166# Translation
201# Translation
168add_subdirectory(po)
203add_subdirectory(po)
208+add_subdirectory(doc)
@@ -1,7 +1,7 @@
1Building Unity 8
1Building Unity 8
2================
2================
4−Only Ubuntu 13.10 (saucy) is supported as a developement environment.
4+Only Ubuntu 14.04 (trusty) is supported as a developement environment.
6download source
6download source
7---------------
7---------------
@@ -15,29 +15,17 @@ download source
15 $ bzr branch lp:unity8 ~/unity8/trunk
15 $ bzr branch lp:unity8 ~/unity8/trunk
16 $ cd ~/unity8/trunk
16 $ cd ~/unity8/trunk
18−install dependencies
18+install dependencies and build Unity 8
19--------------------
19--------------------
20−If its your first time, install build dependencies
22$ cd ~/unity8/trunk
21$ cd ~/unity8/trunk
23−$ ./build --setup
22+$ ./build.sh
26− - add ppa:ubuntu-unity/next
27− - install the required dependencies to build, as well as run on the desktop
24+ If its your first time, this will install the required dependencies to build and
28− - it should also install unity-scope-home and unity-lens-application which
25+ build it.
29− are technically "recommends", not strict dependencies
31−Note, once the PPA is added, the script runs apt-get update, if you have
32−any failures associated with it, the build script will bail out of the setup
33−and fail to install all the required dependencies.
35−
27+ You might want to also install unity-scope-home and unity-scope-click which
36−build Unity 8
28+ are technically "recommends", not strict dependencies
42You may also rebuild with the -c for clean, which just deletes the build
30You may also rebuild with the -c for clean, which just deletes the build
@@ -49,17 +37,21 @@ Running Unity 8 on your desktop
49run the Unity 8 shell
37run the Unity 8 shell
50---------------------
38---------------------
51$ cd ~/unity8/trunk
39$ cd ~/unity8/trunk
52−$ ./run
40+$ cd builddir
54−Options can be passed to test the lock screen
42+Each component of unity8 can be ran independently for development and testing
55−$ ./run -p OR -k
43+For example:
57−-p is for pin lock, for which the default prompt answer is "1234"
48+Check out the tests/qmltests/ directory for a list of things that can be ran.
58−-k is for keylock passphrase, for which the default prompt answer is "password"
62- to navigate, utilize the mouse left button as you would your finger
52- to navigate, utilize the mouse left button as you would your finger
53+- a three point drag (for side stage operations) can be performed by using
54+ the Shift+Control+Alt (all together) keyboard modifiers while using the mouse.
63- to get the translations work, currently you have to do make install to
55- to get the translations work, currently you have to do make install to
64 put the *.mo files into correct structure. We'll look for a better solution
56 put the *.mo files into correct structure. We'll look for a better solution
@@ -74,53 +66,15 @@ Notes
75Running Unity 8 on devices
67Running Unity 8 on devices
76==========================
68==========================
77−- Ubuntu Touch builds are currently only available in 13.10 flavour
78−- supported hardware should match one those listed here
79− https://wiki.ubuntu.com/Touch/Devices#Running_fine
80−- follow the Ubuntu Touch install instructions for your chosen device
81− https://wiki.ubuntu.com/Touch/Install
82−- make sure your device is connected to a WiFi network
83−- If you haven’t already or if you’ve just freshly flashed your device
84− make sure you run phablet-network-setup which will allow package updates to
86−- also make sure you have your SSH key in ~/.ssh/id_rsa.pub (or install one
87− on the device yourself)
90−$ ./run_on_device --setup
92− - install your public SSH key on the device
93− - install the needed dependencies
97− - rsync the code to the device
98− - build on the device
99− - replace the running shell
101−Options can be passed to test the lock screen
102−$ ./run_on_device -p OR -k
104−-p is for pin lock, for which the default prompt answer is "1234"
70+Running unity8 on a device should be done using crossbuilder.
105−-k is for keylock passphrase, for which the default prompt answer is "password"
71+Go to
106−
72+* https://launchpad.net/crossbuilder and
107−Notes
73+* https://wiki.ubuntu.com/Touch/Crossbuilder
108−-----
74+for more details on crossbuilder.
109−- using adb over TCP has some advantages, Google will be of help here
110− - NOTE: this is not yet available for flipped images
111− - TL;DR: `adb tcpip 5555; adb connect $your_device_ip`
112− - you can persist the above via `adb shell setprop persist.adb.tcp.port 5555`
113− - it's unsafe - anyone can connect to your device
114− - with TCP the Nexus 10 doesn't drop the adb connection when locking
116−- exporting ANDROID_SERIAL=$your_device_serial or
117− ANDROID_SERIAL=$your_device_ip:5555 will make adb not complain about
119−- you can export TARGET_IP=$your_device_ip TARGET_SSH_PORT=22 for run_on_device
120− to not use adb forwarding - useful if you use multiple devices
121−- using Ninja (package ninja-build - run_on_device -s installs this now)
122− will improve build times (especially in the nothing-to-build case)
76+unity8 will automatically restart on the phone once deployment
77+has finished due to post-build-steps set up in this repository.
125Coding guidelines
79Coding guidelines
126=================
80=================
@@ -136,3 +90,99 @@ Unity 8.
136If using VIM, make sure you install some syntax highlighting for QML, like
90If using VIM, make sure you install some syntax highlighting for QML, like
137https://github.com/peterhoeg/vim-qml
91https://github.com/peterhoeg/vim-qml
96+Tests are run from the build directory (which will be ./builddir if you used
97+the ./build.sh script).
99+To run the tests that do not require any graphical capability and therefore
108+To run all graphical tests, which can take a couple of minutes:
112+To run the tests for a single component/class:
114+$ make testComponentName
116+So, for the DragHandle component that would be:
118+$ make testDragHandle
120+To run the tests for a single component/class under gdb (so you can catch SEGFAULTS)
122+$ make gdbtestComponentName
124+To run a single test function of a single component/class:
126+$ make testComponentName FUNCTION="TestCaseName::functionName"
128+To run a test application that allow you to manually test or to simply try out
131+$ make tryComponentName
133+So to try out, for instance, the DragHandle component, you would do:
137+NB: Manual test or interation doesn't make sense for all components or classes,
138+particularly the non-graphical ones. In such cases no "tryFoo" make target is
141+Running autopilot tests
142+=======================
144+Autopilot tests are run from the build directory (which will be ./builddir if you used
145+the ./build.sh script).
149+If you want you can also run tests individually, for that you need to install first,
150+otherwise the tests will run on the system-installed version
154+To see the list of existing autopilot tests you can do
156+$ PYTHONPATH=../tests/autopilot autopilot3 list unity8
158+And then run a single test with
160+$ PYTHONPATH=../tests/autopilot autopilot3 run unity8.some.very.long.test.name
164+$ PYTHONPATH=../tests/autopilot autopilot3 run unity8
169+Unity8 heavily uses Qt and with that Qt debugging techniques mostly apply in the
170+same fashion. There are, however, some additional unity8-specific notes:
172+* Enable/disable Qt scenegraph visualizer on the fly:
174+ $ qdbus com.canonical.Unity8.Debugging /com/canonical/Unity8/Debugging SetSceneGraphVisualizer <mode>
176+ This is equivalent to exporting QSG_VISUALIZE=<mode> before running unity8, except it does it on the
179+* Toggle slow animations on the fly:
181+ $ qdbus com.canonical.Unity8.Debugging /com/canonical/Unity8/Debugging SetSlowAnimations <true|false>
183+* Change logging filter rules on the fly:
185+ $ qdbus com.canonical.Unity8.Debugging /com/canonical/Unity8/Debugging SetLoggingFilterRules <filter>
187+ This is equivalent to exporting QT_LOGGING_RULES or defining them in QT_LOGGING_CONF, except it does
Components/AnimationControllerWithSignals.qmldeleted−64
@@ -1,64 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
20− signal animationCompletedAtBeginning()
21− signal animationCompletedAtEnd()
22− readonly property bool completed: progress == 1.0 || progress == 0.0
23− property bool completing: false
25− function __completeAtBeginning() {
27− animationCompletedAtBeginning();
30− function __completeAtEnd() {
32− animationCompletedAtEnd();
35− function completeToBeginningWithSignal() {
36− if (progress == 0.0) {
37− __completeAtBeginning()
40− completeToBeginning();
44− function completeToEndWithSignal() {
45− if (progress == 1.0) {
58− if (progress == 0.0) {
59− __completeAtBeginning()
60− } else if (progress == 1.0) {
Components/ApplicationManagerWrapper.qmldeleted−130
@@ -1,130 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Application 0.1
21− id: applicationManager
23− property var mainStageApplications: ApplicationManager.mainStageApplications
24− property var sideStageApplications: ApplicationManager.sideStageApplications
25− property var mainStageFocusedApplication: ApplicationManager.mainStageFocusedApplication
26− property var sideStageFocusedApplication: ApplicationManager.sideStageFocusedApplication
27− property bool sideStageEnabled: true
28− signal focusRequested(string desktopFile)
29− property bool keyboardVisible: ApplicationManager.keyboardVisible
30− property int keyboardHeight: ApplicationManager.keyboardHeight
32− Component.onCompleted: {
33− // Start the watcher so that the ApplicationManager applications model can be populated.
34− ApplicationManager.startWatcher();
37− function activateApplication(desktopFile, argument) {
39− application = getApplicationFromDesktopFile(desktopFile, ApplicationInfo.MainStage);
40− if (application == null) {
41− application = getApplicationFromDesktopFile(desktopFile, ApplicationInfo.SideStage);
43− if (application != null) {
47− var execFlags = sideStageEnabled ? ApplicationManager.NoFlag : ApplicationManager.ForceMainStage;
50− return ApplicationManager.startProcess(desktopFile, execFlags, [argument]);
52− return ApplicationManager.startProcess(desktopFile, execFlags);
56− function stopProcess(application) {
57− ApplicationManager.stopProcess(application)
60− function focusApplication(application) {
61− if (application == null || application == undefined) {
65− ApplicationManager.focusApplication(application.handle);
68− function unfocusCurrentApplication() {
69− ApplicationManager.unfocusCurrentApplication(ApplicationInfo.MainStage);
72− function moveRunningApplicationStackPosition(from, to, stage) {
74− if (stage == ApplicationInfo.SideStage) {
75− applications = ApplicationManager.sideStageApplications;
77− applications = ApplicationManager.mainStageApplications;
79− // FIXME: applications.move(0, 0) crashes
80− if (from !== to && from >= 0 && to >= 0) applications.move(from, to);
83− function getApplicationFromDesktopFile(desktopFile, stage) {
84− var foundSideStageApp, foundMainStageApp;
86− foundMainStageApp = __find(desktopFile, ApplicationManager.mainStageApplications)
87− if (stage == ApplicationInfo.MainStage) {
88− return foundMainStageApp;
90− foundSideStageApp = __find(desktopFile, ApplicationManager.sideStageApplications)
91− if (stage == ApplicationInfo.SideStage) {
92− return foundSideStageApp;
95− // if stage not specified, return whichever app running on either stage
96− return (foundMainStageApp) ? foundMainStageApp : foundSideStageApp;
99− function __find(desktopFile, applications) {
100− for (var i = 0; i < applications.count; i++ ) {
101− var application = applications.get(i);
102− if (application.desktopFile == desktopFile) {
111− target: ApplicationManager
113− // FIXME: hardcoded mapping from ApplicationManager.FavoriteApplications
114− // enum to desktop files
116− if (favoriteApplication == ApplicationManager.CameraApplication) {
117− desktopFile = "/usr/share/applications/camera-app.desktop"
118− } else if (favoriteApplication == ApplicationManager.GalleryApplication) {
119− desktopFile = "/usr/share/applications/gallery-app.desktop"
120− } else if (favoriteApplication == ApplicationManager.ShareApplication) {
121− desktopFile = "/usr/share/applications/share-app.desktop"
122− } else if (favoriteApplication == ApplicationManager.BrowserApplication) {
123− desktopFile = "/usr/share/applications/webbrowser-app.desktop"
124− } else if (favoriteApplication == 4) { // ApplicationManager.PhoneApplication
125− desktopFile = "/usr/share/applications/phone-app.desktop"
127− applicationManager.focusRequested(desktopFile);
Components/ApplicationScreenshot.qmldeleted−61
@@ -1,61 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Ubuntu.Application 0.1
22− id: applicationScreenshot
24− property var application: null
25− property bool withBackground: false
26− property bool ready: applicationImage.ready || withBackground
28− function setApplication(application) {
29− applicationScreenshot.application = application
32− function clearApplication() {
33− applicationScreenshot.withBackground = false;
34− applicationScreenshot.application = null
35− applicationScreenshot.scheduleUpdate();
38− function scheduleUpdate() {
39− applicationImage.scheduleUpdate()
42− function updateFromCache() {
43− applicationImage.updateFromCache()
50− visible: applicationScreenshot.withBackground
55− objectName: "screenshot image"
56− width: applicationScreenshot.application ? parent.width : 0
57− height: applicationScreenshot.application ? parent.height : 0
58− visible: applicationScreenshot.application != null && ready
59− source: applicationScreenshot.application
Components/Carousel.qmldeleted−286
@@ -1,286 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "carousel.js" as CarouselJS
21−/*! The Carousel component presents the items of a model in a carousel view. It's similar to a
22− cover flow. But it stops at it's boundaries (therefore no PathView is used).
27− clip: true // Don't leak horizontally to other dashes
29− /// The component to be used as delegate. This component has to be derived from BaseCarouselDelegate
30− property Component itemComponent
31− /// Model for the Carousel, which has to be a model usable by a ListView
32− property alias model: listView.model
33− /// A minimal width of a tile can be set here. Per default a best fit will be calculated
34− property alias minimumTileWidth: listView.minimumTileWidth
35− /// Sets the number of tiles that are visible
36− property alias pathItemCount: listView.pathItemCount
37− /// Aspect ratio of the tiles width/height
38− property alias tileAspectRatio: listView.tileAspectRatio
39− /// Used to cache some delegates for performance reasons. See the ListView documentation for details
40− property alias cacheBuffer: listView.cacheBuffer
41− /// Width of the "draw buffer" in pixel. The drawBuffer is an additional area at start/end where
42− /// items drawn, even if it is not in the visible area.
43− /// cacheBuffer controls only the to retain delegates outside the visible area (and is used on top of the drawBuffer)
44− /// see https://bugreports.qt-project.org/browse/QTBUG-29173
45− property int drawBuffer: width / pathItemCount // an "ok" value - but values used from the listView cause loops
46− /// The selected item can be shown in a different size controlled by selectedItemScaleFactor
47− property real selectedItemScaleFactor: 1.1
49− /// Emitted when the user clicked on an item
50− /// @param index is the index of the clicked item
51− /// @param delegateItem is the clicked component/delegate itself
52− /// @param itemY is y of the clicked delegate
53− signal clicked(int index, var delegateItem, real itemY)
55− implicitHeight: listView.tileHeight * selectedItemScaleFactor
57− /* Basic idea behind the carousel effect is to move the items of the delegates (compacting /stuffing them).
58− One drawback is, that more delegates have to be drawn than usually. As some items are moved from the
59− invisible to the visible area. Setting the cacheBuffer does not fix this.
60− See https://bugreports.qt-project.org/browse/QTBUG-29173
61− Therefore the ListView has negative left and right anchors margins, and in addition a header
62− and footer item to compensate that.
64− The scaling of the items is controlled by the variable continuousIndex, described below. */
68− property real minimumTileWidth: 0
69− property real newContentX: -1
70− property real pathItemCount: referenceWidth / referenceTileWidth
71− property real tileAspectRatio: 1
73− /* The positioning and scaling of the items in the carousel is based on the variable
74− 'continuousIndex', a continuous real variable between [0, 'carousel.model.count'],
75− roughly representing the index of the item that is prioritised over the others.
76− 'continuousIndex' is not linear, but is weighted depending on if it is close
77− to the beginning of the content (beginning phase), in the middle (middle phase)
78− or at the end (end phase).
79− Each tile is scaled and transformed in proportion to the difference between
80− its own index and continuousIndex.
81− To efficiently calculate continuousIndex, we have these values:
82− - 'gapToMiddlePhase' gap in pixels between beginning and middle phase
83− - 'gapToEndPhase' gap in pixels between middle and end phase
84− - 'kGapEnd' constant used to calculate 'continuousIndex' in end phase
85− - 'kMiddleIndex' constant used to calculate 'continuousIndex' in middle phase
86− - 'kXBeginningEnd' constant used to calculate 'continuousIndex' in beginning and end phase
87− - 'realContentWidth' the width of all the delegates only (without header/footer)
88− - 'realContentX' the 'contentX' of the listview ignoring the 'drawBuffer'
89− - 'realWidth' the 'width' of the listview, as it is used as component. */
91− readonly property real gapToMiddlePhase: Math.min(realWidth / 2 - tileWidth / 2, (realContentWidth - realWidth) / 2)
92− readonly property real gapToEndPhase: realContentWidth - realWidth - gapToMiddlePhase
93− readonly property real kGapEnd: kMiddleIndex * (1 - gapToEndPhase / gapToMiddlePhase)
94− readonly property real kMiddleIndex: (realWidth / 2) / tileWidth - 0.5
95− readonly property real kXBeginningEnd: 1 / tileWidth + kMiddleIndex / gapToMiddlePhase
96− readonly property real maximumItemTranslation: (listView.tileWidth * 3) / listView.scaleFactor
97− readonly property real realContentWidth: contentWidth - 2 * carousel.drawBuffer
98− readonly property real realContentX: contentX + carousel.drawBuffer
99− readonly property real realPathItemCount: Math.min(realWidth / tileWidth, pathItemCount)
100− readonly property real realWidth: carousel.width
101− readonly property real referenceGapToMiddlePhase: realWidth / 2 - tileWidth / 2
102− readonly property real referencePathItemCount: referenceWidth / referenceTileWidth
103− readonly property real referenceWidth: 848
104− readonly property real referenceTileWidth: 175
105− readonly property real scaleFactor: tileWidth / referenceTileWidth
106− readonly property real tileWidth: Math.max(realWidth / pathItemCount, minimumTileWidth)
107− readonly property real tileHeight: tileWidth / tileAspectRatio
108− readonly property real translationXViewFactor: 0.2 * (referenceGapToMiddlePhase / gapToMiddlePhase)
109− readonly property real verticalMargin: (parent.height - tileHeight) / 2
110− readonly property real visibleTilesScaleFactor: realPathItemCount / referencePathItemCount
114− topMargin: verticalMargin
115− bottomMargin: verticalMargin
116− // extending the "drawing area"
117− leftMargin: -carousel.drawBuffer
118− rightMargin: -carousel.drawBuffer
121− /* The header and footer help to "extend" the area, the listview draws items.
122− This together with anchors.leftMargin and anchors.rightMargin. */
124− width: carousel.drawBuffer
125− height: listView.tileHeight
128− width: carousel.drawBuffer
129− height: listView.tileHeight
132− boundsBehavior: Flickable.StopAtBounds
133− cacheBuffer: carousel.cacheBuffer
134− flickDeceleration: Math.max(1500 * Math.pow(realWidth / referenceWidth, 1.5), 1500) // 1500 is platform default
135− maximumFlickVelocity: Math.max(2500 * Math.pow(realWidth / referenceWidth, 1.5), 2500) // 2500 is platform default
136− orientation: ListView.Horizontal
138− function itemClicked(index, delegateItem) {
139− var x = CarouselJS.getXFromContinuousIndex(index,
145− carousel.drawBuffer)
147− if (Math.abs(x - contentX) < 1) {
148− /* We're clicking the selected item and
149− we're in the neighbourhood of radius 1 pixel from it.
150− Let's emit the clicked signal. */
151− carousel.clicked(index, delegateItem, delegateItem.y)
155− stepAnimation.stop()
156− newContentXAnimation.stop()
159− newContentXAnimation.start()
162− onMovementStarted: {
163− stepAnimation.stop()
164− newContentXAnimation.stop()
168− if (realContentX > 0 && realContentX < realContentWidth - realWidth)
169− stepAnimation.start()
176− property: "contentX"
177− to: CarouselJS.getXFromContinuousIndex(listView.selectedIndex,
179− listView.realContentWidth,
181− listView.gapToMiddlePhase,
182− listView.gapToEndPhase,
183− carousel.drawBuffer)
186− easing.type: Easing.InOutQuad
189− SequentialAnimation {
190− id: newContentXAnimation
194− property: "contentX"
195− from: listView.contentX
196− to: listView.newContentX
198− easing.type: Easing.InOutQuad
201− script: listView.newContentX = -1
205− readonly property int selectedIndex: Math.round(continuousIndex)
206− readonly property real continuousIndex: CarouselJS.getContinuousIndex(listView.realContentX,
208− listView.gapToMiddlePhase,
209− listView.gapToEndPhase,
211− listView.kMiddleIndex,
212− listView.kXBeginningEnd)
214− property real viewTranslation: CarouselJS.getViewTranslation(listView.realContentX,
216− listView.gapToMiddlePhase,
217− listView.gapToEndPhase,
218− listView.translationXViewFactor)
221− property bool explicitlyScaled: explicitScaleFactor == carousel.selectedItemScaleFactor
222− property real explicitScaleFactor: explicitScale ? carousel.selectedItemScaleFactor : 1.0
223− readonly property bool explicitScale: (!listView.moving ||
224− listView.realContentX <= 0 ||
225− listView.realContentX >= listView.realContentWidth - listView.realWidth) &&
226− listView.newContentX < 0 &&
227− index === listView.selectedIndex
228− readonly property real cachedTiles: listView.realPathItemCount + carousel.drawBuffer / listView.tileWidth
229− readonly property real distance: listView.continuousIndex - index
230− readonly property real itemTranslationScale: CarouselJS.getItemScale(0.5,
231− (index + 0.5), // good approximation of scale while changing selected item
233− listView.visibleTilesScaleFactor)
234− readonly property real itemScale: CarouselJS.getItemScale(distance,
235− listView.continuousIndex,
237− listView.visibleTilesScaleFactor)
238− readonly property real translationX: CarouselJS.getItemTranslation(index,
239− listView.selectedIndex,
242− itemTranslationScale,
243− listView.maximumItemTranslation)
245− width: listView.tileWidth
246− height: listView.tileHeight
247− scale: itemScale * explicitScaleFactor
248− sourceComponent: itemComponent
249− z: cachedTiles - Math.abs(index - listView.selectedIndex)
251− transform: Translate {
252− x: listView.viewTranslation + translationX * listView.scaleFactor
255− Behavior on explicitScaleFactor {
256− SequentialAnimation {
258− script: if (!explicitScale)
259− explicitlyScaled = false
262− duration: explicitScaleFactor === 1.0 ? 250 : 150
263− easing.type: Easing.InOutQuad
266− script: if (explicitScale)
267− explicitlyScaled = true
273− item.explicitlyScaled = Qt.binding(function() { return explicitlyScaled; })
274− item.model = Qt.binding(function() { return model; })
280− anchors.fill: parent
282− onClicked: listView.itemClicked(index, item)
Components/CrossFadeImage.qmldeleted−149
@@ -1,149 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
23− * true: fade out old image in parallel with fading in the new one.
24− * false: fade in new image above old one.
26− * The reason why this is required is that crossfading has the isse that in
27− * the middle of the animation, both images are only 50% opaque which make
28− * any background shine through. Not wanted for background images etc, but
29− * wanted for overlays.
31− property bool crossFade: true
34− * true: the very first source url should be faded in already.
35− * false: the very first source url should just be shown without animation.
37− property bool fadeInFirst: true
39− readonly property size sourceSize: __currentImage.sourceSize
40− readonly property var status: __currentImage ? __currentImage.status : Image.Null
41− readonly property bool running: crossFadeImages.running || nextImageFadeIn.running
43− property Image __currentImage: image1
44− property Image __nextImage: image2
46− function swapImages() {
50− crossFadeImages.start();
52− nextImageFadeIn.start();
55− var tmpImage = __currentImage
56− __currentImage = __nextImage
57− __nextImage = tmpImage
61− // On creation, the souce handler is called before image pointers are set.
62− if (__currentImage === null) {
63− __currentImage = image1;
64− __nextImage = image2;
67− crossFadeImages.stop();
68− nextImageFadeIn.stop();
70− // Don't fade in initial picture, only fade changes
71− if (__currentImage.source == "" && !fadeInFirst) {
72− __currentImage.source = source;
74− nextImageFadeIn.stop();
75− __nextImage.opacity = 0.0;
76− __nextImage.source = source;
78− // If case the image is still in QML's cache, status will be "Ready" immediately
79− if (__nextImage.status == Image.Ready || __nextImage.source == "") {
88− if (__nextImage.status == Image.Ready) {
104− anchors.fill: parent
116− easing.type: Easing.InOutQuad
120− __nextImage.source = "";
132− easing.type: Easing.InOutQuad
136− target: __currentImage
140− easing.type: Easing.InOutQuad
145− __nextImage.source = "";
Components/EdgeDragArea.qmldeleted−36
@@ -1,36 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Ubuntu.Gestures 0.1
22− A DirectionalDragArea wrapper that provides some well-chosen defaults
23− for its gesture recognition parameters.
27− // TODO: Re-evaluate those or even the recognition heuristics itself once
28− // we have gesture cancelling/forwarding in place.
30− // The idea here is that it's better having lax rules than false negatives.
31− // False negatives are very frustrating to the user.
32− maxDeviation: units.gu(3)
34− distanceThreshold: units.gu(1.5)
35− minSpeed: units.gu(0) // some people were getting false negatives with it enabled.
Components/FilterGrid.qmldeleted−137
@@ -1,137 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−import "../Components"
23− A ResponsiveGridView that can optionally have the number of rows being displayed
24− reduced to collapsedRowCount, in which case a button saying "View all (123)"
25− will be shown at the bottom. If clicked, FilterGrid will them expand vertically
31− /* If true, the number of elements displayed will be limited by collapsedRowCount.
32− If false, all elements will be displayed, effectively looking the same as a regular
33− ResponsiveGridView. */
34− property bool filter: true
36− /* Whether, when collapsed, a button should be displayed enabling the user to expand
37− the grid to its full size. */
38− property bool expandable: true
40− property var model: null
42− /* Maximum number of rows to be show when filter=true. */
43− property int collapsedRowCount: 2
45− property alias minimumHorizontalSpacing: iconTileGrid.minimumHorizontalSpacing
46− property alias maximumNumberOfColumns: iconTileGrid.maximumNumberOfColumns
47− property alias columns: iconTileGrid.columns
48− property alias delegateWidth: iconTileGrid.delegateWidth
49− property alias delegateHeight: iconTileGrid.delegateHeight
50− property alias verticalSpacing: iconTileGrid.verticalSpacing
51− property alias delegate: iconTileGrid.delegate
52− property alias cellWidth: iconTileGrid.cellWidth
53− property alias cellHeight: iconTileGrid.cellHeight
54− readonly property alias flicking: iconTileGrid.flicking
55− readonly property alias moving: iconTileGrid.moving
56− readonly property alias pressDelay: iconTileGrid.pressDelay
58− height: childrenRect.height
63− anchors { left: parent.left; right: parent.right }
64− height: totalContentHeight
67− minimumHorizontalSpacing: units.gu(0.5)
68− maximumNumberOfColumns: 6
69− delegateWidth: units.gu(11)
70− delegateHeight: units.gu(9.5)
71− verticalSpacing: units.gu(2)
73− model: LimitProxyModel {
75− limit: (filter) ? collapsedRowCount * iconTileGrid.columns : -1
84− top: iconTileGrid.bottom
86− visible: (expandable && filter && model.count > collapsedRowCount * iconTileGrid.columns)
87− height: (visible) ? childrenRect.height + units.gu(2) : 0
91− objectName: "filterToggleButton"
95− horizontalCenter: parent.horizontalCenter
101− anchors.fill: parent
109− anchors.fill: parent
111− borderSource: "radius_pressed.sci"
112− opacity: button.pressed ? 1.0 : 0.0
113− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
118− verticalCenter: parent.verticalCenter
121− leftMargin: units.gu(1)
122− rightMargin: units.gu(1)
124− text: (filter) ? "+ View all (" + model.count + ")" : "- Show fewer"
130− elide: Text.ElideMiddle
131− horizontalAlignment: Text.AlignHCenter
134− onClicked: filter = !filter
Components/IconUtil.jsdeleted−42
@@ -1,42 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
19−// FIXME: a quick hack to get icons out of gicons and fallback to
20−// base icon for annotated icons. Doesn't correctly handle all icons.
21−// Proper global solution needed.
22−function from_gicon(name) {
23− var icon_name = name;
24− var annotated_re = /^. UnityProtocolAnnotatedIcon/;
25− if (annotated_re.test(name)) {
26− var base_icon_re = /'base-icon':.+?'(.+?)'/;
27− var base_icon = name.toString().match(base_icon_re);
28− icon_name = base_icon[1];
30− var themed_re = /^. GThemedIcon\s*([^\s]+)\s*/;
31− var themed = name.match(themed_re);
33− return "image://gicon/" + themed[1];
36− var name_re = /^[a-z0-9\._-]+$/;
37− if (name_re.test(icon_name)) {
38− return "image://gicon/" + icon_name;
Components/ListItems/Base.qmldeleted−125
@@ -1,125 +0,0 @@
2− * Copyright (C) 2012 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
22− width: parent ? parent.width : units.gu(31)
23− height: body.height + bottomDividerLine.height
27− Specifies whether the list item is selected.
29− property bool selected: false
33− Highlight the list item when it is pressed.
34− This is used to disable the highlighting of the full list item
35− when custom highlighting needs to be implemented (for example in
36− ListItem.Standard which can have a split).
38− property bool highlightWhenPressed: true
42− Set to show or hide the thin bottom divider line (drawn by the \l ThinDivider component).
43− This line is shown by default except in cases where this item is the delegate of a ListView.
45− property bool showDivider: __showDivider()
49− Method to automatically determine if the bottom divider line should be drawn.
50− This always returns true, unless item is a delegate in a ListView. If in a ListView
51− it will return false only when:
52− + if this is the final item in the list, and ListView.footer is set (again as thin
53− divider line won't look well with footer below it)
55− function __showDivider() {
56− // if we're not in ListView, always show a thin dividing line at the bottom
58− if (typeof ListViewWithPageHeader !== 'undefined') {
59− if (typeof ListViewWithPageHeader.model !== 'undefined') {
60− model = ListViewWithPageHeader.model;
62− } else if (ListView.view !== null) {
63− model = ListView.view.model;
65− // if we're last item in ListView don't show divider
66− if (model && index === model.count - 1) return false;
71− /* Relevant really only for ListViewWithPageHeader case: specify how many pixels we can overlap with the section header */
72− readonly property int allowedOverlap: units.dp(1)
74− property real __heightToClip: {
75− // Check this is in position where clipping is needed
76− if (typeof ListViewWithPageHeader !== 'undefined') {
77− if (typeof heightToClip !== 'undefined') {
78− if (heightToClip >= allowedOverlap) {
79− return heightToClip - allowedOverlap;
88− Reparent so that the visuals of the children does not
89− occlude the bottom divider line.
91− default property alias children: body.children
94− id: clippingContainer
95− height: parent.height - __heightToClip
96− anchors { left: parent.left; right: parent.right; bottom: parent.bottom }
97− clip: __heightToClip > 0
104− bottom: bottomDividerLine.top
106− height: childrenRect.height
110− id: bottomDividerLine
111− anchors.bottom: parent.bottom
112− visible: showDivider
120− bottom: bottomDividerLine.top
122− pressed: (emptyListItem.selected || (emptyListItem.highlightWhenPressed && emptyListItem.pressed)) ? "pressed" : ""
Components/ListItems/Header.qmldeleted−67
@@ -1,67 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− The text that is shown as the header text.
24− \qmlproperty string text
26− property alias text: label.text
28− height: units.gu(4.5)
35− bottom: bottomBorder.top
42− leftMargin: units.gu(2)
44− rightMargin: units.gu(0.5)
45− verticalCenter: parent.verticalCenter
48− color: "#f3f3e7" //at 60%
50− font.family: "Ubuntu"
52− elide: Text.ElideRight
53− textFormat: Text.PlainText
64− bottom: parent.bottom
Components/ListItems/Highlight.qmldeleted−46
@@ -1,46 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
22− property bool pressed: false
23− property real pressedOpacity: 0.3
27− state: pressed ? "pressed" : ""
31− PropertyChanges { target: highlight; opacity: pressedOpacity}
38− NumberAnimation { target: highlight; property: "opacity"; duration: 50}
43− NumberAnimation { target: highlight; property: "opacity"; duration: 100}
Components/ListItems/graphics/ListItemDividerHorizontal@18.pngdeleted
Binary file not shown.
Components/ListItems/graphics/ListItemDividerVertical@18.pngdeleted
Binary file not shown.
Components/OpenEffect.qmldeleted−138
@@ -1,138 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
21− property bool enabled: topGapPx != positionPx || bottomGapPx != positionPx
22− property alias live: effectSource.live
23− property Item sourceItem
24− property ShaderEffectSource source: ShaderEffectSource {
26− sourceItem: effect.enabled ? effect.sourceItem : null
27− hideSource: effect.enabled
30− if (effect.enabled) {
31− Qt.rect(0, -effect.topOverflow, sourceItem.width, sourceItem.height + effect.topOverflow + effect.bottomOverflow)
38− onEnabledChanged: if (!live && enabled) scheduleUpdate()
41− \qmlproperty real positionPx
42− The y coordinate of where to perform the split.
44− \qmlproperty real topGapPx
47− \qmlproperty real bottomGapPx
50− \qmlproperty real topOverflow
51− How much of the sourceItem should be sourced above its bounds.
53− \qmlproperty real bottomOverflow
54− How much of the sourceItem should be sourced below its bounds.
57− property real positionPx: 0
58− property real topGapPx: 0
59− property real bottomGapPx: height
60− property real topOverflow: 0.0
61− property real bottomOverflow: 0.0
62− property real topOpacity: 1.0
63− property real bottomOpacity: 1.0
65− property real __roundedPositionPx: Math.round(positionPx)
67− function scheduleUpdate() {
68− source.scheduleUpdate();
73− visible: effect.enabled
75− property ShaderEffectSource source: effect.source
76− property real positionPx: __roundedPositionPx
77− property real factor: effect.height / height
85− topMargin: -topOverflow - positionPx + topGapPx
87− height: topOverflow + positionPx
90− uniform highp mat4 qt_Matrix;
91− attribute highp vec4 qt_Vertex;
92− attribute highp vec2 qt_MultiTexCoord0;
93− varying highp vec2 qt_TexCoord0;
94− uniform highp float factor;
97− highp vec4 pos = qt_Vertex;
99− gl_Position = qt_Matrix * pos;
100− qt_TexCoord0 = qt_MultiTexCoord0;
107− visible: effect.enabled
108− opacity: bottomOpacity
109− property ShaderEffectSource source: effect.source
110− property real offset: effect.topOverflow + __roundedPositionPx
111− property real factor: effect.height / height
119− y: topOverflow + bottomGapPx
120− height: sourceItem.height - positionPx + bottomOverflow
123− uniform highp mat4 qt_Matrix;
124− attribute highp vec4 qt_Vertex;
125− attribute highp vec2 qt_MultiTexCoord0;
126− varying highp vec2 qt_TexCoord0;
127− uniform highp float factor;
128− uniform highp float offset;
131− highp vec4 pos = qt_Vertex;
132− pos.y = (pos.y * factor) - offset;
133− gl_Position = qt_Matrix * pos;
134− qt_TexCoord0 = qt_MultiTexCoord0;
Components/PageHeader.qmldeleted−345
@@ -1,345 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Ubuntu.Components.Popups 0.1
20−import Ubuntu.Components.ListItems 0.1 as ListItem
25− The text that is shown inside the Page Header
26− \qmlproperty string text
28− property alias text: label.text
30− property bool searchEntryEnabled: false
31− property alias searchQuery: searchField.text
32− property ListModel searchHistory: SearchHistoryModel {}
34− height: units.gu(8.5)
35− implicitHeight: units.gu(8.5)
37− function triggerSearch() {
38− if (searchEntryEnabled) searchField.forceActiveFocus()
41− function resetSearch() {
42− if (!searchHistory) return;
44− searchHistory.addQuery(searchField.text);
45− searchField.text = "";
46− searchField.focus = false;
51− onShownChanged: if (shown) resetSearch()
61− height: units.gu(6.5)
64− contentHeight: headerContainer.height
67− contentY: searchField.activeFocus || searchField.text != "" ? searchContainer.y : headerContainer.y
69− Behavior on contentY { NumberAnimation { duration: 200; easing.type: Easing.OutQuad } }
71− // FIXME this could potentially be simplified to avoid all the containers
76− height: childrenRect.height
82− height: header.height
88− leftMargin: units.gu(2)
90− verticalCenter: parent.verticalCenter
95− font.family: "Ubuntu"
96− font.weight: Font.Light
98− elide: Text.ElideRight
106− objectName: "searchContainer"
108− visible: searchEntryEnabled
110− property bool narrowMode: parent.width < label.contentWidth + units.gu(50)
112− property bool active: searchField.text != "" || searchField.activeFocus
113− property var popover: null
115− anchors.right: textContainer.right
116− height: header.height
119− if (active && narrowMode) "narrowActive"
120− else if (!active && narrowMode) "narrowInactive"
121− else if (active && !narrowMode) "active"
122− else if (!active && !narrowMode) "inactive"
124− function openPopover() {
125− if (searchHistory.count > 0) {
126− searchContainer.popover = PopupUtils.open(popoverComponent, searchField,
128− "pointerTarget": pointerPositioner,
129− "contentWidth": searchField.width,
130− "edgeMargins": units.gu(1)
136− function closePopover() {
137− if (searchContainer.popover) PopupUtils.close(searchContainer.popover)
140− onActiveFocusChanged: if (!activeFocus) { searchHistory.addQuery(searchField.text) }
145− anchors.fill: parent
146− anchors.margins: units.gu(1)
148− hasClearButton: false
150− primaryItem: AbstractButton {
151− enabled: searchField.text != ""
153− if (searchField.text != "") {
154− searchHistory.addQuery(searchField.text)
155− searchField.text = ""
158− height: parent.height
164− verticalCenter: parent.verticalCenter
166− leftMargin: units.gu(0.5)
173− id: pointerPositioner
174− anchors.left: parent.right
175− anchors.leftMargin: units.gu(0.5)
176− anchors.top: parent.bottom
181− if (text != "") searchContainer.closePopover()
182− else if (text == "" && activeFocus) searchContainer.openPopover()
185− onActiveFocusChanged: {
186− if (!activeFocus) searchContainer.closePopover()
193− AnchorChanges { target: textContainer; anchors.top: headerContainer.top }
194− AnchorChanges { target: searchContainer; anchors.left: undefined; anchors.top: textContainer.top }
198− PropertyChanges { target: searchField; highlighted: true }
199− AnchorChanges { target: textContainer; anchors.top: searchContainer.bottom }
200− AnchorChanges { target: searchContainer; anchors.left: headerContainer.left; anchors.top: headerContainer.top }
205− PropertyChanges { target: searchContainer; width: units.gu(40) }
206− PropertyChanges { target: primaryImage; source: searchField.text ? "../Dash/graphics/icon_clear.png" : "../Dash/graphics/icon_search_active.png" }
207− PropertyChanges { target: searchField; highlighted: true }
212− PropertyChanges { target: searchContainer; width: units.gu(25) }
213− PropertyChanges { target: primaryImage; source: "../Dash/graphics/icon_search_inactive.png" }
214− PropertyChanges { target: searchField; highlighted: false }
217− name: "narrowActive"
219− PropertyChanges { target: header; contentY: 0 }
220− PropertyChanges { target: primaryImage; source: searchField.text ? "../Dash/graphics/icon_clear.png" : "../Dash/graphics/icon_search_active.png" }
223− name: "narrowInactive"
225− PropertyChanges { target: header; contentY: header.height }
226− PropertyChanges { target: primaryImage; source: searchField.text ? "../Dash/graphics/icon_clear.png" : "../Dash/graphics/icon_search_active.png" }
233− SequentialAnimation {
235− NumberAnimation { targets: [searchContainer, searchField]; property: "width"; duration: 200; easing.type: Easing.InOutQuad }
236− PropertyAction { target: primaryImage; property: "source" }
237− AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
239− ScriptAction { script: searchContainer.openPopover() }
244− ScriptAction { script: searchContainer.closePopover() }
245− NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.InOutQuad }
246− AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
250− SequentialAnimation {
252− NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.OutQuad }
253− AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
255− ScriptAction { script: searchContainer.openPopover() }
259− to: "narrowInactive"
260− ScriptAction { script: searchContainer.closePopover() }
261− NumberAnimation { targets: [searchContainer, searchField] ; property: "width"; duration: 200; easing.type: Easing.OutQuad }
262− AnchorAnimation { targets: [searchContainer, textContainer]; duration: 200; easing.type: Easing.InOutQuad }
267− id: popoverComponent
271− // FIXME: this should go into the first item below, but enable: false
272− // prevents mouse events propagation
281− onClicked: searchContainer.closePopover()
284− anchors.centerIn: parent
287− source: "../Dash/graphics/icon_listview_clear.png"
298− ListItem.Standard { enabled: false; text: i18n.tr("Recent searches") }
302− model: searchHistory
304− delegate: ListItem.Standard {
305− showDivider: index < recentSearches.count - 1
308− searchHistory.addQuery(text)
309− searchField.text = text
318− enabled: searchField.activeFocus
326− height: searchContainer.popover ? parent.height + searchContainer.popover.contentHeight + units.gu(2) : parent.height
328− onPressed: searchField.focus = false
340− bottom: parent.bottom
343− source: "graphics/PageHeaderBaseDivider.sci"
Components/RatingStars.qmldeleted−41
@@ -1,41 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
22− property int maximumRating: 5
23− property int starCount: 5
24− height: childrenRect.height
25− width: childrenRect.width
27− readonly property int effectiveRating: Math.max(0, Math.min(root.starCount * root.rating / root.maximumRating, root.maximumRating))
30− model: root.effectiveRating
32− source: "graphics/icon_star_on.png"
36− model: root.starCount - root.effectiveRating
38− source: "graphics/icon_star_off.png"
Components/ResponsiveFlowView.qmldeleted−81
@@ -1,81 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− property int minimumHorizontalSpacing: units.gu(0.5)
24− // property int minimumNumberOfColumns: 2 // FIXME: not implemented
25− property int maximumNumberOfColumns: 6
26− readonly property int columns: flow.columns
27− property alias verticalSpacing: flow.verticalSpacing
28− property alias horizontalSpacing: flow.horizontalSpacing
29− property int referenceDelegateWidth
30− property alias firstModel: repeater1.model
31− property alias secondModel: repeater2.model
32− property alias delegate: repeater1.delegate
33− readonly property int cellWidth: referenceDelegateWidth + horizontalSpacing
34− readonly property int cellHeight: referenceDelegateWidth + verticalSpacing
35− property alias move: flow.move
37− height: flow.height + flow.anchors.topMargin
46− rightMargin: margin/2
47− topMargin: verticalSpacing
50− function pixelToGU(value) {
51− return Math.floor(value / units.gu(1));
54− function spacingForColumns(columns) {
55− // spacing between columns as an integer number of GU, the remainder goes in the margins
56− var spacingGU = pixelToGU(allocatableVerticalSpace / columns);
57− return units.gu(spacingGU);
60− function columnsForSpacing(space) {
61− // minimum margin is half of the spacing
62− return Math.floor((parent.width - space/2) / (referenceDelegateWidth + space));
65− property real allocatableVerticalSpace: parent.width - columns * referenceDelegateWidth
66− property int columns: Math.min(columnsForSpacing(minimumHorizontalSpacing), maximumNumberOfColumns)
67− property real horizontalSpacing: spacingForColumns(columns)
68− property real verticalSpacing: horizontalSpacing
69− property int margin: allocatableVerticalSpace - columns * horizontalSpacing
73− model: (root.model) ? root.model[0] : null
77− model: (root.model) ? root.model[1] : null
78− delegate: repeater1.delegate
Components/ResponsiveGridView.qmldeleted−76
@@ -1,76 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
21− Essentially a GridView where you can specify the maximum number of columns it can have.
24− property int minimumHorizontalSpacing: units.gu(0.5)
25− // property int minimumNumberOfColumns: 2 // FIXME: not implemented
26− property int maximumNumberOfColumns: 6
27− readonly property int columns: gridView.columns
28− property alias verticalSpacing: gridView.verticalSpacing
29− property int delegateWidth
30− property int delegateHeight
31− property alias model: gridView.model
32− property alias delegate: gridView.delegate
33− readonly property int cellWidth: gridView.cellWidth
34− readonly property int cellHeight: gridView.cellHeight
35− readonly property int totalContentHeight: Math.ceil(gridView.model.count / columns) * cellHeight + verticalSpacing
36− property alias interactive: gridView.interactive
37− readonly property alias flicking: gridView.flicking
38− readonly property alias moving: gridView.moving
39− readonly property alias pressDelay: gridView.pressDelay
43− objectName: "responsiveGridViewGrid"
47− rightMargin: margin/2
48− topMargin: verticalSpacing
50− clip: parent.height != totalContentHeight
52− function pixelToGU(value) {
53− return Math.floor(value / units.gu(1));
56− function spacingForColumns(columns) {
57− // spacing between columns as an integer number of GU, the remainder goes in the margins
58− var spacingGU = pixelToGU(allocatableHorizontalSpace / columns);
59− return units.gu(spacingGU);
62− function columnsForSpacing(spacing) {
63− // minimum margin is half of the spacing
64− return Math.floor((parent.width - spacing/2) / (delegateWidth + spacing));
67− property real allocatableHorizontalSpace: parent.width - columns * delegateWidth
68− property int columns: Math.min(columnsForSpacing(minimumHorizontalSpacing), maximumNumberOfColumns)
69− property real horizontalSpacing: spacingForColumns(columns)
70− property real verticalSpacing: horizontalSpacing
71− property int margin: allocatableHorizontalSpace - columns * horizontalSpacing
73− cellWidth: delegateWidth + horizontalSpacing
74− cellHeight: delegateHeight + verticalSpacing
Components/Revealer.qmldeleted−242
@@ -1,242 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "Math.js" as MathLocal
24− property Showable target
25− property var hintingAnimation: hintingAnimation
26− property string boundProperty: orientation == Qt.Vertical ? "y" : "x"
27− property int orientation: Qt.Vertical
28− property int direction: Qt.LeftToRight
29− property real openedValue: orientation == Qt.Vertical ? y : x
30− property real closedValue: orientation == Qt.Vertical ? y + (direction == Qt.LeftToRight ? -height : height) : x + (direction == Qt.LeftToRight ? -width : width)
31− property real hintDisplacement: 0
32− property real handleSize: units.gu(2)
33− property real dragVelocity: draggingArea.dragVelocity != 0 ? Math.abs(draggingArea.dragVelocity) : -1
34− property real dragVelocityThreshold: units.gu(5)
35− property bool dragging: false
36− property bool pressed: draggingArea.pressed
37− property int lateralPosition: draggingArea.lateralPosition
38− property real dragPosition
39− property bool openOnPress: true
41− signal openPressed(int mouseX, int mouseY)
42− signal openReleased(int mouseX, int mouseY)
49− if (orientation == Qt.Vertical) {
50− value = draggingArea.dragValue + draggingArea.y
51− if (direction == Qt.RightToLeft) {
52− value += draggingArea.height - height
55− value = draggingArea.dragValue + draggingArea.x
56− if (direction == Qt.RightToLeft) {
57− value += draggingArea.width - width
61− if (direction == Qt.LeftToRight) {
66− } else if (dragging) {
67− if (direction == Qt.LeftToRight) {
68− value += hintDisplacement
70− value -= hintDisplacement
76− property var draggingArea: leftDraggingArea.enabled ? leftDraggingArea : rightDraggingArea
78− property real __hintValue: closedValue + (direction == Qt.LeftToRight ? hintDisplacement : -hintDisplacement)
80− function dragToValue(dragPosition) {
81− return dragPosition + closedValue
84− property bool __opened: target.shown
85− enabled: target.available
87− // Can be replaced with a fake implementation during tests
88− // property var __getCurrentTimeMs: function () { return new Date().getTime() }
89− property var __dateTime: new function() {
90− this.getCurrentTimeMs = function() {return new Date().getTime()}
93− Component.onCompleted: target[boundProperty] = __opened ? openedValue : closedValue
94− onOpenedValueChanged: if (__opened && !dragging) target[boundProperty] = openedValue
95− onClosedValueChanged: if (!__opened && !dragging) target[boundProperty] = closedValue
97− function __computeValue(dragPosition) {
98− return MathLocal.clamp(dragToValue(dragPosition), __hintValue, openedValue)
102− hintingAnimation.stop()
106− function __close() {
107− hintingAnimation.stop()
112− target.showAnimation.stop()
113− target.hideAnimation.stop()
114− hintingAnimation.restart()
117− function __settle() {
118− hintingAnimation.stop()
119− if (__opened) target.show()
123− function __startDragging() {
124− hintingAnimation.stop()
128− function __endDragging(dragVelocity) {
130− if (revealer.direction == Qt.RightToLeft) {
131− dragVelocity = -dragVelocity
133− if (Math.abs(dragVelocity) >= dragVelocityThreshold) {
134− if (dragVelocity > 0) __open()
144− target: revealer.target
145− property: revealer.boundProperty
146− value: __computeValue(dragPosition)
151− id: hintingAnimation
153− target: revealer.target
154− property: revealer.boundProperty
156− to: revealer.__hintValue
160− id: leftDraggingArea
162− property bool isOpeningArea: revealer.direction == Qt.LeftToRight
164− height: orientation == Qt.Vertical ? handleSize : parent.height
165− width: orientation == Qt.Horizontal ? handleSize : parent.width
166− orientation: revealer.orientation
167− enabled: isOpeningArea ? !revealer.__opened : revealer.__opened
169− __dateTime: revealer.__dateTime
172− if (isOpeningArea) {
173− if (revealer.openOnPress) {
174− revealer.openPressed(mouseX, mouseY)
178− revealer.closePressed()
182− if (isOpeningArea && revealer.openOnPress) {
183− revealer.openReleased(mouseX, mouseY)
187− onDragStart: __startDragging()
188− onDragEnd: __endDragging(dragVelocity)
190− if (clickValidated) {
191− if (isOpeningArea) {
192− if (revealer.openOnPress) revealer.openClicked()
194− revealer.closeClicked()
201− id: rightDraggingArea
203− property bool isOpeningArea: revealer.direction == Qt.RightToLeft
205− x: orientation == Qt.Vertical ? 0 : parent.width - width
206− y: orientation == Qt.Vertical ? parent.height - height : 0
207− height: orientation == Qt.Vertical ? handleSize : parent.height
208− width: orientation == Qt.Horizontal ? handleSize : parent.width
209− orientation: revealer.orientation
210− enabled: isOpeningArea ? !revealer.__opened : revealer.__opened
212− __dateTime: revealer.__dateTime
215− if (isOpeningArea) {
216− if (revealer.openOnPress) {
217− revealer.openPressed(mouseX, mouseY)
221− revealer.closePressed()
225− if (isOpeningArea && revealer.openOnPress) {
226− revealer.openReleased(mouseX, mouseY)
230− onDragStart: __startDragging()
231− onDragEnd: __endDragging(dragVelocity)
233− if (clickValidated) {
234− if (isOpeningArea) {
235− if (revealer.openOnPress) revealer.openClicked()
237− revealer.closeClicked()
Components/Stage.qmldeleted−540
@@ -1,540 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Application 0.1
19−import Ubuntu.Components 0.1
20−import Ubuntu.Gestures 0.1
23− Responsible for application switching.
25− Drag from the right edge to switch to the next application.
26− While being dragged, this component will show an animation for the user to
27− visualize that he's changing the stacking of applications (next/new app comes from
28− right edge and current/old app fades out).
36− property int type: ApplicationInfo.MainStage
37− property var applicationManager
38− readonly property var applications:
39− type == ApplicationInfo.MainStage ? applicationManager.mainStageApplications
40− : applicationManager.sideStageApplications
41− property bool fullyShown: false
42− readonly property var focusedApplication:
43− type == ApplicationInfo.MainStage ? applicationManager.mainStageFocusedApplication
44− : applicationManager.sideStageFocusedApplication
45− property bool shouldUseScreenshots: true
47− /* Will be true whenever application screenshots are being shown.
48− i.e. during application window transitions */
49− readonly property bool usingScreenshots: {
50− if (newApplicationScreenshot.application != null && oldApplicationScreenshot.application != null) {
51− return newApplicationScreenshot.ready && oldApplicationScreenshot.ready;
53− return newApplicationScreenshot.ready || oldApplicationScreenshot.ready;
57− property bool rightEdgeEnabled: true
58− property bool switchingFromFullscreenToFullscreen: false
60− property alias rightEdgeDraggingAreaWidth: rightEdgeDraggingArea.width
62− // Y coordinate for non-fullscreen applications
63− property int normalApplicationY: 0
65− function activateApplication(desktopFile, addDelay) {
66− var application = applicationManager.getApplicationFromDesktopFile(desktopFile, stage.type);
67− if (application != null && application == stage.focusedApplication) {
72− showStartingApplicationAnimation.prepare(application);
73− if (!stage.fullyShown) {
74− // if launching this app reveals the stage, make new application screenshot visible
75− newApplicationScreenshot.visible = true;
78− showStartingApplicationAnimation.start();
82− stage.__startingApplicationDesktopFile = desktopFile;
86− /* Keep a reference to the focused application so that we can safely
87− unfocus it when the stage is not fully shown and refocus it when the stage
88− is fully shown again.
90− property var focusedApplicationWhenUsingScreenshots
91− onShouldUseScreenshotsChanged: {
92− if (showStartingApplicationAnimation.running || switchToApplicationAnimation.running) {
96− if (shouldUseScreenshots) {
97− stage.__focusApplicationUsingScreenshots(stage.focusedApplication);
99− stage.__focusActualApplication(stage.focusedApplicationWhenUsingScreenshots);
104− property Item newApplicationScreenshot: ApplicationScreenshot {
107− height: stage.height - y
109− property Item oldApplicationScreenshot: ApplicationScreenshot {
112− height: stage.height - y
115− function __getApplicationIndex(application) {
118− for (var i = 0; i < stage.applications.count; i++ ) {
119− if (stage.applications.get(i).desktopFile == application.desktopFile) {
127− property string __startingApplicationDesktopFile
130− id: delayedHideScreenshots
131− interval: 500 // on Galaxy Nexus, Telephony app is slowest application to draw a frame so needs this delay
133− __hideScreenshots();
137− function __hideScreenshots() {
138− newApplicationScreenshot.clearApplication();
139− oldApplicationScreenshot.clearApplication();
140− newApplicationScreenshot.visible = false;
141− oldApplicationScreenshot.visible = false;
144− function __focusApplication(application) {
145− if (!application) return
146− if (shouldUseScreenshots) {
147− stage.__focusApplicationUsingScreenshots(application);
149− stage.__focusActualApplication(application);
154− function __focusActualApplication(application) {
155− if (application == null) {
159− if (stage.focusedApplication == application) {
160− /* FIXME: this case is reached when showing the sidestage, we
161− need to refocus the side stage app in order to show it.
162− FIXME: this case is reached when doing a right edge swipe
163− while in the dash to bring back the stage.
164− FIXME: this case is reached when showStartingApplicationAnimation
165− finishes after the newly started application has been focused
166− automatically by the ApplicationManager.
168− if (stage.type == ApplicationInfo.SideStage) {
169− applicationManager.focusApplication(application);
171− if (!delayedHideScreenshots.running) {
172− stage.__hideScreenshots();
175− /* FIXME: calling ApplicationManager::focusApplication does not focus
176− the application immediately nor show the application's surface
177− immediately. Delay hiding the screenshots until it has done so.
179− delayedHideScreenshots.stop();
180− applicationManager.focusApplication(application);
182− stage.focusedApplicationWhenUsingScreenshots = null;
185− function __focusApplicationUsingScreenshots(application) {
186− delayedHideScreenshots.stop();
187− if (application == null) {
191− if (newApplicationScreenshot.application != null) {
192− stage.focusedApplicationWhenUsingScreenshots = application;
196− newApplicationScreenshot.setApplication(application);
197− newApplicationScreenshot.scheduleUpdate();
198− newApplicationScreenshot.opacity = 1.0;
199− newApplicationScreenshot.x = 0.0;
200− newApplicationScreenshot.y = __getApplicationY(application);
201− newApplicationScreenshot.scale = 1.0;
202− newApplicationScreenshot.visible = true;
203− stage.focusedApplicationWhenUsingScreenshots = application;
204− stage.switchingFromFullscreenToFullscreen = false;
207− function __getApplicationY(application) {
208− return Qt.binding( function(){
209− return (application && application.fullscreen
210− && application.stage !== ApplicationInfo.SideStage)
211− ? 0 : normalApplicationY;
215− /* FIXME: should hide the screenshots when the focused application's surface
216− is visible. There is no API in QtUbuntu to support that yet.
220− onFocusedApplicationChanged: {
221− if (stage.focusedApplication != null) {
222− /* Move application to the beginning of the list of running applications */
223− var index = stage.__getApplicationIndex(stage.focusedApplication);
224− applicationManager.moveRunningApplicationStackPosition(index, 0, stage.type);
226− var startingApplication = applicationManager.getApplicationFromDesktopFile(
227− stage.__startingApplicationDesktopFile, stage.type);
229− if (stage.focusedApplication == startingApplication) {
230− stage.__startingApplicationDesktopFile = "";
232− /* Screenshots might still be in use at this point and their
233− use can be stopped before delayedHideScreenshots is complete.
234− Prepare for that case by setting appropriately
235− stage.focusedApplicationWhenUsingScreenshots.
237− stage.focusedApplicationWhenUsingScreenshots = stage.focusedApplication;
239− /* FIXME: should hide the screenshots when the focused application's window
240− is visible. There is no API in qtubuntu to support that yet. Therefore
241− we delay their hiding to avoid a state where neither the screenshot nor
242− the application's window is visible.
244− delayedHideScreenshots.start();
246− stage.__hideScreenshots();
253− SequentialAnimation {
254− id: showStartingApplicationAnimation
256− function prepare(newApplication) {
257− var oldApplication = stage.focusedApplication;
258− newApplicationScreenshot.setApplication(newApplication);
259− newApplicationScreenshot.updateFromCache();
260− oldApplicationScreenshot.setApplication(oldApplication);
261− oldApplicationScreenshot.scheduleUpdate();
262− newApplicationScreenshot.withBackground = true; // FIXME: should be withBackground = newApplication.state == Application.Starting
263− newApplicationScreenshot.y = __getApplicationY(newApplication);
264− oldApplicationScreenshot.y = __getApplicationY(oldApplication);
265− stage.focusedApplicationWhenUsingScreenshots = newApplication;
266− stage.switchingFromFullscreenToFullscreen = false;
269− PropertyAction {target: newApplicationScreenshot; property: "visible"; value: false}
270− PropertyAction {target: oldApplicationScreenshot; property: "visible"; value: false}
271− PropertyAction {target: newApplicationScreenshot; property: "z"; value: 0}
272− PropertyAction {target: oldApplicationScreenshot; property: "z"; value: 1}
273− PropertyAction {target: newApplicationScreenshot; property: "scale"; value: 0.8}
274− PropertyAction {target: oldApplicationScreenshot; property: "scale"; value: 1.0}
275− PropertyAction {target: newApplicationScreenshot; property: "opacity"; value: 0.0}
276− PropertyAction {target: oldApplicationScreenshot; property: "opacity"; value: 1.0}
277− PropertyAction {target: newApplicationScreenshot; property: "x"; value: 0.0}
278− PropertyAction {target: oldApplicationScreenshot; property: "x"; value: 0.0}
281− PropertyAction {target: newApplicationScreenshot; property: "visible"; value: true}
283− target: newApplicationScreenshot
286− easing.type: Easing.OutQuad
290− target: newApplicationScreenshot
293− easing.type: Easing.OutQuad
297− PropertyAction {target: oldApplicationScreenshot; property: "visible"; value: true}
300− target: oldApplicationScreenshot
303− easing.type: Easing.OutQuad
310− if (!stage.focusedApplicationWhenUsingScreenshots) {
311− // FIXME: only here to support case where application does
312− // not exist yet but is about to
316− stage.__focusApplication(stage.focusedApplicationWhenUsingScreenshots);
322− SequentialAnimation {
323− id: switchToApplicationAnimation
325− function prepare(newApplication) {
326− var oldApplication = stage.focusedApplication;
327− newApplicationScreenshot.setApplication(newApplication);
328− newApplicationScreenshot.updateFromCache();
329− oldApplicationScreenshot.setApplication(oldApplication);
330− oldApplicationScreenshot.scheduleUpdate();
331− newApplicationScreenshot.withBackground = false;
332− newApplicationScreenshot.y = __getApplicationY(newApplication);
333− oldApplicationScreenshot.y = __getApplicationY(oldApplication);
334− stage.focusedApplicationWhenUsingScreenshots = newApplication;
335− stage.switchingFromFullscreenToFullscreen = newApplication && newApplication.fullscreen;
338− PropertyAction {target: newApplicationScreenshot; property: "visible"; value: false}
339− PropertyAction {target: oldApplicationScreenshot; property: "visible"; value: false}
340− PropertyAction {target: newApplicationScreenshot; property: "z"; value: 1}
341− PropertyAction {target: oldApplicationScreenshot; property: "z"; value: 0}
342− PropertyAction {target: newApplicationScreenshot; property: "scale"; value: 1.0}
343− PropertyAction {target: oldApplicationScreenshot; property: "scale"; value: 1.0}
344− PropertyAction {target: newApplicationScreenshot; property: "opacity"; value: 1.0}
345− PropertyAction {target: oldApplicationScreenshot; property: "opacity"; value: 1.0}
346− PropertyAction {target: newApplicationScreenshot; property: "x"; value: stage.width}
347− PropertyAction {target: oldApplicationScreenshot; property: "x"; value: 0.0}
348− PropertyAction {target: newApplicationScreenshot; property: "visible"; value: true}
349− PropertyAction {target: oldApplicationScreenshot; property: "visible"; value: true}
353− target: oldApplicationScreenshot
356− easing.type: Easing.OutQuad
360− target: oldApplicationScreenshot
363− easing.type: Easing.OutQuad
368− target: newApplicationScreenshot
371− easing.type: Easing.OutQuad
378− // move previously focused application to the end of the list of running applications
379− var oldApplication = oldApplicationScreenshot.application;
380− if (oldApplication != null) {
381− var oldApplicationIndex = stage.__getApplicationIndex(oldApplicationScreenshot.application);
382− applicationManager.moveRunningApplicationStackPosition(
383− oldApplicationIndex, stage.applications.count - 1, stage.type);
386− stage.__focusApplication(stage.focusedApplicationWhenUsingScreenshots);
392− function __dragValueToProgress(dragValue, startValue, applicationsCount) {
393− if (applicationsCount == 0) {
395− } else if (applicationsCount == 1) {
396− // prevent the current app from moving more than 1/4 of the screen
397− var elasticValue = __elastic(dragValue, startValue/4);
398− return elasticValue / startValue;
400− return dragValue / startValue;
404− function __elastic(x, limit) {
405− return limit * ( 1 - Math.pow( ( limit - 1 ) / limit, x ) )
408− property real __startValue: stage.width
410− AnimationControllerWithSignals {
411− id: switchToApplicationAnimationController
413− onAnimationCompletedAtBeginning: {
415− stage.__focusApplication(oldApplicationScreenshot.application);
421− trackedPosition: rightEdgeDraggingArea.touchX
422− direction: rightEdgeDraggingArea.direction
423− maxDragDistance: stage.width
427− id: rightEdgeDraggingArea
430− if (status == DirectionalDragArea.WaitingForTouch) {
431− return switchToApplicationAnimationController.completed
432− && stage.applications.count > 0 && stage.rightEdgeEnabled
433− && !delayedHideScreenshots.running
439− anchors.top: parent.top
440− anchors.bottom: parent.bottom
441− anchors.right: parent.right
443− direction: Direction.Leftwards
445− onDistanceChanged: {
446− if (status !== DirectionalDragArea.Recognized)
449− var targetProgress = __dragValueToProgress(-distance, __startValue,
450− stage.applications.count)
451− var delta = targetProgress - switchToApplicationAnimationController.progress
453− // When the gesture finally gets recognized, the finger will likely be
454− // reasonably far from the edge. If we made the progress immediately
455− // follow the finger position it would be visually unpleasant as there
456− // would be a jump to meet the finger's current position.
458− // The trick is not to go all the way (1.0) as it would cause the
459− // aforementioned jump.
460− switchToApplicationAnimationController.progress += 0.4 * delta
463− property bool gotRejected: false
466− if (status == DirectionalDragArea.Undecided) {
469− } else if (status == DirectionalDragArea.Rejected) {
470− switchToApplicationAnimationController.completeToBeginningWithSignal();
472− } else if (status == DirectionalDragArea.WaitingForTouch) {
478− function onUndecided() {
479− dragEvaluator.reset();
481− var nextApplication = null;
482− if (stage.applications.count > 1) {
483− nextApplication = stage.applications.get(1);
485− switchToApplicationAnimationController.progress = 0
486− switchToApplicationAnimation.prepare(nextApplication);
487− switchToApplicationAnimationController.animation = switchToApplicationAnimation;
491− function onGestureEnded() {
492− if (stage.applications.count > 1 && dragEvaluator.shouldAutoComplete()) {
493− switchToApplicationAnimationController.completeToEndWithSignal();
495− switchToApplicationAnimationController.completeToBeginningWithSignal();
501− // FIXME: very bad hack to detect when an application was closed or crashed
502− property var __previouslyFocusedApplication
505− onFocusedApplicationChanged: {
506− if (stage.focusedApplication == null
507− && __getApplicationIndex(stage.__previouslyFocusedApplication) == -1) {
508− stage.__onFocusedApplicationClosed();
510− stage.__previouslyFocusedApplication = stage.focusedApplication;
514− function __onFocusedApplicationClosed() {
519− if (stage.applications.count > 0) {
520− // Do not change the focused application from within onFocusedApplicationChanged.
521− // This causes binding loop warnings besides being a bad practice in general
522− // (setting a property from within its "changed" signal handling)
524− focusTopmostAppTimer.start();
531− id: focusTopmostAppTimer
532− interval: 1; repeat: false
534− if (stage.applications.count > 0) {
535− stage.__focusApplication(stage.applications.get(0));
Components/Tile.qmldeleted−93
@@ -1,93 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
22− property alias source: image.source
23− property alias fillMode: image.fillMode
24− property alias horizontalAlignment: image.horizontalAlignment
25− property alias verticalAlignment: image.verticalAlignment
26− property alias text: label.text
27− property int imageWidth
28− property int imageHeight
34− horizontalCenter: parent.horizontalCenter
42− sourceSize { width: icon.width; height: icon.height }
50− objectName: "borderPressed"
54− borderSource: "radius_pressed.sci"
55− opacity: root.pressed ? 1.0 : 0.0
56− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
71− baseline: parent.bottom
74− leftMargin: units.gu(1)
75− rightMargin: units.gu(1)
83− elide: Text.ElideMiddle
84− horizontalAlignment: Text.AlignHCenter
88− GridView.onRemove: SequentialAnimation {
89− PropertyAction { target: root; property: "GridView.delayRemove"; value: true }
90− NumberAnimation { target: root; property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.InOutQuad }
91− PropertyAction { target: root; property: "GridView.delayRemove"; value: false }
Components/Time.jsdeleted−49
@@ -1,49 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
20− "second": [ 1000, "a second ago", "in a second", "%1 seconds ago", "in %1 seconds" ],
21− "minute": [ 60, "a minute ago", "in a minute", "%1 minutes ago", "in %1 minutes" ],
22− "hour": [ 60, "an hour ago", "in an hour", "%1 hours ago", "in %1 hours" ],
23− "day": [ 24, "yesterday", "tomorrow", "%1 days ago", "in %1 days" ],
24− "week": [ 7, "a week ago", "in a week", "about %1 weeks ago", "in about %1 weeks" ],
25− "month": [ 4.35, "a month ago", "in a month", "%1 months ago", "in %1 months" ], // == 365.25 days / 12 months / 7 days
26− "year": [ 12, "a year ago", "in a year", "%1 years ago", "in %1 years" ]
29−function readableFromNow(date, now) {
30− var then = new Date(date);
31− if (isNaN(then)) return "";
32− if (now === undefined) {
34− } else if (isNaN(now)) throw "now is NaN";
35− var diff = Math.abs(now - then);
36− if (diff < 1000) return "just now";
38− var future = now < then;
40− for (var k in factors) {
41− diff /= factors[k][0];
42− if (Math.floor(diff) == 1) {
43− humanDiff = factors[k][future ? 2 : 1];
44− } else if (Math.floor(diff) > 1) {
45− humanDiff = factors[k][future ? 4 : 3].arg(Math.round(diff));
Components/UbuntuShapeForItem.qmldeleted−45
@@ -1,45 +0,0 @@
2− * Copyright (C) 2012 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−/* FIXME: This component is duplicating the UbuntuShape from the SDK, but shapes more
21− * general (Item-based) components. This ability should be incorporated into the SDK's
22− * UbuntuShape so this file can be removed.
23− * Bug: https://bugs.launchpad.net/tavastia/+bug/1089595
29− property alias radius: shape.radius
30− property alias image: source.sourceItem
Components/VolumeControl.qmldeleted−58
@@ -1,58 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
22− objectName: "volumeControl"
29− busName: "com.canonical.settings.sound"
30− objectPath: "/com/canonical/settings/sound"
32− property variant actionObject: action("volume")
33− property variant serverVolume: actionObject.valid ? actionObject.state: 0
39− value: actionGroup.serverVolume * 100
43− if (actionGroup.serverVolume != volume) {
44− var targetVolume = Math.min(1, Math.max(0, volume / 100));
45− actionGroup.actionObject.updateState(targetVolume);
49− function volumeUp() {
50− actionGroup.actionObject.updateState(Math.min(1, volume/100 + 0.10));
53− function volumeDown() {
54− actionGroup.actionObject.updateState(Math.max(0, volume/100 - 0.10));
57− Component.onCompleted: actionGroup.start()
Components/graphics/PageHeaderBaseDivider@18.pngdeleted
Binary file not shown.
Components/graphics/PageHeaderBaseDivider@18.scideleted−5
@@ -1,5 +0,0 @@
5−source: PageHeaderBaseDivider@18.png
Components/graphics/icon_star_off@20.pngdeleted
Binary file not shown.
Components/graphics/icon_star_on@20.pngdeleted
Binary file not shown.
Components/graphics/non-selected@18.pngdeleted
Binary file not shown.
Dash/Apps/ApplicationsFilterGrid.qmldeleted−57
@@ -1,57 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "../../Components"
19−import "../../Applications"
20−import "../../Components/IconUtil.js" as IconUtil
27− minimumHorizontalSpacing: units.gu(0.5)
28− maximumNumberOfColumns: 6
29− delegateWidth: units.gu(11)
30− delegateHeight: units.gu(9.5)
31− verticalSpacing: units.gu(2)
33− signal clicked(int index, variant data)
36− objectName: "delegate" + index
39− desktopFile: model.dndUri ? stripProtocol(model.dndUri) : model.desktopFile // FIXME: this is temporary
41− function stripProtocol(uri) {
42− var chunks = uri.split('file://')
43− return chunks[chunks.length-1]
47− property string icon: model.icon ? model.icon : "../../graphics/applicationIcons/" + application.icon + ".png" // FIXME: this is temporary
49− width: filterGrid.cellWidth
50− height: filterGrid.cellHeight
51− text: model.title ? model.title : application.name // FIXME: this is temporary
52− imageWidth: units.gu(8)
53− imageHeight: units.gu(7.5)
54− source: IconUtil.from_gicon(icon)
55− onClicked: filterGrid.clicked(index, application.desktopFile);
Dash/Apps/AppsAvailableForDownloadModel.qmldeleted−26
@@ -1,26 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
20− ListElement { desktopFile: "/usr/share/applications/evernote.desktop"; }
21− ListElement { desktopFile: "/usr/share/applications/map.desktop"; }
22− ListElement { desktopFile: "/usr/share/applications/pinterest.desktop"; }
23− ListElement { desktopFile: "/usr/share/applications/soundcloud.desktop"; }
24− ListElement { desktopFile: "/usr/share/applications/wikipedia.desktop"; }
25− ListElement { desktopFile: "/usr/share/applications/youtube.desktop"; }
Dash/Apps/CloseIcon.qmldeleted−62
@@ -1,62 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
24− anchors.centerIn: parent
25− source: "graphics/close_btn.png"
27− state: (root.enabled) ? "shown" : "hidden"
52− properties: "width, height"; duration: 300
53− easing { type: Easing.OutBack; overshoot: 5 }
58− NumberAnimation { properties: "width, height"; duration: 250; }
Dash/Apps/FrequentlyUsedAppsModel.qmldeleted−26
@@ -1,26 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
20− ListElement { desktopFile: "/usr/share/applications/camera-app.desktop"; }
21− ListElement { desktopFile: "/usr/share/applications/phone-app.desktop"; }
22− ListElement { desktopFile: "/usr/share/applications/gallery-app.desktop"; }
23− ListElement { desktopFile: "/usr/share/applications/facebook-webapp.desktop"; }
24− ListElement { desktopFile: "/usr/share/applications/webbrowser-app.desktop"; }
25− ListElement { desktopFile: "/usr/share/applications/gmail-webapp.desktop"; }
Dash/Apps/RunningApplicationTile.qmldeleted−138
@@ -1,138 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Ubuntu.Application 0.1
20−import "../../Components/"
21−import "../../Components/ListItems"
25− property var application
26− property bool __sideStageEnabled: shell.applicationManager.sideStageEnabled
28− signal requestedApplicationActivation(var application)
29− signal requestedApplicationTermination(var application)
30− signal requestedActivationMode()
31− signal requestedTerminationMode()
33− // Was: childrenRect.height
34− // To avoid "binding loop" warning
35− height: shapedApplicationImage.height + labelContainer.height
37− width: shapedApplicationImage.width
39− property bool terminationModeEnabled: false
42− if (terminationModeEnabled)
43− requestedApplicationTermination(application)
45− requestedApplicationActivation(application)
49− if (terminationModeEnabled) {
50− requestedActivationMode()
52− requestedTerminationMode()
56− function updateScreenshotFromCache() {
57− applicationImage.updateFromCache();
60− // FIXME: should use UbuntuShape from SDK
62− id: shapedApplicationImage
65− horizontalCenter: parent.horizontalCenter
68− // FIXME: width and height should be defined according to the
69− // application window's aspect ratio.
70− width: (application.stage === ApplicationInfo.MainStage && __sideStageEnabled) ?
71− units.gu(22) : units.gu(11)
72− height: (__sideStageEnabled) ? units.gu(22) : units.gu(19)
74− image: applicationImage
80− width: shapedApplicationImage.width
81− height: shapedApplicationImage.height
82− fillMode: ApplicationImage.PreserveAspectCrop
88− anchors.fill: shapedApplicationImage
90− borderSource: "radius_pressed.sci"
91− opacity: root.pressed ? 1.0 : 0.0
92− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
95− // FIXME: label code duplicated with Tile
101− top: shapedApplicationImage.bottom
108− baseline: parent.bottom
111− leftMargin: units.gu(1)
112− rightMargin: units.gu(1)
114− text: (application) ? application.name : ""
121− elide: Text.ElideMiddle
122− horizontalAlignment: Text.AlignHCenter
128− right: shapedApplicationImage.right
129− rightMargin: -units.gu(1)
131− topMargin: -units.gu(1)
136− enabled: root.terminationModeEnabled
Dash/Apps/RunningApplicationsGrid.qmldeleted−84
@@ -1,84 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "../../Components"
24− signal updateScreenshots
28− onDashShownChanged: if (shell.dashShown && shell.stageScreenshotsReady) updateScreenshots();
29− onStageScreenshotsReadyChanged: if (shell.dashShown && shell.stageScreenshotsReady) updateScreenshots();
32− Behavior on height { NumberAnimation { duration: 200; easing.type: Easing.InOutQuad } }
34− property bool canEnableTerminationMode: true
36− onCanEnableTerminationModeChanged: {
37− if (!canEnableTerminationMode)
38− terminationModeEnabled = false
41− // when false, it means it's on activation mode
42− property bool terminationModeEnabled: false
44− maximumNumberOfColumns: 10
45− minimumHorizontalSpacing: units.gu(2)
46− referenceDelegateWidth: units.gu(11)
47− verticalSpacing: units.gu(2)
50− width: runningAppTile.width + root.horizontalSpacing
51− height: runningAppTile.height + root.verticalSpacing
53− RunningApplicationTile {
55− objectName: "runningAppTile " + model.application.name
58− horizontalCenter: parent.horizontalCenter
60− application: model.application
61− onRequestedActivationMode: { root.terminationModeEnabled = false }
62− onRequestedTerminationMode: {
63− if (canEnableTerminationMode)
64− root.terminationModeEnabled = true
66− onRequestedApplicationTermination: {
67− shell.applicationManager.stopProcess(application)
69− onRequestedApplicationActivation: {
70− shell.activateApplication(application.desktopFile)
73− terminationModeEnabled: root.terminationModeEnabled
75− Component.onCompleted: {
76− root.updateScreenshots.connect(updateScreenshotFromCache);
82− NumberAnimation { properties: "x,y"; duration: 400; easing.type: Easing.OutCubic }
Dash/Apps/graphics/close_btn@9.pngdeleted
Binary file not shown.
@@ -1,93 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
21−import "../Components"
26− property alias contentProgress: dashContent.contentProgress
27− property string showScopeOnLoaded: "home.scope"
28− property real contentScale: 1.0
33− function setCurrentScope(scopeId, animate, reset) {
34− var scopeIndex = filteredScopes.findFirst(Scopes.RoleId, scopeId)
36− if (scopeIndex == -1) {
37− console.warn("No match for scope with id: %1".arg(scopeId))
41− if (scopeIndex == dashContent.currentIndex && !reset) {
42− // the scope is already the current one
46− dashContent.setCurrentScopeAtIndex(scopeIndex, animate, reset)
49− SortFilterProxyModel {
54− dynamicSortFilter: true
56− filterRole: Scopes.RoleVisible
57− filterRegExp: RegExp("^true$")
62− objectName: "dashContent"
64− model: filteredScopes
66− onMovementStarted: dashbar.startNavigation()
67− onMovementEnded: dashbar.stopNavigation()
68− onContentFlickStarted: dashbar.finishNavigation()
69− onContentEndReached: dashbar.finishNavigation()
70− onPreviewShown: dashbar.finishNavigation()
72− if (scopeId == dash.showScopeOnLoaded) {
73− dash.setCurrentScope(scopeId, false, false)
74− dash.showScopeOnLoaded = ""
77− scale: dash.contentScale
83− objectName: "dashbar"
84− anchors.bottom: parent.bottom
85− anchors.left: parent.left
86− anchors.right: parent.right
87− model: filteredScopes
88− currentIndex: dashContent.currentIndex
89− onItemSelected: dashContent.setCurrentScopeAtIndex(index, true, false)
90− opacity: dash.contentScale == 1.0 ? 1.0 : 0.0
91− Behavior on opacity { NumberAnimation { easing.type: Easing.OutQuad; duration: 150 } }
Dash/DashApps.qmldeleted−173
@@ -1,173 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−import "../Components"
21−import "../Components/ListItems"
27− // FIXME: a way to aggregate these models would be ideal
28− property var mainStageApplicationsModel: shell.applicationManager.mainStageApplications
29− property var sideStageApplicationModel: shell.applicationManager.sideStageApplications
31− onMovementStarted: categoryView.showHeader()
32− onPositionedAtBeginning: {
34− categoryView.positionAtBeginning()
38− onIsCurrentChanged: {
39− pageHeader.resetSearch();
43− target: scopeView.scope
44− property: "searchQuery"
45− value: pageHeader.searchQuery
50− onSearchClicked: if (isCurrent) {
51− pageHeader.triggerSearch()
52− categoryView.showHeader()
57− id: categoryListModel
58− // specifies app categories, type of delegate and model used in each category
59− ListElement { category: "Running apps"; component: "Apps/RunningApplicationsGrid.qml"; modelName: "RunningApplicationsModel" }
60− ListElement { category: "Frequently used"; component: "Apps/ApplicationsFilterGrid.qml"; modelName: "FrequentlyUsedAppsModel" }
61− ListElement { category: "Installed"; component: "Apps/ApplicationsFilterGrid.qml"; modelName: "InstalledApplicationsModel" }
62− ListElement { category: "Available for download"; component: "Apps/ApplicationsFilterGrid.qml"; modelName: "AppsAvailableForDownloadModel" }
63− function getCategory(category1) {
64− if (category1 === "Running apps") {
65− return i18n.tr("Running apps");
67− if (category1 === "Frequently used") {
68− return i18n.tr("Frequently used");
70− if (category1 === "Installed") {
71− return i18n.tr("Installed");
73− if (category1 === "Available for download") {
74− return i18n.tr("Available for download");
80− FrequentlyUsedAppsModel { id: frequentlyUsedAppsModel }
81− AppsAvailableForDownloadModel { id: appsAvailableForDownloadModel }
83− // FIXME this should not be needed, the backend should handle all that itself
84− property var installedModel: null
87− model: scopeView.scope.categories
90− Component.onCompleted: if (index == 3) scopeView.installedModel = Qt.binding(function() { return model.results; });
94− property var categoryModels: {
95− "FrequentlyUsedAppsModel": frequentlyUsedAppsModel,
96− "InstalledApplicationsModel": installedModel,
97− "AppsAvailableForDownloadModel": appsAvailableForDownloadModel,
102− anchors.fill: parent
103− model: SortFilterProxyModel {
104− model: categoryListModel
105− filterRole: 0 // 0 == modelName
106− // FIXME: need to use invertMatch here, otherwise the filter won't update correctly
107− // if filterRegExp is set before invertMatch. Bug in SortFilterProxyModel?
108− filterRegExp: invertMatch ? ((mainStageApplicationsModel.count === 0
109− && sideStageApplicationModel.count === 0) ? RegExp("RunningApplicationsModel") : RegExp("")) :
110− RegExp("InstalledApplicationsModel")
111− invertMatch: pageHeader.searchQuery.length == 0
114− onAtYEndChanged: if (atYEnd) endReached()
115− onMovingChanged: if (moving && atYEnd) endReached()
119− highlightWhenPressed: false
129− if (modelName == "RunningApplicationsModel") {
130− item.firstModel = mainStageApplicationsModel
131− item.secondModel = sideStageApplicationModel
132− item.canEnableTerminationMode =
133− Qt.binding(function() { return isCurrent; })
135− function activateApplication(index, data) {
136− shell.activateApplication(data);
139− item.model = Qt.binding(function() { return categoryModels[modelName]; });
140− item.clicked.connect(activateApplication);
146− ListView.onRemove: SequentialAnimation {
148− target: container; property: "ListView.delayRemove"; value: true
151− target: container; property: "height"; to: 0;
152− duration: 250; easing.type: Easing.InOutQuad
155− target: container; property: "ListView.delayRemove"; value: false
160− sectionProperty: "category"
161− sectionDelegate: Header {
162− width: categoryView.width
163− text: categoryListModel.getCategory(section)
165− pageHeader: PageHeader {
167− width: categoryView.width
168− text: i18n.tr("Apps")
169− searchEntryEnabled: true
170− searchHistory: scopeView.searchHistory
Dash/DashBar.qmldeleted−129
@@ -1,129 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
25− property alias currentIndex: row.currentIndex
27− property int lineHeight: units.dp(2)
28− property int itemSize: units.gu(7)
29− property int iconSize: units.gu(3.5)
31− signal itemSelected(int index)
36− function startNavigation() {
41− function stopNavigation() {
45− function finishNavigation() {
54− onTriggered: finishNavigation()
62− locked: true // TODO: remove this when lp bug #1179569 will be fixed
72− orientation: ListView.Horizontal
73− width: Math.min(Math.max(dashBar.width/2, units.gu(40)), count * itemSize)
74− height: parent.height
75− anchors.horizontalCenter: parent.horizontalCenter
76− onMovingChanged: if (moving) { timeout.stop() } else { timeout.restart() }
77− interactive: visibleArea.widthRatio < 1 && panel.opened
78− highlightFollowsCurrentItem: false
80− onCurrentItemChanged: {
81− highlightLine.width = currentItem.width
82− highlightLine.x = x + currentItem.x
90− height: dashBar.height
91− anchors.top: parent.top
94− dashBar.itemSelected(index)
99− anchors.centerIn: parent
100− source: scope.iconHint
101− sourceSize { width: iconSize; height: iconSize }
102− // opacity: index == currentIndex ? 1 : 1 // same opacity for now
113− bottom: parent.bottom
115− height: dashBar.lineHeight
121− height: parent.height
122− anchors.bottom: parent.bottom
125− Behavior on x {NumberAnimation { duration: 150; easing.type: Easing.OutCubic}}
126− Behavior on width {NumberAnimation { duration: 150; easing.type: Easing.OutCubic}}
Dash/DashContent.qmldeleted−145
@@ -1,145 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
26− property var model: null
27− property var scopes: null
28− property real contentProgress: Math.max(0, Math.min(dashContentList.contentX / (dashContentList.contentWidth - dashContentList.width), units.dp(1)))
29− property alias currentIndex: dashContentList.currentIndex
31− property ScopeDelegateMapper scopeMapper : ScopeDelegateMapper {}
33− signal movementStarted()
34− signal movementEnded()
35− signal contentFlickStarted()
36− signal contentEndReached()
37− signal previewShown()
38− signal scopeLoaded(string scopeId)
39− signal positionedAtBeginning()
41− // If we set the current scope index before the scopes have been added,
42− // then we need to wait until the loaded signals gets emitted from the scopes
43− property var set_current_index: undefined
47− if (scopes.loaded && set_current_index != undefined) {
48− setCurrentScopeAtIndex(set_current_index[0], set_current_index[1], set_current_index[2]);
49− set_current_index = undefined;
54− function setCurrentScopeAtIndex(index, animate, reset) {
55− var storedMoveDuration = dashContentList.highlightMoveDuration
56− var storedMoveSpeed = dashContentList.highlightMoveVelocity
58− dashContentList.highlightMoveVelocity = units.gu(4167)
59− dashContentList.highlightMoveDuration = 0
62− // if the scopes haven't loaded yet, then wait until they are.
63− if (!scopes.loaded) {
64− set_current_index = [ index, animate, reset ]
67− set_current_index = undefined;
69− if (dashContentList.count > index)
71− dashContentList.currentIndex = index
74− dashContent.positionedAtBeginning()
79− dashContentList.highlightMoveDuration = storedMoveDuration
80− dashContentList.highlightMoveVelocity = storedMoveSpeed
86− objectName: "dashContentList"
88− interactive: dashContent.scopes.loaded
91− model: dashContent.model
92− orientation: ListView.Horizontal
93− boundsBehavior: Flickable.DragAndOvershootBounds
94− flickDeceleration: units.gu(625)
95− maximumFlickVelocity: width * 5
96− snapMode: ListView.SnapOneItem
97− highlightMoveDuration: 250
98− highlightRangeMode: ListView.StrictlyEnforceRange
99− /* FIXME: workaround rendering issue due to use of ShaderEffectSource in
100− UbuntuShape. While switching from the home scope to the People scope the
101− rendering would block midway.
103− cacheBuffer: 2147483647
104− onMovementStarted: dashContent.movementStarted()
105− onMovementEnded: dashContent.movementEnded()
107− // If the number of items is less than the current index, then need to reset to another item.
109− if (currentIndex >= count)
110− dashContent.setCurrentScopeAtIndex(count-1, true, true)
115− width: ListView.view.width
116− height: ListView.view.height
118− source: scopeMapper.map(scope.id)
121− item.scope = Qt.binding(function() { return scope })
122− item.isCurrent = Qt.binding(function() { return ListView.isCurrentItem })
123− item.searchHistory = Qt.binding(function() { return shell.searchHistory })
124− dashContentList.movementStarted.connect(item.movementStarted)
125− dashContent.positionedAtBeginning.connect(item.positionedAtBeginning)
126− dashContent.scopeLoaded(item.scope.id)
130− ignoreUnknownSignals: true
131− onEndReached: contentEndReached()
132− onPreviewShownChanged: {
133− if (item.previewShown) {
135− dashContentList.interactive = false
137− dashContentList.interactive = true
142− Component.onDestruction: active = false
Dash/DashHome.qmldeleted−153
@@ -1,153 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−import "../Components"
21−import "../Components/ListItems"
22−import "../Applications"
30− onMovementStarted: listView.showHeader()
33− id: categoryListModel
34− // specifies page's content categories, type of delegate and model used in each category
35− ListElement { category: "Frequent Apps"; component: "Apps/ApplicationsFilterGrid.qml"; modelName: "AppsModel" }
36− ListElement { category: "Recent Music"; component: "Music/MusicFilterGrid.qml"; modelName: "MusicModel" }
37− ListElement { category: "Videos Popular Online"; component: "Video/VideosFilterGrid.qml"; modelName: "VideosModel" }
38− function getCategory(category1) {
39− if (category1 === "Frequent Apps") {
40− return i18n.tr("Frequent Apps");
42− if (category1 === "Recent Music") {
43− return i18n.tr("Recent Music");
45− if (category1 === "Videos Popular Online") {
46− return i18n.tr("Videos Popular Online");
52− FrequentlyUsedAppsModel { id: appsModel }
54− // FIXME this should be handled by the backends by populating the global search model
55− property var musicModel: null
56− property var videosModel: null
62− Component.onCompleted: if (index == 1) musicModel = Qt.binding(function() { return model.results; });
70− Component.onCompleted: if (index == 3) videosModel = Qt.binding(function() { return model.results; });
74− Component.onCompleted: {
75− var scope = dashContent.scopes.get("mockmusicmaster.scope")
77− musicRepeater.model = dashContent.scopes.get("mockmusicmaster.scope").categories
79− scope = dashContent.scopes.get("mockvideosmaster.scope")
81− videosRepeater.model = dashContent.scopes.get("mockvideosmaster.scope").categories
87− onScopeLoaded: switch (scopeId) {
88− case "mockmusicmaster.scope":
89− musicRepeater.model = dashContent.scopes.get("mockmusicmaster.scope").categories
91− case "mockvideosmaster.scope":
92− videosRepeater.model = dashContent.scopes.get("mockvideosmaster.scope").categories
97− property var categoryModels: {"AppsModel": appsModel,
98− "MusicModel": musicModel,
99− "VideosModel": videosModel,
104− anchors.fill: parent
105− model: categoryListModel
107− onAtYEndChanged: if (atYEnd) endReached()
108− onMovingChanged: if (moving && atYEnd) endReached()
112− highlightWhenPressed: false
113− width: listView.width
116− anchors { top: parent.top; left: parent.left; right: parent.right }
119− item.model = Qt.binding(function() { return categoryModels[modelName]; });
121− //FIXME: workaround for lack of previews for videos in Home scope.
122− //Need to connect to the clicked() signal here and act upon it here instead.
123− if (modelName === "VideosModel") {
124− function playVideo(index, data) {
126− shell.activateApplication('/usr/share/applications/mediaplayer-app.desktop', "/usr/share/demo-assets/videos/" + data.fileUri);
130− item.clicked.connect(playVideo);
131− } else if (modelName === "AppsModel") {
132− function activateApplication(index, data) {
133− shell.activateApplication(data);
136− item.objectName = "dashHomeApplicationsGrid";
137− item.clicked.connect(activateApplication);
143− sectionProperty: "category"
144− sectionDelegate: Header {
145− width: listView.width
146− text: listView.model.getCategory(section)
148− pageHeader: PageHeader {
149− width: listView.width
150− text: i18n.tr("Home")
Dash/DashMusic.qmldeleted−96
@@ -1,96 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import "../Components/ListItems" as ListItems
26− property var categoryNames: [
29− i18n.tr("New Releases"),
30− i18n.tr("Top Charting")
33− onIsCurrentChanged: {
34− pageHeader.resetSearch();
37− onMovementStarted: categoryView.showHeader()
40− target: scopeView.scope
41− property: "searchQuery"
42− value: pageHeader.searchQuery
47− onSearchClicked: if (isCurrent) {
48− pageHeader.triggerSearch()
49− categoryView.showHeader()
53− function getRenderer(categoryId) {
54− switch (categoryId) {
55− case 1: return "Music/MusicCarousel.qml"
56− default: return "Music/MusicFilterGrid.qml"
63− model: scopeView.categories
65− onAtYEndChanged: if (atYEnd) endReached()
66− onMovingChanged: if (moving && atYEnd) endReached()
68− delegate: ListItems.Base {
70− highlightWhenPressed: false
72− property int categoryId: id
75− anchors { top: parent.top; left: parent.left; right: parent.right }
76− source: scopeView.getRenderer(base.categoryId)
83− sectionProperty: "name"
84− sectionDelegate: ListItems.Header {
85− width: categoryView.width
86− text: i18n.tr(section)
88− pageHeader: PageHeader {
90− width: categoryView.width
91− text: i18n.tr("Music")
92− searchEntryEnabled: true
93− searchHistory: scopeView.searchHistory
Dash/DashPreview.qmldeleted−218
@@ -1,218 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
22− property string title: ""
24− property real previewWidthRatio: 0.5
25− property bool playable: false
26− property bool forceSquare: false
27− property Component buttons
28− property Component caption
29− property Component description
31− readonly property bool narrowMode: width <= height
32− readonly property int contentSpacing: units.gu(3)
35− signal previewImageClicked()
37− color: Qt.rgba(0, 0, 0, .3)
41− target: shell.applicationManager
42− onMainStageFocusedApplicationChanged: {
45− onSideStageFocusedApplicationChanged: {
61− margins: root.contentSpacing
67− leftMargin: -root.contentSpacing
68− rightMargin: -root.contentSpacing
69− topMargin: -root.contentSpacing
72− onClicked: root.close();
79− rightMargin: closePreviewImage.width + spacing
82− property int spacing: units.gu(2)
86− objectName: "titleLabel"
92− elide: Text.ElideRight
94− font.weight: Font.Light
102− id: closePreviewImage
103− source: "graphics/tablet/icon_close_preview.png"
105− height: units.gu(1.5)
107− bottom: title.bottom
108− bottomMargin: units.dp(7)
110− leftMargin: title.paintedWidth + labelItem.spacing
121− top: headerRow.bottom
122− bottom: parent.bottom
123− margins: root.contentSpacing
126− spacing: units.gu(2)
130− anchors.top: parent.top
131− anchors.bottom: parent.bottom
132− width: root.narrowMode ? contentRow.width : contentRow.width * root.previewWidthRatio
133− contentHeight: leftColumn.height
138− objectName: "leftColumn"
143− height: childrenRect.height
144− spacing: root.contentSpacing
146− // TODO: replace this UbuntuShape with the Video component once that lands
150− anchors.left: parent.left
151− anchors.right: parent.right
152− height: root.forceSquare ? width : width * previewImage.sourceSize.height / previewImage.sourceSize.width
158− fillMode: Image.PreserveAspectCrop
162− objectName: "playButton"
163− anchors.centerIn: parent
164− visible: root.playable
165− readonly property bool bigButton: parent.width > units.gu(40)
166− width: bigButton ? units.gu(8) : units.gu(4.5)
168− source: "graphics/play_button%1%2.png".arg(previewImageMouseArea.pressed ? "_active" : "").arg(bigButton ? "_big" : "")
172− id: previewImageMouseArea
173− anchors.fill: parent
174− onClicked: root.previewImageClicked()
179− anchors.left: parent.left
180− anchors.right: parent.right
181− sourceComponent: root.buttons
185− anchors.left: parent.left
186− anchors.right: parent.right
187− sourceComponent: root.caption
194− anchors.top: parent.top
195− anchors.bottom: parent.bottom
196− width: narrowMode ? 0 : (contentRow.width - leftColumn.width - contentRow.spacing)
197− contentHeight: rightColumn.height
202− objectName: "rightColumn"
203− height: childrenRect.height
213− parent: root.narrowMode ? leftColumn : rightColumn
214− anchors.left: parent.left
215− anchors.right: parent.right
216− sourceComponent: root.description
Dash/DashVideos.qmldeleted−202
@@ -1,202 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import "../Components/ListItems" as ListItems
25− property alias previewShown: previewLoader.onScreen
27− property var categoryNames: [
30− i18n.tr("New Releases"),
31− i18n.tr("Popular Online")
34− onIsCurrentChanged: {
35− pageHeader.resetSearch();
38− onMovementStarted: categoryView.showHeader()
41− target: scopeView.scope
42− property: "searchQuery"
43− value: pageHeader.searchQuery
48− onSearchClicked: if (isCurrent) {
49− pageHeader.triggerSearch()
50− categoryView.showHeader()
54− function getRenderer(categoryId) {
55− switch (categoryId) {
56− case 1: return "Video/VideosCarousel.qml"
57− default: return "Video/VideosFilterGrid.qml"
65− bottomMargin: -bottomOverflow
67− sourceItem: categoryView
71− topGapPx: (1 - gap) * positionPx
72− topOpacity: Math.max(0, (1 - gap * 1.2))
73− bottomGapPx: positionPx + gap * (targetBottomGapPx - positionPx)
74− bottomOverflow: units.gu(6)
75− bottomOpacity: 1 - (gap * 0.8)
77− property int targetBottomGapPx: height - units.gu(8) - bottomOverflow
78− property real gap: previewLoader.open ? 1.0 : 0.0
83− easing.type: Easing.InOutQuad
85− if (!previewLoader.open && !running) {
86− previewLoader.onScreen = false;
96− model: scopeView.categories
97− forceNoClip: previewLoader.onScreen
99− onAtYEndChanged: if (atYEnd) endReached()
100− onMovingChanged: if (moving && atYEnd) endReached()
102− delegate: ListItems.Base {
104− highlightWhenPressed: false
105− property int categoryIndex: index
106− property int categoryId: id
110− anchors { top: parent.top; left: parent.left; right: parent.right }
111− source: scopeView.getRenderer(base.categoryId)
113− item.model = results
120− // VideosCarousel and VideosFilterGrid have different
121− // clicked signals, accomodate for that
122− if (categoryId == 1) {
123− var fileUri = delegateItem.model.uri.replace(/^[^:]+:/, "")
124− dataItem = {fileUri: fileUri, nfoUri: delegateItem.model.comment}
128− if (dataItem.nfoUri != "") {
129− previewLoader.videoData = dataItem;
130− previewLoader.open = true;
131− effect.positionPx = mapToItem(categoryView, 0, itemY).y;
138− sectionProperty: "name"
139− sectionDelegate: ListItems.Header {
140− width: categoryView.width
141− text: i18n.tr(section)
144− pageHeader: PageHeader {
146− width: categoryView.width
147− text: i18n.tr("Videos")
148− searchEntryEnabled: true
149− searchHistory: scopeView.searchHistory
155− height: effect.bottomGapPx - effect.topGapPx
158− topMargin: effect.topGapPx
162− sourceComponent: onScreen ? previewComponent : undefined
164− property bool open: false
165− property bool onScreen: false
166− property var videoData
176− item.item = videoData;
181− id: previewComponent
185− anchors.fill: parent
186− onClose: open = false;
190− // TODO: Move as InverseMouseArea to DashPreview
192− enabled: previewLoader.onScreen
195− topMargin: effect.bottomGapPx
198− previewLoader.open = false;
Dash/Generic/GenericPreview.qmldeleted−84
@@ -1,84 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../../Components"
20−import "../../Components/ListItems" as ListItems
21−import "../../Components/IconUtil.js" as IconUtil
26− property var previewData
28− title: previewData.title
29− url: IconUtil.from_gicon(previewData.image)
30− previewWidthRatio: 0.6
34− model: genericPreview.previewData.actions
36− property int numOfRows: (count + 1) / 2
37− property int spacing: units.gu(1)
38− height: Math.max(units.gu(4), units.gu(4)*numOfRows + spacing*(numOfRows - 1))
40− cellWidth: Math.max(units.gu(9), width / 2)
41− cellHeight: buttonHeight + spacing
42− property int buttonWidth: Math.max(0, width / 2 - spacing)
43− property int buttonHeight: units.gu(4)
46− width: Math.max(units.gu(4), buttons.buttonWidth)
47− height: buttons.buttonHeight
49− text: modelData.displayName
50− iconSource: modelData.iconHint
51− iconPosition: "right"
54− genericPreview.previewData.execute(modelData.id, { })
59− description: Column {
67− text: previewData.subtitle
70− wrapMode: Text.WordWrap
78− text: previewData.description
81− wrapMode: Text.WordWrap
Dash/GenericScopeView.qmldeleted−215
@@ -1,215 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import "../Components/ListItems" as ListItems
21−import "../Components/IconUtil.js" as IconUtil
25− property alias previewShown: previewLoader.onScreen
27− onIsCurrentChanged: {
28− pageHeader.resetSearch();
31− onMovementStarted: categoryView.showHeader()
34− target: scopeView.scope
35− property: "searchQuery"
36− value: pageHeader.searchQuery
41− onSearchClicked: if (isCurrent) {
42− pageHeader.triggerSearch()
43− categoryView.showHeader()
50− model: scopeView.categories
51− forceNoClip: previewLoader.onScreen
53− onAtYEndChanged: if (atYEnd) endReached()
54− onMovingChanged: if (moving && atYEnd) endReached()
56− delegate: ListItems.Base {
57− highlightWhenPressed: false
70− minimumHorizontalSpacing: units.gu(0.5)
71− delegateWidth: units.gu(11)
72− delegateHeight: units.gu(18)
73− verticalSpacing: units.gu(2)
76− width: filtergrid.cellWidth
77− height: filtergrid.cellHeight
79− imageWidth: units.gu(11)
80− imageHeight: units.gu(16)
82− source: IconUtil.from_gicon(icon)
89− mouse.accepted = true
90− effect.positionPx = mapToItem(categoryView, 0, 0).y
91− scopeView.scope.activate(uri, icon,
98− mouse.accepted = true
99− effect.positionPx = mapToItem(categoryView, 0, 0).y
100− scopeView.scope.preview(uri, icon,
111− sectionProperty: "name"
112− sectionDelegate: ListItems.Header {
113− width: categoryView.width
116− pageHeader: PageHeader {
118− objectName: "pageHeader"
119− width: categoryView.width
120− text: scopeView.scope.name
121− searchEntryEnabled: true
129− bottomMargin: -bottomOverflow
131− sourceItem: categoryView
135− topGapPx: (1 - gap) * positionPx
136− topOpacity: (1 - gap * 1.2)
137− bottomGapPx: positionPx + gap * (targetBottomGapPx - positionPx)
138− bottomOverflow: units.gu(20)
139− bottomOpacity: 1 - (gap * 0.8)
141− property int targetBottomGapPx: height - units.gu(8) - bottomOverflow
142− property real gap: previewLoader.open ? 1.0 : 0.0
147− easing.type: Easing.InOutQuad
149− if (!previewLoader.open && !running) {
150− previewLoader.onScreen = false
158− target: scopeView.scope
160− previewLoader.previewData = preview
161− previewLoader.open = true
165− PreviewDelegateMapper {
166− id: previewDelegateMapper
170− ignoreUnknownSignals: true
171− target: previewLoader.valid ? previewLoader.item : null
173− previewLoader.open = false
179− property var previewData
180− height: effect.bottomGapPx - effect.topGapPx
183− topMargin: effect.topGapPx
187− source: onScreen ? previewDelegateMapper.map(previewLoader.previewData.rendererName) : ""
189− property bool open: false
190− property bool onScreen: false
191− property bool valid: item !== null
200− item.previewData = previewLoader.previewData
204− // TODO: Move as InverseMouseArea to DashPreview
206− enabled: previewLoader.onScreen
209− topMargin: effect.bottomGapPx
212− previewLoader.open = false;
Dash/Music/AlbumTile.qmldeleted−116
@@ -1,116 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− property alias album: albumLabel.text
24− property alias artist: artistLabel.text
25− property alias iconWidth: icon.width
26− property alias iconHeight: icon.height
32− horizontalCenter: parent.horizontalCenter
37− sourceSize { width: icon.width; height: icon.height }
48− borderSource: "radius_pressed.sci"
49− opacity: root.pressed ? 1.0 : 0.0
50− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuint } }
65− baseline: parent.bottom
68− leftMargin: units.gu(1)
69− rightMargin: units.gu(1)
77− elide: Text.ElideMiddle
78− horizontalAlignment: Text.AlignHCenter
86− top: artistContainer.bottom
88− height: units.gu(1.5)
93− baseline: parent.bottom
96− leftMargin: units.gu(1)
97− rightMargin: units.gu(1)
105− font.weight: Font.Light
106− elide: Text.ElideMiddle
107− horizontalAlignment: Text.AlignHCenter
111− GridView.onRemove: SequentialAnimation {
112− PropertyAction { target: root; property: "GridView.delayRemove"; value: true }
113− NumberAnimation { target: root; property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.InOutQuad }
114− PropertyAction { target: root; property: "GridView.delayRemove"; value: false }
Dash/Music/MusicFilterGrid.qmldeleted−48
@@ -1,48 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "../../Components"
24− minimumHorizontalSpacing: units.gu(2)
25− maximumNumberOfColumns: 5
26− delegateWidth: units.gu(17)
27− delegateHeight: iconHeight + units.gu(3.5)
28− verticalSpacing: units.gu(2)
30− readonly property int iconWidth: (width / columns) * 0.8
31− readonly property int iconHeight: iconWidth
33− signal clicked(int index)
35− delegate: AlbumTile {
36− objectName: "delegate" + index
37− width: filterGrid.cellWidth
38− height: filterGrid.cellHeight
39− iconWidth: filterGrid.iconWidth
40− iconHeight: filterGrid.iconHeight
45− filterGrid.clicked(index);
Dash/ScopeDelegateMapper.qmldeleted−34
@@ -1,34 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
20− property var scopeDelegateMapping: {"mockmusicmaster.scope": "DashMusic.qml",
21− "applications.scope": "DashApps.qml",
22− "home.scope": "DashHome.qml",
23− "mockvideosmaster.scope": "DashVideos.qml"
25− property string genericScope: "GenericScopeView.qml"
27− function map(scopeId) {
28− var customScope = scopeDelegateMapping[scopeId]
29− if (customScope != undefined) {
Dash/ScopeView.qmldeleted−48
@@ -1,48 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
23− property SortFilterProxyModel categories: categoryFilter
24− property bool isCurrent
25− property ListModel searchHistory
28− signal movementStarted
29− signal positionedAtBeginning
31− // FIXME delay the search so that daemons have time to settle
32− onScopeChanged: timer.restart()
37− onTriggered: scope.searchQuery = ""
40− SortFilterProxyModel {
42− model: scope.categories
43− dynamicSortFilter: true
44− filterRole: Categories.RoleCount
Dash/Video/VideoInfo.qmldeleted−84
@@ -1,84 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import QtQuick.XmlListModel 2.0
22− property string source
24− property bool ready: nfo.status == XmlListModel.Ready || nfoTV.status == XmlListModel.Ready
25− property bool isMovie: true
26− property variant video: null
27− property variant tvShow: null
29− function getActors() {
31− if (video.actor1) c.push(video.actor1)
32− if (video.actor2) c.push(video.actor2)
33− if (video.actor3) c.push(video.actor3)
37− onSourceChanged: isMovie = true
42− query: (isMovie) ? "/movie" : "/episodedetails"
44− XmlRole { name: "title"; query: "title/string()" }
45− XmlRole { name: "year"; query: "year/number()" }
46− XmlRole { name: "runtime"; query: "runtime/number()" }
47− XmlRole { name: "rating"; query: "rating/number()" }
48− XmlRole { name: "plot"; query: "plot/string()" }
49− XmlRole { name: "director"; query: "director[1]/string()" }
50− XmlRole { name: "actor1"; query: "actor[1]/name/string()" }
51− XmlRole { name: "actor2"; query: "actor[2]/name/string()" }
52− XmlRole { name: "actor3"; query: "actor[3]/name/string()" }
53− XmlRole { name: "author"; query: "author[1]/string()" }
54− XmlRole { name: "season"; query: "season/number()" }
55− XmlRole { name: "episode"; query: "episode/number()" }
57− XmlRole { name: "rentPrice"; query: "rent_price/string()" }
58− XmlRole { name: "buyPrice"; query: "buy_price/string()" }
59− XmlRole { name: "expires"; query: "expires/string()" }
61− onStatusChanged: if (status == XmlListModel.Ready) {
62− if (count > 0) info.video = nfo.get(0)
63− else info.isMovie = false
64− } else if (status == XmlListModel.Error) info.isMovie = false
69− source: (nfo.isMovie) ? "" : info.source.substring(0, info.source.lastIndexOf("/") + 1) + "tvshow.nfo"
72− XmlRole { name: "title"; query: "title/string()" }
74− onStatusChanged: if (status == XmlListModel.Ready) {
75− if (count > 0) info.tvShow = nfoTV.get(0)
76− } else if (status == XmlListModel.Error) {
77− // Search for tvshow.nfo in the directory above this one to cater
78− // for directory layout Show/Season
79− var path = info.source.split("/")
80− path.splice(-2, 2, "tvshow.nfo")
81− source = path.join("/")
Dash/Video/VideoPreview.qmldeleted−178
@@ -1,178 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−import "../../Components"
26− property alias ready: nfo.ready
27− readonly property url fileUri: item ? item.fileUri : ""
31− source: item ? item.nfoUri : ""
34− title: nfo.ready ? nfo.video.title : ""
35− url: item ? item.nfoUri.replace(/\.nfo$/, "-fanart.jpg") : ""
36− previewWidthRatio: 0.6
37− playable: fileUri != ""
39− onPreviewImageClicked: {
41− shell.activateApplication('/usr/share/applications/mediaplayer-app.desktop', root.fileUri);
48− property int buttonWidth: Math.min(units.gu(22), (width - spacing) / 2)
50− width: parent.buttonWidth
52− text: nfo.ready && nfo.video.buyPrice != "" ? "Buy for " + nfo.video.buyPrice : ""
54− iconSource: "graphics/icon_button_amazon.png"
55− iconPosition: "right"
58− width: parent.buttonWidth
60− text: nfo.ready && nfo.video.buyPrice != "" ? "Rent for " + nfo.video.rentPrice : ""
62− iconSource: "graphics/icon_button_u1.png"
63− iconPosition: "right"
67− description: Column {
70− maximumRating: 10 // FIXME: this should happen on the backend side
71− rating: nfo.ready ? nfo.video.rating: 0
75− text: nfo.ready ? nfo.video.plot : ""
80− wrapMode: Text.WordWrap
89− property int firstColWidth: units.gu(9)
90− property int secondColWidth: width - firstColWidth - spacing
92− visible: directedLabel.visible
96− horizontalAlignment: Text.AlignRight
97− width: parent.firstColWidth
98− text: i18n.tr("Directed by:")
108− width: parent.secondColWidth
109− text: nfo.ready ? nfo.video.director : ""
112− wrapMode: Text.WordWrap
115− visible: starringLabel.visible
118− horizontalAlignment: Text.AlignRight
120− width: parent.firstColWidth
121− text: i18n.tr("Starring:")
131− width: parent.secondColWidth
132− text: nfo.ready ? nfo.getActors().join(", ") : ""
133− wrapMode: Text.WordWrap
138− visible: authorLabel.visible
141− horizontalAlignment: Text.AlignRight
143− width: parent.firstColWidth
144− text: i18n.tr("Author:")
154− width: parent.secondColWidth
155− text: nfo.ready ? nfo.video.author : ""
156− wrapMode: Text.WordWrap
169− if (nfo.video.year) parts.push(nfo.video.year)
170− if (nfo.video.runtime) parts.push("%1 minutes".arg(nfo.video.runtime))
172− return parts.join(", ");
Dash/Video/VideosFilterGrid.qmldeleted−51
@@ -1,51 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "../../Components"
24− minimumHorizontalSpacing: units.gu(0.5)
25− maximumNumberOfColumns: 5
26− delegateWidth: units.gu(11)
27− delegateHeight: iconHeight + units.gu(2.5)
28− verticalSpacing: units.gu(2)
30− readonly property int iconWidth: (width / columns) * 0.8
31− readonly property int iconHeight: iconWidth * 16 / 11
33− signal clicked(int index, var data, real itemY)
37− objectName: "delegate" + index
38− width: filtergrid.cellWidth
39− height: filtergrid.cellHeight
41− imageWidth: filtergrid.iconWidth
42− imageHeight: filtergrid.iconHeight
44− fillMode: Image.PreserveAspectCrop
46− var fileUri = model.uri.replace(/^[^:]+:/, "")
47− var data = {fileUri: fileUri, nfoUri: model.comment}
48− filtergrid.clicked(index, data, tile.y);
Dash/Video/graphics/icon_button_amazon@20.pngdeleted
Binary file not shown.
Dash/Video/graphics/icon_button_u1@20.pngdeleted
Binary file not shown.
Dash/graphics/icon_clear@20.pngdeleted
Binary file not shown.
Dash/graphics/icon_listview_clear@20.pngdeleted
Binary file not shown.
Dash/graphics/icon_search_active@20.pngdeleted
Binary file not shown.
Dash/graphics/icon_search_inactive@20.pngdeleted
Binary file not shown.
Dash/graphics/phone/home.pngdeleted
Binary file not shown.
Dash/graphics/phone/music.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/angrybirds@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/browser@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/camera@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/facebook@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/map@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/music@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/phone@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/settings@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/screenshots/twitter@12.pngdeleted
Binary file not shown.
Dash/graphics/phone/videos.pngdeleted
Binary file not shown.
Dash/graphics/play_button@18.pngdeleted
Binary file not shown.
Dash/graphics/play_button_active@18.pngdeleted
Binary file not shown.
Dash/graphics/play_button_active_big@20.pngdeleted
Binary file not shown.
Dash/graphics/play_button_big@20.pngdeleted
Binary file not shown.
Dash/graphics/tablet/apps.pngdeleted
Binary file not shown.
Dash/graphics/tablet/home.pngdeleted
Binary file not shown.
Dash/graphics/tablet/icon_close_preview@20.pngdeleted
Binary file not shown.
Dash/graphics/tablet/music.pngdeleted
Binary file not shown.
Dash/graphics/tablet/people.pngdeleted
Binary file not shown.
Dash/graphics/tablet/videos.pngdeleted
Binary file not shown.
Greeter/Clock.qmldeleted−66
@@ -1,66 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− implicitWidth: childrenRect.width
24− implicitHeight: childrenRect.height
27− property alias __timerInterval: timer.interval
28− readonly property bool __timerRunning: timer.running
33− running: clock.enabled && clock.visible && clock.opacity != 0
35− triggeredOnStart: true
36− onTriggered: __date = new Date
40− spacing: units.gu(0.5)
44− objectName: "timeLabel"
46− anchors.horizontalCenter: parent.horizontalCenter
47− font.pixelSize: units.gu(7.5)
50− text: Qt.formatTime(__date)
51− font.weight: Font.Light
56− objectName: "dateLabel"
58− anchors.horizontalCenter: parent.horizontalCenter
62− text: Qt.formatDate(__date, Qt.DefaultLocaleLongDate)
63− font.weight: Font.Light
Greeter/Greeter.qmldeleted−120
@@ -1,120 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Ubuntu.Gestures 0.1
20−import LightDM 0.1 as LightDM
21−import "../Components"
22−import "../Components/Math.js" as MathLocal
27− created: greeterContentLoader.status == Loader.Ready && greeterContentLoader.item.ready
29− // 1 when fully shown and 0 when fully hidden
30− property real showProgress: MathLocal.clamp((width + x) / width, 0, 1)
32− showAnimation: StandardAnimation { property: "x"; to: 0 }
33− hideAnimation: StandardAnimation { property: "x"; to: -width }
35− property alias dragHandleWidth: dragHandle.width
36− property alias model: greeterContentLoader.model
37− property bool locked: shown && multiUser && !greeterContentLoader.promptless
39− readonly property bool narrowMode: !multiUser && width <= units.gu(60)
40− readonly property bool multiUser: LightDM.Users.count > 1
42− readonly property bool leftTeaserPressed: greeterContentLoader.status == Loader.Ready &&
43− greeterContentLoader.item.leftTeaserPressed
44− readonly property bool rightTeaserPressed: greeterContentLoader.status == Loader.Ready &&
45− greeterContentLoader.item.rightTeaserPressed
47− signal selected(int uid)
48− signal unlocked(int uid)
50− onRightTeaserPressedChanged: {
51− if (rightTeaserPressed && !locked) {
52− teasingTimer.start();
57− id: greeterContentLoader
58− objectName: "greeterContentLoader"
60− property var model: LightDM.Users
61− property int currentIndex: 0
62− property bool promptless: item ? item.promptless : false
63− property var infographicModel: LightDM.Infographic
65− source: required ? "GreeterContent.qml" : ""
69− target: greeterContentLoader.item
71− onSelected: greeter.selected(uid);
72− onUnlocked: greeter.unlocked(uid);
84− when: teasingTimer.running
99− easing.type: Easing.OutCubic
107− anchors.top: parent.top
108− anchors.bottom: parent.bottom
109− anchors.right: parent.right
111− // no need for requiring a directional drag since we are covering the screen
112− // anyway (i.e., no change user could be trying to interact with some other
114− distanceThreshold: 0
116− enabled: !greeter.locked
118− direction: Direction.Leftwards
Greeter/GreeterContent.qmldeleted−136
@@ -1,136 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import LightDM 0.1 as LightDM
20−import "../Components"
26− property bool promptless: loginLoader.status == Loader.Ready && LightDM.Greeter.promptless
27− property bool ready: wallpaper.status == Image.Ready
28− property bool leftTeaserPressed: teasingMouseArea.pressed &&
29− teasingMouseArea.mouseX < teasingMouseArea.width / 2
30− property bool rightTeaserPressed: teasingMouseArea.pressed &&
31− teasingMouseArea.mouseX > teasingMouseArea.width / 2
33− signal selected(int uid)
34− signal unlocked(int uid)
39− source: shell.background
57− topMargin: units.gu(2)
58− horizontalCenter: parent.horizontalCenter
69− objectName: "loginLoader"
72− leftMargin: Math.min(parent.width * 0.16, units.gu(20))
73− verticalCenter: parent.verticalCenter
76− height: parent.height
78− // TODO: Once we have a system API for determining which mode we are
79− // in, tablet/phone/desktop, that should be used instead of narrowMode.
80− source: greeter.narrowMode ? "" : "LoginList.qml"
83− item.currentIndex = greeterContentLoader.currentIndex;
84− selected(item.currentIndex);
85− item.resetAuthentication();
89− target: loginLoader.item
91− value: greeterContentLoader.model
95− target: loginLoader.item
105− onCurrentIndexChanged: {
106− if (greeterContentLoader.currentIndex !== loginLoader.item.currentIndex) {
107− greeterContentLoader.currentIndex = loginLoader.item.currentIndex;
115− height: narrowMode ? parent.height : 0.75 * parent.height
116− model: greeterContentLoader.infographicModel
118− Component.onCompleted: infographics.updateUsername(greeterContentLoader.currentIndex)
122− onSelected: infographics.updateUsername(uid)
125− function updateUsername(uid) {
126− greeterContentLoader.infographicModel.username = greeterContentLoader.model.data(uid, LightDM.UserRoles.NameRole)
127− greeterContentLoader.infographicModel.readyForDataChangeSlot();
131− verticalCenter: parent.verticalCenter
132− left: narrowMode ? root.left : loginLoader.right
Greeter/Lockscreen.qmldeleted−155
@@ -1,155 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
20−import LightDM 0.1 as LightDM
25− // Determine if a numeric or alphanumeric pad is used.
26− property bool alphaNumeric: false
29− property string placeholderText: ""
31− // In case the Lockscreen can show a greeter message, this is the username
32− property string username: ""
34− // As the numeric PIN pad doesn't have a OK button by design, we need to auto-confirm on a certain length.
35− // This is ignored by the alphaNumeric lockscreen as that one is confirmed with pressing enter on the OSK.
36− property int pinLength: 4
38− property url background: ""
42− signal emergencyCall()
45− if (required && pinPadLoader.item) {
46− pinPadLoader.item.clear(false);
51− // This causes the loader below to destry and recreate the source
52− pinPadLoader.resetting = true;
53− pinPadLoader.resetting = false;
58− source: root.required ? root.background : ""
67− objectName: "pinPadLoader"
71− verticalCenter: parent.verticalCenter
72− verticalCenterOffset: root.alphaNumeric ? -units.gu(10) : 0
74− property bool resetting: false
76− source: (!resetting && root.required) ? (root.alphaNumeric ? "PassphraseLockscreen.qml" : "PinLockscreen.qml") : ""
79− target: pinPadLoader.item
82− LightDM.Greeter.respond(passphrase);
91− target: pinPadLoader.item
92− property: "pinLength"
93− value: root.pinLength
96− target: pinPadLoader.item
97− property: "placeholderText"
98− value: root.placeholderText
101− target: pinPadLoader.item
102− property: "username"
103− value: root.username
110− top: pinPadLoader.bottom
111− topMargin: units.gu(4)
113− bottom: parent.bottom
115− spacing: units.gu(1)
118− objectName: "emergencyCallIcon"
121− anchors.horizontalCenter: parent.horizontalCenter
122− name: "phone-app-call-symbolic"
127− anchors.fill: parent
128− onClicked: root.emergencyCall()
133− text: i18n.tr("Emergency call")
137− anchors.horizontalCenter: parent.horizontalCenter
142− target: LightDM.Greeter
144− onAuthenticationComplete: {
145− if (LightDM.Greeter.promptless) {
148− if (LightDM.Greeter.authenticated) {
151− pinPadLoader.item.clear(true);
Greeter/LoginList.qmldeleted−293
@@ -1,293 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import LightDM 0.1 as LightDM
20−import "../Components"
25− property alias userList: userList
26− property alias model: userList.model
27− property alias currentIndex: userList.currentIndex
29− readonly property int numAboveBelow: 4
30− readonly property int cellHeight: units.gu(5)
31− readonly property int highlightedHeight: units.gu(10)
32− readonly property int moveDuration: 200
33− property bool wasPrompted: false
35− signal selected(int uid)
36− signal unlocked(int uid)
38− Keys.onEscapePressed: root.resetAuthentication()
45− verticalCenter: parent.verticalCenter
47− height: root.highlightedHeight
48− color: Qt.rgba(0.1, 0.1, 0.1, 0.4)
49− border.color: Qt.rgba(0.4, 0.4, 0.4, 0.4)
50− border.width: units.dp(1)
51− radius: units.gu(1.5)
57− objectName: "userList"
61− preferredHighlightBegin: userList.height / 2 - root.highlightedHeight / 2
62− preferredHighlightEnd: userList.height / 2 - root.highlightedHeight / 2
63− highlightRangeMode: ListView.StrictlyEnforceRange
64− highlightMoveDuration: root.moveDuration
65− flickDeceleration: 10000
67− readonly property bool movingInternally: moveTimer.running || userList.moving
69− onCurrentIndexChanged: {
70− if (LightDM.Greeter.authenticationUser != userList.model.data(currentIndex, LightDM.UserRoles.NameRole)) {
71− root.resetAuthentication();
75− onMovingInternallyChanged: {
76− // Only emit the selected signal once we stop moving to avoid frequent background changes
77− if (!movingInternally) {
78− root.selected(userList.currentIndex);
84− height: root.cellHeight
86− readonly property bool belowHighlight: (userList.currentIndex < 0 && index > 0) || (userList.currentIndex >= 0 && index > userList.currentIndex)
87− readonly property int belowOffset: root.highlightedHeight - root.cellHeight
90− // The goal here is to make names less and less opaque as they
91− // leave the highlight area. Can't simply use index, because
92− // that can change quickly if the user clicks at edges of
93− // list. So we use actual pixel distance.
94− var highlightDist = 0;
95− var realY = y - userList.contentY;
97− realY += belowOffset;
98− if (realY + height <= highlightItem.y)
99− highlightDist = realY + height - highlightItem.y;
100− else if (realY >= highlightItem.y + root.highlightedHeight)
101− highlightDist = realY - highlightItem.y - root.highlightedHeight;
104− return 1 - Math.min(1, (Math.abs(highlightDist) + root.cellHeight) / ((root.numAboveBelow + 1) * root.cellHeight))
108− objectName: "username" + index
112− leftMargin: units.gu(2)
114− rightMargin: units.gu(2)
116− // Add an offset to topMargin for any items below the highlight
117− topMargin: units.gu(1) + (parent.belowHighlight ? parent.belowOffset : 0)
121− elide: Text.ElideRight
123− Behavior on anchors.topMargin { NumberAnimation { duration: root.moveDuration; easing.type: Easing.InOutQuad; } }
131− // Add an offset to topMargin for any items below the highlight
132− topMargin: parent.belowHighlight ? parent.belowOffset : 0
134− height: parent.height
135− enabled: userList.currentIndex !== index
138− userList.currentIndex = index;
141− Behavior on anchors.topMargin { NumberAnimation { duration: root.moveDuration; easing.type: Easing.InOutQuad; } }
145− // This is needed because ListView.moving is not true if the ListView
146− // moves because of an internal event (e.g. currentIndex has changed)
151− interval: root.moveDuration
157− objectName: "infoLabel"
159− bottom: passwordInput.top
161− topMargin: units.gu(1)
162− bottomMargin: units.gu(1)
163− leftMargin: units.gu(2)
164− rightMargin: units.gu(1)
168− width: root.width - anchors.leftMargin - anchors.rightMargin
170− textFormat: Text.StyledText
173− opacity: (userList.movingInternally || text == "") ? 0 : 1
174− Behavior on opacity {
175− NumberAnimation { duration: 100 }
181− objectName: "passwordInput"
183− bottom: highlightItem.bottom
184− horizontalCenter: parent.horizontalCenter
185− margins: units.gu(1)
187− height: units.gu(4.5)
188− width: parent.width - anchors.margins * 2
189− opacity: userList.movingInternally ? 0 : 1
191− Behavior on opacity {
192− NumberAnimation { duration: 100 }
198− root.focus = true; // so that it can handle Escape presses for us
200− LightDM.Greeter.respond(text);
202− Keys.onEscapePressed: root.resetAuthentication()
207− rightMargin: units.gu(2)
208− verticalCenter: parent.verticalCenter
210− visible: LightDM.Greeter.promptless
211− source: "graphics/icon_arrow.png"
214− WrongPasswordAnimation {
215− id: wrongPasswordAnimation
216− target: passwordInput
220− target: Qt.inputMethod
222− if (!Qt.inputMethod.visible) {
223− passwordInput.focus = false;
231− anchors.fill: passwordInput
232− enabled: LightDM.Greeter.promptless
234− if (LightDM.Greeter.authenticated)
235− root.unlocked(userList.currentIndex);
237− root.resetAuthentication();
241− function resetAuthentication() {
242− if (!userList.currentItem) {
245− infoLabel.text = "";
246− passwordInput.placeholderText = "";
247− passwordInput.text = "";
248− passwordInput.focus = false;
249− passwordInput.enabled = true;
250− root.wasPrompted = false;
251− LightDM.Greeter.authenticate(userList.model.data(currentIndex, LightDM.UserRoles.NameRole));
255− target: LightDM.Greeter
258− // inefficient, but we only rarely deal with messages
259− text = text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\n/g, "<br>");
261− text = "<font color=\"#df382c\">" + text + "</font>"
262− if (infoLabel.text == "")
263− infoLabel.text = text;
265− infoLabel.text = infoLabel.text + "<br>" + text;
269− passwordInput.text = "";
270− passwordInput.placeholderText = text;
271− passwordInput.enabled = true;
272− passwordInput.echoMode = isSecret ? TextInput.Password : TextInput.Normal;
273− if (root.wasPrompted) // stay in text field if second prompt
274− passwordInput.focus = true;
275− root.wasPrompted = true;
278− onAuthenticationComplete: {
279− if (LightDM.Greeter.promptless) {
280− passwordInput.placeholderText = LightDM.Greeter.authenticated ? "Tap to unlock" : "Retry";
283− if (LightDM.Greeter.authenticated) {
284− root.unlocked(userList.currentIndex);
286− wrongPasswordAnimation.start();
287− root.resetAuthentication();
288− passwordInput.focus = true;
290− passwordInput.text = "";
Greeter/PassphraseLockscreen.qmldeleted−87
@@ -1,87 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
23− height: highlightItem.height
25− property alias placeholderText: pinentryField.placeholderText
26− property string username: ""
28− signal entered(string passphrase)
31− function clear(playAnimation) {
32− pinentryField.text = "";
34− wrongPasswordAnimation.start();
36− pinentryField.focus = false
44− anchors.centerIn: parent
45− color: Qt.rgba(0.1, 0.1, 0.1, 0.4)
46− border.color: Qt.rgba(0.4, 0.4, 0.4, 0.4)
47− border.width: units.dp(1)
48− radius: units.gu(1.5)
52− objectName: "greeterLabel"
57− margins: units.gu(1.5)
59− text: root.username.length > 0 ? i18n.tr("Hello %1").arg(root.username) : i18n.tr("Hello")
65− objectName: "pinentryField"
67− horizontalCenter: parent.horizontalCenter
68− bottom: parent.bottom
71− height: units.gu(4.5)
72− width: parent.width - units.gu(2)
73− echoMode: TextInput.Password
75− hasClearButton: false
78− root.entered(pinentryField.text);
83− WrongPasswordAnimation {
84− id: wrongPasswordAnimation
85− target: pinentryField
Greeter/PinLockscreen.qmldeleted−111
@@ -1,111 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
23− anchors.centerIn: parent
24− spacing: units.gu(2.5)
26− property alias placeholderText: pinentryField.placeholderText
27− property int padWidth: units.gu(32)
28− property int pinLength: 4
30− signal entered(string passphrase)
33− function clear(playAnimation) {
34− pinentryField.text = "";
36− wrongPasswordAnimation.start();
42− objectName: "pinentryField"
43− anchors.horizontalCenter: parent.horizontalCenter
46− echoMode: TextInput.Password
47− font.pixelSize: units.dp(44)
50− hasClearButton: false
51− horizontalAlignment: Text.AlignHCenter
54− if (pinentryField.text.length === root.pinLength) {
55− root.entered(pinentryField.text);
59− // Using a MouseArea to eat clicks. We don't want to disable the TextField for styling reasons
69− margins: (parent.width - root.padWidth) / 2
79− objectName: "pinPadButton" + (index + 1)
83− pinentryField.text = pinentryField.text + text
89− objectName: "pinPadButtonBack"
91− onClicked: root.cancel();
95− objectName: "pinPadButton0"
97− onClicked: pinentryField.text = pinentryField.text + text
101− objectName: "pinPadButtonErase"
103− onClicked: pinentryField.text = pinentryField.text.substring(0, pinentryField.text.length-1)
107− WrongPasswordAnimation {
108− id: wrongPasswordAnimation
109− target: pinentryField
Greeter/PinPadButton.qmldeleted−59
@@ -1,59 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
26− property alias text: label.text
27− property alias iconName: icon.name
32− ColorAnimation { duration: 100 }
37− anchors.centerIn: parent
40− font.weight: Font.Light
48− anchors.centerIn: parent
55− onClicked: root.clicked()
56− onPressed: root.color = Qt.rgba(0, 0, 0, 0.3)
57− onReleased: root.color = Qt.rgba(0, 0, 0, 0)
Greeter/graphics/dot_empty.pngdeleted
Binary file not shown.
Greeter/graphics/dot_filled.pngdeleted
Binary file not shown.
Greeter/graphics/dot_pointer.pngdeleted
Binary file not shown.
Greeter/graphics/icon_arrow.pngdeleted
Binary file not shown.
Greeter/graphics/infographic_circle.pngdeleted
Binary file not shown.
@@ -1,496 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
21−import "../Components"
26− readonly property real elementsPadding: units.gu(1)
27− readonly property real elementsYSliding: units.gu(2)
29− property alias revealerTarget: hudShowable
30− property alias showAnimation: hudShowable.showAnimation
31− property alias hideAnimation: hudShowable.hideAnimation
32− property alias available: hudShowable.available
33− property alias shown: hudShowable.shown
34− property alias handleHeight: handle.height
36− readonly property variant outEasing: Easing.OutQuad
37− readonly property variant inEasing: Easing.InQuad
38− readonly property int animationDuration: 200
39− readonly property int showableAnimationDuration: 100
40− property bool showingOpenIndicator: false
42− // FIXME At the moment since we have no appstack
43− // it's not possible to get results of the sidestage app
44− // design has to come up with a solution
51− function resetToInitialState() {
52− hud.state = "initial"
55− parametrizedActionsPage.shown = false
61− PropertyChanges { target: searchBar; placeholderText: i18n.tr("Type or say a command") }
62− PropertyChanges { target: searchBar; searchEnabled: true }
63− PropertyChanges { target: toolBarAnimator; visible: true}
64− AnchorChanges { target: searchBarAnimator; anchors.top: undefined; anchors.bottom: parent.bottom; }
65− AnchorChanges { target: resultsCardAnimator; anchors.top: undefined; anchors.bottom: toolBarAnimator.top; }
68− name: "input" //only inherited by other states.
69− AnchorChanges { target: searchBarAnimator; anchors.top: parent.top; anchors.bottom: undefined; }
70− AnchorChanges { target: resultsCardAnimator; anchors.top: searchBarAnimator.bottom; anchors.bottom: undefined; }
71− PropertyChanges { target: toolBarAnimator; visible: false }
74− name: "voice_input" //only inherited by other states.
76− PropertyChanges { target: soundAmplitudeVisualAnimator; visible: true }
77− PropertyChanges { target: resultsCardAnimator; visible: false }
78− PropertyChanges { target: soundAmplitudeVisualAnimator; progress: 1 }
79− PropertyChanges { target: searchBar; searchEnabled: false }
82− name: "voice_recognition_loading"
83− extend: "voice_input"
84− PropertyChanges { target: searchBar; placeholderText: i18n.tr("Loading. Please Wait...") }
87− name: "voice_recognition_listening"
88− extend: "voice_input"
89− PropertyChanges { target: searchBar; placeholderText: i18n.tr("Speak Now...") }
92− name: "voice_recognition_processing"
93− extend: "voice_input"
94− PropertyChanges { target: searchBar; placeholderText: i18n.tr("Speaking...") }
97− name: "showing_results"
99− PropertyChanges { target: searchBar; placeholderText: i18n.tr("Type or say a command") }
100− PropertyChanges { target: searchBar; searchEnabled: true }
107− to: "voice_recognition_loading"
108− SequentialAnimation {
109− NumberAnimation { // hide these components
110− targets: [toolBarAnimator, searchBarAnimator, resultsCardAnimator]
111− property: "progress"; duration: animationDuration; to: 0
114− PropertyAction { targets: [toolBarAnimator, resultsCardAnimator]; property: "visible"; value: false}
115− PropertyAction { target: soundAmplitudeVisualAnimator; property: "visible"; value: true}
117− AnchorAnimation { duration: 0 } // so anchor change happens at this point
119− NumberAnimation { // show these components
120− targets: [searchBarAnimator, soundAmplitudeVisualAnimator]
121− property: "progress"; duration: animationDuration; from: 0; to: 1
126− from: "showing_results"
127− to: "voice_recognition_loading"
128− SequentialAnimation {
129− PropertyAction { target: soundAmplitudeVisualAnimator; property: "progress"; value: 0}
131− PropertyAction { // hide these components
132− target: resultsCardAnimator; property: "progress"; value: 0
135− NumberAnimation { // show these components
136− target: soundAmplitudeVisualAnimator; property: "progress"; duration: animationDuration; from: 0; to: 1
141− from: "voice_recognition_processing"
142− to: "showing_results"
143− SequentialAnimation {
144− NumberAnimation { // hide these components
145− target: soundAmplitudeVisualAnimator; property: "progress"; duration: animationDuration; to: 0
147− PropertyAction { target: resultsCardAnimator; property: "visible"; value: true}
149− NumberAnimation { // show these components
150− target: resultsCardAnimator; property: "progress"; duration: animationDuration; from: 0; to: 1
156− to: "showing_results"
157− SequentialAnimation {
159− targets: [toolBarAnimator, searchBarAnimator, resultsCardAnimator]
160− property: "progress"; duration: animationDuration; to: 0
163− PropertyAction { target: toolBarAnimator; property: "visible"; value: false}
165− AnchorAnimation { duration: 0 } // so anchor change happens at this point
168− targets: [searchBarAnimator, resultsCardAnimator]
169− property: "progress"; duration: animationDuration; from: 0; to: 1
180− onCommandExecuted: {
184− onShowParametrizedAction: {
185− parametrizedActionsPage.header = action
186− parametrizedActionsPage.setItems(items)
187− parametrizedActionsPage.shown = true
190− onVoiceQueryLoading: {
191− hud.state = "voice_recognition_loading"
192− searchBar.ignoreNextTextChange = true
195− soundAmplitudeVisual.startIdle()
197− onVoiceQueryListening: {
198− if (hud.state == "voice_recognition_loading" || hud.state == "showing_results") {
199− searchBar.ignoreNextTextChange = true
202− hud.state = "voice_recognition_listening"
205− onVoiceQueryHeardSomething: {
206− if (hud.state == "voice_recognition_listening") {
207− hud.state = "voice_recognition_processing"
208− soundAmplitudeVisual.setDetectorEnabled(true)
211− onVoiceQueryFinished: {
212− hud.state = "showing_results"
213− searchBar.text = query
214− soundAmplitudeVisual.setDetectorEnabled(false)
216− onVoiceQueryFailed: {
217− hud.state = "showing_results"
219− soundAmplitudeVisual.setDetectorEnabled(false)
225− objectName: "hudShowable"
226− height: parent.height
230− if (greeter.shown) {
231− showAnimation.duration = 0
232− hideAnimation.duration = 0
233− } else if (!showAnimation.running && !hideAnimation.running) {
234− if (parent.height > 0) {
235− showAnimation.duration = Math.min(showableAnimationDuration * (1 - (parent.height - y) / parent.height), showableAnimationDuration)
236− hideAnimation.duration = showableAnimationDuration - showAnimation.duration
242− // Eat everything that doesn't go to other places
243− anchors.fill: parent
247− anchors.fill: parent
248− fillMode: Image.Tile
249− source: "graphics/hud_bg.png"
253− target: hideAnimation
255− if (!hideAnimation.running) {
256− showAnimation.duration = showableAnimationDuration
257− hud.resetToInitialState()
263− target: showAnimation
265− if (!showAnimation.running) {
266− hideAnimation.duration = showableAnimationDuration
274− objectName: "handle"
281− height: handleImage.height
289− source: "graphics/hud_handlebar.png"
295− anchors.horizontalCenter: parent.horizontalCenter
296− source: "graphics/hud_handlearrow.png"
302− id: hudContentClipper
307− bottom: parent.bottom
310− clip: visible && hudContent.height !== height
311− visible: hudContent.height >= 0
318− bottom: parent.bottom
324− x: parametrizedActionsPage.x - width
330− objectName: "toolBarAnimator"
334− bottom: searchBarAnimator.top
335− margins: 2*elementsPadding //ensures positioning correct
337− progress: MathUtils.clamp((y - hudShowable.y - anchors.margins)/elementsYSliding, 0, 1)
341− objectName: "toolBar"
342− model: hudClient.toolBarModel
343− anchors.horizontalCenter: parent.horizontalCenter
344− onActionTriggered: {
345− hudClient.executeToolBarAction(action)
351− id: searchBarAnimator
352− objectName: "searchBarAnimator"
356− bottom: parent.bottom
357− margins: elementsPadding
358− topMargin: handle.height + units.dp(1) + elementsPadding
360− progress: MathUtils.clamp((y - hudShowable.y - anchors.margins)/elementsYSliding, 0, 1)
364− objectName: "searchBar"
366− property bool ignoreNextTextChange: false
368− anchors.left: parent.left
369− anchors.right: parent.right
372− placeholderText: i18n.tr("Type or say a command")
373− activityIndicatorVisible: hud.state == "voice_recognition_processing"
375− onMicrophoneClicked: hudClient.startVoiceQuery()
378− if (ignoreNextTextChange) {
379− ignoreNextTextChange = false
381− hudClient.setQuery(searchBar.text)
386− hud.state = "showing_results"
392− id: resultsCardAnimator
393− objectName: "resultsCardAnimator"
398− top: searchBarAnimator.bottom
399− margins: elementsPadding
401− progress: MathUtils.clamp((y - hudShowable.y + height - units.gu(8))/elementsYSliding, 0, 1)
404− anchors.left: parent.left
405− anchors.right: parent.right
406− contentHeight: resultList.height
408− clip: height < contentHeight
409− interactive: height < contentHeight
412− if (hud.state == "showing_results") {
413− return shell.applicationManager.keyboardVisible ? Math.min(hud.height - searchBarAnimator.y - searchBarAnimator.height - units.gu(2) - shell.applicationManager.keyboardHeight, contentHeight) : contentHeight
415− return contentHeight
423− anchors.left: parent.left
424− anchors.right: parent.right
425− height: childrenRect.height
428− hudClient.executeCommand(index)
431− model: hudClient.results
437− id: soundAmplitudeVisualAnimator
440− horizontalCenter: parent.horizontalCenter
441− verticalCenter: parent.verticalCenter
442− verticalCenterOffset: (searchBar.height + 2*elementsPadding)/2
446− progress: MathUtils.clamp((y - hudShowable.y - anchors.verticalCenterOffset)/elementsYSliding, 0, 1)
448− SoundAmplitudeVisual {
449− id: soundAmplitudeVisual
456− HudParametrizedActionsPage {
457− id: parametrizedActionsPage
458− objectName: "parametrizedActionsPage"
459− property bool shown: false
461− anchors.bottom: parent.bottom
462− height: hud.height - handle.height - units.dp(1)
464− x: shown ? 0 : width
466− hudClient.executeParametrizedAction(values())
469− hudClient.updateParametrizedAction(values())
476− hudClient.cancelParametrizedAction()
481− easing.type: outEasing
482− duration: animationDuration
490− anchors.left: hudContentClipper.right
491− anchors.top: hudContentClipper.top
492− anchors.bottom: hudContentClipper.bottom
493− fillMode: Image.Tile
494− source: "graphics/dropshadow_right.png"
Hud/HudParametrizedActionsPage.qmldeleted−172
@@ -1,172 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
22− property alias header: header.text
24− signal confirmPressed
32− function setItems(items) {
33− while (actionItems.count > 0) {
34− var item = actionItems.get(0).item
35− actionItems.remove(0)
40− var sliderCreator = Qt.createComponent("SliderLabel.qml");
42− var topAnchor = header.bottom
43− for (var i = 0; i < items.length; i++) {
45− if (item["parameter-type"] == "slider")
47− var slider = sliderCreator.createObject(flickableColumn);
48− slider.anchors.left = flickableColumn.left
49− slider.anchors.right = flickableColumn.right
50− slider.anchors.topMargin = first ? units.gu(1) : units.gu(2)
51− slider.anchors.top = topAnchor
52− slider.tooltip = tooltip
53− slider.sliderData = item
54− topAnchor = slider.bottom
55− actionItems.append({"item": slider})
56− slider.onValueChanged.connect(valueChanged)
62− function valueChanged()
69− for (var i = 0; i < actionItems.count; ++i) {
70− var item = actionItems.get(i).item
71− values[item.action] = item.value
77− anchors.top: parent.top
78− anchors.bottom: buttons.top
79− anchors.left: parent.left
80− anchors.right: parent.right
83− flickableDirection: Flickable.VerticalFlick
84− interactive: !tooltip.visible
88− anchors.top: parent.top
89− anchors.left: parent.left
90− anchors.right: parent.right
94− anchors.top: parent.top
95− anchors.left: parent.left
96− anchors.right: parent.right
97− anchors.topMargin: units.gu(1)
103− anchors.bottom: parent.bottom
104− anchors.left: parent.left
105− anchors.right: parent.right
106− anchors.margins: units.gu(1)
107− height: confirmButton.height
111− anchors.left: parent.left
112− anchors.top: parent.top
113− anchors.bottom: parent.bottom
118− anchors.fill: parent
119− onClicked: backPressed()
123− anchors.centerIn: backButton
124− source: "graphics/icon_arrow.png"
129− anchors.right: parent.right
132− text: i18n.tr("Confirm")
134− onClicked: confirmPressed()
140− property variant target: undefined
141− visible: target != undefined
142− y: visible ? root.mapFromItem(target.parent, 0, target.y).y - height : 0
143− x: visible ? target.anchors.leftMargin + target.__internals.thumb.x + target.__internals.thumb.width / 2 - width / 2 : 0
145− width: childrenRect.width
146− height: childrenRect.height
149− id: tooltipRectangle
153− radius: units.gu(0.5)
156− anchors.fill: parent
157− text: tooltip.target ? tooltip.target.realFormatValue(tooltip.target.value) : ""
158− horizontalAlignment: Text.AlignHCenter
159− verticalAlignment: Text.AlignVCenter
165− source: "graphics/popup_triangle.png"
167− anchors.top: tooltipRectangle.bottom
168− anchors.horizontalCenter: parent.horizontalCenter
@@ -1,84 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
21− property string contextSnippetText
22− property variant contextSnippetHighlights
23− property string nameText
24− property variant nameHighlights
26− function highlightedText(text, highlights) {
28− var nextIndexToProcess = 0;
29− if (highlights && highlights.length % 2 == 0) {
30− for (var i = 0; i < highlights.length - 1; i += 2) {
31− var highlightStart = highlights[i];
32− var highlightEnd = highlights[i + 1];
33− if (highlightEnd < highlightStart)
35− if (highlightStart < nextIndexToProcess)
37− if (highlightStart != nextIndexToProcess) {
38− // Prev non marked text
39− hText += text.substr(nextIndexToProcess, highlightStart - nextIndexToProcess);
43− hText += "<font color=\"#ffffff\">" + text.substr(highlightStart, highlightEnd - highlightStart + 1) + "</font>";
44− nextIndexToProcess = highlightEnd + 1;
47− if (nextIndexToProcess != text.length) {
48− // End non marked text
49− hText += text.substr(nextIndexToProcess);
56− objectName: "actionLabel"
57− anchors.left: parent.left
58− anchors.leftMargin: units.gu(1)
59− anchors.verticalCenter: parent.verticalCenter
60− width: parent.width / 2
62− elide: Text.ElideRight
64− text: highlightedText(nameText, nameHighlights)
69− horizontalAlignment: Text.AlignRight
70− id: contextSnippetLabel
71− objectName: "contextSnippetLabel"
72− width: parent.width / 2 - units.gu(1)
74− anchors.right: parent.right
75− anchors.rightMargin: units.gu(1)
76− anchors.verticalCenter: parent.verticalCenter
79− elide: Text.ElideRight
81− text: highlightedText(contextSnippetText, contextSnippetHighlights)
Hud/ResultList.qmldeleted−106
@@ -1,106 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
21− property var model: undefined
23− // Hud gives lots of results, make sure we have 5 at most
24− // FIXME This should use SortFilterProxyModel
25− // but there is a problem with the hud-service refreshing the
26− // data for no reason so we use the internal model + timer
27− // to fix those issues
34− // Accumulate count changes since hud clears
35− // and then readds items to the models which means
36− // even if the result is the same we get lots of count changes
37− onCountChanged: updateModelTimer.restart()
40− onModelChanged: updateModelTimer.restart()
45− onTriggered: updateModel()
48− function updateModel() {
49− internalModel.clear()
50− for (var i = 0; i < 5 && i < model.count; ++i) {
51− var itemData = model.get(i)
52− internalModel.append({"name": itemData.column_1, "highlights": itemData.column_2, "context": itemData.column_3, "contextHighlights": itemData.column_4})
56− signal activated(int index)
58− height: repeater.height
62− objectName: "resultListRepeater"
65− delegate: MouseArea {
67− height: result.height + separatorLine.height * 2
68− anchors.left: parent.left
69− anchors.right: parent.right
71− onClicked: activated(index)
75− anchors.top: parent.top
76− anchors.left: parent.left
77− anchors.right: parent.right
78− source: "graphics/divider.sci"
85− anchors.top: separatorLine.bottom
86− anchors.left: parent.left
87− anchors.right: parent.right
90− nameHighlights: highlights
91− contextSnippetText: context
92− contextSnippetHighlights: contextHighlights
96− anchors.top: result.bottom
97− anchors.left: parent.left
98− anchors.right: parent.right
99− source: "graphics/divider.sci"
102− Component.onCompleted: fadeIn.start()
103− NumberAnimation { id: fadeIn; target: resultList; alwaysRunToEnd: true; property: "opacity"; duration: 200; from: 0; to: 1 }
Hud/SearchBar.qmldeleted−100
@@ -1,100 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
22− property alias activityIndicatorVisible: activityIndicator.visible
23− property alias text: searchBar.text
24− property alias placeholderText: searchBar.placeholderText
25− property alias searchEnabled: searchBar.enabled
26− signal microphoneClicked
29− readonly property real imageSize: units.gu(3)
33− searchBar.focus = false
37− id: activityIndicator
49− hasClearButton: false
50− font.pixelSize: FontUtils.sizeToPixels("large")
52− onActiveFocusChanged: {
60− height: searchBar.height
67− anchors.centerIn: parent
68− source: "graphics/icon_search.png"
69− visible: !activityIndicator.visible && !clearImage.visible
76− anchors.centerIn: parent
77− source: "graphics/icon_clear.png"
78− visible: !activityIndicator.visible && searchBar.text != ""
81− onClicked: searchBar.text = ""
87− secondaryItem: MouseArea {
88− height: searchBar.height
90− onClicked: microphoneClicked()
95− anchors.centerIn: parent
96− source: "graphics/microphone.png"
Hud/ShowingAnimation.qmldeleted−54
@@ -1,54 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
23− property real yOffsetAtAnimationStart: units.gu(2)
24− property real progress: 0
25− property int animationDuration: 200
26− default property alias __itemsToAnimate: container.children
28− property bool showing: progress > 0
30− height: childrenRect.height
38− height: childrenRect.height
41− NumberAnimation {id: opacityAnimation; target: container; property: "opacity"; from: 0; to: 1; duration: animationDuration}
42− NumberAnimation {id: yAnimation; target: container; property: "y"; from: yOffsetAtAnimationStart; to: 0; duration: animationDuration}
44− // FIXME This would much more sense in a ParallelAnimation and just
45− // one AnimationController but that goes something crazy and rendering never stops
46− AnimationController {
47− animation: opacityAnimation
48− progress: root.progress
50− AnimationController {
51− animation: yAnimation
52− progress: root.progress
Hud/SliderLabel.qmldeleted−74
@@ -1,74 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
21− height: childrenRect.height
22− width: childrenRect.width
23− property variant tooltip
25− property variant sliderData
26− property string action
27− property alias value: slider.value
29− // TODO We should not need this but without it
30− // slider.onValueChanged.connect(valueChanged) in
31− // HudParametrizedActionsPage.qml doesn't work
32− // Michael thinks it's related to https://bugreports.qt-project.org/browse/QTBUG-29141
35− onSliderDataChanged: {
36− label.text = sliderData["label"]
37− slider.minimumValue = sliderData["min"]
38− slider.maximumValue = sliderData["max"]
39− slider.live = sliderData["live"]
40− // SDK Slider does not support step yet
41−// slider.step = sliderData["step"]
42− slider.value = sliderData["value"]
43− action = sliderData["action"]
48− anchors.top: parent.top
49− anchors.left: parent.left
50− anchors.right: parent.right
51− anchors.margins: units.gu(1)
52− anchors.leftMargin: units.gu(2)
57− anchors.top: label.bottom
58− anchors.left: parent.left
59− anchors.right: parent.right
60− anchors.margins: units.gu(1)
63− function realFormatValue(v) { return Math.round(v) + " %" }
64− function formatValue(v) { return tooltip.target == slider ? "" : realFormatValue(v) }
65− onPressedChanged: tooltip.target = pressed ? slider : undefined
68− source: "graphics/divider.sci"
69− anchors.top: slider.bottom
70− anchors.left: parent.left
71− anchors.right: parent.right
72− anchors.topMargin: units.gu(2)
Hud/SoundAmplitudeDelegate.qmldeleted−52
@@ -1,52 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
21− property real amplitude: 0
22− property int totalCount
23− property int ballIndex
25− var t = amplitude / 0.6
27− return units.gu(0.25) + units.gu(5) * t
29− visible: amplitude != 0
35− // TODO This formula has hardocded values everywhere :D
37− var dampenAfterThisIndex = 7
38− if (ballIndex < dampenAfterThisIndex) {
39− t = (totalCount - ballIndex) / totalCount
40− return Math.pow(t, 4);
42− t = (totalCount - dampenAfterThisIndex) / totalCount
45− return 0.09 + t * (totalCount - ballIndex) / (totalCount - dampenAfterThisIndex)
49− property double orbitRadius: ((parent.width - units.gu(6)) / 2)
50− x: -(width / 2) + (parent.width / 2) + orbitRadius * Math.sin((ballIndex / totalCount) * (2 * Math.PI))
51− y: -(height / 2) + (parent.height / 2) - orbitRadius * Math.cos((ballIndex / totalCount) * (2 * Math.PI))
Hud/SoundAmplitudeVisual.qmldeleted−146
@@ -1,146 +0,0 @@
2− * Copyright (C) 2012, 2013 Canonical, Ltd.
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.
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.
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/>.
23− readonly property int totalSpots: 30
24− readonly property int totalIdles: 7
26− property real __newPeak: 0
30− desiredInterval: peakMover.interval
42− voiceAmplitudes.itemAt(0).amplitude = __newPeak
47− id: fixedPositionSoundAmplitudes
49− delegate: SoundAmplitudeDelegate {
50− totalCount: fixedPositionSoundAmplitudes.count
60− delegate: SoundAmplitudeDelegate {
61− totalCount: voiceAmplitudes.count
69− delegate: SoundAmplitudeDelegate {
70− totalCount: idleAmplitudes.count
73− visible: idleAmplitudes.enabled
77− function setDetectorEnabled(enabled) {
78− idleAmplitudes.enabled = false
82− peakDetector.enabled = false
87− function moveBalls() {
89− var amplitude = voiceAmplitudes.itemAt(0).amplitude
90− for (var i = 1; i < totalSpots; ++i) {
91− var item = voiceAmplitudes.itemAt(i)
92− var tempAmplitude = item.amplitude
93− item.amplitude = amplitude
94− amplitude = tempAmplitude
98− property int __firstIdle
99− property int __idleCount
104− onTriggered: moveAndAddIdleBalls()
107− function moveAndAddIdleBalls() {
108− // Check if we are doing the real thing
109− if (!idleAmplitudes.enabled) {
113− for (var i = 0; i < __idleCount; ++i) {
114− var index = __firstIdle - i
115− var item = idleAmplitudes.itemAt(index % totalSpots)
116− var nextItem = idleAmplitudes.itemAt((index + 1) % totalSpots)
117− nextItem.opacity = item.opacity
120− idleAmplitudes.itemAt((__firstIdle - __idleCount) % totalSpots).opacity = 0
122− if (__idleCount < totalIdles) {
123− idleAmplitudes.itemAt(0).opacity = 1 - (__idleCount / totalIdles)
126− idleBallsTimer.start()
129− function startIdle() {
130− // On the device the peak detector takes quite a lot to start up
131− // so enable it as soon as we know we are going to do voice capture
132− peakDetector.enabled = true
133− for (var i = 0; i < totalSpots; ++i) {
134− idleAmplitudes.itemAt(i).opacity = 0
136− for (var i = 0; i < totalSpots; ++i) {
137− voiceAmplitudes.itemAt(i).amplitude = 0
140− idleAmplitudes.enabled = true
141− idleAmplitudes.itemAt(0).opacity = 1
144− idleBallsTimer.start()
Hud/graphics/divider@20.pngdeleted
Binary file not shown.
Hud/graphics/divider@20.scideleted−5
Hud/graphics/dropshadow_right@20.pngdeleted
Binary file not shown.
Hud/graphics/help@20.pngdeleted
Binary file not shown.
Hud/graphics/hud_bg@20.pngdeleted
Binary file not shown.
Hud/graphics/hud_handlearrow@20.pngdeleted
Binary file not shown.
Hud/graphics/hud_handlebar@20.pngdeleted
Binary file not shown.
Hud/graphics/icon_arrow@20.pngdeleted
Binary file not shown.
Hud/graphics/icon_clear@20.pngdeleted
Binary file not shown.
Hud/graphics/icon_search@20.pngdeleted
Binary file not shown.
Hud/graphics/microphone@20.pngdeleted
Binary file not shown.
Hud/graphics/popup_triangle@20.pngdeleted
Binary file not shown.
Hud/graphics/settings@20.pngdeleted
Binary file not shown.
Hud/graphics/undo@20.pngdeleted
Binary file not shown.
Hud/graphics/view-fullscreen@20.pngdeleted
Binary file not shown.
@@ -0,0 +1,2 @@
1+@Library('ubports-build-tools') _
2+buildAndProvideDebianPackage()
Launcher/Launcher.qmldeleted−243
@@ -1,243 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import "../Components"
19−import Ubuntu.Components 0.1
20−import Ubuntu.Gestures 0.1
22−import Unity.Launcher 0.1
27− property bool available: true // can be used to disable all interactions
29− property int panelWidth: units.gu(8.5)
30− property int dragAreaWidth: units.gu(1)
31− property real progress: dragArea.dragging && dragArea.touchX > panel.width ? dragArea.touchX : 0
33− readonly property bool shown: panel.x > -panel.width
35− // emitted when an application is selected
36− signal launcherApplicationSelected(string desktopFile)
38− // emitted when the apps dash should be shown because of a swipe gesture
41− // emitted when the dash icon in the launcher has been tapped
42− signal dashItemSelected()
48− dismissTimer.restart()
53− switchToNextState("")
56− function switchToNextState(state) {
57− animateTimer.nextState = state
58− animateTimer.start();
79− dismissTimer.restart()
84− // Because the animation on x is disabled while dragging
85− // switching state directly in the drag handlers would not animate
86− // the completion of the hide/reveal gesture. Lets update the state
87− // machine and switch to the final state in the next event loop run
91− property string nextState: ""
93− // switching to an intermediate state here to make sure all the
94− // values are restored, even if we were already in the target state
96− root.state = nextState
101− id: launcherDragArea
102− enabled: root.state == "visible"
104− anchors.rightMargin: -units.gu(2)
112− if (panel.x < -panel.width/3) {
113− root.switchToNextState("")
115− root.switchToNextState("visible")
123− left: launcherDragArea.right
126− bottom: parent.bottom
128− enabled: root.state == "visible"
136− anchors.fill: parent
138− opacity: root.state == "visible" ? 0.4 : 0
140− Behavior on opacity { NumberAnimation { duration: 200; easing.type: Easing.OutQuad} }
145− objectName: "launcherPanel"
146− width: root.panelWidth
149− bottom: parent.bottom
152− model: LauncherModel
154− property bool animate: true
156− onApplicationSelected: {
158− launcherApplicationSelected(desktopFile)
160− onDashItemSelected: {
162− root.dashItemSelected(index)
166− if (dismissTimer.running) {
167− dismissTimer.restart();
173− // Disabling animation when dragging
174− duration: dragArea.dragging || launcherDragArea.drag.active ? 0 : 300;
175− easing.type: Easing.OutCubic
183− direction: Direction.Rightwards
185− enabled: root.available && root.state !== "visible"
186− width: root.dragAreaWidth
190− if (status !== DirectionalDragArea.Recognized)
193− // When the gesture finally gets recognized, the finger will likely be
194− // reasonably far from the edge. If we made the panel immediately
195− // follow the finger position it would be visually unpleasant as it
196− // would appear right next to the user's finger out of nowhere.
197− // Instead, we make the panel go towards the user's finger in several
198− // steps. ie., in an animated way.
199− var targetPanelX = Math.min(0, touchX - panel.width)
200− var delta = targetPanelX - panel.x
201− // the trick is not to go all the way (1.0) as it would cause a sudden jump
202− panel.x += 0.4 * delta
205− onDraggingChanged: {
207− if (distance > panel.width / 2) {
208− root.switchToNextState("visible")
209− if (distance > panel.width * 2) {
213− root.switchToNextState("")
221− name: "" // hidden state. Must be the default state ("") because "when:" falls back to this.
236− when: teaseTimer.running
239− x: -root.panelWidth + units.gu(2)
Launcher/LauncherDelegate.qmldeleted−289
@@ -1,289 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− property string iconName
25− property real angle: 0
26− property bool highlighted: false
27− property real offset: 0
28− property alias brightness: transformEffect.brightness
29− property real itemOpacity: 1
31− property real maxAngle: 0
32− property bool inverted: false
34− readonly property int effectiveHeight: Math.cos(angle * Math.PI / 180) * height
35− readonly property real foldedHeight: Math.cos(maxAngle * Math.PI / 180) * height
37− property bool dragging:false
46− height: parent.height
47− anchors.centerIn: parent
52− anchors.margins: units.gu(0.5)
57− sourceSize.width: iconShape.width
58− sourceSize.height: iconShape.height
59− source: "../graphics/applicationIcons/" + root.iconName + ".png"
65− onClicked: root.clicked()
66− onCanceled: root.released()
67− preventStealing: false
70− root.state = "moving"
73− root.state = "docked"
79− anchors.centerIn: iconItem
80− rotation: inverted ? 180 : 0
81− source: isSelected ? "graphics/selected.sci" : "graphics/non-selected.sci"
82− width: root.width + units.gu(0.5)
84− property bool isSelected: root.highlighted || mouseArea.pressed
85− onIsSelectedChanged: shaderEffectSource.scheduleUpdate();
91− anchors.centerIn: parent
92− anchors.verticalCenterOffset: root.offset
94− height: parent.height
95− property real itemOpacity: root.itemOpacity
96− property real brightness: 0
97− property real angle: root.angle
98− rotation: root.inverted ? 180 : 0
101− property variant source: ShaderEffectSource {
102− id: shaderEffectSource
103− sourceItem: iconItem
109− // Rotating 3 times at top/bottom because that increases the perspective.
110− // This is a hack, but as QML does not support real 3D coordinates
111− // getting a higher perspective can only be done by a hack. This is the most
112− // readable/understandable one I could come up with.
114− axis { x: 1; y: 0; z: 0 }
115− origin { x: iconItem.width / 2; y: angle > 0 ? 0 : iconItem.height; z: 0 }
116− angle: root.angle * 0.7
119− axis { x: 1; y: 0; z: 0 }
120− origin { x: iconItem.width / 2; y: angle > 0 ? 0 : iconItem.height; z: 0 }
121− angle: root.angle * 0.7
124− axis { x: 1; y: 0; z: 0 }
125− origin { x: iconItem.width / 2; y: angle > 0 ? 0 : iconItem.height; z: 0 }
126− angle: root.angle * 0.7
128− // Because rotating it 3 times moves it more to the front/back, i.e. it gets
129− // bigger/smaller and we need a scale to compensate that again.
131− xScale: 1 - (Math.abs(angle) / 500)
132− yScale: 1 - (Math.abs(angle) / 500)
133− origin { x: iconItem.width / 2; y: iconItem.height / 2}
137− // Using a fragment shader instead of QML's opacity and BrightnessContrast
138− // to be able to do both in one step which gives quite some better performance
140− varying highp vec2 qt_TexCoord0;
141− uniform sampler2D source;
142− uniform lowp float brightness;
143− uniform lowp float itemOpacity;
146− highp vec4 sourceColor = texture2D(source, qt_TexCoord0);
147− sourceColor.rgb = mix(sourceColor.rgb, vec3(step(0.0, brightness)), abs(brightness));
148− sourceColor *= itemOpacity;
149− gl_FragColor = sourceColor;
156− property ListView listView: root.ListView.view
157− property real totalUnfoldedHeight: listView.itemSize + listView.spacing
158− property real totalEffectiveHeight: effectiveHeight + listView.spacing
159− property real effectiveContentY: listView.contentY - listView.originY
160− property real effectiveY: y - listView.originY
161− property real distanceFromTopEdge: -(effectiveContentY + listView.topMargin - index*totalUnfoldedHeight)
162− property real distanceFromBottomEdge: listView.height - listView.bottomMargin - (effectiveY+height) + effectiveContentY
164− property real distanceFromEdge: Math.abs(distanceFromBottomEdge) < Math.abs(distanceFromTopEdge) ? distanceFromBottomEdge : distanceFromTopEdge
165− property real orientationFlag: Math.abs(distanceFromBottomEdge) < Math.abs(distanceFromTopEdge) ? -1 : 1
167− property real overlapWithFoldingArea: listView.foldingAreaHeight - distanceFromEdge
176− // This is the offset that keeps the items inside the panel
178− // First/last items are special
179− if (index == 0 || index == priv.listView.count-1) {
180− // Just keep them bound to the edges in case they're outside of the visible area
181− if (priv.distanceFromEdge < 0) {
182− return (-priv.distanceFromEdge - (height - effectiveHeight)) * priv.orientationFlag;
187− // Are we already completely outside the flickable? Stop the icon here.
188− if (priv.distanceFromEdge < -priv.totalUnfoldedHeight) {
189− return (-priv.distanceFromEdge - (root.height - effectiveHeight)) * priv.orientationFlag;
192− // We're touching the edge, move slower than the actual flicking speed.
193− if (priv.distanceFromEdge < 0) {
194− return (Math.abs(priv.distanceFromEdge) * priv.totalEffectiveHeight / priv.totalUnfoldedHeight) * priv.orientationFlag
199− // The angle used for rotating
201− // First/last items are special
202− if (index == 0 || index == priv.listView.count-1) {
203− if (priv.distanceFromEdge < 0) {
204− // proportion equation: distanceFromTopEdge : angle = totalUnfoldedHeight/2 : maxAngle
205− return Math.max(-maxAngle, priv.distanceFromEdge * maxAngle / (priv.listView.foldingAreaHeight)) * priv.orientationFlag
207− return 0; // Don't fold first/last item as long as inside the view
210− // Are we in the already completely outside the flickable? Fold for the last 5 degrees
211− if (priv.distanceFromEdge < 0) {
212− // proportion equation: -distanceFromTopEdge : angle = totalUnfoldedHeight : 5
213− return Math.max(-maxAngle, (priv.distanceFromEdge * 5 / priv.listView.foldingAreaHeight) - (maxAngle-5)) * priv.orientationFlag
216− // We are overlapping with the folding area, fold the icon to maxAngle - 5 degrees
217− if (priv.overlapWithFoldingArea > 0) {
218− // proportion equation: overlap: totalHeight = angle : (maxAngle - 5)
219− return -priv.overlapWithFoldingArea * (maxAngle -5) / priv.listView.foldingAreaHeight * priv.orientationFlag;
225− // First/last items are special
226− if (index == 0 || index == priv.listView.count-1) {
227− if (priv.distanceFromEdge < 0) {
228− // Fade from 1 to 0 in the distance of 3 * foldingAreaHeight (which is when the next item reaches the edge)
229− return 1.0 - (-priv.distanceFromEdge / (priv.listView.foldingAreaHeight * 3))
231− return 1; // Don't make first/last item transparent as long as inside the view
234− // Are we already completely outside the flickable? Fade from 0.75 to 0 in 2 items height
235− if (priv.distanceFromEdge < 0) {
236− // proportion equation: -distanceFromEdge : 1-opacity = totalUnfoldedHeight : 0.75
237− return 0.75 - (-priv.distanceFromEdge * 0.75 / (priv.totalUnfoldedHeight*2))
240− // We are overlapping with the folding area, fade out to 0.75
241− if (priv.overlapWithFoldingArea > 0) {
242− // proportion equation: overlap : totalHeight = 1-opacity : 0.25
243− return 1 - (priv.overlapWithFoldingArea * 0.25 / priv.listView.foldingAreaHeight)
249− // First/last items are special
250− if (index == 0 || index == priv.listView.count-1) {
251− if (priv.distanceFromEdge < 0) {
252− return -(-priv.distanceFromEdge / (priv.listView.foldingAreaHeight * 3))
256− // Are we already completely outside the flickable? Fade from 0.7 to 0 in 2 items height
257− if (priv.distanceFromEdge < 0) {
258− return -0.3 - (-priv.distanceFromEdge * 0.1 / (priv.totalUnfoldedHeight*2))
261− // We are overlapping with the folding area, fade out to 0.7
262− if (priv.overlapWithFoldingArea > 0) {
263− return - (priv.overlapWithFoldingArea * 0.3 / priv.listView.foldingAreaHeight)
273− target: launcherDelegate;
284− preventStealing: true
Launcher/LauncherPanel.qmldeleted−188
@@ -1,188 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−import Unity.Launcher 0.1
21−import "../Components/ListItems"
26− rotation: inverted ? 180 : 0
29− property bool inverted: true
30− property bool dragging: false
31− property bool moving: launcherListView.moving || launcherListView.flicking
32− property int dragPosition: 0
33− property int highlightIndex: -1
35− signal applicationSelected(string desktopFile)
36− signal dashItemSelected(int index)
38− onDragPositionChanged: {
39− var effectiveDragPosition = root.inverted ? launcherListView.height - dragPosition : dragPosition - mainColumn.anchors.margins
41− var hiddenContentHeight = launcherListView.contentHeight - launcherListView.height
42− // Shortening scrollable height because the first/last item needs to be fully expanded before reaching the top/bottom
43− var scrollableHeight = launcherListView.height - (launcherListView.itemSize + launcherColumn.spacing) *2
44− // As we shortened the scrollableHeight, lets move everything down by the itemSize
45− var shortenedEffectiveDragPosition = effectiveDragPosition - launcherListView.itemSize - launcherColumn.spacing
46− var newContentY = shortenedEffectiveDragPosition * hiddenContentHeight / scrollableHeight
48− // limit top/bottom to prevent overshooting
49− launcherListView.contentY = Math.min(hiddenContentHeight, Math.max(0, newContentY));
51− // Now calculate the current index:
52− // > the current mouse position + the hidden/scolled content on top is the mouse position in the averall view
53− // > adjust that removing all the margins
54− // > divide by itemSize to get index
55− highlightIndex = (effectiveDragPosition + launcherListView.contentY - mainColumn.anchors.margins*3 - launcherColumn.spacing/2) / (launcherListView.itemSize + launcherColumn.spacing)
60− source: "graphics/launcher_bg.sci"
68− topMargin: units.gu(0.5)
69− bottomMargin: units.gu(1)
70− leftMargin: units.gu(0.5)
71− rightMargin: units.gu(0.5)
73− spacing: units.gu(0.5)
78− height: units.gu(6.5)
79− onClicked: root.dashItemSelected(0)
82− objectName: "dashItem"
85− anchors.centerIn: parent
86− source: "graphics/home.png"
87− rotation: root.rotation
94− margins: -mainColumn.anchors.leftMargin
96− rotation: root.rotation
100− anchors.left: parent.left
101− anchors.right: parent.right
102− height: parent.height - dashItem.height - parent.spacing*2
104− id: launcherListView
105− objectName: "launcherListView"
106− anchors.fill: parent
107− anchors.topMargin: -itemSize
108− anchors.bottomMargin: -itemSize
110− bottomMargin: itemSize
111− height: parent.height - dashItem.height - parent.spacing*2
113− cacheBuffer: itemSize * 3
114− snapMode: ListView.SnapToItem
115− highlightRangeMode: ListView.ApplyRange
116− preferredHighlightBegin: (height - itemSize) / 2
117− preferredHighlightEnd: (height + itemSize) / 2
119− // The height of the area where icons start getting folded
120− property int foldingAreaHeight: itemSize * 0.75
121− property int itemSize: width
122− property int clickFlickSpeed: units.gu(60)
124− delegate: LauncherDelegate {
125− id: launcherDelegate
126− objectName: "launcherDelegate" + index
127− width: launcherListView.itemSize
128− height: launcherListView.itemSize
129− iconName: model.icon
130− inverted: root.inverted
131− highlighted: root.dragging && index === root.highlightIndex
132− z: -Math.abs(offset)
137− // First/last item do the scrolling at more than 12 degrees
138− if (index == 0 || index == launcherListView.count -1) {
140− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
141− } else if (angle < -12) {
142− launcherListView.flick(0, launcherListView.clickFlickSpeed);
144− root.applicationSelected(LauncherModel.get(index).desktopFile);
149− // the rest launches apps up to an angle of 30 degrees
151− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
152− } else if (angle < -30) {
153− launcherListView.flick(0, launcherListView.clickFlickSpeed);
155− root.applicationSelected(LauncherModel.get(index).desktopFile);
166− topMargin: launcherListView.topMargin
168− height: launcherListView.itemSize / 2
169− enabled: launcherListView.contentY > -launcherListView.topMargin
170− onClicked: launcherListView.flick(0, launcherListView.clickFlickSpeed)
174− id: bottomFoldingArea
178− bottom: parent.bottom
179− bottomMargin: launcherListView.bottomMargin
181− height: launcherListView.itemSize / 2
182− enabled: launcherListView.contentHeight - launcherListView.height - launcherListView.contentY > -launcherListView.bottomMargin
183− onClicked: launcherListView.flick(0, -launcherListView.clickFlickSpeed)
Launcher/graphics/highlight@18.pngdeleted
Binary file not shown.
Launcher/graphics/home@18.pngdeleted
Binary file not shown.
Launcher/graphics/launcher_bg@18.pngdeleted
Binary file not shown.
Launcher/graphics/launcher_bg@18.scideleted−5
@@ -1,5 +0,0 @@
5−source: launcher_bg@18.png
Launcher/graphics/non-selected@18.pngdeleted
Binary file not shown.
Launcher/graphics/non-selected@18.scideleted−5
@@ -1,5 +0,0 @@
5−source: non-selected@18.png
Launcher/graphics/selected@18.pngdeleted
Binary file not shown.
Launcher/graphics/selected@18.scideleted−5
@@ -1,5 +0,0 @@
5−source: selected@18.png
Launcher/graphics/triangle@18.pngdeleted
Binary file not shown.
MouseTouchAdaptor.cppdeleted−136
@@ -1,136 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
16− * Authored by: Daniel d'Andrada <daniel.dandrada@canonical.com>
19−#include "MouseTouchAdaptor.h"
21−#include <qpa/qwindowsysteminterface.h>
23−#include <QtGui/QMouseEvent>
24−#include <QtTest/QTest>
26−using QTest::QTouchEventSequence;
29−Qt::MouseButton translateMouseButton(xcb_button_t detail)
32− case 1: return Qt::LeftButton;
33− case 2: return Qt::MidButton;
34− case 3: return Qt::RightButton;
35− // Button values 4-7 are Wheel events
36− default: return Qt::NoButton;
39−} // end of anonymous namespace
41−MouseTouchAdaptor::MouseTouchAdaptor()
43− , m_leftButtonIsPressed(false)
45− m_touchDevice = new QTouchDevice;
46− m_touchDevice->setType(QTouchDevice::TouchScreen);
47− QWindowSystemInterface::registerTouchDevice(m_touchDevice);
50−void MouseTouchAdaptor::setTargetWindow(QWindow *window)
52− m_targetWindow = window;
55−bool MouseTouchAdaptor::nativeEventFilter(const QByteArray & eventType,
56− void * message, long * /*result*/)
58− Q_ASSERT(m_targetWindow);
60− if (eventType != "xcb_generic_event_t") {
62− qWarning("MouseTouchAdaptor: XCB backend not in use. Adaptor inoperative!");
66− xcb_generic_event_t *xcbEvent = static_cast<xcb_generic_event_t *>(message);
68− switch (xcbEvent->response_type & ~0x80) {
69− case XCB_BUTTON_PRESS:
70− return handleButtonPress(reinterpret_cast<xcb_button_press_event_t *>(xcbEvent));
72− case XCB_BUTTON_RELEASE:
73− return handleButtonRelease(reinterpret_cast<xcb_button_release_event_t *>(xcbEvent));
75− case XCB_MOTION_NOTIFY:
76− return handleMotionNotify(reinterpret_cast<xcb_motion_notify_event_t *>(xcbEvent));
84−bool MouseTouchAdaptor::handleButtonPress(xcb_button_press_event_t *pressEvent)
86− Qt::MouseButton button = translateMouseButton(pressEvent->detail);
88− // Just eat the event if it wasn't a left mouse press
89− if (button != Qt::LeftButton)
92− QPoint windowPos(pressEvent->event_x, pressEvent->event_y);
94− QTouchEventSequence touchEvent = QTest::touchEvent(m_targetWindow, m_touchDevice,
95− false /* autoCommit */);
96− touchEvent.press(0 /* touchId */, windowPos);
97− touchEvent.commit(false /* processEvents */);
99− m_leftButtonIsPressed = true;
103−bool MouseTouchAdaptor::handleButtonRelease(xcb_button_release_event_t *releaseEvent)
105− Qt::MouseButton button = translateMouseButton(releaseEvent->detail);
107− // Just eat the event if it wasn't a left mouse release
108− if (button != Qt::LeftButton)
111− QPoint windowPos(releaseEvent->event_x, releaseEvent->event_y);
113− QTouchEventSequence touchEvent = QTest::touchEvent(m_targetWindow, m_touchDevice,
114− false /* autoCommit */);
115− touchEvent.release(0 /* touchId */, windowPos);
116− touchEvent.commit(false /* processEvents */);
118− m_leftButtonIsPressed = false;
122−bool MouseTouchAdaptor::handleMotionNotify(xcb_motion_notify_event_t *event)
124− if (!m_leftButtonIsPressed) {
128− QPoint windowPos(event->event_x, event->event_y);
130− QTouchEventSequence touchEvent = QTest::touchEvent(m_targetWindow, m_touchDevice,
131− false /* autoCommit */);
132− touchEvent.move(0 /* touchId */, windowPos);
133− touchEvent.commit(false /* processEvents */);
Notifications/Notification.qmldeleted−253
@@ -1,253 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Unity.Notifications 1.0
24− property alias iconSource: avatarIcon.source
25− property alias secondaryIconSource: secondaryIcon.source
26− property alias summary: summaryLabel.text
27− property alias body: bodyLabel.text
29− property var notificationId
31− property var notification
33− objectName: "background"
34− implicitHeight: contentColumn.height + contentColumn.spacing * 2
35− color: Qt.rgba(0, 0, 0, 0.85)
40− Behavior on implicitHeight {
44− UbuntuNumberAnimation {
45− duration: UbuntuAnimation.SnapDuration
49− // delay enabling height behavior until the add transition is complete
50− onOpacityChanged: if (opacity == 1) heightBehavior.enabled = true
55− anchors.fill: contentColumn
56− objectName: "interactiveArea"
57− enabled: notification.type == Notification.Interactive
58− onClicked: notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
76− spacing: contentColumn.spacing
88− visible: iconSource !== undefined && iconSource != ""
92− fillMode: Image.PreserveAspectCrop
99− objectName: "secondaryIcon"
102− visible: source !== undefined && source != ""
103− fillMode: Image.PreserveAspectCrop
108− width: parent.width - x
113− objectName: "summaryLabel"
121− elide: Text.ElideRight
127− objectName: "bodyLabel"
136− wrapMode: Text.WordWrap
137− maximumLineCount: 10
138− elide: Text.ElideRight
146− objectName: "buttonRow"
151− visible: notification.type == Notification.SnapDecision
154− property real buttonWidth: (width - contentColumn.spacing) / 2
155− property bool expanded
160− objectName: "button1"
161− width: parent.expanded ? parent.width : parent.buttonWidth
164− bottom: parent.bottom
166− text: notification.type == Notification.SnapDecision && actionRepeater.count >= 2 ? actionRepeater.itemAt(1).actionLabel : ""
169− if (actionRepeater.count > 2) {
170− buttonRow.expanded = !buttonRow.expanded
172− notification.notification.invokeAction(actionRepeater.itemAt(1).actionId)
177− UbuntuNumberAnimation {
178− duration: UbuntuAnimation.SnapDuration
186− objectName: "button0"
188− left: leftButton.right
189− leftMargin: contentColumn.spacing
192− text: notification.type == Notification.SnapDecision && actionRepeater.count >= 1 ? actionRepeater.itemAt(0).actionLabel : ""
195− bottom: parent.bottom
199− onClicked: notification.notification.invokeAction(actionRepeater.itemAt(0).actionId)
204− objectName: "buttonColumn"
205− spacing: contentColumn.spacing
211− // calculate initial position before Column takes over
212− y: buttonRow.y + buttonRow.height + contentColumn.spacing
214− visible: notification.type == Notification.SnapDecision
215− height: buttonRow.expanded ? implicitHeight : 0
220− model: notification.actions
224− property string actionId: id
225− property string actionLabel: label
236− objectName: "button" + index
242− text: loader.actionLabel
245− onClicked: notification.notification.invokeAction(loader.actionId)
248− sourceComponent: (index == 0 || index == 1) ? undefined : actionButton
Notifications/Notifications.qmldeleted−76
@@ -1,76 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
24− objectName: "notificationList"
27− spacing: units.gu(.5)
28− delegate: Notification {
29− objectName: "notification" + index
35− iconSource: model.icon
36− secondaryIconSource: model.secondaryIcon
37− summary: model.summary
39− actions: model.actions
40− notificationId: model.id
41− notification: notificationList.model.getRaw(notificationId)
43− // make sure there's no opacity-difference between the several
44− // elements in a notification
45− layer.enabled: add.running || remove.running || populate.running
48− populate: Transition {
49− UbuntuNumberAnimation {
52− duration: UbuntuAnimation.SnapDuration
57− UbuntuNumberAnimation {
60− duration: UbuntuAnimation.SnapDuration
65− UbuntuNumberAnimation {
71− displaced: Transition {
72− UbuntuNumberAnimation {
Panel/IndicatorItem.qmldeleted−57
@@ -1,57 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Unity.Indicators 0.1 as Indicators
24− property alias widgetSource: loader.source
25− property bool highlighted: false
26− property bool dimmed: false
27− property var indicatorProperties: undefined
29− opacity: dimmed ? 0.4 : 1
31− // only visible when non-empty
32− visible: loader.item != undefined && loader.status == Loader.Ready ? loader.item.enabled : false
33− width: visible ? loader.item.width : 0
39− item.height = Qt.binding(function() { return indicatorItem.height; });
41− for(var pName in indicatorProperties) {
42− if (item.hasOwnProperty(pName)) {
43− item[pName] = indicatorProperties[pName];
51− objectName: "highlight"
54− anchors.top: parent.bottom
Panel/IndicatorRow.qmldeleted−106
@@ -1,106 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
23− property QtObject currentItem : null
24− readonly property int currentItemIndex: currentItem ? currentItem.ownIndex : -1
25− property alias row: row
26− property QtObject indicatorsModel: null
27− property bool overviewActive: false // "state of the menu"
29− Behavior on y {NumberAnimation {duration: 300; easing.type: Easing.OutCubic} }
34− Component.onCompleted: setDefaultItem()
36− function setDefaultItem() {
37− // The leftmost indicator
38− var defaultItemIndex = 0
39− setItem(defaultItemIndex)
42− function setItem(index) {
43− currentItem = rowRepeater.itemAt(index)
49− width: children.width
50− height: parent.height
51− anchors.right: parent.right
55− objectName: "rowRepeater"
56− model: indicatorsModel ? indicatorsModel : undefined
61− property int ownIndex: index
63− widgetSource: model.widgetSource
65− indicatorProperties : model.indicatorProperties
66− highlighted: indicatorRow.state == "reveal" || indicatorRow.state == "locked" || indicatorRow.state == "commit" ? ownIndex == indicatorRow.currentItemIndex : false
67− dimmed: { //See FIXME in Indicators regarding the "states" change
68− if (indicatorRow.state == "initial" || indicatorRow.state == "") {
70− } else if (indicatorRow.state == "hint") {
73− return ownIndex != indicatorRow.currentItemIndex
76− height: indicatorRow.height
78− //FIXME: all indicators will be initial for now.
79− if (!highlighted && !overviewActive && (indicatorRow.state == "locked" || indicatorRow.state == "commit")) {
80− return -indicatorRow.height
90− } else if (index == 1) {
92− } else if (index == 2) {
94− } else if (index == 3) {
97− return 100 + Math.random() * 200
100− easing.type: Easing.OutCubic
Panel/Indicators.qmldeleted−409
@@ -1,409 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Ubuntu.Gestures 0.1
21−import "../Components"
22−import "../Components/ListItems"
23−import "../Components/Math.js" as MathLocal
28− property int referenceOpenedHeight: units.gu(71)
29− property real openedHeight: pinnedMode ? referenceOpenedHeight - panelHeight
30− : referenceOpenedHeight
31− property int panelHeight: units.gu(3)
32− property bool pinnedMode: true //should be set true if indicators menu can cover whole screen
34− property int hintValue
35− readonly property int lockThreshold: referenceOpenedHeight / 2
36− property bool fullyOpened: height == openedHeight
37− property bool partiallyOpened: height > panelHeight && !fullyOpened
39− // TODO: Perhaps we need a animation standard for showing/hiding? Each showable seems to
40− // use its own values. Need to ask design about this.
41− showAnimation: StandardAnimation {
45− easing.type: Easing.OutCubic
48− hideAnimation: StandardAnimation {
52− easing.type: Easing.OutCubic
58− // need to use handle.get_height(). As the handle height depends on indicators.height changes (but this is called first!)
59− var contentProgress = indicators.height - handle.get_height()
60− if (!showAnimation.running && !hideAnimation.running) {
61− if (contentProgress <= hintValue && indicators.state == "reveal") {
62− indicators.state = "hint"
63− menuContent.hideAll()
64− } else if (contentProgress > hintValue && contentProgress < lockThreshold) {
65− menuContent.showMenu()
66− indicators.state = "reveal"
67− } else if (contentProgress >= lockThreshold && lockThreshold > 0) {
68− // If we've shown the overview and are closing the view with progress changes (revealer handle),
69− // we dont want to switch to a indicator menu until we hit reveal state.
70− if (menuContent.overviewActive) {
71− menuContent.showOverview()
73− menuContent.showMenu()
75− indicators.state = "locked"
79− if (contentProgress == 0) {
80− menuContent.releaseContent()
84− function openOverview() {
85− indicatorRow.currentItem = null
86− menuContent.showOverview()
89− function calculateCurrentItem(xValue, useBuffer) {
93− var distanceFromRightEdge
94− var bufferExceeded = false
96− if (indicators.state == "commit" || indicators.state == "locked" || showAnimation.running || hideAnimation.running) return
99− If user drags the indicator handle bar down a distance hintValue or less, this is 0.
100− If bar is dragged down a distance greater than or equal to lockThreshold, this is 1.
101− Otherwise it contains the bar's location as a fraction of the distance between hintValue (is 0) and lockThreshold (is 1).
103− var verticalProgress =
104− MathLocal.clamp((indicators.height - handle.height - hintValue) /
105− (lockThreshold - hintValue), 0, 1)
108− Percentage of an indicator icon's width the user's press can stray horizontally from the
109− focused icon before we change focus to another icon. E.g. a value of 0.5 means you must
110− go right a distance of half an icon's width before focus moves to the icon on the right
112− var maxBufferThreshold = 0.5
115− To help users find the indicator of their choice while opening the indicators, we add logic to add a
116− left/right buffer to each icon so it is harder for the focus to be moved accidentally to another icon,
117− as the user moves their finger down, but yet allows them to switch indicator if they want.
118− This buffer is wider the further the user's finger is from the top of the screen.
120− var effectiveBufferThreshold = maxBufferThreshold * verticalProgress;
122− rowCoordinates = indicatorRow.mapToItem(indicatorRow.row, xValue, 0);
123− // get the current delegate
124− currentItem = indicatorRow.row.childAt(rowCoordinates.x, 0);
125− if (currentItem && currentItem != indicatorRow.currentItem ) {
126− itemCoordinates = indicatorRow.row.mapToItem(currentItem, rowCoordinates.x, 0);
127− distanceFromRightEdge = (currentItem.width - itemCoordinates.x) / (currentItem.width)
128− if (Math.abs(currentItem.ownIndex - indicatorRow.currentItemIndex) > 1) {
129− bufferExceeded = true
131− if (indicatorRow.currentItemIndex < currentItem.ownIndex && distanceFromRightEdge < (1 - effectiveBufferThreshold)) {
132− bufferExceeded = true
133− } else if (indicatorRow.currentItemIndex > currentItem.ownIndex && distanceFromRightEdge > effectiveBufferThreshold) {
134− bufferExceeded = true
137− if ((!useBuffer || (useBuffer && bufferExceeded)) || indicatorRow.currentItem < 0 || indicatorRow.currentItem == null) {
138− indicatorRow.currentItem = currentItem;
147− bottom: handle.bottom
153− VerticalThinDivider {
156− topMargin: panelHeight
157− bottom: handle.bottom
158− right: indicators.left
161− source: "graphics/VerticalDivider.png"
166− objectName: "menuContent"
171− top: indicatorRow.bottom
172− bottom: parent.bottom
174− indicatorsModel: indicatorsModel
176− clip: indicators.partiallyOpened
179− indicatorRow.setItem(index)
182− //small shadow gradient at bottom of menu
187− bottom: parent.bottom
189− height: units.gu(0.5)
190− gradient: Gradient {
191− GradientStop { position: 0.0; color: "transparent" }
192− GradientStop { position: 1.0; color: "black" }
201− color: menuContent.backgroundColor
206− top: menuContent.bottom
208− height: get_height()
209− clip: height < handleImage.height
211− function get_height() {
212− return Math.max(Math.min(handleImage.height, indicators.height - handleImage.height), 0)
217− source: "graphics/handle.sci"
222− bottom: parent.bottom
225− MouseArea { //prevent clicks passing through
226− anchors.fill: parent
230− PanelSeparatorLine {
231− id: indicatorsSeparatorLine
235− left: indicators.left
236− right: indicators.right
244− bottom: indicatorsSeparatorLine.bottom
245− left: indicators.left
246− right: indicators.right
247− margins: -units.gu(1)
249− visible: indicators.height > panelHeight
250− source: "graphics/rectangular_dropshadow.sci"
254− anchors.fill: indicatorRow
259− objectName: "indicatorRow"
264− height: indicators.panelHeight
265− indicatorsModel: indicatorsModel
266− state: indicators.state
267− overviewActive: menuContent.overviewActive
269− onCurrentItemIndexChanged: menuContent.currentIndex = currentItemIndex
273− IndicatorsDataModel {
278− target: hideAnimation
280− if (hideAnimation.running) {
281− indicators.state = "initial"
282− menuContent.hideAll()
284− if (state == "initial") indicatorRow.setDefaultItem()
289− target: showAnimation
291− if (showAnimation.running) {
292− if (indicators.state == "initial") {
295− indicators.calculateCurrentItem(dragHandle.touchX, false)
296− menuContent.showMenu()
298− indicators.state = "commit"
306− var buffer = dragHandle.dragging ? true : false
307− indicators.calculateCurrentItem(dragHandle.touchX, buffer)
311− // We start with pinned states. (default pinnedMode: true)
312− states: pinnedModeStates
313− // because of dynamic assignment of states, we need to assign state after completion.
314− Component.onCompleted: state = "initial"
316− // changing states will reset state to "".
317− onPinnedModeChanged: {
318− var last_state = state;
319− states = (pinnedMode) ? pinnedModeStates : offScreenModeStates;
323− property var dragHandle: showDragHandle.dragging ? showDragHandle : hideDragHandle
326− anchors.bottom: parent.bottom
327− // go beyond parent so that it stays reachable, at the top of the screen.
328− anchors.bottomMargin: pinnedMode ? 0 : -panelHeight
329− anchors.left: parent.left
330− anchors.right: parent.right
332− direction: Direction.Downwards
333− enabled: !indicators.shown
334− hintDisplacement: pinnedMode ? indicators.hintValue : 0
335− autoCompleteDragThreshold: maxTotalDragDistance / 2
337− maxTotalDragDistance: openedHeight - handle.height
338− distanceThreshold: pinnedMode ? 0 : units.gu(3)
341− if (status === DirectionalDragArea.Recognized) {
342− menuContent.hideAll()
343− menuContent.activateContent()
349− anchors.fill: handle
351− direction: Direction.Upwards
352− enabled: indicators.shown
353− hintDisplacement: units.gu(2)
354− autoCompleteDragThreshold: maxTotalDragDistance / 6
356− maxTotalDragDistance: referenceOpenedHeight - 2*panelHeight
357− distanceThreshold: 0
360− property list<State> offScreenModeStates: [
366− PropertyChanges { target: indicatorRow; y: panelHeight }
371− PropertyChanges { target: menuContent; animate: true }
372− StateChangeScript { script: calculateCurrentItem(dragHandle.touchX, false); }
384− property list<State> pinnedModeStates: [
393− PropertyChanges { target: menuContent; animate: true }
394− StateChangeScript { script: calculateCurrentItem(dragHandle.touchX, false); }
406− NumberAnimation {targets: [indicatorRow, menuContent]; property: "y"; duration: 300; easing.type: Easing.OutCubic}
Panel/Indicators/DatetimeIndicatorPage.qmldeleted−97
@@ -1,97 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
18− * Ubo Riboni <ugo.riboni@canonical.com>
22−import Ubuntu.Components 0.1
27− contentHeight: image.height
35− source: "../graphics/time_and_date@18.png"
36− fillMode: Image.PreserveAspectFit
42− topMargin: units.gu(5)
52− horizontalCenter: parent.horizontalCenter
53− verticalCenter: parent.verticalCenter
58− font.weight: Font.Light
59− font.pixelSize: units.gu(6)
67− leftMargin: units.gu(2)
68− bottom: parent.bottom
69− bottomMargin: units.gu(1.5)
78− interval: 1000 * 10 // 10 seconds
81− triggeredOnStart: true
82− onTriggered: updateTime();
85− function updateTime() {
87− var time = Qt.formatTime(dt);
88− var space = time.indexOf(" ");
89− timeLabel.text = time.substr(0, space > 0 ? space : 5);
90− dateLabel.text = Qt.formatDateTime(dt, "dddd,\ndd MMMM");
93− // Make it compatible with the PluginItem interface
Panel/Indicators/DatetimeIndicatorWidget.qmldeleted−65
@@ -1,65 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Nick Dedekind <nick.dedekind@canonical.com>
21−import Ubuntu.Components 0.1
22−import Unity.Indicators 0.1 as Indicators
24−Indicators.IndicatorWidget {
27− width: timeLabel.width + units.gu(1)
29− property alias label: timeLabel.text
33− objectName: "timeLabel"
36− font.family: "Ubuntu"
38− anchors.centerIn: parent
39− text: Qt.formatTime(timer.dateNow)
45− running: indicatorWidget.visible
47− triggeredOnStart: true
48− property date dateNow
50− onTriggered: dateNow = new Date
53− onActionStateChanged: {
54− if (action == undefined || !action.valid) {
58− if (action.state == undefined) {
63− indicatorWidget.visible = action.state[3];
Panel/Indicators/DefaultIndicatorWidget.qmldeleted−80
@@ -1,80 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Nick Dedekind <nick.dedekind@canonical.com>
21−import Ubuntu.Components 0.1
22−import Unity.Indicators 0.1 as Indicators
24−Indicators.IndicatorWidget {
27− width: itemRow.width + units.gu(1)
29− property alias label: itemLabel.text
30− property alias iconSource: itemImage.source
34− objectName: "itemRow"
37− bottom: parent.bottom
38− horizontalCenter: parent.horizontalCenter
40− spacing: units.gu(0.5)
42− // FIXME : Should us Ubuntu.Icon . results in low res images
45− objectName: "itemImage"
46− visible: source != ""
47− height: indicatorWidget.iconSize
48− width: indicatorWidget.iconSize
49− anchors.verticalCenter: parent.verticalCenter
54− objectName: "itemLabel"
57− font.family: "Ubuntu"
59− anchors.verticalCenter: parent.verticalCenter
64− onActionStateChanged: {
65− if (action == undefined || !action.valid) {
69− if (action.state == undefined) {
76− label = action.state[Indicators.ActionState.Label];
77− iconSource = "image://gicon/" + action.state[Indicators.ActionState.IconSource];
78− enabled = action.state[Indicators.ActionState.Visible];
Panel/Indicators/NetworkIndicatorPage.qmldeleted−79
@@ -1,79 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
21−import Unity.Indicators 0.1 as Indicators
22−import Unity.Indicators.Network 0.1 as ICNetwork
23−import Ubuntu.Components 0.1
28− property alias title: _mainPage.title
29− property alias emptyText: _pluginItem.emptyText
30− property alias busType: _pluginItem.busType
31− property alias busName: _pluginItem.busName
32− property alias actionsObjectPath : _pluginItem.actionsObjectPath
33− property alias menuObjectPaths : _pluginItem.menuObjectPaths
41− Indicators.IndicatorPage {
48− id: passwordPageComponent
50− ICNetwork.PasswordPage {
55− ICNetwork.NetworkAgent {
59− _network.push(passwordPageComponent, {"token": token});
Panel/Indicators/NetworkIndicatorWidget.qmldeleted−109
@@ -1,109 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Nick Dedekind <nick.dedekind@canonical.com>
21−import Ubuntu.Components 0.1
22−import Unity.Indicators 0.1 as Indicators
24−Indicators.IndicatorWidget {
27− width: networkIcon.width + units.gu(1)
29− property int signalStrength: 0
30− property int connectionState: Indicators.NetworkConnection.Initial
31− rootMenuType: "com.canonical.indicator.root.network"
33− // FIXME : Should us Ubuntu.Icon . results in low res images
36− objectName: "itemImage"
37− source: get_icon_for_signal(connectionState, signalStrength)
38− visible: source != ""
39− height: indicatorWidget.iconSize
40− width: indicatorWidget.iconSize
41− anchors.centerIn: parent
44− onActionStateChanged: {
45− if (action == undefined || !action.valid) {
49− if (action.state == undefined) {
54− connectionState = action.state[Indicators.NetworkActionState.Connection];
55− if (connectionState == Indicators.NetworkConnection.Activated) {
56− signalStrength = action.state[Indicators.NetworkActionState.SignalStrength];
61− id: activation_animation
62− target: indicatorWidget
63− property: "signalStrength"
66− duration: 2500 // 5 states in 2.5 seconds
67− loops: Animation.Infinite
73− when: connectionState < Indicators.NetworkConnection.Activating || connectionState > Indicators.NetworkConnection.Deactivating
74− PropertyChanges { target: activation_animation; running: false }
78− when: connectionState == Indicators.NetworkConnection.Activating
79− PropertyChanges { target: activation_animation; running: true }
83− when: connectionState == Indicators.NetworkConnection.Activated
84− PropertyChanges { target: activation_animation; running: false }
88− when: connectionState == Indicators.NetworkConnection.Deactivating
89− PropertyChanges { target: activation_animation; running: true }
94− function get_icon_for_signal(con_state, value) {
95− if (con_state >= Indicators.NetworkConnection.Activating && con_state <= Indicators.NetworkConnection.Deactivating) {
97− return "image://gicon/nm-signal-00";
98− } else if (value <= 25) {
99− return "image://gicon/nm-signal-25";
100− } else if (value <= 50) {
101− return "image://gicon/nm-signal-50";
102− } else if (value <= 75) {
103− return "image://gicon/nm-signal-75";
105− return "image://gicon/nm-signal-100";
107− return "image://gicon/wifi-none";
Panel/Indicators/client/IndicatorsPage.qmldeleted−49
@@ -1,49 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
21−import Ubuntu.Components 0.1
26− title: indicatorProperties && indicatorProperties.title ? indicatorProperties.title : ""
27− property variant indicatorProperties
28− property alias pageSource : page_loader.source
34− objectName: "page_loader"
39− if (status == Loader.Ready) {
40− for(var pName in indicatorProperties) {
41− if (item.hasOwnProperty(pName)) {
42− item[pName] = indicatorProperties[pName];
Panel/IndicatorsDataModel.qmldeleted−66
@@ -1,66 +0,0 @@
2− * Copyright 2013 Canonical Ltd.
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.
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.
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/>.
17− * Renato Araujo Oliveira Filho <renato@canonical.com>
21−import Unity.Indicators 0.1 as Indicators
24−Indicators.IndicatorsModel {
27− Component.onCompleted: load()
30− 'indicator-messaging' : {
31− 'title': 'Messaging',
34− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorWidget.qml',
35− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/MessagingIndicatorPage.qml'
37− 'indicator-sound' : {
41− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/SoundIndicatorWidget.qml',
42− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage.qml'
44− 'indicator-network' : {
48− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorWidget.qml',
49− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/NetworkIndicatorPage.qml'
51− 'indicator-battery' : {
55− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorWidget.qml',
56− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DefaultIndicatorPage.qml'
59− 'title': 'Date and Time',
62− 'widgetSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DatetimeIndicatorWidget.qml',
63− 'pageSource' : ApplicationPaths.shellAppDirectory()+'/Panel/Indicators/DatetimeIndicatorPage.qml'
Panel/MenuContent.qmldeleted−201
@@ -1,201 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import Unity.Indicators 0.1 as Indicators
21−import "../Components"
26− property QtObject indicatorsModel: null
27− property bool animate: true // FIXME: Remove. This doesnt seem to be being used and it's referenced in Indicators.
28− property bool overviewActive: true // "state of the menu"
29− property bool __shown: false
30− property bool __contentActive: false
31− property alias currentIndex : menus.currentIndex
32− property color backgroundColor: "#221e1c"
33− property int contentReleaseInterval: 20000
37− color: backgroundColor
40− signal menuSelected(int index)
42− function showMenu() {
44− overviewActive = false
47− function showOverview() {
49− overviewActive = true
56− function activateContent() {
57− contentReleaseTimer.stop()
58− __contentActive = true
61− function releaseContent() {
63− contentReleaseTimer.restart()
70− anchors.bottom: parent.bottom
71− anchors.top: header.bottom
74− spacing: units.gu(0.5)
75− opacity: !overviewActive && __shown ? 1 : 0
76− enabled: opacity != 0
77− orientation: ListView.Horizontal
78− model: indicatorsModel
80− //FIXME: This will make sure that all plugins still alive
81− //check bug https://bugs.launchpad.net/manhattan/+bug/1088945 for more details
82− cacheBuffer: 2147483647
86− property bool contentActive: content.__contentActive
88− onContentActiveChanged: {
89− if (contentActive && item) {
91− } else if (!contentActive && item) {
99− visible: content.__shown
101− // Reset the indicator states
102− if (!visible && item && item["reset"]) {
109− for(var pName in indicatorProperties) {
110− if (item.hasOwnProperty(pName)) {
111− item[pName] = indicatorProperties[pName]
114− if (contentActive && menus.visible) {
119− // Need to use a binding because the handle height changes.
120− // FIXME: Dont know why we're using handle height (introduces dep).. Check with design about bottom margin
123− property: "anchors.bottomMargin"
124− value: handle.height
128− Behavior on opacity { NumberAnimation {duration: 200} }
133− objectName: "overview"
135− anchors.top: header.bottom
136− anchors.bottom: parent.bottom
137− // FIXME: Dont know why we're using handle height (introduces dep).. Check with design about bottom margin
138− anchors.bottomMargin: handle.height
140− width: content.width
141− indicatorsModel: content.indicatorsModel
142− enabled: content.overviewActive && content.__shown
143− opacity: content.overviewActive && content.__shown ? 1 : 0
144− Behavior on opacity {NumberAnimation{duration: 200}}
145− visible: opacity != 0
148− var storedDuration = menus.highlightMoveDuration
149− var storedVelocity = menus.highlightMoveVelocity
150− menus.highlightMoveDuration = 0
151− menus.highlightMoveVelocity = 100000
153− menus.currentIndex = modelIndex
154− content.overviewActive = false
156− menus.highlightMoveDuration = storedDuration
157− menus.highlightMoveVelocity = storedVelocity
159− content.menuSelected(modelIndex)
165− objectName: "header"
167− property alias title: pageHeader.text
169− color: backgroundColor
170− opacity: pageHeader.opacity
175− height: childrenRect.height
184− if (content.overviewActive)
185− return i18n.tr("Device");
186− if (indicatorsModel && menus.currentIndex >= 0 && menus.currentIndex < indicatorsModel.count)
187− return indicatorsModel.data(menus.currentIndex, Indicators.IndicatorsModelRole.Title);
190− opacity: __shown ? 1 : 0
191− Behavior on opacity {NumberAnimation{duration: 100}}
196− id: contentReleaseTimer
198− interval: contentReleaseInterval
199− onTriggered: __contentActive = false
Panel/Menus/Overview.qmldeleted−70
@@ -1,70 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../../Components/ListItems" as ListItems
25− property QtObject indicatorsModel: null
27− signal menuSelected(int modelIndex)
34− left: parent ? parent.left : undefined
35− right: parent ? parent.right : undefined
39− ListItems.ThinDivider {
41− bottom: parent.bottom
42− bottomMargin: -units.dp(1)
49− left: parent ? parent.left : undefined
50− right: parent ? parent.right : undefined
56− model: indicatorsModel
58− left: parent ? parent.left : undefined
59− right: parent ? parent.right : undefined
Panel/Menus/Overview/FlightModeWidget.qmldeleted−60
@@ -1,60 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
25− source: "graphics/plane_icon.png"
28− leftMargin: units.gu(2)
29− verticalCenter: parent.verticalCenter
37− left: flightIcon.right
38− right: flightModeSwitch.left
40− verticalCenter: parent.verticalCenter
42− text: i18n.tr("Flight mode")
48− elide: Text.ElideRight
49− horizontalAlignment: Text.AlignLeft
56− rightMargin: units.gu(2)
57− verticalCenter: parent.verticalCenter
Panel/Menus/Overview/OverviewGrid.qmldeleted−135
@@ -1,135 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
20−import "../../../Components/ListItems" as ListItems
25− height: childrenRect.height
38− objectName: "overviewGrid"
40− property int columnCount: 3
41− property int rowCount: Math.ceil(model.count / columnCount)
47− topMargin: units.gu(3)
48− leftMargin: units.gu(2)
49− rightMargin: units.gu(2)
51− height: cellWidth * rowCount
52− cellWidth: Math.floor((width) / columnCount)
53− cellHeight: cellWidth
54− model: overviewGrid.model
55− visible: opacity != 0
59− objectName: "overviewGridButton" + index
60− width: grid.cellWidth
61− height: grid.cellHeight
69− anchors.centerIn: parent
70− anchors.verticalCenterOffset: -units.gu(1)
73− for(var pName in indicatorProperties) {
74− if (item.hasOwnProperty(pName)) {
75− item[pName] = indicatorProperties[pName]
88− bottom: parent.bottom
89− leftMargin: units.gu(0.5)
90− rightMargin: units.gu(0.5)
91− bottomMargin: units.gu(1.5)
93− elide: Text.ElideRight
94− horizontalAlignment: Text.AlignHCenter
97− onClicked: overview.menuSelected(index)
110− spacing: grid.cellHeight
111− y: grid.cellHeight - units.dp(1)
113− model: grid.rowCount - 1
114− ListItems.ThinDivider {
115− anchors.margins: units.dp(1)
123− bottom: parent.bottom
125− spacing: grid.cellWidth - units.dp(1)
126− x: grid.cellWidth - units.dp(1)
128− model: grid.columnCount - 1
129− ListItems.VerticalThinDivider {
130− anchors.margins: units.dp(1)
Panel/Menus/Overview/VolumeWidget.qmldeleted−88
@@ -1,88 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../../../Components/"
26− objectName: "minVolumeIcon"
27− source: "graphics/sound_off_icon.png"
30− leftMargin: units.gu(2)
31− verticalCenter: parent.verticalCenter
38− onClicked: volumeControl.volumeDown();
44− objectName: "volumeSlider"
46− left: minVolumeIcon.right
47− right: maxVolumeIcon.left
49− verticalCenter: parent.verticalCenter
57− volumeControl.volume = value;
63− value: volumeControl.volume
66− function formatValue(v) {
73− objectName: "maxVolumeIcon"
74− source: "graphics/sound_on_icon.png"
77− rightMargin: units.gu(2)
78− verticalCenter: parent.verticalCenter
85− onClicked: volumeControl.volumeUp();
Panel/Menus/Overview/graphics/plane_icon@18.pngdeleted
Binary file not shown.
Panel/Menus/Overview/graphics/sound_off_icon@18.pngdeleted
Binary file not shown.
Panel/Menus/Overview/graphics/sound_on_icon@18.pngdeleted
Binary file not shown.
Panel/Panel.qmldeleted−133
@@ -1,133 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
19−import "../Components"
23− readonly property real panelHeight: units.gu(3) + units.dp(2)
24− property real indicatorsMenuWidth: (shell.width > units.gu(60)) ? units.gu(40) : shell.width
25− property alias indicators: indicatorsMenu
26− property bool fullscreenMode: false
27− property bool searchVisible: true
29− readonly property real separatorLineHeight: leftSeparatorLine.height
30− readonly property real __panelMinusSeparatorLineHeight: panelHeight - separatorLineHeight
40− height: __panelMinusSeparatorLineHeight
42− onYChanged: indicatorsMenu.y = y;
45− NumberAnimation { duration: 200 }
50− id: leftSeparatorLine
52− top: panelBackground.bottom
54− right: indicatorsMenu.left
56− saturation: 1 - indicatorsMenu.unitProgress
61− property real darkenedOpacity: 0.6
65− top: panelBackground.bottom
66− bottom: parent.bottom
69− opacity: indicatorsMenu.unitProgress * darkenedOpacity
72− enabled: indicatorsMenu.shown
73− onClicked: if (indicatorsMenu.fullyOpened) indicatorsMenu.hide();
80− anchors.right: parent.right
82− width: root.indicatorsMenuWidth
84− hintValue: __panelMinusSeparatorLineHeight * 3
85− panelHeight: __panelMinusSeparatorLineHeight
86− referenceOpenedHeight: parent.height
88− pinnedMode: !fullscreenMode
90− property real unitProgress: (height - panelHeight) / (openedHeight - panelHeight)
96− enabled: root.searchVisible
99− if (parent.width < indicatorsMenu.width + width) {
100− if (indicatorsMenu.state != "initial") {
104− if (root.searchVisible) {
112− height: __panelMinusSeparatorLineHeight
114− top: panelBackground.top
115− left: panelBackground.left
118− onClicked: root.searchClicked()
123− name: "in" //fully opaque and visible at top edge of screen
124− when: !fullscreenMode
125− PropertyChanges { target: panelBackground; y: 0 }
128− name: "out" //pushed off screen
129− when: fullscreenMode
130− PropertyChanges { target: panelBackground; y: -panelHeight }
Panel/SearchIndicator.qmldeleted−83
@@ -1,83 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Components 0.1
26− property string headerText: i18n.tr("Search")
33− onClicked: search.clicked()
38− objectName: "container"
41− height: parent.height
43− Behavior on opacity {NumberAnimation {}}
44− Behavior on y {NumberAnimation {duration: 300; easing.type: Easing.OutCubic}}
48− source: "graphics/search.png"
49− anchors.verticalCenter: parent.verticalCenter
50− anchors.left: parent.left
51− anchors.leftMargin: units.gu(1)
55− text: search.headerText
56− color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
58− font.capitalization: Font.AllUppercase
59− anchors.left: icon.right
60− anchors.leftMargin: units.gu(1)
61− anchors.verticalCenter: parent.verticalCenter
Panel/graphics/Battery@18.pngdeleted
Binary file not shown.
Panel/graphics/Bluetooth@18.pngdeleted
Binary file not shown.
Panel/graphics/Clock@18.pngdeleted
Binary file not shown.
Panel/graphics/Location@18.pngdeleted
Binary file not shown.
Panel/graphics/Messages@18.pngdeleted
Binary file not shown.
Panel/graphics/Network@18.pngdeleted
Binary file not shown.
Panel/graphics/Sound@18.pngdeleted
Binary file not shown.
Panel/graphics/Sync@18.pngdeleted
Binary file not shown.
Panel/graphics/System@18.pngdeleted
Binary file not shown.
Panel/graphics/Time@18.pngdeleted
Binary file not shown.
Panel/graphics/VerticalDivider@18.pngdeleted
Binary file not shown.
Panel/graphics/handle@12.pngdeleted
Binary file not shown.
Panel/graphics/handle@12.scideleted−5
Panel/graphics/rectangular_dropshadow@30.pngdeleted
Binary file not shown.
Panel/graphics/search@12.pngdeleted
Binary file not shown.
Panel/graphics/time_and_date@18.pngdeleted
Binary file not shown.
@@ -0,0 +1,31 @@
3+Lomiri is the operating environment for everywhere. It is able to span the gaps between touch, mouse, and keyboard; between phones, tablets, and workstations; and look good doing it.
5+If you want to contribute to Lomiri on Ubuntu Touch, you've come to the right place. If you want to package Lomiri for other operating systems, you'll be better served by the main branch on the repository that we're migrating to: https://gitlab.com/ubports/core/lomiri
7+Lomiri has been renamed from Unity8. Most of the software on-device in Ubuntu Touch based on Ubuntu 16.04 is still called `unity8`.
9+## Where to report issues
11+Issues related to the version of Lomiri that currently runs on Ubuntu Touch devices may still be reported on this repository. We will move these reports to the GitLab repository as part of our final migration.
13+## Developing Lomiri on Ubuntu Touch
15+This repository contains the code for Lomiri currently running on Ubuntu Touch. If you would like to modify this version of Lomiri, follow the steps below. If you would like to modify Lomiri in another operating system, check out our new repository: https://gitlab.com/ubports/core/lomiri
17+Lomiri can be built and its test suite run using [`clickable`](https://clickable-ut.dev). This is a convenient method to try out most graphical changes to Lomiri without an annoying redeployment process. If you wish to test your changes on your device or make changes that are more difficult to test without real hardware, check out [Making changes and testing locally on the UBports documentation](https://docs.ubports.com/en/latest/systemdev/testing-locally.html). If not, read on.
19+Before you start, [install Clickable](https://clickable-ut.dev/en/latest/install.html).
21+Now, clone this repository to your computer: `git clone https://github.com/ubports/unity8.git`
23+Move into this directory: `cd unity8`
25+Now you can use the full suite of tools provided by this repository's [clickable.yaml](clickable.yaml). For example:
27+* `clickable ide qtcreator` will open QtCreator with this repository open as a project. You can edit and build the project this way, but running the tests will be a bit difficult.
28+* `clickable build --libs --verbose` will build Lomiri in the same environment as it would receive in Ubuntu Touch.
29+* `clickable test --libs` will run the entire Lomiri test suite. This test suite includes graphical tests (which are run on a virtual, invisible desktop) and non-graphical unit tests. These tests make sure Lomiri functions as prescribed and prevents new bugs from being added. You should run them before you create a PR on this repository. This command takes about 7 minutes on an Intel i7-8550U, so plan your time accordingly and use the next two options to reduce the number of times you need to run the whole test suite...
30+* `clickable ide 'cd build/x86_64-linux-gnu/unity8/ && make tryShell'` and similar commands that replace the `Shell` with another test target defined in [tests/qmltests/CMakeLists.txt](tests/qmltests/CMakeLists.txt) allow trying out some Lomiri components in a mock environment. You can use this to try out your changes to Lomiri as you develop.
31+* `clickable ide 'cd build/x86_64-linux-gnu/unity8/ && make xvfbtestShell'` and similar commands that replace the `Shell` with another test target defined in [tests/qmltests/CMakeLists.txt](tests/qmltests/CMakeLists.txt) allow running a single TestCase. You can remove the `xvfb` part of the make target to run the test case graphically, which might help you see what is causing the test to fail.
@@ -1,635 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Application 0.1
19−import Ubuntu.Components 0.1
20−import Ubuntu.Gestures 0.1
21−import LightDM 0.1 as LightDM
28−import "Components/Math.js" as MathLocal
31−import "Notifications"
32−import Unity.Notifications 1.0 as NotificationBackend
37− // this is only here to select the width / height of the window if not running fullscreen
38− property bool tablet: false
39− width: tablet ? units.gu(160) : units.gu(40)
40− height: tablet ? units.gu(100) : units.gu(71)
42− property real edgeSize: units.gu(2)
43− property url default_background: shell.width >= units.gu(60) ? "graphics/tablet_background.jpg" : "graphics/phone_background.jpg"
44− property url background: default_background
45− readonly property real panelHeight: panel.panelHeight
47− property bool dashShown: dash.shown
48− property bool stageScreenshotsReady: {
49− if (sideStage.shown) {
50− if (mainStage.applications.count > 0) {
51− return mainStage.usingScreenshots && sideStage.usingScreenshots;
53− return sideStage.usingScreenshots;
56− return mainStage.usingScreenshots;
60− property ListModel searchHistory: SearchHistoryModel {}
62− property var applicationManager: ApplicationManagerWrapper {}
64− Component.onCompleted: {
65− applicationManager.sideStageEnabled = Qt.binding(function() { return sideStage.enabled })
67− // FIXME: if application focused before shell starts, shell draws on top of it only.
68− // We should detect already running applications on shell start and bring them to the front.
69− applicationManager.unfocusCurrentApplication();
72− readonly property bool fullscreenMode: {
73− if (greeter.shown || lockscreen.shown) {
75− } else if (mainStage.usingScreenshots) { // Window Manager animating so want to re-evaluate fullscreen mode
76− return mainStage.switchingFromFullscreenToFullscreen;
77− } else if (applicationManager.mainStageFocusedApplication) {
78− return applicationManager.mainStageFocusedApplication.fullscreen;
85− target: applicationManager
86− ignoreUnknownSignals: true
88− // TODO: this should be protected to only unlock for certain applications / certain usecases
89− // potentially only in connection with a notification
91− shell.activateApplication(desktopFile);
95− function activateApplication(desktopFile, argument) {
96− if (applicationManager) {
97− // For newly started applications, as it takes them time to draw their first frame
98− // we add a delay before we hide the animation screenshots to compensate.
99− var addDelay = !applicationManager.getApplicationFromDesktopFile(desktopFile);
102− application = applicationManager.activateApplication(desktopFile, argument);
103− if (application == null) {
106− if (application.stage == ApplicationInfo.MainStage || !sideStage.enabled) {
107− mainStage.activateApplication(desktopFile, addDelay);
109− sideStage.activateApplication(desktopFile, addDelay);
119− Keys.onVolumeUpPressed: volumeControl.volumeUp()
120− Keys.onVolumeDownPressed: volumeControl.volumeDown()
123− if (event.key == Qt.Key_PowerOff) {
130− anchors.fill: parent
131− visible: !(panel.indicators.fullyOpened && shell.width <= panel.indicatorsMenuWidth)
132− && (stages.fullyHidden
133− || (stages.fullyShown && mainStage.usingScreenshots)
134− || !stages.fullyShown && (mainStage.usingScreenshots || (sideStage.shown && sideStage.usingScreenshots)))
138− source: shell.background
139− sourceSize.width: parent.width
140− sourceSize.height: parent.height
141− anchors.fill: parent
145− anchors.fill: parent
147− opacity: dash.disappearingAnimationProgress
153− available: !greeter.shown && !lockscreen.shown
154− hides: [stages, launcher, panel.indicators]
155− shown: disappearingAnimationProgress !== 1.0
156− enabled: disappearingAnimationProgress === 0.0
157− // FIXME: unfocus all applications when going back to the dash
160− shell.applicationManager.unfocusCurrentApplication()
166− topMargin: panel.panelHeight
169− contentScale: 1.0 - 0.2 * disappearingAnimationProgress
170− opacity: 1.0 - disappearingAnimationProgress
171− property real disappearingAnimationProgress: {
172− if (greeter.shown) {
173− return greeter.showProgress;
175− return stagesOuterContainer.showProgress;
179− // FIXME: only necessary because stagesRevealer.animatedProgress and
180− // greeterRevealer.animatedProgress are not animated
181− Behavior on disappearingAnimationProgress { SmoothedAnimation { velocity: 5 }}
187− id: stagesOuterContainer
190− height: parent.height
191− x: launcher.progress
192− Behavior on x {SmoothedAnimation{velocity: 600}}
194− property real showProgress:
195− MathLocal.clamp(1 - (x + stages.x) / shell.width, 0, 1)
202− property bool fullyShown: shown && x == 0 && parent.x == 0
203− property bool fullyHidden: !shown && x == width
204− available: !greeter.shown
205− hides: [launcher, panel.indicators]
208− showAnimation: StandardAnimation { property: "x"; duration: 350; to: 0; easing.type: Easing.OutCubic }
209− hideAnimation: StandardAnimation { property: "x"; duration: 350; to: width; easing.type: Easing.OutCubic }
212− height: parent.height
214− // close the stages when no focused application remains
216− target: shell.applicationManager
217− onMainStageFocusedApplicationChanged: stages.closeIfNoApplications()
218− onSideStageFocusedApplicationChanged: stages.closeIfNoApplications()
219− ignoreUnknownSignals: true
222− function closeIfNoApplications() {
223− if (!shell.applicationManager.mainStageFocusedApplication
224− && !shell.applicationManager.sideStageFocusedApplication
225− && shell.applicationManager.mainStageApplications.count == 0
226− && shell.applicationManager.sideStageApplications.count == 0) {
231− // show the stages when an application gets the focus
233− target: shell.applicationManager
234− onMainStageFocusedApplicationChanged: {
235− if (shell.applicationManager.mainStageFocusedApplication) {
240− onSideStageFocusedApplicationChanged: {
241− if (shell.applicationManager.sideStageFocusedApplication) {
246− ignoreUnknownSignals: true
253− anchors.fill: parent
254− fullyShown: stages.fullyShown
255− shouldUseScreenshots: !fullyShown
256− rightEdgeEnabled: !sideStage.enabled
258− applicationManager: shell.applicationManager
259− rightEdgeDraggingAreaWidth: shell.edgeSize
260− normalApplicationY: shell.panelHeight
266− function showWithoutAnimation() {
267− stages.showWithoutAnimation();
272− // FIXME: workaround the fact that focusing a main stage application
273− // raises its surface on top of all other surfaces including the ones
274− // that belong to side stage applications.
275− onFocusedApplicationChanged: {
276− if (focusedApplication && sideStage.focusedApplication && sideStage.fullyShown) {
277− shell.applicationManager.focusApplication(sideStage.focusedApplication);
285− applicationManager: shell.applicationManager
286− rightEdgeDraggingAreaWidth: shell.edgeSize
287− normalApplicationY: shell.panelHeight
290− if (!shown && mainStage.applications.count == 0) {
294− // FIXME: when hiding the side stage, refocus the main stage
295− // application so that it goes in front of the side stage
296− // application and hides it
297− onFullyShownChanged: {
298− if (!fullyShown && stages.fullyShown && sideStage.focusedApplication != null) {
299− shell.applicationManager.focusApplication(mainStage.focusedApplication);
303− enabled: shell.width >= units.gu(60)
305− fullyShown: stages.fullyShown && shown
306− && sideStage[sideStageRevealer.boundProperty] == sideStageRevealer.openedValue
307− shouldUseScreenshots: !fullyShown || mainStage.usingScreenshots || sideStageRevealer.pressed
309− available: !greeter.shown && !lockscreen.shown && enabled
310− hides: [launcher, panel.indicators]
312− showAnimation: StandardAnimation { property: "x"; duration: 350; to: sideStageRevealer.openedValue; easing.type: Easing.OutQuint }
313− hideAnimation: StandardAnimation { property: "x"; duration: 350; to: sideStageRevealer.closedValue; easing.type: Easing.OutQuint }
316− height: stages.height
317− handleExpanded: sideStageRevealer.pressed
321− id: sideStageRevealer
323− enabled: mainStage.applications.count > 0 && sideStage.applications.count > 0
324− && sideStage.available
325− direction: Qt.RightToLeft
326− openedValue: parent.width - sideStage.width
327− hintDisplacement: units.gu(3)
328− /* The size of the sidestage handle needs to be bigger than the
329− typical size used for edge detection otherwise it is really
332− handleSize: sideStage.shown ? units.gu(4) : shell.edgeSize
333− closedValue: parent.width + sideStage.handleSizeCollapsed
335− x: parent.width - width
336− width: sideStage.width + handleSize * 0.7
337− height: sideStage.height
338− orientation: Qt.Horizontal
344− anchors.top: parent.top
345− anchors.bottom: parent.bottom
346− anchors.right: parent.left
348− width: shell.edgeSize
349− direction: Direction.Leftwards
350− enabled: mainStage.applications.count > 0 || sideStage.applications.count > 0
357− hides: [launcher, panel.indicators, hud]
360− showAnimation: StandardAnimation { property: "opacity"; to: 1 }
361− hideAnimation: StandardAnimation { property: "opacity"; to: 0 }
362− y: panel.panelHeight
363− x: required ? 0 : - width
365− height: parent.height - panel.panelHeight
366− background: shell.background
368− onUnlocked: lockscreen.hide()
369− onCancel: greeter.show()
371− Component.onCompleted: {
372− if (LightDM.Users.count == 1) {
373− LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole))
379− target: LightDM.Greeter
382− if (LightDM.Users.count == 1) {
383− // TODO: There's no better way for now to determine if its a PIN or a passphrase.
384− if (text == "PIN") {
385− lockscreen.alphaNumeric = false
387− lockscreen.alphaNumeric = true
389− lockscreen.placeholderText = i18n.tr("Please enter %1").arg(text);
399− hides: [launcher, panel.indicators, hud]
402− y: panel.panelHeight
404− height: parent.height - panel.panelHeight
406− dragHandleWidth: shell.edgeSize
408− property var previousMainApp: null
409− property var previousSideApp: null
414− // If there is only one user, we start authenticating with that one here.
415− // If there are more users, the Greeter will handle that
416− if (LightDM.Users.count == 1) {
417− LightDM.Greeter.authenticate(LightDM.Users.data(0, LightDM.UserRoles.NameRole));
419− greeter.forceActiveFocus();
420− // FIXME: *FocusedApplication are not updated when unfocused, hence the need to check whether
421− // the stage was actually shown
422− if (mainStage.fullyShown) greeter.previousMainApp = applicationManager.mainStageFocusedApplication;
423− if (sideStage.fullyShown) greeter.previousSideApp = applicationManager.sideStageFocusedApplication;
424− applicationManager.unfocusCurrentApplication();
426− if (greeter.previousMainApp) {
427− applicationManager.focusApplication(greeter.previousMainApp);
428− greeter.previousMainApp = null;
430− if (greeter.previousSideApp) {
431− applicationManager.focusApplication(greeter.previousSideApp);
432− greeter.previousSideApp = null;
437− onUnlocked: greeter.hide()
439− var bgPath = greeter.model.data(uid, LightDM.UserRoles.BackgroundPathRole)
440− shell.background = bgPath ? bgPath : default_background
443− onLeftTeaserPressedChanged: {
444− if (leftTeaserPressed) {
451− anchors.fill: parent
452− blockInput: greeter.shown || lockscreen.shown
458− anchors.fill: parent
462− anchors.fill: parent //because this draws indicator menus
463− indicatorsMenuWidth: parent.width > units.gu(60) ? units.gu(40) : parent.width
467− fullscreenMode: shell.fullscreenMode
468− searchVisible: !greeter.shown && !lockscreen.shown
471− anchors.fill: parent
472− blockInput: panel.indicators.shown
479− width: parent.width > units.gu(60) ? units.gu(40) : parent.width
480− height: parent.height
482− available: !greeter.shown && !panel.indicators.shown && !lockscreen.shown
484− showAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: 0; easing.type: Easing.Linear }
485− hideAnimation: StandardAnimation { property: "y"; duration: hud.showableAnimationDuration; to: hudRevealer.closedValue; easing.type: Easing.Linear }
488− target: shell.applicationManager
489− onMainStageFocusedApplicationChanged: hud.hide()
490− onSideStageFocusedApplicationChanged: hud.hide()
494− anchors.fill: parent
495− blockInput: hud.shown
504− anchors.left: hud.left
505− height: parent.height
506− target: hud.revealerTarget
509− direction: Qt.RightToLeft
510− orientation: Qt.Vertical
511− handleSize: hud.handleHeight
512− onCloseClicked: target.hide()
517− anchors.fill: parent
518− enabled: !panel.indicators.shown
519− applicationIsOnForeground: applicationManager.mainStageFocusedApplication
520− || applicationManager.sideStageFocusedApplication
524− blockInput: launcher.shown
527− bottom: parent.bottom
530− width: launcher.width
536− anchors.top: parent.top
537− anchors.bottom: parent.bottom
539− dragAreaWidth: shell.edgeSize
540− available: !greeter.locked
541− onDashItemSelected: {
543− // Animate if moving between application and dash
544− if (!stages.shown) {
545− dash.setCurrentScope("home.scope", true, false)
547− dash.setCurrentScope("home.scope", false, false)
553− dash.setCurrentScope("applications.scope", true, false)
558− onLauncherApplicationSelected:{
560− shell.activateApplication(desktopFile)
564− panel.indicators.hide()
573− model: NotificationBackend.Model
577− bottom: parent.bottom
578− leftMargin: units.gu(1)
579− rightMargin: units.gu(1)
580− topMargin: panel.panelHeight + units.gu(1)
585− when: overlay.width <= units.gu(60)
586− AnchorChanges { target: notifications; anchors.left: parent.left }
590− when: overlay.width > units.gu(60)
591− AnchorChanges { target: notifications; anchors.left: undefined }
592− PropertyChanges { target: notifications; width: units.gu(38) }
603− bottom: parent.bottom
606− width: shell.edgeSize
613− bottom: parent.bottom
616− width: shell.edgeSize
626− //FIXME: This should be handled in the input stack, keyboard shouldnt propagate
628− anchors.bottom: parent.bottom
629− anchors.left: parent.left
630− anchors.right: parent.right
631− height: shell.applicationManager ? shell.applicationManager.keyboardHeight : 0
633− enabled: shell.applicationManager && shell.applicationManager.keyboardVisible
SideStage/SideStage.qmldeleted−68
@@ -1,68 +0,0 @@
2− * Copyright (C) 2013 Canonical, Ltd.
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.
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.
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/>.
18−import Ubuntu.Application 0.1
19−import Ubuntu.Components 0.1
20−import "../Components"
25− type: ApplicationInfo.SideStage
26− property real handleSizeCollapsed: units.gu(2.5)
27− property real handleSizeExpanded: units.gu(4)
28− property bool handleExpanded
30− /* FIXME: workaround so that when a main stage app goes fullscreen
31− the sidestage's top is not transparent. Proper fix would be to
32− resize the side stage app.
35− id: backgroundBeneathPanel
41− height: shell.panelHeight
42− color: background.color
51− visible: stage.usingScreenshots
56− objectName: "sideStageHandle"
60− bottom: parent.bottom
64− width: handleExpanded ? handleSizeExpanded : handleSizeCollapsed
65− Behavior on width { NumberAnimation { easing.type: Easing.OutQuart} }
SideStage/graphics/sidestage_handle@20.pngdeleted
Binary file not shown.
@@ -1,75 +0,0 @@
5−NUM_JOBS=$(( `grep -c ^processor /proc/cpuinfo` + 1 ))
6−CODE_DIR=$( dirname `readlink -f $0` )
9− echo "usage: build [OPTIONS] [BUILD_TYPE]\n" >&2
10− echo "Script to build the shell. If BUILD_TYPE is not specified, it defaults to \"debug\".\n" >&2
12− echo " -s, --setup Setup the build environment and branch Unity" >&2
13− echo " -c, --clean Clean the build tree before building" >&2
18−ARGS=`getopt -n$0 -u -a --longoptions="setup,clean,help" -o "sch" -- "$@"`
25− -s|--setup) SETUP=true;;
26− -c|--clean) CLEAN=true;;
36−[ $# -eq 1 ] && BUILD_TYPE="$1"
38−install_dependencies() {
39− [ -f /etc/apt/sources.list.d/ubuntu-unity-next-${DISTRIB_CODENAME}.list ] || sudo add-apt-repository ppa:ubuntu-unity/next || exit 1
40− sudo apt-get update || exit 4
41− echo "Installing Unity 8 dependencies.."
42− sudo apt-get install devscripts \
45− qtdeclarative5-ubuntu-ui-toolkit-plugin \
46− qtdeclarative5-dee-plugin \
47− ubuntu-mobile-icons \
48− unity-notifications-impl-1 \
50− unity-lens-applications \
55− [ ! -f unity8-build-deps*deb -o $CODE_DIR/debian/control -nt unity8-build-deps*deb ] && mk-build-deps --install --root-cmd sudo $CODE_DIR/debian/control
58−if [ -f "/usr/bin/ninja" ] ; then
60− BUILD_COMMAND="ninja -j$NUM_JOBS"
63− BUILD_COMMAND="make -j$NUM_JOBS"
69− if $CLEAN; then rm -rf builddir; fi
73− cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE $CODE_DIR ${GENERATOR} || exit 6
74− ${BUILD_COMMAND} || exit 7
@@ -0,0 +1,82 @@
4+# Copyright (C) 2017 Canonical Ltd
6+# This program is free software: you can redistribute it and/or modify
7+# it under the terms of the GNU General Public License version 3 as
8+# published by the Free Software Foundation.
10+# This program is distributed in the hope that it will be useful,
11+# but WITHOUT ANY WARRANTY; without even the implied warranty of
12+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+# GNU General Public License for more details.
15+# You should have received a copy of the GNU General Public License
16+# along with this program. If not, see <http://www.gnu.org/licenses/>.
21+NUM_JOBS=$(( `grep -c ^processor /proc/cpuinfo` + 1 ))
22+CODE_DIR=$( dirname `readlink -f $0` )
25+ echo "usage: build [OPTIONS] [BUILD_TYPE]\n" >&2
26+ echo "Script to build the shell. If BUILD_TYPE is not specified, it defaults to \"debug\".\n" >&2
28+ echo " -c, --clean Clean the build tree before building" >&2
33+ARGS=`getopt -n$0 -u -a --longoptions="setup,clean,help" -o "sch" -- "$@"`
40+ -c|--clean) CLEAN=true;;
50+[ $# -eq 1 ] && BUILD_TYPE="$1"
53+ if [ ! -f control -o $CODE_DIR/debian/control -nt control ]; then
54+ sed 's/\:native//g' $CODE_DIR/debian/control > control
55+ mk-build-deps --install --root-cmd sudo control
59+if [ -f "/usr/bin/ccache" ] ; then
60+ if [ "x$CC" = "x" ]; then
61+ export CC='ccache gcc'
63+ if [ "x$CXX" = "x" ] ; then
64+ export CXX='ccache g++'
68+if [ -f "/usr/bin/ninja" ] ; then
70+ # Ninja does not need -j, it parallelizes automatically.
71+ BUILD_COMMAND="ninja"
74+ BUILD_COMMAND="make -j$NUM_JOBS"
77+if $CLEAN; then rm -rf builddir; fi
81+cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE $CODE_DIR ${GENERATOR} || exit 6
82+${BUILD_COMMAND} || exit 7
clickable.yamlnew file+153
@@ -0,0 +1,153 @@
1+clickable_minimum_required: '7'
3+build: echo Run \'clickable build --libs --verbose\' to build && false
9+ test: make xvfballtests -j${NUM_PROCS}
21+ - gsettings-ubuntu-schemas
22+ - libandroid-properties-dev
23+ - libconnectivity-qt1-dev
30+ - libgnome-desktop-3-12
31+ - libgnome-desktop-3-dev
32+ - libgsettings-qt-dev
34+ - liblightdm-qt5-3-dev
40+ - libqt5xmlpatterns5-dev
43+ - libsystemsettings-dev
44+ - libubuntu-app-launch2-dev
45+ - libubuntu-download-manager-common-dev
46+ - libubuntugestures5-dev
47+ - libubuntugestures5-private-dev
51+ - libusermetricsoutput1-dev
57+ - python3-setuptools:native
58+ - qml-module-qt-labs-folderlistmodel
59+ - qml-module-qt-labs-settings
60+ - qml-module-qtmultimedia
61+ - qml-module-qtqml-statemachine
62+ - qml-module-qtquick-layouts
63+ - qml-module-qtquick-xmllistmodel
64+ - qml-module-qtquick2
65+ - qml-module-qtsysteminfo
67+ - qml-module-ubuntu-components
68+ - qml-module-ubuntu-layouts
69+ - qml-module-ubuntu-settings-components
70+ - qml-module-ubuntu-test
73+ - qtbase5-private-dev
76+ - qtdeclarative5-dev-tools
77+ - qtdeclarative5-private-dev
78+ - qtdeclarative5-ubuntu-content1
79+ - ttf-ubuntu-font-family
93+ - gsettings-ubuntu-schemas
94+ - libandroid-properties-dev
95+ - libconnectivity-qt1-dev
102+ - libgnome-desktop-3-12
103+ - libgnome-desktop-3-dev
104+ - libgsettings-qt-dev
106+ - liblightdm-qt5-3-dev
112+ - libqt5xmlpatterns5-dev
113+ - libqtdbusmock1-dev
114+ - libqtdbustest1-dev
115+ - libsystemsettings-dev
116+ - libubuntu-app-launch2-dev
117+ - libubuntu-download-manager-common-dev
118+ - libubuntugestures5-dev
119+ - libubuntugestures5-private-dev
123+ - libusermetricsoutput1-dev
129+ - python3-setuptools:native
130+ - qml-module-qt-labs-folderlistmodel
131+ - qml-module-qt-labs-settings
132+ - qml-module-qtmultimedia
133+ - qml-module-qtqml-statemachine
134+ - qml-module-qtquick-layouts
135+ - qml-module-qtquick-xmllistmodel
136+ - qml-module-qtquick2
137+ - qml-module-qtsysteminfo
139+ - qml-module-ubuntu-components
140+ - qml-module-ubuntu-layouts
141+ - qml-module-ubuntu-settings-components
142+ - qml-module-ubuntu-test
145+ - qtbase5-private-dev
147+ - qtdeclarative5-dev
148+ - qtdeclarative5-dev-tools
149+ - qtdeclarative5-private-dev
150+ - qtdeclarative5-ubuntu-content1
151+ - ttf-ubuntu-font-family
152+ - ubports-wallpapers
cmake/modules/Plugins.cmakedeleted−48
@@ -1,48 +0,0 @@
1−# Creates targets for copying and installing qmlfiles and generating the qmltypes file for a plugin
3−# export_qmlplugin(plugin version sub_path [TARGETS target1 [target2 ...]])
5−# TARGETS additional install targets (eg the plugin shared object)
7−# Two targets will be created:
8−# - plugin-qmlfiles - Copies the qml files (*.qml, *.js, qmldir) into the shadow build folder.
9−# - plugin-qmltypes - Generates the qmltypes file in the shadow build folder.
12−macro(export_qmlplugin PLUGIN VERSION PLUGIN_SUBPATH)
13− set(multi_value_keywords TARGETS)
14− cmake_parse_arguments(qmlplugin "" "" "${multi_value_keywords}" ${ARGN})
22− # copy the qmldir file
23− add_custom_target(${PLUGIN}-qmlfiles ALL
24− COMMAND cp ${QMLFILES} ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}
28− # create the plugin.qmltypes file
29− add_custom_target(${PLUGIN}-qmltypes ALL
30− COMMAND qmlplugindump -notrelocatable ${PLUGIN} ${VERSION} ${CMAKE_BINARY_DIR}/plugins > ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
32− add_dependencies(${PLUGIN}-qmltypes ${PLUGIN}-qmlfiles ${qmlplugin_TARGETS})
34− # install the qmldir file.
35− install(FILES ${QMLFILES}
36− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/${PLUGIN_SUBPATH}
39− # install the qmltypes file.
40− install(FILES ${CMAKE_BINARY_DIR}/plugins/${PLUGIN_SUBPATH}/plugin.qmltypes
41− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/${PLUGIN_SUBPATH}
44− # install the additional targets
45− install(TARGETS ${qmlplugin_TARGETS}
46− DESTINATION ${SHELL_PRIVATE_LIBDIR}/qml/${PLUGIN_SUBPATH}
48−endmacro(export_qmlplugin)
cmake/modules/QmlTest.cmake+469−101
@@ -1,121 +1,489 @@
1−# add_qml_test(path component_name [NO_ADD_TEST] [NO_TARGETS]
1+# If you need to override the qmlscene or qmltestrunner executables,
2−# [TARGETS target1 [target2 [...]]]
2+# create the corresponding executable target.
3−# [IMPORT_PATHS import_path1 [import_path2 [...]]
3+
4−# [PROPERTIES prop1 value1 [prop2 value2 [...]]])
4+# These functions respect the global STDOUT_LOGGER and ARTIFACTS_DIR variables.
6+# You can use those with cmake_parse_arguments
7+# if you need to wrap and mangle arguments.
8+set(QMLTEST_OPTIONS ADD_TEST CACHE INTERNAL "")
9+set(QMLTEST_SINGLE ITERATIONS ARG_PREFIX CACHE INTERNAL "")
10+set(QMLTEST_MULTI ARGS ENVIRONMENT DEPENDS IMPORT_PATHS TARGETS CACHE INTERNAL "")
12+# import_executables(name1 [name2 [...]]
13+# [OPTIONAL] # continue when not found
6−# NO_ADD_TEST will prevent adding the test to the "test" target
16+# This will find the named executables and import them
7−# NO_TARGETS will prevent adding the test to any targets
17+# to an imported target of the same name.
8−# TARGETS lists the targets the test should be added to
18+
9−# IMPORT_PATHS will pass those paths to qmltestrunner as "-import" arguments
19+function(import_executables)
10−# PROPERTIES will be set on the target and test target. See CMake's set_target_properties()
20+ cmake_parse_arguments(QMLTEST "OPTIONAL" "" "" ${ARGN})
22+ foreach(NAME ${QMLTEST_UNPARSED_ARGUMENTS})
23+ if(NOT TARGET ${NAME})
24+ add_executable(${NAME} IMPORTED GLOBAL)
25+ find_program(${NAME}_exe ${NAME})
27+ if(NOT QMLTEST_OPTIONAL AND NOT ${NAME}_exe)
28+ message(FATAL_ERROR "Could not locate ${NAME}.")
29+ elseif(NOT ${NAME}_exe)
30+ message(STATUS "Could not locate ${NAME}, skipping.")
32+ set_target_properties(${NAME} PROPERTIES IMPORTED_LOCATION ${${NAME}_exe})
39+# add_qml_test(path component_name
12−# Two targets will be created:
43+# Add test targets for ${component_name} under ${path}. It's assumed
13−# - testComponentName - Runs the test with qmltestrunner
44+# that the test file is named ${path}/tst_${component_name}.qml.
14−# - tryComponentName - Runs the test with uqmlscene, for manual interaction
45+#
46+# This function wraps add_manual_qml_test and add_qml_unittest,
47+# see below for available arguments.
49+function(add_qml_test PATH COMPONENT_NAME)
50+ cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
53+ add_qml_unittest(${ARGV})
54+ add_manual_qml_test(${ARGV})
58+# add_qml_test_data(path component_name
62+# Install file called ${component_name} (or ${component_name}.qml) under
65+function(add_qml_test_data PATH COMPONENT_NAME)
66+ cmake_parse_arguments(TEST "" "DESTINATION" "" ${ARGN})
68+ set(filename "${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/${COMPONENT_NAME}")
70+ if (IS_DIRECTORY "${filename}")
71+ # As a convenience, allow specifying a directory and we will install
72+ # all files in the dir. We do it this way rather than passing
73+ # DIRECTORY to install() because we want to process any qml files.
74+ file(GLOB subfiles RELATIVE "${filename}" "${filename}/*")
75+ foreach(subfile ${subfiles})
76+ add_qml_test_data("${PATH}/${COMPONENT_NAME}" "${subfile}")
81+ if (NOT EXISTS "${filename}")
82+ set(filename "${filename}.qml")
83+ set(COMPONENT_NAME "${COMPONENT_NAME}.qml")
86+ if ("${filename}" MATCHES "\\.qml$")
87+ file(READ "${filename}" contents)
88+ string(REGEX REPLACE "(\"[./]*)/qml(/|\")" "\\1\\2" contents "${contents}")
89+ # this is for (at least) cardcreatortest which pulls in an architecture-specific
90+ # import into the plugins directory (which is a 'qml' once installed).
91+ string(REGEX REPLACE "(import \"[./]*)/plugins(/|\")" "\\1/qml\\2" contents "${contents}")
92+ set(filename "${CMAKE_CURRENT_BINARY_DIR}/${PATH}/${COMPONENT_NAME}")
93+ file(WRITE "${filename}" "${contents}")
96+ if (TEST_DESTINATION)
97+ set(DESTINATION "${TEST_DESTINATION}")
99+ file(RELATIVE_PATH relcurpath "${CMAKE_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}")
100+ set(DESTINATION "${SHELL_APP_DIR}/${relcurpath}/${PATH}")
103+ install(FILES "${filename}" DESTINATION "${DESTINATION}")
107+# add_qml_unittest(path component_name
111+# Add test targets for ${component_name} under ${path}. It's assumed
112+# that the test file is named ${path}/tst_${component_name}.qml.
16−# To change/set a default value for the whole test suite, prior to calling add_qml_test, set:
114+# This function wraps add_executable_test, see below for available arguments.
17−# qmltest_DEFAULT_NO_ADD_TEST (default: FALSE)
115+
18−# qmltest_DEFAULT_TARGETS
116+function(add_qml_unittest PATH COMPONENT_NAME)
19−# qmltest_DEFAULT_IMPORT_PATHS
117+ import_executables(qmltestrunner)
20−# qmltest_DEFAULT_PROPERTIES
118+
21−
119+ add_executable_test(${COMPONENT_NAME} qmltestrunner
22−find_program(qmltestrunner_exe qmltestrunner)
120+ ${ARGN}
23−
121+ ARGS -input ${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/tst_${COMPONENT_NAME}.qml ${QMLTEST_ARGS}
24−if(NOT qmltestrunner_exe)
25− msg(FATAL_ERROR "Could not locate qmltestrunner.")
28−set(qmlscene_exe ${CMAKE_BINARY_DIR}/tests/uqmlscene/uqmlscene)
30−macro(add_manual_qml_test SUBPATH COMPONENT_NAME)
31− set(options NO_ADD_TEST NO_TARGETS)
32− set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
34− cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
36− set(qmlscene_TARGET try${COMPONENT_NAME})
37− set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
39− set(qmlscene_imports "")
40− if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")
41− foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})
42− list(APPEND qmlscene_imports "-I")
43− list(APPEND qmlscene_imports ${IMPORT_PATH})
44− endforeach(IMPORT_PATH)
45− elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
46− foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
47− list(APPEND qmlscene_imports "-I")
48− list(APPEND qmlscene_imports ${IMPORT_PATH})
49− endforeach(IMPORT_PATH)
53− env ${qmltest_ENVIRONMENT}
54− ${qmlscene_exe} ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
57− add_custom_target(${qmlscene_TARGET} ${qmlscene_command})
59−endmacro(add_manual_qml_test)
124+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/tst_${COMPONENT_NAME}.qml")
125+ add_qml_test_data("${PATH}" "tst_${COMPONENT_NAME}.qml")
61−macro(add_qml_test SUBPATH COMPONENT_NAME)
130+# add_manual_qml_test(path component_name
62− set(options NO_ADD_TEST NO_TARGETS)
131+# [...]
63− set(multi_value_keywords IMPORT_PATHS TARGETS PROPERTIES ENVIRONMENT)
132+# )
134+# Add manual test targets for ${component_name} under ${path}. It's assumed
135+# that the test file is named ${path}/tst_${component_name}.qml.
137+# This function wraps add_manual_test, see below for available arguments.
65− cmake_parse_arguments(qmltest "${options}" "" "${multi_value_keywords}" ${ARGN})
139+function(add_manual_qml_test PATH COMPONENT_NAME)
140+ import_executables(qmlscene)
141+ cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
67− set(qmltest_TARGET test${COMPONENT_NAME})
143+ add_manual_test(${COMPONENT_NAME} qmlscene
68− set(qmltest_FILE ${SUBPATH}/tst_${COMPONENT_NAME})
144+ ${ARGN}
145+ ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/tst_${COMPONENT_NAME}.qml ${QMLTEST_ARGS}
70− set(qmltestrunner_imports "")
148+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${PATH}/tst_${COMPONENT_NAME}.qml")
71− if(NOT "${qmltest_IMPORT_PATHS}" STREQUAL "")
149+ add_qml_test_data("${PATH}" "tst_${COMPONENT_NAME}.qml")
72− foreach(IMPORT_PATH ${qmltest_IMPORT_PATHS})
73− list(APPEND qmltestrunner_imports "-import")
74− list(APPEND qmltestrunner_imports ${IMPORT_PATH})
75− endforeach(IMPORT_PATH)
76− elseif(NOT "${qmltest_DEFAULT_IMPORT_PATHS}" STREQUAL "")
77− foreach(IMPORT_PATH ${qmltest_DEFAULT_IMPORT_PATHS})
78− list(APPEND qmltestrunner_imports "-import")
79− list(APPEND qmltestrunner_imports ${IMPORT_PATH})
80− endforeach(IMPORT_PATH)
154+# add_executable_test(target component_name
155+# [...] # see doc for add_manual_qml_test for common arguments
156+# [ADD_TEST] # whether to add to the "test" target
157+# [ARG_PREFIX arg_prefix] # prefix logging arguments with this string
158+# [ARGS] arg1 [arg2 [...]] # pass these arguments to the test executable
159+# [TARGETS target1 [target2 [...]]] # make the listed targets depend on this test
160+# # if a corresponding xvfbtarget1, xvfbtarget2 etc. exists,
161+# # this test running under xvfb will be added as a dependency
163+# [ITERATIONS count] # run this test as a benchmark for ${count} iterations
166+# Logging options in the standard form of "-o filename,format"
167+# will be appended to the arguments list, prefixed with ARG_PREFIX.
168+# XUnitXML files will be stored in current binary dir.
170+# Three targets will be created:
171+# - test${component_name} - Runs the test
172+# - xvfbtest${component_name} - Runs the test under xvfb
173+# - gdbtest${component_name} - Runs the test under gdb
175+function(add_executable_test COMPONENT_NAME TARGET)
176+ import_executables(gdb xvfb-run OPTIONAL)
178+ cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
181+ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
182+ set(file_logger -o ${CMAKE_CURRENT_BINARY_DIR}/test${COMPONENT_NAME}.xml,xunitxml)
184+ bake_arguments("${QMLTEST_ARG_PREFIX}" args ${iterations} ${file_logger} ${STDOUT_LOGGER})
83 set(qmltest_command
186 set(qmltest_command
84− env ${qmltest_ENVIRONMENT}
187+ $<TARGET_FILE:${TARGET}>
85− ${qmltestrunner_exe} -input ${CMAKE_CURRENT_SOURCE_DIR}/${qmltest_FILE}.qml
188+ ${QMLTEST_ARGS}
86− ${qmltestrunner_imports}
189+ ${args}
87− -o ${CMAKE_BINARY_DIR}/${qmltest_TARGET}.xml,xunitxml
90− add_custom_target(${qmltest_TARGET} ${qmltest_command})
92− if(NOT "${qmltest_PROPERTIES}" STREQUAL "")
192+ add_qmltest_target(test${COMPONENT_NAME} ${TARGET}
93− set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})
193+ COMMAND ${qmltest_command}
94− elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")
194+ ${depends}
95− set_target_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})
195+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
201+ add_qmltest_target(xvfbtest${COMPONENT_NAME} ${TARGET}
202+ COMMAND $<TARGET_FILE:xvfb-run> --server-args "-screen 0 1024x768x24" --auto-servernum ${qmltest_command}
204+ ENVIRONMENT QT_QPA_PLATFORM=xcb QML2_IMPORT_PATH=${imports} LD_PRELOAD=/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/mesa/libGL.so.1 ${QMLTEST_ENVIRONMENT}
205+ TARGETS ${xvfb_targets}
210+ add_qmltest_target(gdbtest${COMPONENT_NAME} ${TARGET}
211+ COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltest_command}
213+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
219+# add_manual_test(target component_name
220+# [DEPENDS target1 [target2 [...]]] # make this test depend on the specified targets
221+# [IMPORT_PATHS import_path1 [import_path2 [...]] # use these QML import paths
222+# # (they're searched first to last)
223+# [ENVIRONMENT var1=value1 [var2=value2 [...]]] # set these environment variables
226+# Two targets will be created:
227+# - try${component_name} - Runs the test for manual interaction
228+# - gdbtry${component_name} - Runs the test under gdb
98− if("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")
230+function(add_manual_test COMPONENT_NAME TARGET)
99− add_test(${qmltest_TARGET} ${qmltest_command})
231+ import_executables(gdb OPTIONAL)
101− if(NOT "${qmltest_UNPARSED_ARGUMENTS}" STREQUAL "")
233+ cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "${QMLTEST_MULTI}" ${ARGN})
102− set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_PROPERTIES})
234+ mangle_arguments()
103− elseif(NOT "${qmltest_DEFAULT_PROPERTIES}" STREQUAL "")
235+
104− set_tests_properties(${qmltest_TARGET} PROPERTIES ${qmltest_DEFAULT_PROPERTIES})
236+ bake_arguments("${QMLTEST_ARG_PREFIX}" args -qmljsdebugger=port:3768,3800)
239+ $<TARGET_FILE:${TARGET}>
244+ add_qmltest_target(try${COMPONENT_NAME} ${TARGET}
245+ COMMAND ${qmltry_command}
247+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
251+ add_qmltest_target(gdbtry${COMPONENT_NAME} ${TARGET}
252+ COMMAND $<TARGET_FILE:gdb> -ex run -args ${qmltry_command}
254+ ENVIRONMENT QML2_IMPORT_PATH=${imports} ${QMLTEST_ENVIRONMENT}
260+# add_meta_test(target)
262+# Adds a test target that will run one of our "meta" test targets, like
263+# xvfbuitests. This script will run the specified suite of tests on an
266+function(add_meta_test TARGET_NAME)
267+ cmake_parse_arguments(TEST "SERIAL" "" "DEPENDS" ${ARGN})
269+ add_custom_target(${TARGET_NAME})
271+ set(filename "${CMAKE_BINARY_DIR}/tests/scripts/${TARGET_NAME}.sh")
273+ file(WRITE "${filename}" "#!/bin/sh\n\n")
275+ file(WRITE "${filename}" "#!/usr/bin/parallel --shebang --no-notice\n\n")
278+ add_meta_dependencies(${TARGET_NAME} DEPENDS ${TEST_DEPENDS})
279+ # else we will write the rest of the script as we add cmake targets
281+ install(FILES "${filename}"
282+ PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
283+ GROUP_EXECUTE GROUP_READ
284+ WORLD_EXECUTE WORLD_READ
285+ DESTINATION "${SHELL_PRIVATE_LIBDIR}/tests/scripts"
290+################### INTERNAL ####################
292+function(install_test_script TARGET_NAME)
293+ cmake_parse_arguments(TEST "" "" "COMMAND;ENVIRONMENT" ${ARGN})
295+ # Now write the above test into a shell script that we can run on an
297+ set(script "#!/bin/sh\n\nset -x\n\n")
298+ foreach(ONE_ENV ${TEST_ENVIRONMENT})
299+ set(script "${script}export ${ONE_ENV}\n")
301+ set(script "${script}export UNITY_TESTING_DATADIR=\"${CMAKE_INSTALL_PREFIX}/${SHELL_APP_DIR}\"\n")
302+ set(script "${script}export UNITY_TESTING_LIBDIR=\"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}\"\n")
303+ set(script "${script}\n")
304+ set(script "${script}XML_ARGS=\n")
305+ set(script "${script}if [ -n \"\$ARTIFACTS_DIR\" ]; then\n")
306+ set(script "${script} XML_ARGS=\"@XML_ARGS@\"\n")
307+ set(script "${script} mkdir -p \"@XML_DIR@\"\n")
308+ set(script "${script} touch \"@XML_FILE@\"\n")
309+ set(script "${script}fi\n")
310+ set(script "${script}\n")
311+ foreach(ONE_CMD ${TEST_COMMAND})
312+ set(script "${script}'${ONE_CMD}' ")
314+ set(script "${script}\"\$@\"") # Allow passing arguments if desired
316+ set(filename "${CMAKE_BINARY_DIR}/tests/scripts/${TARGET_NAME}.sh")
318+ # Generate script to file then read it back to resolve any generator
319+ # expressions before we try to replace paths.
321+ OUTPUT "${filename}"
325+ # Do replacement at install time to save needless work and to make sure
326+ # we are modifying file after generate step above (which doesn't happen
327+ # immediately). We can't use a custom-defined function or macro here...
328+ # So instead we use a giant ugly code block.
330+ # START OF CODE BLOCK --------------------------------------------------
332+ file(READ \"${filename}\" replacestr)
334+ # Now some replacements...
335+ # tests like to write xml output to our builddir; we don't need that, but we do want them in ARTIFACTS_DIR
336+ string(REGEX MATCH \"( '--parameter')? '-o'( '--parameter')? '[^']*,xunitxml' \" xmlargs \"\${replacestr}\")
337+ string(REGEX REPLACE \"( '--parameter')? '-o'( '--parameter')? '[^']*,xunitxml' \" \" \\\$XML_ARGS \" replacestr \"\${replacestr}\")
338+ string(REGEX REPLACE \"'[^']*/tests/\" \"'\\\$ARTIFACTS_DIR/tests/\" xmlargs \"\${xmlargs}\")
339+ string(REGEX REPLACE \".*'([^']*),xunitxml'.*\" \"\\\\1\" xmlfile \"\${xmlargs}\")
340+ string(REGEX REPLACE \"(.*)/[^/]*\" \"\\\\1\" xmldir \"\${xmlfile}\")
341+ string(REGEX REPLACE \"'\" \"\" xmlargs \"\${xmlargs}\") # strip single quotes
342+ string(REGEX REPLACE \"@XML_ARGS@\" \"\${xmlargs}\" replacestr \"\${replacestr}\")
343+ string(REGEX REPLACE \"@XML_DIR@\" \"\${xmldir}\" replacestr \"\${replacestr}\")
344+ string(REGEX REPLACE \"@XML_FILE@\" \"\${xmlfile}\" replacestr \"\${replacestr}\")
345+ # replace build/source roots with their install paths
346+ string(REPLACE \"${CMAKE_BINARY_DIR}/libs\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}\" replacestr \"\${replacestr}\")
347+ string(REPLACE \"${CMAKE_BINARY_DIR}/plugins\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_INSTALL_QML}\" replacestr \"\${replacestr}\")
348+ string(REPLACE \"${CMAKE_BINARY_DIR}/tests/libs\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}/tests/libs\" replacestr \"\${replacestr}\")
349+ string(REPLACE \"${CMAKE_BINARY_DIR}/tests/mocks\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_INSTALL_QML}/mocks\" replacestr \"\${replacestr}\")
350+ string(REPLACE \"${CMAKE_BINARY_DIR}/tests/plugins\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}/tests/plugins\" replacestr \"\${replacestr}\")
351+ string(REPLACE \"${CMAKE_BINARY_DIR}/tests/qmltests\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}/tests/qmltests\" replacestr \"\${replacestr}\")
352+ string(REPLACE \"${CMAKE_BINARY_DIR}/tests/uqmlscene\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}\" replacestr \"\${replacestr}\")
353+ string(REPLACE \"${CMAKE_BINARY_DIR}/tests/utils/modules\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_INSTALL_QML}/utils\" replacestr \"\${replacestr}\")
354+ string(REPLACE \"${CMAKE_SOURCE_DIR}/tests/plugins\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_APP_DIR}/tests/plugins\" replacestr \"\${replacestr}\")
355+ string(REPLACE \"${CMAKE_SOURCE_DIR}/tests/qmltests\" \"${CMAKE_INSTALL_PREFIX}/${SHELL_APP_DIR}/tests/qmltests\" replacestr \"\${replacestr}\")
357+ file(WRITE \"${filename}\" \"\${replacestr}\")
359+ # END OF CODE BLOCK --------------------------------------------------
361+ install(FILES "${filename}"
362+ PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE
363+ GROUP_EXECUTE GROUP_READ
364+ WORLD_EXECUTE WORLD_READ
365+ DESTINATION "${SHELL_PRIVATE_LIBDIR}/tests/scripts"
369+function(add_meta_dependencies UPSTREAM_TARGET)
370+ cmake_parse_arguments(TEST "" "" "DEPENDS" ${ARGN})
372+ foreach(depend ${TEST_DEPENDS})
373+ add_dependencies(${UPSTREAM_TARGET} ${depend})
375+ # add depend to the meta test script that we will install on system
376+ set(filename "${CMAKE_BINARY_DIR}/tests/scripts/${UPSTREAM_TARGET}.sh")
377+ if (EXISTS "${filename}")
378+ file(APPEND "${filename}" "${CMAKE_INSTALL_PREFIX}/${SHELL_PRIVATE_LIBDIR}/tests/scripts/${depend}.sh \"\$@\" 2>&1\n")
106− endif("${qmltest_NO_ADD_TEST}" STREQUAL FALSE AND NOT "${qmltest_DEFAULT_NO_ADD_TEST}" STREQUAL "TRUE")
380+ endforeach()
108− if("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
382+
109− if(NOT "${qmltest_TARGETS}" STREQUAL "")
383+# add_qmltest_target(target_name target
110− foreach(TARGET ${qmltest_TARGETS})
384+# COMMAND test_exe [arg1 [...]] # execute this test with arguments
111− add_dependencies(${TARGET} ${qmltest_TARGET})
385+# [...] # see above for available arguments:
112− endforeach(TARGET)
386+# # ADD_TEST, ENVIRONMENT, DEPENDS and TARGETS
113− elseif(NOT "${qmltest_DEFAULT_TARGETS}" STREQUAL "")
387+# )
114− foreach(TARGET ${qmltest_DEFAULT_TARGETS})
388+
115− add_dependencies(${TARGET} ${qmltest_TARGET})
389+function(add_qmltest_target TARGET_NAME TARGET)
116− endforeach(TARGET)
390+ cmake_parse_arguments(QMLTEST "${QMLTEST_OPTIONS}" "${QMLTEST_SINGLE}" "COMMAND;${QMLTEST_MULTI}" ${ARGN})
393+ # Additional arguments
394+ string(TOLOWER "${CMAKE_GENERATOR}" cmake_generator_lower)
395+ if(cmake_generator_lower STREQUAL "unix makefiles")
396+ set(function "$(FUNCTION)")
399+ add_custom_target(${TARGET_NAME}
400+ env ${QMLTEST_ENVIRONMENT}
401+ ${QMLTEST_COMMAND} ${function}
402+ DEPENDS ${TARGET} ${QMLTEST_DEPENDS}
405+ install_test_script(${TARGET_NAME}
406+ ENVIRONMENT ${QMLTEST_ENVIRONMENT}
407+ COMMAND ${QMLTEST_COMMAND}
410+ if(QMLTEST_ADD_TEST)
413+ COMMAND ${QMLTEST_COMMAND}
416+ foreach(ENV ${QMLTEST_ENVIRONMENT})
417+ set_property(TEST ${TARGET_NAME} APPEND PROPERTY ENVIRONMENT ${ENV})
420+ set_property(TEST ${TARGET_NAME} APPEND PROPERTY DEPENDS ${TARGET})
421+ foreach(DEPEND ${DEPENDS})
422+ set_property(TEST ${TARGET_NAME} APPEND PROPERTY DEPENDS ${DEPEND})
426+ foreach(UPSTREAM_TARGET ${QMLTEST_TARGETS})
427+ add_meta_dependencies(${UPSTREAM_TARGET} DEPENDS ${TARGET_NAME})
432+# mangle_arguments(${ARGN})
434+# Verify there were no unparsed arguments and
435+# mangle the known ones for further processing.
437+macro(mangle_arguments)
438+ if(QMLTEST_UNPARSED_ARGUMENTS)
439+ message(FATAL_ERROR "Unexpected arguments: ${QMLTEST_UNPARSED_ARGUMENTS}")
442+ if(QMLTEST_ADD_TEST)
443+ set(add_test ADD_TEST)
446+ if(QMLTEST_IMPORT_PATHS)
447+ string(REPLACE ";" ":" imports "${QMLTEST_IMPORT_PATHS}")
450+ if(QMLTEST_ITERATIONS)
451+ set(iterations -iterations ${QMLTEST_ITERATIONS})
455+ set(depends DEPENDS ${QMLTEST_DEPENDS})
459+ set(targets TARGETS ${QMLTEST_TARGETS})
462+ set(xvfb_targets "")
463+ foreach(target ${QMLTEST_TARGETS})
464+ if(TARGET xvfb${target})
465+ list(APPEND xvfb_targets xvfb${target})
118− endif("${qmltest_NO_TARGETS}" STREQUAL "FALSE")
467+ endforeach()
468+ set(xvfb_targets "${xvfb_targets}" PARENT_SCOPE)
120− add_manual_qml_test(${SUBPATH} ${COMPONENT_NAME} ${ARGN})
472+# bake_arguments(prefix output
121−endmacro(add_qml_test)
473+# arg1 [arg2 [...]]
476+# If set, add the argument prefix before every passed
477+# argument and store the result in ${OUTPUT} variable.
479+function(bake_arguments PREFIX OUTPUT)
483+ foreach(arg ${ARGN})
484+ list(APPEND args ${PREFIX})
485+ list(APPEND args ${arg})
488+ set(${OUTPUT} "${args}" PARENT_SCOPE)
cmake/modules/autopilot.cmake+7−1
@@ -2,9 +2,15 @@ add_custom_target(autopilot)
3function(declare_autopilot_test TEST_NAME TEST_SUITE WORKING_DIR)
3function(declare_autopilot_test TEST_NAME TEST_SUITE WORKING_DIR)
4 add_custom_target(autopilot-${TEST_NAME}
4 add_custom_target(autopilot-${TEST_NAME}
5− COMMAND autopilot run ${TEST_SUITE}
5+ COMMAND UNITY_TESTING=1 LANG=C QML2_IMPORT_PATH=${SHELL_INSTALL_QML}/mocks python3 -m autopilot.run run ${TEST_SUITE}
6 WORKING_DIRECTORY ${WORKING_DIR}
6 WORKING_DIRECTORY ${WORKING_DIR}
10+ add_custom_target(fake_install
11+ COMMAND cmake --build ${CMAKE_BINARY_DIR} --target install
9 add_dependencies(autopilot autopilot-${TEST_NAME})
14 add_dependencies(autopilot autopilot-${TEST_NAME})
10endfunction()
16endfunction()
data/51-unity8-greeter.confnew file+2
@@ -0,0 +1,2 @@
2+greeter-session=unity8-greeter
data/CMakeLists.txtnew file+27
@@ -0,0 +1,27 @@
1+# generate desktop files
2+configure_file(${SHELL_APP}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop @ONLY)
3+configure_file(${INDICATORS_CLIENT_APP}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${INDICATORS_CLIENT_APP}.desktop @ONLY)
4+configure_file(${GREETER_APP}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${GREETER_APP}.desktop @ONLY)
6+# install desktop files
8+ ${CMAKE_CURRENT_BINARY_DIR}/${SHELL_APP}.desktop
9+ ${CMAKE_CURRENT_BINARY_DIR}/${INDICATORS_CLIENT_APP}.desktop
10+ DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
14+ ${CMAKE_CURRENT_BINARY_DIR}/${GREETER_APP}.desktop
15+ DESTINATION ${CMAKE_INSTALL_DATADIR}/lightdm/greeters
19+ 51-unity8-greeter.conf
20+ DESTINATION ${CMAKE_INSTALL_DATADIR}/lightdm/lightdm.conf.d
23+add_custom_target(pkgversion ALL COMMAND dpkg-parsechangelog -l${CMAKE_SOURCE_DIR}/debian/changelog --show-field version > ${CMAKE_CURRENT_BINARY_DIR}/version)
25+install(FILES com.canonical.Unity8.gschema.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/glib-2.0/schemas)
26+install(FILES com.canonical.Unity.gschema.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/glib-2.0/schemas)
27+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/version DESTINATION ${CMAKE_INSTALL_LOCALSTATEDIR}/lib/unity8)
data/com.canonical.Unity.gschema.xmlnew file+255
@@ -0,0 +1,255 @@
2+ <enum id="form-factor-enum">
3+ <value nick="Automatic" value="0" />
4+ <value nick="Desktop" value="1" />
5+ <value nick="Netbook" value="2" />
6+ <value nick="TV" value="3" />
8+ <enum id="home-expanded-enum">
9+ <value nick="Not Expanded" value="0" />
10+ <value nick="Expanded" value="1" />
12+ <enum id="launcher-position-enum">
13+ <value nick="Left" value="0" />
14+ <value nick="Bottom" value="1" />
16+ <enum id="desktop-type-enum">
17+ <value nick="Ubuntu" value="0" />
18+ <value nick="UbuntuKylin" value="1" />
21+ <schema path="/com/canonical/unity/" id="com.canonical.Unity" gettext-domain="unity">
22+ <key enum="form-factor-enum" name="form-factor">
23+ <default>"Automatic"</default>
24+ <summary>The form factor Unity should target.</summary>
25+ <description>The form factor chosen will affect the size and appearance of the Dash, Launcher and also the Window Management behaviour.</description>
27+ <key enum="home-expanded-enum" name="home-expanded">
28+ <default>"Expanded"</default>
29+ <summary>Whether the home screen should be expanded.</summary>
30+ <description>Whether the home screen should be expanded.</description>
32+ <key enum="desktop-type-enum" name="desktop-type">
33+ <default>"Ubuntu"</default>
34+ <summary>The current desktop name.</summary>
35+ <description>The current desktop name.</description>
37+ <key type="i" name="minimize-count">
39+ <summary>Number of times a normal window has been minimized.</summary>
40+ <description>This is used to adjust the animation speed by making it progressively faster the more it is used.</description>
42+ <key type="i" name="minimize-fast-duration">
43+ <default>300</default>
44+ <summary>The duration for the minimize animation when it is at its fastest setting.</summary>
45+ <description>This is the duration that the minimize animation will have when it has been used more than an number of times equal minimize-speed-threshold.</description>
47+ <key type="i" name="minimize-slow-duration">
48+ <default>800</default>
49+ <summary>The duration for the minimize animation when it is at its slowest setting.</summary>
50+ <description>This is the duration that the minimize animation will have when it has never been used.</description>
52+ <key type="i" name="minimize-speed-threshold">
53+ <default>100</default>
54+ <summary>The number of minimizations required to reach maximum speed.</summary>
55+ <description>The speed of the minimize animation will progressively get faster as minimize-count approaches this value.</description>
57+ <key type="b" name="double-click-activate">
58+ <default>true</default>
59+ <summary>Enable/Disable dash result double-click activation.</summary>
60+ <description>This is used to enable/disable double-click result activation in the dash. Double-click to activate, single click preview</description>
62+ <key type="b" name="integrated-menus">
63+ <default>false</default>
64+ <summary>Enable/Disable the integrated menus in Unity.</summary>
65+ <description>When this is enabled, the application menus will be shown
66+ on the window decoration, otherwise they will be always shown on the
67+ unity top panel</description>
69+ <key type="u" name="show-menus-now-delay">
70+ <default>180</default>
71+ <range min="0" max="5000"/>
72+ <summary>Delay (in ms) before showing the menus when pressing Alt</summary>
73+ <description>This allows tune the delay before presenting unity menus
74+ (in non always-show-menus mode).</description>
76+ <key type="b" name="always-show-menus">
77+ <default>false</default>
78+ <summary>Toggle the menu visibility based on mouse hovering.</summary>
79+ <description>When this is enabled, the application menus will be always
80+ shown (on the window decoration or in the unity panel, depending whether
81+ integrated menus are enabled), otherwise they will be shown only when
82+ the mouse cursor is over the relative mouse area.</description>
84+ <key type="as" name="whitelist-repeated-keys">
86+ 'XF86KbdBrightnessUp',
87+ 'XF86KbdBrightnessDown',
88+ 'XF86MonBrightnessUp',
89+ 'XF86MonBrightnessDown',
90+ 'XF86AudioRaiseVolume',
91+ 'XF86AudioLowerVolume'
93+ <summary>List of keycodes that should be processed even if auto-repated.</summary>
94+ <description>These keycodes are processed even if they are auto-repeated.</description>
96+ <key type="b" name="pam-check-account-type">
97+ <default>false</default>
98+ <summary>Enable/Disable PAM account checking</summary>
99+ <description>Whether PAM should check the result of account modules
100+ when authenticating. Only do this if you have account
101+ configured properly on your system.</description>
103+ <key type="b" name="lowgfx">
104+ <default>false</default>
105+ <summary>Enable/Disable Low Graphics Mode</summary>
106+ <description>Whether Unity runs in Low Graphics Mode.</description>
109+ <schema path="/com/canonical/unity/interface/" id="com.canonical.Unity.Interface" gettext-domain="unity">
110+ <key type="d" name="text-scale-factor">
111+ <default>1.0</default>
112+ <range min="0.5" max="3.0"/>
113+ <summary>Font scaling for unity and applications.</summary>
114+ <description>This value defines the global font scaling used by both
115+ unity and applications. It will match the current system font scaling.</description>
117+ <key type="d" name="cursor-scale-factor">
118+ <default>1.0</default>
119+ <range min="0.5" max="3.0"/>
120+ <summary>Mouse cursor scaling.</summary>
121+ <description>This value defines the global mouse cursor scaling used by both
122+ unity and applications. Changing this value allows to use a custom scaling
123+ for the mouse cursor.</description>
125+ <key type="s" name="app-scale-factor-monitor">
126+ <default>''</default>
127+ <summary>The name of the monitor that controls the global app scaling factor.</summary>
128+ <description>This value defines the monitor that unity will use (if found) as reference
129+ for scaling all the applications.</description>
131+ <key type="b" name="app-fallback-to-maximum-scale-factor">
132+ <default>true</default>
133+ <summary>Use the maximum per-monitor scale-factor as application scale factor if no target monitor is found.</summary>
134+ <description>When this is enabled, the applications scale factor will match
135+ the scale factor of the monitor with the greater value, in case the monitor
136+ defined in 'app-scale-factor-monitor' is not provided or available.</description>
139+ <schema path="/com/canonical/unity/launcher/" id="com.canonical.Unity.Launcher" gettext-domain="unity">
140+ <key type="as" name="favorites">
142+ 'application://ubiquity.desktop',
143+ 'application://org.gnome.Nautilus.desktop',
144+ 'application://firefox.desktop',
145+ 'application://libreoffice-writer.desktop',
146+ 'application://libreoffice-calc.desktop',
147+ 'application://libreoffice-impress.desktop',
148+ 'application://org.gnome.Software.desktop',
149+ 'application://ubuntu-amazon-default.desktop',
150+ 'application://unity-control-center.desktop',
151+ 'unity://running-apps',
152+ 'unity://expo-icon',
155+ <summary>List of items that should be shown by default in the launcher</summary>
156+ <description>These items can be: application://desktop-id.desktop, device://uiid and unity://special-id (including: unity://running-apps (icons of running applications) unity://devices (icons of attached devices), unity://expo-icon (icon of the workspace switcher) and unity://desktop-icon (the show-desktop icon)); the order of this list determines the launcher item's position.</description>
158+ <key type="as" name="items">
160+ 'application:///dialer-app.desktop',
161+ 'application:///messaging-app.desktop',
162+ 'application:///address-book-app.desktop',
163+ 'application:///ubuntu-system-settings.desktop',
164+ 'appid://openstore.openstore-team/openstore/current-user-version',
165+ 'appid://com.ubuntu.camera/camera/current-user-version',
166+ 'appid://com.ubuntu.gallery/gallery/current-user-version',
167+ 'application:///morph-browser.desktop'
169+ <summary>List of items that should be shown by default in the launcher</summary>
170+ <description>These items can be: application:///desktop-id.desktop or appid://package/app/current-user-version.</description>
172+ <key type="s" name="favorite-migration">
173+ <default>''</default>
174+ <summary>Version of last migration done</summary>
175+ <description>This is a detection key for the favorite migration script to know whether the needed migration is done or not.</description>
177+ <key enum="launcher-position-enum" name="launcher-position">
178+ <default>"Left"</default>
179+ <summary>The position of launcher.</summary>
180+ <description>The position of launcher.</description>
183+ <schema path="/com/canonical/unity/devices/" id="com.canonical.Unity.Devices" gettext-domain="unity">
184+ <key type="as" name="blacklist">
185+ <default>[]</default>
186+ <summary>List of device uuid blacklist from the launcher.</summary>
187+ <description>These devices are not shown in the launcher by default.</description>
190+ <schema path="/com/canonical/unity/dash/" id="com.canonical.Unity.Dash" gettext-domain="unity">
191+ <key type="as" name="scopes">
192+ <default>[ 'home.scope', 'applications.scope', 'files.scope', 'video.scope', 'music.scope', 'photos.scope', 'social.scope' ]</default>
193+ <summary>List of scope ids specifying which scopes should be created and the order to display them in.</summary>
194+ <description>The scopes listed in the scope bar will be ordered according to this list.</description>
196+ <key type="as" name="favorite-scopes">
197+ <default>[ 'scope://clickscope', 'scope://musicaggregator', 'scope://videoaggregator' ]</default>
198+ <summary>List of scope queries specifying what should be displayed in the dash.</summary>
199+ <description>List of favorite scopes displayed in the dash.</description>
202+ <schema path="/com/canonical/unity/decorations/" id="com.canonical.Unity.Decorations" gettext-domain="unity">
203+ <key type="u" name="grab-wait">
204+ <default>175</default>
205+ <range min="0" max="1000"/>
206+ <summary>Milliseconds to wait before considering a mouse pressure a grab</summary>
207+ <description>The number of ms to wait before starting the window movement (and then
208+ showing the proper mouse cursor, and grabbing the window)</description>
211+ <schema path="/com/canonical/unity/integrated-menus/" id="com.canonical.Unity.IntegratedMenus" gettext-domain="unity">
212+ <key type="u" name="click-movement-threshold">
213+ <default>15</default>
214+ <range min="0" max="30"/>
215+ <summary>Number of pixels to ignore on mouse pressure</summary>
216+ <description>This value define how many pixels the user can move the mouse
217+ when holding the mouse button, before we consider his action a movement
218+ (to grab the window).</description>
220+ <key type="u" name="double-click-wait">
221+ <default>0</default>
222+ <range min="0" max="300"/>
223+ <summary>Milliseconds to wait before activating a menu after mouse release</summary>
224+ <description>The number of ms to wait after a mouse button release event before considering
225+ it a click. When this value is greater than 0, then it's possible to maximize
226+ a window by double-clicking on its menus if the second click happens before the
227+ specified value of ms is elapsed</description>
229+ <key type="b" name="unfocused-windows-popup">
230+ <default>true</default>
231+ <summary>Whether to pop-up a menu when clicking over unfocused windows entries</summary>
232+ <description>By disabling this setting you can make unity to only focus a window
233+ when clicking over unfocused menu entries</description>
236+ <schema path="/com/canonical/unity/gestures/" id="com.canonical.Unity.Gestures" gettext-domain="unity">
237+ <key type="b" name="launcher-drag">
238+ <default>true</default>
239+ <summary>Multi-touch gesture to reveal the launcher.</summary>
240+ <description>When this is enabled, a 4 finger swipe from left to right will reveal launcher,
241+ provided that the launcher is set to auto-hide.</description>
243+ <key type="b" name="dash-tap">
244+ <default>true</default>
245+ <summary>Multi-touch gesture to open the dash.</summary>
246+ <description>When this is enabled, a 4 finger tap will open the dash.</description>
248+ <key type="b" name="windows-drag-pinch">
249+ <default>true</default>
250+ <summary>Multi-touch gestures to manage the windows.</summary>
251+ <description>When this is enabled, 3 finger gestures such as drag, and pinch, will
252+ help manage the windows.</description>
data/com.canonical.Unity8.gschema.xmlnew file+75
@@ -0,0 +1,75 @@
2+ <enum id="usage-mode-enum">
3+ <value nick="Staged" value="0" />
4+ <value nick="Windowed" value="1" />
5+ <value nick="Automatic" value="2" />
8+ <schema path="/com/canonical/unity8/" id="com.canonical.Unity8" gettext-domain="unity8">
9+ <key enum="usage-mode-enum" name="usage-mode">
10+ <default>"Automatic"</default>
11+ <summary>The usage mode.</summary>
12+ <description>The usage mode chosen will affect the Window Management behaviour.</description>
14+ <key type="u" name="edge-barrier-sensitivity">
15+ <default>50</default>
16+ <range min="1" max="100"/>
17+ <summary>Sensitivity of screen edge barriers for the mouse pointer.</summary>
18+ <description>Some UI actions like revealing the launcher or the applications spread are triggered by pushing the mouse pointer against a screen edge. This key defines how much you have to push in order to trigger the associated action.</description>
20+ <key type="u" name="edge-barrier-min-push">
22+ <summary>Minimum push needed to overcome edge barrier</summary>
23+ <description>How much you have to push (in grid units)the mouse against an edge barrier when sensibility is 100.</description>
25+ <key type="u" name="edge-barrier-max-push">
26+ <default>120</default>
27+ <summary>Maximum push needed to overcome edge barrier</summary>
28+ <description>How much you have to push (in grid units) the mouse against an edge barrier when sensibility is 1.</description>
30+ <key type="u" name="edge-drag-width">
32+ <summary>The width of the edge drag areas</summary>
33+ <description>How big (in grid units) the edge-drag sensitive area should be.</description>
35+ <key type="b" name="autohide-launcher">
36+ <default>false</default>
37+ <summary>Autohide the launcher</summary>
38+ <description>This will only be applied in windowed mode. In staged mode, the launcher will always hide.</description>
40+ <key type="u" name="launcher-width">
42+ <range min="6" max="12"/>
43+ <summary>Width of the launcher in grid units.</summary>
44+ <description>Changes the width of the launcher in all usage modes.</description>
46+ <key type="b" name="enable-indicator-menu">
47+ <default>true</default>
48+ <summary>Enable or disable the indicator pull down menus</summary>
49+ <description>Toggle the availability of the indicator pull down menus</description>
51+ <key type="s" name="appstore-uri">
52+ <default>'appid://openstore.openstore-team/openstore/current-user-version'</default>
53+ <summary>The uri to the app store</summary>
54+ <description>This will be used whenever the user triggers an action to open the app store.</description>
56+ <key type="b" name="always-show-osk">
57+ <default>false</default>
58+ <summary>Force showing/hiding the OSK</summary>
59+ <description>Toggle the visibility of the On Screen Keyboard unconditionally</description>
61+ <key type="b" name="osk-switch-visible">
62+ <default>false</default>
63+ <summary>Whether the OSK switch should be visible</summary>
64+ <description>Toggle the visibility of the OSK switch</description>
68+ <schema path="/com/canonical/unity8/greeter/" id="com.canonical.Unity8.Greeter" gettext-domain="unity8">
69+ <key type="x" name="locked-out-time">
71+ <summary>When the greeter was last locked.</summary>
72+ <description>If too many unsuccessful login attempts have been made in a row, the greeter locks you out for a while. This unix timestamp indicates when you were locked out, so unity8 knows when to let you back in.</description>
data/devices.confnew file+30
@@ -0,0 +1,30 @@
1+# This file can hold multiple device configs. Devices are separated by sections.
3+# SupportedOrientations holds a list of all enabled orientations. A standard
4+# phone will usually have Portrait,Landcape,InvertedLandscape in order to
5+# disable upside down usage.
7+# PrimaryOrientation gives the orientation the device will start up with
8+# when there is no orientations sensor input available (yet) or lock to
9+# when an application specifies to be locked to PrimaryOrientation.
11+# The other Orientation settings can be used to re-map the orientations.
12+# A device might be used with different orientations than how the screen
13+# is physically mounted on the hardware.
15+# Category can be phone, tablet, or desktop. This option determines
16+# whether the side stage is shown (tablet) or not (phone). Using
17+# desktop will load the shell in windowed mode. Note that the user
18+# can override/change this by connecting input hardware or change
21+# Any options not listed will default to the values of the example below.
24+# SupportedOrientations=Portrait,InvertedPortrait,Landscape,InvertedLandscape
25+# PrimaryOrientation=PrimaryOrienation
26+# PortraitOrientation=Portrait
27+# InvertedPortraitOrientation=InvertedPortrait
28+# LandscapeOrientation=Landscape
29+# InvertedLandscapeOrientation=InvertedLandscape
data/indicators-client.desktop.innew file+9
@@ -0,0 +1,9 @@
4+Comment=Application for testing the Indicators system
5+Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/indicators-client
data/test.sensorsnew file+12
@@ -0,0 +1,12 @@
2+create accel 0 1000 0.1
7+# simulate crash on the ground
data/unity-mock-indicator-service.confnew file+7
@@ -0,0 +1,7 @@
1+description "Unity Shell v8 Mock Indicator"
2+author "Nick Dedekind <nick.dedekind@canonical.com>"
7+exec ${BINARY:-unity-mock-indicator-service} $ARGS
data/unity8-filewatcher.confnew file+13
@@ -0,0 +1,13 @@
1+description "File system watcher for unity8"
2+author "Michael Zanetti <michael.zanetti@canonical.com>"
4+# This method of updating the launcher will not work in our new snappy world,
5+# neither for snaps installed in the system nor if we are running inside a snap.
6+# Plus it hardcodes the phablet user... To be replaced once bug 1630997 is
7+# fixed in ubuntu-app-launch.
9+# Workaround for bug 1360208. ~ and * in one expression doesn't work currently
10+start on (file FILE=/home/phablet/.local/share/applications/*.desktop) or (file FILE=/usr/share/applications/*.desktop)
12+exec dbus-send --type=method_call --dest=com.canonical.Unity.Launcher /com/canonical/Unity/Launcher com.canonical.Unity.Launcher.Refresh
data/unity8-greeter-init.confnew file+12
@@ -0,0 +1,12 @@
1+description "Unity 8 Greeter initialization"
2+author "Michael Terry <mterry@ubuntu.com>"
4+start on unity8-greeter-started
6+emits indicator-services-start
9+ start --no-wait ofono-setup || true
10+ initctl emit --no-wait indicator-services-start || true
11+ start --no-wait maliit-server || true
data/unity8-greeter-logrotate.confnew file+14
@@ -0,0 +1,14 @@
1+description "Unity 8 Greeter logrotate support"
2+author "Michael Terry <mterry@ubuntu.com>"
4+start on unity8-greeter-started
8+ # logrotate normally starts on startup and then sleeps for 60 seconds.
9+ # Otherwise, it skips that sleep. Since we can't emit the startup signal
10+ # for a unity8-greeter session, we have to trigger logrotate manually.
11+ # So we do the sleep ourselves in its stead.
13+ initctl emit :sys:rotate-logs
data/unity8-greeter-wrappernew file+109
@@ -0,0 +1,109 @@
2+# -*- Mode: sh; indent-tabs-mode: nil; tab-width: 4 -*-
4+# Copyright (C) 2011,2013,2016 Canonical Ltd
6+# This program is free software: you can redistribute it and/or modify it under
7+# the terms of the GNU General Public License as published by the Free Software
8+# Foundation, version 3 of the License.
10+# See http://www.gnu.org/copyleft/gpl.html the full text of the license.
12+# This wrapper merely ensures that init and friends live only as long as this
13+# script does. Otherwise, it's very easy for some processes to not notice that
14+# the session died. We could try to do this in-process, but we want to do this
15+# cleanup even if the greeter aborts.
17+trap cleanup TERM EXIT
22+ # Kill upstart and indicators
23+ if [ -n "$INIT_PID" ]; then
26+ if [ -n "$CMD_PID" ]; then
35+ gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "{'$1': '$2'}"
36+ if [ -n "$INIT_PID" ]; then
37+ initctl set-env --global "$1=$2"
41+SUB_SOCKET=$XDG_RUNTIME_DIR/mir_socket
42+rm -f $SUB_SOCKET # clear socket in case we were hard shut down
44+echo "DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS}" >"$XDG_RUNTIME_DIR/dbus-session"
46+# If touch session script (which sets up grid units and mir variables) is available, use it
48+if which ubuntu-touch-session >/dev/null; then
49+ TOUCH_WRAPPER=ubuntu-touch-session
52+# Advertise as a unity8 session, so that indicator-network will start.
53+export XDG_SESSION_DESKTOP=unity8
54+export DESKTOP_SESSION=$XDG_SESSION_DESKTOP
56+set_greeter_var QT_IM_MODULE maliitphablet
57+set_greeter_var QT_QPA_PLATFORM ubuntumirclient
59+# We disable ofono using pulse. It causes problems with racing with the user's
60+# pulse. We need to come up with a better long-term fix for this, because we
61+# eventually need the greeter to play ringtones for users that aren't logged in.
62+set_greeter_var PA_DISABLED 1
64+# Normal unity8 sessions are entirely driven by Upstart. But greeters
65+# are special. They need access to the file descriptors that lightdm
66+# creates for them and don't want to start all the services that a normal
67+# session would. So it's inconvenient to live within an upstart session.
68+# But... we still want to use Upstart for some services. So launch here.
69+MIR_SOCKET=$SUB_SOCKET $TOUCH_WRAPPER upstart --user --no-startup-event &
71+while [ ! -e "$XDG_RUNTIME_DIR/upstart/sessions/$INIT_PID.session" ]; do sleep 0.1; done
72+. "$XDG_RUNTIME_DIR/upstart/sessions/$INIT_PID.session"
73+export UPSTART_SESSION
75+# Connect upstart to system, but do first command in a loop to avoid any
76+# race condition between the session file above being written and upstart being
77+# ready to handle requests.
78+while ! initctl notify-dbus-address "$DBUS_SESSION_BUS_ADDRESS"; do sleep 0.1; done
79+initctl start notify-cgmanager
81+# Start any pre-greeter tasks if needed (like wizard)
82+initctl emit unity8-greeter-starting
84+# Define language here for phone if available. When phone user switches their
85+# language, they expect that to affect the greeter too. But the user doesn't
86+# have permission to switch system language, only their own. So we notice if
87+# the phablet user exists and use their language if so. TODO: talk to design
88+# about whether we should switch language on fly as users are selected (this
89+# is very hard to do technically).
91+# Do this after unity8-greeter-starting, in case a customization upstart job
93+if [ "$(id -u phablet 2>/dev/null)" = "32011" ]; then
94+ USER_LANG=$(gdbus call --system --dest org.freedesktop.Accounts --object-path /org/freedesktop/Accounts/User32011 --method org.freedesktop.DBus.Properties.Get org.freedesktop.Accounts.User Language | cut -d\' -f2)
95+ if [ -n "$USER_LANG" ]; then
96+ set_greeter_var LANGUAGE "$USER_LANG"
98+ USER_LOCALE=$(gdbus call --system --dest org.freedesktop.Accounts --object-path /org/freedesktop/Accounts/User32011 --method org.freedesktop.DBus.Properties.Get org.freedesktop.Accounts.User FormatsLocale | cut -d\' -f2)
99+ if [ -n "$USER_LOCALE" ]; then
100+ set_greeter_var LANG "$USER_LOCALE"
101+ set_greeter_var LC_ALL "$USER_LOCALE"
105+# And finally actually start the greeter
106+exec env MIR_SERVER_FILE=$SUB_SOCKET $TOUCH_WRAPPER $@ &
data/unity8-greeter.desktop.innew file+7
@@ -0,0 +1,7 @@
4+Comment=The converged Unity shell's Greeter
5+Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8-greeter-wrapper @CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8 --mode=greeter
6+X-LightDM-Session-Type=mir
data/unity8-greeter.pklanew file+44
@@ -0,0 +1,44 @@
1+# DO NOT EDIT THIS FILE, it will be overwritten on update
2+# Place your local configurations under /etc/polkit-1/localauthority/
4+[Disable Controlling of Network Devices]
5+Identity=unix-user:lightdm
6+Action=org.freedesktop.NetworkManager.enable-disable-network;org.freedesktop.NetworkManager.enable-disable-wifi;org.freedesktop.NetworkManager.enable-disable-wwan;org.freedesktop.NetworkManager.enable-disable-wimax;
11+[Disable Sleep and Wake]
12+Identity=unix-user:lightdm
13+Action=org.freedesktop.NetworkManager.sleep-wake
18+[Disable WiFi Sharing]
19+Identity=unix-user:lightdm
20+Action=org.freedesktop.NetworkManager.wifi.share.protected;org.freedesktop.NetworkManager.wifi.share.open
25+[Disable Settings Modifications]
26+Identity=unix-user:lightdm
27+Action=org.freedesktop.NetworkManager.settings.modify.own;org.freedesktop.NetworkManager.settings.modify.system;org.freedesktop.NetworkManager.settings.modify.hostname
32+[Disable User Connections]
33+Identity=unix-user:lightdm
34+Action=org.freedesktop.NetworkManager.use-user-connections
39+[Enable Controlling of Network Connections]
40+Identity=unix-user:lightdm
41+Action=org.freedesktop.NetworkManager.network-control
data/unity8.confnew file+99
@@ -0,0 +1,99 @@
1+description "Unity Shell v8"
2+author "Ricardo Mendoza <ricmm@ubuntu.com>"
4+emits indicator-services-start
5+emits indicator-services-end
7+start on ((xsession SESSION=ubuntu-touch) or (xsession SESSION=unity8-mir) or (xsession SESSION=unity8)) and started dbus
13+# Ensure the shell always gets unthrottled touch events, so that applications
14+# who want full speed low-latency input can get it (LP: #1497105) and so that
15+# apps can use QML touch compression safely (the QML touch compression
16+# algorithm does not support nesting well - LP: #1486341, LP: #1556763 - so
17+# must be fed by the raw input event stream from Unity8).
19+env QML_NO_TOUCH_COMPRESSION=1
24+# FIXME Create an autopilot test that makes sure start+stop and restart
25+# work fine at least 2 times
28+ # Tell unity-mir to raise SIGSTOP after we start
29+ initctl set-env UNITY_MIR_EMITS_SIGSTOP=1
31+ # Save original value of MIR_SOCKET so that we can restore it when stopped,
32+ # as we modify the variable for future jobs, including ourself.
33+ initctl set-env UNITY_MIR_SOCKET=$MIR_SOCKET
35+ # Decide where we are going to put our own socket file
36+ if [ -n "$SNAP" ]; then
37+ # In snappy, we want to hard code our path because our apparmor profile
38+ # only lets us put the socket in one place. And consumers expect it
40+ MIR_SERVER_FILE=/run/user/$(id -u)/mir_socket
42+ MIR_SERVER_FILE=$XDG_RUNTIME_DIR/mir_socket
44+ initctl set-env MIR_SERVER_FILE=$MIR_SERVER_FILE
46+ # Point all future jobs in this session to our Mir socket instead of
47+ # unity-system-compositor's socket.
48+ initctl set-env --global MIR_SOCKET=$MIR_SERVER_FILE
49+ gdbus call --session --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.UpdateActivationEnvironment "@a{ss} {'MIR_SOCKET': '$MIR_SERVER_FILE'}"
51+ # Remove the normal and trusted sockets if still there
52+ if [ -S "$MIR_SERVER_FILE" ]; then
53+ rm "$MIR_SERVER_FILE"
56+ if [ -S "${MIR_SERVER_FILE}_trusted" ]; then
57+ rm "${MIR_SERVER_FILE}_trusted"
60+ initctl set-env --global MIR_SERVER_PROMPT_FILE=1
62+ # Disable Qt's stuttering 'touch compression' to fix scrolling smoothness
63+ # issues (LP: #1486341, LP: #1556763). As a bonus, this eliminates most of
64+ # the lag seen in the indicator panel pull-down (LP: #1488327) and also
65+ # reduces lag seen in apps:
66+ initctl set-env --global QML_NO_TOUCH_COMPRESSION=1
68+ # Workaround for text not rendering correctly
69+ initctl set-env --global QT_ENABLE_GLYPH_CACHE_WORKAROUND=1
71+ if [ "$XDG_SESSION_DESKTOP" = "ubuntu-touch" ]; then
72+ # On Ubuntu Touch, we currently use a trick where we auto-login the
73+ # user without a LightDM greeter at all. In this case, we want to
74+ # start with the lockscreen visible. Once we switch to using a
75+ # proper greeter for the first login, we can remove this code path.
76+ initctl set-env MODE=full-greeter
78+ initctl set-env MODE=full-shell
81+ # HACK! WORKAROUND FOR HALIUM MISSING UBUNTU_PLATFORM_API
82+ if [ ! -f /system/lib/libubuntu_application_api.so ]; then
83+ initctl set-env --global UBUNTU_PLATFORM_API_BACKEND=test.so.3
84+ initctl set-env --global UBUNTU_PLATFORM_API_SENSOR_TEST=/etc/ubuntusensors/test.sensors
88+exec ${BINARY:-unity8} --mode=$MODE $ARGS
91+ initctl emit --no-wait indicator-services-start
95+ initctl set-env --global MIR_SOCKET=$UNITY_MIR_SOCKET
96+ initctl unset-env --global MIR_SERVER_PROMPT_FILE
97+ initctl emit application-end
98+ initctl emit indicator-services-end
unity8.desktop.in → data/unity8.desktop.inrenamed+1−2
@@ -1,10 +1,9 @@
1[Desktop Entry]
1[Desktop Entry]
2Type=Application
2Type=Application
3Name=Unity 8
3Name=Unity 8
5Comment=The converged Unity shell
4Comment=The converged Unity shell
6Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8
5Exec=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@/unity8
7Terminal=false
6Terminal=false
9NoDisplay=true
8NoDisplay=true
10X-Ubuntu-Touch=true
9X-Ubuntu-Touch=true
debian/bileto_pre_release_hooknew file+5
@@ -0,0 +1,5 @@
5+sh ./po/update-unity-pot
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
debian/indicators-client.install+1
This diff is too big to show here.
This diff is too big to show here.
debian/scopes-recommends-generatordeleted−27
This diff is too big to show here.
debian/shlibs.localnew file+1
This diff is too big to show here.
debian/source/formatdeleted−1
This diff is too big to show here.
debian/tests/autopilot.shnew file+13
This diff is too big to show here.
debian/tests/controlnew file+11
This diff is too big to show here.
debian/tests/qmluitests.shnew file+11
This diff is too big to show here.
debian/unity8-autopilot.install+1
This diff is too big to show here.
debian/unity8-common.installnew file+5
This diff is too big to show here.
debian/unity8-common.udevnew file+2
This diff is too big to show here.
debian/unity8-doc.installnew file+2
This diff is too big to show here.
debian/unity8-fake-env.installdeleted−1
This diff is too big to show here.
debian/unity8-greeter.installnew file+5
This diff is too big to show here.
debian/unity8-private.install+14−2
This diff is too big to show here.
debian/unity8-schemas.installnew file+1
This diff is too big to show here.
debian/unity8-tests.installnew file+9
This diff is too big to show here.
debian/unity8-tests.lintian-overridesnew file+1
This diff is too big to show here.
debian/unity8.install+13−10
This diff is too big to show here.
debian/unity8.maintscriptnew file+1
This diff is too big to show here.
doc/CMakeLists.txtnew file+40
This diff is too big to show here.
doc/Doxyfile.innew file+2317
This diff is too big to show here.
doc/devices.confnew file+45
This diff is too big to show here.
graphics/12_10_background_wide@12.pngdeleted
Binary file not shown.
graphics/applicationIcons/angrybirds@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/browser@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/calendar@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/camera@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/dash@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/evernote@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/facebook@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/gallery@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/gmail@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/map@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/media-player@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/music@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/notepad@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/phone-app@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/pinterest@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/ski_safari@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/skype@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/soundcloud@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/twitter@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/weather@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/wikipedia@18.pngdeleted
Binary file not shown.
graphics/applicationIcons/youtube@18.pngdeleted
Binary file not shown.
graphics/avatars/amanda@12.pngdeleted
Binary file not shown.
graphics/avatars/anna_olsson@12.pngdeleted
Binary file not shown.
graphics/avatars/funky@12.pngdeleted
Binary file not shown.
graphics/clock@18.pngdeleted
Binary file not shown.
graphics/phone_background.jpgdeleted
Binary file not shown.
graphics/tablet_background.jpgdeleted
Binary file not shown.
include/CMakeLists.txtnew file+1
This diff is too big to show here.
include/paths.h.innew file+175
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
plugins/AccountsService/AccountsService.cppnew file+443
This diff is too big to show here.
plugins/AccountsService/AccountsService.hnew file+156
This diff is too big to show here.
plugins/AccountsService/AccountsServiceDBusAdaptor.cppnew file+152
This diff is too big to show here.
plugins/AccountsService/AccountsServiceDBusAdaptor.hnew file+58
This diff is too big to show here.
plugins/AccountsService/CMakeLists.txtnew file+28
This diff is too big to show here.
plugins/AccountsService/com.canonical.unity.AccountsService.xmlnew file+61
This diff is too big to show here.
plugins/AccountsService/plugin.cppnew file+38
This diff is too big to show here.
plugins/AccountsService/plugin.hnew file+34
This diff is too big to show here.
plugins/AccountsService/qmldirnew file+3
This diff is too big to show here.
plugins/CMakeLists.txt+26−4
This diff is too big to show here.
plugins/Cursor/3rd_party/CMakeLists.txtnew file+1
This diff is too big to show here.
plugins/Cursor/3rd_party/xcursor/CMakeLists.txtnew file+15
This diff is too big to show here.
plugins/Cursor/3rd_party/xcursor/xcursor.cnew file+968
This diff is too big to show here.
plugins/Cursor/3rd_party/xcursor/xcursor.hnew file+65
This diff is too big to show here.
plugins/Cursor/CMakeLists.txtnew file+32
This diff is too big to show here.
plugins/Cursor/Cursor.qmlnew file+62
This diff is too big to show here.
plugins/Cursor/CursorImageInfo.cppnew file+115
This diff is too big to show here.
plugins/Cursor/CursorImageInfo.hnew file+82
This diff is too big to show here.
plugins/Cursor/CursorImageProvider.cppnew file+337
This diff is too big to show here.
plugins/Cursor/CursorImageProvider.hnew file+103
This diff is too big to show here.
plugins/Cursor/MousePointer.cppnew file+235
This diff is too big to show here.
plugins/Cursor/MousePointer.hnew file+92
This diff is too big to show here.
plugins/Cursor/plugin.cppnew file+41
This diff is too big to show here.
plugins/Cursor/plugin.hnew file+33
This diff is too big to show here.
plugins/Cursor/qmldirnew file+3
This diff is too big to show here.
plugins/GlobalShortcut/CMakeLists.txtnew file+10
This diff is too big to show here.
plugins/GlobalShortcut/globalshortcut.cppnew file+91
This diff is too big to show here.
plugins/GlobalShortcut/globalshortcut.hnew file+81
This diff is too big to show here.
plugins/GlobalShortcut/globalshortcutregistry.cppnew file+125
This diff is too big to show here.
plugins/GlobalShortcut/globalshortcutregistry.hnew file+70
This diff is too big to show here.
plugins/Unity/Indicators/Network/plugin.cpp → plugins/GlobalShortcut/plugin.cpprenamed+7−11
This diff is too big to show here.
plugins/GlobalShortcut/plugin.hnew file+32
This diff is too big to show here.
plugins/GlobalShortcut/qmldirnew file+2
This diff is too big to show here.
plugins/Greeter/CMakeLists.txtnew file+6
This diff is too big to show here.
plugins/Greeter/Unity/CMakeLists.txtnew file+1
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/CMakeLists.txtnew file+35
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/launcheritem.cppnew file+218
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/launcheritem.hnew file+84
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/launchermodelas.cppnew file+303
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/launchermodelas.hnew file+77
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/plugin.cppnew file+46
This diff is too big to show here.
tests/mocks/Unity/fake_unity_plugin.h → plugins/Greeter/Unity/Launcher/plugin.hrenamed+6−8
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/qmldirnew file+3
This diff is too big to show here.
plugins/Unity/Launcher/common/quicklistentry.cpp → plugins/Greeter/Unity/Launcher/quicklistentry.cpprenamed+6−4
This diff is too big to show here.
plugins/Unity/Launcher/common/quicklistentry.h → plugins/Greeter/Unity/Launcher/quicklistentry.hrenamed+3−4
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/quicklistmodel.cppnew file+72
This diff is too big to show here.
plugins/Greeter/Unity/Launcher/quicklistmodel.hnew file+55
This diff is too big to show here.
plugins/HudClient/CMakeLists.txtdeleted−42
This diff is too big to show here.
plugins/HudClient/hudclient.cppdeleted−309
This diff is too big to show here.
plugins/HudClient/hudclient.hdeleted−71
This diff is too big to show here.
plugins/HudClient/hudtoolbarmodel.cppdeleted−98
This diff is too big to show here.
plugins/HudClient/hudtoolbarmodel.hdeleted−44
This diff is too big to show here.
plugins/HudClient/qmldirdeleted−2
This diff is too big to show here.
plugins/HudClient/volumepeakdetector.cppdeleted−223
This diff is too big to show here.
plugins/HudClient/volumepeakdetector.hdeleted−78
This diff is too big to show here.
plugins/LightDM/CMakeLists.txt+12−25
This diff is too big to show here.
plugins/LightDM/DBusGreeter.cppnew file+50
This diff is too big to show here.
plugins/LightDM/DBusGreeter.hnew file+52
This diff is too big to show here.
plugins/LightDM/DBusGreeterList.cppnew file+56
This diff is too big to show here.
plugins/LightDM/DBusGreeterList.hnew file+57
This diff is too big to show here.
plugins/LightDM/FullLightDM/CMakeLists.txtnew file+32
This diff is too big to show here.
plugins/LightDM/FullLightDM/qmldirnew file+3
This diff is too big to show here.
plugins/LightDM/Greeter.cpp+182−36
This diff is too big to show here.
plugins/LightDM/Greeter.h+35−13
This diff is too big to show here.
plugins/LightDM/GreeterPrivate.hnew file+45
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/CMakeLists.txtnew file+33
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_widget3.qml → plugins/LightDM/IntegratedLightDM/QLightDM/Greeterrenamed+2−8
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/QLightDM/SessionsModelnew file+17
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/QLightDM/UsersModelnew file+17
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/CMakeLists.txtnew file+54
This diff is too big to show here.
tests/mocks/LightDM/Greeter.cpp → plugins/LightDM/IntegratedLightDM/liblightdm/Greeter.cpprenamed+29−14
This diff is too big to show here.
tests/mocks/LightDM/Greeter.h → plugins/LightDM/IntegratedLightDM/liblightdm/Greeter.hrenamed+9−6
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/GreeterPrivate.cppnew file+309
This diff is too big to show here.
tests/mocks/LightDM/GreeterPrivate.h → plugins/LightDM/IntegratedLightDM/liblightdm/GreeterPrivate.hrenamed+4−2
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/SessionsModel.cppnew file+87
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/SessionsModel.hnew file+72
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/SessionsModelPrivate.cppnew file+36
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/SessionsModelPrivate.hnew file+54
This diff is too big to show here.
tests/mocks/LightDM/UsersModel.cpp → plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.cpprenamed+14−21
This diff is too big to show here.
tests/mocks/LightDM/UsersModel.h → plugins/LightDM/IntegratedLightDM/liblightdm/UsersModel.hrenamed+10−6
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.cppnew file+94
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/liblightdm/UsersModelPrivate.hnew file+72
This diff is too big to show here.
plugins/LightDM/IntegratedLightDM/qmldirnew file+3
This diff is too big to show here.
plugins/LightDM/PromptsModel.cppnew file+97
This diff is too big to show here.
plugins/LightDM/PromptsModel.hnew file+70
This diff is too big to show here.
plugins/LightDM/SessionsModel.cppnew file+135
This diff is too big to show here.
plugins/LightDM/SessionsModel.hnew file+66
This diff is too big to show here.
plugins/LightDM/UsersModel.cpp+183−15
This diff is too big to show here.
plugins/LightDM/UsersModel.h+8−10
This diff is too big to show here.
plugins/LightDM/plugin.cpp+47−9
This diff is too big to show here.
plugins/LightDM/plugin.h+4−6
This diff is too big to show here.
plugins/LightDM/qmldir+3−3
This diff is too big to show here.
plugins/Lights/CMakeLists.txtnew file+23
This diff is too big to show here.
plugins/Lights/HfdLights.cppnew file+62
This diff is too big to show here.
plugins/Lights/HfdLights.hnew file+42
This diff is too big to show here.
plugins/Lights/LegacyLights.cppnew file+91
This diff is too big to show here.
plugins/Lights/LegacyLights.hnew file+45
This diff is too big to show here.
plugins/Lights/Lights.cppnew file+101
This diff is too big to show here.
plugins/Lights/Lights.hnew file+71
This diff is too big to show here.
plugins/Lights/android-hardware.hnew file+19
This diff is too big to show here.
plugins/Lights/plugin.cppnew file+54
This diff is too big to show here.
plugins/Unity/plugin.h → plugins/Lights/plugin.hrenamed+6−7
This diff is too big to show here.
plugins/Lights/qmldirnew file+3
This diff is too big to show here.
plugins/ListViewWithPageHeader/CMakeLists.txtdeleted−37
This diff is too big to show here.
plugins/ListViewWithPageHeader/listviewwithpageheader.cppdeleted−1078
This diff is too big to show here.
plugins/ListViewWithPageHeader/listviewwithpageheader.hdeleted−183
This diff is too big to show here.
plugins/ListViewWithPageHeader/qmldirdeleted−3
This diff is too big to show here.
plugins/Powerd/CMakeLists.txtnew file+17
This diff is too big to show here.
plugins/Powerd/Powerd.cppnew file+90
This diff is too big to show here.
plugins/Powerd/Powerd.hnew file+70
This diff is too big to show here.
plugins/Powerd/plugin.cppnew file+36
This diff is too big to show here.
plugins/Powerd/plugin.hnew file+35
This diff is too big to show here.
plugins/Powerd/qmldirnew file+3
This diff is too big to show here.
plugins/ScreenshotDirectory/CMakeLists.txtnew file+9
This diff is too big to show here.
plugins/ScreenshotDirectory/ScreenGrabber.qmltypesnew file+17
This diff is too big to show here.
plugins/ScreenshotDirectory/ScreenshotDirectory.cppnew file+64
This diff is too big to show here.
plugins/ScreenshotDirectory/ScreenshotDirectory.hnew file+39
This diff is too big to show here.
tests/mocks/LightDM/demo/UsersModelPrivate.cpp → plugins/ScreenshotDirectory/plugin.cpprenamed+7−14
This diff is too big to show here.
plugins/ScreenshotDirectory/plugin.hnew file+31
This diff is too big to show here.
plugins/ScreenshotDirectory/qmldirnew file+2
This diff is too big to show here.
plugins/SessionBroadcast/CMakeLists.txtnew file+14
This diff is too big to show here.
plugins/SessionBroadcast/SessionBroadcast.cppnew file+71
This diff is too big to show here.
plugins/SessionBroadcast/SessionBroadcast.hnew file+51
This diff is too big to show here.
plugins/SessionBroadcast/plugin.cppnew file+35
This diff is too big to show here.
plugins/SessionBroadcast/plugin.hnew file+33
This diff is too big to show here.
plugins/SessionBroadcast/qmldirnew file+3
This diff is too big to show here.
plugins/UInput/CMakeLists.txtnew file+7
This diff is too big to show here.
plugins/UInput/plugin.cppnew file+26
This diff is too big to show here.
plugins/UInput/plugin.hnew file+32
This diff is too big to show here.
plugins/UInput/qmldirnew file+3
This diff is too big to show here.
plugins/UInput/uinput.cppnew file+182
This diff is too big to show here.
plugins/UInput/uinput.hnew file+61
This diff is too big to show here.
plugins/Ubuntu/CMakeLists.txt+1
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/CMakeLists.txtnew file+20
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/DownloadTracker.cppnew file+85
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/DownloadTracker.hnew file+70
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/interface/downloadtrackeradaptor.cppnew file+25
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/interface/downloadtrackeradaptor.hnew file+192
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/interface/metatypes.hnew file+25
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/plugin.cppnew file+39
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/plugin.hnew file+37
This diff is too big to show here.
plugins/Ubuntu/DownloadDaemonListener/qmldirnew file+3
This diff is too big to show here.
plugins/Ubuntu/Gestures/AxisVelocityCalculator.cpp+9−18
This diff is too big to show here.
plugins/Ubuntu/Gestures/AxisVelocityCalculator.h+11−18
This diff is too big to show here.
plugins/Ubuntu/Gestures/CMakeLists.txt+32−15
This diff is too big to show here.
plugins/Ubuntu/Gestures/Damper.hdeleted−85
This diff is too big to show here.
plugins/Ubuntu/Gestures/Direction.cpp+11−4
This diff is too big to show here.
plugins/Ubuntu/Gestures/Direction.h+8−5
This diff is too big to show here.
plugins/Ubuntu/Gestures/DirectionalDragArea.cppdeleted−461
This diff is too big to show here.
plugins/Ubuntu/Gestures/DirectionalDragArea.hdeleted−251
This diff is too big to show here.
plugins/Ubuntu/Gestures/MouseEventGenerator.cppnew file+64
This diff is too big to show here.
plugins/Ubuntu/Gestures/MouseEventGenerator.hnew file+48
This diff is too big to show here.
plugins/Ubuntu/Gestures/PressedOutsideNotifier.cppnew file+119
This diff is too big to show here.
plugins/Ubuntu/Gestures/PressedOutsideNotifier.hnew file+62
This diff is too big to show here.
plugins/Ubuntu/Gestures/TouchDispatcher.cppnew file+398
This diff is too big to show here.
plugins/Ubuntu/Gestures/TouchDispatcher.hnew file+96
This diff is too big to show here.
plugins/Ubuntu/Gestures/TouchGate.cppnew file+290
This diff is too big to show here.
plugins/Ubuntu/Gestures/TouchGate.hnew file+125
This diff is too big to show here.
plugins/Ubuntu/Gestures/TouchGestureArea.cppnew file+879
This diff is too big to show here.
plugins/Ubuntu/Gestures/TouchGestureArea.hnew file+229
This diff is too big to show here.
Components/Circle.qml → plugins/Ubuntu/Gestures/UbuntuGesturesQmlGlobal.hrenamed+6−5
This diff is too big to show here.
plugins/Ubuntu/Gestures/plugin.cpp+11−4
This diff is too big to show here.
plugins/Ubuntu/Gestures/plugin.h+2−2
This diff is too big to show here.
plugins/Ubuntu/Gestures/qmldir+2−2
This diff is too big to show here.
plugins/Unity/ApplicationMenu/CMakeLists.txtnew file+19
This diff is too big to show here.
plugins/Unity/ApplicationMenu/applicationmenuregistry.cppnew file+141
This diff is too big to show here.
plugins/Unity/ApplicationMenu/applicationmenuregistry.hnew file+83
This diff is too big to show here.
plugins/Unity/ApplicationMenu/com.ubuntu.MenuRegistrar.xmlnew file+83
This diff is too big to show here.
plugins/Unity/ApplicationMenu/dbusapplicationmenuregistry.cppnew file+44
This diff is too big to show here.
plugins/Unity/ApplicationMenu/dbusapplicationmenuregistry.hnew file+34
This diff is too big to show here.
plugins/Unity/ApplicationMenu/plugin.cppnew file+42
This diff is too big to show here.
plugins/Unity/ApplicationMenu/plugin.hnew file+32
This diff is too big to show here.
plugins/Unity/ApplicationMenu/qmldirnew file+3
This diff is too big to show here.
plugins/Unity/CMakeLists.txt+5−52
This diff is too big to show here.
plugins/Unity/Connectivity/CMakeLists.txtnew file+10
This diff is too big to show here.
plugins/Unity/Connectivity/Connectivity.cppnew file+33
This diff is too big to show here.
plugins/Unity/Connectivity/Connectivity.hnew file+34
This diff is too big to show here.
plugins/Unity/Connectivity/plugin.cppnew file+34
This diff is too big to show here.
plugins/Unity/Connectivity/plugin.hnew file+31
This diff is too big to show here.
plugins/Unity/Connectivity/qmldirnew file+3
This diff is too big to show here.
plugins/Unity/Indicators/CMakeLists.txt+23−25
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/CMakeLists.txtdeleted−1
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/ActionButton.qml+1−1
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/ActionTextField.qmldeleted−66
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/CMakeLists.txtdeleted−15
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/GroupedMessage.qmldeleted−96
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/HeroMessage.qmldeleted−120
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/HeroMessageHeader.qmldeleted−161
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/MessageMenuItem.qmldeleted−96
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/QuickReply.qmldeleted−160
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/SimpleTextMessage.qmldeleted−97
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/SnapDecision.qmldeleted−142
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/qmldirdeleted−12
This diff is too big to show here.
plugins/Unity/Indicators/Network/CMakeLists.txtdeleted−42
This diff is too big to show here.
plugins/Unity/Indicators/Network/networkagent.cppdeleted−146
This diff is too big to show here.
plugins/Unity/Indicators/Network/networkagent.hdeleted−65
This diff is too big to show here.
plugins/Unity/Indicators/Network/qml/AccessPoint.qmldeleted−68
This diff is too big to show here.
plugins/Unity/Indicators/Network/qml/CMakeLists.txtdeleted−15
This diff is too big to show here.
plugins/Unity/Indicators/Network/qml/PasswordPage.qmldeleted−88
This diff is too big to show here.
plugins/Unity/Indicators/Network/qml/PasswordTextField.qmldeleted−68
This diff is too big to show here.
plugins/Unity/Indicators/Network/qml/qmldirdeleted−8
This diff is too big to show here.
plugins/Unity/Indicators/Network/secret-agent.cdeleted−382
This diff is too big to show here.
plugins/Unity/Indicators/Network/secret-agent.hdeleted−102
This diff is too big to show here.
plugins/Unity/Indicators/actionrootstate.cppnew file+97
This diff is too big to show here.
plugins/Unity/Indicators/actionrootstate.hnew file+55
This diff is too big to show here.
plugins/Unity/Indicators/flatmenuproxymodel.cppdeleted−272
This diff is too big to show here.
plugins/Unity/Indicators/flatmenuproxymodel.hdeleted−91
This diff is too big to show here.
plugins/Unity/Indicators/indicator.cpp+39−20
This diff is too big to show here.
plugins/Unity/Indicators/indicator.h+12−5
This diff is too big to show here.
plugins/Unity/Indicators/indicators.h+14−17
This diff is too big to show here.
plugins/Unity/Indicators/indicatorsmanager.cpp+49−21
This diff is too big to show here.
plugins/Unity/Indicators/indicatorsmanager.h+13−5
This diff is too big to show here.
plugins/Unity/Indicators/indicatorsmodel.cpp+58−78
This diff is too big to show here.
plugins/Unity/Indicators/indicatorsmodel.h+23−16
This diff is too big to show here.
plugins/Unity/Indicators/menucontentactivator.cppnew file+344
This diff is too big to show here.
plugins/Unity/Indicators/menucontentactivator.hnew file+117
This diff is too big to show here.
plugins/Unity/Indicators/modelactionrootstate.cppnew file+204
This diff is too big to show here.
plugins/Unity/Indicators/modelactionrootstate.hnew file+72
This diff is too big to show here.
plugins/Unity/Indicators/modelprinter.cppnew file+152
This diff is too big to show here.
plugins/Unity/Indicators/modelprinter.hnew file+56
This diff is too big to show here.
plugins/Unity/Indicators/plugin.cpp+38−15
This diff is too big to show here.
plugins/Unity/Indicators/plugin.h+10−9
This diff is too big to show here.
plugins/Unity/Indicators/qml/BasicMenuItem.qmldeleted−48
This diff is too big to show here.
plugins/Unity/Indicators/qml/ButtonMenuItem.qmldeleted−47
This diff is too big to show here.
plugins/Unity/Indicators/qml/CMakeLists.txtdeleted−14
This diff is too big to show here.
plugins/Unity/Indicators/qml/IndicatorBase.qmldeleted−59
This diff is too big to show here.
plugins/Unity/Indicators/qml/IndicatorPage.qmldeleted−197
This diff is too big to show here.
plugins/Unity/Indicators/qml/IndicatorWidget.qmldeleted−68
This diff is too big to show here.
plugins/Unity/Indicators/qml/MenuAction.qmldeleted−86
This diff is too big to show here.
plugins/Unity/Indicators/qml/MenuActionBinding.qmldeleted−106
This diff is too big to show here.
plugins/Unity/Indicators/qml/MenuItem.qmldeleted−40
This diff is too big to show here.
plugins/Unity/Indicators/qml/MenuItemFactory.qmldeleted−110
This diff is too big to show here.
plugins/Unity/Indicators/qml/ProgressMenuItem.qmldeleted−65
This diff is too big to show here.
plugins/Unity/Indicators/qml/RemoveBackground.qmldeleted−55
This diff is too big to show here.
plugins/Unity/Indicators/qml/SectionMenuItem.qmldeleted−57
This diff is too big to show here.
plugins/Unity/Indicators/qml/SliderMenuItem.qmldeleted−64
This diff is too big to show here.
plugins/Unity/Indicators/qml/qmldirdeleted−20
This diff is too big to show here.
plugins/Unity/Indicators/qmldirnew file+3
This diff is too big to show here.
plugins/Unity/Indicators/resources/artwork/messaging/default_app.svgdeleted−42
This diff is too big to show here.
plugins/Unity/Indicators/resources/artwork/messaging/default_contact.pngdeleted
Binary file not shown.
plugins/Unity/Indicators/resources/artwork/messaging/message_sms01_54px.pngdeleted
Binary file not shown.
plugins/Unity/Indicators/resources/indicators.qrcdeleted−7
This diff is too big to show here.
plugins/Unity/Indicators/rootstateparser.cppnew file+231
This diff is too big to show here.
plugins/Unity/Indicators/rootstateparser.hnew file+74
This diff is too big to show here.
plugins/Unity/Indicators/sharedunitymenumodel.cppnew file+96
This diff is too big to show here.
plugins/Unity/Indicators/sharedunitymenumodel.hnew file+66
This diff is too big to show here.
plugins/Ubuntu/Gestures/UbuntuGesturesGlobal.h → plugins/Unity/Indicators/unityindicatorsglobal.hrenamed+3−3
This diff is too big to show here.
plugins/Unity/Indicators/unitymenumodelcache.cppnew file+65
This diff is too big to show here.
plugins/Unity/Indicators/unitymenumodelcache.hnew file+50
This diff is too big to show here.
plugins/Unity/Indicators/unitymenumodelstack.cppnew file+160
This diff is too big to show here.
plugins/Unity/Indicators/unitymenumodelstack.hnew file+68
This diff is too big to show here.
plugins/Unity/InputInfo/CMakeLists.txtnew file+38
This diff is too big to show here.
plugins/Unity/InputInfo/linux/qinputdeviceinfo_linux.cppnew file+296
This diff is too big to show here.
plugins/Unity/InputInfo/linux/qinputdeviceinfo_linux_p.hnew file+96
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/utils.js → plugins/Unity/InputInfo/plugin.cpprenamed+15−10
This diff is too big to show here.
Panel/Indicators/SoundIndicatorWidget.qml → plugins/Unity/InputInfo/plugin.hrenamed+14−9
This diff is too big to show here.
plugins/Unity/InputInfo/qdeclarativeinputdevicemodel.cppnew file+196
This diff is too big to show here.
plugins/Unity/InputInfo/qdeclarativeinputdevicemodel_p.hnew file+102
This diff is too big to show here.
plugins/Unity/InputInfo/qinputinfo.cppnew file+270
This diff is too big to show here.
plugins/Unity/InputInfo/qinputinfo.hnew file+142
This diff is too big to show here.
plugins/Unity/InputInfo/qmldirnew file+3
This diff is too big to show here.
plugins/Unity/Launcher/CMakeLists.txt+34−7
This diff is too big to show here.
plugins/Unity/Launcher/appdrawermodel.cppnew file+192
This diff is too big to show here.
plugins/Unity/Launcher/appdrawermodel.hnew file+64
This diff is too big to show here.
plugins/Unity/Launcher/asadapter.cppnew file+67
This diff is too big to show here.
Panel/Indicators/MessagingIndicatorPage.qml → plugins/Unity/Launcher/asadapter.hrenamed+28−17
This diff is too big to show here.
plugins/Unity/Launcher/backend/launcherbackend.cppdeleted−145
This diff is too big to show here.
plugins/Unity/Launcher/backend/launcherbackend.hdeleted−132
This diff is too big to show here.
plugins/Unity/Launcher/dbusinterface.cppnew file+226
This diff is too big to show here.
plugins/Unity/Launcher/dbusinterface.hnew file+49
This diff is too big to show here.
plugins/Unity/Launcher/gsettings.cppnew file+80
This diff is too big to show here.
plugins/Unity/Indicators/qml/SwitchMenuItem.qml → plugins/Unity/Launcher/gsettings.hrenamed+25−21
This diff is too big to show here.
plugins/Unity/Launcher/launcheritem.cpp+153−6
This diff is too big to show here.
plugins/Unity/Launcher/launcheritem.h+38−22
This diff is too big to show here.
plugins/Unity/Launcher/launchermodel.cpp+521−46
This diff is too big to show here.
plugins/Unity/Launcher/launchermodel.h+52−21
This diff is too big to show here.
plugins/Unity/Launcher/plugin.cpp+8−5
This diff is too big to show here.
plugins/Unity/Launcher/plugin.h+1−1
This diff is too big to show here.
plugins/Unity/Launcher/qmldir+1
This diff is too big to show here.
plugins/Unity/Launcher/quicklistentry.cppnew file+85
This diff is too big to show here.
plugins/Unity/Launcher/quicklistentry.hnew file+56
This diff is too big to show here.
plugins/Unity/Launcher/quicklistmodel.cpp+37−2
This diff is too big to show here.
plugins/Unity/Launcher/quicklistmodel.h+17−4
This diff is too big to show here.
plugins/Unity/Launcher/ualwrapper.cppnew file+74
This diff is too big to show here.
plugins/Unity/Launcher/ualwrapper.hnew file+36
This diff is too big to show here.
plugins/Unity/Launcher/xdgwatcher.cppnew file+129
This diff is too big to show here.
plugins/Unity/Launcher/xdgwatcher.hnew file+46
This diff is too big to show here.
plugins/Unity/Platform/CMakeLists.txtnew file+11
This diff is too big to show here.
plugins/Unity/Platform/platform.cppnew file+66
This diff is too big to show here.
plugins/Unity/Platform/platform.hnew file+64
This diff is too big to show here.
plugins/Unity/Platform/plugin.cppnew file+27
This diff is too big to show here.
plugins/Unity/Platform/plugin.hnew file+32
This diff is too big to show here.
plugins/Unity/Platform/qmldirnew file+2
This diff is too big to show here.
plugins/Unity/Session/CMakeLists.txtnew file+29
This diff is too big to show here.
plugins/Unity/Session/dbusunitysessionservice.cppnew file+647
This diff is too big to show here.
plugins/Unity/Session/dbusunitysessionservice.hnew file+377
This diff is too big to show here.
plugins/Unity/Session/orientationlock.cppnew file+74
This diff is too big to show here.
plugins/Unity/Session/orientationlock.hnew file+60
This diff is too big to show here.
plugins/Unity/Session/plugin.cppnew file+48
This diff is too big to show here.
plugins/Unity/Indicators/Network/plugin.h → plugins/Unity/Session/plugin.hrenamed+9−7
This diff is too big to show here.
plugins/Unity/Session/qmldirnew file+3
This diff is too big to show here.
plugins/Unity/applicationpreview.cppdeleted−96
This diff is too big to show here.
plugins/Unity/applicationpreview.hdeleted−66
This diff is too big to show here.
plugins/Unity/bottombarvisibilitycommunicatorshell.hdeleted−53
This diff is too big to show here.
plugins/Unity/categories.cppdeleted−155
This diff is too big to show here.
plugins/Unity/categories.hdeleted−79
This diff is too big to show here.
plugins/Unity/categoryresults.cppdeleted−96
This diff is too big to show here.
plugins/Unity/categoryresults.hdeleted−67
This diff is too big to show here.
plugins/Unity/moviepreview.cppdeleted−67
This diff is too big to show here.
plugins/Unity/moviepreview.hdeleted−60
This diff is too big to show here.
plugins/Unity/musicpreview.cppdeleted−54
This diff is too big to show here.
plugins/Unity/musicpreview.hdeleted−62
This diff is too big to show here.
plugins/Unity/plugin.cppdeleted−69
This diff is too big to show here.
plugins/Unity/preview.cppdeleted−177
This diff is too big to show here.
plugins/Unity/preview.hdeleted−80
This diff is too big to show here.
plugins/Unity/previewaction.cppdeleted−75
This diff is too big to show here.
plugins/Unity/previewaction.hdeleted−71
This diff is too big to show here.
plugins/Unity/previewinfohint.cppdeleted−67
This diff is too big to show here.
plugins/Unity/previewinfohint.hdeleted−58
This diff is too big to show here.
plugins/Unity/qmldirdeleted−3
This diff is too big to show here.
plugins/Unity/scope.cppdeleted−303
This diff is too big to show here.
plugins/Unity/scope.hdeleted−134
This diff is too big to show here.
plugins/Unity/scopes.cppdeleted−176
This diff is too big to show here.
plugins/Unity/scopes.hdeleted−94
This diff is too big to show here.
plugins/Unity/socialpreview.cppdeleted−83
This diff is too big to show here.
plugins/Unity/socialpreview.hdeleted−63
This diff is too big to show here.
plugins/Unity/socialpreviewcomment.cppdeleted−63
This diff is too big to show here.
plugins/Unity/socialpreviewcomment.hdeleted−57
This diff is too big to show here.
plugins/Unity/variantutils.cppdeleted−158
This diff is too big to show here.
plugins/Unity/variantutils.hdeleted−34
This diff is too big to show here.
plugins/Utils/CMakeLists.txt+36−7
This diff is too big to show here.
plugins/Utils/EdgeBarrierSettings.qmlnew file+66
This diff is too big to show here.
plugins/Utils/ElapsedTimer.hnew file+51
This diff is too big to show here.
plugins/Utils/Style.jsnew file+37
This diff is too big to show here.
plugins/Utils/Timer.cppnew file+62
This diff is too big to show here.
plugins/Utils/Timer.hnew file+78
This diff is too big to show here.
plugins/Utils/URLDispatcher.cppnew file+80
This diff is too big to show here.
plugins/Utils/URLDispatcher.hnew file+47
This diff is too big to show here.
plugins/Utils/WindowInputMonitor.cppnew file+126
This diff is too big to show here.
plugins/Utils/WindowInputMonitor.hnew file+97
This diff is too big to show here.
plugins/Utils/activefocuslogger.cppnew file+61
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_Damper.cpp → plugins/Utils/activefocuslogger.hrenamed+15−18
This diff is too big to show here.
plugins/Utils/appdrawerproxymodel.cppnew file+189
This diff is too big to show here.
plugins/Utils/appdrawerproxymodel.hnew file+87
This diff is too big to show here.
plugins/Utils/applicationpaths.hdeleted−38
This diff is too big to show here.
plugins/Utils/applicationsfiltermodel.cppnew file+101
This diff is too big to show here.
plugins/Utils/applicationsfiltermodel.hnew file+69
This diff is too big to show here.
plugins/Utils/constants.cppnew file+32
This diff is too big to show here.
plugins/Utils/constants.hnew file+43
This diff is too big to show here.
plugins/Utils/deviceconfigparser.cppnew file+176
This diff is too big to show here.
plugins/Utils/deviceconfigparser.hnew file+66
This diff is too big to show here.
plugins/Utils/easingcurve.cppnew file+73
This diff is too big to show here.
plugins/Utils/easingcurve.hnew file+69
This diff is too big to show here.
plugins/Utils/expressionfiltermodel.cppnew file+49
This diff is too big to show here.
plugins/Utils/expressionfiltermodel.hnew file+42
This diff is too big to show here.
plugins/Utils/globalfunctions.cppnew file+58
This diff is too big to show here.
plugins/Utils/globalfunctions.hnew file+44
This diff is too big to show here.
plugins/Utils/inputeventgenerator.cppnew file+34
This diff is too big to show here.
plugins/Utils/inputeventgenerator.hnew file+40
This diff is too big to show here.
plugins/Utils/inputwatcher.cppnew file+118
This diff is too big to show here.
plugins/Utils/inputwatcher.hnew file+58
This diff is too big to show here.
plugins/Utils/plugin.cpp+62−15
This diff is too big to show here.
plugins/Utils/plugin.h+1−1
This diff is too big to show here.
plugins/Utils/qlimitproxymodelqml.cpp+107−21
This diff is too big to show here.
plugins/Utils/qlimitproxymodelqml.h+4−2
This diff is too big to show here.
This diff is too big to show here.
plugins/Utils/quicklistproxymodel.cppnew file+72
This diff is too big to show here.
plugins/Utils/quicklistproxymodel.hnew file+52
This diff is too big to show here.
plugins/Utils/qvariantlistmodel.h+6−6
This diff is too big to show here.
plugins/Utils/tabfocusfence.cppnew file+72
This diff is too big to show here.
plugins/Utils/tabfocusfence.hnew file+38
This diff is too big to show here.
plugins/Utils/timezoneFormatter.cppnew file+45
This diff is too big to show here.
plugins/Utils/timezoneFormatter.hnew file+33
This diff is too big to show here.
plugins/Utils/unitymenumodelpaths.cppnew file+182
This diff is too big to show here.
plugins/Utils/unitymenumodelpaths.hnew file+82
This diff is too big to show here.
plugins/Utils/unitysortfilterproxymodelqml.cppnew file+167
This diff is too big to show here.
plugins/Utils/unitysortfilterproxymodelqml.hnew file+68
This diff is too big to show here.
plugins/Utils/windowinputfilter.cppnew file+70
This diff is too big to show here.
plugins/Utils/windowinputfilter.hnew file+58
This diff is too big to show here.
plugins/Utils/windowstatestorage.cppnew file+383
This diff is too big to show here.
plugins/Utils/windowstatestorage.hnew file+74
This diff is too big to show here.
plugins/WindowManager/AvailableDesktopArea.cppnew file+50
This diff is too big to show here.
plugins/WindowManager/AvailableDesktopArea.hnew file+38
This diff is too big to show here.
plugins/WindowManager/CMakeLists.txtnew file+26
This diff is too big to show here.
plugins/WindowManager/InputMethodManager.cppnew file+56
This diff is too big to show here.
plugins/WindowManager/InputMethodManager.hnew file+55
This diff is too big to show here.
plugins/WindowManager/TopLevelWindowModel.cppnew file+782
This diff is too big to show here.
plugins/WindowManager/TopLevelWindowModel.hnew file+308
This diff is too big to show here.
plugins/WindowManager/Window.cppnew file+277
This diff is too big to show here.
plugins/WindowManager/Window.hnew file+176
This diff is too big to show here.
plugins/WindowManager/WindowManagerGlobal.hnew file+23
This diff is too big to show here.
plugins/WindowManager/WindowManagerPlugin.cppnew file+44
This diff is too big to show here.
plugins/WindowManager/WindowManagerPlugin.hnew file+32
This diff is too big to show here.
plugins/WindowManager/WindowMargins.cppnew file+74
This diff is too big to show here.
plugins/WindowManager/WindowMargins.hnew file+59
This diff is too big to show here.
plugins/WindowManager/qmldirnew file+2
This diff is too big to show here.
plugins/Wizard/50-com.canonical.unity.wizard.pklanew file+6
This diff is too big to show here.
plugins/Wizard/CMakeLists.txtnew file+23
This diff is too big to show here.
plugins/Wizard/Changelog.cppnew file+58
This diff is too big to show here.
plugins/Wizard/Changelog.hnew file+52
This diff is too big to show here.
plugins/Wizard/LocalePlugin.cppnew file+291
This diff is too big to show here.
plugins/Wizard/LocalePlugin.hnew file+58
This diff is too big to show here.
plugins/Wizard/PageList.cppnew file+127
This diff is too big to show here.
plugins/Wizard/PageList.hnew file+53
This diff is too big to show here.
plugins/Wizard/Status.cppnew file+143
This diff is too big to show here.
plugins/Wizard/Status.hnew file+60
This diff is too big to show here.
plugins/Wizard/System.cppnew file+182
This diff is too big to show here.
plugins/Wizard/System.hnew file+75
This diff is too big to show here.
plugins/Wizard/Unity/Application/CMakeLists.txtnew file+3
This diff is too big to show here.
tests/mocks/Ubuntu/Application/InputFilterArea.qml → plugins/Wizard/Unity/Application/OSKController.qmlrenamed−1
This diff is too big to show here.
plugins/Wizard/Unity/Application/qmldirnew file+2
This diff is too big to show here.
plugins/Wizard/Unity/CMakeLists.txtnew file+1
This diff is too big to show here.
plugins/Wizard/Utils/CMakeLists.txtnew file+27
This diff is too big to show here.
plugins/Wizard/Utils/plugin.cppnew file+41
This diff is too big to show here.
plugins/ListViewWithPageHeader/plugin.h → plugins/Wizard/Utils/plugin.hrenamed+4−4
This diff is too big to show here.
plugins/Wizard/Utils/qmldirnew file+2
This diff is too big to show here.
plugins/Utils/qsortfilterproxymodelqml.cpp → plugins/Wizard/Utils/qsortfilterproxymodelqml.cpprenamed+45−1
This diff is too big to show here.
plugins/Utils/qsortfilterproxymodelqml.h → plugins/Wizard/Utils/qsortfilterproxymodelqml.hrenamed+5
This diff is too big to show here.
plugins/Wizard/keyboardLayoutsModel.cppnew file+163
This diff is too big to show here.
plugins/Wizard/keyboardLayoutsModel.hnew file+66
This diff is too big to show here.
plugins/Wizard/main.cppnew file+93
This diff is too big to show here.
plugins/Wizard/plugin.cppnew file+38
This diff is too big to show here.
plugins/Wizard/plugin.hnew file+31
This diff is too big to show here.
plugins/Wizard/qmldirnew file+2
This diff is too big to show here.
plugins/Wizard/timezonemodel.cppnew file+244
This diff is too big to show here.
plugins/Wizard/timezonemodel.hnew file+80
This diff is too big to show here.
plugins/Wizard/ubuntu-system-settings-wizard-cleanup.confnew file+20
This diff is too big to show here.
plugins/Wizard/ubuntu-system-settings-wizard-set-lang.confnew file+30
This diff is too big to show here.
plugins/Wizard/ubuntu-system-settings-wizard.confnew file+75
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
po/ca@valencia.ponew file+1125
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
qml/ApplicationMenus/ApplicationMenuItemFactory.qmlnew file+135
This diff is too big to show here.
Dash/ScopeListView.qml → qml/ApplicationMenus/ApplicationMenusLimits.qmlrenamed+7−6
This diff is too big to show here.
qml/ApplicationMenus/MenuBar.qmlnew file+513
This diff is too big to show here.
qml/ApplicationMenus/MenuItem.qmlnew file+146
This diff is too big to show here.
qml/ApplicationMenus/MenuNavigator.qmlnew file+101
This diff is too big to show here.
qml/ApplicationMenus/MenuPopup.qmlnew file+510
This diff is too big to show here.
qml/ApplicationMenus/RegisteredApplicationMenuModel.qmlnew file+56
This diff is too big to show here.
qml/ApplicationMenus/qmldirnew file+1
This diff is too big to show here.
qml/CMakeLists.txtnew file+23
This diff is too big to show here.
qml/Components/Background.qmlnew file+87
This diff is too big to show here.
qml/Components/BlurLayer.qmlnew file+39
This diff is too big to show here.
qml/Components/BrightnessControl.qmlnew file+54
This diff is too big to show here.
qml/Components/Dialogs.qmlnew file+328
This diff is too big to show here.
Components/DragHandle.qml → qml/Components/DragHandle.qmlrenamed+69−54
This diff is too big to show here.
Components/DraggingArea.qml → qml/Components/DraggingArea.qmlrenamed+7−4
This diff is too big to show here.
qml/Components/EdgeBarrier.qmlnew file+114
This diff is too big to show here.
qml/Components/EdgeBarrierController.qmlnew file+74
This diff is too big to show here.
Components/EdgeDragEvaluator.qml → qml/Components/EdgeDragEvaluator.qmlrenamed+20−11
This diff is too big to show here.
qml/Components/FadingLabel.qmlnew file+42
This diff is too big to show here.
qml/Components/Flickable.qmlnew file+24
This diff is too big to show here.
qml/Components/FloatingFlickable.qmlnew file+63
This diff is too big to show here.
Components/ListItems/VerticalThinDivider.qml → qml/Components/GridView.qmlrenamed+8−10
This diff is too big to show here.
qml/Components/Handle.qmlnew file+44
This diff is too big to show here.
qml/Components/InputMethod.qmlnew file+58
This diff is too big to show here.
qml/Components/ItemGrabber.qmlnew file+86
This diff is too big to show here.
qml/Components/ItemSnapshot.qmlnew file+45
This diff is too big to show here.
qml/Components/KeyboardShortcutsOverlay.qmlnew file+336
This diff is too big to show here.
qml/Components/KeymapSwitcher.qmlnew file+102
This diff is too big to show here.
qml/Components/LazyImage.qmlnew file+202
This diff is too big to show here.
qml/Components/ListView.qmlnew file+24
This diff is too big to show here.
qml/Components/ListViewOSKScroller.qmlnew file+53
This diff is too big to show here.
qml/Components/Lockscreen.qmlnew file+256
This diff is too big to show here.
qml/Components/MediaServices/MediaServices.qmlnew file+386
This diff is too big to show here.
qml/Components/MediaServices/MediaServicesControls.qmlnew file+192
This diff is too big to show here.
qml/Components/MediaServices/MediaServicesHeader.qmlnew file+71
This diff is too big to show here.
qml/Components/MediaServices/VideoPlayer.qmlnew file+155
This diff is too big to show here.
qml/Components/MediaServices/VideoPlayerControls.qmlnew file+158
This diff is too big to show here.
qml/Components/ModeSwitchWarningDialog.qmlnew file+101
This diff is too big to show here.
qml/Components/NotificationAudio.qmlnew file+60
This diff is too big to show here.
qml/Components/Orientations.qmlnew file+57
This diff is too big to show here.
qml/Components/PanelState/PanelState.qmlnew file+36
This diff is too big to show here.
qml/Components/PanelState/qmldirnew file+1
This diff is too big to show here.
qml/Components/PassphraseLockscreen.qmlnew file+150
This diff is too big to show here.
qml/Components/PhysicalKeysMapper.qmlnew file+163
This diff is too big to show here.
qml/Components/PinLockscreen.qmlnew file+258
This diff is too big to show here.
qml/Components/PinPadButton.qmlnew file+78
This diff is too big to show here.
qml/Components/Rating.qmlnew file+49
This diff is too big to show here.
qml/Components/RatingStyle.qmlnew file+50
This diff is too big to show here.
qml/Components/ScrollCalculator.qmlnew file+100
This diff is too big to show here.
Components/SearchHistoryModel.qml → qml/Components/SearchHistoryModel/SearchHistoryModel.qmlrenamed+2−1
This diff is too big to show here.
qml/Components/SearchHistoryModel/qmldirnew file+1
This diff is too big to show here.
qml/Components/SharingPicker.qmlnew file+102
This diff is too big to show here.
qml/Components/ShellDialog.qmlnew file+68
This diff is too big to show here.
Components/Showable.qml → qml/Components/Showable.qmlrenamed+47−19
This diff is too big to show here.
Components/StandardAnimation.qml → qml/Components/StandardAnimation.qmlrenamed+1−1
This diff is too big to show here.
qml/Components/VirtualTouchPad.qmlnew file+406
This diff is too big to show here.
qml/Components/VolumeControl.qmlnew file+63
This diff is too big to show here.
qml/Components/Wallpaper.qmlnew file+96
This diff is too big to show here.
qml/Components/WallpaperResolver.qmlnew file+60
This diff is too big to show here.
qml/Components/WindowControlButtons.qmlnew file+121
This diff is too big to show here.
Components/WrongPasswordAnimation.qml → qml/Components/WrongPasswordAnimation.qmlrenamed+1−1
This diff is too big to show here.
qml/Components/ZoomableImage.qmlnew file+157
This diff is too big to show here.
Components/carousel.js → qml/Components/carousel.jsrenamed
The content is the same.
Components/Math.js → qml/Components/flickableUtils.jsrenamed+10−8
This diff is too big to show here.
qml/Components/graphics/close@20.pngnew file
Binary file not shown.
qml/Components/graphics/icon_star_empty@20.pngnew file
Binary file not shown.
qml/Components/graphics/icon_star_full@20.pngnew file
Binary file not shown.
qml/Components/graphics/icon_star_half@20.pngnew file
Binary file not shown.
qml/Components/graphics/icon_star_off@20.pngnew file
Binary file not shown.
qml/Components/graphics/icon_star_on@20.pngnew file
Binary file not shown.
qml/Components/graphics/non-selected@18.pngnew file
Binary file not shown.
Components/graphics/non-selected@18.sci → qml/Components/graphics/non-selected@18.scirenamed
The content is the same.
qml/Components/graphics/window-close.svgnew file+164
This diff is too big to show here.
qml/Components/graphics/window-maximize.svgnew file+164
This diff is too big to show here.
qml/Components/graphics/window-minimize.svgnew file+164
This diff is too big to show here.
qml/Components/graphics/window-window.svgnew file+41
This diff is too big to show here.
qml/DeviceConfiguration.qmlnew file+161
This diff is too big to show here.
qml/DisabledScreenNotice.qmlnew file+81
This diff is too big to show here.
qml/Greeter/ButtonPrompt.qmlnew file+51
This diff is too big to show here.
qml/Greeter/Circle.qmlnew file+57
This diff is too big to show here.
qml/Greeter/Clock.qmlnew file+91
This diff is too big to show here.
qml/Greeter/CoverPage.qmlnew file+271
This diff is too big to show here.
qml/Greeter/DelayedLockscreen.qmlnew file+86
This diff is too big to show here.
Greeter/Dot.qml → qml/Greeter/Dot.qmlrenamed+1−1
This diff is too big to show here.
qml/Greeter/FullLightDMImpl.qmlnew file+31
This diff is too big to show here.
Greeter/Gradient.js → qml/Greeter/Gradient.jsrenamed+7−3
This diff is too big to show here.
qml/Greeter/Greeter.qmlnew file+632
This diff is too big to show here.
qml/Greeter/GreeterPrompt.qmlnew file+127
This diff is too big to show here.
qml/Greeter/GreeterView.qmlnew file+534
This diff is too big to show here.
Greeter/Infographics.qml → qml/Greeter/Infographics.qmlrenamed+117−137
This diff is too big to show here.
Dash/Video/VideosCarousel.qml → qml/Greeter/IntegratedLightDMImpl.qmlrenamed+12−16
This diff is too big to show here.
qml/Greeter/LightDMService.qmlnew file+54
This diff is too big to show here.
qml/Greeter/LoginAreaContainer.qmlnew file+38
This diff is too big to show here.
qml/Greeter/LoginList.qmlnew file+292
This diff is too big to show here.
Greeter/ObjectPositioner.qml → qml/Greeter/ObjectPositioner.qmlrenamed+2−2
This diff is too big to show here.
qml/Greeter/PinPrompt.qmlnew file+184
This diff is too big to show here.
qml/Greeter/PromptList.qmlnew file+151
This diff is too big to show here.
qml/Greeter/SessionIcon.qmlnew file+47
This diff is too big to show here.
qml/Greeter/SessionsList.qmlnew file+205
This diff is too big to show here.
qml/Greeter/ShimGreeter.qmlnew file+47
This diff is too big to show here.
qml/Greeter/TextPrompt.qmlnew file+198
This diff is too big to show here.
qml/Greeter/graphics/dot_empty.pngnew file
Binary file not shown.
qml/Greeter/graphics/dot_filled.pngnew file
Binary file not shown.
qml/Greeter/graphics/dot_pointer.pngnew file
Binary file not shown.
qml/Greeter/graphics/icon_arrow.pngnew file
Binary file not shown.
qml/Greeter/graphics/session_icons/gnome_badge.pngnew file
Binary file not shown.
qml/Greeter/graphics/session_icons/kde_badge.pngnew file
Binary file not shown.
qml/Greeter/graphics/session_icons/recovery_console_badge.pngnew file
Binary file not shown.
qml/Greeter/graphics/session_icons/ubuntu_badge.pngnew file
Binary file not shown.
qml/Greeter/graphics/session_icons/unknown_badge.pngnew file
Binary file not shown.
qml/Greeter/qmldirnew file+1
This diff is too big to show here.
qml/Launcher/BackgroundBlur.qmlnew file+81
This diff is too big to show here.
qml/Launcher/Drawer.qmlnew file+413
This diff is too big to show here.
qml/Launcher/DrawerGridView.qmlnew file+85
This diff is too big to show here.
qml/Launcher/FoldingLauncherDelegate.qmlnew file+144
This diff is too big to show here.
qml/Launcher/Launcher.qmlnew file+661
This diff is too big to show here.
qml/Launcher/LauncherDelegate.qmlnew file+327
This diff is too big to show here.
qml/Launcher/LauncherPanel.qmlnew file+961
This diff is too big to show here.
qml/Launcher/PullToRefreshScopeStyle.qmlnew file+83
This diff is too big to show here.
qml/Launcher/Tooltip.qmlnew file+72
This diff is too big to show here.
qml/Launcher/graphics/divider-line.pngnew file
Binary file not shown.
qml/Launcher/graphics/focused_app_arrow@30.pngnew file
Binary file not shown.
qml/Launcher/graphics/home.svgnew file+243
This diff is too big to show here.
qml/Launcher/graphics/quicklist_tooltip@30.pngnew file
Binary file not shown.
qml/Notifications/Notification.qmlnew file+600
This diff is too big to show here.
qml/Notifications/NotificationButton.qmlnew file+73
This diff is too big to show here.
qml/Notifications/NotificationMenuItemFactory.qmlnew file+230
This diff is too big to show here.
qml/Notifications/Notifications.qmlnew file+115
This diff is too big to show here.
qml/Notifications/OptionToggle.qmlnew file+125
This diff is too big to show here.
Dash/Music/CarouselDelegateMusic.qml → qml/Notifications/ShapedIcon.qmlrenamed+20−19
This diff is too big to show here.
qml/Notifications/SwipeToAct.qmlnew file+275
This diff is too big to show here.
qml/OrientedShell.qmlnew file+336
This diff is too big to show here.
qml/Panel/ActiveCallHint.qmlnew file+211
This diff is too big to show here.
tests/mocks/LightDM/single/InfographicModelPrivate.cpp → qml/Panel/FakePanelMenu.qmlrenamed+8−10
This diff is too big to show here.
qml/Panel/Indicators/IndicatorBase.qmlnew file+47
This diff is too big to show here.
Panel/Indicators/DefaultIndicatorPage.qml → qml/Panel/Indicators/IndicatorDelegate.qmlrenamed+4−4
This diff is too big to show here.
qml/Panel/Indicators/IndicatorItem.qmlnew file+310
This diff is too big to show here.
qml/Panel/Indicators/IndicatorMenuItemFactory.qmlnew file+1113
This diff is too big to show here.
qml/Panel/Indicators/IndicatorsLight.qmlnew file+234
This diff is too big to show here.
qml/Panel/Indicators/MessageMenuItemFactory.qmlnew file+244
This diff is too big to show here.
qml/Panel/Indicators/client/IndicatorRepresentation.qmlnew file+121
This diff is too big to show here.
Panel/Indicators/client/IndicatorsClient.qml → qml/Panel/Indicators/client/IndicatorsClient.qmlrenamed+21−13
This diff is too big to show here.
Panel/Indicators/client/IndicatorsList.qml → qml/Panel/Indicators/client/IndicatorsList.qmlrenamed+24−18
This diff is too big to show here.
plugins/Unity/Indicators/Network/qml/WifiSection.qml → qml/Panel/Indicators/client/IndicatorsTree.qmlrenamed+17−10
This diff is too big to show here.
qml/Panel/MenuContent.qmlnew file+83
This diff is too big to show here.
qml/Panel/Panel.qmlnew file+522
This diff is too big to show here.
qml/Panel/PanelBar.qmlnew file+330
This diff is too big to show here.
qml/Panel/PanelItemRow.qmlnew file+270
This diff is too big to show here.
qml/Panel/PanelMenu.qmlnew file+414
This diff is too big to show here.
qml/Panel/PanelMenuPage.qmlnew file+226
This diff is too big to show here.
qml/Panel/PanelVelocityCalculator.qmlnew file+54
This diff is too big to show here.
qml/Panel/graphics/rectangular_dropshadow@30.pngnew file
Binary file not shown.
Panel/graphics/rectangular_dropshadow@30.sci → qml/Panel/graphics/rectangular_dropshadow@30.scirenamed
The content is the same.
qml/Rotation/HalfLoopRotationAnimation.qmlnew file+47
This diff is too big to show here.
qml/Rotation/ImmediateRotationAction.qmlnew file+34
This diff is too big to show here.
qml/Rotation/NinetyRotationAnimation.qmlnew file+88
This diff is too big to show here.
qml/Rotation/RotationStates.qmlnew file+289
This diff is too big to show here.
qml/Rotation/UpdateShellTransformations.qmlnew file+42
This diff is too big to show here.
qml/Shell.qmlnew file+951
This diff is too big to show here.
qml/Stage/ApplicationWindow.qmlnew file+416
This diff is too big to show here.
qml/Stage/ChildWindow.qmlnew file+203
This diff is too big to show here.
qml/Stage/ChildWindowRepeater.qmlnew file+39
This diff is too big to show here.
qml/Stage/ChildWindowTree.qmlnew file+138
This diff is too big to show here.
qml/Stage/DecoratedWindow.qmlnew file+319
This diff is too big to show here.
qml/Stage/FakeMaximizeDelegate.qmlnew file+233
This diff is too big to show here.
qml/Stage/MainViewStyle.qmlnew file+87
This diff is too big to show here.
qml/Stage/MoveHandler.qmlnew file+201
This diff is too big to show here.
qml/Stage/OrientationChangeAnimation.qmlnew file+265
This diff is too big to show here.
qml/Stage/PromptSurfaceAnimations.qmlnew file+80
This diff is too big to show here.
Dash/Video/CarouselDelegateVideo.qml → qml/Stage/ResizeGrip.qmlrenamed+25−21
This diff is too big to show here.
qml/Stage/SideStage.qmlnew file+121
This diff is too big to show here.
qml/Stage/Splash.qmlnew file+150
This diff is too big to show here.
qml/Stage/Spread/BezierCurve.qmlnew file+45
This diff is too big to show here.
qml/Stage/Spread/KeySpline.jsnew file+66
This diff is too big to show here.
qml/Stage/Spread/MathUtils.jsnew file+95
This diff is too big to show here.
qml/Stage/Spread/OpacityMask.qmlnew file+82
This diff is too big to show here.
qml/Stage/Spread/Spread.qmlnew file+173
This diff is too big to show here.
qml/Stage/Spread/SpreadDelegateInputArea.qmlnew file+189
This diff is too big to show here.
qml/Stage/Spread/SpreadMaths.qmlnew file+78
This diff is too big to show here.
qml/Stage/Spread/StagedRightEdgeMaths.qmlnew file+174
This diff is too big to show here.
qml/Stage/Spread/WindowedRightEdgeMaths.qmlnew file+96
This diff is too big to show here.
qml/Stage/Spread/cubic-bezier.jsnew file+39
This diff is too big to show here.
qml/Stage/Stage.qmlnew file+2241
This diff is too big to show here.
qml/Stage/StageMaths.qmlnew file+93
This diff is too big to show here.
qml/Stage/StagedFullscreenPolicy.qmlnew file+50
This diff is too big to show here.
qml/Stage/SurfaceContainer.qmlnew file+108
This diff is too big to show here.
qml/Stage/TabletSideStageTouchGesture.qmlnew file+157
This diff is too big to show here.
qml/Stage/WindowControlsOverlay.qmlnew file+254
This diff is too big to show here.
qml/Stage/WindowDecoration.qmlnew file+163
This diff is too big to show here.
qml/Stage/WindowInfoItem.qmlnew file+69
This diff is too big to show here.
qml/Stage/WindowResizeArea.qmlnew file+300
This diff is too big to show here.
qml/Stage/WindowStateSaver.qmlnew file+64
This diff is too big to show here.
qml/Stage/WindowedFullscreenPolicy.qmlnew file+31
This diff is too big to show here.
qml/Stage/graphics/PageHeaderBaseDividerBottom@18.pngnew file
Binary file not shown.
qml/Stage/graphics/PageHeaderBaseDividerLight@18.pngnew file
Binary file not shown.
qml/Stage/graphics/PageHeaderBaseDividerLight@18.scinew file+5
This diff is too big to show here.
qml/Stage/graphics/arrows-centre.pngnew file
Binary file not shown.
qml/Stage/graphics/arrows.pngnew file
Binary file not shown.
qml/Stage/graphics/sidestage_drag.svgnew file+207
This diff is too big to show here.
qml/Stage/graphics/sidestage_handle@20.pngnew file
Binary file not shown.
SideStage/graphics/sidestage_handle@20.sci → qml/Stage/graphics/sidestage_handle@20.scirenamed
The content is the same.
qml/Stage/graphics/sidestage_open.svgnew file+181
This diff is too big to show here.
qml/Stage/graphics/window-close.svgnew file+64
This diff is too big to show here.
qml/Tutorial/InactivityTimer.qmlnew file+78
This diff is too big to show here.
qml/Tutorial/Tutorial.qmlnew file+105
This diff is too big to show here.
qml/Tutorial/TutorialContent.qmlnew file+225
This diff is too big to show here.
qml/Tutorial/TutorialLeft.qmlnew file+54
This diff is too big to show here.
qml/Tutorial/TutorialLeftLong.qmlnew file+56
This diff is too big to show here.
qml/Tutorial/TutorialPage.qmlnew file+121
This diff is too big to show here.
qml/Tutorial/TutorialRight.qmlnew file+61
This diff is too big to show here.
qml/Tutorial/TutorialTop.qmlnew file+60
This diff is too big to show here.
qml/Tutorial/graphics/arrow.svgnew file+19
This diff is too big to show here.
qml/Tutorial/graphics/background1.pngnew file
Binary file not shown.
qml/Tutorial/graphics/background2.pngnew file
Binary file not shown.
qml/Wizard/CheckableSetting.qmlnew file+92
This diff is too big to show here.
qml/Wizard/Components/InputMethod.qmlnew file+113
This diff is too big to show here.
qml/Wizard/Page.qmlnew file+340
This diff is too big to show here.
qml/Wizard/Pages.qmlnew file+269
This diff is too big to show here.
qml/Wizard/Pages/10-welcome-update.qmlnew file+137
This diff is too big to show here.
qml/Wizard/Pages/10-welcome.qmlnew file+197
This diff is too big to show here.
qml/Wizard/Pages/11-changelog.qmlnew file+95
This diff is too big to show here.
qml/Wizard/Pages/20-keyboard.qmlnew file+161
This diff is too big to show here.
qml/Wizard/Pages/30-wifi.qmlnew file+219
This diff is too big to show here.
qml/Wizard/Pages/50-timezone.qmlnew file+278
This diff is too big to show here.
qml/Wizard/Pages/60-account.qmlnew file+76
This diff is too big to show here.
qml/Wizard/Pages/70-passwd-type.qmlnew file+168
This diff is too big to show here.
qml/Wizard/Pages/78-firmware-update.qml.disablednew file+246
This diff is too big to show here.
qml/Wizard/Pages/79-system-update.qmlnew file+148
This diff is too big to show here.
qml/Wizard/Pages/80-finished.qmlnew file+137
This diff is too big to show here.
qml/Wizard/Pages/data/Desktop_header_bkg.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/Desktop_splash_screen_bkg.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/Phone_header_bkg.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/Phone_splash_screen_bkg.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/Tick@30.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/map.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/pin.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-1.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-10.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-11.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-2.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-3.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-3.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-4.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-4.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-6.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-7.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-8.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-9.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_-9.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_0.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_1.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_10.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_10.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_11.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_12.75.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_12.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_13.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_2.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_3.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_3.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_4.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_4.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_5.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_5.75.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_6.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_6.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_7.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_8.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_8.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_9.5.pngnew file
Binary file not shown.
qml/Wizard/Pages/data/timezonemap/timezone_9.pngnew file
Binary file not shown.
qml/Wizard/Pages/passcode-confirm.qmlnew file+69
This diff is too big to show here.
qml/Wizard/Pages/passcode-desktop.qmlnew file+159
This diff is too big to show here.
qml/Wizard/Pages/passcode-set.qmlnew file+78
This diff is too big to show here.
qml/Wizard/Pages/password-set.qmlnew file+158
This diff is too big to show here.
qml/Wizard/Pages/sim.qmlnew file+108
This diff is too big to show here.
qml/Wizard/PasswordMeter.qmlnew file+108
This diff is too big to show here.
qml/Wizard/StackButton.qmlnew file+42
This diff is too big to show here.
qml/Wizard/Wizard.qmlnew file+58
This diff is too big to show here.
qml/Wizard/WizardItemSelector.qmlnew file+129
This diff is too big to show here.
qml/Wizard/WizardTextField.qmlnew file+25
This diff is too big to show here.
qml/graphics/dropshadow2gu@30.pngnew file
Binary file not shown.
qml/graphics/dropshadow2gu@30.scinew file+5
This diff is too big to show here.
qml/graphics/dropshadow_left@20.pngnew file
Binary file not shown.
qml/graphics/dropshadow_right@20.pngnew file
Binary file not shown.
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.
src/ApplicationArguments.cppnew file+22
This diff is too big to show here.
src/ApplicationArguments.hnew file+58
This diff is too big to show here.
This diff is too big to show here.
src/CachingNetworkManagerFactory.cppnew file+54
This diff is too big to show here.
src/CachingNetworkManagerFactory.hnew file+47
This diff is too big to show here.
src/DebuggingController.cppnew file+92
This diff is too big to show here.
src/DebuggingController.hnew file+57
This diff is too big to show here.
src/MouseTouchAdaptor.cppnew file+419
This diff is too big to show here.
MouseTouchAdaptor.h → src/MouseTouchAdaptor.hrenamed+32−12
This diff is too big to show here.
src/Panel/CMakeLists.txtdeleted−1
This diff is too big to show here.
src/Panel/Indicators/CMakeLists.txtdeleted−2
This diff is too big to show here.
src/Panel/Indicators/servicefiles/CMakeLists.txtdeleted−18
This diff is too big to show here.
src/Panel/Indicators/servicefiles/com.canonical.indicator.batterydeleted−9
This diff is too big to show here.
src/Panel/Indicators/servicefiles/com.canonical.indicator.messagesdeleted−9
This diff is too big to show here.
src/Panel/Indicators/servicefiles/com.canonical.indicator.timedeleted−9
This diff is too big to show here.
src/Panel/Indicators/servicefiles/com.canonical.settings.networkdeleted−9
This diff is too big to show here.
src/Panel/Indicators/servicefiles/com.canonical.settings.sounddeleted−9
This diff is too big to show here.
src/SecondaryWindow.cppnew file+40
This diff is too big to show here.
Components/ListItems/ThinDivider.qml → src/SecondaryWindow.hrenamed+13−10
This diff is too big to show here.
src/ShellApplication.cppnew file+231
This diff is too big to show here.
src/ShellApplication.hnew file+61
This diff is too big to show here.
src/ShellView.cppnew file+85
This diff is too big to show here.
src/ShellView.hnew file+34
This diff is too big to show here.
src/UnityCommandLineParser.cppnew file+130
This diff is too big to show here.
src/UnityCommandLineParser.hnew file+60
This diff is too big to show here.
src/UnixSignalHandler.cppnew file+139
This diff is too big to show here.
src/UnixSignalHandler.hnew file+54
This diff is too big to show here.
src/libunity8-private/CMakeLists.txtnew file+27
This diff is too big to show here.
src/libunity8-private/abstractdbusservicemonitor.cppnew file+100
This diff is too big to show here.
src/libunity8-private/abstractdbusservicemonitor.hnew file+70
This diff is too big to show here.
src/libunity8-private/unitydbusobject.cppnew file+86
This diff is too big to show here.
src/libunity8-private/unitydbusobject.hnew file+46
This diff is too big to show here.
src/libunity8-private/unitydbusvirtualobject.cppnew file+83
This diff is too big to show here.
src/libunity8-private/unitydbusvirtualobject.hnew file+47
This diff is too big to show here.
This diff is too big to show here.
Dash/Music/MusicCarousel.qml → src/qmldebuggerutils.hrenamed+14−15
This diff is too big to show here.
tests/CMakeLists.txt+148−9
This diff is too big to show here.
tests/autopilot/setup.py+18−7
This diff is too big to show here.
tests/autopilot/unity8/__init__.py+146−5
This diff is too big to show here.
tests/autopilot/unity8/application_lifecycle/__init__.pynew file+20
This diff is too big to show here.
tests/autopilot/unity8/application_lifecycle/tests/__init__.pynew file+49
This diff is too big to show here.
tests/autopilot/unity8/application_lifecycle/tests/test_application_lifecycle.pynew file+141
This diff is too big to show here.
tests/autopilot/unity8/application_lifecycle/tests/test_url_dispatcher.pynew file+51
This diff is too big to show here.
tests/autopilot/unity8/fixture_setup.pynew file+329
This diff is too big to show here.
tests/autopilot/unity8/greeter/__init__.pynew file+97
This diff is too big to show here.
tests/autopilot/unity8/greeter/tests/__init__.pynew file+28
This diff is too big to show here.
tests/autopilot/unity8/greeter/tests/test_args.pynew file+49
This diff is too big to show here.
tests/autopilot/unity8/indicators/__init__.pynew file+203
This diff is too big to show here.
tests/autopilot/unity8/indicators/tests/__init__.pynew file+42
This diff is too big to show here.
tests/autopilot/unity8/indicators/tests/test_action_latency.pynew file+237
This diff is too big to show here.
tests/autopilot/unity8/indicators/tests/test_display_indicator.pynew file+52
This diff is too big to show here.
tests/autopilot/unity8/indicators/tests/test_indicators.pynew file+88
This diff is too big to show here.
tests/autopilot/unity8/indicators_client/__init__.pydeleted−8
This diff is too big to show here.
tests/autopilot/unity8/indicators_client/emulators/__init__.pydeleted−31
This diff is too big to show here.
tests/autopilot/unity8/indicators_client/emulators/common.pydeleted−14
This diff is too big to show here.
tests/autopilot/unity8/indicators_client/emulators/main_window.pydeleted−27
This diff is too big to show here.
tests/autopilot/unity8/indicators_client/tests/__init__.pydeleted−87
This diff is too big to show here.
tests/autopilot/unity8/indicators_client/tests/test_battery.pydeleted−99
This diff is too big to show here.
tests/autopilot/unity8/launcher.pynew file+66
This diff is too big to show here.
tests/autopilot/unity8/process_helpers.pynew file+191
This diff is too big to show here.
tests/autopilot/unity8/sensors.pynew file+93
This diff is too big to show here.
tests/autopilot/unity8/shell/__init__.py+262−5
This diff is too big to show here.
tests/autopilot/unity8/shell/create_interactive_notification.pynew file+101
This diff is too big to show here.
tests/autopilot/unity8/shell/emulators.pynew file+50
This diff is too big to show here.
tests/autopilot/unity8/shell/emulators/__init__.pydeleted−6
This diff is too big to show here.
tests/autopilot/unity8/shell/emulators/main_window.pydeleted−61
This diff is too big to show here.
tests/autopilot/unity8/shell/fixture_setup.pynew file+65
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/__init__.py+351−58
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/helpers.pydeleted−161
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/test_helpers.pynew file+44
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/test_lock_screen.pynew file+150
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/test_notifications.pynew file+725
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/test_rotation.pynew file+113
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/test_system_integration.pynew file+48
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/test_upstart.pynew file+137
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/testbigscreen.pydeleted−25
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/testhud.pydeleted−145
This diff is too big to show here.
tests/autopilot/unity8/shell/tests/testlockscreen.pydeleted−118
This diff is too big to show here.
tests/copyright/CMakeLists.txt+1−1
This diff is too big to show here.
tests/copyright/check_copyright.sh+35−4
This diff is too big to show here.
tests/data/unity/backgrounds/20x30.pngnew file
Binary file not shown.
tests/data/unity/backgrounds/black.pngnew file
Binary file not shown.
tests/data/unity/backgrounds/blue.pngnew file
Binary file not shown.
tests/data/unity/backgrounds/red.pngnew file
Binary file not shown.
tests/data/unity/indicators/com.canonical.indicator.fake1+5−4
This diff is too big to show here.
tests/data/unity/indicators/com.canonical.indicator.fake2+5−4
This diff is too big to show here.
tests/data/unity/indicators/com.canonical.indicator.fake3+5−4
This diff is too big to show here.
tests/data/unity/indicators/com.canonical.indicator.fake4+5−4
This diff is too big to show here.
tests/graphics/applicationIcons/browser@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/calendar@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/camera@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/contacts-app@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/dash@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/dialer-app@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/evernote@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/facebook@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/gallery@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/gmail@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/libreoffice@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/map@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/messages-app@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/notepad@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/pinterest@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/soundcloud@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/system-settings@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/twitter@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/weather@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/wikipedia@18.pngnew file
Binary file not shown.
tests/graphics/applicationIcons/youtube@18.pngnew file
Binary file not shown.
tests/graphics/avatars/amanda@12.pngnew file
Binary file not shown.
tests/graphics/avatars/anna_olsson@12.pngnew file
Binary file not shown.
tests/graphics/avatars/funky@12.pngnew file
Binary file not shown.
tests/graphics/clock@18.pngnew file
Binary file not shown.
Dash/graphics/phone/screenshots/gallery@12.png → tests/graphics/screenshots/gallery@12.pngrenamed
Binary file not shown.
tests/imports/CMakeLists.txtnew file+5
This diff is too big to show here.
tests/imports/check_imports.pynew file+183
This diff is too big to show here.
tests/mocks/AccountsService/AccountsService.cppnew file+214
This diff is too big to show here.
tests/mocks/AccountsService/AccountsService.hnew file+148
This diff is too big to show here.
tests/mocks/AccountsService/CMakeLists.txtnew file+24
This diff is too big to show here.
tests/mocks/AccountsService/plugin.cppnew file+37
This diff is too big to show here.
tests/mocks/AccountsService/plugin.hnew file+35
This diff is too big to show here.
tests/mocks/AccountsService/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Biometryd/CMakeLists.txtnew file+14
This diff is too big to show here.
tests/mocks/Biometryd/MockBiometryd.cppnew file+43
This diff is too big to show here.
tests/mocks/Biometryd/MockBiometryd.hnew file+50
This diff is too big to show here.
tests/mocks/Biometryd/MockDevice.cppnew file+29
This diff is too big to show here.
tests/mocks/Biometryd/MockDevice.hnew file+40
This diff is too big to show here.
tests/mocks/Biometryd/MockIdentifier.cppnew file+28
This diff is too big to show here.
tests/mocks/Biometryd/MockIdentifier.hnew file+36
This diff is too big to show here.
tests/mocks/Biometryd/MockObserver.cppnew file+22
This diff is too big to show here.
tests/plugins/Unity/previewbindingstest.h → tests/mocks/Biometryd/MockObserver.hrenamed+14−12
This diff is too big to show here.
tests/mocks/Biometryd/MockOperation.cppnew file+56
This diff is too big to show here.
tests/mocks/Biometryd/MockOperation.hnew file+47
This diff is too big to show here.
tests/mocks/Biometryd/plugin.cppnew file+41
This diff is too big to show here.
tests/mocks/Biometryd/plugin.hnew file+31
This diff is too big to show here.
tests/mocks/Biometryd/qmldirnew file+3
This diff is too big to show here.
tests/mocks/CMakeLists.txt+50−2
This diff is too big to show here.
tests/mocks/Cursor/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/Cursor/Cursor.qmlnew file+34
This diff is too big to show here.
tests/mocks/Cursor/qmldirnew file+2
This diff is too big to show here.
tests/mocks/GSettings.1.0/CMakeLists.txtnew file+19
This diff is too big to show here.
tests/mocks/GSettings.1.0/fake_gsettings.cppnew file+417
This diff is too big to show here.
tests/mocks/GSettings.1.0/fake_gsettings.hnew file+180
This diff is too big to show here.
tests/mocks/GSettings.1.0/plugin.cppnew file+33
This diff is too big to show here.
plugins/HudClient/plugin.h → tests/mocks/GSettings.1.0/plugin.hrenamed+5−5
This diff is too big to show here.
tests/mocks/GSettings.1.0/qmldirnew file+3
This diff is too big to show here.
tests/mocks/HudClient/CMakeLists.txtdeleted−46
This diff is too big to show here.
tests/mocks/HudClient/fake_hud_plugin.cppdeleted−39
This diff is too big to show here.
tests/mocks/HudClient/fake_libhud_client.cppdeleted−240
This diff is too big to show here.
tests/mocks/HudClient/libhud_client_stub.cppdeleted−93
This diff is too big to show here.
tests/mocks/HudClient/libhud_client_stub.hdeleted−64
This diff is too big to show here.
tests/mocks/HudClient/qmldirdeleted−1
This diff is too big to show here.
tests/mocks/LightDM/CMakeLists.txtdeleted−55
This diff is too big to show here.
tests/mocks/LightDM/QLightDM/Greeterdeleted−1
This diff is too big to show here.
tests/mocks/LightDM/QLightDM/InfographicModeldeleted−1
This diff is too big to show here.
tests/mocks/LightDM/QLightDM/UsersModeldeleted−1
This diff is too big to show here.
tests/mocks/LightDM/demo/InfographicModelPrivate.cppdeleted−91
This diff is too big to show here.
tests/mocks/LightDM/full/CMakeLists.txtdeleted−18
This diff is too big to show here.
tests/mocks/LightDM/full/InfographicModelPrivate.cppdeleted−182
This diff is too big to show here.
tests/mocks/LightDM/full/UsersModelPrivate.cppdeleted−52
This diff is too big to show here.
tests/mocks/LightDM/single-passphrase/CMakeLists.txtdeleted−19
This diff is too big to show here.
tests/mocks/LightDM/single-passphrase/GreeterPrivate.cppdeleted−53
This diff is too big to show here.
tests/mocks/LightDM/single-passphrase/InfographicModelPrivate.cppdeleted−61
This diff is too big to show here.
tests/mocks/LightDM/single-pin/CMakeLists.txtdeleted−19
This diff is too big to show here.
tests/mocks/LightDM/single-pin/GreeterPrivate.cppdeleted−53
This diff is too big to show here.
tests/mocks/LightDM/single-pin/InfographicModelPrivate.cppdeleted−61
This diff is too big to show here.
tests/mocks/LightDM/single/CMakeLists.txtdeleted−18
This diff is too big to show here.
tests/mocks/LightDMController/CMakeLists.txtnew file+14
This diff is too big to show here.
tests/mocks/LightDMController/plugin.cppnew file+35
This diff is too big to show here.
tests/mocks/HudClient/fake_hud_plugin.h → tests/mocks/LightDMController/plugin.hrenamed+6−8
This diff is too big to show here.
tests/mocks/LightDMController/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Lights/CMakeLists.txtnew file+8
This diff is too big to show here.
tests/mocks/Lights/Lights.cppnew file+84
This diff is too big to show here.
tests/mocks/Lights/Lights.hnew file+66
This diff is too big to show here.
plugins/HudClient/plugin.cpp → tests/mocks/Lights/plugin.cpprenamed+12−15
This diff is too big to show here.
tests/mocks/Lights/plugin.hnew file+32
This diff is too big to show here.
tests/mocks/Lights/qmldirnew file+3
This diff is too big to show here.
tests/mocks/MeeGo/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/CMakeLists.txtnew file+11
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/MockOfonoSimManager.qmlnew file+53
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/MockQOfono.cppnew file+90
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/MockQOfono.hnew file+61
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/MockQOfonoManager.cppnew file+66
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/MockQOfonoManager.hnew file+49
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/plugin.cppnew file+35
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/plugin.hnew file+31
This diff is too big to show here.
tests/mocks/MeeGo/QOfono/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Powerd/CMakeLists.txtnew file+10
This diff is too big to show here.
tests/mocks/LightDM/single/UsersModelPrivate.cpp → tests/mocks/Powerd/Powerd.cpprenamed+13−8
This diff is too big to show here.
tests/mocks/Powerd/Powerd.hnew file+58
This diff is too big to show here.
tests/mocks/Powerd/plugin.cppnew file+35
This diff is too big to show here.
tests/mocks/Powerd/plugin.hnew file+34
This diff is too big to show here.
tests/mocks/Powerd/qmldirnew file+3
This diff is too big to show here.
tests/mocks/QMenuModel/CMakeLists.txtnew file+25
This diff is too big to show here.
tests/mocks/QMenuModel/QDBusActionGroup.qmlnew file+52
This diff is too big to show here.
plugins/Unity/genericpreview.cpp → tests/mocks/QMenuModel/UnityMenuAction.qmlrenamed+11−12
This diff is too big to show here.
tests/mocks/QMenuModel/actiondata.hnew file+54
This diff is too big to show here.
Panel/PanelBackground.qml → tests/mocks/QMenuModel/actionstateparser.cpprenamed+3−5
This diff is too big to show here.
plugins/Unity/genericpreview.h → tests/mocks/QMenuModel/actionstateparser.hrenamed+11−22
This diff is too big to show here.
tests/mocks/QMenuModel/dbus-enums.hnew file+51
This diff is too big to show here.
tests/mocks/QMenuModel/plugin.cppnew file+43
This diff is too big to show here.
tests/mocks/QMenuModel/plugin.hnew file+34
This diff is too big to show here.
tests/mocks/QMenuModel/qmldirnew file+6
This diff is too big to show here.
tests/mocks/QMenuModel/unitymenumodel.cppnew file+310
This diff is too big to show here.
tests/mocks/QMenuModel/unitymenumodel.hnew file+115
This diff is too big to show here.
tests/mocks/QtMultimedia/CMakeLists.txtnew file+15
This diff is too big to show here.
tests/mocks/QtMultimedia/VideoSurface.qmlnew file+111
This diff is too big to show here.
tests/mocks/QtMultimedia/declarativeplaylist.cppnew file+73
This diff is too big to show here.
tests/mocks/QtMultimedia/declarativeplaylist.hnew file+54
This diff is too big to show here.
tests/mocks/QtMultimedia/mediaplayer.cppnew file+319
This diff is too big to show here.
tests/mocks/QtMultimedia/mediaplayer.hnew file+224
This diff is too big to show here.
Dash/PreviewDelegateMapper.qml → tests/mocks/QtMultimedia/plugin.cpprenamed+17−16
This diff is too big to show here.
tests/mocks/QtMultimedia/plugin.hnew file+34
This diff is too big to show here.
tests/mocks/QtMultimedia/qmldirnew file+3
This diff is too big to show here.
tests/mocks/QtMultimedia/videooutput.cppnew file+127
This diff is too big to show here.
tests/mocks/QtMultimedia/videooutput.hnew file+52
This diff is too big to show here.
tests/mocks/SessionBroadcast/CMakeLists.txtnew file+8
This diff is too big to show here.
plugins/Unity/bottombarvisibilitycommunicatorshell.cpp → tests/mocks/SessionBroadcast/SessionBroadcast.cpprenamed+10−11
This diff is too big to show here.
tests/mocks/SessionBroadcast/SessionBroadcast.hnew file+39
This diff is too big to show here.
plugins/ListViewWithPageHeader/plugin.cpp → tests/mocks/SessionBroadcast/plugin.cpprenamed+10−8
This diff is too big to show here.
tests/mocks/SessionBroadcast/plugin.hnew file+32
This diff is too big to show here.
tests/mocks/SessionBroadcast/qmldirnew file+2
This diff is too big to show here.
tests/mocks/UInput/CMakeLists.txtnew file+7
This diff is too big to show here.
tests/mocks/UInput/mockuinput.cppnew file+73
This diff is too big to show here.
tests/mocks/UInput/mockuinput.hnew file+63
This diff is too big to show here.
tests/mocks/UInput/plugin.cppnew file+26
This diff is too big to show here.
tests/mocks/UInput/plugin.hnew file+32
This diff is too big to show here.
tests/mocks/UInput/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationImage.cppdeleted−123
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationImage.hdeleted−79
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationInfo.cppdeleted−91
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationInfo.hdeleted−103
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationManager.cppdeleted−449
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationManager.hdeleted−123
This diff is too big to show here.
tests/mocks/Ubuntu/Application/CMakeLists.txtdeleted−35
This diff is too big to show here.
tests/mocks/Ubuntu/Application/plugin.cppdeleted−38
This diff is too big to show here.
tests/mocks/Ubuntu/Application/qmldirdeleted−3
This diff is too big to show here.
tests/mocks/Ubuntu/CMakeLists.txt+6−1
This diff is too big to show here.
tests/mocks/Ubuntu/Connectivity/CMakeLists.txtnew file+10
This diff is too big to show here.
tests/mocks/Ubuntu/Connectivity/networking-status.cppnew file+70
This diff is too big to show here.
tests/mocks/Ubuntu/Connectivity/networking-status.hnew file+74
This diff is too big to show here.
tests/mocks/Ubuntu/Connectivity/plugin.cppnew file+47
This diff is too big to show here.
tests/mocks/Ubuntu/Connectivity/plugin.hnew file+35
This diff is too big to show here.
tests/mocks/Ubuntu/Connectivity/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/DownloadDaemonListener/CMakeLists.txtnew file+10
This diff is too big to show here.
tests/mocks/Ubuntu/DownloadDaemonListener/MockDownloadTracker.cppnew file+74
This diff is too big to show here.
tests/mocks/Ubuntu/DownloadDaemonListener/MockDownloadTracker.hnew file+67
This diff is too big to show here.
tests/mocks/Ubuntu/DownloadDaemonListener/plugin.cppnew file+27
This diff is too big to show here.
tests/mocks/Ubuntu/Application/plugin.h → tests/mocks/Ubuntu/DownloadDaemonListener/plugin.hrenamed+2−2
This diff is too big to show here.
tests/mocks/Ubuntu/DownloadDaemonListener/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/CMakeLists.txtnew file+5
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/Diagnostics/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/Diagnostics/MockDiagnostics.qmlnew file+24
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/Diagnostics/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/LanguagePlugin/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_widget1.qml → tests/mocks/Ubuntu/SystemSettings/LanguagePlugin/MockKeyboardPlugin.qmlrenamed+4−6
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/LanguagePlugin/MockLanguagePlugin.qmlnew file+24
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/LanguagePlugin/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/CMakeLists.txtnew file+10
This diff is too big to show here.
plugins/Utils/ubuntuwindow.cpp → tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/MockSecurityPrivacy.cpprenamed+10−11
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/MockSecurityPrivacy.hnew file+50
This diff is too big to show here.
tests/mocks/LightDM/single-pin/UsersModelPrivate.cpp → tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/plugin.cpprenamed+7−14
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/plugin.hnew file+31
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/SecurityPrivacy/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/TimeDate/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/TimeDate/MockTimeDate.qmlnew file+37
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/TimeDate/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/Update/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/Update/MockSystemImage.qmlnew file+30
This diff is too big to show here.
tests/mocks/Ubuntu/SystemSettings/Update/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/CMakeLists.txtnew file+14
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/ContactWatcherData.cppnew file+43
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/ContactWatcherData.hnew file+46
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockCallEntry.cppnew file+91
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockCallEntry.hnew file+65
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockCallManager.cppnew file+80
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockCallManager.hnew file+60
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockContactWatcher.cppnew file+50
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockContactWatcher.hnew file+49
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockTelepathyHelper.cppnew file+62
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/MockTelepathyHelper.hnew file+58
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/plugin.cppnew file+52
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/plugin.hnew file+37
This diff is too big to show here.
tests/mocks/Ubuntu/Telephony/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Ubuntu/Thumbnailer/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/mocks/Ubuntu/Thumbnailer/qmldirnew file+4
This diff is too big to show here.
tests/mocks/Ubuntu/Web/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/qmltests/Dash/qml/fake_scopeView1.qml → tests/mocks/Ubuntu/Web/WebView.qmlrenamed+7−6
This diff is too big to show here.
tests/mocks/Ubuntu/Web/qmldirnew file+4
This diff is too big to show here.
tests/mocks/Unity/Application/ApplicationInfo.cppnew file+420
This diff is too big to show here.
tests/mocks/Unity/Application/ApplicationInfo.hnew file+158
This diff is too big to show here.
tests/mocks/Ubuntu/Application/ApplicationListModel.cpp → tests/mocks/Unity/Application/ApplicationListModel.cpprenamed
The content is the same.
tests/mocks/Ubuntu/Application/ApplicationListModel.h → tests/mocks/Unity/Application/ApplicationListModel.hrenamed
The content is the same.
tests/mocks/Unity/Application/ApplicationManager.cppnew file+569
This diff is too big to show here.
tests/mocks/Unity/Application/ApplicationManager.hnew file+117
This diff is too big to show here.
tests/mocks/Unity/Application/CMakeLists.txtnew file+35
This diff is too big to show here.
tests/mocks/Unity/Application/MirMock.cppnew file+62
This diff is too big to show here.
tests/mocks/Unity/Application/MirMock.hnew file+43
This diff is too big to show here.
tests/mocks/Unity/Application/MirSurface.cppnew file+559
This diff is too big to show here.
tests/mocks/Unity/Application/MirSurface.hnew file+237
This diff is too big to show here.
tests/mocks/Unity/Application/MirSurfaceItem.cppnew file+415
This diff is too big to show here.
tests/mocks/Unity/Application/MirSurfaceItem.hnew file+138
This diff is too big to show here.
tests/mocks/Unity/Application/MirSurfaceListModel.cppnew file+136
This diff is too big to show here.
tests/mocks/Unity/Application/MirSurfaceListModel.hnew file+54
This diff is too big to show here.
tests/mocks/Unity/Application/ObjectListModel.hnew file+108
This diff is too big to show here.
tests/mocks/Unity/Application/SurfaceManager.cppnew file+281
This diff is too big to show here.
tests/mocks/Unity/Application/SurfaceManager.hnew file+116
This diff is too big to show here.
tests/mocks/Unity/Application/VirtualKeyboard.cppnew file+58
This diff is too big to show here.
tests/mocks/Unity/Application/VirtualKeyboard.hnew file+37
This diff is too big to show here.
tests/mocks/Unity/Application/plugin.cppnew file+68
This diff is too big to show here.
tests/mocks/Unity/Application/plugin.hnew file+31
This diff is too big to show here.
tests/mocks/Unity/Application/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Unity/Application/resources/Kate.qmlnew file+49
This diff is too big to show here.
tests/mocks/Unity/Application/resources/KateDialog.qmlnew file+48
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/edgeDragExample.qml → tests/mocks/Unity/Application/resources/KateMenu.qmlrenamed+17−16
This diff is too big to show here.
tests/mocks/Unity/Application/resources/MirSurfaceItem.qmlnew file+126
This diff is too big to show here.
tests/mocks/Unity/Application/resources/VirtualKeyboard.qmlnew file+41
This diff is too big to show here.
tests/mocks/Unity/Application/resources/screenshots/browser@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/camera@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/dialer@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/facebook@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/gallery@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/gmail-webapp.svgnew file+343
This diff is too big to show here.
tests/mocks/Unity/Application/resources/screenshots/libreoffice@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/map@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/music@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/twitter@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/ubuntu-weather-app.svgnew file+201
This diff is too big to show here.
tests/mocks/Unity/Application/resources/screenshots/unity8-dash@12.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/screenshots/vkb_portrait.pngnew file
Binary file not shown.
tests/mocks/Unity/Application/resources/surfaces.qrcnew file+23
This diff is too big to show here.
tests/mocks/Unity/Application/resources/vkb_portrait.pngnew file
Binary file not shown.
tests/mocks/Unity/ApplicationMenu/CMakeLists.txtnew file+18
This diff is too big to show here.
tests/mocks/Unity/ApplicationMenu/mockapplicationmenuregistry.cppnew file+47
This diff is too big to show here.
tests/mocks/Unity/ApplicationMenu/mockapplicationmenuregistry.hnew file+41
This diff is too big to show here.
tests/mocks/Unity/ApplicationMenu/plugin.cppnew file+42
This diff is too big to show here.
tests/mocks/Unity/ApplicationMenu/plugin.hnew file+32
This diff is too big to show here.
tests/mocks/Unity/ApplicationMenu/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Unity/CMakeLists.txt+7−44
This diff is too big to show here.
tests/mocks/Unity/Connectivity/CMakeLists.txtnew file+10
This diff is too big to show here.
tests/mocks/Unity/Connectivity/MockConnectivity.cppnew file+27
This diff is too big to show here.
tests/mocks/Unity/Connectivity/MockConnectivity.hnew file+36
This diff is too big to show here.
tests/mocks/Unity/Connectivity/plugin.cppnew file+34
This diff is too big to show here.
tests/mocks/Unity/Connectivity/plugin.hnew file+31
This diff is too big to show here.
tests/mocks/Unity/Connectivity/qmldirnew file+3
This diff is too big to show here.
tests/mocks/Unity/Indicators/ActionRootState.qmlnew file+46
This diff is too big to show here.
tests/mocks/Unity/Indicators/CMakeLists.txt+15−28
This diff is too big to show here.
tests/mocks/Unity/Indicators/IndicatorsModel.qml+230−73
This diff is too big to show here.
tests/mocks/Unity/Indicators/ModelActionRootState.qmlnew file+81
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeindicatorsmodel.cppnew file+157
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeindicatorsmodel.hnew file+70
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeindicatorsmodeldata.jsnew file+1328
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeplugin.cpp+29−2
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeplugin.h+1−1
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeunitymenumodelcache.cppnew file+59
This diff is too big to show here.
tests/mocks/Unity/Indicators/fakeunitymenumodelcache.hnew file+45
This diff is too big to show here.
tests/mocks/Unity/Indicators/indicators_fake.qrcdeleted−14
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/FakeMenuPage.qmldeleted−37
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_page1.qmldeleted−44
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_page2.qmldeleted−44
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_page3.qmldeleted−44
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_page4.qmldeleted−44
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_page5.qmldeleted−44
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_widget4.qmldeleted−23
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_widget5.qmldeleted−23
This diff is too big to show here.
tests/mocks/Unity/Indicators/qmldir+3−1
This diff is too big to show here.
tests/mocks/Unity/InputInfo/CMakeLists.txtnew file+31
This diff is too big to show here.
tests/mocks/Unity/InputInfo/mockcontroller.cppnew file+35
This diff is too big to show here.
tests/mocks/Unity/InputInfo/mockcontroller.hnew file+34
This diff is too big to show here.
tests/mocks/Unity/InputInfo/plugin.cppnew file+46
This diff is too big to show here.
Panel/Indicators/MessagingIndicatorWidget.qml → tests/mocks/Unity/InputInfo/plugin.hrenamed+14−9
This diff is too big to show here.
tests/mocks/Unity/InputInfo/qinputdeviceinfo_mock.cppnew file+56
This diff is too big to show here.
tests/mocks/Unity/InputInfo/qinputdeviceinfo_mock_p.hnew file+58
This diff is too big to show here.
tests/mocks/Unity/InputInfo/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Unity/Launcher/CMakeLists.txt+7−9
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockAppDrawerModel.cppnew file+98
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockAppDrawerModel.hnew file+43
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockLauncherItem.cpp+97−3
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockLauncherItem.h+36−15
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockLauncherModel.cpp+171−22
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockLauncherModel.h+26−8
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockQuickListModel.cpp+8−2
This diff is too big to show here.
tests/mocks/Unity/Launcher/MockQuickListModel.h+4−2
This diff is too big to show here.
tests/mocks/Unity/Launcher/plugin.cpp+7
This diff is too big to show here.
tests/mocks/Unity/Launcher/plugin.h+1−1
This diff is too big to show here.
tests/mocks/Unity/Launcher/qmldir+1
This diff is too big to show here.
tests/mocks/Unity/Notifications/CMakeLists.txtnew file+16
This diff is too big to show here.
tests/mocks/Unity/Notifications/MockActionModel.cppnew file+74
This diff is too big to show here.
tests/mocks/Unity/Notifications/MockActionModel.hnew file+53
This diff is too big to show here.
tests/mocks/Unity/Notifications/MockNotification.cppnew file+198
This diff is too big to show here.
tests/mocks/Unity/Notifications/MockNotification.hnew file+101
This diff is too big to show here.
tests/mocks/Unity/Notifications/MockNotificationModel.cppnew file+169
This diff is too big to show here.
tests/mocks/Unity/Notifications/MockNotificationModel.hnew file+70
This diff is too big to show here.
tests/mocks/Unity/Notifications/notification.jsdeleted−23
This diff is too big to show here.
plugins/Unity/Indicators/Messaging/qml/TextMessage.qml → tests/mocks/Unity/Notifications/plugin.cpprenamed+13−15
This diff is too big to show here.
tests/mocks/Unity/Notifications/plugin.hnew file+34
This diff is too big to show here.
tests/mocks/Unity/Notifications/qmldir+3−1
This diff is too big to show here.
tests/mocks/Unity/Platform/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/qmltests/Dash/qml/fake_generic_scopeView.qml → tests/mocks/Unity/Platform/MockPlatform.qmlrenamed+7−6
This diff is too big to show here.
tests/mocks/Unity/Platform/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Unity/Screens/CMakeLists.txtnew file+14
This diff is too big to show here.
tests/mocks/Unity/Screens/plugin.cppnew file+29
This diff is too big to show here.
tests/mocks/Unity/Screens/plugin.hnew file+25
This diff is too big to show here.
tests/mocks/Unity/Screens/qmldirnew file+2
This diff is too big to show here.
tests/mocks/Unity/Screens/screens.cppnew file+71
This diff is too big to show here.
tests/mocks/Unity/Screens/screens.hnew file+82
This diff is too big to show here.
tests/mocks/Unity/fake_categories.cppdeleted−178
This diff is too big to show here.
tests/mocks/Unity/fake_categories.hdeleted−69
This diff is too big to show here.
tests/mocks/Unity/fake_scope.cppdeleted−200
This diff is too big to show here.
tests/mocks/Unity/fake_scope.hdeleted−95
This diff is too big to show here.
tests/mocks/Unity/fake_scopes.cppdeleted−146
This diff is too big to show here.
tests/mocks/Unity/fake_scopes.hdeleted−79
This diff is too big to show here.
tests/mocks/Unity/fake_unity_plugin.cppdeleted−43
This diff is too big to show here.
tests/mocks/Unity/qmldirdeleted−2
This diff is too big to show here.
tests/mocks/Utils/CMakeLists.txtnew file+61
This diff is too big to show here.
tests/mocks/Utils/EdgeBarrierSettings.qmlnew file+22
This diff is too big to show here.
tests/mocks/Utils/Style.jsnew file+37
This diff is too big to show here.
Hud/ToolBarIcon.qml → tests/mocks/Utils/URLDispatcher.cpprenamed+18−12
This diff is too big to show here.
tests/mocks/Utils/URLDispatcher.hnew file+47
This diff is too big to show here.
SideStage/SidestageHandle.qml → tests/mocks/Utils/WindowInputMonitor.qmlrenamed+6−5
This diff is too big to show here.
plugins/Unity/Indicators/qml/HLine.qml → tests/mocks/Utils/constants.cpprenamed+10−15
This diff is too big to show here.
tests/mocks/Utils/constants.hnew file+43
This diff is too big to show here.
tests/mocks/Utils/plugin.cppnew file+93
This diff is too big to show here.
tests/mocks/Utils/plugin.hnew file+32
This diff is too big to show here.
tests/mocks/Utils/qmldirnew file+6
This diff is too big to show here.
tests/mocks/Utils/windowstatestorage.cppnew file+100
This diff is too big to show here.
tests/mocks/Utils/windowstatestorage.hnew file+77
This diff is too big to show here.
tests/mocks/Wizard/CMakeLists.txtnew file+20
This diff is too big to show here.
tests/mocks/Wizard/MockSystem.cppnew file+64
This diff is too big to show here.
tests/mocks/Wizard/MockSystem.hnew file+61
This diff is too big to show here.
tests/mocks/Wizard/mockplugin.cppnew file+38
This diff is too big to show here.
tests/mocks/Wizard/mockplugin.hnew file+32
This diff is too big to show here.
tests/mocks/Wizard/qmldirnew file+3
This diff is too big to show here.
tests/mocks/data/applications/webbrowser-app.desktopnew file
No changes to the content.
tests/mocks/data/unity/indicators/com.canonical.indicator.mocknew file+10
This diff is too big to show here.
tests/mocks/indicator-service/CMakeLists.txtnew file+19
This diff is too big to show here.
tests/mocks/indicator-service/mock-indicator-service.cnew file+325
This diff is too big to show here.
tests/mocks/liblightdm/CMakeLists.txtnew file+18
This diff is too big to show here.
tests/mocks/LightDM/full/GreeterPrivate.cpp → tests/mocks/liblightdm/GreeterPrivate.cpprenamed+44−10
This diff is too big to show here.
tests/mocks/liblightdm/GreeterPrivate.hnew file+54
This diff is too big to show here.
tests/mocks/liblightdm/MockController.cppnew file+192
This diff is too big to show here.
tests/mocks/liblightdm/MockController.hnew file+106
This diff is too big to show here.
tests/mocks/liblightdm/MockGreeter.cppnew file+316
This diff is too big to show here.
tests/mocks/liblightdm/MockGreeter.hnew file+102
This diff is too big to show here.
tests/mocks/liblightdm/MockSessionsModel.cppnew file+118
This diff is too big to show here.
tests/mocks/liblightdm/MockSessionsModel.hnew file+64
This diff is too big to show here.
tests/mocks/liblightdm/MockUsersModel.cppnew file+220
This diff is too big to show here.
tests/mocks/liblightdm/MockUsersModel.hnew file+61
This diff is too big to show here.
tests/mocks/liblightdm/SessionsModelPrivate.cppnew file+83
This diff is too big to show here.
tests/mocks/liblightdm/SessionsModelPrivate.hnew file+63
This diff is too big to show here.
tests/mocks/liblightdm/UsersModelPrivate.cppnew file+124
This diff is too big to show here.
tests/mocks/LightDM/UsersModelPrivate.h → tests/mocks/liblightdm/UsersModelPrivate.hrenamed+8−3
This diff is too big to show here.
tests/mocks/LightDM/demo/CMakeLists.txt → tests/mocks/liblightdm/demo/CMakeLists.txtrenamed+1−2
This diff is too big to show here.
tests/mocks/LightDM/demo/GreeterPrivate.cpp → tests/mocks/liblightdm/demo/GreeterPrivate.cpprenamed+6−2
This diff is too big to show here.
tests/mocks/LightDM/single-passphrase/UsersModelPrivate.cpp → tests/mocks/liblightdm/demo/UsersModelPrivate.cpprenamed+11−3
This diff is too big to show here.
tests/mocks/LightDM/qmldir → tests/mocks/liblightdm/qmldirrenamed+1
This diff is too big to show here.
tests/mocks/libusermetrics/CMakeLists.txt+7−2
This diff is too big to show here.
tests/mocks/libusermetrics/ColorTheme.cpp+4
This diff is too big to show here.
tests/mocks/libusermetrics/ColorTheme.h+2−1
This diff is too big to show here.
tests/mocks/libusermetrics/UserMetrics.cpp+55−21
This diff is too big to show here.
tests/mocks/libusermetrics/UserMetrics.h+2
This diff is too big to show here.
tests/mocks/libusermetrics/libusermetricsoutput/ColorTheme.hdeleted−1
This diff is too big to show here.
tests/mocks/libusermetrics/libusermetricsoutput/UserMetrics.hdeleted−1
This diff is too big to show here.
tests/plugins/AccountsService/AccountsServer.cppnew file+57
This diff is too big to show here.
tests/plugins/AccountsService/AccountsServer.hnew file+44
This diff is too big to show here.
tests/plugins/AccountsService/CMakeLists.txtnew file+67
This diff is too big to show here.
tests/plugins/AccountsService/PropertiesServer.cppnew file+142
This diff is too big to show here.
tests/plugins/AccountsService/PropertiesServer.hnew file+58
This diff is too big to show here.
tests/plugins/AccountsService/UscServer.cppnew file+28
This diff is too big to show here.
tests/plugins/AccountsService/UscServer.hnew file+39
This diff is too big to show here.
tests/plugins/AccountsService/client.cppnew file+355
This diff is too big to show here.
tests/plugins/AccountsService/interfaces.xmlnew file+70
This diff is too big to show here.
tests/plugins/AccountsService/server.cppnew file+57
This diff is too big to show here.
tests/plugins/AccountsService/types.hnew file+25
This diff is too big to show here.
tests/plugins/CMakeLists.txt+9−2
This diff is too big to show here.
tests/plugins/Cursor/CMakeLists.txtnew file+8
This diff is too big to show here.
tests/plugins/Cursor/TextEntry.qmlnew file+34
This diff is too big to show here.
tests/plugins/Cursor/tst_Cursor.qmlnew file+151
This diff is too big to show here.
tests/plugins/GlobalShortcut/CMakeLists.txtnew file+19
This diff is too big to show here.
tests/plugins/GlobalShortcut/GlobalShortcutTest.cppnew file+78
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/TestButton.qml → tests/plugins/GlobalShortcut/shortcut.qmlrenamed+17−19
This diff is too big to show here.
tests/plugins/Greeter/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/plugins/Greeter/Unity/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/plugins/Greeter/Unity/Launcher/CMakeLists.txtnew file+42
This diff is too big to show here.
tests/plugins/Greeter/Unity/Launcher/launchermodelastest.cppnew file+240
This diff is too big to show here.
tests/plugins/LightDM/CMakeLists.txtnew file+1
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/CMakeLists.txtnew file+157
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/dbus.cppnew file+223
This diff is too big to show here.
Components/BaseCarouselDelegate.qml → tests/plugins/LightDM/IntegratedLightDM/greeter.qmlrenamed+4−5
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/integrated.cppnew file+88
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/pam.cppnew file+54
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/promptsmodel.cppnew file+175
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/sessionsmodel.cppnew file+134
This diff is too big to show here.
tests/plugins/LightDM/IntegratedLightDM/usersmodel.cppnew file+168
This diff is too big to show here.
tests/plugins/ListViewWithPageHeader/CMakeLists.txtdeleted−31
This diff is too big to show here.
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertest.cppdeleted−1375
This diff is too big to show here.
tests/plugins/ListViewWithPageHeader/listviewwithpageheadertestsection.cppdeleted−1627
This diff is too big to show here.
tests/plugins/ListViewWithPageHeader/test.qmldeleted−96
This diff is too big to show here.
tests/plugins/ListViewWithPageHeader/test_section.qmldeleted−106
This diff is too big to show here.
tests/plugins/SessionBroadcast/BroadcastServer.cppnew file+33
This diff is too big to show here.
tests/plugins/SessionBroadcast/BroadcastServer.hnew file+40
This diff is too big to show here.
tests/plugins/SessionBroadcast/CMakeLists.txtnew file+51
This diff is too big to show here.
tests/plugins/SessionBroadcast/interfaces.xmlnew file+18
This diff is too big to show here.
tests/plugins/SessionBroadcast/server.cppnew file+37
This diff is too big to show here.
tests/plugins/SessionBroadcast/sessionbroadcasttest.cppnew file+111
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/CMakeLists.txt+52−37
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/DownwardsLauncher.qmldeleted−87
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/GestureTest.cppnew file+193
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/GestureTest.hnew file+102
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/LeftwardsLauncher.qmldeleted−90
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/RightwardsLauncher.qmldeleted−87
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/TestItem.cppnew file+30
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/TestItem.hnew file+33
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/UpwardsLauncher.qmldeleted−90
This diff is too big to show here.
tests/mocks/Unity/Indicators/qml/fake_menu_widget2.qml → tests/plugins/Ubuntu/Gestures/empty.qmlrenamed+5−6
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/touchGateExample.qmlnew file+27
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_AxisVelocityCalculator.cpp+5−5
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_DirectionalDragArea.cppdeleted−551
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_FloatingFlickable.cppnew file+131
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_FloatingFlickable.qmlnew file+81
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_PressedOutsideNotifier.cppnew file+150
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_PressedOutsideNotifier.qmlnew file+62
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_TouchDispatcher.cppnew file+148
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_TouchGate.cppnew file+392
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_TouchGestureArea.cppnew file+300
This diff is too big to show here.
tests/plugins/Ubuntu/Gestures/tst_TouchGestureArea.qmlnew file+90
This diff is too big to show here.
tests/plugins/Unity/CMakeLists.txt+3−39
This diff is too big to show here.
tests/plugins/Unity/Indicators/CMakeLists.txt+41−22
This diff is too big to show here.
tests/plugins/Unity/Indicators/indicatorsmanagertest.cpp → tests/plugins/Unity/Indicators/IndicatorsManagerTest.cpprenamed+56−11
This diff is too big to show here.
tests/plugins/Unity/Indicators/IndicatorsModelTest.cppnew file+141
This diff is too big to show here.
tests/plugins/Unity/Indicators/MenuContentActivatorTest.cppnew file+303
This diff is too big to show here.
tests/plugins/Unity/Indicators/RootActionStateTest.cppnew file+95
This diff is too big to show here.
tests/plugins/Unity/Indicators/SharedUnityMenuModelTest.cppnew file+102
This diff is too big to show here.
tests/plugins/Unity/Indicators/UnityMenuModelStackTest.cppnew file+201
This diff is too big to show here.
tests/plugins/Unity/Indicators/indicatorsmodeltest.cppdeleted−102
This diff is too big to show here.
tests/plugins/Unity/Launcher/CMakeLists.txtnew file+105
This diff is too big to show here.
tests/plugins/Unity/Launcher/appdrawermodeltest.cppnew file+68
This diff is too big to show here.
tests/plugins/Unity/Launcher/applications/abs-icon.desktopnew file+4
This diff is too big to show here.
tests/plugins/Unity/Launcher/applications/click-icon.desktopnew file+5
This diff is too big to show here.
tests/plugins/Unity/Launcher/applications/click-icon.svgnew file
No changes to the content.
tests/plugins/Unity/Launcher/applications/no-name.desktopnew file+3
This diff is too big to show here.
tests/plugins/Unity/Launcher/applications/rel-icon.desktopnew file+4
This diff is too big to show here.
tests/plugins/Unity/Launcher/applications/rel-icon.svgnew file
No changes to the content.
tests/plugins/Unity/Launcher/gsettings.cppnew file+45
This diff is too big to show here.
tests/plugins/Unity/Launcher/gsettings.hnew file+47
This diff is too big to show here.
tests/plugins/Unity/Launcher/launchermodeltest.cppnew file+836
This diff is too big to show here.
tests/plugins/Unity/Launcher/ualwrapper.cppnew file+58
This diff is too big to show here.
tests/plugins/Unity/Launcher/ualwrapper.hnew file+55
This diff is too big to show here.
tests/mocks/LightDM/single/GreeterPrivate.cpp → tests/plugins/Unity/Launcher/xdgwatcher.cpprenamed+17−20
This diff is too big to show here.
plugins/Utils/ubuntuwindow.h → tests/plugins/Unity/Launcher/xdgwatcher.hrenamed+15−18
This diff is too big to show here.
tests/plugins/Unity/Platform/CMakeLists.txtnew file+30
This diff is too big to show here.
tests/plugins/Unity/Platform/platformtest.cppnew file+142
This diff is too big to show here.
tests/plugins/Unity/Session/CMakeLists.txtnew file+72
This diff is too big to show here.
tests/plugins/Unity/Session/LightDMServer.cppnew file+29
This diff is too big to show here.
tests/plugins/Unity/Session/LightDMServer.hnew file+38
This diff is too big to show here.
tests/plugins/Unity/Session/LogindServer.cppnew file+43
This diff is too big to show here.
tests/plugins/Unity/Session/LogindServer.hnew file+48
This diff is too big to show here.
tests/plugins/Unity/Session/interfaces.xmlnew file+29
This diff is too big to show here.
tests/plugins/Unity/Session/preload.cnew file+43
This diff is too big to show here.
tests/plugins/Unity/Session/server.cppnew file+50
This diff is too big to show here.
tests/plugins/Unity/Session/sessionbackendtest.cppnew file+289
This diff is too big to show here.
tests/plugins/Unity/previewbindingstest.cppdeleted−169
This diff is too big to show here.
tests/plugins/Utils/CMakeLists.txt+34−19
This diff is too big to show here.
tests/plugins/Utils/DeviceConfigParserTest.cppnew file+76
This diff is too big to show here.
tests/plugins/Utils/modeltest.cpp → tests/plugins/Utils/ModelTest.cpprenamed+25−42
This diff is too big to show here.
tests/plugins/Utils/modeltest.h → tests/plugins/Utils/ModelTest.hrenamed
The content is the same.
tests/plugins/Utils/qlimitproxymodeltest.cpp → tests/plugins/Utils/QLimitProxyModelTest.cpprenamed+162−37
This diff is too big to show here.
tests/plugins/Utils/URLDispatcherTest.cpp+78
This diff is too big to show here.
tests/plugins/Utils/UnitySortFilterProxyModelTest.cpp+25−25
This diff is too big to show here.
tests/plugins/Utils/WindowInputMonitorTest.cpp+461
This diff is too big to show here.
tests/plugins/Utils/WindowStateStorageTest.cpp+121
This diff is too big to show here.
tests/plugins/Utils/tst_UtilsStyle.qml+47
This diff is too big to show here.
tests/plugins/WindowManager/CMakeLists.txt+36
This diff is too big to show here.
tests/plugins/WindowManager/UnityApplicationMocks.h+211
This diff is too big to show here.
tests/plugins/WindowManager/tst_TopLevelWindowModel.cpp+193
This diff is too big to show here.
tests/plugins/Wizard/CMakeLists.txt+24
This diff is too big to show here.
tests/plugins/Wizard/tst_pagelist.cpp+183
This diff is too big to show here.
tests/plugins/Wizard/tst_system.cpp+124
This diff is too big to show here.
tests/qmltests/ApplicationMenuDataLoader.qml+99
This diff is too big to show here.
tests/qmltests/ApplicationMenus/tst_MenuBar.qml+437
This diff is too big to show here.
tests/qmltests/ApplicationMenus/tst_MenuPopup.qml+361
This diff is too big to show here.
tests/qmltests/CMakeLists.txt+71−67
This diff is too big to show here.
tests/qmltests/Components/CMakeLists.txt+41−13
This diff is too big to show here.
tests/qmltests/Components/RevealingRectangle.qml−78
This diff is too big to show here.
tests/qmltests/Components/tst_AnimationControllerWithSignals.qml−142
This diff is too big to show here.
tests/qmltests/Components/tst_Background.qml+91
This diff is too big to show here.
tests/qmltests/Components/tst_Carousel.qml−194
This diff is too big to show here.
tests/qmltests/Components/tst_CrossFadeImage.qml−125
This diff is too big to show here.
tests/qmltests/Components/tst_Dialogs.qml+112
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle.cpp+175−66
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle.qml+133−57
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/BidirectionalShowable.qml+69
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/BottomEdgeShowable.qml+108
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/LeftEdgeShowable.qml+8−8
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/RightEdgeShowable.qml+108
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/SimpleButton.qml+15−14
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/TopEdgeShowable.qml+15−15
This diff is too big to show here.
tests/qmltests/Components/tst_DragHandle/UnityLogo.png
This diff is too big to show here.
tests/qmltests/Components/tst_DraggingArea.qml+8−8
This diff is too big to show here.
tests/qmltests/Components/tst_EdgeDragEvaluator.cpp+166
This diff is too big to show here.
tests/qmltests/Components/tst_EdgeDragEvaluator.qml+9−7
This diff is too big to show here.
tests/qmltests/Components/tst_FilterGrid.qml−186
This diff is too big to show here.
tests/qmltests/Components/tst_LazyImage.qml+210
This diff is too big to show here.
tests/qmltests/Components/tst_LazyImage/ImageControls.qml+67
This diff is too big to show here.
tests/qmltests/Components/tst_LazyImage/portrait.png
This diff is too big to show here.
tests/qmltests/Components/tst_LazyImage/square.png
This diff is too big to show here.
tests/qmltests/Components/tst_LazyImage/wide.png
This diff is too big to show here.
tests/qmltests/Components/tst_Lockscreen.qml+474
This diff is too big to show here.
tests/qmltests/Components/tst_MathLocal.qml−91
This diff is too big to show here.
tests/qmltests/Components/tst_MediaServices.qml+231
This diff is too big to show here.
tests/qmltests/Components/tst_ModeSwitchWarningDialog.qml+75
This diff is too big to show here.
tests/qmltests/Components/tst_OpenEffect.qml−71
This diff is too big to show here.
tests/qmltests/Components/tst_PageHeader.qml−186
This diff is too big to show here.
tests/qmltests/Components/tst_PhysicalKeysMapper.qml+174
This diff is too big to show here.
tests/qmltests/Components/tst_Rating.qml+86
This diff is too big to show here.
tests/qmltests/Components/tst_RatingStars.qml−62
This diff is too big to show here.
tests/qmltests/Components/tst_ResponsiveFlowView.qml−192
This diff is too big to show here.
tests/qmltests/Components/tst_ResponsiveGridView.qml−193
This diff is too big to show here.
tests/qmltests/Components/tst_Revealer.qml−262
This diff is too big to show here.
tests/qmltests/Components/tst_SharingPicker.qml+73
This diff is too big to show here.
tests/qmltests/Components/tst_Showable.qml+43−3
This diff is too big to show here.
tests/qmltests/Components/tst_Stage.qml−277
This diff is too big to show here.
tests/qmltests/Components/tst_Stage/FakeApplicationScreenshot.qml−53
This diff is too big to show here.
tests/qmltests/Components/tst_Tile.qml−71
This diff is too big to show here.
tests/qmltests/Components/tst_TimeLocal.qml−117
This diff is too big to show here.
tests/qmltests/Components/tst_VirtualTouchPad.qml+197
This diff is too big to show here.
tests/qmltests/Components/tst_Wallpaper.qml+118
This diff is too big to show here.
tests/qmltests/Components/tst_WallpaperResolver.qml+161
This diff is too big to show here.
tests/qmltests/Components/tst_ZoomableImage.qml+204
This diff is too big to show here.
tests/qmltests/Dash/Apps/tst_RunningApplicationsGrid.qml−204
This diff is too big to show here.
tests/qmltests/Dash/qml/FakeScopeView.qml−120
This diff is too big to show here.
tests/qmltests/Dash/qml/fake_scopeView2.qml−24
This diff is too big to show here.
tests/qmltests/Dash/qml/fake_scopeView3.qml−24
This diff is too big to show here.
tests/qmltests/Dash/qml/fake_scopeView4.qml−24
This diff is too big to show here.
tests/qmltests/Dash/tst_Dash.qml−133
This diff is too big to show here.
tests/qmltests/Dash/tst_DashBar.qml−111
This diff is too big to show here.
tests/qmltests/Dash/tst_DashContent.qml−209
This diff is too big to show here.
tests/qmltests/Dash/tst_DashPreview.qml−176
This diff is too big to show here.
tests/qmltests/Dash/tst_FilterGrids.qml−144
This diff is too big to show here.
tests/qmltests/Dash/tst_GenericScopeView.qml−54
This diff is too big to show here.
tests/qmltests/Dash/tst_ScopeView.qml−52
This diff is too big to show here.
tests/qmltests/EdgeBarrierControls.qml+97
This diff is too big to show here.
tests/qmltests/Greeter/TestView.qml+101
This diff is too big to show here.
tests/qmltests/Greeter/tst_Clock.qml+60−43
This diff is too big to show here.
tests/qmltests/Greeter/tst_Greeter.qml+683
This diff is too big to show here.
tests/qmltests/Greeter/tst_GreeterView.qml+1366
This diff is too big to show here.
tests/qmltests/Greeter/tst_Infographics.qml+83−18
This diff is too big to show here.
tests/qmltests/Greeter/tst_Lockscreen.qml−211
This diff is too big to show here.
tests/qmltests/Greeter/tst_Phone.qml−106
This diff is too big to show here.
tests/qmltests/Greeter/tst_Tablet.qml−328
This diff is too big to show here.
tests/qmltests/Hud/tst_Hud.qml−239
This diff is too big to show here.
tests/qmltests/Hud/tst_Result.qml−98
This diff is too big to show here.
tests/qmltests/Launcher/tst_Drawer.qml+520
This diff is too big to show here.
tests/qmltests/Launcher/tst_Launcher.qml+1500−94
This diff is too big to show here.
tests/qmltests/Notifications/Notification.qml+13−7
This diff is too big to show here.
tests/qmltests/Notifications/tst_Notifications.qml+798−317
This diff is too big to show here.
tests/qmltests/Notifications/tst_OptionToggle.qml+290
This diff is too big to show here.
tests/qmltests/Notifications/tst_SwipeToAct.qml+326
This diff is too big to show here.
tests/qmltests/Notifications/tst_VisualSnapDecisionsQueue.qml+232
This diff is too big to show here.
tests/qmltests/Panel/Indicators/tst_IndicatorItem.qml+205
This diff is too big to show here.
tests/qmltests/Panel/Indicators/tst_IndicatorMenuItemFactory.qml+828
This diff is too big to show here.
tests/qmltests/Panel/Indicators/tst_IndicatorsLight.qml+292
This diff is too big to show here.
tests/qmltests/Panel/Indicators/tst_MessageMenuItemFactory.qml+171
This diff is too big to show here.
tests/qmltests/Panel/Menus/tst_IndicatorMenuWindow.qml−68
This diff is too big to show here.
tests/qmltests/Panel/PanelTest.qml+70
This diff is too big to show here.
tests/qmltests/Panel/PanelUI.qml+286
This diff is too big to show here.
tests/qmltests/Panel/tst_ActiveCallHint.qml+198
This diff is too big to show here.
tests/qmltests/Panel/tst_IndicatorItem.qml−67
This diff is too big to show here.
tests/qmltests/Panel/tst_IndicatorRow.qml−258
This diff is too big to show here.
tests/qmltests/Panel/tst_Indicators.qml−200
This diff is too big to show here.
tests/qmltests/Panel/tst_MenuContent.qml+56−188
This diff is too big to show here.
tests/qmltests/Panel/tst_Overview.qml−142
This diff is too big to show here.
tests/qmltests/Panel/tst_Panel.qml+613−131
This diff is too big to show here.
tests/qmltests/Panel/tst_PanelBar.qml+240
This diff is too big to show here.
tests/qmltests/Panel/tst_PanelItemRow.qml+318
This diff is too big to show here.
tests/qmltests/Panel/tst_PanelMenu.qml+364
This diff is too big to show here.
tests/qmltests/Panel/tst_PanelMenuPage.qml+200
This diff is too big to show here.
tests/qmltests/Panel/tst_PanelSmallScreen.qml+133
This diff is too big to show here.
tests/qmltests/Panel/tst_SearchIndicator.qml−64
This diff is too big to show here.
tests/qmltests/SideStage/tst_SideStage.qml−52
This diff is too big to show here.
tests/qmltests/Stage/ApplicationCheckBox.qml+189
This diff is too big to show here.
tests/qmltests/Stage/SizeHintField.qml+14−14
This diff is too big to show here.
tests/qmltests/Stage/SurfaceManagerControls.qml+32
This diff is too big to show here.
tests/qmltests/Stage/SurfaceManagerField.qml+40
This diff is too big to show here.
tests/qmltests/Stage/tst_ApplicationWindow.qml+513
This diff is too big to show here.
tests/qmltests/Stage/tst_DecoratedWindow.qml+267
This diff is too big to show here.
tests/qmltests/Stage/tst_DesktopStage.qml+1085
This diff is too big to show here.
tests/qmltests/Stage/tst_PhoneStage.qml+624
This diff is too big to show here.
tests/qmltests/Stage/tst_QMLTopLevelWindowModel.qml+191
This diff is too big to show here.
tests/qmltests/Stage/tst_Splash.qml+131
This diff is too big to show here.
tests/qmltests/Stage/tst_SurfaceContainer.qml+258
This diff is too big to show here.
tests/qmltests/Stage/tst_TabletStage.qml+764
This diff is too big to show here.
tests/qmltests/Stage/tst_WindowDecoration.qml+244
This diff is too big to show here.
tests/qmltests/Stage/tst_WindowResizeArea.qml+465
This diff is too big to show here.
tests/qmltests/Tutorial/tst_Tutorial.qml+813
This diff is too big to show here.
tests/qmltests/UnityLogo.png
This diff is too big to show here.
tests/qmltests/Wizard/licenses/en_US.html+1
This diff is too big to show here.
tests/qmltests/Wizard/licenses/fr_CA.html+1
This diff is too big to show here.
tests/qmltests/Wizard/licenses/fr_FR.html+1
This diff is too big to show here.
tests/qmltests/Wizard/tst_Wizard.qml+487
This diff is too big to show here.
tests/qmltests/tst_DeviceConfiguration.qml+49
This diff is too big to show here.
tests/qmltests/tst_DisabledScreenNotice.qml+133
This diff is too big to show here.
tests/qmltests/tst_OrientedShell.qml+1705
This diff is too big to show here.
tests/qmltests/tst_Shell.qml+3382
This diff is too big to show here.
tests/qmltests/tst_ShellWithPin.qml+549
This diff is too big to show here.
tests/qmltests/utils/Unity/Test/MockObjectForInstanceOfTest.qml+1−1
This diff is too big to show here.
tests/qmltests/utils/Unity/Test/MockObjectForInstanceOfTestChild.qml+1−1
This diff is too big to show here.
tests/qmltests/utils/Unity/Test/tst_UnityTest.qml+36−8
This diff is too big to show here.
This diff is too big to show here.
tests/scripts/alert-launcher-icon.sh+19
This diff is too big to show here.
tests/scripts/get-progress.sh+19
This diff is too big to show here.
tests/scripts/list-launcher-icons.sh+19
This diff is too big to show here.
tests/scripts/set-count-visible.sh+19
This diff is too big to show here.
tests/scripts/set-count.sh+19
This diff is too big to show here.
tests/scripts/set-progress.sh+19
This diff is too big to show here.
tests/uqmlscene/CMakeLists.txt+21−2
This diff is too big to show here.
tests/uqmlscene/README+3−1
This diff is too big to show here.
tests/uqmlscene/main.cpp+39−14
This diff is too big to show here.
tests/utils/modules/Unity/Test/CMakeLists.txt+26−10
This diff is too big to show here.
tests/utils/modules/Unity/Test/MouseTouchEmulationCheckbox.qml+23−17
This diff is too big to show here.
tests/utils/modules/Unity/Test/StageTestCase.qml+64
This diff is too big to show here.
tests/utils/modules/Unity/Test/TouchEventSequenceWrapper.cpp+23−2
This diff is too big to show here.
tests/utils/modules/Unity/Test/TouchEventSequenceWrapper.h+8−3
This diff is too big to show here.
tests/utils/modules/Unity/Test/UnityTestCase.qml+494−121
This diff is too big to show here.
tests/utils/modules/Unity/Test/plugin.cpp+25−2
This diff is too big to show here.
tests/utils/modules/Unity/Test/plugin.h+1−1
This diff is too big to show here.
tests/utils/modules/Unity/Test/qmldir+4
This diff is too big to show here.
tests/utils/modules/Unity/Test/testutil.cpp+49−6
This diff is too big to show here.
tests/utils/modules/Unity/Test/testutil.h+4−2
This diff is too big to show here.
tests/whitespace/CMakeLists.txt+1−1
This diff is too big to show here.
tests/whitespace/check_whitespace.py+22−12
This diff is too big to show here.
This diff is too big to show here.
tools/indicatorsclient/CMakeLists.txt+1−7
This diff is too big to show here.
tools/indicatorsclient/indicatorsclient.cpp+23−39
This diff is too big to show here.
tools/indicatorsclient/indicatorsclient.h−2
This diff is too big to show here.
tools/indicatorsclient/main.cpp
This diff is too big to show here.
tools/menutool/CMakeLists.txt+5
This diff is too big to show here.
This diff is too big to show here.
tools/menutool/menutool.cpp+62
This diff is too big to show here.
tools/menutool/menutool.qml+118
This diff is too big to show here.
This diff is too big to show here.
This diff is too big to show here.