From d0f97a1354f44261e570642c0b7ec85dbd7c0f8d Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 19 Mar 2015 15:58:55 -0500 Subject: [PATCH] Add Help & About section to settings --- src/main/AndroidManifest.xml | 3 +- .../astrid/activity/BeastModePreferences.java | 2 +- .../tasks/preferences/BasicPreferences.java | 14 +++ .../org/tasks/preferences/DeviceInfo.java | 87 +++++++++++++++++++ .../org/tasks/preferences/Preferences.java | 4 - src/main/res/values/keys.xml | 1 - src/main/res/values/strings.xml | 6 ++ src/main/res/xml/preferences.xml | 34 ++++++++ src/main/res/xml/preferences_appearance.xml | 5 -- 9 files changed, 143 insertions(+), 13 deletions(-) create mode 100644 src/main/java/org/tasks/preferences/DeviceInfo.java diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index dc1cf897d..98a72b6a2 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -344,8 +344,7 @@ + android:theme="@style/Tasks" /> items; - public static final String BEAST_MODE_ORDER_PREF = "beast_mode_order"; //$NON-NLS-1$ + public static final String BEAST_MODE_ORDER_PREF = "beast_mode_order_v2"; //$NON-NLS-1$ public static final String BEAST_MODE_PREF_ITEM_SEPARATOR = ";"; //$NON-NLS-1$ diff --git a/src/main/java/org/tasks/preferences/BasicPreferences.java b/src/main/java/org/tasks/preferences/BasicPreferences.java index 64f764342..1f7c84dbb 100644 --- a/src/main/java/org/tasks/preferences/BasicPreferences.java +++ b/src/main/java/org/tasks/preferences/BasicPreferences.java @@ -1,12 +1,18 @@ package org.tasks.preferences; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import org.tasks.R; import org.tasks.injection.InjectingPreferenceActivity; +import javax.inject.Inject; + public class BasicPreferences extends InjectingPreferenceActivity { + @Inject DeviceInfo deviceInfo; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -14,6 +20,14 @@ public class BasicPreferences extends InjectingPreferenceActivity { String action = getIntent().getAction(); if (action == null) { addPreferencesFromResource(R.xml.preferences); + findPreference(getString(R.string.contact_developer)).setIntent( + new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "Alex Baker", null)) {{ + putExtra(Intent.EXTRA_SUBJECT, "Tasks Feedback"); + putExtra(Intent.EXTRA_TEXT, deviceInfo.getDebugInfo()); + }}); + if (!deviceInfo.isPlayStoreAvailable()) { + getPreferenceScreen().removePreference(findPreference(getString(R.string.rate_tasks))); + } } else if (action.equals(getString(R.string.EPr_appearance_header))) { toolbar.setTitle(getString(R.string.EPr_appearance_header)); addPreferencesFromResource(R.xml.preferences_appearance); diff --git a/src/main/java/org/tasks/preferences/DeviceInfo.java b/src/main/java/org/tasks/preferences/DeviceInfo.java new file mode 100644 index 000000000..a6bd424ef --- /dev/null +++ b/src/main/java/org/tasks/preferences/DeviceInfo.java @@ -0,0 +1,87 @@ +package org.tasks.preferences; + +import android.content.Context; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Build; + +import com.google.api.client.repackaged.com.google.common.base.Joiner; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.tasks.BuildConfig; +import org.tasks.injection.ForApplication; + +import java.util.List; + +import javax.inject.Inject; +import javax.inject.Singleton; + +import static java.util.Arrays.asList; + +@Singleton +public class DeviceInfo { + + private static final Logger log = LoggerFactory.getLogger(DeviceInfo.class); + + private Context context; + private Boolean isPlayStoreAvailable; + private String debugInfo; + + @Inject + public DeviceInfo(@ForApplication Context context) { + this.context = context; + } + + public boolean isPlayStoreAvailable() { + if (isPlayStoreAvailable == null) { + isPlayStoreAvailable = checkForPlayStore(); + } + + return isPlayStoreAvailable; + } + + public String getDebugInfo() { + if (debugInfo == null) { + debugInfo = buildDebugString(); + } + + return debugInfo; + } + + private String buildDebugString() { + try { + return Joiner.on("\n").join(asList( + "", + "", + "----------", + "Tasks: " + BuildConfig.VERSION_NAME + " (build " + BuildConfig.VERSION_CODE + ")", + "Android: " + Build.VERSION.RELEASE, + "Model: " + Build.MANUFACTURER + " " + Build.MODEL, + "Product: " + Build.PRODUCT + " (" + Build.DEVICE + ")", + "Kernel: " + System.getProperty("os.version") + " (" + Build.VERSION.INCREMENTAL + ")", + "----------", + "", + "" + )); + } catch(Exception e) { + log.error(e.getMessage(), e); + } + return ""; + } + + private boolean checkForPlayStore() { + try { + PackageManager packageManager = context.getPackageManager(); + List packages = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES); + for (PackageInfo packageInfo : packages) { + if ("com.google.market".equals(packageInfo.packageName) || "com.android.vending".equals(packageInfo.packageName)) { + return true; + } + } + } catch(Exception e) { + log.error(e.getMessage(), e); + } + return false; + } +} diff --git a/src/main/java/org/tasks/preferences/Preferences.java b/src/main/java/org/tasks/preferences/Preferences.java index 20ee613fc..1be6a4186 100644 --- a/src/main/java/org/tasks/preferences/Preferences.java +++ b/src/main/java/org/tasks/preferences/Preferences.java @@ -62,10 +62,6 @@ public class Preferences { return getBoolean(WidgetConfigActivity.PREF_DARK_THEME + widgetId, legacySetting); } - public SharedPreferences getPrefs() { - return prefs; - } - public void clear() { prefs .edit() diff --git a/src/main/res/values/keys.xml b/src/main/res/values/keys.xml index 0caf8eb11..d47ccde90 100644 --- a/src/main/res/values/keys.xml +++ b/src/main/res/values/keys.xml @@ -57,7 +57,6 @@ p_calendar_reminder - p_show_my_tasks_f p_show_today_f p_show_recently_modified_f p_show_no_list_f diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 26c18eaca..d771ac1b5 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -82,6 +82,12 @@ Enabled Font size Customize edit screen + Source code + Translations + Report an issue + Help & Feedback + Contact developer + Rate Tasks diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 0aec43e6f..9b14fc1a7 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -45,4 +45,38 @@ android:targetPackage="org.tasks" /> + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/xml/preferences_appearance.xml b/src/main/res/xml/preferences_appearance.xml index 82f97565d..a4c7e298c 100644 --- a/src/main/res/xml/preferences_appearance.xml +++ b/src/main/res/xml/preferences_appearance.xml @@ -46,11 +46,6 @@ -