Add more info in settings->about. Fix title mismatch in settings.

This commit is contained in:
Alex Ning 2019-09-12 18:13:59 +08:00
parent 64390d4a5b
commit 4ac9784ab1
5 changed files with 103 additions and 4 deletions

View File

@ -1,11 +1,18 @@
package Settings;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Toast;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import ml.docilealligator.infinityforreddit.LinkResolverActivity;
import ml.docilealligator.infinityforreddit.R;
import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
/**
* A simple {@link PreferenceFragmentCompat} subclass.
@ -15,5 +22,60 @@ public class AboutPreferenceFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.about_preferences, rootKey);
Preference openSourcePreference = findPreference(SharedPreferencesUtils.OPEN_SOURCE_KEY);
Preference reviewPreference = findPreference(SharedPreferencesUtils.RATE_KEY);
Preference emailPreference = findPreference(SharedPreferencesUtils.EMAIL_KEY);
Preference redditAccountPreference = findPreference(SharedPreferencesUtils.REDDIT_ACCOUNT_KEY);
Activity activity = getActivity();
if(activity != null) {
if(openSourcePreference != null) {
openSourcePreference.setOnPreferenceClickListener(preference -> {
Intent intent = new Intent(activity, LinkResolverActivity.class);
intent.setData(Uri.parse("https://github.com/Docile-Alligator/Infinity-For-Reddit"));
startActivity(intent);
return true;
});
}
if(reviewPreference != null) {
reviewPreference.setOnPreferenceClickListener(preference -> {
Intent playStoreIntent = new Intent(Intent.ACTION_VIEW);
playStoreIntent.setData(Uri.parse("market://details?id=ml.docilealligator.infinityforreddit"));
if(playStoreIntent.resolveActivity(activity.getPackageManager()) != null) {
activity.startActivity(playStoreIntent);
} else {
Intent intent = new Intent(activity, LinkResolverActivity.class);
intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=ml.docilealligator.infinityforreddit"));
startActivity(intent);
}
return true;
});
}
if(emailPreference != null) {
emailPreference.setOnPreferenceClickListener(preference -> {
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:docilealligator.app@gmail.com"));
if(intent.resolveActivity(activity.getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(activity, R.string.no_email_client, Toast.LENGTH_SHORT).show();
}
return true;
});
}
if(redditAccountPreference != null) {
redditAccountPreference.setOnPreferenceClickListener(preference -> {
Intent intent = new Intent(activity, LinkResolverActivity.class);
intent.setData(Uri.parse("https://www.reddit.com/user/Hostilenemy"));
startActivity(intent);
return true;
});
}
}
}
}

View File

@ -19,6 +19,7 @@ import androidx.preference.PreferenceFragmentCompat;
import javax.inject.Inject;
import Settings.AboutPreferenceFragment;
import Settings.MainPreferenceFragment;
import butterknife.BindView;
import butterknife.ButterKnife;
@ -84,10 +85,12 @@ public class SettingsActivity extends AppCompatActivity implements
setTitle(savedInstanceState.getCharSequence(TITLE_STATE));
}
getSupportFragmentManager().addOnBackStackChangedListener(() -> {
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
setTitle(R.string.settings_activity_label);
}
});
if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
setTitle(R.string.settings_activity_label);
} else if (getSupportFragmentManager().findFragmentById(R.id.frame_layout_settings_activity) instanceof AboutPreferenceFragment) {
setTitle(R.string.settings_about_master_title);
}
});
}

View File

@ -17,4 +17,8 @@ public class SharedPreferencesUtils {
public static final String CROSSPOST_ICON_KEY = "crosspost_icon";
public static final String THUMBTACK_ICON_KEY = "thumbtack_icon";
public static final String MATERIAL_ICONS_KEY = "material_icons";
public static final String OPEN_SOURCE_KEY = "open_source";
public static final String RATE_KEY = "rate";
public static final String EMAIL_KEY = "email";
public static final String REDDIT_ACCOUNT_KEY = "reddit_account";
}

View File

@ -288,6 +288,14 @@
<string name="settings_credits_thumbtack_icon_title">Thumbtack Icon</string>
<string name="settings_credits_thumbtack_icon_summary">Icon made by Freepik from www.flaticon.com</string>
<string name="settings_credits_material_icons_title">Material Icons</string>
<string name="settings_open_source_title">Open Source</string>
<string name="settings_open_source_summary">Star it on Github if you like this app</string>
<string name="settings_rate_title">Rate in Google Play</string>
<string name="settings_rate_summary">Give me a 5-star rating and I will be really happy</string>
<string name="settings_email_title">Email</string>
<string name="settings_email_summary">docilealligator.app@gmail.com</string>
<string name="settings_reddit_account_title">Reddit Account</string>
<string name="settings_reddit_account_summary">u/Hostilenemy</string>
<string name="no_link_available">Cannot get the link</string>
@ -304,4 +312,6 @@
<string name="cannot_handle_intent">Could not handle the share request</string>
<string name="share">Share</string>
<string name="no_email_client">No Email client found</string>
</resources>

View File

@ -10,4 +10,24 @@
app:title="@string/settings_credits_master_title"
app:fragment="Settings.CreditsPreferenceFragment" />
<Preference
android:key="open_source"
app:title="@string/settings_open_source_title"
app:summary="@string/settings_open_source_summary" />
<Preference
android:key="rate"
app:title="@string/settings_rate_title"
app:summary="@string/settings_rate_summary" />
<Preference
android:key="email"
app:title="@string/settings_email_title"
app:summary="@string/settings_email_summary" />
<Preference
android:key="reddit_account"
app:title="@string/settings_reddit_account_title"
app:summary="@string/settings_reddit_account_summary" />
</PreferenceScreen>