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" />