From 31e4ddecb2e704ab81303568102f786ea727d0cf Mon Sep 17 00:00:00 2001
From: zheng_wenlong <wenlong_zheng@nexty-ele.com>
Date: Wed, 7 Nov 2018 11:09:54 +0900
Subject: add warehouse source

---
 app/pages/ListPage.qml | 186 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 186 insertions(+)
 create mode 100644 app/pages/ListPage.qml

(limited to 'app/pages/ListPage.qml')

diff --git a/app/pages/ListPage.qml b/app/pages/ListPage.qml
new file mode 100644
index 0000000..f4b78da
--- /dev/null
+++ b/app/pages/ListPage.qml
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2018 The Qt Company Ltd.
+ *
+ * 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 appSize: 0
+    property int pageSize: 0
+    property int currentPageIndex: 0
+
+    property int nPullHeight: 100
+    
+    BusyIndicator {
+        id: prevBusyIndicator
+        anchors.horizontalCenter: parent.horizontalCenter
+        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: 100
+                    Layout.preferredHeight: 100
+					
+					MouseArea{
+						anchors.fill: parent	
+						z: 2
+					onClicked: {
+						    stack.push("qrc:/pages/DetailPage.qml", {stack: stack, model: model}, StackView.Immediate)
+						}
+					}
+                    Image {
+                        anchors.fill: parent
+                        source: model.icon
+                    }
+                }
+                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 {
+						x: x - 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
+						//Layout.rightMargin: 5
+                    }
+                }
+				
+            }
+            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
+            }
+
+            
+        }
+
+        states: [
+            State {
+                name: "prevPageState"; when: listView.contentY < -nPullHeight
+                StateChangeScript {
+                    name: "prevPageScript"
+                    script: getPrevPage()
+                }
+            }
+        ]
+    }
+
+    function getPrevPage() {
+        listView.y = nPullHeight;
+
+        currentPageIndex = currentPageIndex > 0 ? currentPageIndex-1 : 0;
+        prevBusyIndicator.running = true
+        prevPageTimer.start();
+    }
+
+    Timer {
+        id: prevPageTimer
+        interval: 1000
+        repeat: false
+        running: false
+        onTriggered: {
+            listView.model.getPrevPage(currentPageIndex)
+            prevPageAnimation.start();
+        }
+    }
+
+    NumberAnimation {
+        id: prevPageAnimation
+        target: listView
+        property: "y"
+        duration: 100
+        from: nPullHeight
+        to: 0
+        onStopped: {
+            prevBusyIndicator.running = false
+            listView.y = 0;
+        }
+    }
+
+    Connections {
+        target: listView.model
+        onRequestCompleted: {
+            appSize = appsize
+            pageSize = pagesize
+            console.log("request completed!", appSize, pageSize)
+        }
+    }
+}
-- 
cgit