Merge lp:~larryprice/libertine/adaptive-page-layout into lp:libertine

Proposed by Larry Price
Status: Merged
Approved by: Christopher Townsend
Approved revision: 398
Merged at revision: 402
Proposed branch: lp:~larryprice/libertine/adaptive-page-layout
Merge into: lp:libertine
Diff against target: 587 lines (+131/-147)
10 files modified
qml/common/ContainerEditView.qml (+25/-15)
qml/common/ContainersList.qml (+45/-5)
qml/common/ExtraArchivesView.qml (+3/-2)
qml/common/ManageContainer.qml (+1/-1)
qml/common/SearchPackagesDialog.qml (+5/-7)
qml/common/SearchResultsView.qml (+11/-14)
qml/gui/ContainersView.qml (+1/-0)
qml/gui/WelcomeView.qml (+0/-80)
qml/gui/libertine.qml (+35/-19)
qml/plugin/MainSettingsPage.qml (+5/-4)
To merge this branch: bzr merge lp:~larryprice/libertine/adaptive-page-layout
Reviewer Review Type Date Requested Status
Christopher Townsend (community) Approve
Libertine CI Bot continuous-integration Approve
Review via email: mp+316553@code.launchpad.net

Commit message

Use AdaptivePageLayout instead of PageStack for app navigation.

Description of the change

Use AdaptivePageLayout instead of PageStack for app navigation.

To post a comment you must log in.
Revision history for this message
Libertine CI Bot (libertine-ci-bot) wrote :

PASSED: Continuous integration, rev:394
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/367/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/libertine/job/build/706
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=default/579
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=zesty,testname=default/579
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=xenial+overlay,testname=default/579
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=zesty,testname=default/579
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-0-fetch/716
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/697
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/697/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/697
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/697/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/697
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/697/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/697
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/697/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/367/rebuild

review: Approve (continuous-integration)
Revision history for this message
Christopher Townsend (townsend) wrote :

I'm not sure if this is a deficiency in AdaptivePageLayout or not, but left and right actions on list entries do not look correct. I am running this on Xenial+Overlay, but will try it on Zesty as well.

For example, in "My Containers", either slide an entry to the left or right, and you'll see what I mean. I see this on both the standalone UI and in the System Settings plugin.

If this is indeed a deficiency in the AdaptivePageLayout, we should probably think about getting rid of the left and right actions and figure out another way to present those actions.

review: Needs Fixing
Revision history for this message
Larry Price (larryprice) wrote :

I think that's related to this bug: https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1584232

I may try the listed workaround (clip: true) and see if that fixes it for us.

395. By Larry Price

add clip: true to fix AdaptivePageLayout

396. By Larry Price

merge

Revision history for this message
Libertine CI Bot (libertine-ci-bot) wrote :

PASSED: Continuous integration, rev:396
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/379/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/libertine/job/build/726
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=default/596
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=zesty,testname=default/596
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=xenial+overlay,testname=default/596
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=zesty,testname=default/596
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-0-fetch/736
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/717
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/717/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/717
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/717/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/717
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/717/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/717
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/717/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/379/rebuild

review: Approve (continuous-integration)
397. By Larry Price

merge

398. By Larry Price

remove switch container button

Revision history for this message
Libertine CI Bot (libertine-ci-bot) wrote :

PASSED: Continuous integration, rev:398
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/382/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/libertine/job/build/730
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=xenial+overlay,testname=default/600
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=amd64,release=zesty,testname=default/600
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=xenial+overlay,testname=default/600
    SUCCESS: https://jenkins.canonical.com/libertine/job/test-0-autopkgtest/label=i386,release=zesty,testname=default/600
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-0-fetch/740
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/721
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=xenial+overlay/721/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/721
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=amd64,release=zesty/721/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/721
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=xenial+overlay/721/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/721
        deb: https://jenkins.canonical.com/libertine/job/build-2-binpkg/arch=i386,release=zesty/721/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/libertine/job/lp-libertine-ci/382/rebuild

review: Approve (continuous-integration)
Revision history for this message
Christopher Townsend (townsend) wrote :

Ok, very cool. Thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'qml/common/ContainerEditView.qml'
2--- qml/common/ContainerEditView.qml 2016-09-27 14:20:23 +0000
3+++ qml/common/ContainerEditView.qml 2017-02-14 20:04:13 +0000
4@@ -3,7 +3,7 @@
5 * @brief Libertine container apps view
6 */
7 /*
8- * Copyright 2015-2016 Canonical Ltd
9+ * Copyright 2015-2017 Canonical Ltd
10 *
11 * Libertine is free software: you can redistribute it and/or modify it under
12 * the terms of the GNU General Public License, version 3, as published by the
13@@ -24,6 +24,7 @@
14
15 Page {
16 id: homeView
17+ clip: true
18 header: PageHeader {
19 id: pageHeader
20 title: i18n.tr("%1 - All Apps").arg(containerConfigList.getContainerName(currentContainer))
21@@ -77,7 +78,7 @@
22 else {
23 appExistsWarning.text = i18n.tr("The %1 package is already installed. Please try a different package name.").arg(enterPackageInput.text)
24 appExistsWarning.visible = true
25- enterPackageInput.text = ""
26+ enterPackageInput.text = ""
27 }
28 }
29 }
30@@ -105,21 +106,14 @@
31 text: i18n.tr("Manage Container")
32 onTriggered: {
33 PopupUtils.close(settingsDialog)
34- pageStack.push(Qt.resolvedUrl("ManageContainer.qml"), {currentContainer: currentContainer})
35+ pageStack.addPageToNextColumn(homeView, Qt.resolvedUrl("ManageContainer.qml"), {currentContainer: currentContainer})
36 }
37 }
38 Button {
39 text: i18n.tr("Container Information")
40 onTriggered: {
41 PopupUtils.close(settingsDialog)
42- pageStack.push(Qt.resolvedUrl("ContainerInfoView.qml"), {currentContainer: currentContainer})
43- }
44- }
45- Button {
46- text: i18n.tr("Switch Container")
47- onTriggered: {
48- PopupUtils.close(settingsDialog)
49- pageStack.pop()
50+ pageStack.addPageToNextColumn(homeView, Qt.resolvedUrl("ContainerInfoView.qml"), {currentContainer: currentContainer})
51 }
52 }
53 }
54@@ -145,7 +139,7 @@
55 onClicked: {
56 PopupUtils.close(addAppsDialog)
57 var packages = containerConfigList.getDebianPackageFiles()
58- pageStack.push(Qt.resolvedUrl("DebianPackagePicker.qml"), {packageList: packages})
59+ pageStack.addPageToNextColumn(homeView, Qt.resolvedUrl("DebianPackagePicker.qml"), {packageList: packages})
60 }
61 }
62 Button {
63@@ -153,12 +147,28 @@
64 width: parent.width
65 onClicked: {
66 PopupUtils.close(addAppsDialog)
67- PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), {currentContainer: currentContainer})
68+ openSearchDialog(currentContainer)
69 }
70 }
71 }
72 }
73
74+ property var searchResultsView: null
75+ function openSearchDialog(container) {
76+ var dialog = PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), null, {currentContainer: container})
77+ dialog.initializeSearch.connect(function(query, container) {
78+ if (searchResultsView) {
79+ pageStack.removePages(searchResultsView)
80+ searchResultsView.destroy()
81+ }
82+
83+ searchResultsView = Qt.createComponent("SearchResultsView.qml").createObject(homeView, {currentContainer: container, query: query})
84+ searchResultsView.newSearch.connect(openSearchDialog)
85+
86+ pageStack.addPageToNextColumn(homeView, searchResultsView)
87+ })
88+ }
89+
90 Component.onCompleted: {
91 containerConfigList.configChanged.connect(reloadAppList)
92 }
93@@ -180,10 +190,10 @@
94 fill: parent
95 }
96 model: containerAppsList
97- visible: !containerAppsList.empty() ? true : false
98+ visible: !containerAppsList.empty()
99
100 function info(packageName) {
101- pageStack.push(Qt.resolvedUrl("PackageInfoView.qml"), {"currentPackage": packageName, "currentContainer": currentContainer})
102+ pageStack.addPageToNextColumn(homeView, Qt.resolvedUrl("PackageInfoView.qml"), {"currentPackage": packageName, "currentContainer": currentContainer})
103 }
104
105 delegate: ListItem {
106
107=== modified file 'qml/common/ContainersList.qml'
108--- qml/common/ContainersList.qml 2016-10-11 17:10:49 +0000
109+++ qml/common/ContainersList.qml 2017-02-14 20:04:13 +0000
110@@ -3,7 +3,7 @@
111 * @brief Libertine containers view
112 */
113 /*
114- * Copyright 2016 Canonical Ltd
115+ * Copyright 2016-2017 Canonical Ltd
116 *
117 * Libertine is free software: you can redistribute it and/or modify it under
118 * the terms of the GNU General Public License, version 3, as published by the
119@@ -18,6 +18,7 @@
120 */
121 import Libertine 1.0
122 import QtQuick 2.4
123+import QtQuick.Layouts 1.0
124 import Ubuntu.Components 1.3
125 import Ubuntu.Components.Popups 1.3
126
127@@ -35,6 +36,7 @@
128 fill: parent
129 }
130 model: containerConfigList
131+ visible: !containerConfigList.empty()
132
133 function edit(id, status) {
134 if (status === "removing") {
135@@ -43,7 +45,7 @@
136 }
137 currentContainer = id
138 containerAppsList.setContainerApps(currentContainer)
139- pageStack.push(Qt.resolvedUrl("../common/ContainerEditView.qml"), {currentContainer: currentContainer})
140+ pageStack.addPageToNextColumn(containersView, Qt.resolvedUrl("../common/ContainerEditView.qml"), {currentContainer: currentContainer})
141 }
142
143 delegate: ListItem {
144@@ -92,7 +94,7 @@
145 description: i18n.tr("Container Info")
146 onTriggered: {
147 currentContainer = containerId
148- pageStack.push(Qt.resolvedUrl("../common/ContainerInfoView.qml"), {currentContainer: containerId})
149+ pageStack.addPageToNextColumn(containersView, Qt.resolvedUrl("../common/ContainerInfoView.qml"), {currentContainer: containerId})
150 }
151 },
152 Action {
153@@ -110,6 +112,44 @@
154 }
155 }
156
157+ ColumnLayout {
158+ visible: !containersList.visible
159+ spacing: units.gu(2)
160+ anchors {
161+ fill: parent
162+ margins: units.gu(4)
163+ }
164+
165+ Label {
166+ Layout.fillWidth: true
167+ wrapMode: Text.Wrap
168+ horizontalAlignment: Text.AlignHCenter
169+
170+ text: i18n.tr("Welcome to the Ubuntu Classic Application Manager.")
171+ }
172+
173+ Label {
174+ Layout.fillWidth: true
175+ wrapMode: Text.Wrap
176+ horizontalAlignment: Text.AlignHCenter
177+
178+ text: i18n.tr("You do not have Classic Application Support configured at this time. Downloading and setting up the required environment may take some time and network bandwidth.")
179+ }
180+
181+ Button {
182+ Layout.alignment: Qt.AlignCenter
183+ Layout.maximumWidth: units.gu(12)
184+
185+ text: i18n.tr("Get started")
186+ color: UbuntuColors.green
187+
188+ onClicked: {
189+ var dialog = PopupUtils.open(Qt.resolvedUrl("../common/ContainerOptionsDialog.qml"))
190+ dialog.onCreateInitialized.connect(updateContainerList)
191+ }
192+ }
193+ }
194+
195 Component.onCompleted: {
196 containerConfigList.configChanged.connect(updateContainerList)
197 }
198@@ -120,9 +160,9 @@
199
200 function updateContainerList() {
201 containerConfigList.reloadContainerList()
202+ containersList.visible = !containerConfigList.empty() // forces visibility refresh
203
204- if (currentContainer && !containerConfigList.getContainerStatus(currentContainer) && pageStack.currentPage !== containersView) {
205- pageStack.pop()
206+ if (currentContainer && !containerConfigList.getContainerStatus(currentContainer)) {
207 currentContainer = ""
208 packageOperationDetails.error(i18n.tr("Container Unavailable"),
209 i18n.tr("This container has been destroyed and is no longer valid. You have been returned to the containers overview."))
210
211=== modified file 'qml/common/ExtraArchivesView.qml'
212--- qml/common/ExtraArchivesView.qml 2016-10-03 20:30:29 +0000
213+++ qml/common/ExtraArchivesView.qml 2017-02-14 20:04:13 +0000
214@@ -3,7 +3,7 @@
215 * @brief Libertine container extra archive view
216 */
217 /*
218- * Copyright 2016 Canonical Ltd
219+ * Copyright 2016-2017 Canonical Ltd
220 *
221 * Libertine is free software: you can redistribute it and/or modify it under
222 * the terms of the GNU General Public License, version 3, as published by the
223@@ -22,6 +22,7 @@
224
225 Page {
226 id: extraArchiveView
227+ clip: true
228 header: PageHeader {
229 id: pageHeader
230 title: i18n.tr("Additional Archives")
231@@ -30,7 +31,7 @@
232 iconName: "add"
233 text: i18n.tr("add")
234 description: i18n.tr("Add a new archive")
235- onTriggered: pageStack.push(Qt.resolvedUrl("AddExtraArchiveView.qml"), {currentContainer: currentContainer})
236+ onTriggered: pageStack.addPageToNextColumn(extraArchiveView, Qt.resolvedUrl("AddExtraArchiveView.qml"), {currentContainer: currentContainer})
237 }
238 ]
239 }
240
241=== modified file 'qml/common/ManageContainer.qml'
242--- qml/common/ManageContainer.qml 2016-09-27 14:20:23 +0000
243+++ qml/common/ManageContainer.qml 2017-02-14 20:04:13 +0000
244@@ -74,7 +74,7 @@
245 progression: true
246 onClicked: {
247 containerArchivesList.setContainerArchives(currentContainer)
248- pageStack.push(Qt.resolvedUrl("ExtraArchivesView.qml"), {currentContainer: currentContainer})
249+ pageStack.addPageToNextColumn(manageView, Qt.resolvedUrl("ExtraArchivesView.qml"), {currentContainer: currentContainer})
250 }
251 }
252
253
254=== modified file 'qml/common/SearchPackagesDialog.qml'
255--- qml/common/SearchPackagesDialog.qml 2016-09-27 14:20:23 +0000
256+++ qml/common/SearchPackagesDialog.qml 2017-02-14 20:04:13 +0000
257@@ -3,7 +3,7 @@
258 * @brief Libertine search packages dialog
259 */
260 /*
261- * Copyright 2016 Canonical Ltd
262+ * Copyright 2016-2017 Canonical Ltd
263 *
264 * Libertine is free software: you can redistribute it and/or modify it under
265 * the terms of the GNU General Public License, version 3, as published by the
266@@ -25,8 +25,11 @@
267 id: searchPackageDialog
268 title: i18n.tr("Search for packages")
269 text: i18n.tr("Search archives for packages")
270+ property bool calledFromSearch: null
271 property string currentContainer: null
272
273+ signal initializeSearch(string query, string container)
274+
275 TextField {
276 id: searchPackageInput
277 placeholderText: i18n.tr("search")
278@@ -43,12 +46,7 @@
279 onClicked: {
280 if (searchPackageInput.text != "") {
281 PopupUtils.close(searchPackageDialog)
282- if (pageStack.currentPage.objectName === "searchResultsView") {
283- pageStack.currentPage.searchForPackages(searchPackageInput.text)
284- }
285- else {
286- pageStack.push(Qt.resolvedUrl("SearchResultsView.qml"), {search_string : searchPackageInput.text, currentContainer: currentContainer})
287- }
288+ initializeSearch(searchPackageInput.text, currentContainer)
289 }
290 }
291 }
292
293=== modified file 'qml/common/SearchResultsView.qml'
294--- qml/common/SearchResultsView.qml 2016-09-27 14:20:23 +0000
295+++ qml/common/SearchResultsView.qml 2017-02-14 20:04:13 +0000
296@@ -3,7 +3,7 @@
297 * @brief Libertine search packages results view
298 */
299 /*
300- * Copyright 2016 Canonical Ltd
301+ * Copyright 2016-2017 Canonical Ltd
302 *
303 * Libertine is free software: you can redistribute it and/or modify it under
304 * the terms of the GNU General Public License, version 3, as published by the
305@@ -35,17 +35,17 @@
306 text: i18n.tr("Search")
307 description: i18n.tr("Search for packages")
308
309- onTriggered: doSearch()
310+ onTriggered: newSearch(currentContainer)
311 }
312 ]
313 }
314 objectName: "searchResultsView"
315- property var search_string: null
316+ property var query: null
317 property var search_comp: null
318 property var search_obj: null
319 property var currentContainer: null
320
321- signal doSearch
322+ signal newSearch(string container)
323
324 Component {
325 id: noResultsPopup
326@@ -60,7 +60,7 @@
327 color: UbuntuColors.green
328 onClicked: {
329 PopupUtils.close(noResultsDialog)
330- PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), {currentContainer: currentContainer})
331+ newSearch(currentContainer)
332 }
333 }
334
335@@ -109,10 +109,10 @@
336 }
337
338 Component.onCompleted: {
339- searchForPackages(search_string)
340+ searchForPackages(query)
341 }
342
343- function searchForPackages(search_string) {
344+ function searchForPackages(query) {
345 searchActivity.visible = true
346
347 if (search_obj) {
348@@ -124,25 +124,22 @@
349 worker.finishedSearch.connect(finishedSearch)
350 worker.error.connect(packageOperationDetails.error)
351
352- worker.searchPackageCache(currentContainer, search_string)
353+ worker.searchPackageCache(currentContainer, query)
354 }
355
356 function finishedSearch(packageList) {
357 searchActivity.visible = false
358 if (packageList.length > 0) {
359- for (var i = 0; i < packageList.length; ++i)
360- {
361+ for (var i = 0; i < packageList.length; ++i) {
362 packageListModel.append({"package_desc": packageList[i], "package_name": packageList[i].split(' ')[0]})
363 }
364 if (!search_comp) {
365- search_comp = Qt.createComponent("SearchResults.qml", {currentContainer: currentContainer})
366+ search_comp = Qt.createComponent("SearchResults.qml")
367 }
368- search_obj = search_comp.createObject(parent, {"model": packageListModel})
369+ search_obj = search_comp.createObject(parent, {"model": packageListModel, currentContainer: currentContainer})
370 }
371 else {
372 PopupUtils.open(noResultsPopup)
373 }
374 }
375-
376- onDoSearch: PopupUtils.open(Qt.resolvedUrl("SearchPackagesDialog.qml"), {currentContainer: currentContainer})
377 }
378
379=== modified file 'qml/gui/ContainersView.qml'
380--- qml/gui/ContainersView.qml 2016-10-11 17:10:49 +0000
381+++ qml/gui/ContainersView.qml 2017-02-14 20:04:13 +0000
382@@ -29,6 +29,7 @@
383 */
384 Page {
385 id: containersView
386+ clip: true
387 header: PageHeader {
388 id: pageHeader
389 title: i18n.tr("My Containers")
390
391=== removed file 'qml/gui/WelcomeView.qml'
392--- qml/gui/WelcomeView.qml 2016-10-11 17:10:49 +0000
393+++ qml/gui/WelcomeView.qml 1970-01-01 00:00:00 +0000
394@@ -1,80 +0,0 @@
395-/**
396- * @file WelcomeView.qml
397- * @brief Libertine default welcome view
398- */
399-/*
400- * Copyright 2015-2016 Canonical Ltd
401- *
402- * Libertine is free software: you can redistribute it and/or modify it under
403- * the terms of the GNU General Public License, version 3, as published by the
404- * Free Software Foundation.
405- *
406- * Libertine is distributed in the hope that it will be useful, but WITHOUT ANY
407- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
408- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
409- *
410- * You should have received a copy of the GNU General Public License
411- * along with this program. If not, see <http://www.gnu.org/licenses/>.
412- */
413-import QtQuick 2.4
414-import QtQuick.Layouts 1.0
415-import Ubuntu.Components 1.3
416-import Ubuntu.Components.Popups 1.3
417-
418-
419-Page {
420- id: welcomeView
421- header: PageHeader {
422- title: i18n.tr("Welcome")
423- leadingActionBar.actions: [
424- Action {
425- iconName: "back"
426- visible: false
427- }
428- ]
429- }
430-
431- ColumnLayout {
432- spacing: units.gu(2)
433- anchors {
434- fill: parent
435- margins: units.gu(4)
436- }
437-
438- Label {
439- id: welcomeMessage
440- Layout.fillWidth: true
441- wrapMode: Text.Wrap
442- horizontalAlignment: Text.AlignHCenter
443-
444- text: i18n.tr("Welcome to the Ubuntu Legacy Application Support Manager.")
445- }
446-
447- Label {
448- id: warningMessage
449- Layout.fillWidth: true
450- wrapMode: Text.Wrap
451- horizontalAlignment: Text.AlignHCenter
452-
453- text: i18n.tr("You do not have Legacy Application Support configured at this time. Downloading and setting up the required environment takes some time and network bandwidth.")
454- }
455-
456- Button {
457- id: installButton
458- Layout.alignment: Qt.AlignCenter
459- Layout.maximumWidth: units.gu(12)
460-
461- text: i18n.tr("Install")
462- color: UbuntuColors.green
463-
464- onClicked: {
465- var dialog = PopupUtils.open(Qt.resolvedUrl("../common/ContainerOptionsDialog.qml"))
466- dialog.onCreateInitialized.connect(createInitialized)
467- }
468- }
469- }
470-
471- function createInitialized() {
472- pageStack.push(Qt.resolvedUrl("ContainersView.qml"), {currentContainer: ""})
473- }
474-}
475
476=== modified file 'qml/gui/libertine.qml'
477--- qml/gui/libertine.qml 2016-11-01 14:30:34 +0000
478+++ qml/gui/libertine.qml 2017-02-14 20:04:13 +0000
479@@ -3,7 +3,7 @@
480 * @brief Libertine app main view.
481 */
482 /*
483- * Copyright 2015-2016 Canonical Ltd
484+ * Copyright 2015-2017 Canonical Ltd
485 *
486 * Libertine is free software: you can redistribute it and/or modify it under
487 * the terms of the GNU General Public License, version 3, as published by the
488@@ -31,31 +31,47 @@
489
490 signal error(string short_description, string details)
491
492- PageStack {
493- id: pageStack
494- }
495-
496 Component.onCompleted: {
497 packageOperationDetails.error.connect(error)
498-
499 Qt.createComponent("../common/ContainerManager.qml").createObject(mainView).fixIntegrity()
500-
501- var currentContainer = containerConfigList.defaultContainerId
502-
503- if (!containerConfigList.empty()) {
504- pageStack.push(Qt.resolvedUrl("ContainersView.qml"), {currentContainer: currentContainer})
505- if (currentContainer) {
506- containerAppsList.setContainerApps(currentContainer)
507- pageStack.push(Qt.resolvedUrl("../common/ContainerEditView.qml"), {currentContainer: currentContainer})
508- }
509- }
510- else {
511- pageStack.push(Qt.resolvedUrl("WelcomeView.qml"))
512- }
513 }
514
515 onError: {
516 PopupUtils.open(Qt.resolvedUrl("../common/GenericErrorDialog.qml"), null,
517 {"short_description": short_description, "details": details})
518 }
519+
520+ AdaptivePageLayout {
521+ anchors.fill: parent
522+ primaryPageSource: Qt.resolvedUrl("ContainersView.qml")
523+ layouts: [
524+ PageColumnsLayout {
525+ when: width > units.gu(120)
526+ PageColumn {
527+ minimumWidth: units.gu(30)
528+ maximumWidth: units.gu(60)
529+ preferredWidth: units.gu(40)
530+ }
531+ PageColumn {
532+ minimumWidth: units.gu(30)
533+ maximumWidth: units.gu(60)
534+ preferredWidth: units.gu(40)
535+ }
536+ PageColumn {
537+ fillWidth: true
538+ }
539+ },
540+ PageColumnsLayout {
541+ when: width > units.gu(80)
542+ PageColumn {
543+ minimumWidth: units.gu(30)
544+ maximumWidth: units.gu(60)
545+ preferredWidth: units.gu(40)
546+ }
547+ PageColumn {
548+ fillWidth: true
549+ }
550+ }
551+ ]
552+ }
553 }
554
555=== modified file 'qml/plugin/MainSettingsPage.qml'
556--- qml/plugin/MainSettingsPage.qml 2016-11-01 14:30:34 +0000
557+++ qml/plugin/MainSettingsPage.qml 2017-02-14 20:04:13 +0000
558@@ -1,5 +1,5 @@
559 /*
560- * Copyright (C) 2016 Canonical Ltd.
561+ * Copyright (C) 2016-2017 Canonical Ltd.
562 *
563 * This program is free software: you can redistribute it and/or modify it
564 * under the terms of the GNU General Public License version 3, as published
565@@ -22,7 +22,8 @@
566 import "../common"
567
568 ItemPage {
569- id: mainView
570+ id: containersView
571+ clip: true
572
573 header: PageHeader {
574 id: pageHeader
575@@ -45,10 +46,10 @@
576 ContainersList {
577 anchors {
578 topMargin: pageHeader.height
579- fill: mainView
580+ fill: containersView
581 }
582
583- currentContainer: mainView.currentContainer
584+ currentContainer: containersView.currentContainer
585 }
586
587 onError: {

Subscribers

People subscribed via source and target branches