From 79ab3fe0309a009081cd6ca62250f3450bbf687e Mon Sep 17 00:00:00 2001 From: Ciaran Gultnieks Date: Mon, 21 Feb 2011 21:33:18 +0000 Subject: [PATCH] Added donate button to AppDetails menu --- res/values/strings.xml | 1 + src/org/fdroid/fdroid/AppDetails.java | 18 +++++++++++++- src/org/fdroid/fdroid/DB.java | 29 +++++++++++++---------- src/org/fdroid/fdroid/RepoXMLHandler.java | 2 ++ 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 112508ad8..b4069ef33 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -101,6 +101,7 @@ Source Code Market Update + Donate Version %s installed Not installed (%d available) diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index e9e0b9440..6b1e4f850 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -137,6 +137,7 @@ public class AppDetails extends ListActivity { private static final int ISSUES = Menu.FIRST + 3; private static final int SOURCE = Menu.FIRST + 4; private static final int MARKET = Menu.FIRST + 5; + private static final int DONATE = Menu.FIRST + 6; private DB db; private DB.App app; @@ -367,6 +368,11 @@ public class AppDetails extends ListActivity { } menu.add(Menu.NONE, MARKET, 5, R.string.menu_market).setIcon( android.R.drawable.ic_menu_view); + if (app.donateURL != null) { + menu.add(Menu.NONE, DONATE, 6, R.string.menu_donate).setIcon( + android.R.drawable.ic_menu_view); + } + return true; } @@ -401,8 +407,18 @@ public class AppDetails extends ListActivity { return true; case MARKET: + try { + startActivity(new Intent(Intent.ACTION_VIEW, Uri + .parse("market://search?q=pname:" + app.id))); + } catch (Exception ex) { + // Do nothing. Probably means the market isn't installed. + // Hurrah. (But really we should remove the menu option) + } + return true; + + case DONATE: startActivity(new Intent(Intent.ACTION_VIEW, Uri - .parse("market://search?q=pname:" + app.id))); + .parse(app.donateURL))); return true; } diff --git a/src/org/fdroid/fdroid/DB.java b/src/org/fdroid/fdroid/DB.java index b3b6ca8bc..28cac2ccf 100644 --- a/src/org/fdroid/fdroid/DB.java +++ b/src/org/fdroid/fdroid/DB.java @@ -67,6 +67,7 @@ public class DB { license = "Unknown"; trackerURL = ""; sourceURL = ""; + donateURL = null; webURL = ""; antiFeatures = null; hasUpdates = false; @@ -83,6 +84,7 @@ public class DB { public String webURL; public String trackerURL; public String sourceURL; + public String donateURL; // Donate link, or null public String installedVersion; public int installedVerCode; public String marketVersion; @@ -224,7 +226,10 @@ public class DB { { "alter table " + TABLE_APK + " add sig string" }, // Version 7... - { "alter table " + TABLE_REPO + " add pubkey string" } }; + { "alter table " + TABLE_REPO + " add pubkey string" }, + + // Version 8... + { "alter table " + TABLE_APP + " add donateURL string" } }; private class DBHelper extends SQLiteOpenHelper { @@ -245,13 +250,12 @@ public class DB { values.put("inuse", 1); values.put("priority", 10); values - .put( - "pubkey", - "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"); + .put( + "pubkey", + "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"); db.insert(TABLE_REPO, null, values); db.setTransactionSuccessful(); - } - finally { + } finally { db.endTransaction(); } } @@ -264,8 +268,7 @@ public class DB { for (int i = 0; i < DB_UPGRADES[v - 2].length; i++) db.execSQL(DB_UPGRADES[v - 2][i]); db.setTransactionSuccessful(); - } - finally { + } finally { db.endTransaction(); } } @@ -286,7 +289,7 @@ public class DB { db = h.getWritableDatabase(); mPm = ctx.getPackageManager(); SharedPreferences prefs = PreferenceManager - .getDefaultSharedPreferences(mContext); + .getDefaultSharedPreferences(mContext); String sync_mode = prefs.getString("dbSyncMode", null); if ("off".equals(sync_mode)) setSynchronizationMode(SYNC_OFF); @@ -394,6 +397,7 @@ public class DB { app.trackerURL = c .getString(c.getColumnIndex("trackerURL")); app.sourceURL = c.getString(c.getColumnIndex("sourceURL")); + app.donateURL = c.getString(c.getColumnIndex("donateURL")); app.installedVersion = c.getString(c .getColumnIndex("installedVersion")); app.installedVerCode = c.getInt(c @@ -450,8 +454,7 @@ public class DB { try { getUpdates(result); db.setTransactionSuccessful(); - } - finally { + } finally { db.endTransaction(); } } @@ -634,6 +637,7 @@ public class DB { values.put("webURL", upapp.webURL); values.put("trackerURL", upapp.trackerURL); values.put("sourceURL", upapp.sourceURL); + values.put("donateURL", upapp.donateURL); values.put("installedVersion", upapp.installedVersion); values.put("installedVerCode", upapp.installedVerCode); values.put("marketVersion", upapp.marketVersion); @@ -736,8 +740,7 @@ public class DB { db.delete(TABLE_REPO, "address = ?", new String[] { address }); } db.setTransactionSuccessful(); - } - finally { + } finally { db.endTransaction(); } } diff --git a/src/org/fdroid/fdroid/RepoXMLHandler.java b/src/org/fdroid/fdroid/RepoXMLHandler.java index eed7b8660..31f464656 100644 --- a/src/org/fdroid/fdroid/RepoXMLHandler.java +++ b/src/org/fdroid/fdroid/RepoXMLHandler.java @@ -134,6 +134,8 @@ public class RepoXMLHandler extends DefaultHandler { curapp.license = str; } else if (curel == "source") { curapp.sourceURL = str; + } else if (curel == "donate") { + curapp.donateURL = str; } else if (curel == "web") { curapp.webURL = str; } else if (curel == "tracker") {