diff --git a/app/src/main/java/org/fdroid/fdroid/data/App.java b/app/src/main/java/org/fdroid/fdroid/data/App.java index c3ae71fa7..23bf8af20 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/App.java +++ b/app/src/main/java/org/fdroid/fdroid/data/App.java @@ -146,6 +146,8 @@ public class App extends ValueObject implements Comparable, Parcelable { public String sourceCode; + public String translation; + public String video; public String changelog; @@ -273,6 +275,9 @@ public class App extends ValueObject implements Comparable, Parcelable { case Cols.SOURCE_CODE: sourceCode = cursor.getString(i); break; + case Cols.TRANSLATION: + translation = cursor.getString(i); + break; case Cols.VIDEO: video = cursor.getString(i); break; @@ -936,6 +941,7 @@ public class App extends ValueObject implements Comparable, Parcelable { values.put(Cols.WEBSITE, webSite); values.put(Cols.ISSUE_TRACKER, issueTracker); values.put(Cols.SOURCE_CODE, sourceCode); + values.put(Cols.TRANSLATION, translation); values.put(Cols.VIDEO, video); values.put(Cols.CHANGELOG, changelog); values.put(Cols.DONATE, donate); @@ -1161,6 +1167,7 @@ public class App extends ValueObject implements Comparable, Parcelable { dest.writeString(this.webSite); dest.writeString(this.issueTracker); dest.writeString(this.sourceCode); + dest.writeString(this.translation); dest.writeString(this.video); dest.writeString(this.changelog); dest.writeString(this.donate); @@ -1211,6 +1218,7 @@ public class App extends ValueObject implements Comparable, Parcelable { this.webSite = in.readString(); this.issueTracker = in.readString(); this.sourceCode = in.readString(); + this.translation = in.readString(); this.video = in.readString(); this.changelog = in.readString(); this.donate = in.readString(); diff --git a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java index 43f85276d..0a411e211 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java @@ -143,6 +143,7 @@ public class DBHelper extends SQLiteOpenHelper { + AppMetadataTable.Cols.WEBSITE + " text, " + AppMetadataTable.Cols.ISSUE_TRACKER + " text, " + AppMetadataTable.Cols.SOURCE_CODE + " text, " + + AppMetadataTable.Cols.TRANSLATION + " text, " + AppMetadataTable.Cols.VIDEO + " string, " + AppMetadataTable.Cols.CHANGELOG + " text, " + AppMetadataTable.Cols.PREFERRED_SIGNER + " text," @@ -225,7 +226,7 @@ public class DBHelper extends SQLiteOpenHelper { + "primary key(" + ApkAntiFeatureJoinTable.Cols.APK_ID + ", " + ApkAntiFeatureJoinTable.Cols.ANTI_FEATURE_ID + ") " + " );"; - protected static final int DB_VERSION = 81; + protected static final int DB_VERSION = 82; private final Context context; @@ -452,6 +453,19 @@ public class DBHelper extends SQLiteOpenHelper { removeNotNullFromVersionName(db, oldVersion); addDisabledMirrorsFields(db, oldVersion); addIsLocalized(db, oldVersion); + addTranslation(db, oldVersion); + } + + private void addTranslation(SQLiteDatabase db, int oldVersion) { + if (oldVersion >= 82) { + return; + } + if (!columnExists(db, AppMetadataTable.NAME, AppMetadataTable.Cols.TRANSLATION)) { + Utils.debugLog(TAG, "Adding " + AppMetadataTable.Cols.TRANSLATION + " field to " + + AppMetadataTable.NAME + " table in db."); + db.execSQL("alter table " + AppMetadataTable.NAME + " add column " + + AppMetadataTable.Cols.TRANSLATION + " string;"); + } } private void addIsLocalized(SQLiteDatabase db, int oldVersion) { diff --git a/app/src/main/java/org/fdroid/fdroid/data/Schema.java b/app/src/main/java/org/fdroid/fdroid/data/Schema.java index d6bba529e..7fecd916e 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/Schema.java +++ b/app/src/main/java/org/fdroid/fdroid/data/Schema.java @@ -182,6 +182,7 @@ public interface Schema { String WEBSITE = "webURL"; String ISSUE_TRACKER = "trackerURL"; String SOURCE_CODE = "sourceURL"; + String TRANSLATION = "translation"; String VIDEO = "video"; String CHANGELOG = "changelogURL"; String DONATE = "donateURL"; @@ -242,7 +243,7 @@ public interface Schema { String[] ALL_COLS = { ROW_ID, PACKAGE_ID, REPO_ID, IS_COMPATIBLE, NAME, SUMMARY, ICON, DESCRIPTION, WHATSNEW, LICENSE, AUTHOR_NAME, AUTHOR_EMAIL, WEBSITE, ISSUE_TRACKER, SOURCE_CODE, - VIDEO, CHANGELOG, DONATE, BITCOIN, LITECOIN, FLATTR_ID, LIBERAPAY_ID, + TRANSLATION, VIDEO, CHANGELOG, DONATE, BITCOIN, LITECOIN, FLATTR_ID, LIBERAPAY_ID, UPSTREAM_VERSION_NAME, UPSTREAM_VERSION_CODE, ADDED, LAST_UPDATED, ANTI_FEATURES, REQUIREMENTS, ICON_URL, FEATURE_GRAPHIC, PROMO_GRAPHIC, TV_BANNER, PHONE_SCREENSHOTS, @@ -259,7 +260,7 @@ public interface Schema { String[] ALL = { _ID, ROW_ID, REPO_ID, IS_COMPATIBLE, NAME, SUMMARY, ICON, DESCRIPTION, WHATSNEW, LICENSE, AUTHOR_NAME, AUTHOR_EMAIL, WEBSITE, ISSUE_TRACKER, SOURCE_CODE, - VIDEO, CHANGELOG, DONATE, BITCOIN, LITECOIN, FLATTR_ID, LIBERAPAY_ID, + TRANSLATION, VIDEO, CHANGELOG, DONATE, BITCOIN, LITECOIN, FLATTR_ID, LIBERAPAY_ID, UPSTREAM_VERSION_NAME, UPSTREAM_VERSION_CODE, ADDED, LAST_UPDATED, ANTI_FEATURES, REQUIREMENTS, ICON_URL, FEATURE_GRAPHIC, PROMO_GRAPHIC, TV_BANNER, PHONE_SCREENSHOTS, diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index 56f90a588..fc6800115 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -981,6 +981,11 @@ public class AppDetailsRecyclerViewAdapter addLinkItemView(contentView, R.string.menu_issues, R.drawable.ic_issues, app.issueTracker); } + // Translation button + if (uriIsSetAndCanBeOpened(app.translation)) { + addLinkItemView(contentView, R.string.menu_translation, R.drawable.ic_translation, app.translation); + } + // Changelog button if (uriIsSetAndCanBeOpened(app.changelog)) { addLinkItemView(contentView, R.string.menu_changelog, R.drawable.ic_changelog, app.changelog); diff --git a/app/src/main/res/drawable/ic_translation.xml b/app/src/main/res/drawable/ic_translation.xml new file mode 100644 index 000000000..0fd3dbba4 --- /dev/null +++ b/app/src/main/res/drawable/ic_translation.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 184caea76..06104328a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -210,11 +210,18 @@ This often occurs with apps installed via Google Play or other sources, if they Ignore This Update Website E-Mail Author + Issues + Changelog + Video + License: %s + Source Code + + Translation Update Downgrade Donate diff --git a/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java index 22bc9efcc..dfda5d5f3 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java @@ -329,6 +329,7 @@ public class IndexV1UpdaterTest extends FDroidProviderTest { "suggestedVersionName", "summary", "tenInchScreenshots", + "translation", "tvBanner", "tvScreenshots", "upstreamVersionCode",