diff --git a/app/build.gradle b/app/build.gradle index 6320b231e..85bbaa86b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,3 +1,5 @@ +import java.text.SimpleDateFormat + apply plugin: 'android-sdk-manager' apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' @@ -7,6 +9,26 @@ retrolambda { jvmArgs '-noverify' } +ext { + // Git is needed in your system PATH for these commands to work. + // If it's not installed, you can return a random value as a workaround + getCommitCount = { + return "git rev-list --count master".execute().text.trim() + // return "1" + } + + getGitSha = { + return 'git rev-parse --short HEAD'.execute().text.trim() + // return "1" + } + + getBuildTime = { + def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'") + df.setTimeZone(TimeZone.getTimeZone("UTC")) + return df.format(new Date()) + } +} + android { compileSdkVersion 23 buildToolsVersion "23.0.2" @@ -19,6 +41,10 @@ android { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" versionCode 1 versionName "1.0" + + buildConfigField "String", "COMMIT_COUNT", "\"${getCommitCount()}\"" + buildConfigField "String", "COMMIT_SHA", "\"${getGitSha()}\"" + buildConfigField "String", "BUILD_TIME", "\"${getBuildTime()}\"" } compileOptions { diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsAboutFragment.java b/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsAboutFragment.java new file mode 100644 index 000000000..0bb2f6369 --- /dev/null +++ b/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsAboutFragment.java @@ -0,0 +1,57 @@ +package eu.kanade.mangafeed.ui.setting; + +import android.os.Bundle; +import android.preference.Preference; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.TimeZone; + +import eu.kanade.mangafeed.BuildConfig; +import eu.kanade.mangafeed.R; + +public class SettingsAboutFragment extends SettingsNestedFragment { + + public static SettingsNestedFragment newInstance(int resourcePreference, int resourceTitle) { + SettingsNestedFragment fragment = new SettingsAboutFragment(); + fragment.setArgs(resourcePreference, resourceTitle); + return fragment; + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { + + Preference version = findPreference(getString(R.string.pref_version)); + Preference buildTime = findPreference(getString(R.string.pref_build_time)); + + version.setSummary(BuildConfig.DEBUG ? "r" + BuildConfig.COMMIT_COUNT : + BuildConfig.VERSION_NAME); + + buildTime.setSummary(getFormattedBuildTime()); + + return super.onCreateView(inflater, container, savedState); + } + + private String getFormattedBuildTime() { + try { + DateFormat inputDf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); + inputDf.setTimeZone(TimeZone.getTimeZone("UTC")); + Date date = inputDf.parse(BuildConfig.BUILD_TIME); + + DateFormat outputDf = DateFormat.getDateTimeInstance( + DateFormat.MEDIUM, DateFormat.SHORT, Locale.getDefault()); + outputDf.setTimeZone(TimeZone.getDefault()); + + return outputDf.format(date); + } catch (ParseException e) { + // Do nothing + } + return ""; + } +} diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsActivity.java b/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsActivity.java index e97381c81..a2b591074 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsActivity.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/setting/SettingsActivity.java @@ -50,19 +50,23 @@ public class SettingsActivity extends BaseActivity { registerSubpreference(R.string.pref_category_reader_key, SettingsNestedFragment.newInstance( - R.xml.pref_reader, R.string.pref_category_reader)); + R.xml.pref_reader, R.string.pref_category_reader)); registerSubpreference(R.string.pref_category_downloads_key, SettingsDownloadsFragment.newInstance( - R.xml.pref_downloads, R.string.pref_category_downloads)); + R.xml.pref_downloads, R.string.pref_category_downloads)); registerSubpreference(R.string.pref_category_accounts_key, SettingsAccountsFragment.newInstance( - R.xml.pref_accounts, R.string.pref_category_accounts)); + R.xml.pref_accounts, R.string.pref_category_accounts)); registerSubpreference(R.string.pref_category_cache_key, SettingsCacheFragment.newInstance( R.xml.pref_cache, R.string.pref_category_cache)); + + registerSubpreference(R.string.pref_category_about_key, + SettingsAboutFragment.newInstance( + R.xml.pref_about, R.string.pref_category_about)); } @Override diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 476821e34..d57249ab3 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -4,6 +4,7 @@ pref_category_accounts_key pref_category_downloads_key pref_category_cache_key + pref_category_about_key pref_default_viewer_key pref_hide_status_bar_key @@ -19,4 +20,7 @@ pref_chapter_cache_size_key pref_clear_chapter_cache_key + + pref_version + pref_build_time \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a923b1548..011498523 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -39,6 +39,7 @@ Accounts Downloads Cache + About Hide status bar @@ -64,6 +65,10 @@ Cache cleared. %1$d files have been deleted An error occurred clearing cache + + Version + Build time + Send crash reports Help fixing bugs. Sensitive data is not sent diff --git a/app/src/main/res/xml/pref_about.xml b/app/src/main/res/xml/pref_about.xml new file mode 100644 index 000000000..baa203085 --- /dev/null +++ b/app/src/main/res/xml/pref_about.xml @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/pref_main.xml b/app/src/main/res/xml/pref_main.xml index 0709cdd55..71245cb60 100644 --- a/app/src/main/res/xml/pref_main.xml +++ b/app/src/main/res/xml/pref_main.xml @@ -21,10 +21,9 @@ android:persistent="false" android:title="@string/pref_category_cache" /> - + \ No newline at end of file