diff --git a/qml/js/WallaBase.js b/qml/js/WallaBase.js
index 800d331..c3bb6d4 100644
--- a/qml/js/WallaBase.js
+++ b/qml/js/WallaBase.js
@@ -95,7 +95,7 @@ function getServer( id, cb )
function( tx ) {
var server = null;
try {
- var res = tx.executeSql( "SELECT id, name, url, lastSync FROM servers WHERE id=?", [ id ] );
+ var res = tx.executeSql( "SELECT id, name, url, lastSync, fetchUnread FROM servers WHERE id=?", [ id ] );
if ( res.rows.length === 0 ) {
err = qsTr( "Server not found in the configuration" );
}
@@ -145,14 +145,15 @@ function addNewServer( props )
db.transaction(
function( tx ) {
// TODO: try/catch here when error management is in place in the UI
- tx.executeSql( "INSERT INTO servers(name, url, user, password, clientId, clientSecret) VALUES(?, ?, ?, ?, ?, ?)",
+ tx.executeSql( "INSERT INTO servers(name, url, user, password, clientId, clientSecret, fetchUnread) VALUES(?, ?, ?, ?, ?, ?, ?)",
[
props.name,
props.url,
props.user,
props.password,
props.clientId,
- props.clientSecret
+ props.clientSecret,
+ props.fetchUnread ? 1 : 0
]
);
}
@@ -172,7 +173,8 @@ function updateServer( id, props )
"user=?, " +
"password=?, " +
"clientId=?, " +
- "clientSecret=? " +
+ "clientSecret=?, " +
+ "fetchUnread=? " +
"WHERE id=?",
[
props.name,
@@ -181,6 +183,7 @@ function updateServer( id, props )
props.password,
props.clientId,
props.clientSecret,
+ props.fetchUnread ? 1 : 0,
id
]
);
@@ -587,6 +590,9 @@ function downloadArticles( props, cb )
url += "/";
url += "api/entries.json";
url += "?since=" + props.since;
+ // We only use the archive flag to filter out read articles
+ if ( 'archive' in props && props.archive === 0 )
+ url += '&archive=' + props.archive
url += "&perPage=10";
var articles = new Array;
@@ -805,9 +811,14 @@ function checkDatabaseStatus( db )
if ( db.version === "" ) {
createLatestDatabase( db );
}
+ // _updateSchema_v* will take care of calling the relevant update methods
+ // to bring the database to the latest version
else if ( db.version === "0.2" ) {
_updateSchema_v3( db );
}
+ else if ( db.version === "0.3" ) {
+ _updateSchema_v4( db )
+ }
}
function createLatestDatabase( db )
@@ -825,7 +836,8 @@ function createLatestDatabase( db )
"password TEXT NOT NULL, " +
"clientId TEXT NOT NULL, " +
"clientSecret TEXT NOT NULL, " +
- "lastSync INTEGER DEFAULT 0" +
+ "lastSync INTEGER DEFAULT 0," +
+ "fetchUnread INTEGER DEFAULT 0" +
")"
);
@@ -898,6 +910,19 @@ function _updateSchema_v3( db )
tx.executeSql( "ALTER TABLE articles_next RENAME TO articles" );
db.changeVersion( db.version, "0.3" );
+ _updateSchema_v4( db )
+ }
+ );
+}
+
+function _updateSchema_v4( db )
+{
+ db.transaction(
+ function( tx ) {
+ tx.executeSql( "ALTER TABLE servers ADD COLUMN fetchUnread INTEGER DEFAULT 0" );
+ tx.executeSql( "UPDATE servers SET fetchUnread=0" );
+
+ db.changeVersion( db.version, "0.4" );
}
);
}
diff --git a/qml/pages/ServerSettingsDialog.qml b/qml/pages/ServerSettingsDialog.qml
index 20615c2..ec5540a 100644
--- a/qml/pages/ServerSettingsDialog.qml
+++ b/qml/pages/ServerSettingsDialog.qml
@@ -49,7 +49,8 @@ Dialog {
user: userField.text,
password: passwordField.text,
clientId: clientIdField.text,
- clientSecret: clientSecretField.text
+ clientSecret: clientSecretField.text,
+ fetchUnread: fetchUnreadSwitch.checked
}
if ( serverId === -1 )
@@ -132,6 +133,13 @@ Dialog {
text: serverSettings.clientSecret
inputMethodHints: Qt.ImhNoPredictiveText | Qt.ImhNoAutoUppercase | Qt.ImhSensitiveData
}
+
+ TextSwitch {
+ id: fetchUnreadSwitch
+ width: parent.width
+ checked: serverSettings.fetchUnread
+ text: qsTr( "Fetch unread/archived articles" )
+ }
}
}
}
diff --git a/qml/types/Server.qml b/qml/types/Server.qml
index 4a49350..2baa0be 100644
--- a/qml/types/Server.qml
+++ b/qml/types/Server.qml
@@ -35,6 +35,7 @@ Item {
property string refreshToken
property string tokenType
property int tokenExpiry: 0
+ property bool fetchUnread: false
signal articlesDownloaded( var list )
signal connected
@@ -53,6 +54,7 @@ Item {
refreshToken = null
tokenType = null
tokenExpiry = 0
+ fetchUnread = false
}
}
@@ -68,6 +70,7 @@ Item {
name = props.name
url = props.url
lastSync = props.lastSync
+ fetchUnread = props.fetchUnread === 1
}
}
@@ -128,7 +131,7 @@ Item {
}
else {
console.debug( "Downloading articles changes since last sync" )
- var props = { url: url, since: lastSync, accessToken: accessToken }
+ var props = { url: url, since: lastSync, accessToken: accessToken, archive: fetchUnread ? 1 : 0 }
WallaBase.downloadArticles( props, onGetUpdatedArticlesDone )
}
}
diff --git a/qml/types/ServerSettings.qml b/qml/types/ServerSettings.qml
index adbc07b..2dea583 100644
--- a/qml/types/ServerSettings.qml
+++ b/qml/types/ServerSettings.qml
@@ -31,6 +31,7 @@ QtObject {
property string password
property string clientId
property string clientSecret
+ property bool fetchUnread
signal error( string message )
@@ -46,6 +47,7 @@ QtObject {
password = null
clientId = null
clientSecret = null
+ fetchUnread = false
}
}
@@ -60,6 +62,7 @@ QtObject {
password = props.password
clientId = props.clientId
clientSecret = props.clientSecret
+ fetchUnread = props.fetchUnread !== 0
}
}
}
diff --git a/translations/harbour-wallaread-fr.ts b/translations/harbour-wallaread-fr.ts
index 2ed3250..3c9c0dc 100644
--- a/translations/harbour-wallaread-fr.ts
+++ b/translations/harbour-wallaread-fr.ts
@@ -126,6 +126,10 @@
Secret du client
+
+
+ Télécharger les articles lus / archivés
+
ServersPage
diff --git a/translations/harbour-wallaread.ts b/translations/harbour-wallaread.ts
index b7e5b91..75a475d 100644
--- a/translations/harbour-wallaread.ts
+++ b/translations/harbour-wallaread.ts
@@ -126,6 +126,10 @@
+
+
+
+
ServersPage