X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=psa_harmattan%2Ffeedingit%2Fqml%2FArticles.qml;fp=psa_harmattan%2Ffeedingit%2Fqml%2FArticles.qml;h=1451c28b8b7cb75e19b48c622da56e6ccf47cdca;hb=215f828b2a47fe01e1c6f05a12e632a8f117ef12;hp=f3bffe320ea6c0b6ef767070c1a13ea86f62e516;hpb=3554380b7d321e3a75201ae65184a968ebd6084b;p=feedingit diff --git a/psa_harmattan/feedingit/qml/Articles.qml b/psa_harmattan/feedingit/qml/Articles.qml index f3bffe3..1451c28 100644 --- a/psa_harmattan/feedingit/qml/Articles.qml +++ b/psa_harmattan/feedingit/qml/Articles.qml @@ -1,79 +1,108 @@ import Qt 4.7 +import com.nokia.meego 1.0 Item { - //anchors.fill: parent; - width: parent.width; - property string feedid : "" - property alias count: articles.count - property alias url: articles.source + id: articlePage + property string mainArticleId: parent.mainArticleId; + property string feedid: parent.feedid + property bool zoomEnabled: false + property bool vertPanningEnabled: true + width: parent.width; height: parent.height; - x: parent.width; height: parent.height; - anchors.top: parent.top; anchors.bottom: parent.bottom + ListView { + id: articleView; + model: articlesModel; + delegate: viewer; + property int webviewFontSize: settings.webviewFontSize + orientation: ListView.Horizontal + width: parent.width; + height: updateBarArticles.visible? parent.height-updateBarArticles.height : parent.height; + //onCurrentIndexChanged: articleView.positionViewAtIndex(currentIndex, ListView.Contain) + highlightRangeMode: ListView.StrictlyEnforceRange; snapMode: ListView.SnapOneItem + cacheBuffer: width; + onMovementStarted: articlePage.vertPanningEnabled=false; + onMovementEnded: articlePage.vertPanningEnabled=true; + highlightMoveDuration: 300; + clip: true + boundsBehavior: Flickable.DragOverBounds - function getArticleid(index) { - return articles.get(index).articleid - } + onCurrentIndexChanged: { + if (currentIndex >= count-1) { + articlesModel.append({articleid: controller.getNextId(feedid, articlesModel.get(currentIndex).articleid)}) + } + } - function reload() { - //articlesModel.reload() +// onCountChanged: { +// if (count == 3) { +// articleView.currentIndex = 1 +// } +// } } - ListView { - id: articleList; model: articlesModel; delegate: articleDelegate; z: 6 - width: parent.width; height: parent.height; /*x: 0;*/ - cacheBuffer: 100; - flickDeceleration: 1500 + ProgressBar { + id: updateBarArticles + minimumValue: 0 + maximumValue: 100 + value: window.updateProgressValue + visible: window.isUpdateInProgress + width: parent.width + anchors.bottom: parent.bottom } - XmlListModel { - id: articles + ListModel { + id: articlesModel + - source: feedid == "" ? "" : "http://localhost:8000/articles/" + feedid + "?onlyUnread=" + hideReadArticles - query: "/xml/article" - XmlRole { name: "title"; query: "title/string()" } - XmlRole { name: "articleid"; query: "articleid/string()"; isKey: true } - XmlRole { name: "path"; query: "path/string()" } - XmlRole { name: "unread"; query: "unread/string()"; isKey: true} } Component { - id: articleDelegate - + id: viewer Item { - id: wrapper; width: wrapper.ListView.view.width; height: 86 - Item { - id: moveMe - Rectangle { id: backRect; color: "black"; opacity: index % 2 ? 0.2 : 0.4; height: 84; width: wrapper.width; y: 1 } - Text { - anchors.fill: backRect - anchors.margins: 5 - verticalAlignment: Text.AlignVCenter; text: title; color: (model.article.unread=="True") ? "white" : "#7b97fd"; - width: wrapper.width; wrapMode: Text.WordWrap; font.bold: false; - } -// Rectangle { -// x: 3; y: 4; width: 77; height: 77; color: "#ff0000"; smooth: true - -// } - -// Column { -// x: 3; - -// width: wrapper.width - 3; y: 5; spacing: 2 -// height: parent.height; -// Text { Rectangle {anchors.fill: parent; color: "white"; opacity: 0.5;} -// verticalAlignment: Text.AlignVCenter; text: model.article.title; color: (model.article.unread=="True") ? "white" : "#7b97fd"; width: parent.width; wrapMode: Text.WordWrap; font.bold: false; /*elide: Text.ElideRight;*/ /*style: Text.Raised;*/ styleColor: "black"; } -// //Text { text: feedname; width: parent.width; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" } -// } - } - MouseArea { - anchors.fill: wrapper; - onClicked: { - container.articleClicked(model.article.articleid, index) - } + id: flipItem; + width: articleDisplay.width; + height: articleView.height; + + //property string url: (articleView.visible && Math.abs(articleView.currentIndex-index)<2) ? path: ""; + property string html: controller.getArticle(articlePage.feedid, articleid) + ArticleDisplay { + id: articleDisplay + zoomEnabled: articlePage.zoomEnabled; + property bool vertPanningEnabled: articlePage.vertPanningEnabled; + + states: [ State { + name: 'articleIsRead'; + when: articleView.currentIndex == index; + StateChangeScript { + name: "myScript" + script: { + //flipItem.url=path; + controller.setEntryRead(articlePage.feedid, articleid) +// if (articlesModel.count==1) { +// timer.start() +// } + } + } + } + ] } } + } + + Component.onCompleted: { + articlesModel.append({articleid: mainArticleId}) + //articlesModel.append({articleid: controller.getPreviousId(feedid, mainArticleId)}) + //articleView.currentIndex = 1 } +// Timer { +// id: timer +// interval: 500; running: false; repeat: false +// onTriggered: { +// articlesModel.insert(0,{articleid: controller.getNextId(feedid, mainArticleId)}) +// articlesModel.append({articleid: controller.getPreviousId(feedid, mainArticleId)}) +// } +// } + }