diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/ItemDonate.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/ItemDonate.java new file mode 100644 index 00000000..9714a2fb --- /dev/null +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/ItemDonate.java @@ -0,0 +1,41 @@ +package io.github.sspanak.tt9.preferences.screens.main; + +import android.content.Intent; +import android.net.Uri; + +import androidx.preference.Preference; + +import io.github.sspanak.tt9.R; +import io.github.sspanak.tt9.preferences.PreferencesActivity; +import io.github.sspanak.tt9.preferences.items.ItemClickable; +import io.github.sspanak.tt9.util.Logger; + +class ItemDonate extends ItemClickable { + static final String NAME = "donate_link"; + private final PreferencesActivity activity; + + ItemDonate(Preference preference, PreferencesActivity activity) { + super(preference); + this.activity = activity; + } + + public ItemDonate populate() { + if (item != null) { + String appName = activity.getString(R.string.app_name_short); + String url = activity.getString(R.string.donate_url_short); + item.setSummary(activity.getString(R.string.donate_summary, appName, url)); + } + return this; + } + + @Override + protected boolean onClick(Preference p) { + try { + activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(activity.getString(R.string.donate_url)))); + return true; + } catch (Exception e) { + Logger.w(getClass().getSimpleName(), "Cannot navigate to the donation page. " + e.getMessage() + " (do you have a browser?)"); + return false; + } + } +} diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java index 12be3d34..f1933173 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/main/MainSettingsScreen.java @@ -40,15 +40,8 @@ public class MainSettingsScreen extends BaseScreenFragment { private void createAboutSection() { - Preference donate = findPreference("donate_link"); - if (donate != null) { - String appName = getString(R.string.app_name_short); - String url = getString(R.string.donate_url_short); - donate.setSummary(getString(R.string.donate_summary, appName, url)); - } - - ItemVersionInfo debugOptions = new ItemVersionInfo(findPreference(ItemVersionInfo.NAME), activity); - debugOptions.populate().enableClickHandler(); + (new ItemDonate(findPreference(ItemDonate.NAME), activity)).populate().enableClickHandler(); + (new ItemVersionInfo(findPreference(ItemVersionInfo.NAME), activity)).populate().enableClickHandler(); } diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml index 59b2af25..09fa3af5 100644 --- a/app/src/main/res/xml/prefs.xml +++ b/app/src/main/res/xml/prefs.xml @@ -38,12 +38,7 @@ - - + app:title="@string/donate_title" />