Merge lp:~larryprice/libertine/system-settings-plugin into lp:libertine
- system-settings-plugin
- Merge into devel
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Christopher Townsend | ||||
Approved revision: | 337 | ||||
Merged at revision: | 311 | ||||
Proposed branch: | lp:~larryprice/libertine/system-settings-plugin | ||||
Merge into: | lp:libertine | ||||
Diff against target: |
1951 lines (+786/-286) 52 files modified
CMakeLists.txt (+11/-4) common/CMakeLists.txt (+13/-0) common/ContainerAppsList.cpp (+4/-2) common/ContainerAppsList.h (+2/-3) common/ContainerArchivesList.cpp (+4/-2) common/ContainerArchivesList.h (+0/-2) common/ContainerConfig.cpp (+2/-2) common/ContainerConfigList.cpp (+6/-7) common/ContainerManager.cpp (+12/-1) common/LibertineConfig.cpp (+2/-27) common/LibertineConfig.h (+3/-7) common/PackageOperationDetails.cpp (+78/-0) common/PackageOperationDetails.h (+43/-0) data/CMakeLists.txt (+1/-1) data/libertine-manager-app.desktop (+2/-2) debian/control (+47/-6) debian/libertine-manager-app.install (+3/-4) debian/libertine-qt-common.install (+2/-0) debian/libertine-tools.install (+1/-1) debian/python3-libertine-chroot.install (+1/-1) debian/python3-libertine-lxc.install (+3/-3) debian/python3-libertine.install (+2/-2) debian/ubuntu-system-settings-libertine.install (+4/-0) libertine/CMakeLists.txt (+10/-5) libertine/config.h.in (+1/-1) libertine/libertine.cpp (+27/-14) libertine/libertine.h (+2/-0) liblibertine/CMakeLists.txt (+12/-13) liblibertine/libertine.cpp (+3/-2) qml/CMakeLists.txt (+3/-0) qml/common/AddExtraArchiveView.qml (+4/-2) qml/common/ContainerEditView.qml (+7/-8) qml/common/ContainerInfoView.qml (+5/-7) qml/common/ContainerOptionsDialog.qml (+5/-5) qml/common/ContainersList.qml (+131/-0) qml/common/ExtraArchivesView.qml (+1/-1) qml/common/ManageContainer.qml (+12/-10) qml/common/PackageInfoView.qml (+12/-13) qml/common/SearchPackagesDialog.qml (+3/-2) qml/common/SearchResults.qml (+3/-1) qml/common/SearchResultsView.qml (+11/-9) qml/gui/ContainersView.qml (+8/-103) qml/gui/WelcomeView.qml (+3/-2) qml/gui/libertine.qml (+10/-9) qml/plugin/MainSettingsPage.qml (+58/-0) system-settings-plugin/CMakeLists.txt (+38/-0) system-settings-plugin/config.h.in (+16/-0) system-settings-plugin/libertine.settings.in (+14/-0) system-settings-plugin/plugin.cpp (+105/-0) system-settings-plugin/plugin.h (+34/-0) tests/unit/ContainerConfigListTests.cpp (+1/-1) tests/unit/ContainerConfigTests.cpp (+1/-1) |
||||
To merge this branch: | bzr merge lp:~larryprice/libertine/system-settings-plugin | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Christopher Townsend | Approve | ||
Libertine CI Bot | continuous-integration | Approve | |
Stephen M. Webb (community) | Approve | ||
Review via email: mp+306926@code.launchpad.net |
Commit message
Add implementation for libertine gui as a system-settings plugin.
Description of the change
Port the libertine gui to also be available as an ubuntu-
This involved moving around the QML files, moving the common libertine code, and adding a package for the plugin. There was substantial refactoring of the QML to utilize a central PackageOperatio
To test the system-settings plugin, you'll have to run `make install` from the root dir or the `system-
Libertine CI Bot (libertine-ci-bot) wrote : | # |
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:317
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:319
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 320. By Larry Price
-
Use LIBRARIES var from SS
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:320
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 321. By Larry Price
-
Hopefully fixing packaging issues by linking to Quick instead of Core, which works with local pdebuild
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:321
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 322. By Larry Price
-
errorOccurred is from Qt5.6, which is not available in vivid+overlay
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:322
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 323. By Larry Price
-
Need to perform static cast to use lambda syntax on error signal
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:323
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 324. By Larry Price
-
Manually adding /usr/include to the include dirs when using automoc
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:324
https:/
Executed test runs:
FAILURE: https:/
None: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 325. By Larry Price
-
Merge with trunk
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:325
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 326. By Larry Price
-
merge
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:326
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Christopher Townsend (townsend) wrote : | # |
As discussed on IRC, the "libertine" binary package should be renamed to "libertine-
The current "libertine" binary package should be made into a dummy transitional package that depends on the new package.
Christopher Townsend (townsend) wrote : | # |
Another thing discussed on IRC is to make a common qt package shared by both ubuntu-
- 327. By Larry Price
-
Add common qml module
- 328. By Larry Price
-
This should take care of the common code better
- 329. By Larry Price
-
rename libertine to l-m-a
- 330. By Larry Price
-
merge
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:330
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 331. By Larry Price
-
dummy
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:331
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Christopher Townsend (townsend) wrote : | # |
Ok, I'm good with this. I've asked bregma to also give this a review, particularly the packaging changes. Will wait on his feedback before TA'ing.
- 332. By Larry Price
-
renaming libertine -> libertine-
manager- app - 333. By Larry Price
-
merge
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:333
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 334. By Larry Price
-
Update .desktop file as well
Libertine CI Bot (libertine-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:334
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
Stephen M. Webb (bregma) wrote : | # |
Packaging looks OK but please run "wrap-and-sort -a" to keep the formatting and ordering in the control files.
- 335. By Larry Price
-
Fix bad link
- 336. By Larry Price
-
Apply wrap-and-sort
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:335
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:336
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 337. By Larry Price
-
Commonize the ListView used to show containers
Libertine CI Bot (libertine-ci-bot) wrote : | # |
PASSED: Continuous integration, rev:337
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
Christopher Townsend (townsend) wrote : | # |
Ok, this all looks good to me. Thanks!
Preview Diff
1 | === modified file 'CMakeLists.txt' | |||
2 | --- CMakeLists.txt 2016-09-13 18:17:52 +0000 | |||
3 | +++ CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
4 | @@ -1,7 +1,7 @@ | |||
5 | 1 | cmake_minimum_required(VERSION 3.0.2) | 1 | cmake_minimum_required(VERSION 3.0.2) |
6 | 2 | cmake_policy(SET CMP0048 NEW) | 2 | cmake_policy(SET CMP0048 NEW) |
7 | 3 | 3 | ||
9 | 4 | project(libertine | 4 | project(libertine |
10 | 5 | VERSION 1.4.1) | 5 | VERSION 1.4.1) |
11 | 6 | 6 | ||
12 | 7 | set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}") | 7 | set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}") |
13 | @@ -32,13 +32,21 @@ | |||
14 | 32 | 32 | ||
15 | 33 | set(CMAKE_AUTOMOC ON) | 33 | set(CMAKE_AUTOMOC ON) |
16 | 34 | 34 | ||
17 | 35 | set(LIBERTINE_COMMON libertine-common) | ||
18 | 36 | set(LIBERTINE_CORE libertine) | ||
19 | 37 | set(LIBERTINE_EXE_NAME libertine-manager-app) | ||
20 | 38 | set(LIBERTINE_QML_PATH ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}/qml) | ||
21 | 39 | |||
22 | 40 | add_subdirectory(qml) | ||
23 | 41 | add_subdirectory(liblibertine) | ||
24 | 42 | add_subdirectory(common) | ||
25 | 35 | add_subdirectory(libertine) | 43 | add_subdirectory(libertine) |
26 | 44 | add_subdirectory(system-settings-plugin) | ||
27 | 36 | add_subdirectory(python) | 45 | add_subdirectory(python) |
28 | 37 | add_subdirectory(data) | 46 | add_subdirectory(data) |
29 | 38 | add_subdirectory(tools) | 47 | add_subdirectory(tools) |
31 | 39 | add_subdirectory(liblibertine) | 48 | add_subdirectory(pasted) |
32 | 40 | add_subdirectory(po) | 49 | add_subdirectory(po) |
33 | 41 | add_subdirectory(pasted) | ||
34 | 42 | 50 | ||
35 | 43 | include(CTest) | 51 | include(CTest) |
36 | 44 | add_subdirectory(tests) | 52 | add_subdirectory(tests) |
37 | @@ -50,4 +58,3 @@ | |||
38 | 50 | | xz >${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz | 58 | | xz >${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz |
39 | 51 | && rm .gitattributes | 59 | && rm .gitattributes |
40 | 52 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) | 60 | WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) |
41 | 53 | |||
42 | 54 | 61 | ||
43 | === added directory 'common' | |||
44 | === added file 'common/CMakeLists.txt' | |||
45 | --- common/CMakeLists.txt 1970-01-01 00:00:00 +0000 | |||
46 | +++ common/CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
47 | @@ -0,0 +1,13 @@ | |||
48 | 1 | add_library(${LIBERTINE_COMMON} | ||
49 | 2 | ContainerAppsList.cpp | ||
50 | 3 | ContainerArchivesList.cpp | ||
51 | 4 | ContainerConfig.cpp | ||
52 | 5 | ContainerConfigList.cpp | ||
53 | 6 | ContainerManager.cpp | ||
54 | 7 | LibertineConfig.cpp | ||
55 | 8 | PackageOperationDetails.cpp | ||
56 | 9 | ) | ||
57 | 10 | |||
58 | 11 | target_link_libraries(${LIBERTINE_COMMON} ${LIBERTINE_CORE} Qt5::Core) | ||
59 | 12 | |||
60 | 13 | install(TARGETS ${LIBERTINE_COMMON_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
61 | 0 | 14 | ||
62 | === renamed file 'libertine/ContainerAppsList.cpp' => 'common/ContainerAppsList.cpp' | |||
63 | --- libertine/ContainerAppsList.cpp 2016-08-12 19:39:50 +0000 | |||
64 | +++ common/ContainerAppsList.cpp 2016-10-11 17:13:48 +0000 | |||
65 | @@ -16,8 +16,10 @@ | |||
66 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
67 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
68 | 18 | */ | 18 | */ |
71 | 19 | #include "libertine/ContainerAppsList.h" | 19 | #include "common/ContainerAppsList.h" |
72 | 20 | #include "libertine/ContainerConfigList.h" | 20 | |
73 | 21 | #include "common/ContainerConfig.h" | ||
74 | 22 | #include "common/ContainerConfigList.h" | ||
75 | 21 | 23 | ||
76 | 22 | ContainerAppsList:: | 24 | ContainerAppsList:: |
77 | 23 | ContainerAppsList(ContainerConfigList* container_config_list, | 25 | ContainerAppsList(ContainerConfigList* container_config_list, |
78 | 24 | 26 | ||
79 | === renamed file 'libertine/ContainerAppsList.h' => 'common/ContainerAppsList.h' | |||
80 | --- libertine/ContainerAppsList.h 2016-08-12 19:39:50 +0000 | |||
81 | +++ common/ContainerAppsList.h 2016-10-11 17:13:48 +0000 | |||
82 | @@ -3,7 +3,7 @@ | |||
83 | 3 | * @brief Libertine Manager list of container applications | 3 | * @brief Libertine Manager list of container applications |
84 | 4 | */ | 4 | */ |
85 | 5 | /* | 5 | /* |
87 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
88 | 7 | * | 7 | * |
89 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
90 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
91 | @@ -19,8 +19,6 @@ | |||
92 | 19 | #ifndef _CONTAINER_APPS_LIST_H_ | 19 | #ifndef _CONTAINER_APPS_LIST_H_ |
93 | 20 | #define _CONTAINER_APPS_LIST_H_ | 20 | #define _CONTAINER_APPS_LIST_H_ |
94 | 21 | 21 | ||
95 | 22 | #include "libertine/ContainerConfig.h" | ||
96 | 23 | |||
97 | 24 | #include <QtCore/QAbstractListModel> | 22 | #include <QtCore/QAbstractListModel> |
98 | 25 | #include <QtCore/QList> | 23 | #include <QtCore/QList> |
99 | 26 | #include <QtCore/QObject> | 24 | #include <QtCore/QObject> |
100 | @@ -30,6 +28,7 @@ | |||
101 | 30 | class ContainerApps; | 28 | class ContainerApps; |
102 | 31 | class ContainerConfigList; | 29 | class ContainerConfigList; |
103 | 32 | 30 | ||
104 | 31 | |||
105 | 33 | class ContainerAppsList | 32 | class ContainerAppsList |
106 | 34 | : public QAbstractListModel | 33 | : public QAbstractListModel |
107 | 35 | { | 34 | { |
108 | 36 | 35 | ||
109 | === renamed file 'libertine/ContainerArchivesList.cpp' => 'common/ContainerArchivesList.cpp' | |||
110 | --- libertine/ContainerArchivesList.cpp 2016-08-12 19:39:50 +0000 | |||
111 | +++ common/ContainerArchivesList.cpp 2016-10-11 17:13:48 +0000 | |||
112 | @@ -16,8 +16,10 @@ | |||
113 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
114 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
115 | 18 | */ | 18 | */ |
118 | 19 | #include "libertine/ContainerArchivesList.h" | 19 | #include "common/ContainerArchivesList.h" |
119 | 20 | #include "libertine/ContainerConfigList.h" | 20 | |
120 | 21 | #include "common/ContainerConfig.h" | ||
121 | 22 | #include "common/ContainerConfigList.h" | ||
122 | 21 | 23 | ||
123 | 22 | ContainerArchivesList:: | 24 | ContainerArchivesList:: |
124 | 23 | ContainerArchivesList(ContainerConfigList* container_config_list, | 25 | ContainerArchivesList(ContainerConfigList* container_config_list, |
125 | 24 | 26 | ||
126 | === renamed file 'libertine/ContainerArchivesList.h' => 'common/ContainerArchivesList.h' | |||
127 | --- libertine/ContainerArchivesList.h 2016-08-12 19:39:50 +0000 | |||
128 | +++ common/ContainerArchivesList.h 2016-10-11 17:13:48 +0000 | |||
129 | @@ -19,8 +19,6 @@ | |||
130 | 19 | #ifndef _CONTAINER_ARCHIVES_LIST_H_ | 19 | #ifndef _CONTAINER_ARCHIVES_LIST_H_ |
131 | 20 | #define _CONTAINER_ARCHIVES_LIST_H_ | 20 | #define _CONTAINER_ARCHIVES_LIST_H_ |
132 | 21 | 21 | ||
133 | 22 | #include "libertine/ContainerConfig.h" | ||
134 | 23 | |||
135 | 24 | #include <QtCore/QAbstractListModel> | 22 | #include <QtCore/QAbstractListModel> |
136 | 25 | #include <QtCore/QList> | 23 | #include <QtCore/QList> |
137 | 26 | #include <QtCore/QObject> | 24 | #include <QtCore/QObject> |
138 | 27 | 25 | ||
139 | === renamed file 'libertine/ContainerConfig.cpp' => 'common/ContainerConfig.cpp' | |||
140 | --- libertine/ContainerConfig.cpp 2016-04-13 18:02:56 +0000 | |||
141 | +++ common/ContainerConfig.cpp 2016-10-11 17:13:48 +0000 | |||
142 | @@ -16,7 +16,7 @@ | |||
143 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
144 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
145 | 18 | */ | 18 | */ |
147 | 19 | #include "libertine/ContainerConfig.h" | 19 | #include "common/ContainerConfig.h" |
148 | 20 | 20 | ||
149 | 21 | #include <QtCore/QDebug> | 21 | #include <QtCore/QDebug> |
150 | 22 | #include <QtCore/QJsonArray> | 22 | #include <QtCore/QJsonArray> |
151 | @@ -73,7 +73,7 @@ | |||
152 | 73 | } | 73 | } |
153 | 74 | } | 74 | } |
154 | 75 | } | 75 | } |
156 | 76 | 76 | ||
157 | 77 | return name; | 77 | return name; |
158 | 78 | } | 78 | } |
159 | 79 | 79 | ||
160 | 80 | 80 | ||
161 | === renamed file 'libertine/ContainerConfig.h' => 'common/ContainerConfig.h' | |||
162 | === renamed file 'libertine/ContainerConfigList.cpp' => 'common/ContainerConfigList.cpp' | |||
163 | --- libertine/ContainerConfigList.cpp 2016-08-22 18:20:43 +0000 | |||
164 | +++ common/ContainerConfigList.cpp 2016-10-11 17:13:48 +0000 | |||
165 | @@ -16,12 +16,11 @@ | |||
166 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
167 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
168 | 18 | */ | 18 | */ |
172 | 19 | #include "libertine/ContainerManager.h" | 19 | #include "common/ContainerConfigList.h" |
170 | 20 | #include "libertine/ContainerConfigList.h" | ||
171 | 21 | #include "libertine/LibertineConfig.h" | ||
173 | 22 | 20 | ||
174 | 21 | #include "common/ContainerConfig.h" | ||
175 | 22 | #include "common/LibertineConfig.h" | ||
176 | 23 | #include <algorithm> | 23 | #include <algorithm> |
177 | 24 | #include "libertine/ContainerConfig.h" | ||
178 | 25 | #include <QtCore/QDebug> | 24 | #include <QtCore/QDebug> |
179 | 26 | #include <QtCore/QDir> | 25 | #include <QtCore/QDir> |
180 | 27 | #include <QtCore/QFile> | 26 | #include <QtCore/QFile> |
181 | @@ -95,7 +94,7 @@ | |||
182 | 95 | reloadContainerList() | 94 | reloadContainerList() |
183 | 96 | { | 95 | { |
184 | 97 | beginResetModel(); | 96 | beginResetModel(); |
186 | 98 | endResetModel(); | 97 | endResetModel(); |
187 | 99 | } | 98 | } |
188 | 100 | 99 | ||
189 | 101 | 100 | ||
190 | @@ -128,7 +127,7 @@ | |||
191 | 128 | deleteContainer() | 127 | deleteContainer() |
192 | 129 | { | 128 | { |
193 | 130 | beginResetModel(); | 129 | beginResetModel(); |
195 | 131 | endResetModel(); | 130 | endResetModel(); |
196 | 132 | } | 131 | } |
197 | 133 | 132 | ||
198 | 134 | 133 | ||
199 | @@ -360,7 +359,7 @@ | |||
200 | 360 | getHostDistroDescription() | 359 | getHostDistroDescription() |
201 | 361 | { | 360 | { |
202 | 362 | QSettings distro_info("/etc/lsb-release", QSettings::NativeFormat); | 361 | QSettings distro_info("/etc/lsb-release", QSettings::NativeFormat); |
204 | 363 | 362 | ||
205 | 364 | return distro_info.value("DISTRIB_DESCRIPTION").toString().section(' ', 0, 2); | 363 | return distro_info.value("DISTRIB_DESCRIPTION").toString().section(' ', 0, 2); |
206 | 365 | } | 364 | } |
207 | 366 | 365 | ||
208 | 367 | 366 | ||
209 | === renamed file 'libertine/ContainerConfigList.h' => 'common/ContainerConfigList.h' | |||
210 | === renamed file 'libertine/ContainerManager.cpp' => 'common/ContainerManager.cpp' | |||
211 | --- libertine/ContainerManager.cpp 2016-09-30 18:55:22 +0000 | |||
212 | +++ common/ContainerManager.cpp 2016-10-11 17:13:48 +0000 | |||
213 | @@ -16,7 +16,8 @@ | |||
214 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
215 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
216 | 18 | */ | 18 | */ |
218 | 19 | #include "libertine/ContainerManager.h" | 19 | #include "common/ContainerManager.h" |
219 | 20 | |||
220 | 20 | #include <QTemporaryFile> | 21 | #include <QTemporaryFile> |
221 | 21 | 22 | ||
222 | 22 | 23 | ||
223 | @@ -32,6 +33,7 @@ | |||
224 | 32 | static const QString RUN_COMMAND_FAILED = QObject::tr("Running command %1 failed"); | 33 | static const QString RUN_COMMAND_FAILED = QObject::tr("Running command %1 failed"); |
225 | 33 | static const QString CONTAINER_CONFIGURE_FAILED = QObject::tr("Attempt to configure container %1 failed"); | 34 | static const QString CONTAINER_CONFIGURE_FAILED = QObject::tr("Attempt to configure container %1 failed"); |
226 | 34 | static const QString SET_DEFAULT_CONTAINER_FAILED = QObject::tr("Attempt to set container as default failed"); | 35 | static const QString SET_DEFAULT_CONTAINER_FAILED = QObject::tr("Attempt to set container as default failed"); |
227 | 36 | static const QString GENERAL_ERROR = QObject::tr("An error occurred"); | ||
228 | 35 | constexpr auto libertine_container_manager_tool = "libertine-container-manager"; | 37 | constexpr auto libertine_container_manager_tool = "libertine-container-manager"; |
229 | 36 | 38 | ||
230 | 37 | 39 | ||
231 | @@ -66,6 +68,15 @@ | |||
232 | 66 | ContainerManagerWorker() | 68 | ContainerManagerWorker() |
233 | 67 | { | 69 | { |
234 | 68 | connect(&process_, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &QObject::deleteLater); | 70 | connect(&process_, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &QObject::deleteLater); |
235 | 71 | connect(&process_, | ||
236 | 72 | #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) | ||
237 | 73 | &QProcess::errorOccurred, | ||
238 | 74 | #else | ||
239 | 75 | static_cast<void(QProcess::*)(QProcess::ProcessError)>(&QProcess::error), | ||
240 | 76 | #endif | ||
241 | 77 | [=](QProcess::ProcessError) { | ||
242 | 78 | emit error(GENERAL_ERROR, process_.errorString()); | ||
243 | 79 | }); | ||
244 | 69 | } | 80 | } |
245 | 70 | 81 | ||
246 | 71 | 82 | ||
247 | 72 | 83 | ||
248 | === renamed file 'libertine/ContainerManager.h' => 'common/ContainerManager.h' | |||
249 | === renamed file 'libertine/LibertineConfig.cpp' => 'common/LibertineConfig.cpp' | |||
250 | --- libertine/LibertineConfig.cpp 2016-04-06 19:14:10 +0000 | |||
251 | +++ common/LibertineConfig.cpp 2016-10-11 17:13:48 +0000 | |||
252 | @@ -16,38 +16,13 @@ | |||
253 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
254 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
255 | 18 | */ | 18 | */ |
257 | 19 | #include "libertine/LibertineConfig.h" | 19 | #include "common/LibertineConfig.h" |
258 | 20 | 20 | ||
259 | 21 | #include "libertine/libertine.h" | ||
260 | 22 | #include <QtCore/QCommandLineParser> | ||
261 | 23 | #include <QtCore/QDir> | 21 | #include <QtCore/QDir> |
262 | 24 | #include <QtCore/QFile> | 22 | #include <QtCore/QFile> |
263 | 25 | #include <QtCore/QStandardPaths> | 23 | #include <QtCore/QStandardPaths> |
264 | 26 | 24 | ||
265 | 27 | 25 | ||
266 | 28 | LibertineConfig:: | ||
267 | 29 | LibertineConfig(Libertine const& libertine) | ||
268 | 30 | { | ||
269 | 31 | QCommandLineParser commandlineParser; | ||
270 | 32 | commandlineParser.setApplicationDescription("manage sandboxes for running legacy DEB-packaged X11-based applications"); | ||
271 | 33 | commandlineParser.addHelpOption(); | ||
272 | 34 | commandlineParser.addVersionOption(); | ||
273 | 35 | commandlineParser.process(libertine); | ||
274 | 36 | } | ||
275 | 37 | |||
276 | 38 | |||
277 | 39 | LibertineConfig:: | ||
278 | 40 | LibertineConfig() | ||
279 | 41 | { | ||
280 | 42 | } | ||
281 | 43 | |||
282 | 44 | |||
283 | 45 | LibertineConfig:: | ||
284 | 46 | ~LibertineConfig() | ||
285 | 47 | { | ||
286 | 48 | } | ||
287 | 49 | |||
288 | 50 | |||
289 | 51 | QString LibertineConfig:: | 26 | QString LibertineConfig:: |
290 | 52 | containers_config_file_name() const | 27 | containers_config_file_name() const |
291 | 53 | { | 28 | { |
292 | @@ -67,6 +42,6 @@ | |||
293 | 67 | file.open(QIODevice::WriteOnly); | 42 | file.open(QIODevice::WriteOnly); |
294 | 68 | file.close(); | 43 | file.close(); |
295 | 69 | } | 44 | } |
297 | 70 | 45 | ||
298 | 71 | return file_name; | 46 | return file_name; |
299 | 72 | } | 47 | } |
300 | 73 | 48 | ||
301 | === renamed file 'libertine/LibertineConfig.h' => 'common/LibertineConfig.h' | |||
302 | --- libertine/LibertineConfig.h 2015-06-22 12:31:13 +0000 | |||
303 | +++ common/LibertineConfig.h 2016-10-11 17:13:48 +0000 | |||
304 | @@ -3,7 +3,7 @@ | |||
305 | 3 | * @brief Libertine Manager application-wide configuration module | 3 | * @brief Libertine Manager application-wide configuration module |
306 | 4 | */ | 4 | */ |
307 | 5 | /* | 5 | /* |
309 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
310 | 7 | * | 7 | * |
311 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
312 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
313 | @@ -22,18 +22,14 @@ | |||
314 | 22 | #include <QtCore/QString> | 22 | #include <QtCore/QString> |
315 | 23 | 23 | ||
316 | 24 | 24 | ||
317 | 25 | class Libertine; | ||
318 | 26 | |||
319 | 27 | |||
320 | 28 | /** | 25 | /** |
321 | 29 | * The runtime configuration of the Libertine tools. | 26 | * The runtime configuration of the Libertine tools. |
322 | 30 | */ | 27 | */ |
323 | 31 | class LibertineConfig | 28 | class LibertineConfig |
324 | 32 | { | 29 | { |
325 | 33 | public: | 30 | public: |
329 | 34 | LibertineConfig(Libertine const& libertine); | 31 | explicit LibertineConfig() = default; |
330 | 35 | LibertineConfig(); | 32 | virtual ~LibertineConfig() = default; |
328 | 36 | ~LibertineConfig(); | ||
331 | 37 | 33 | ||
332 | 38 | QString | 34 | QString |
333 | 39 | containers_config_file_name() const; | 35 | containers_config_file_name() const; |
334 | 40 | 36 | ||
335 | === added file 'common/PackageOperationDetails.cpp' | |||
336 | --- common/PackageOperationDetails.cpp 1970-01-01 00:00:00 +0000 | |||
337 | +++ common/PackageOperationDetails.cpp 2016-10-11 17:13:48 +0000 | |||
338 | @@ -0,0 +1,78 @@ | |||
339 | 1 | /* | ||
340 | 2 | * Copyright 2016 Canonical Ltd | ||
341 | 3 | * | ||
342 | 4 | * Libertine is free software: you can redistribute it and/or modify it under | ||
343 | 5 | * the terms of the GNU General Public License, version 3, as published by the | ||
344 | 6 | * Free Software Foundation. | ||
345 | 7 | * | ||
346 | 8 | * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY | ||
347 | 9 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||
348 | 10 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
349 | 11 | * | ||
350 | 12 | * You should have received a copy of the GNU General Public License | ||
351 | 13 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
352 | 14 | */ | ||
353 | 15 | |||
354 | 16 | |||
355 | 17 | #include "PackageOperationDetails.h" | ||
356 | 18 | |||
357 | 19 | namespace | ||
358 | 20 | { | ||
359 | 21 | static bool has_key(QMap<QString, QMap<QString, QString> > details, | ||
360 | 22 | QString const& container_id, QString const& package_id) | ||
361 | 23 | { | ||
362 | 24 | return details.constFind(container_id) != details.constEnd() && | ||
363 | 25 | details[container_id].constFind(package_id) != details[container_id].constEnd(); | ||
364 | 26 | } | ||
365 | 27 | } | ||
366 | 28 | |||
367 | 29 | |||
368 | 30 | PackageOperationDetails:: | ||
369 | 31 | PackageOperationDetails(QObject* parent) | ||
370 | 32 | : QObject(parent) | ||
371 | 33 | { | ||
372 | 34 | } | ||
373 | 35 | |||
374 | 36 | |||
375 | 37 | QString PackageOperationDetails:: | ||
376 | 38 | details(QString const& container_id, QString const& package_id) const | ||
377 | 39 | { | ||
378 | 40 | if (has_key(details_, container_id, package_id)) | ||
379 | 41 | { | ||
380 | 42 | return details_[container_id][package_id]; | ||
381 | 43 | } | ||
382 | 44 | return ""; | ||
383 | 45 | } | ||
384 | 46 | |||
385 | 47 | |||
386 | 48 | void PackageOperationDetails:: | ||
387 | 49 | clear(QString const& container_id, QString const& package_id) | ||
388 | 50 | { | ||
389 | 51 | if (has_key(details_, container_id, package_id)) | ||
390 | 52 | { | ||
391 | 53 | details_[container_id].remove(package_id); | ||
392 | 54 | if (details_[container_id].empty()) | ||
393 | 55 | { | ||
394 | 56 | details_.remove(container_id); | ||
395 | 57 | } | ||
396 | 58 | } | ||
397 | 59 | } | ||
398 | 60 | |||
399 | 61 | |||
400 | 62 | void PackageOperationDetails:: | ||
401 | 63 | update(QString const& container_id, QString const& package_id, QString const& new_details) | ||
402 | 64 | { | ||
403 | 65 | if (has_key(details_, container_id, package_id)) | ||
404 | 66 | { | ||
405 | 67 | details_[container_id][package_id] += new_details; | ||
406 | 68 | } | ||
407 | 69 | else | ||
408 | 70 | { | ||
409 | 71 | if (details_.constFind(container_id) == details_.constEnd()) | ||
410 | 72 | { | ||
411 | 73 | details_[container_id] = QMap<QString, QString>{{package_id, new_details}}; | ||
412 | 74 | } | ||
413 | 75 | } | ||
414 | 76 | |||
415 | 77 | emit updated(container_id, package_id, new_details); | ||
416 | 78 | } | ||
417 | 0 | 79 | ||
418 | === added file 'common/PackageOperationDetails.h' | |||
419 | --- common/PackageOperationDetails.h 1970-01-01 00:00:00 +0000 | |||
420 | +++ common/PackageOperationDetails.h 2016-10-11 17:13:48 +0000 | |||
421 | @@ -0,0 +1,43 @@ | |||
422 | 1 | /* | ||
423 | 2 | * Copyright 2016 Canonical Ltd | ||
424 | 3 | * | ||
425 | 4 | * Libertine is free software: you can redistribute it and/or modify it under | ||
426 | 5 | * the terms of the GNU General Public License, version 3, as published by the | ||
427 | 6 | * Free Software Foundation. | ||
428 | 7 | * | ||
429 | 8 | * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY | ||
430 | 9 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||
431 | 10 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
432 | 11 | * | ||
433 | 12 | * You should have received a copy of the GNU General Public License | ||
434 | 13 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
435 | 14 | */ | ||
436 | 15 | |||
437 | 16 | #pragma once | ||
438 | 17 | |||
439 | 18 | #include <QObject> | ||
440 | 19 | #include <QMap> | ||
441 | 20 | |||
442 | 21 | |||
443 | 22 | class PackageOperationDetails : public QObject | ||
444 | 23 | { | ||
445 | 24 | Q_OBJECT | ||
446 | 25 | |||
447 | 26 | public: | ||
448 | 27 | explicit PackageOperationDetails(QObject* parent = nullptr); | ||
449 | 28 | virtual ~PackageOperationDetails() = default; | ||
450 | 29 | |||
451 | 30 | Q_INVOKABLE QString details(QString const& container_id, QString const& package_id) const; | ||
452 | 31 | Q_INVOKABLE void clear(QString const& container_id, QString const& package_id); | ||
453 | 32 | |||
454 | 33 | public slots: | ||
455 | 34 | void update(QString const& container_id, QString const& package_id, QString const& new_details); | ||
456 | 35 | |||
457 | 36 | signals: | ||
458 | 37 | void updated(QString const& container_id, QString const& package_id, QString const& new_details); | ||
459 | 38 | void send(QString const& input); | ||
460 | 39 | void error(QString const& short_description, QString const& details); | ||
461 | 40 | |||
462 | 41 | private: | ||
463 | 42 | QMap<QString, QMap<QString, QString> > details_; | ||
464 | 43 | }; | ||
465 | 0 | 44 | ||
466 | === modified file 'data/CMakeLists.txt' | |||
467 | --- data/CMakeLists.txt 2016-09-06 12:36:47 +0000 | |||
468 | +++ data/CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
469 | @@ -1,6 +1,6 @@ | |||
470 | 1 | set(CMAKE_INSTALL_SYSCONFDIR "/etc") | 1 | set(CMAKE_INSTALL_SYSCONFDIR "/etc") |
471 | 2 | 2 | ||
473 | 3 | install(FILES libertine.desktop | 3 | install(FILES libertine-manager-app.desktop |
474 | 4 | DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) | 4 | DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) |
475 | 5 | install(FILES libertine_64.png libertine-lxc.conf | 5 | install(FILES libertine_64.png libertine-lxc.conf |
476 | 6 | DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}) | 6 | DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}) |
477 | 7 | 7 | ||
478 | === renamed file 'data/libertine.desktop' => 'data/libertine-manager-app.desktop' | |||
479 | --- data/libertine.desktop 2016-02-20 22:23:41 +0000 | |||
480 | +++ data/libertine-manager-app.desktop 2016-10-11 17:13:48 +0000 | |||
481 | @@ -1,8 +1,8 @@ | |||
482 | 1 | [Desktop Entry] | 1 | [Desktop Entry] |
483 | 2 | Version=1.0 | 2 | Version=1.0 |
485 | 3 | Name=Libertine | 3 | Name=Libertine Manager |
486 | 4 | Comment=Legacy Application Sandbox | 4 | Comment=Legacy Application Sandbox |
488 | 5 | Exec=libertine | 5 | Exec=libertine-manager-app |
489 | 6 | Terminal=false | 6 | Terminal=false |
490 | 7 | Type=Application | 7 | Type=Application |
491 | 8 | Icon=/usr/share/libertine/libertine_64.png | 8 | Icon=/usr/share/libertine/libertine_64.png |
492 | 9 | 9 | ||
493 | === modified file 'debian/control' | |||
494 | --- debian/control 2016-09-12 17:59:56 +0000 | |||
495 | +++ debian/control 2016-10-11 17:13:48 +0000 | |||
496 | @@ -13,9 +13,12 @@ | |||
497 | 13 | libgirepository1.0-dev, | 13 | libgirepository1.0-dev, |
498 | 14 | libglib2.0-dev, | 14 | libglib2.0-dev, |
499 | 15 | libgtest-dev, | 15 | libgtest-dev, |
500 | 16 | libsystemsettings-dev, | ||
501 | 16 | libx11-dev, | 17 | libx11-dev, |
502 | 17 | lsb-release, | 18 | lsb-release, |
503 | 19 | pkg-config, | ||
504 | 18 | python3-apt, | 20 | python3-apt, |
505 | 21 | python3-dbus, | ||
506 | 19 | python3-dev, | 22 | python3-dev, |
507 | 20 | python3-distro-info, | 23 | python3-distro-info, |
508 | 21 | python3-gi, | 24 | python3-gi, |
509 | @@ -23,23 +26,61 @@ | |||
510 | 23 | python3-psutil, | 26 | python3-psutil, |
511 | 24 | python3-testtools, | 27 | python3-testtools, |
512 | 25 | python3-xdg, | 28 | python3-xdg, |
513 | 26 | python3-dbus, | ||
514 | 27 | qtdeclarative5-dev | 29 | qtdeclarative5-dev |
516 | 28 | Standards-Version: 3.9.6 | 30 | Standards-Version: 3.9.8 |
517 | 29 | Homepage: https://launchpad.net/libertine | 31 | Homepage: https://launchpad.net/libertine |
518 | 30 | 32 | ||
520 | 31 | Package: libertine | 33 | Package: libertine-manager-app |
521 | 32 | Architecture: any | 34 | Architecture: any |
523 | 33 | Depends: libertine-tools, | 35 | Replaces: libertine (<< 1.4.2-1~) |
524 | 36 | Breaks: libertine (<< 1.4.2-1~) | ||
525 | 37 | Depends: libertine-qt-common, | ||
526 | 38 | libertine-tools, | ||
527 | 34 | python3-libertine-lxc, | 39 | python3-libertine-lxc, |
528 | 35 | qml-module-qtquick2, | 40 | qml-module-qtquick2, |
529 | 36 | qtdeclarative5-ubuntu-ui-toolkit-plugin, | 41 | qtdeclarative5-ubuntu-ui-toolkit-plugin, |
530 | 37 | ${misc:Depends}, | 42 | ${misc:Depends}, |
531 | 38 | ${shlibs:Depends} | 43 | ${shlibs:Depends} |
532 | 39 | Description: sandbox for running deb-packaged X11 apps on Ubuntu Personal | 44 | Description: sandbox for running deb-packaged X11 apps on Ubuntu Personal |
534 | 40 | Provides a container and releated tools to be able to create, maintain, and | 45 | Provides a container and related tools to be able to create, maintain, and |
535 | 41 | integrate legacy deb-packaged applications generally based around the X11 | 46 | integrate legacy deb-packaged applications generally based around the X11 |
537 | 42 | display manager on a Ubuntu "Snappy Personal" system. | 47 | display manager on an Ubuntu "Snappy Personal" system. |
538 | 48 | |||
539 | 49 | Package: libertine | ||
540 | 50 | Depends: libertine-manager-app, | ||
541 | 51 | ${misc:Depends} | ||
542 | 52 | Architecture: all | ||
543 | 53 | Priority: extra | ||
544 | 54 | Section: oldlibs | ||
545 | 55 | Description: transitional dummy package for libertine-manager-app | ||
546 | 56 | This is a transitional package to rename libertine as libertine-manager-app. | ||
547 | 57 | It can safely be removed. | ||
548 | 58 | |||
549 | 59 | Package: ubuntu-system-settings-libertine | ||
550 | 60 | Architecture: any | ||
551 | 61 | Depends: libertine-qt-common, | ||
552 | 62 | libertine-tools, | ||
553 | 63 | python3-libertine-lxc, | ||
554 | 64 | qml-module-qtquick2, | ||
555 | 65 | qtdeclarative5-ubuntu-ui-toolkit-plugin, | ||
556 | 66 | ${misc:Depends}, | ||
557 | 67 | ${shlibs:Depends} | ||
558 | 68 | Enhances: ubuntu-system-settings | ||
559 | 69 | Description: system settings plugin for managing container-based applications | ||
560 | 70 | System Settings graphical interface to assist in the maintenance of legacy | ||
561 | 71 | deb-packaged applications generally based around the X11 display manager on | ||
562 | 72 | an Ubuntu "Snappy Personal" system. | ||
563 | 73 | |||
564 | 74 | Package: libertine-qt-common | ||
565 | 75 | Architecture: any | ||
566 | 76 | Depends: qml-module-qtquick2, | ||
567 | 77 | qtdeclarative5-ubuntu-ui-toolkit-plugin, | ||
568 | 78 | ${misc:Depends}, | ||
569 | 79 | ${shlibs:Depends} | ||
570 | 80 | Description: common files for qt-based libertine applications | ||
571 | 81 | Common QML source files and translations for managing libertine containers | ||
572 | 82 | and packages used in the standalone libertine application and system settings | ||
573 | 83 | plugin. | ||
574 | 43 | 84 | ||
575 | 44 | Package: libertine-tools | 85 | Package: libertine-tools |
576 | 45 | Architecture: any | 86 | Architecture: any |
577 | 46 | 87 | ||
578 | === renamed file 'debian/libertine.install' => 'debian/libertine-manager-app.install' | |||
579 | --- debian/libertine.install 2016-05-02 20:45:21 +0000 | |||
580 | +++ debian/libertine-manager-app.install 2016-10-11 17:13:48 +0000 | |||
581 | @@ -1,5 +1,4 @@ | |||
584 | 1 | usr/bin/libertine | 1 | usr/bin/libertine-manager-app |
585 | 2 | usr/share/applications/libertine.desktop | 2 | usr/share/applications/libertine-manager-app.desktop |
586 | 3 | usr/share/libertine/libertine_64.png | 3 | usr/share/libertine/libertine_64.png |
589 | 4 | usr/share/libertine/qml/* | 4 | usr/share/libertine/qml/gui/* |
588 | 5 | usr/share/locale/*/LC_MESSAGES | ||
590 | 6 | 5 | ||
591 | === added file 'debian/libertine-qt-common.install' | |||
592 | --- debian/libertine-qt-common.install 1970-01-01 00:00:00 +0000 | |||
593 | +++ debian/libertine-qt-common.install 2016-10-11 17:13:48 +0000 | |||
594 | @@ -0,0 +1,2 @@ | |||
595 | 1 | usr/share/libertine/qml/common/* | ||
596 | 2 | usr/share/locale/*/LC_MESSAGES | ||
597 | 0 | 3 | ||
598 | === modified file 'debian/libertine-tools.install' | |||
599 | --- debian/libertine-tools.install 2016-09-06 12:36:47 +0000 | |||
600 | +++ debian/libertine-tools.install 2016-10-11 17:13:48 +0000 | |||
601 | @@ -1,5 +1,5 @@ | |||
602 | 1 | usr/bin/libertine-container-manager | ||
603 | 1 | usr/bin/libertine-launch | 2 | usr/bin/libertine-launch |
604 | 2 | usr/bin/libertine-container-manager | ||
605 | 3 | usr/bin/libertine-xmir | 3 | usr/bin/libertine-xmir |
606 | 4 | usr/bin/pasted | 4 | usr/bin/pasted |
607 | 5 | usr/share/bash-completion/completions/libertine-container-manager | 5 | usr/share/bash-completion/completions/libertine-container-manager |
608 | 6 | 6 | ||
609 | === modified file 'debian/python3-libertine-chroot.install' | |||
610 | --- debian/python3-libertine-chroot.install 2016-09-06 12:36:47 +0000 | |||
611 | +++ debian/python3-libertine-chroot.install 2016-10-11 17:13:48 +0000 | |||
612 | @@ -1,2 +1,2 @@ | |||
613 | 1 | usr/lib/*/libertine/update-puritine-containers | ||
614 | 1 | usr/lib/python*/*/libertine/ChrootContainer.py | 2 | usr/lib/python*/*/libertine/ChrootContainer.py |
615 | 2 | usr/lib/*/libertine/update-puritine-containers | ||
616 | 3 | 3 | ||
617 | === modified file 'debian/python3-libertine-lxc.install' | |||
618 | --- debian/python3-libertine-lxc.install 2016-08-19 13:33:27 +0000 | |||
619 | +++ debian/python3-libertine-lxc.install 2016-10-11 17:13:48 +0000 | |||
620 | @@ -1,6 +1,6 @@ | |||
621 | 1 | etc/sudoers.d/libertine-lxc-sudo | ||
622 | 2 | usr/bin/libertine-lxc-manager | ||
623 | 3 | usr/bin/libertine-lxc-setup | ||
624 | 1 | usr/lib/python*/*/libertine/LxcContainer.py | 4 | usr/lib/python*/*/libertine/LxcContainer.py |
625 | 2 | usr/bin/libertine-lxc-manager | ||
626 | 3 | usr/share/dbus-1/services/com.canonical.libertine.LxcManager.service | 5 | usr/share/dbus-1/services/com.canonical.libertine.LxcManager.service |
627 | 4 | usr/share/libertine/libertine-lxc.conf | 6 | usr/share/libertine/libertine-lxc.conf |
628 | 5 | etc/sudoers.d/libertine-lxc-sudo | ||
629 | 6 | usr/bin/libertine-lxc-setup | ||
630 | 7 | 7 | ||
631 | === modified file 'debian/python3-libertine.install' | |||
632 | --- debian/python3-libertine.install 2016-06-28 14:30:01 +0000 | |||
633 | +++ debian/python3-libertine.install 2016-10-11 17:13:48 +0000 | |||
634 | @@ -1,6 +1,6 @@ | |||
635 | 1 | usr/lib/python*/*/libertine/AppDiscovery.py | 1 | usr/lib/python*/*/libertine/AppDiscovery.py |
636 | 2 | usr/lib/python*/*/libertine/Libertine.py | ||
637 | 3 | usr/lib/python*/*/libertine/ContainersConfig.py | 2 | usr/lib/python*/*/libertine/ContainersConfig.py |
638 | 4 | usr/lib/python*/*/libertine/HostInfo.py | 3 | usr/lib/python*/*/libertine/HostInfo.py |
639 | 4 | usr/lib/python*/*/libertine/Libertine.py | ||
640 | 5 | usr/lib/python*/*/libertine/__init__.py | ||
641 | 5 | usr/lib/python*/*/libertine/utils.py | 6 | usr/lib/python*/*/libertine/utils.py |
642 | 6 | usr/lib/python*/*/libertine/__init__.py | ||
643 | 7 | 7 | ||
644 | === added file 'debian/ubuntu-system-settings-libertine.install' | |||
645 | --- debian/ubuntu-system-settings-libertine.install 1970-01-01 00:00:00 +0000 | |||
646 | +++ debian/ubuntu-system-settings-libertine.install 2016-10-11 17:13:48 +0000 | |||
647 | @@ -0,0 +1,4 @@ | |||
648 | 1 | usr/lib/*/ubuntu-system-settings/liblibertine-plugin.so* | ||
649 | 2 | usr/share/libertine/qml/plugin/* | ||
650 | 3 | usr/share/ubuntu/settings/system/icons/libertine-plugin.png | ||
651 | 4 | usr/share/ubuntu/settings/system/libertine.settings | ||
652 | 0 | 5 | ||
653 | === modified file 'libertine/CMakeLists.txt' | |||
654 | --- libertine/CMakeLists.txt 2015-10-07 18:59:50 +0000 | |||
655 | +++ libertine/CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
656 | @@ -1,14 +1,19 @@ | |||
657 | 1 | configure_file(config.h.in config.h) | 1 | configure_file(config.h.in config.h) |
658 | 2 | 2 | ||
660 | 3 | file(GLOB_RECURSE QML_SRC *.qml *.js *.json) | 3 | file(GLOB_RECURSE QML_SRC |
661 | 4 | ${CMAKE_SOURCE_DIR}/qml/common/*.qml | ||
662 | 5 | ${CMAKE_SOURCE_DIR}/qml/gui/*.qml | ||
663 | 6 | ) | ||
664 | 4 | set(libertine_SRC | 7 | set(libertine_SRC |
665 | 5 | libertine.cpp | 8 | libertine.cpp |
666 | 6 | main.cpp | 9 | main.cpp |
668 | 7 | ${QML_SRC} | 10 | |
669 | 11 | ${QML_SRC} # so the QML files show up in Qt Creator | ||
670 | 8 | ) | 12 | ) |
671 | 9 | 13 | ||
674 | 10 | add_executable(libertine ${libertine_SRC}) | 14 | add_executable(${LIBERTINE_EXE_NAME} ${libertine_SRC}) |
675 | 11 | target_link_libraries(libertine libertine-common Qt5::Core Qt5::Quick Qt5::Gui) | 15 | target_link_libraries(${LIBERTINE_EXE_NAME} ${LIBERTINE_COMMON} ${LIBERTINE_CORE} Qt5::Core Qt5::Quick Qt5::Gui) |
676 | 12 | 16 | ||
677 | 13 | install(DIRECTORY qml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}) | 17 | install(DIRECTORY qml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${CMAKE_PROJECT_NAME}) |
679 | 14 | install(TARGETS libertine RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) | 18 | |
680 | 19 | install(TARGETS ${LIBERTINE_EXE_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) | ||
681 | 15 | 20 | ||
682 | === modified file 'libertine/config.h.in' | |||
683 | --- libertine/config.h.in 2015-06-02 02:33:28 +0000 | |||
684 | +++ libertine/config.h.in 2016-10-11 17:13:48 +0000 | |||
685 | @@ -19,6 +19,6 @@ | |||
686 | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 19 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
687 | 20 | */ | 20 | */ |
688 | 21 | 21 | ||
690 | 22 | #define LIBERTINE_APPLICATION_NAME "@PROJECT_NAME@" | 22 | #define LIBERTINE_APPLICATION_NAME "@LIBERTINE_EXE_NAME@" |
691 | 23 | #define LIBERTINE_VERSION "@PROJECT_VERSION@" | 23 | #define LIBERTINE_VERSION "@PROJECT_VERSION@" |
692 | 24 | 24 | ||
693 | 25 | 25 | ||
694 | === modified file 'libertine/libertine.cpp' | |||
695 | --- libertine/libertine.cpp 2016-10-03 15:54:26 +0000 | |||
696 | +++ libertine/libertine.cpp 2016-10-11 17:13:48 +0000 | |||
697 | @@ -3,7 +3,7 @@ | |||
698 | 3 | * @brief Libertine app wrapper | 3 | * @brief Libertine app wrapper |
699 | 4 | */ | 4 | */ |
700 | 5 | /* | 5 | /* |
702 | 6 | * Copyright 2015 Canonical Ltd | 6 | * Copyright 2015-2016 Canonical Ltd |
703 | 7 | * | 7 | * |
704 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | 8 | * Libertine is free software: you can redistribute it and/or modify it under |
705 | 9 | * the terms of the GNU General Public License, version 3, as published by the | 9 | * the terms of the GNU General Public License, version 3, as published by the |
706 | @@ -16,16 +16,18 @@ | |||
707 | 16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
708 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
709 | 18 | */ | 18 | */ |
710 | 19 | #include "libertine/libertine.h" | ||
711 | 20 | |||
712 | 21 | #include "common/ContainerManager.h" | ||
713 | 22 | #include "common/ContainerAppsList.h" | ||
714 | 23 | #include "common/ContainerArchivesList.h" | ||
715 | 24 | #include "common/ContainerConfig.h" | ||
716 | 25 | #include "common/ContainerConfigList.h" | ||
717 | 26 | #include "common/LibertineConfig.h" | ||
718 | 27 | #include "common/PackageOperationDetails.h" | ||
719 | 19 | #include "libertine/config.h" | 28 | #include "libertine/config.h" |
720 | 20 | |||
721 | 21 | #include <cstdlib> | 29 | #include <cstdlib> |
729 | 22 | #include "libertine/ContainerManager.h" | 30 | #include <QtCore/QCommandLineParser> |
723 | 23 | #include "libertine/ContainerAppsList.h" | ||
724 | 24 | #include "libertine/ContainerArchivesList.h" | ||
725 | 25 | #include "libertine/ContainerConfig.h" | ||
726 | 26 | #include "libertine/ContainerConfigList.h" | ||
727 | 27 | #include "libertine/libertine.h" | ||
728 | 28 | #include "libertine/LibertineConfig.h" | ||
730 | 29 | #include <QtCore/QDebug> | 31 | #include <QtCore/QDebug> |
731 | 30 | #include <QtCore/QDir> | 32 | #include <QtCore/QDir> |
732 | 31 | #include <QtCore/QFile> | 33 | #include <QtCore/QFile> |
733 | @@ -38,7 +40,7 @@ | |||
734 | 38 | 40 | ||
735 | 39 | namespace | 41 | namespace |
736 | 40 | { | 42 | { |
738 | 41 | static QString const s_main_QML_source_file = "qml/libertine.qml"; | 43 | static QString const s_main_QML_source_file = "qml/gui/libertine.qml"; |
739 | 42 | 44 | ||
740 | 43 | /** | 45 | /** |
741 | 44 | * Searches for the main QML source file. | 46 | * Searches for the main QML source file. |
742 | @@ -55,7 +57,7 @@ | |||
743 | 55 | find_main_qml_source_file() | 57 | find_main_qml_source_file() |
744 | 56 | { | 58 | { |
745 | 57 | static const QStringList sub_paths = { "", "libertine/" }; | 59 | static const QStringList sub_paths = { "", "libertine/" }; |
747 | 58 | QStringList paths = QStandardPaths::standardLocations(QStandardPaths::DataLocation); | 60 | auto paths = QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation); |
748 | 59 | paths.prepend(QDir::currentPath()); | 61 | paths.prepend(QDir::currentPath()); |
749 | 60 | paths.prepend(QCoreApplication::applicationDirPath()); | 62 | paths.prepend(QCoreApplication::applicationDirPath()); |
750 | 61 | for (auto const& path: paths) | 63 | for (auto const& path: paths) |
751 | @@ -88,11 +90,20 @@ | |||
752 | 88 | : QGuiApplication(argc, argv) | 90 | : QGuiApplication(argc, argv) |
753 | 89 | , main_qml_source_file_(find_main_qml_source_file()) | 91 | , main_qml_source_file_(find_main_qml_source_file()) |
754 | 90 | { | 92 | { |
755 | 93 | qmlRegisterType<ContainerConfig>("Libertine", 1, 0, "ContainerConfig"); | ||
756 | 94 | qmlRegisterType<ContainerManagerWorker>("Libertine", 1, 0, "ContainerManagerWorker"); | ||
757 | 95 | qmlRegisterType<PackageOperationDetails>("Libertine", 1, 0, "PackageOperationDetails"); | ||
758 | 96 | |||
759 | 91 | setApplicationName(LIBERTINE_APPLICATION_NAME); | 97 | setApplicationName(LIBERTINE_APPLICATION_NAME); |
760 | 92 | setApplicationVersion(LIBERTINE_VERSION); | 98 | setApplicationVersion(LIBERTINE_VERSION); |
764 | 93 | config_.reset(new LibertineConfig(*this)); | 99 | |
765 | 94 | qmlRegisterType<ContainerConfig>("Libertine", 1, 0, "ContainerConfig"); | 100 | QCommandLineParser commandlineParser; |
766 | 95 | qmlRegisterType<ContainerManagerWorker>("Libertine", 1, 0, "ContainerManagerWorker"); | 101 | commandlineParser.setApplicationDescription("manage sandboxes for running legacy DEB-packaged X11-based applications"); |
767 | 102 | commandlineParser.addHelpOption(); | ||
768 | 103 | commandlineParser.addVersionOption(); | ||
769 | 104 | commandlineParser.process(*this); | ||
770 | 105 | |||
771 | 106 | config_.reset(new LibertineConfig()); | ||
772 | 96 | 107 | ||
773 | 97 | watcher_.addPath(config_.data()->containers_config_file_name()); | 108 | watcher_.addPath(config_.data()->containers_config_file_name()); |
774 | 98 | connect(&watcher_, SIGNAL(fileChanged(QString)), SLOT(reload_config(QString))); | 109 | connect(&watcher_, SIGNAL(fileChanged(QString)), SLOT(reload_config(QString))); |
775 | @@ -105,6 +116,7 @@ | |||
776 | 105 | containers_ = new ContainerConfigList(config_.data(), this); | 116 | containers_ = new ContainerConfigList(config_.data(), this); |
777 | 106 | container_apps_ = new ContainerAppsList(containers_, this); | 117 | container_apps_ = new ContainerAppsList(containers_, this); |
778 | 107 | container_archives_ = new ContainerArchivesList(containers_, this); | 118 | container_archives_ = new ContainerArchivesList(containers_, this); |
779 | 119 | package_operation_details_ = new PackageOperationDetails(this); | ||
780 | 108 | 120 | ||
781 | 109 | initialize_view(); | 121 | initialize_view(); |
782 | 110 | view_.show(); | 122 | view_.show(); |
783 | @@ -131,6 +143,7 @@ | |||
784 | 131 | ctxt->setContextProperty("containerConfigList", containers_); | 143 | ctxt->setContextProperty("containerConfigList", containers_); |
785 | 132 | ctxt->setContextProperty("containerAppsList", container_apps_); | 144 | ctxt->setContextProperty("containerAppsList", container_apps_); |
786 | 133 | ctxt->setContextProperty("containerArchivesList", container_archives_); | 145 | ctxt->setContextProperty("containerArchivesList", container_archives_); |
787 | 146 | ctxt->setContextProperty("packageOperationDetails", package_operation_details_); | ||
788 | 134 | 147 | ||
789 | 135 | view_.setSource(QUrl::fromLocalFile(main_qml_source_file_)); | 148 | view_.setSource(QUrl::fromLocalFile(main_qml_source_file_)); |
790 | 136 | connect(view_.engine(), SIGNAL(quit()), SLOT(quit())); | 149 | connect(view_.engine(), SIGNAL(quit()), SLOT(quit())); |
791 | 137 | 150 | ||
792 | === modified file 'libertine/libertine.h' | |||
793 | --- libertine/libertine.h 2016-10-03 15:48:22 +0000 | |||
794 | +++ libertine/libertine.h 2016-10-11 17:13:48 +0000 | |||
795 | @@ -30,6 +30,7 @@ | |||
796 | 30 | class LibertineConfig; | 30 | class LibertineConfig; |
797 | 31 | class ContainerAppsList; | 31 | class ContainerAppsList; |
798 | 32 | class ContainerArchivesList; | 32 | class ContainerArchivesList; |
799 | 33 | class PackageOperationDetails; | ||
800 | 33 | 34 | ||
801 | 34 | 35 | ||
802 | 35 | class Libertine | 36 | class Libertine |
803 | @@ -56,6 +57,7 @@ | |||
804 | 56 | ContainerConfigList* containers_; | 57 | ContainerConfigList* containers_; |
805 | 57 | ContainerAppsList* container_apps_; | 58 | ContainerAppsList* container_apps_; |
806 | 58 | ContainerArchivesList* container_archives_; | 59 | ContainerArchivesList* container_archives_; |
807 | 60 | PackageOperationDetails* package_operation_details_; | ||
808 | 59 | QQuickView view_; | 61 | QQuickView view_; |
809 | 60 | }; | 62 | }; |
810 | 61 | 63 | ||
811 | 62 | 64 | ||
812 | === modified file 'liblibertine/CMakeLists.txt' | |||
813 | --- liblibertine/CMakeLists.txt 2016-09-06 12:36:47 +0000 | |||
814 | +++ liblibertine/CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
815 | @@ -1,32 +1,31 @@ | |||
816 | 1 | set(API_VERSION 1) | 1 | set(API_VERSION 1) |
817 | 2 | set(ABI_VERSION 1) | 2 | set(ABI_VERSION 1) |
818 | 3 | 3 | ||
820 | 4 | set(libertine_src ${CMAKE_SOURCE_DIR}/libertine) | 4 | set(COMMON_DIR ${CMAKE_SOURCE_DIR}/common) |
821 | 5 | 5 | ||
822 | 6 | add_library( | 6 | add_library( |
824 | 7 | libertine-common SHARED | 7 | ${LIBERTINE_CORE} SHARED |
825 | 8 | libertine.cpp | 8 | libertine.cpp |
832 | 9 | ${libertine_src}/ContainerConfigList.cpp | 9 | |
833 | 10 | ${libertine_src}/LibertineConfig.cpp | 10 | ${COMMON_DIR}/ContainerConfig.cpp |
834 | 11 | ${libertine_src}/ContainerConfig.cpp | 11 | ${COMMON_DIR}/ContainerConfigList.cpp |
835 | 12 | ${libertine_src}/ContainerManager.cpp | 12 | ${COMMON_DIR}/LibertineConfig.cpp |
830 | 13 | ${libertine_src}/ContainerAppsList.cpp | ||
831 | 14 | ${libertine_src}/ContainerArchivesList.cpp | ||
836 | 15 | ) | 13 | ) |
838 | 16 | set_target_properties(libertine-common PROPERTIES | 14 | |
839 | 15 | set_target_properties(${LIBERTINE_CORE} PROPERTIES | ||
840 | 17 | VERSION ${ABI_VERSION}.0.0 | 16 | VERSION ${ABI_VERSION}.0.0 |
841 | 18 | SOVERSION ${ABI_VERSION} | 17 | SOVERSION ${ABI_VERSION} |
842 | 19 | OUTPUT_NAME "libertine" | 18 | OUTPUT_NAME "libertine" |
843 | 20 | ) | 19 | ) |
845 | 21 | target_link_libraries(libertine-common | 20 | |
846 | 21 | target_link_libraries(${LIBERTINE_CORE} | ||
847 | 22 | ${GLIB2_LIBRARIES} | 22 | ${GLIB2_LIBRARIES} |
848 | 23 | ${PYTHON3_LIBRARIES} | 23 | ${PYTHON3_LIBRARIES} |
849 | 24 | Qt5::Core | 24 | Qt5::Core |
850 | 25 | ) | 25 | ) |
851 | 26 | 26 | ||
855 | 27 | set(liblibertine_headers_path "${CMAKE_INSTALL_FULL_INCLUDEDIR}/liblibertine") | 27 | install(FILES libertine.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/liblibertine") |
856 | 28 | install(FILES libertine.h DESTINATION ${liblibertine_headers_path}) | 28 | install(TARGETS ${LIBERTINE_CORE} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
854 | 29 | install(TARGETS libertine-common LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) | ||
857 | 30 | 29 | ||
858 | 31 | configure_file(libertine.pc.in ${CMAKE_BINARY_DIR}/libertine.pc @ONLY) | 30 | configure_file(libertine.pc.in ${CMAKE_BINARY_DIR}/libertine.pc @ONLY) |
859 | 32 | install(FILES ${CMAKE_BINARY_DIR}/libertine.pc | 31 | install(FILES ${CMAKE_BINARY_DIR}/libertine.pc |
860 | 33 | 32 | ||
861 | === modified file 'liblibertine/libertine.cpp' | |||
862 | --- liblibertine/libertine.cpp 2016-09-06 12:36:47 +0000 | |||
863 | +++ liblibertine/libertine.cpp 2016-10-11 17:13:48 +0000 | |||
864 | @@ -18,8 +18,9 @@ | |||
865 | 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 18 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
866 | 19 | */ | 19 | */ |
867 | 20 | #include "liblibertine/libertine.h" | 20 | #include "liblibertine/libertine.h" |
870 | 21 | #include "libertine/ContainerConfigList.h" | 21 | |
871 | 22 | #include "libertine/LibertineConfig.h" | 22 | #include "common/ContainerConfigList.h" |
872 | 23 | #include "common/LibertineConfig.h" | ||
873 | 23 | 24 | ||
874 | 24 | 25 | ||
875 | 25 | namespace | 26 | namespace |
876 | 26 | 27 | ||
877 | === added directory 'qml' | |||
878 | === added file 'qml/CMakeLists.txt' | |||
879 | --- qml/CMakeLists.txt 1970-01-01 00:00:00 +0000 | |||
880 | +++ qml/CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
881 | @@ -0,0 +1,3 @@ | |||
882 | 1 | install(DIRECTORY common DESTINATION ${LIBERTINE_QML_PATH}) | ||
883 | 2 | install(DIRECTORY gui DESTINATION ${LIBERTINE_QML_PATH}) | ||
884 | 3 | install(DIRECTORY plugin DESTINATION ${LIBERTINE_QML_PATH}) | ||
885 | 0 | 4 | ||
886 | === added directory 'qml/common' | |||
887 | === renamed file 'libertine/qml/AddExtraArchiveView.qml' => 'qml/common/AddExtraArchiveView.qml' | |||
888 | --- libertine/qml/AddExtraArchiveView.qml 2016-07-13 19:48:48 +0000 | |||
889 | +++ qml/common/AddExtraArchiveView.qml 2016-10-11 17:13:48 +0000 | |||
890 | @@ -28,6 +28,8 @@ | |||
891 | 28 | } | 28 | } |
892 | 29 | property string currentContainer: "" | 29 | property string currentContainer: "" |
893 | 30 | 30 | ||
894 | 31 | signal error(string short_description, string details) | ||
895 | 32 | |||
896 | 31 | Column { | 33 | Column { |
897 | 32 | spacing: units.gu(2) | 34 | spacing: units.gu(2) |
898 | 33 | 35 | ||
899 | @@ -96,9 +98,9 @@ | |||
900 | 96 | } | 98 | } |
901 | 97 | 99 | ||
902 | 98 | function addArchive() { | 100 | function addArchive() { |
904 | 99 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 101 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
905 | 100 | worker.finishedConfigure.connect(finishedConfigure) | 102 | worker.finishedConfigure.connect(finishedConfigure) |
907 | 101 | worker.error.connect(mainView.error) | 103 | worker.error.connect(addExtraArchiveView.error) |
908 | 102 | worker.addArchive(currentContainer, containerConfigList.getContainerName(currentContainer), | 104 | worker.addArchive(currentContainer, containerConfigList.getContainerName(currentContainer), |
909 | 103 | extraArchiveString.text, publicSigningKey.text.trim()) | 105 | extraArchiveString.text, publicSigningKey.text.trim()) |
910 | 104 | 106 | ||
911 | 105 | 107 | ||
912 | === renamed file 'libertine/qml/HomeView.qml' => 'qml/common/ContainerEditView.qml' | |||
913 | --- libertine/qml/HomeView.qml 2016-07-06 14:17:46 +0000 | |||
914 | +++ qml/common/ContainerEditView.qml 2016-10-11 17:13:48 +0000 | |||
915 | @@ -26,7 +26,7 @@ | |||
916 | 26 | id: homeView | 26 | id: homeView |
917 | 27 | header: PageHeader { | 27 | header: PageHeader { |
918 | 28 | id: pageHeader | 28 | id: pageHeader |
920 | 29 | title: i18n.tr("Classic Apps - %1").arg(containerConfigList.getContainerName(currentContainer)) | 29 | title: i18n.tr("%1 - All Apps").arg(containerConfigList.getContainerName(currentContainer)) |
921 | 30 | trailingActionBar.actions: [ | 30 | trailingActionBar.actions: [ |
922 | 31 | Action { | 31 | Action { |
923 | 32 | id: settingsButton | 32 | id: settingsButton |
924 | @@ -153,7 +153,7 @@ | |||
925 | 153 | width: parent.width | 153 | width: parent.width |
926 | 154 | onClicked: { | 154 | onClicked: { |
927 | 155 | PopupUtils.close(addAppsDialog) | 155 | PopupUtils.close(addAppsDialog) |
929 | 156 | PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml")) | 156 | PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), {currentContainer: currentContainer}) |
930 | 157 | } | 157 | } |
931 | 158 | } | 158 | } |
932 | 159 | } | 159 | } |
933 | @@ -249,12 +249,11 @@ | |||
934 | 249 | } | 249 | } |
935 | 250 | 250 | ||
936 | 251 | function operationSetup() { | 251 | function operationSetup() { |
943 | 252 | var comp = Qt.createComponent("ContainerManager.qml") | 252 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
944 | 253 | var worker = comp.createObject(mainView) | 253 | worker.error.connect(packageOperationDetails.error) |
945 | 254 | worker.error.connect(mainView.error) | 254 | worker.updateOperationDetails.connect(packageOperationDetails.update) |
946 | 255 | worker.updateOperationDetails.connect(mainView.updateOperationDetails) | 255 | packageOperationDetails.send.connect(worker.packageOperationInteraction) |
947 | 256 | mainView.packageOperationInteraction.connect(worker.packageOperationInteraction) | 256 | worker.operationFinished.connect(packageOperationDetails.clear) |
942 | 257 | worker.operationFinished.connect(mainView.resetOperationDetails) | ||
948 | 258 | return worker | 257 | return worker |
949 | 259 | } | 258 | } |
950 | 260 | 259 | ||
951 | 261 | 260 | ||
952 | === renamed file 'libertine/qml/ContainerInfoView.qml' => 'qml/common/ContainerInfoView.qml' | |||
953 | --- libertine/qml/ContainerInfoView.qml 2016-06-09 18:20:19 +0000 | |||
954 | +++ qml/common/ContainerInfoView.qml 2016-10-11 17:13:48 +0000 | |||
955 | @@ -27,7 +27,7 @@ | |||
956 | 27 | id: containerInfoView | 27 | id: containerInfoView |
957 | 28 | header: PageHeader { | 28 | header: PageHeader { |
958 | 29 | id: pageHeader | 29 | id: pageHeader |
960 | 30 | title: i18n.tr("Container information for %1").arg(containerConfigList.getContainerName(currentContainer)) | 30 | title: i18n.tr("Container Info: %1").arg(containerConfigList.getContainerName(currentContainer)) |
961 | 31 | } | 31 | } |
962 | 32 | 32 | ||
963 | 33 | property string currentContainer: null | 33 | property string currentContainer: null |
964 | @@ -114,19 +114,17 @@ | |||
965 | 114 | Component.onCompleted: { | 114 | Component.onCompleted: { |
966 | 115 | containerConfigList.configChanged.connect(reloadStatus) | 115 | containerConfigList.configChanged.connect(reloadStatus) |
967 | 116 | 116 | ||
969 | 117 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 117 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
970 | 118 | operationDetails = packageOperationDetails.details(currentContainer, "") | ||
971 | 119 | packageOperationDetails.updated.connect(updateDetails) | ||
972 | 118 | 120 | ||
973 | 119 | operationDetails = mainView.getOperationDetails(currentContainer) | ||
974 | 120 | operationDetailsView.cursorPosition = operationDetailsView.length | 121 | operationDetailsView.cursorPosition = operationDetailsView.length |
976 | 121 | if (operationDetails != "") { | 122 | if (operationDetails !== "") { |
977 | 122 | showDetails = !showDetails | 123 | showDetails = !showDetails |
978 | 123 | } | 124 | } |
979 | 124 | |||
980 | 125 | mainView.operationDetailsUpdated.connect(updateDetails) | ||
981 | 126 | } | 125 | } |
982 | 127 | 126 | ||
983 | 128 | Component.onDestruction: { | 127 | Component.onDestruction: { |
984 | 129 | mainView.operationDetailsUpdated.disconnect(updateDetails) | ||
985 | 130 | containerConfigList.configChanged.disconnect(reloadStatus) | 128 | containerConfigList.configChanged.disconnect(reloadStatus) |
986 | 131 | } | 129 | } |
987 | 132 | 130 | ||
988 | 133 | 131 | ||
989 | === renamed file 'libertine/qml/ContainerManager.qml' => 'qml/common/ContainerManager.qml' | |||
990 | === renamed file 'libertine/qml/ContainerOptionsDialog.qml' => 'qml/common/ContainerOptionsDialog.qml' | |||
991 | --- libertine/qml/ContainerOptionsDialog.qml 2016-09-02 18:26:25 +0000 | |||
992 | +++ qml/common/ContainerOptionsDialog.qml 2016-10-11 17:13:48 +0000 | |||
993 | @@ -30,7 +30,7 @@ | |||
994 | 30 | signal onCreateInitialized() | 30 | signal onCreateInitialized() |
995 | 31 | 31 | ||
996 | 32 | Row { | 32 | Row { |
998 | 33 | visible: containerConfigList.getHostArchitecture() == 'x86_64' ? true : false | 33 | visible: containerConfigList.getHostArchitecture() === 'x86_64' ? true : false |
999 | 34 | spacing: units.gu(1) | 34 | spacing: units.gu(1) |
1000 | 35 | CheckBox { | 35 | CheckBox { |
1001 | 36 | id: enableMultiarchCheckbox | 36 | id: enableMultiarchCheckbox |
1002 | @@ -97,11 +97,11 @@ | |||
1003 | 97 | 97 | ||
1004 | 98 | function createContainer() { | 98 | function createContainer() { |
1005 | 99 | var container_id = containerConfigList.addNewContainer("lxc", containerNameInput.text) | 99 | var container_id = containerConfigList.addNewContainer("lxc", containerNameInput.text) |
1007 | 100 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 100 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
1008 | 101 | 101 | ||
1012 | 102 | worker.updateOperationDetails.connect(mainView.updateOperationDetails) | 102 | worker.updateOperationDetails.connect(packageOperationDetails.update) |
1013 | 103 | worker.operationFinished.connect(mainView.resetOperationDetails) | 103 | worker.operationFinished.connect(packageOperationDetails.clear) |
1014 | 104 | worker.error.connect(mainView.error) | 104 | worker.error.connect(packageOperationDetails.error) |
1015 | 105 | 105 | ||
1016 | 106 | worker.createContainer(container_id, | 106 | worker.createContainer(container_id, |
1017 | 107 | containerConfigList.getContainerName(container_id), | 107 | containerConfigList.getContainerName(container_id), |
1018 | 108 | 108 | ||
1019 | === added file 'qml/common/ContainersList.qml' | |||
1020 | --- qml/common/ContainersList.qml 1970-01-01 00:00:00 +0000 | |||
1021 | +++ qml/common/ContainersList.qml 2016-10-11 17:13:48 +0000 | |||
1022 | @@ -0,0 +1,131 @@ | |||
1023 | 1 | /** | ||
1024 | 2 | * @file ContainersListView.qml | ||
1025 | 3 | * @brief Libertine containers view | ||
1026 | 4 | */ | ||
1027 | 5 | /* | ||
1028 | 6 | * Copyright 2016 Canonical Ltd | ||
1029 | 7 | * | ||
1030 | 8 | * Libertine is free software: you can redistribute it and/or modify it under | ||
1031 | 9 | * the terms of the GNU General Public License, version 3, as published by the | ||
1032 | 10 | * Free Software Foundation. | ||
1033 | 11 | * | ||
1034 | 12 | * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY | ||
1035 | 13 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||
1036 | 14 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
1037 | 15 | * | ||
1038 | 16 | * You should have received a copy of the GNU General Public License | ||
1039 | 17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1040 | 18 | */ | ||
1041 | 19 | import Libertine 1.0 | ||
1042 | 20 | import QtQuick 2.4 | ||
1043 | 21 | import Ubuntu.Components 1.3 | ||
1044 | 22 | import Ubuntu.Components.Popups 1.3 | ||
1045 | 23 | |||
1046 | 24 | |||
1047 | 25 | /** | ||
1048 | 26 | * Component providing a list of available containers and their (possibly animated) | ||
1049 | 27 | * states. | ||
1050 | 28 | */ | ||
1051 | 29 | Item { | ||
1052 | 30 | property string currentContainer | ||
1053 | 31 | |||
1054 | 32 | UbuntuListView { | ||
1055 | 33 | id: containersList | ||
1056 | 34 | anchors { | ||
1057 | 35 | fill: parent | ||
1058 | 36 | } | ||
1059 | 37 | model: containerConfigList | ||
1060 | 38 | |||
1061 | 39 | function edit(id, status) { | ||
1062 | 40 | if (status === "removing") { | ||
1063 | 41 | packageOperationDetails.error(i18n.tr("Container Unavailable"), i18n.tr("Container is being destroyed and is no longer editable.")) | ||
1064 | 42 | return | ||
1065 | 43 | } | ||
1066 | 44 | currentContainer = id | ||
1067 | 45 | containerAppsList.setContainerApps(currentContainer) | ||
1068 | 46 | pageStack.push(Qt.resolvedUrl("../common/ContainerEditView.qml"), {currentContainer: currentContainer}) | ||
1069 | 47 | } | ||
1070 | 48 | |||
1071 | 49 | delegate: ListItem { | ||
1072 | 50 | Label { | ||
1073 | 51 | text: name | ||
1074 | 52 | anchors { | ||
1075 | 53 | verticalCenter: parent.verticalCenter | ||
1076 | 54 | left: parent.left | ||
1077 | 55 | leftMargin: units.gu(2) | ||
1078 | 56 | } | ||
1079 | 57 | } | ||
1080 | 58 | ActivityIndicator { | ||
1081 | 59 | id: containerActivity | ||
1082 | 60 | anchors { | ||
1083 | 61 | verticalCenter: parent.verticalCenter | ||
1084 | 62 | right: parent.right | ||
1085 | 63 | rightMargin: units.gu(2) | ||
1086 | 64 | } | ||
1087 | 65 | visible: installStatus === i18n.tr("installing") || | ||
1088 | 66 | installStatus === i18n.tr("removing") | ||
1089 | 67 | running: containerActivity.visible | ||
1090 | 68 | } | ||
1091 | 69 | |||
1092 | 70 | onClicked: { containersList.edit(containerId, installStatus) } | ||
1093 | 71 | |||
1094 | 72 | leadingActions: ListItemActions { | ||
1095 | 73 | actions: [ | ||
1096 | 74 | Action { | ||
1097 | 75 | iconName: "delete" | ||
1098 | 76 | text: i18n.tr("delete") | ||
1099 | 77 | description: i18n.tr("Delete Container") | ||
1100 | 78 | onTriggered: { | ||
1101 | 79 | var worker = Qt.createComponent("../common/ContainerManager.qml").createObject(parent) | ||
1102 | 80 | worker.error.connect(packageOperationDetails.error) | ||
1103 | 81 | worker.destroyContainer(containerId) | ||
1104 | 82 | } | ||
1105 | 83 | } | ||
1106 | 84 | ] | ||
1107 | 85 | } | ||
1108 | 86 | |||
1109 | 87 | trailingActions: ListItemActions { | ||
1110 | 88 | actions: [ | ||
1111 | 89 | Action { | ||
1112 | 90 | iconName: "info" | ||
1113 | 91 | text: i18n.tr("info") | ||
1114 | 92 | description: i18n.tr("Container Info") | ||
1115 | 93 | onTriggered: { | ||
1116 | 94 | currentContainer = containerId | ||
1117 | 95 | pageStack.push(Qt.resolvedUrl("../common/ContainerInfoView.qml"), {currentContainer: containerId}) | ||
1118 | 96 | } | ||
1119 | 97 | }, | ||
1120 | 98 | Action { | ||
1121 | 99 | iconName: "edit" | ||
1122 | 100 | text: i18n.tr("edit") | ||
1123 | 101 | description: i18n.tr("Container Apps") | ||
1124 | 102 | visible: installStatus === i18n.tr("ready") || | ||
1125 | 103 | installStatus === i18n.tr("updating") | ||
1126 | 104 | onTriggered: { | ||
1127 | 105 | containersList.edit(containerId, installStatus) | ||
1128 | 106 | } | ||
1129 | 107 | } | ||
1130 | 108 | ] | ||
1131 | 109 | } | ||
1132 | 110 | } | ||
1133 | 111 | } | ||
1134 | 112 | |||
1135 | 113 | Component.onCompleted: { | ||
1136 | 114 | containerConfigList.configChanged.connect(updateContainerList) | ||
1137 | 115 | } | ||
1138 | 116 | |||
1139 | 117 | Component.onDestruction: { | ||
1140 | 118 | containerConfigList.configChanged.disconnect(updateContainerList) | ||
1141 | 119 | } | ||
1142 | 120 | |||
1143 | 121 | function updateContainerList() { | ||
1144 | 122 | containerConfigList.reloadContainerList() | ||
1145 | 123 | |||
1146 | 124 | if (currentContainer && !containerConfigList.getContainerStatus(currentContainer) && pageStack.currentPage !== containersView) { | ||
1147 | 125 | pageStack.pop() | ||
1148 | 126 | currentContainer = "" | ||
1149 | 127 | packageOperationDetails.error(i18n.tr("Container Unavailable"), | ||
1150 | 128 | i18n.tr("This container has been destroyed and is no longer valid. You have been returned to the containers overview.")) | ||
1151 | 129 | } | ||
1152 | 130 | } | ||
1153 | 131 | } | ||
1154 | 0 | 132 | ||
1155 | === renamed file 'libertine/qml/DebianPackagePicker.qml' => 'qml/common/DebianPackagePicker.qml' | |||
1156 | === renamed file 'libertine/qml/ExtraArchivesView.qml' => 'qml/common/ExtraArchivesView.qml' | |||
1157 | --- libertine/qml/ExtraArchivesView.qml 2016-09-29 15:40:02 +0000 | |||
1158 | +++ qml/common/ExtraArchivesView.qml 2016-10-11 17:13:48 +0000 | |||
1159 | @@ -96,7 +96,7 @@ | |||
1160 | 96 | function deleteArchive(archive) { | 96 | function deleteArchive(archive) { |
1161 | 97 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 97 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) |
1162 | 98 | worker.finishedConfigure.connect(finishedConfigure) | 98 | worker.finishedConfigure.connect(finishedConfigure) |
1164 | 99 | worker.error.connect(mainView.error) | 99 | worker.error.connect(packageOperationDetails.error) |
1165 | 100 | worker.configureContainer(currentContainer, containerConfigList.getContainerName(currentContainer), ["--archive", "remove", "--archive-name", "\"" + archive + "\""]) | 100 | worker.configureContainer(currentContainer, containerConfigList.getContainerName(currentContainer), ["--archive", "remove", "--archive-name", "\"" + archive + "\""]) |
1166 | 101 | } | 101 | } |
1167 | 102 | 102 | ||
1168 | 103 | 103 | ||
1169 | === renamed file 'libertine/qml/GenericErrorDialog.qml' => 'qml/common/GenericErrorDialog.qml' | |||
1170 | === renamed file 'libertine/qml/ManageContainer.qml' => 'qml/common/ManageContainer.qml' | |||
1171 | --- libertine/qml/ManageContainer.qml 2016-07-11 14:35:11 +0000 | |||
1172 | +++ qml/common/ManageContainer.qml 2016-10-11 17:13:48 +0000 | |||
1173 | @@ -46,14 +46,14 @@ | |||
1174 | 46 | anchors.right: parent.right | 46 | anchors.right: parent.right |
1175 | 47 | 47 | ||
1176 | 48 | ListItem.Standard { | 48 | ListItem.Standard { |
1178 | 49 | visible: containerConfigList.getHostArchitecture() == 'x86_64' ? true : false | 49 | visible: containerConfigList.getHostArchitecture() === 'x86_64' ? true : false |
1179 | 50 | control: CheckBox { | 50 | control: CheckBox { |
1180 | 51 | checked: isMultiarchEnabled | 51 | checked: isMultiarchEnabled |
1181 | 52 | onClicked: { | 52 | onClicked: { |
1183 | 53 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 53 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
1184 | 54 | 54 | ||
1187 | 55 | worker.updateOperationDetails.connect(mainView.updateOperationDetails) | 55 | worker.updateOperationDetails.connect(packageOperationDetails.update) |
1188 | 56 | worker.operationFinished.connect(mainView.resetOperationDetails) | 56 | worker.operationFinished.connect(packageOperationDetails.clear) |
1189 | 57 | 57 | ||
1190 | 58 | if (checked) { | 58 | if (checked) { |
1191 | 59 | worker.configureContainer(currentContainer, | 59 | worker.configureContainer(currentContainer, |
1192 | @@ -105,12 +105,14 @@ | |||
1193 | 105 | control: CheckBox { | 105 | control: CheckBox { |
1194 | 106 | checked: isDefaultContainer | 106 | checked: isDefaultContainer |
1195 | 107 | onClicked: { | 107 | onClicked: { |
1198 | 108 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 108 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
1199 | 109 | worker.error.connect(mainView.error) | 109 | worker.error.connect(packageOperationDetails.error) |
1200 | 110 | |||
1201 | 110 | var fallback = checked | 111 | var fallback = checked |
1202 | 111 | worker.error.connect(function() { | 112 | worker.error.connect(function() { |
1203 | 112 | checked = fallback | 113 | checked = fallback |
1204 | 113 | }) | 114 | }) |
1205 | 115 | |||
1206 | 114 | worker.setDefaultContainer(currentContainer, !checked) | 116 | worker.setDefaultContainer(currentContainer, !checked) |
1207 | 115 | } | 117 | } |
1208 | 116 | } | 118 | } |
1209 | @@ -129,11 +131,11 @@ | |||
1210 | 129 | } | 131 | } |
1211 | 130 | 132 | ||
1212 | 131 | function updateContainer() { | 133 | function updateContainer() { |
1215 | 132 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 134 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
1216 | 133 | worker.error.connect(mainView.error); | 135 | worker.error.connect(packageOperationDetails.error); |
1217 | 134 | 136 | ||
1220 | 135 | worker.updateOperationDetails.connect(mainView.updateOperationDetails) | 137 | worker.updateOperationDetails.connect(packageOperationDetails.update) |
1221 | 136 | worker.operationFinished.connect(mainView.resetOperationDetails) | 138 | worker.operationFinished.connect(packageOperationDetails.clear) |
1222 | 137 | 139 | ||
1223 | 138 | worker.updateContainer(currentContainer, containerConfigList.getContainerName(currentContainer)) | 140 | worker.updateContainer(currentContainer, containerConfigList.getContainerName(currentContainer)) |
1224 | 139 | } | 141 | } |
1225 | 140 | 142 | ||
1226 | === renamed file 'libertine/qml/PackageExistsDialog.qml' => 'qml/common/PackageExistsDialog.qml' | |||
1227 | === renamed file 'libertine/qml/PackageInfoView.qml' => 'qml/common/PackageInfoView.qml' | |||
1228 | --- libertine/qml/PackageInfoView.qml 2016-06-10 13:22:16 +0000 | |||
1229 | +++ qml/common/PackageInfoView.qml 2016-10-11 17:13:48 +0000 | |||
1230 | @@ -27,19 +27,18 @@ | |||
1231 | 27 | id: packageInfoView | 27 | id: packageInfoView |
1232 | 28 | header: PageHeader { | 28 | header: PageHeader { |
1233 | 29 | id: pageHeader | 29 | id: pageHeader |
1235 | 30 | title: i18n.tr("Information for the %1 package").arg(currentPackage) | 30 | title: i18n.tr("%1 - %2").arg(currentContainer).arg(currentPackage) |
1236 | 31 | } | 31 | } |
1237 | 32 | property string currentContainer: null | 32 | property string currentContainer: null |
1238 | 33 | property var currentPackage: null | 33 | property var currentPackage: null |
1239 | 34 | property var statusText: containerConfigList.getAppStatus(currentContainer, currentPackage) | 34 | property var statusText: containerConfigList.getAppStatus(currentContainer, currentPackage) |
1240 | 35 | property var packageVersionText: i18n.tr("Obtaining package version…") | 35 | property var packageVersionText: i18n.tr("Obtaining package version…") |
1242 | 36 | property string packageOperationDetails: "" | 36 | property string currentDetails: "" |
1243 | 37 | property var worker: null | 37 | property var worker: null |
1244 | 38 | property bool showDetails: false | 38 | property bool showDetails: false |
1245 | 39 | 39 | ||
1246 | 40 | signal sendOperationInteraction(string text) | 40 | signal sendOperationInteraction(string text) |
1247 | 41 | 41 | ||
1248 | 42 | |||
1249 | 43 | Flickable { | 42 | Flickable { |
1250 | 44 | anchors { | 43 | anchors { |
1251 | 45 | topMargin: pageHeader.height | 44 | topMargin: pageHeader.height |
1252 | @@ -77,7 +76,7 @@ | |||
1253 | 77 | text: enabled ? | 76 | text: enabled ? |
1254 | 78 | showDetails ? i18n.tr('Hide') : i18n.tr('Show') | 77 | showDetails ? i18n.tr('Hide') : i18n.tr('Show') |
1255 | 79 | : i18n.tr('None') | 78 | : i18n.tr('None') |
1257 | 80 | enabled: packageOperationDetails != "" | 79 | enabled: currentDetails != "" |
1258 | 81 | onClicked: { | 80 | onClicked: { |
1259 | 82 | showDetails = !showDetails | 81 | showDetails = !showDetails |
1260 | 83 | } | 82 | } |
1261 | @@ -92,7 +91,7 @@ | |||
1262 | 92 | anchors.right: parent.right | 91 | anchors.right: parent.right |
1263 | 93 | height: Math.max(packageInfoView.height - pageHeader.height - packageListItem.height - showDetailsView.height - statusListItem.height - 35, units.gu(35)) | 92 | height: Math.max(packageInfoView.height - pageHeader.height - packageListItem.height - showDetailsView.height - statusListItem.height - 35, units.gu(35)) |
1264 | 94 | readOnly: true | 93 | readOnly: true |
1266 | 95 | text: packageOperationDetails | 94 | text: currentDetails |
1267 | 96 | } | 95 | } |
1268 | 97 | 96 | ||
1269 | 98 | TextField { | 97 | TextField { |
1270 | @@ -112,17 +111,17 @@ | |||
1271 | 112 | Component.onCompleted: { | 111 | Component.onCompleted: { |
1272 | 113 | containerConfigList.configChanged.connect(reloadStatus) | 112 | containerConfigList.configChanged.connect(reloadStatus) |
1273 | 114 | var command = "apt-cache policy " + currentPackage | 113 | var command = "apt-cache policy " + currentPackage |
1275 | 115 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | 114 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
1276 | 116 | worker.finishedCommand.connect(getPackageVersion) | 115 | worker.finishedCommand.connect(getPackageVersion) |
1277 | 117 | 116 | ||
1279 | 118 | packageOperationDetails = mainView.getOperationDetails(currentContainer, currentPackage) | 117 | currentDetails = packageOperationDetails.details(currentContainer, currentPackage) |
1280 | 119 | packageDetailsView.cursorPosition = packageDetailsView.length | 118 | packageDetailsView.cursorPosition = packageDetailsView.length |
1282 | 120 | if (packageOperationDetails != "") { | 119 | if (currentDetails != "") { |
1283 | 121 | showDetails = !showDetails | 120 | showDetails = !showDetails |
1284 | 122 | } | 121 | } |
1285 | 123 | 122 | ||
1288 | 124 | mainView.operationDetailsUpdated.connect(updatePackageDetails) | 123 | packageOperationDetails.updated.connect(updatePackageDetails) |
1289 | 125 | sendOperationInteraction.connect(mainView.packageOperationInteraction) | 124 | sendOperationInteraction.connect(packageOperationDetails.send) |
1290 | 126 | 125 | ||
1291 | 127 | worker.error.connect(onError) | 126 | worker.error.connect(onError) |
1292 | 128 | worker.runCommand(currentContainer, containerConfigList.getContainerName(currentContainer), command) | 127 | worker.runCommand(currentContainer, containerConfigList.getContainerName(currentContainer), command) |
1293 | @@ -130,13 +129,13 @@ | |||
1294 | 130 | 129 | ||
1295 | 131 | Component.onDestruction: { | 130 | Component.onDestruction: { |
1296 | 132 | containerConfigList.configChanged.disconnect(reloadStatus) | 131 | containerConfigList.configChanged.disconnect(reloadStatus) |
1299 | 133 | mainView.operationDetailsUpdated.disconnect(updatePackageDetails) | 132 | packageOperationDetails.updated.disconnect(updatePackageDetails) |
1300 | 134 | sendOperationInteraction.disconnect(mainView.packageOperationInteraction) | 133 | sendOperationInteraction.disconnect(packageOperationDetails.send) |
1301 | 135 | } | 134 | } |
1302 | 136 | 135 | ||
1303 | 137 | function updatePackageDetails(container_id, package_name, details) { | 136 | function updatePackageDetails(container_id, package_name, details) { |
1304 | 138 | if (container_id === currentContainer && package_name === currentPackage) { | 137 | if (container_id === currentContainer && package_name === currentPackage) { |
1306 | 139 | packageOperationDetails += details | 138 | currentDetails += details |
1307 | 140 | packageDetailsView.cursorPosition = packageDetailsView.length | 139 | packageDetailsView.cursorPosition = packageDetailsView.length |
1308 | 141 | } | 140 | } |
1309 | 142 | } | 141 | } |
1310 | 143 | 142 | ||
1311 | === renamed file 'libertine/qml/SearchPackagesDialog.qml' => 'qml/common/SearchPackagesDialog.qml' | |||
1312 | --- libertine/qml/SearchPackagesDialog.qml 2016-05-06 21:13:01 +0000 | |||
1313 | +++ qml/common/SearchPackagesDialog.qml 2016-10-11 17:13:48 +0000 | |||
1314 | @@ -25,6 +25,7 @@ | |||
1315 | 25 | id: searchPackageDialog | 25 | id: searchPackageDialog |
1316 | 26 | title: i18n.tr("Search for packages") | 26 | title: i18n.tr("Search for packages") |
1317 | 27 | text: i18n.tr("Search archives for packages") | 27 | text: i18n.tr("Search archives for packages") |
1318 | 28 | property string currentContainer: null | ||
1319 | 28 | 29 | ||
1320 | 29 | TextField { | 30 | TextField { |
1321 | 30 | id: searchPackageInput | 31 | id: searchPackageInput |
1322 | @@ -42,11 +43,11 @@ | |||
1323 | 42 | onClicked: { | 43 | onClicked: { |
1324 | 43 | if (searchPackageInput.text != "") { | 44 | if (searchPackageInput.text != "") { |
1325 | 44 | PopupUtils.close(searchPackageDialog) | 45 | PopupUtils.close(searchPackageDialog) |
1327 | 45 | if (pageStack.currentPage.objectName == "searchResultsView") { | 46 | if (pageStack.currentPage.objectName === "searchResultsView") { |
1328 | 46 | pageStack.currentPage.searchForPackages(searchPackageInput.text) | 47 | pageStack.currentPage.searchForPackages(searchPackageInput.text) |
1329 | 47 | } | 48 | } |
1330 | 48 | else { | 49 | else { |
1332 | 49 | pageStack.push(Qt.resolvedUrl("SearchResultsView.qml"), {search_string : searchPackageInput.text}) | 50 | pageStack.push(Qt.resolvedUrl("SearchResultsView.qml"), {search_string : searchPackageInput.text, currentContainer: currentContainer}) |
1333 | 50 | } | 51 | } |
1334 | 51 | } | 52 | } |
1335 | 52 | } | 53 | } |
1336 | 53 | 54 | ||
1337 | === renamed file 'libertine/qml/SearchResults.qml' => 'qml/common/SearchResults.qml' | |||
1338 | --- libertine/qml/SearchResults.qml 2016-05-10 19:26:22 +0000 | |||
1339 | +++ qml/common/SearchResults.qml 2016-10-11 17:13:48 +0000 | |||
1340 | @@ -28,8 +28,10 @@ | |||
1341 | 28 | fill: parent | 28 | fill: parent |
1342 | 29 | } | 29 | } |
1343 | 30 | 30 | ||
1344 | 31 | property var currentContainer: null | ||
1345 | 32 | |||
1346 | 31 | function install(packageName) { | 33 | function install(packageName) { |
1348 | 32 | if (!containerConfigList.isAppInstalled(mainView.currentContainer, packageName)) { | 34 | if (!containerConfigList.isAppInstalled(currentContainer, packageName)) { |
1349 | 33 | pageStack.pop() | 35 | pageStack.pop() |
1350 | 34 | pageStack.currentPage.installPackage(packageName) | 36 | pageStack.currentPage.installPackage(packageName) |
1351 | 35 | } | 37 | } |
1352 | 36 | 38 | ||
1353 | === renamed file 'libertine/qml/SearchResultsView.qml' => 'qml/common/SearchResultsView.qml' | |||
1354 | --- libertine/qml/SearchResultsView.qml 2016-05-19 17:56:43 +0000 | |||
1355 | +++ qml/common/SearchResultsView.qml 2016-10-11 17:13:48 +0000 | |||
1356 | @@ -43,6 +43,8 @@ | |||
1357 | 43 | property var search_string: null | 43 | property var search_string: null |
1358 | 44 | property var search_comp: null | 44 | property var search_comp: null |
1359 | 45 | property var search_obj: null | 45 | property var search_obj: null |
1360 | 46 | property var currentContainer: null | ||
1361 | 47 | |||
1362 | 46 | signal doSearch | 48 | signal doSearch |
1363 | 47 | 49 | ||
1364 | 48 | Component { | 50 | Component { |
1365 | @@ -50,7 +52,7 @@ | |||
1366 | 50 | Dialog { | 52 | Dialog { |
1367 | 51 | id: noResultsDialog | 53 | id: noResultsDialog |
1368 | 52 | title: i18n.tr("No Search Results Found") | 54 | title: i18n.tr("No Search Results Found") |
1370 | 53 | property var returnHome: false | 55 | property bool returnHome: false |
1371 | 54 | 56 | ||
1372 | 55 | Button { | 57 | Button { |
1373 | 56 | id: searchAgain | 58 | id: searchAgain |
1374 | @@ -58,7 +60,7 @@ | |||
1375 | 58 | color: UbuntuColors.green | 60 | color: UbuntuColors.green |
1376 | 59 | onClicked: { | 61 | onClicked: { |
1377 | 60 | PopupUtils.close(noResultsDialog) | 62 | PopupUtils.close(noResultsDialog) |
1379 | 61 | PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml")) | 63 | PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), {currentContainer: currentContainer}) |
1380 | 62 | } | 64 | } |
1381 | 63 | } | 65 | } |
1382 | 64 | 66 | ||
1383 | @@ -118,11 +120,11 @@ | |||
1384 | 118 | } | 120 | } |
1385 | 119 | packageListModel.clear() | 121 | packageListModel.clear() |
1386 | 120 | 122 | ||
1389 | 121 | var comp = Qt.createComponent("ContainerManager.qml") | 123 | var worker = Qt.createComponent("ContainerManager.qml").createObject(parent) |
1388 | 122 | var worker = comp.createObject() | ||
1390 | 123 | worker.finishedSearch.connect(finishedSearch) | 124 | worker.finishedSearch.connect(finishedSearch) |
1393 | 124 | worker.error.connect(mainView.error) | 125 | worker.error.connect(packageOperationDetails.error) |
1394 | 125 | worker.searchPackageCache(mainView.currentContainer, search_string) | 126 | |
1395 | 127 | worker.searchPackageCache(currentContainer, search_string) | ||
1396 | 126 | } | 128 | } |
1397 | 127 | 129 | ||
1398 | 128 | function finishedSearch(packageList) { | 130 | function finishedSearch(packageList) { |
1399 | @@ -133,14 +135,14 @@ | |||
1400 | 133 | packageListModel.append({"package_desc": packageList[i], "package_name": packageList[i].split(' ')[0]}) | 135 | packageListModel.append({"package_desc": packageList[i], "package_name": packageList[i].split(' ')[0]}) |
1401 | 134 | } | 136 | } |
1402 | 135 | if (!search_comp) { | 137 | if (!search_comp) { |
1404 | 136 | search_comp = Qt.createComponent("SearchResults.qml") | 138 | search_comp = Qt.createComponent("SearchResults.qml", {currentContainer: currentContainer}) |
1405 | 137 | } | 139 | } |
1407 | 138 | search_obj = search_comp.createObject(searchResultsView, {"model": packageListModel}) | 140 | search_obj = search_comp.createObject(parent, {"model": packageListModel}) |
1408 | 139 | } | 141 | } |
1409 | 140 | else { | 142 | else { |
1410 | 141 | PopupUtils.open(noResultsPopup) | 143 | PopupUtils.open(noResultsPopup) |
1411 | 142 | } | 144 | } |
1412 | 143 | } | 145 | } |
1413 | 144 | 146 | ||
1415 | 145 | onDoSearch: PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml")) | 147 | onDoSearch: PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), {currentContainer: currentContainer}) |
1416 | 146 | } | 148 | } |
1417 | 147 | 149 | ||
1418 | === added directory 'qml/gui' | |||
1419 | === renamed file 'libertine/qml/ContainersView.qml' => 'qml/gui/ContainersView.qml' | |||
1420 | --- libertine/qml/ContainersView.qml 2016-08-22 18:20:43 +0000 | |||
1421 | +++ qml/gui/ContainersView.qml 2016-10-11 17:13:48 +0000 | |||
1422 | @@ -20,6 +20,7 @@ | |||
1423 | 20 | import QtQuick 2.4 | 20 | import QtQuick 2.4 |
1424 | 21 | import Ubuntu.Components 1.3 | 21 | import Ubuntu.Components 1.3 |
1425 | 22 | import Ubuntu.Components.Popups 1.3 | 22 | import Ubuntu.Components.Popups 1.3 |
1426 | 23 | import "../common" | ||
1427 | 23 | 24 | ||
1428 | 24 | 25 | ||
1429 | 25 | /** | 26 | /** |
1430 | @@ -35,115 +36,19 @@ | |||
1431 | 35 | Action { | 36 | Action { |
1432 | 36 | iconName: "add" | 37 | iconName: "add" |
1433 | 37 | onTriggered: { | 38 | onTriggered: { |
1435 | 38 | PopupUtils.open(Qt.resolvedUrl("ContainerOptionsDialog.qml")) | 39 | PopupUtils.open(Qt.resolvedUrl("../common/ContainerOptionsDialog.qml")) |
1436 | 39 | } | 40 | } |
1437 | 40 | } | 41 | } |
1438 | 41 | ] | 42 | ] |
1439 | 42 | leadingActionBar.actions: [ | ||
1440 | 43 | Action { | ||
1441 | 44 | iconName: "back" | ||
1442 | 45 | visible: false | ||
1443 | 46 | } | ||
1444 | 47 | ] | ||
1445 | 48 | } | 43 | } |
1446 | 44 | property string currentContainer | ||
1447 | 49 | 45 | ||
1450 | 50 | UbuntuListView { | 46 | ContainersList { |
1449 | 51 | id: containersList | ||
1451 | 52 | anchors { | 47 | anchors { |
1452 | 53 | topMargin: pageHeader.height | 48 | topMargin: pageHeader.height |
1547 | 54 | fill: parent | 49 | fill: containersView |
1548 | 55 | } | 50 | } |
1549 | 56 | model: containerConfigList | 51 | |
1550 | 57 | 52 | currentContainer: containersView.currentContainer | |
1457 | 58 | function edit(id, status) { | ||
1458 | 59 | if (status === "removing") { | ||
1459 | 60 | mainView.error(i18n.tr("Container Unavailable"), i18n.tr("Container is being destroyed and is no longer editable.")) | ||
1460 | 61 | return | ||
1461 | 62 | } | ||
1462 | 63 | mainView.currentContainer = id | ||
1463 | 64 | containerAppsList.setContainerApps(mainView.currentContainer) | ||
1464 | 65 | pageStack.push(Qt.resolvedUrl("HomeView.qml"), {"currentContainer": mainView.currentContainer}) | ||
1465 | 66 | } | ||
1466 | 67 | |||
1467 | 68 | delegate: ListItem { | ||
1468 | 69 | Label { | ||
1469 | 70 | text: name | ||
1470 | 71 | anchors { | ||
1471 | 72 | verticalCenter: parent.verticalCenter | ||
1472 | 73 | left: parent.left | ||
1473 | 74 | leftMargin: units.gu(2) | ||
1474 | 75 | } | ||
1475 | 76 | } | ||
1476 | 77 | ActivityIndicator { | ||
1477 | 78 | id: containerActivity | ||
1478 | 79 | anchors { | ||
1479 | 80 | verticalCenter: parent.verticalCenter | ||
1480 | 81 | right: parent.right | ||
1481 | 82 | rightMargin: units.gu(2) | ||
1482 | 83 | } | ||
1483 | 84 | visible: (installStatus === i18n.tr("installing") || | ||
1484 | 85 | installStatus === i18n.tr("removing")) ? true : false | ||
1485 | 86 | running: containerActivity.visible | ||
1486 | 87 | } | ||
1487 | 88 | |||
1488 | 89 | onClicked: { containersList.edit(containerId, installStatus) } | ||
1489 | 90 | |||
1490 | 91 | leadingActions: ListItemActions { | ||
1491 | 92 | actions: [ | ||
1492 | 93 | Action { | ||
1493 | 94 | iconName: "delete" | ||
1494 | 95 | text: i18n.tr("delete") | ||
1495 | 96 | description: i18n.tr("Delete Container") | ||
1496 | 97 | onTriggered: { | ||
1497 | 98 | var worker = Qt.createComponent("ContainerManager.qml").createObject(mainView) | ||
1498 | 99 | worker.error.connect(mainView.error) | ||
1499 | 100 | worker.destroyContainer(containerId) | ||
1500 | 101 | } | ||
1501 | 102 | } | ||
1502 | 103 | ] | ||
1503 | 104 | } | ||
1504 | 105 | |||
1505 | 106 | trailingActions: ListItemActions { | ||
1506 | 107 | actions: [ | ||
1507 | 108 | Action { | ||
1508 | 109 | iconName: "info" | ||
1509 | 110 | text: i18n.tr("info") | ||
1510 | 111 | description: i18n.tr("Container Info") | ||
1511 | 112 | onTriggered: { | ||
1512 | 113 | mainView.currentContainer = containerId | ||
1513 | 114 | pageStack.push(Qt.resolvedUrl("ContainerInfoView.qml"), {currentContainer: containerId}) | ||
1514 | 115 | } | ||
1515 | 116 | }, | ||
1516 | 117 | Action { | ||
1517 | 118 | iconName: "edit" | ||
1518 | 119 | text: i18n.tr("edit") | ||
1519 | 120 | description: i18n.tr("Container Apps") | ||
1520 | 121 | visible: (installStatus === i18n.tr("ready") || | ||
1521 | 122 | installStatus === i18n.tr("updating")) ? true : false | ||
1522 | 123 | onTriggered: { | ||
1523 | 124 | containersList.edit(containerId, installStatus) | ||
1524 | 125 | } | ||
1525 | 126 | } | ||
1526 | 127 | ] | ||
1527 | 128 | } | ||
1528 | 129 | } | ||
1529 | 130 | } | ||
1530 | 131 | |||
1531 | 132 | Component.onCompleted: { | ||
1532 | 133 | containerConfigList.configChanged.connect(updateContainerList) | ||
1533 | 134 | } | ||
1534 | 135 | |||
1535 | 136 | Component.onDestruction: { | ||
1536 | 137 | containerConfigList.configChanged.disconnect(updateContainerList) | ||
1537 | 138 | } | ||
1538 | 139 | |||
1539 | 140 | function updateContainerList() { | ||
1540 | 141 | containerConfigList.reloadContainerList() | ||
1541 | 142 | |||
1542 | 143 | if (mainView.currentContainer && !containerConfigList.getContainerStatus(mainView.currentContainer) && pageStack.currentPage !== containersView) { | ||
1543 | 144 | pageStack.pop() | ||
1544 | 145 | mainView.currentContainer = "" | ||
1545 | 146 | mainView.error(i18n.tr("Container Unavailable"), i18n.tr("This container has been destroyed and is no longer valid. You have been returned to the containers overview.")) | ||
1546 | 147 | } | ||
1551 | 148 | } | 53 | } |
1552 | 149 | } | 54 | } |
1553 | 150 | 55 | ||
1554 | === renamed file 'libertine/qml/WelcomeView.qml' => 'qml/gui/WelcomeView.qml' | |||
1555 | --- libertine/qml/WelcomeView.qml 2016-09-07 20:43:08 +0000 | |||
1556 | +++ qml/gui/WelcomeView.qml 2016-10-11 17:13:48 +0000 | |||
1557 | @@ -49,6 +49,7 @@ | |||
1558 | 49 | 49 | ||
1559 | 50 | text: i18n.tr("Welcome to the Ubuntu Legacy Application Support Manager.") | 50 | text: i18n.tr("Welcome to the Ubuntu Legacy Application Support Manager.") |
1560 | 51 | } | 51 | } |
1561 | 52 | |||
1562 | 52 | Label { | 53 | Label { |
1563 | 53 | id: warningMessage | 54 | id: warningMessage |
1564 | 54 | Layout.fillWidth: true | 55 | Layout.fillWidth: true |
1565 | @@ -67,13 +68,13 @@ | |||
1566 | 67 | color: UbuntuColors.green | 68 | color: UbuntuColors.green |
1567 | 68 | 69 | ||
1568 | 69 | onClicked: { | 70 | onClicked: { |
1570 | 70 | var dialog = PopupUtils.open(Qt.resolvedUrl("ContainerOptionsDialog.qml")) | 71 | var dialog = PopupUtils.open(Qt.resolvedUrl("../common/ContainerOptionsDialog.qml")) |
1571 | 71 | dialog.onCreateInitialized.connect(createInitialized) | 72 | dialog.onCreateInitialized.connect(createInitialized) |
1572 | 72 | } | 73 | } |
1573 | 73 | } | 74 | } |
1574 | 74 | } | 75 | } |
1575 | 75 | 76 | ||
1576 | 76 | function createInitialized() { | 77 | function createInitialized() { |
1578 | 77 | pageStack.push(Qt.resolvedUrl("ContainersView.qml")) | 78 | pageStack.push(Qt.resolvedUrl("ContainersView.qml"), {currentContainer: ""}) |
1579 | 78 | } | 79 | } |
1580 | 79 | } | 80 | } |
1581 | 80 | 81 | ||
1582 | === renamed file 'libertine/qml/libertine.qml' => 'qml/gui/libertine.qml' | |||
1583 | --- libertine/qml/libertine.qml 2016-06-09 18:20:19 +0000 | |||
1584 | +++ qml/gui/libertine.qml 2016-10-11 17:13:48 +0000 | |||
1585 | @@ -28,7 +28,6 @@ | |||
1586 | 28 | applicationName: "libertine" | 28 | applicationName: "libertine" |
1587 | 29 | width: units.gu(90) | 29 | width: units.gu(90) |
1588 | 30 | height: units.gu(75) | 30 | height: units.gu(75) |
1589 | 31 | property var currentContainer: undefined | ||
1590 | 32 | property var operationDetails: undefined | 31 | property var operationDetails: undefined |
1591 | 33 | 32 | ||
1592 | 34 | signal error(string short_description, string details) | 33 | signal error(string short_description, string details) |
1593 | @@ -40,15 +39,17 @@ | |||
1594 | 40 | } | 39 | } |
1595 | 41 | 40 | ||
1596 | 42 | Component.onCompleted: { | 41 | Component.onCompleted: { |
1600 | 43 | Qt.createComponent("ContainerManager.qml").createObject(mainView).fixIntegrity() | 42 | packageOperationDetails.error.connect(error) |
1601 | 44 | 43 | ||
1602 | 45 | mainView.currentContainer = containerConfigList.defaultContainerId | 44 | Qt.createComponent("../common/ContainerManager.qml").createObject(mainView).fixIntegrity() |
1603 | 45 | |||
1604 | 46 | var currentContainer = containerConfigList.defaultContainerId | ||
1605 | 46 | 47 | ||
1606 | 47 | if (!containerConfigList.empty()) { | 48 | if (!containerConfigList.empty()) { |
1611 | 48 | pageStack.push(Qt.resolvedUrl("ContainersView.qml")) | 49 | pageStack.push(Qt.resolvedUrl("ContainersView.qml"), {currentContainer: currentContainer}) |
1612 | 49 | if (mainView.currentContainer) { | 50 | if (currentContainer) { |
1613 | 50 | containerAppsList.setContainerApps(mainView.currentContainer) | 51 | containerAppsList.setContainerApps(currentContainer) |
1614 | 51 | pageStack.push(Qt.resolvedUrl("HomeView.qml"), {currentContainer: mainView.currentContainer}) | 52 | pageStack.push(Qt.resolvedUrl("../common/ContainerEditView.qml"), {currentContainer: currentContainer}) |
1615 | 52 | } | 53 | } |
1616 | 53 | } | 54 | } |
1617 | 54 | else { | 55 | else { |
1618 | @@ -57,7 +58,7 @@ | |||
1619 | 57 | } | 58 | } |
1620 | 58 | 59 | ||
1621 | 59 | onError: { | 60 | onError: { |
1623 | 60 | PopupUtils.open(Qt.resolvedUrl("GenericErrorDialog.qml"), null, | 61 | PopupUtils.open(Qt.resolvedUrl("../common/GenericErrorDialog.qml"), null, |
1624 | 61 | {"short_description": short_description, "details": details}) | 62 | {"short_description": short_description, "details": details}) |
1625 | 62 | } | 63 | } |
1626 | 63 | 64 | ||
1627 | 64 | 65 | ||
1628 | === added directory 'qml/plugin' | |||
1629 | === added file 'qml/plugin/MainSettingsPage.qml' | |||
1630 | --- qml/plugin/MainSettingsPage.qml 1970-01-01 00:00:00 +0000 | |||
1631 | +++ qml/plugin/MainSettingsPage.qml 2016-10-11 17:13:48 +0000 | |||
1632 | @@ -0,0 +1,58 @@ | |||
1633 | 1 | /* | ||
1634 | 2 | * Copyright (C) 2016 Canonical Ltd. | ||
1635 | 3 | * | ||
1636 | 4 | * This program is free software: you can redistribute it and/or modify it | ||
1637 | 5 | * under the terms of the GNU General Public License version 3, as published | ||
1638 | 6 | * by the Free Software Foundation. | ||
1639 | 7 | * | ||
1640 | 8 | * This program is distributed in the hope that it will be useful, but | ||
1641 | 9 | * WITHOUT ANY WARRANTY; without even the implied warranties of | ||
1642 | 10 | * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
1643 | 11 | * PURPOSE. See the GNU General Public License for more details. | ||
1644 | 12 | * | ||
1645 | 13 | * You should have received a copy of the GNU General Public License along | ||
1646 | 14 | * with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1647 | 15 | */ | ||
1648 | 16 | |||
1649 | 17 | import QtQuick 2.4 | ||
1650 | 18 | import Ubuntu.Components 1.3 | ||
1651 | 19 | import Ubuntu.Components.Popups 1.3 | ||
1652 | 20 | import SystemSettings 1.0 | ||
1653 | 21 | import Libertine 1.0 | ||
1654 | 22 | import "../common" | ||
1655 | 23 | |||
1656 | 24 | ItemPage { | ||
1657 | 25 | id: mainView | ||
1658 | 26 | |||
1659 | 27 | header: PageHeader { | ||
1660 | 28 | id: pageHeader | ||
1661 | 29 | title: i18n.tr("Manage Libertine Containers") | ||
1662 | 30 | trailingActionBar.actions: [ | ||
1663 | 31 | Action { | ||
1664 | 32 | iconName: "add" | ||
1665 | 33 | onTriggered: { | ||
1666 | 34 | PopupUtils.open(Qt.resolvedUrl("../common/ContainerOptionsDialog.qml")) | ||
1667 | 35 | } | ||
1668 | 36 | } | ||
1669 | 37 | ] | ||
1670 | 38 | } | ||
1671 | 39 | |||
1672 | 40 | property string currentContainer | ||
1673 | 41 | property var operationDetails | ||
1674 | 42 | |||
1675 | 43 | signal error(string short_description, string details) | ||
1676 | 44 | |||
1677 | 45 | ContainersList { | ||
1678 | 46 | anchors { | ||
1679 | 47 | topMargin: pageHeader.height | ||
1680 | 48 | fill: containersView | ||
1681 | 49 | } | ||
1682 | 50 | |||
1683 | 51 | currentContainer: mainView.currentContainer | ||
1684 | 52 | } | ||
1685 | 53 | |||
1686 | 54 | onError: { | ||
1687 | 55 | PopupUtils.open(Qt.resolvedUrl("../common/GenericErrorDialog.qml"), null, | ||
1688 | 56 | {"short_description": short_description, "details": details}) | ||
1689 | 57 | } | ||
1690 | 58 | } | ||
1691 | 0 | 59 | ||
1692 | === added directory 'system-settings-plugin' | |||
1693 | === added file 'system-settings-plugin/CMakeLists.txt' | |||
1694 | --- system-settings-plugin/CMakeLists.txt 1970-01-01 00:00:00 +0000 | |||
1695 | +++ system-settings-plugin/CMakeLists.txt 2016-10-11 17:13:48 +0000 | |||
1696 | @@ -0,0 +1,38 @@ | |||
1697 | 1 | set(PLUGIN_MANIFEST_DIR_BASE share/ubuntu/settings/system) | ||
1698 | 2 | set(PLUGIN_MODULE_DIR_BASE ubuntu-system-settings) | ||
1699 | 3 | |||
1700 | 4 | set(PLUGIN_MANIFEST_DIR "${CMAKE_INSTALL_PREFIX}/${PLUGIN_MANIFEST_DIR_BASE}") | ||
1701 | 5 | set(PLUGIN_MODULE_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/${PLUGIN_MODULE_DIR_BASE}") | ||
1702 | 6 | set(PLUGIN_QML_DIR "${CMAKE_INSTALL_PREFIX}/share/ubuntu/settings/system/qml-plugins/libertine") | ||
1703 | 7 | |||
1704 | 8 | SET(CMAKE_INSTALL_RPATH "${PLUGIN_MODULE_DIR}") | ||
1705 | 9 | |||
1706 | 10 | configure_file(config.h.in config.h) | ||
1707 | 11 | |||
1708 | 12 | set(LIBERTINE_PLUGIN_ICON_PATH "${PLUGIN_MANIFEST_DIR}/icons") | ||
1709 | 13 | set(PLUGIN_SETTINGS_TARGET libertine.settings) | ||
1710 | 14 | configure_file(${PLUGIN_SETTINGS_TARGET}.in ${PLUGIN_SETTINGS_TARGET}) | ||
1711 | 15 | |||
1712 | 16 | set (CMAKE_INCLUDE_CURRENT_DIR ON) | ||
1713 | 17 | set (CMAKE_AUTOMOC ON) | ||
1714 | 18 | |||
1715 | 19 | # For some reason, building on vivid seems to require that we manually | ||
1716 | 20 | # add /usr/include to the include directories when using automoc here. | ||
1717 | 21 | set (CMAKE_AUTOMOC_MOC_OPTIONS -I/usr/include) | ||
1718 | 22 | |||
1719 | 23 | pkg_check_modules(SYSTEM_SETTINGS REQUIRED SystemSettings) | ||
1720 | 24 | |||
1721 | 25 | file(GLOB_RECURSE PLUGIN_QML_SRC | ||
1722 | 26 | ${CMAKE_SOURCE_DIR}/qml/common/*.qml | ||
1723 | 27 | ${CMAKE_SOURCE_DIR}/qml/plugin/*.qml | ||
1724 | 28 | ) | ||
1725 | 29 | |||
1726 | 30 | add_library(libertine-plugin MODULE plugin.cpp plugin.h ${PLUGIN_QML_SRC}) | ||
1727 | 31 | qt5_use_modules(libertine-plugin Qml Quick) | ||
1728 | 32 | |||
1729 | 33 | include_directories(${SYSTEM_SETTINGS_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/libertine) | ||
1730 | 34 | target_link_libraries(libertine-plugin ${LIBERTINE_COMMON} ${SYSTEM_SETTINGS_LIBRARIES}) | ||
1731 | 35 | |||
1732 | 36 | install(TARGETS libertine-plugin LIBRARY DESTINATION ${PLUGIN_MODULE_DIR} NAMELINK_SKIP) | ||
1733 | 37 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_SETTINGS_TARGET} DESTINATION ${PLUGIN_MANIFEST_DIR}) | ||
1734 | 38 | install(FILES libertine-plugin.png DESTINATION ${LIBERTINE_PLUGIN_ICON_PATH}) | ||
1735 | 0 | 39 | ||
1736 | === added file 'system-settings-plugin/config.h.in' | |||
1737 | --- system-settings-plugin/config.h.in 1970-01-01 00:00:00 +0000 | |||
1738 | +++ system-settings-plugin/config.h.in 2016-10-11 17:13:48 +0000 | |||
1739 | @@ -0,0 +1,16 @@ | |||
1740 | 1 | /* | ||
1741 | 2 | * Copyright 2016 Canonical Ltd | ||
1742 | 3 | * | ||
1743 | 4 | * Libertine is free software: you can redistribute it and/or modify it under | ||
1744 | 5 | * the terms of the GNU General Public License, version 3, as published by the | ||
1745 | 6 | * Free Software Foundation. | ||
1746 | 7 | * | ||
1747 | 8 | * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY | ||
1748 | 9 | * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | ||
1749 | 10 | * A PARTICULAR PURPOSE. See the GNU General Public License for more details. | ||
1750 | 11 | * | ||
1751 | 12 | * You should have received a copy of the GNU General Public License | ||
1752 | 13 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1753 | 14 | */ | ||
1754 | 15 | |||
1755 | 16 | #define LIBERTINE_PLUGIN_QML_DIR "@LIBERTINE_QML_PATH@/plugin" | ||
1756 | 0 | 17 | ||
1757 | === added file 'system-settings-plugin/libertine-plugin.png' | |||
1758 | 1 | Binary files system-settings-plugin/libertine-plugin.png 1970-01-01 00:00:00 +0000 and system-settings-plugin/libertine-plugin.png 2016-10-11 17:13:48 +0000 differ | 18 | Binary files system-settings-plugin/libertine-plugin.png 1970-01-01 00:00:00 +0000 and system-settings-plugin/libertine-plugin.png 2016-10-11 17:13:48 +0000 differ |
1759 | === added file 'system-settings-plugin/libertine.settings.in' | |||
1760 | --- system-settings-plugin/libertine.settings.in 1970-01-01 00:00:00 +0000 | |||
1761 | +++ system-settings-plugin/libertine.settings.in 2016-10-11 17:13:48 +0000 | |||
1762 | @@ -0,0 +1,14 @@ | |||
1763 | 1 | { | ||
1764 | 2 | "name": "Libertine", | ||
1765 | 3 | "icon": "${LIBERTINE_PLUGIN_ICON_PATH}/libertine-plugin.png", | ||
1766 | 4 | "translations": "libertine", | ||
1767 | 5 | "category": "system", | ||
1768 | 6 | "keywords": [ | ||
1769 | 7 | "libertine", | ||
1770 | 8 | "legacy", | ||
1771 | 9 | "x11" | ||
1772 | 10 | ], | ||
1773 | 11 | "has-dynamic-keywords": false, | ||
1774 | 12 | "has-dynamic-visibility": false, | ||
1775 | 13 | "plugin": "libertine-plugin" | ||
1776 | 14 | } | ||
1777 | 0 | 15 | ||
1778 | === added file 'system-settings-plugin/plugin.cpp' | |||
1779 | --- system-settings-plugin/plugin.cpp 1970-01-01 00:00:00 +0000 | |||
1780 | +++ system-settings-plugin/plugin.cpp 2016-10-11 17:13:48 +0000 | |||
1781 | @@ -0,0 +1,105 @@ | |||
1782 | 1 | /* | ||
1783 | 2 | * Copyright (C) 2016 Canonical Ltd. | ||
1784 | 3 | * | ||
1785 | 4 | * This program is free software: you can redistribute it and/or modify it | ||
1786 | 5 | * under the terms of the GNU General Public License version 3, as published | ||
1787 | 6 | * by the Free Software Foundation. | ||
1788 | 7 | * | ||
1789 | 8 | * This program is distributed in the hope that it will be useful, but | ||
1790 | 9 | * WITHOUT ANY WARRANTY; without even the implied warranties of | ||
1791 | 10 | * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
1792 | 11 | * PURPOSE. See the GNU General Public License for more details. | ||
1793 | 12 | * | ||
1794 | 13 | * You should have received a copy of the GNU General Public License along | ||
1795 | 14 | * with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1796 | 15 | */ | ||
1797 | 16 | |||
1798 | 17 | #include "plugin.h" | ||
1799 | 18 | |||
1800 | 19 | #include "config.h" | ||
1801 | 20 | #include "common/ContainerManager.h" | ||
1802 | 21 | #include "common/ContainerAppsList.h" | ||
1803 | 22 | #include "common/ContainerArchivesList.h" | ||
1804 | 23 | #include "common/ContainerConfigList.h" | ||
1805 | 24 | #include "common/LibertineConfig.h" | ||
1806 | 25 | #include "common/ContainerConfig.h" | ||
1807 | 26 | #include "common/PackageOperationDetails.h" | ||
1808 | 27 | #include <memory> | ||
1809 | 28 | #include <QQmlEngine> | ||
1810 | 29 | #include <QQmlContext> | ||
1811 | 30 | #include <QFileSystemWatcher> | ||
1812 | 31 | #include <SystemSettings/ItemBase> | ||
1813 | 32 | |||
1814 | 33 | using namespace SystemSettings; | ||
1815 | 34 | |||
1816 | 35 | class LibertineItem: public ItemBase | ||
1817 | 36 | { | ||
1818 | 37 | Q_OBJECT | ||
1819 | 38 | |||
1820 | 39 | public: | ||
1821 | 40 | explicit LibertineItem(const QVariantMap &staticData, QObject *parent = 0); | ||
1822 | 41 | virtual ~LibertineItem() = default; | ||
1823 | 42 | |||
1824 | 43 | virtual QQmlComponent* pageComponent(QQmlEngine *engine, | ||
1825 | 44 | QObject *parent = 0) override; | ||
1826 | 45 | |||
1827 | 46 | private: | ||
1828 | 47 | std::unique_ptr<LibertineConfig> config_; | ||
1829 | 48 | ContainerConfigList* containers_; | ||
1830 | 49 | ContainerAppsList* container_apps_; | ||
1831 | 50 | ContainerArchivesList* container_archives_; | ||
1832 | 51 | PackageOperationDetails* package_operation_details_; | ||
1833 | 52 | QFileSystemWatcher watcher_; | ||
1834 | 53 | |||
1835 | 54 | private slots: | ||
1836 | 55 | void reload_config(QString const&); | ||
1837 | 56 | }; | ||
1838 | 57 | |||
1839 | 58 | LibertineItem:: | ||
1840 | 59 | LibertineItem(const QVariantMap &staticData, QObject *parent) | ||
1841 | 60 | : ItemBase(staticData, parent) | ||
1842 | 61 | , config_(new LibertineConfig()) | ||
1843 | 62 | , containers_(new ContainerConfigList(config_.get(), this)) | ||
1844 | 63 | , container_apps_(new ContainerAppsList(containers_, this)) | ||
1845 | 64 | , container_archives_(new ContainerArchivesList(containers_, this)) | ||
1846 | 65 | , package_operation_details_(new PackageOperationDetails(this)) | ||
1847 | 66 | , watcher_({config_->containers_config_file_name()}) | ||
1848 | 67 | { | ||
1849 | 68 | qmlRegisterType<ContainerConfig>("Libertine", 1, 0, "ContainerConfig"); | ||
1850 | 69 | qmlRegisterType<ContainerManagerWorker>("Libertine", 1, 0, "ContainerManagerWorker"); | ||
1851 | 70 | qmlRegisterType<PackageOperationDetails>("Libertine", 1, 0, "PackageOperationDetails"); | ||
1852 | 71 | |||
1853 | 72 | connect(&watcher_, &QFileSystemWatcher::fileChanged, this, &LibertineItem::reload_config); | ||
1854 | 73 | } | ||
1855 | 74 | |||
1856 | 75 | QQmlComponent *LibertineItem:: | ||
1857 | 76 | pageComponent(QQmlEngine *engine, QObject *parent) | ||
1858 | 77 | { | ||
1859 | 78 | auto ctxt = engine->rootContext(); | ||
1860 | 79 | ctxt->setContextProperty("containerConfigList", containers_); | ||
1861 | 80 | ctxt->setContextProperty("containerAppsList", container_apps_); | ||
1862 | 81 | ctxt->setContextProperty("containerArchivesList", container_archives_); | ||
1863 | 82 | ctxt->setContextProperty("packageOperationDetails", package_operation_details_); | ||
1864 | 83 | |||
1865 | 84 | auto component = new QQmlComponent(engine, | ||
1866 | 85 | QUrl(LIBERTINE_PLUGIN_QML_DIR "/MainSettingsPage.qml"), | ||
1867 | 86 | parent); | ||
1868 | 87 | return component; | ||
1869 | 88 | } | ||
1870 | 89 | |||
1871 | 90 | |||
1872 | 91 | void LibertineItem:: | ||
1873 | 92 | reload_config(QString const&) | ||
1874 | 93 | { | ||
1875 | 94 | containers_->reloadConfigs(); | ||
1876 | 95 | } | ||
1877 | 96 | |||
1878 | 97 | |||
1879 | 98 | ItemBase *LibertinePlugin:: | ||
1880 | 99 | createItem(const QVariantMap &staticData, | ||
1881 | 100 | QObject *parent) | ||
1882 | 101 | { | ||
1883 | 102 | return new LibertineItem(staticData, parent); | ||
1884 | 103 | } | ||
1885 | 104 | |||
1886 | 105 | #include "plugin.moc" | ||
1887 | 0 | 106 | ||
1888 | === added file 'system-settings-plugin/plugin.h' | |||
1889 | --- system-settings-plugin/plugin.h 1970-01-01 00:00:00 +0000 | |||
1890 | +++ system-settings-plugin/plugin.h 2016-10-11 17:13:48 +0000 | |||
1891 | @@ -0,0 +1,34 @@ | |||
1892 | 1 | /* | ||
1893 | 2 | * Copyright (C) 2016 Canonical Ltd. | ||
1894 | 3 | * | ||
1895 | 4 | * This program is free software: you can redistribute it and/or modify it | ||
1896 | 5 | * under the terms of the GNU General Public License version 3, as published | ||
1897 | 6 | * by the Free Software Foundation. | ||
1898 | 7 | * | ||
1899 | 8 | * This program is distributed in the hope that it will be useful, but | ||
1900 | 9 | * WITHOUT ANY WARRANTY; without even the implied warranties of | ||
1901 | 10 | * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR | ||
1902 | 11 | * PURPOSE. See the GNU General Public License for more details. | ||
1903 | 12 | * | ||
1904 | 13 | * You should have received a copy of the GNU General Public License along | ||
1905 | 14 | * with this program. If not, see <http://www.gnu.org/licenses/>. | ||
1906 | 15 | */ | ||
1907 | 16 | #pragma once | ||
1908 | 17 | |||
1909 | 18 | #include <QObject> | ||
1910 | 19 | #include <SystemSettings/PluginInterface> | ||
1911 | 20 | |||
1912 | 21 | class LibertinePlugin: | ||
1913 | 22 | public QObject, | ||
1914 | 23 | public SystemSettings::PluginInterface2 | ||
1915 | 24 | { | ||
1916 | 25 | Q_OBJECT | ||
1917 | 26 | Q_PLUGIN_METADATA(IID "com.ubuntu.SystemSettings.PluginInterface/2.0") | ||
1918 | 27 | Q_INTERFACES(SystemSettings::PluginInterface2) | ||
1919 | 28 | |||
1920 | 29 | public: | ||
1921 | 30 | explicit LibertinePlugin() = default; | ||
1922 | 31 | |||
1923 | 32 | SystemSettings::ItemBase *createItem(const QVariantMap &staticData, | ||
1924 | 33 | QObject *parent = 0); | ||
1925 | 34 | }; | ||
1926 | 0 | 35 | ||
1927 | === modified file 'tests/unit/ContainerConfigListTests.cpp' | |||
1928 | --- tests/unit/ContainerConfigListTests.cpp 2015-09-15 15:03:38 +0000 | |||
1929 | +++ tests/unit/ContainerConfigListTests.cpp 2016-10-11 17:13:48 +0000 | |||
1930 | @@ -19,7 +19,7 @@ | |||
1931 | 19 | */ | 19 | */ |
1932 | 20 | #include <gtest/gtest.h> | 20 | #include <gtest/gtest.h> |
1933 | 21 | 21 | ||
1935 | 22 | #include "libertine/ContainerConfigList.h" | 22 | #include "common/ContainerConfigList.h" |
1936 | 23 | #include <QtCore/QByteArray> | 23 | #include <QtCore/QByteArray> |
1937 | 24 | #include <QtCore/QJsonDocument> | 24 | #include <QtCore/QJsonDocument> |
1938 | 25 | #include <QtCore/QJsonParseError> | 25 | #include <QtCore/QJsonParseError> |
1939 | 26 | 26 | ||
1940 | === modified file 'tests/unit/ContainerConfigTests.cpp' | |||
1941 | --- tests/unit/ContainerConfigTests.cpp 2016-01-21 21:42:28 +0000 | |||
1942 | +++ tests/unit/ContainerConfigTests.cpp 2016-10-11 17:13:48 +0000 | |||
1943 | @@ -19,7 +19,7 @@ | |||
1944 | 19 | */ | 19 | */ |
1945 | 20 | #include <gtest/gtest.h> | 20 | #include <gtest/gtest.h> |
1946 | 21 | 21 | ||
1948 | 22 | #include "libertine/ContainerConfig.h" | 22 | #include "common/ContainerConfig.h" |
1949 | 23 | #include <QtCore/QByteArray> | 23 | #include <QtCore/QByteArray> |
1950 | 24 | #include <QtCore/QJsonDocument> | 24 | #include <QtCore/QJsonDocument> |
1951 | 25 | #include <QtCore/QJsonParseError> | 25 | #include <QtCore/QJsonParseError> |
FAILED: Continuous integration, rev:316 /jenkins. canonical. com/libertine/ job/lp- libertine- ci/131/ /jenkins. canonical. com/libertine/ job/build/ 358/console /jenkins. canonical. com/libertine/ job/lp- generic- update- mp/272/ console /jenkins. canonical. com/libertine/ job/build- 0-fetch/ 360 /jenkins. canonical. com/libertine/ job/build- 1-sourcepkg/ release= vivid+overlay/ 343 /jenkins. canonical. com/libertine/ job/build- 1-sourcepkg/ release= xenial+ overlay/ 343 /jenkins. canonical. com/libertine/ job/build- 1-sourcepkg/ release= yakkety/ 343 /jenkins. canonical. com/libertine/ job/build- 2-binpkg/ arch=amd64, release= vivid+overlay/ 342/console /jenkins. canonical. com/libertine/ job/build- 2-binpkg/ arch=amd64, release= xenial+ overlay/ 342/console /jenkins. canonical. com/libertine/ job/build- 2-binpkg/ arch=amd64, release= yakkety/ 342/console /jenkins. canonical. com/libertine/ job/build- 2-binpkg/ arch=i386, release= vivid+overlay/ 342/console /jenkins. canonical. com/libertine/ job/build- 2-binpkg/ arch=i386, release= xenial+ overlay/ 342/console /jenkins. canonical. com/libertine/ job/build- 2-binpkg/ arch=i386, release= yakkety/ 342/console
https:/
Executed test runs:
FAILURE: https:/
None: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/libertine/ job/lp- libertine- ci/131/ rebuild
https:/