From 08e4ebaa297413598a0acd5cf440d0c407d8ed7d Mon Sep 17 00:00:00 2001 From: Ciaran Gultnieks Date: Wed, 8 Dec 2010 15:29:30 +0000 Subject: [PATCH] Don't show an older installed version as an update --- src/org/fdroid/fdroid/DB.java | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/org/fdroid/fdroid/DB.java b/src/org/fdroid/fdroid/DB.java index 734acc8eb..8374dc2c8 100644 --- a/src/org/fdroid/fdroid/DB.java +++ b/src/org/fdroid/fdroid/DB.java @@ -76,6 +76,7 @@ public class DB { public String trackerURL; public String sourceURL; public String installedVersion; + public int installedVerCode; public String marketVersion; public int marketVercode; @@ -193,7 +194,10 @@ public class DB { "alter table " + TABLE_APP + " add marketVercode integer" }, // Version 3... - { "alter table " + TABLE_APK + " add apkSource text" } + { "alter table " + TABLE_APK + " add apkSource text" }, + + // Version 4... + { "alter table " + TABLE_APP + " add installedVerCode integer" } }; @@ -291,6 +295,8 @@ public class DB { app.sourceURL = c.getString(c.getColumnIndex("sourceURL")); app.installedVersion = c.getString(c .getColumnIndex("installedVersion")); + app.installedVerCode = c.getInt(c + .getColumnIndex("installedVerCode")); app.marketVersion = c.getString(c .getColumnIndex("marketVersion")); app.marketVercode = c.getInt(c.getColumnIndex("marketVercode")); @@ -336,13 +342,15 @@ public class DB { getUpdates(result); } - // We'll say an application has updates if it's installed and the - // installed version is not the 'current' one. + // We'll say an application has updates if it's installed AND the + // installed version is not the 'current' one AND the installed + // version is older than the current one. for (App app : result) { + Apk curver = app.getCurrentVersion(); if (app.installedVersion != null - && !app.installedVersion - .equals(app.getCurrentVersion().version)) { - app.hasUpdates = true; + && !app.installedVersion.equals(curver.version)) { + if(app.installedVerCode < curver.vercode) + app.hasUpdates = true; } } @@ -361,15 +369,17 @@ public class DB { for (DB.App app : apps) { if (systemApks.containsKey(app.id)) { - String version = systemApks.get(app.id).versionName; + PackageInfo sysapk = systemApks.get(app.id); + String version = sysapk.versionName; + int vercode = sysapk.versionCode; if (app.installedVersion == null || !app.installedVersion.equals(version)) { - setInstalledVersion(app.id, version); + setInstalledVersion(app.id, version, vercode); app.installedVersion = version; } } else { if (app.installedVersion != null) { - setInstalledVersion(app.id, null); + setInstalledVersion(app.id, null, 0); app.installedVersion = null; } } @@ -507,6 +517,7 @@ public class DB { values.put("trackerURL", upapp.trackerURL); values.put("sourceURL", upapp.sourceURL); values.put("installedVersion", upapp.installedVersion); + values.put("installedVerCode", upapp.installedVerCode); values.put("marketVersion", upapp.marketVersion); values.put("marketVercode", upapp.marketVercode); values.put("hasUpdates", upapp.hasUpdates ? 1 : 0); @@ -541,9 +552,10 @@ public class DB { } } - public void setInstalledVersion(String id, String version) { + public void setInstalledVersion(String id, String version, int vercode) { ContentValues values = new ContentValues(); values.put("installedVersion", version); + values.put("installedVerCode", vercode); db.update(TABLE_APP, values, "id = ?", new String[] { id }); }