psa: Full width articles
[feedingit] / psa_harmattan / feedingit / deb_dist / feedingit-0.1.0 / debian / feedingit / usr / share / feedingit / qml / ArticleViewer.qml
index ac31e0b..f4a18a9 100644 (file)
@@ -1,4 +1,5 @@
 import Qt 4.7
+import com.nokia.meego 1.0
 
 Item {
     id: articleViewer
@@ -42,23 +43,22 @@ Item {
         }
     }
 
-    function viewArticle(articleid) {
-        var index = 0;
-        for (var i=0; i<articleList.count; ++i) {
-            if (articles.get(0).articleid==articleid) {
-                index = i;
-            }
-        }
-        articleView.positionViewAtIndex(index, ListView.Contain); articleView.visible = true;
+    function getCurrentArticleId() {
+        var object = articleView.model.get(articleView.currentIndex)
+        return object.articleid
     }
 
     ListView {
         id: articleList; /*model: visualModel.parts.list;*/ z: 6
         model: articles
         delegate: listing
-        width: parent.width; height: parent.height; /*x: 0;*/
+        width: parent.width;
+        height: updateBarArticles.visible? parent.height-updateBarArticles.height : parent.height;
+        /*x: 0;*/
         cacheBuffer: 100;
         flickDeceleration: 1500
+        visible: articles.status==XmlListModel.Ready
+        clip: true
     }
 
     ListView {
@@ -66,28 +66,55 @@ Item {
         model: articles;
         delegate: viewer
         orientation: ListView.Horizontal
-        width: parent.width; height: parent.height; visible: false; z:8
-        //onCurrentIndexChanged: photosGridView.positionViewAtIndex(currentIndex, GridView.Contain)
+        width: parent.width;
+        height: updateBarArticles.visible? parent.height-updateBarArticles.height : parent.height;
+        visible: false; z:8
+        onCurrentIndexChanged: articlesView.positionViewAtIndex(currentIndex, ListView.Contain)
         highlightRangeMode: ListView.StrictlyEnforceRange; snapMode: ListView.SnapOneItem
         //cacheBuffer: 5;
         onMovementStarted: articleViewer.vertPanningEnabled=false;
         onMovementEnded: articleViewer.vertPanningEnabled=true;
         highlightMoveDuration: 300;
+        clip: true
+    }
+
+    ProgressBar {
+        id: updateBarArticles
+        minimumValue: 0
+        maximumValue: 100
+        value: window.updateProgressValue
+        visible: window.isUpdateInProgress
+        width: parent.width
+        anchors.bottom: parent.bottom
     }
 
     Rectangle {
         id: noArticle
         //width: parent.width; height: parent.height;
-        //color: "#000000"
-        anchors.centerIn: parent;
+        color: "black"
+        opacity: 0.8
+
+        //anchors.centerIn: parent;
+        anchors.fill: parent
         visible: false;
         z:8;
-        Text { id: noText; color: "#ffffff"; anchors.centerIn: parent; text: qsTr("No articles available"); }
-        Image { id: loadingImage; anchors.centerIn: parent; source: "common/images/loading.png";
-            height: 96; width: 96;
-            NumberAnimation on rotation {
-                from: 0; to: 360; running: (loadingImage.visible == true); loops: Animation.Infinite; duration: 900
-            }
+        Text {
+            id: noText; color: "#ffffff"; anchors.centerIn: parent; text: qsTr("No articles available");
+            font.pixelSize: settings.mainTextSize
+        }
+
+        BusyIndicator {
+                     id: loadingIndicator
+                     anchors.centerIn: parent;
+                     running: visible
+                     visible: false
+                     platformStyle: BusyIndicatorStyle { size: "large" }
+        }
+
+        MouseArea {
+            // Disable clicks when this item is visible
+            anchors.fill: parent
+            enabled: parent.visible
         }
 
         states: [ State {
@@ -96,20 +123,28 @@ Item {
             PropertyChanges { target: loadingImage; visible: false; }
             PropertyChanges { target: noText; visible: true; }
             }, State {
-            name: "loading"; when: articles.count==0 && articles.status != XmlListModel.Ready
+            name: "loading"; when: articles.status != XmlListModel.Ready
             PropertyChanges { target: noArticle; visible: true; }
             PropertyChanges { target: noText; visible: false; }
-            PropertyChanges { target: loadingImage; visible: true; }
+            PropertyChanges { target: loadingIndicator; visible: true; }
             }
         ]
     }
 
+    Rectangle {
+        id: reloading
+        visible: articles.status != XmlListModel.Ready
+
+
+    }
+
     Component {
             id: listing;
 
             Item {
                 width: articleViewer.width; height: backRect.height + 3
                 id: listItem
+
                 Rectangle {
                     id: backRect; color: settings.backColour; opacity: index % 2 ? 0.2 : 0.4;
                     height: articleText.height + 22; width: listItem.width;
@@ -122,14 +157,15 @@ Item {
                     width: listItem.width - 6;
 
                     anchors.margins: 5
-                    verticalAlignment: Text.AlignVCenter; text: title;
+                    verticalAlignment: Text.AlignVCenter;
+                    text: title;
                     color: (unread=="True") ? settings.mainTextColour : settings.secondaryTextColour;
 
                      wrapMode: Text.WordWrap; font.bold: false;
-                    font.pointSize: 18
+                    font.pointSize: settings.articleListingTextSize
                 }
                 MouseArea { anchors.fill: listItem;
-                    onClicked: { articleView.positionViewAtIndex(index, ListView.Contain); articleView.visible = true; }
+                    onClicked: { articleView.currentIndex = index; articleView.visible = true; }
                 }
             }
 
@@ -139,11 +175,13 @@ Item {
         id: viewer
         Item {
             id: flipItem;
-            width: articleViewer.width; height: articleViewer.height;
+            width: articleDisplay.width;
+            height: articleView.height;
 
-            property string url: (articleView.visible && Math.abs(articleView.currentIndex-index)<2) ? path: "";
+            //property string url: (articleView.visible && Math.abs(articleView.currentIndex-index)<2) ? path: "";
             property string html: controller.getArticle(articleViewer.feedid, articleid)
             ArticleDisplay {
+                id: articleDisplay
                 zoomEnabled: articleViewer.zoomEnabled;
                 property bool vertPanningEnabled: articleViewer.vertPanningEnabled;
 
@@ -153,15 +191,10 @@ Item {
                     StateChangeScript {
                         name: "myScript"
                         script: {
-                            flipItem.url=path;
+                            //flipItem.url=path;
                             controller.setEntryRead(articleViewer.feedid, articleid)
                         }
                     }
-                    }, State {
-                        name: 'articleIsClose'; when: articleView.visible && Math.abs(articleView.currentIndex-index)<2;
-                        StateChangeScript {
-                            script: { flipItem.url=path; }
-                        }
                     }
                 ]
             }
@@ -181,5 +214,4 @@ Item {
         XmlRole { name: "unread"; query: "unread/string()"; isKey: true}
     }
 
-
 }