Merge lp:~qqworini/ubuntu-rssreader-app/saved into lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/trunk

Proposed by Joey Chan
Status: Merged
Approved by: Roman Shchekin
Approved revision: 65
Merged at revision: 65
Proposed branch: lp:~qqworini/ubuntu-rssreader-app/saved
Merge into: lp:~ubuntu-shorts-dev/ubuntu-rssreader-app/trunk
Diff against target: 187 lines (+78/-12)
5 files modified
OrganicGrid.qml (+9/-1)
RssFeedPage.qml (+22/-1)
TopicTab.qml (+15/-6)
databasemodule_v2.js (+16/-2)
ubuntu-rssreader-app.qml (+16/-2)
To merge this branch: bzr merge lp:~qqworini/ubuntu-rssreader-app/saved
Reviewer Review Type Date Requested Status
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Ubuntu Shorts Developers Pending
Review via email: mp+185029@code.launchpad.net

Commit message

New feature: "Saved" simply implemented, include save button in article view, "Saved" tab and related gridview, listview will be implemented by Roman soon, and multiselect not implemented yet.

Description of the change

New feature: "Saved" simply implemented, include save button in article view, "Saved" tab and related gridview, listview will be implemented by Roman soon, and multiselect not implemented yet.

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'OrganicGrid.qml'
--- OrganicGrid.qml 2013-09-03 18:47:49 +0000
+++ OrganicGrid.qml 2013-09-11 12:16:27 +0000
@@ -71,7 +71,15 @@
71 addArticleToModel(feedArticles.rows[i])71 addArticleToModel(feedArticles.rows[i])
72 }72 }
73 }73 }
74 } else {74 }
75 else if (tag_id == -2) {
76 var favArticles = DB.loadFavouriteArticles()
77 for (var i=0; i < favArticles.rows.length; i++)
78 {
79 addArticleToModel(favArticles.rows[i])
80 }
81 }
82 else {
75 var feedArticles = DB.loadArticles({"isAll": true});83 var feedArticles = DB.loadArticles({"isAll": true});
76 for (var i=0; i < feedArticles.rows.length; i++)84 for (var i=0; i < feedArticles.rows.length; i++)
77 {85 {
7886
=== modified file 'RssFeedPage.qml'
--- RssFeedPage.qml 2013-09-07 16:38:50 +0000
+++ RssFeedPage.qml 2013-09-11 12:16:27 +0000
@@ -20,6 +20,7 @@
20 property string rssTitle: ""20 property string rssTitle: ""
21 property int rssIndex: 021 property int rssIndex: 0
22 property variant rssModel22 property variant rssModel
23 property variant rssItem
2324
24 onRssIndexChanged: {25 onRssIndexChanged: {
25 rssListview.currentIndex = rssIndex26 rssListview.currentIndex = rssIndex
@@ -41,6 +42,26 @@
4142
42 ToolbarButton {43 ToolbarButton {
43 action: Action {44 action: Action {
45 text: rssItem.favourite == "0" ? i18n.tr("Save") : i18n.tr("Unsave")
46 iconSource: Qt.resolvedUrl("./icons_tmp/go-to.svg")
47 onTriggered:
48 {
49 var fav = (rssItem.favourite == "0" ? "1" : "0")
50 var dbResult = DB.updateArticleFavourite(rssItem.id, fav)
51 if (dbResult.rowsAffected == 1) {
52 rssItem.favourite = fav
53 var dbResult1 = DB.updateArticleStatus(rssItem.id, "0")
54 if (dbResult1.rowsAffected == 1) {
55 rssItem.status = "0"
56 }
57 mainView.refreshSavedTab()
58 }
59 }
60 }
61 }
62
63 ToolbarButton {
64 action: Action {
44 text: i18n.tr("Open site")65 text: i18n.tr("Open site")
45 iconSource: Qt.resolvedUrl("./icons_tmp/go-to.svg")66 iconSource: Qt.resolvedUrl("./icons_tmp/go-to.svg")
46 onTriggered:67 onTriggered:
@@ -72,7 +93,7 @@
7293
73 onCurrentIndexChanged: {94 onCurrentIndexChanged: {
74 // console.log("ListView onCurrentIndexChanged", currentIndex)95 // console.log("ListView onCurrentIndexChanged", currentIndex)
75 var rssItem = rssModel.get(currentIndex)96 rssItem = rssModel.get(currentIndex)
76 rssTitle = rssItem.feed_name97 rssTitle = rssItem.feed_name
77 var dbResult = DB.updateArticleStatus(rssItem.id, "1")98 var dbResult = DB.updateArticleStatus(rssItem.id, "1")
78 if (dbResult.rowsAffected == 1) {99 if (dbResult.rowsAffected == 1) {
79100
=== modified file 'TopicTab.qml'
--- TopicTab.qml 2013-09-07 16:38:50 +0000
+++ TopicTab.qml 2013-09-11 12:16:27 +0000
@@ -58,13 +58,22 @@
58 // flickable: null58 // flickable: null
5959
60 function reload () {60 function reload () {
61 var feedTags = DB.loadFeedsFromTag(topicId)61 switch (topicId) {
62 var feeds = []62 case -1:
63 for (var i=0; i < feedTags.rows.length; i++) {63 break
64 feeds.push(feedTags.rows.item(i))64 case -2:
65 organicGridView.reload()
66 break
67
68 default:
69 var feedTags = DB.loadFeedsFromTag(topicId)
70 var feeds = []
71 for (var i=0; i < feedTags.rows.length; i++) {
72 feeds.push(feedTags.rows.item(i))
73 }
74 feedArray = feeds
75 organicGridView.reload()
65 }76 }
66 feedArray = feeds
67 organicGridView.reload()
68 }77 }
6978
70 OrganicGrid {79 OrganicGrid {
7180
=== modified file 'databasemodule_v2.js'
--- databasemodule_v2.js 2013-09-06 07:27:18 +0000
+++ databasemodule_v2.js 2013-09-11 12:16:27 +0000
@@ -238,6 +238,20 @@
238 return dbResult;238 return dbResult;
239}239}
240240
241// load all favourite articles
242function loadFavouriteArticles()
243{
244 var db = openStdDataBase()
245 var dbResult
246
247 db.transaction(function(tx) {
248 dbResult = tx.executeSql('SELECT article.*, feed.title as feed_name FROM article inner join feed on article.feed_id = feed.id WHERE article.favourite = "1" ORDER BY article.pubdate DESC' )
249 }
250 )
251 console.log("loadFavouriteArticles: ", dbResult.rows.length)
252 return dbResult;
253}
254
241// insert255// insert
242function addArticle(title, content, link, description, pubdate, guid, feed_id)256function addArticle(title, content, link, description, pubdate, guid, feed_id)
243{257{
@@ -319,7 +333,7 @@
319// ensureFeedTableExists(tx)333// ensureFeedTableExists(tx)
320 dbResult = tx.executeSql('UPDATE article SET status=? WHERE id=?',334 dbResult = tx.executeSql('UPDATE article SET status=? WHERE id=?',
321 [status, id])335 [status, id])
322 console.log("article UPDATE, AFFECTED ROWS: ", dbResult.rowsAffected)336 console.log("article status UPDATE, AFFECTED ROWS: ", dbResult.rowsAffected)
323 }337 }
324 )338 )
325 return dbResult339 return dbResult
@@ -333,7 +347,7 @@
333// ensureFeedTableExists(tx)347// ensureFeedTableExists(tx)
334 dbResult = tx.executeSql('UPDATE article SET favourite=? WHERE id=?',348 dbResult = tx.executeSql('UPDATE article SET favourite=? WHERE id=?',
335 [favourite, id])349 [favourite, id])
336 //console.log("article UPDATE, AFFECTED ROWS: ", dbResult.rowsAffected)350 console.log("article favourite UPDATE, AFFECTED ROWS: ", dbResult.rowsAffected)
337 }351 }
338 )352 )
339 return dbResult353 return dbResult
340354
=== modified file 'ubuntu-rssreader-app.qml'
--- ubuntu-rssreader-app.qml 2013-09-07 16:38:50 +0000
+++ ubuntu-rssreader-app.qml 2013-09-11 12:16:27 +0000
@@ -70,7 +70,12 @@
70 xmlnetwork.updateFeeds(feedarray, topicId)70 xmlnetwork.updateFeeds(feedarray, topicId)
71 }71 }
7272
73 function toRssPage(model, index) // go to single article page // bugs remain73 // refresh "Saved" Tab
74 function refreshSavedTab() {
75 repeater.reloadSaved()
76 }
77
78 function toRssPage(model, index) // go to single article page
74 {79 {
75 feed_page.setFeed(model, index)80 feed_page.setFeed(model, index)
76 pageStack.push(feed_page)81 pageStack.push(feed_page)
@@ -193,7 +198,7 @@
193 function reloadTabs() {198 function reloadTabs() {
194 repeater.model = 0199 repeater.model = 0
195 var tags = DB.loadTags()200 var tags = DB.loadTags()
196 repeater.model = tags.rows.length201 repeater.model = tags.rows.length + 1 // plus 1 for "Saved" tab
197202
198 for (var i = 0; i< tags.rows.length; i++) {203 for (var i = 0; i< tags.rows.length; i++) {
199 repeater.itemAt(i).title = tags.rows.item(i).name204 repeater.itemAt(i).title = tags.rows.item(i).name
@@ -201,6 +206,15 @@
201 repeater.itemAt(i).isAll = false206 repeater.itemAt(i).isAll = false
202 repeater.itemAt(i).reload()207 repeater.itemAt(i).reload()
203 }208 }
209 // for "Saved" tab (means "favourite" in db)
210 repeater.itemAt(tags.rows.length).title = i18n.tr("Saved")
211 repeater.itemAt(tags.rows.length).topicId = -2
212 repeater.itemAt(tags.rows.length).isAll = true
213 repeater.itemAt(tags.rows.length).reload()
214 }
215
216 function reloadSaved() {
217 repeater.itemAt(repeater.model - 1).reload()
204 }218 }
205 } // Repeater219 } // Repeater
206 }220 }

Subscribers

People subscribed via source and target branches