Merge branch 'callbacks' of git://github.com/michael-k/ttrss into michael-k-callbacks

This commit is contained in:
Hauke Schade 2014-11-02 17:24:43 +01:00
commit c591811c33
3 changed files with 110 additions and 53 deletions

View file

@ -215,24 +215,42 @@ Page {
feedItems.selectPrevious()
showFeedItem()
} }
ToolIcon {
iconSource: "../resources/ic_star_"+(marked?"enabled":"disabled")+".png"
iconSource: "../resources/ic_star_"
+ (marked ? "enabled" : "disabled") + ".png"
onClicked: {
feedItems.toggleStar()
marked = !marked
} }
feedItems.toggleStar(function(successful, errorMessage,
state) {
marked = state
// TODO make use of errorMessage
})
}
}
ToolIcon {
iconSource: "../resources/ic_rss_"+(rss?"enabled":"disabled")+".png"
iconSource: "../resources/ic_rss_"
+ (rss ? "enabled" : "disabled") + ".png"
onClicked: {
feedItems.togglePublished()
rss = !rss
} }
feedItems.togglePublished(function(successful, errorMessage,
state) {
rss = state
// TODO make use of errorMessage
})
}
}
ToolIcon {
iconSource: "../resources/ic_"+(unread?"unread":"read")+".png"
iconSource: "../resources/ic_"
+ (unread ? "unread" : "read") + ".png"
onClicked: {
feedItems.toggleRead()
unread = !unread
} }
feedItems.toggleRead(function(successful, errorMessage, state) {
unread = state
// TODO make use of errorMessage
})
}
}
ToolIcon {
iconId: "toolbar-next"
visible: nextId !== false

View file

@ -173,52 +173,76 @@ ListModel {
})
}
function toggleRead() {
/**
* Toggle unread/read of currently selected item.
* @param {function} A callback function with parameters boolean (indicating
* success), string (an optional error message) and boolean (true if
* unread; false if read).
*/
function toggleRead(callback) {
var ttrss = rootWindow.getTTRSS()
var sel = root.selectedIndex
var m = getSelectedItem()
ttrss.updateFeedUnread(m.id, !m.unread, function(successful, errorMessage) {
var index = root.selectedIndex
var item = getSelectedItem()
var newState = !item.unread
ttrss.updateFeedUnread(item.id, newState, function(successful,
errorMessage) {
if (successful) {
var newState = !m.unread
root.setProperty(sel, "unread", newState)
if (!rootWindow.showAll) {
root.continuation += newState ? +1 : -1
}
root.itemUnreadChanged(m)
root.setProperty(index, "unread", newState)
root.itemUnreadChanged(item)
}
// TODO Add a callback to toogleRead() which can be used to display
// errorMessage.
callback(successful, errorMessage, item.unread)
})
}
function toggleStar() {
/**
* Toggle starred/unstarred of currently selected item.
* @param {function} A callback function with parameters boolean (indicating
* success), string (an optional error message) and boolean (true if
* starred; false if unstarred).
*/
function toggleStar(callback) {
var ttrss = rootWindow.getTTRSS()
var sel = root.selectedIndex
var m = getSelectedItem()
ttrss.updateFeedStar(m.id, !m.marked, function(successful, errorMessage) {
var index = root.selectedIndex
var item = getSelectedItem()
var newState = !item.marked
ttrss.updateFeedStar(item.id, newState, function(successful,
errorMessage) {
if (successful) {
root.setProperty(sel, "marked", !m.marked)
root.itemStarChanged(m)
root.setProperty(index, "marked", newState)
root.itemStarChanged(item)
}
// TODO Add a callback to toogleStar() which can be used to display
// errorMessage.
callback(successful, errorMessage, item.marked)
})
}
function togglePublished() {
/**
* Toggle published/unpublished of currently selected item.
* @param {function} A callback function with parameters boolean (indicating
* success), string (an optional error message) and boolean (true if
* published; false if unpublished).
*/
function togglePublished(callback) {
var ttrss = rootWindow.getTTRSS()
var sel = root.selectedIndex
var m = getSelectedItem()
ttrss.updateFeedRSS(m.id, !m.rss, function(successful, errorMessage) {
var index = root.selectedIndex
var item = getSelectedItem()
var newState = !item.rss
ttrss.updateFeedRSS(item.id, newState, function(successful,
errorMessage) {
if (successful) {
root.setProperty(sel, "rss", !m.rss)
root.itemPublishedChanged(m)
root.setProperty(index, "rss", newState)
root.itemPublishedChanged(item)
}
// TODO Add a callback to tooglePublished() which can be used to display
// errorMessage.
callback(successful, errorMessage, item.rss)
})
}

View file

@ -187,33 +187,47 @@ Page {
//showFeedItem()
}
}
IconButton {
id: rssSwitch
icon.source: "qrc:///images/ic_rss_"+(rss?"enabled":"disabled")+".png"
//checked: rss
icon.source: "qrc:///images/ic_rss_"
+ (rss ? "enabled" : "disabled") + ".png"
onClicked: {
feedItemModel.togglePublished()
rss = !rss
feedItemModel.togglePublished(function(successful,
errorMessage,
state) {
rss = state
// TODO make use of errorMessage
})
}
}
IconButton {
id: markedSwitch
icon.source: "qrc:///images/ic_star_"+(marked?"enabled":"disabled")+".png"
//checked: marked
icon.source: "qrc:///images/ic_star_"
+ (marked ? "enabled" : "disabled") + ".png"
onClicked: {
feedItemModel.toggleStar()
marked = !marked
feedItemModel.toggleStar(function(successful, errorMessage,
state) {
marked = state
// TODO make use of errorMessage
})
}
}
IconButton {
id: unreadSwitch
icon.source: "qrc:///images/ic_"+(unread?"unread":"read")+".png"
//checked: unread
icon.source: "qrc:///images/ic_"
+ (unread ? "unread" : "read") + ".png"
onClicked: {
feedItemModel.toggleRead()
unread = !unread
feedItemModel.toggleRead(function(successful, errorMessage,
state) {
unread = state
// TODO make use of errorMessage
})
}
}
IconButton {
icon.source: "image://theme/icon-m-next"
enabled: nextId !== false
@ -313,9 +327,7 @@ Page {
root.labels = data.labels
note = data.note !== undefined ? data.note : ""
marked = data.marked
//markedSwitch.checked = marked
unread = data.unread
//unreadSwitch.checked = unread
rss = data.rss
//rssSwitch.checked = rss
@ -323,8 +335,11 @@ Page {
nextId = feedItemModel.hasNext()
if (settings.autoMarkRead && unread) {
feedItemModel.toggleRead()
unread = !unread
feedItemModel.toggleRead(function(successful, errorMessage,
state) {
unread = state
// TODO make use of errorMessage
})
}
}
}