Add support for changelog links

This commit is contained in:
Nico Alt 2015-06-04 11:57:16 +02:00 committed by Daniel Martí
parent a653b0156a
commit f0c00c144c
7 changed files with 46 additions and 3 deletions

View File

@ -153,6 +153,18 @@ Changelog" />
android:text="@string/menu_issues" android:text="@string/menu_issues"
tools:text="@string/menu_issues" /> tools:text="@string/menu_issues" />
<TextView
android:id="@+id/changelog"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:drawableLeft="@drawable/ic_issues"
android:drawablePadding="4dp"
android:drawableStart="@drawable/ic_issues"
android:gravity="center_vertical"
android:paddingTop="4dp"
android:text="@string/menu_changelog"
tools:text="@string/menu_changelog" />
<TextView <TextView
android:id="@+id/website" android:id="@+id/website"
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -124,6 +124,7 @@
<string name="menu_ignore_this">Ignore This Update</string> <string name="menu_ignore_this">Ignore This Update</string>
<string name="menu_website">Website</string> <string name="menu_website">Website</string>
<string name="menu_issues">Issues</string> <string name="menu_issues">Issues</string>
<string name="menu_changelog">Changelog</string>
<string name="menu_source">Source Code</string> <string name="menu_source">Source Code</string>
<string name="menu_upgrade">Upgrade</string> <string name="menu_upgrade">Upgrade</string>
<string name="menu_donate">Donate</string> <string name="menu_donate">Donate</string>

View File

@ -1206,6 +1206,13 @@ public class AppDetails extends ActionBarActivity implements ProgressListener, A
else else
tv.setVisibility(View.GONE); tv.setVisibility(View.GONE);
// Changelog button
tv = (TextView) view.findViewById(R.id.changelog);
if (getApp().changelogURL != null)
tv.setOnClickListener(mOnClickListener);
else
tv.setVisibility(View.GONE);
// Donate button // Donate button
tv = (TextView) view.findViewById(R.id.donate); tv = (TextView) view.findViewById(R.id.donate);
if (getApp().donateURL != null) if (getApp().donateURL != null)
@ -1314,6 +1321,10 @@ public class AppDetails extends ActionBarActivity implements ProgressListener, A
((AppDetails) getActivity()).tryOpenUri(getApp().trackerURL); ((AppDetails) getActivity()).tryOpenUri(getApp().trackerURL);
break; break;
case R.id.changelog:
((AppDetails) getActivity()).tryOpenUri(getApp().changelogURL);
break;
case R.id.donate: case R.id.donate:
((AppDetails) getActivity()).tryOpenUri(getApp().donateURL); ((AppDetails) getActivity()).tryOpenUri(getApp().donateURL);
break; break;

View File

@ -189,6 +189,9 @@ public class RepoXMLHandler extends DefaultHandler {
case "source": case "source":
curapp.sourceURL = str; curapp.sourceURL = str;
break; break;
case "changelog":
curapp.changelogURL = str;
break;
case "donate": case "donate":
curapp.donateURL = str; curapp.donateURL = str;
break; break;

View File

@ -46,6 +46,8 @@ public class App extends ValueObject implements Comparable<App> {
public String sourceURL; public String sourceURL;
public String changelogURL;
public String donateURL; public String donateURL;
public String bitcoinAddr; public String bitcoinAddr;
@ -140,6 +142,9 @@ public class App extends ValueObject implements Comparable<App> {
case AppProvider.DataColumns.SOURCE_URL: case AppProvider.DataColumns.SOURCE_URL:
sourceURL = cursor.getString(i); sourceURL = cursor.getString(i);
break; break;
case AppProvider.DataColumns.CHANGELOG_URL:
changelogURL = cursor.getString(i);
break;
case AppProvider.DataColumns.DONATE_URL: case AppProvider.DataColumns.DONATE_URL:
donateURL = cursor.getString(i); donateURL = cursor.getString(i);
break; break;
@ -355,6 +360,7 @@ public class App extends ValueObject implements Comparable<App> {
values.put(AppProvider.DataColumns.WEB_URL, webURL); values.put(AppProvider.DataColumns.WEB_URL, webURL);
values.put(AppProvider.DataColumns.TRACKER_URL, trackerURL); values.put(AppProvider.DataColumns.TRACKER_URL, trackerURL);
values.put(AppProvider.DataColumns.SOURCE_URL, sourceURL); values.put(AppProvider.DataColumns.SOURCE_URL, sourceURL);
values.put(AppProvider.DataColumns.CHANGELOG_URL, changelogURL);
values.put(AppProvider.DataColumns.DONATE_URL, donateURL); values.put(AppProvider.DataColumns.DONATE_URL, donateURL);
values.put(AppProvider.DataColumns.BITCOIN_ADDR, bitcoinAddr); values.put(AppProvider.DataColumns.BITCOIN_ADDR, bitcoinAddr);
values.put(AppProvider.DataColumns.LITECOIN_ADDR, litecoinAddr); values.put(AppProvider.DataColumns.LITECOIN_ADDR, litecoinAddr);

View File

@ -166,6 +166,7 @@ public class AppProvider extends FDroidProvider {
String WEB_URL = "webURL"; String WEB_URL = "webURL";
String TRACKER_URL = "trackerURL"; String TRACKER_URL = "trackerURL";
String SOURCE_URL = "sourceURL"; String SOURCE_URL = "sourceURL";
String CHANGELOG_URL = "changelogURL";
String DONATE_URL = "donateURL"; String DONATE_URL = "donateURL";
String BITCOIN_ADDR = "bitcoinAddr"; String BITCOIN_ADDR = "bitcoinAddr";
String LITECOIN_ADDR = "litecoinAddr"; String LITECOIN_ADDR = "litecoinAddr";
@ -194,7 +195,7 @@ public class AppProvider extends FDroidProvider {
String[] ALL = { String[] ALL = {
IS_COMPATIBLE, APP_ID, NAME, SUMMARY, ICON, DESCRIPTION, IS_COMPATIBLE, APP_ID, NAME, SUMMARY, ICON, DESCRIPTION,
LICENSE, WEB_URL, TRACKER_URL, SOURCE_URL, DONATE_URL, LICENSE, WEB_URL, TRACKER_URL, SOURCE_URL, CHANGELOG_URL, DONATE_URL,
BITCOIN_ADDR, LITECOIN_ADDR, DOGECOIN_ADDR, FLATTR_ID, BITCOIN_ADDR, LITECOIN_ADDR, DOGECOIN_ADDR, FLATTR_ID,
UPSTREAM_VERSION, UPSTREAM_VERSION_CODE, ADDED, LAST_UPDATED, UPSTREAM_VERSION, UPSTREAM_VERSION_CODE, ADDED, LAST_UPDATED,
CATEGORIES, ANTI_FEATURES, REQUIREMENTS, IGNORE_ALLUPDATES, CATEGORIES, ANTI_FEATURES, REQUIREMENTS, IGNORE_ALLUPDATES,

View File

@ -71,6 +71,7 @@ public class DBHelper extends SQLiteOpenHelper {
+ "webURL text, " + "webURL text, "
+ "trackerURL text, " + "trackerURL text, "
+ "sourceURL text, " + "sourceURL text, "
+ "changelogURL text, "
+ "suggestedVercode text," + "suggestedVercode text,"
+ "upstreamVersion text," + "upstreamVersion text,"
+ "upstreamVercode integer," + "upstreamVercode integer,"
@ -99,7 +100,7 @@ public class DBHelper extends SQLiteOpenHelper {
+ InstalledAppProvider.DataColumns.APPLICATION_LABEL + " TEXT NOT NULL " + InstalledAppProvider.DataColumns.APPLICATION_LABEL + " TEXT NOT NULL "
+ " );"; + " );";
private static final int DB_VERSION = 47; private static final int DB_VERSION = 48;
private final Context context; private final Context context;
@ -251,7 +252,7 @@ public class DBHelper extends SQLiteOpenHelper {
values.put(RepoProvider.DataColumns.VERSION, version); values.put(RepoProvider.DataColumns.VERSION, version);
values.put(RepoProvider.DataColumns.IN_USE, inUse); values.put(RepoProvider.DataColumns.IN_USE, inUse);
values.put(RepoProvider.DataColumns.PRIORITY, priority); values.put(RepoProvider.DataColumns.PRIORITY, priority);
values.put(RepoProvider.DataColumns.LAST_ETAG, (String)null); values.put(RepoProvider.DataColumns.LAST_ETAG, (String) null);
Log.i(TAG, "Adding repository " + name); Log.i(TAG, "Adding repository " + name);
db.insert(TABLE_REPO, null, values); db.insert(TABLE_REPO, null, values);
@ -280,6 +281,7 @@ public class DBHelper extends SQLiteOpenHelper {
if (oldVersion < 43) createInstalledApp(db); if (oldVersion < 43) createInstalledApp(db);
addAppLabelToInstalledCache(db, oldVersion); addAppLabelToInstalledCache(db, oldVersion);
addIsSwapToRepo(db, oldVersion); addIsSwapToRepo(db, oldVersion);
addChangelogToRepo(db, oldVersion);
} }
/** /**
@ -414,6 +416,13 @@ public class DBHelper extends SQLiteOpenHelper {
} }
} }
private void addChangelogToRepo(SQLiteDatabase db, int oldVersion) {
if (oldVersion < 48 && !columnExists(db, TABLE_APP, "changelogURL")) {
Log.i(TAG, "Adding changelogURL column to " + TABLE_APP);
db.execSQL("Alter table " + TABLE_APP + " add column changelogURL text");
}
}
private void resetTransient(SQLiteDatabase db, int oldVersion) { private void resetTransient(SQLiteDatabase db, int oldVersion) {
// Before version 42, only transient info was stored in here. As of some time // Before version 42, only transient info was stored in here. As of some time
// just before 42 (F-Droid 0.60ish) it now has "ignore this version" info which // just before 42 (F-Droid 0.60ish) it now has "ignore this version" info which