summaryrefslogtreecommitdiffstats
path: root/app/pages/ListPage.qml
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-04-09 10:48:11 +0900
committerZheng Wenlong <wenlong_zheng@nexty-ele.com>2019-04-10 01:47:42 +0000
commit99812e94289a083e9d297af50f5b227e3ad58f52 (patch)
treed9d43dddf03880e6615fcf4cfdaa02cbee5eff54 /app/pages/ListPage.qml
Add demo3 warehouse source code for cluster mode. [Patch Set 2] Update LICENSE file. Change-Id: Ib129f18ae67f3913cbf899a2be5eed7beaa65976 BUG-AGL: SPEC-2261 Signed-off-by: zheng_wenlong <wenlong_zheng@nexty-ele.com>
Diffstat (limited to 'app/pages/ListPage.qml')
-rw-r--r--app/pages/ListPage.qml195
1 files changed, 195 insertions, 0 deletions
diff --git a/app/pages/ListPage.qml b/app/pages/ListPage.qml
new file mode 100644
index 0000000..d3295ff
--- /dev/null
+++ b/app/pages/ListPage.qml
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2018 The Qt Company Ltd.
+ * Copyright (c) 2018-2019 TOYOTA MOTOR CORPORATION
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import QtQuick 2.6
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.0
+
+Page {
+ id: root
+ property alias model: listView.model
+
+ property int currentPageIndex: 0
+
+ property int nPullHeight: 100
+
+ property int oldContentY: 0
+
+ BusyIndicator {
+ id: prevBusyIndicator
+ anchors.horizontalCenter: parent.horizontalCenter
+ implicitWidth: 60
+ implicitHeight: 60
+ running: false
+ }
+ BusyIndicator {
+ id: nextBusyIndicator
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ implicitWidth: 60
+ implicitHeight: 60
+ running: false
+ }
+
+ StackView {
+ id: stack
+ initialItem: listView
+ anchors.fill: parent
+ anchors.margins: root.width * 0.075
+ }
+
+ ListView {
+ id: listView
+ //anchors.fill: parent
+ //anchors.margins: root.width * 0.075
+ clip: true
+
+ delegate: MouseArea {
+ id: delegate
+ width: listView.width
+ height: width / 6
+
+ RowLayout {
+ anchors.fill: parent
+
+ Item {
+ Layout.preferredWidth: 80
+ Layout.preferredHeight: 80
+
+ MouseArea{
+ anchors.fill: parent
+ z: 2
+ onClicked: {
+ stack.push("qrc:/pages/DetailPage.qml", {stack: stack, model: model}, StackView.Immediate)
+ }
+ }
+
+ DImage {
+ id: imageicon
+ icon: model.icon
+ name: model.name
+ }
+ }
+
+ ColumnLayout {
+ Label {
+ Layout.fillWidth: true
+ text: model.name.toUpperCase()
+ color: '#00ADDC'
+ }
+ Label {
+ text: 'Version: ' + model.version
+ font.pixelSize: 16
+ font.italic: true
+ }
+ Label {
+ text: 'Description: ' + model.description
+ font.pixelSize: 16
+ wrapMode: Text.Wrap
+ elide: Text.ElideRight
+ Layout.preferredWidth: 400
+ Layout.preferredHeight: 40
+ }
+ }
+ ColumnLayout {
+ spacing: 5
+ Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
+
+ Button {
+ anchors.right: parent.right
+ anchors.rightMargin: 6
+ text: model.statetext
+ onClicked: {
+ if (model.statetext === 'Install' || model.statetext === 'Update') {
+ listView.model.install(model.index)
+ } else if (model.statetext === 'Launch') {
+ if (listView.model.launch(model.id) > 1) {
+ homescreenHandler.tapShortcut(model.name)
+ } else {
+ console.warn('app cannot be launched')
+ }
+ }
+ }
+ implicitWidth: 140
+ implicitHeight: 40
+ }
+ }
+ }
+
+ DownloadBar {
+ anchors.fill: parent
+ progress: model.progress
+ }
+ Image {
+ source: 'qrc:/images/DividingLine.svg'
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+ visible: model.index > 0
+ }
+ }
+
+ onMovementStarted: {
+ oldContentY = contentY
+ }
+
+ onFlickStarted: {
+ if (contentY < -nPullHeight && prevBusyIndicator.running == false) {
+ prevBusyIndicator.running = true
+ listView.model.getPrevPage(currentPageIndex)
+ } else if (nextBusyIndicator.running == false) {
+ if ((contentHeight > 0) && (contentY > (contentHeight - height + nPullHeight))) {
+ nextBusyIndicator.running = true
+ listView.model.getNextPage(currentPageIndex)
+ }
+ }
+ }
+ }
+
+ Connections {
+ target: listView.model
+ onRequestCompleted: {
+ if (isPrev) {
+ if (pageIndex > 0 && offsetSize == 0) {
+ listView.model.getPrevPage(pageIndex - 1)
+ return
+ }
+ currentPageIndex = pageIndex
+ prevBusyIndicator.running = false
+ } else {
+ nextBusyIndicator.running = false
+
+ if (listView.contentHeight > listView.height){
+ var itemHeight = listView.contentHeight / listView.count
+
+ if (offsetSize <= 0) {
+ listView.contentY = listView.contentHeight - listView.height
+ } else if (offsetSize < pageSize){
+ var viewCount = listView.height / itemHeight
+
+ if (offsetSize <= (viewCount / 2)) {
+ listView.contentY = oldContentY + (offsetSize * itemHeight)
+ } else {
+ listView.contentY = oldContentY + (listView.height / 2)
+ }
+ } else {
+ currentPageIndex = pageIndex
+ }
+ }
+ }
+ }
+ }
+}