diff --git a/res/values/strings.xml b/res/values/strings.xml index d2a22ab78..625782fa3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -116,6 +116,8 @@ Source Code Market Update + Bitcoin + Flattr Donate Version %s installed diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index aca27650e..e50b928d8 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -163,8 +163,10 @@ 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 static final int LAUNCH = Menu.FIRST + 7; + private static final int BITCOIN = Menu.FIRST + 6; + private static final int FLATTR = Menu.FIRST + 7; + private static final int DONATE = Menu.FIRST + 8; + private static final int LAUNCH = Menu.FIRST + 9; private DB.App app; private int app_currentvercode; @@ -538,8 +540,16 @@ public class AppDetails extends ListActivity { } menu.add(Menu.NONE, MARKET, 5, R.string.menu_market).setIcon( android.R.drawable.ic_menu_view); + if (app.detail_bitcoinAddr != null) { + menu.add(Menu.NONE, BITCOIN, 6, R.string.menu_bitcoin).setIcon( + android.R.drawable.ic_menu_view); + } + if (app.detail_flattrID != null) { + menu.add(Menu.NONE, FLATTR, 7, R.string.menu_flattr).setIcon( + android.R.drawable.ic_menu_view); + } if (app.detail_donateURL != null) { - menu.add(Menu.NONE, DONATE, 6, R.string.menu_donate).setIcon( + menu.add(Menu.NONE, DONATE, 8, R.string.menu_donate).setIcon( android.R.drawable.ic_menu_view); } for (MenuItem item : toShow) { @@ -602,9 +612,14 @@ public class AppDetails extends ListActivity { } return true; - // TODO: Separate donate links if there are many (e.g. paypal and - // bitcoin) and use their link schemas if possible. - // http://f-droid.org/repository/issues/?do=view_issue&issue=212 + case BITCOIN: + tryOpenUri("bitcoin:" + app.detail_bitcoinAddr); + return true; + + case FLATTR: + tryOpenUri("https://flattr.com/thing/" + app.detail_flattrID); + return true; + case DONATE: tryOpenUri(app.detail_donateURL); return true; diff --git a/src/org/fdroid/fdroid/DB.java b/src/org/fdroid/fdroid/DB.java index 4bf78d3fd..b674a6f50 100644 --- a/src/org/fdroid/fdroid/DB.java +++ b/src/org/fdroid/fdroid/DB.java @@ -92,6 +92,7 @@ public class DB { + "webURL text, " + "trackerURL text, " + "sourceURL text, " + "curVersion text," + "curVercode integer," + "antiFeatures string," + "donateURL string," + + "bitcoinAddr string," + "flattrID string," + "requirements string," + "category string," + "added string," + "lastUpdated string," + "compatible int not null," + "primary key(id));"; @@ -108,6 +109,7 @@ public class DB { detail_trackerURL = null; detail_sourceURL = null; detail_donateURL = null; + detail_bitcoinAddr = null; detail_webURL = null; antiFeatures = null; requirements = null; @@ -150,6 +152,14 @@ public class DB { // Null when !detail_Populated public String detail_donateURL; + // Bitcoin donate address, or null + // Null when !detail_Populated + public String detail_bitcoinAddr; + + // Flattr donate ID, or null + // Null when !detail_Populated + public String detail_flattrID; + public String curVersion; public int curVercode; public Date added; @@ -544,7 +554,7 @@ public class DB { } private static final String[] POPULATE_APP_COLS = new String[] {"description", "webURL", - "trackerURL", "sourceURL", "donateURL" }; + "trackerURL", "sourceURL", "donateURL", "bitcoinAddr", "flattrID" }; private void populateAppDetails(App app) { Cursor cursor = null; @@ -557,6 +567,8 @@ public class DB { app.detail_trackerURL = cursor.getString(2); app.detail_sourceURL = cursor.getString(3); app.detail_donateURL = cursor.getString(4); + app.detail_bitcoinAddr = cursor.getString(5); + app.detail_flattrID = cursor.getString(6); app.detail_Populated = true; } catch (Exception e) { Log.d("FDroid", "Error populating app details " + app.id ); @@ -968,6 +980,8 @@ public class DB { values.put("trackerURL", upapp.detail_trackerURL); values.put("sourceURL", upapp.detail_sourceURL); values.put("donateURL", upapp.detail_donateURL); + values.put("bitcoinAddr", upapp.detail_bitcoinAddr); + values.put("flattrID", upapp.detail_flattrID); values.put("added", upapp.added == null ? "" : mDateFormat.format(upapp.added)); values.put( diff --git a/src/org/fdroid/fdroid/RepoXMLHandler.java b/src/org/fdroid/fdroid/RepoXMLHandler.java index fc0cb4d2d..1a3dc6a2c 100644 --- a/src/org/fdroid/fdroid/RepoXMLHandler.java +++ b/src/org/fdroid/fdroid/RepoXMLHandler.java @@ -200,6 +200,10 @@ public class RepoXMLHandler extends DefaultHandler { curapp.detail_sourceURL = str; } else if (curel.equals("donate")) { curapp.detail_donateURL = str; + } else if (curel.equals("bitcoin")) { + curapp.detail_bitcoinAddr = str; + } else if (curel.equals("flattr")) { + curapp.detail_flattrID = str; } else if (curel.equals("web")) { curapp.detail_webURL = str; } else if (curel.equals("tracker")) {