X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=psa_harmattan%2Ffeedingit%2Fqml%2FArticles.qml;fp=psa_harmattan%2Ffeedingit%2Fqml%2FArticles.qml;h=25ec145326108995f27de551792cc50e05e0f222;hb=2e3d13f0400464104e011843428f48d3c03a9cab;hp=5019df412aa823ba2666df342e1ffeeacb14ac23;hpb=45f93ead6c7f91325997e78b8dd2629e98001427;p=feedingit diff --git a/psa_harmattan/feedingit/qml/Articles.qml b/psa_harmattan/feedingit/qml/Articles.qml index 5019df4..25ec145 100644 --- a/psa_harmattan/feedingit/qml/Articles.qml +++ b/psa_harmattan/feedingit/qml/Articles.qml @@ -27,6 +27,14 @@ Item { } } + function setNextId() { + articlePage.mainArticleId = controller.getNextId(articlePage.feedid,articlePage.mainArticleId, settings.hideReadArticles) + } + + function setPreviousId() { + articlePage.mainArticleId = controller.getPreviousId(articlePage.feedid,articlePage.mainArticleId, settings.hideReadArticles) + } + Component.onCompleted: { webViewFront.html = controller.getArticle(articlePage.feedid, articlePage.mainArticleId); } @@ -46,6 +54,7 @@ Item { //flickableDirection: Flickable.VerticalFlick property bool contentIsReady: false + property bool isSwitchable: false Rectangle { id: boundsRecFront color: "white" @@ -68,11 +77,10 @@ Item { controller.setEntryRead(articlePage.feedid, articlePage.mainArticleId) //flickable.width/2 flickableFront.contentIsReady = true + switchableTimer.start() } - } - } state: "visible" @@ -92,21 +100,40 @@ Item { transitions: [ Transition { from: "visible"; - PropertyAnimation { target: flickableFront - easing.type: Easing.InOutSine - properties: "x"; duration: 1000 } + SequentialAnimation { + ScriptAction { script: flickableFront.isSwitchable=false; } + PropertyAnimation { target: flickableFront + easing.type: Easing.InOutSine + properties: "x"; duration: 1000 } + ScriptAction { script: flickableFront.isSwitchable=true; } + } }, Transition { to: "visible"; - PropertyAnimation { target: flickableFront - easing.type: Easing.InOutSine - properties: "x"; duration: 1000 } + SequentialAnimation { + ScriptAction { script: flickableFront.isSwitchable=false; } + PropertyAnimation { target: flickableFront + easing.type: Easing.InOutSine + properties: "x"; duration: 1000 } + ScriptAction { script: flickableFront.isSwitchable=true; } + } } + ] + Timer { + // Disable animations/page shifting for 400ms, to give time to the page to setup properly + id: switchableTimer + interval: 400 + running: false + repeat: false + onTriggered: flickableFront.isSwitchable=true; + } + function moveFromLeft() { flickableFront.contentIsReady = false - articlePage.mainArticleId = controller.getPreviousId(articlePage.feedid,articlePage.mainArticleId) + setPreviousId() + //articlePage.mainArticleId = controller.getPreviousId(articlePage.feedid,articlePage.mainArticleId) webViewFront.html = controller.getArticle(articlePage.feedid, articlePage.mainArticleId); state = "toLeft" state = "visible" @@ -115,7 +142,8 @@ Item { function moveFromRight() { flickableFront.contentIsReady = false - articlePage.mainArticleId = controller.getNextId(articlePage.feedid,articlePage.mainArticleId) + setNextId() + //articlePage.mainArticleId = controller.getNextId(articlePage.feedid,articlePage.mainArticleId) webViewFront.html = controller.getArticle(articlePage.feedid, articlePage.mainArticleId); state = "toRight" state = "visible" @@ -128,21 +156,26 @@ Item { NumberAnimation { duration: 200 } } onMovingHorizontallyChanged: { - if (!movingHorizontally && (!atXBeginning || !atXEnd)) { - flickableFront.contentX = buffer //flickable.width/2 + if (flickableFront.isSwitchable) { + if (!movingHorizontally && (!atXBeginning || !atXEnd)) { + flickableFront.contentX = buffer //flickable.width/2 + } } } onAtXBeginningChanged: { - if (atXBeginning && contentIsReady) { - flickableBack.moveFromLeft() + if (flickableFront.isSwitchable) { + if (atXBeginning && contentIsReady) { + flickableBack.moveFromLeft() + } } } onAtXEndChanged: { - if (atXEnd && contentIsReady) { - //console.log("next") - flickableBack.moveFromRight() + if (flickableFront.isSwitchable) { + if (atXEnd && contentIsReady) { + flickableBack.moveFromRight() + } } } @@ -165,6 +198,7 @@ Item { //flickableDirection: Flickable.VerticalFlick property bool contentIsReady: false + property bool isSwitchable: false Rectangle { id: boundsRecBack color: "white" @@ -208,21 +242,30 @@ Item { transitions: [ Transition { from: "visible"; - PropertyAnimation { target: flickableBack - easing.type: Easing.InOutSine - properties: "x"; duration: 1000 } + SequentialAnimation { + ScriptAction { script: flickableBack.isSwitchable=false; } + PropertyAnimation { target: flickableBack + easing.type: Easing.InOutSine + properties: "x"; duration: 1000 } + ScriptAction { script: flickableBack.isSwitchable=true; } + } }, Transition { to: "visible"; - PropertyAnimation { target: flickableBack - easing.type: Easing.InOutSine - properties: "x"; duration: 1000 } + SequentialAnimation { + ScriptAction { script: flickableBack.isSwitchable=false; } + PropertyAnimation { target: flickableBack + easing.type: Easing.InOutSine + properties: "x"; duration: 1000 } + ScriptAction { script: flickableBack.isSwitchable=true; } + } } ] function moveFromLeft() { flickableBack.contentIsReady = false - articlePage.mainArticleId = controller.getPreviousId(articlePage.feedid,articlePage.mainArticleId) + setPreviousId() + //articlePage.mainArticleId = controller.getPreviousId(articlePage.feedid,articlePage.mainArticleId) webViewBack.html = controller.getArticle(articlePage.feedid, articlePage.mainArticleId); state = "toLeft" state = "visible" @@ -231,7 +274,8 @@ Item { function moveFromRight() { flickableBack.contentIsReady = false - articlePage.mainArticleId = controller.getNextId(articlePage.feedid,articlePage.mainArticleId) + setNextId() + //articlePage.mainArticleId = controller.getNextId(articlePage.feedid,articlePage.mainArticleId) webViewBack.html = controller.getArticle(articlePage.feedid, articlePage.mainArticleId); state = "toRight" state = "visible" @@ -245,20 +289,26 @@ Item { } onMovingHorizontallyChanged: { - if (!movingHorizontally && (!atXBeginning || !atXEnd)) { - flickableBack.contentX = buffer //flickable.width/2 + if (flickableBack.isSwitchable) { + if (!movingHorizontally && (!atXBeginning || !atXEnd)) { + flickableBack.contentX = buffer //flickable.width/2 + } } } onAtXBeginningChanged: { - if (atXBeginning && contentIsReady) { - flickableFront.moveFromLeft() + if (flickableBack.isSwitchable) { + if (atXBeginning && contentIsReady) { + flickableFront.moveFromLeft() + } } } onAtXEndChanged: { - if (atXEnd && contentIsReady) { - flickableFront.moveFromRight() + if (flickableBack.isSwitchable) { + if (atXEnd && contentIsReady) { + flickableFront.moveFromRight() + } } } }