git.iko.soy/maciek134/podphoenix
on main help sign in
feat: Auto-mark episodes as listened on playlist end. (#18)
e205e39Simon Poirier
app/podcasts.js+5−1
@@ -401,7 +401,11 @@ function cleanUp(today, retentionDays) {
401 var rs2 = tx.executeSql("SELECT rowid, * FROM Episode WHERE podcast=?", [rs.rows.item(i).rowid]);
401 var rs2 = tx.executeSql("SELECT rowid, * FROM Episode WHERE podcast=?", [rs.rows.item(i).rowid]);
402 for (var j=0; j< rs2.rows.length; j++) {
402 for (var j=0; j< rs2.rows.length; j++) {
403 var diff = Math.floor((today - rs2.rows.item(j).published)/dayToMs)
403 var diff = Math.floor((today - rs2.rows.item(j).published)/dayToMs)
404+ var item = rs2.rows.item(j);
405+ if (!item.favourited && item.downloadedfile && (
404− if (rs2.rows.item(j).downloadedfile && diff > retentionDays) {
406+ diff > retentionDays
407+ || (podphoenix.settings.deleteListened && item.listened)
408+ )) {
405 fileManager.deleteFile(rs2.rows.item(j).downloadedfile)
409 fileManager.deleteFile(rs2.rows.item(j).downloadedfile)
406 tx.executeSql("UPDATE Episode SET downloadedfile = NULL WHERE guid = ?", [rs2.rows.item(j).guid]);
410 tx.executeSql("UPDATE Episode SET downloadedfile = NULL WHERE guid = ?", [rs2.rows.item(j).guid]);
407 }
411 }
app/podphoenix.qml+7
@@ -122,6 +122,7 @@ MainView {
122 property bool firstRun: true
122 property bool firstRun: true
123 property int maxEpisodeDownload: -1
123 property int maxEpisodeDownload: -1
124 property bool hideListened: false
124 property bool hideListened: false
125+ property bool deleteListened: false
125 property bool showListView: true
126 property bool showListView: true
126 property int skipForward: 30
127 property int skipForward: 30
127 property int skipBack: 10
128 property int skipBack: 10
@@ -387,6 +388,12 @@ MainView {
387 console.log("[LOG]: End of Media. Stopping.")
388 console.log("[LOG]: End of Media. Stopping.")
388 endOfMedia = true
389 endOfMedia = true
389 stop()
390 stop()
391+
392+ Podcasts.init().transaction(function(tx) {
393+ // Playlist finished, mark all playlist as played.
394+ tx.executeSql("UPDATE Episode SET listened=1 WHERE guid in (SELECT guid FROM Queue)");
395+ refreshModels();
396+ })
390 }
397 }
391 }
398 }
392
399
app/ui/SettingsPage.qml+17
@@ -268,6 +268,23 @@ Page {
268 onClicked: mainStack.push(Qt.resolvedUrl("../settings/DownloadSetting.qml"))
268 onClicked: mainStack.push(Qt.resolvedUrl("../settings/DownloadSetting.qml"))
269 }
269 }
270
270
271+ ListItem {
272+ ListItemLayout {
273+ id: deleteListened
274+ title.text: i18n.tr("Automatically delete listened episodes")
275+ title.color: podphoenix.appTheme.baseText
276+ summary.text: i18n.tr("Automatically delete listened episodes on application start")
277+ summary.color: podphoenix.appTheme.baseSubText
278+ Switch {
279+ SlotsLayout.position: SlotsLayout.Last
280+ checked: podphoenix.settings.deleteListened
281+ onClicked: podphoenix.settings.deleteListened = checked
282+ }
283+ }
284+ divider.visible: false
285+ height: deleteListened.height
286+ }
287+
271 ListItem {
288 ListItem {
272 ListItemLayout {
289 ListItemLayout {
273 id: downloadWifiOnlyLayout
290 id: downloadWifiOnlyLayout