diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index 6712be80c..1fe7e4615 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -42,6 +42,7 @@ import org.joinmastodon.android.api.requests.oauth.RevokeOauthToken; import org.joinmastodon.android.api.session.AccountSession; import org.joinmastodon.android.api.session.AccountSessionManager; import org.joinmastodon.android.events.SelfUpdateStateChangedEvent; +import org.joinmastodon.android.model.Instance; import org.joinmastodon.android.model.PushNotification; import org.joinmastodon.android.model.PushSubscription; import org.joinmastodon.android.ui.M3AlertDialogBuilder; @@ -155,23 +156,31 @@ public class SettingsFragment extends MastodonToolbarFragment{ items.add(new SwitchItem(R.string.notify_mention, R.drawable.ic_at_symbol, pushSubscription.alerts.mention, i->onNotificationsChanged(PushNotification.Type.MENTION, i.checked))); items.add(new SwitchItem(R.string.sk_notify_posts, R.drawable.ic_fluent_alert_24_regular, pushSubscription.alerts.status, i->onNotificationsChanged(PushNotification.Type.STATUS, i.checked))); - items.add(new HeaderItem(R.string.settings_boring)); - items.add(new TextItem(R.string.settings_account, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/auth/edit"))); - items.add(new TextItem(R.string.settings_tos, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/terms"))); - items.add(new TextItem(R.string.settings_privacy_policy, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/terms"))); + items.add(new HeaderItem(R.string.settings_account)); + items.add(new TextItem(R.string.sk_settings_profile, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/settings/profile"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.sk_settings_posting, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/settings/preferences/other"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.sk_settings_filters, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/filters"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.sk_settings_auth, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/auth/edit"), R.drawable.ic_fluent_open_24_regular)); - items.add(new RedHeaderItem(R.string.settings_spicy)); + Instance instance = AccountSessionManager.getInstance().getInstanceInfo(session.domain); + items.add(new HeaderItem(instance != null ? instance.title : session.domain)); + items.add(new TextItem(R.string.sk_settings_rules, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/about"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.settings_tos, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/terms"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.settings_privacy_policy, ()->UiUtils.launchWebBrowser(getActivity(), "https://"+session.domain+"/terms"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.log_out, this::confirmLogOut, R.drawable.ic_fluent_sign_out_24_regular)); + + items.add(new HeaderItem(R.string.sk_settings_about)); + items.add(new TextItem(R.string.sk_settings_contribute, ()->UiUtils.launchWebBrowser(getActivity(), "https://github.com/sk22/megalodon"), R.drawable.ic_fluent_open_24_regular)); + items.add(new TextItem(R.string.sk_settings_donate, ()->UiUtils.launchWebBrowser(getActivity(), "https://ko-fi.com/xsk22"), R.drawable.ic_fluent_open_24_regular)); if (GithubSelfUpdater.needSelfUpdating()) { checkForUpdateItem = new TextItem(R.string.sk_check_for_update, GithubSelfUpdater.getInstance()::checkForUpdates); items.add(checkForUpdateItem); } - items.add(new TextItem(R.string.sk_settings_contribute, ()->UiUtils.launchWebBrowser(getActivity(), "https://github.com/sk22/megalodon"))); items.add(new TextItem(R.string.settings_clear_cache, this::clearImageCache)); items.add(new TextItem(R.string.sk_clear_recent_languages, ()->UiUtils.showConfirmationAlert(getActivity(), R.string.sk_clear_recent_languages, R.string.sk_confirm_clear_recent_languages, R.string.clear, ()->{ GlobalUserPreferences.recentLanguages.remove(accountID); GlobalUserPreferences.save(); }))); - items.add(new TextItem(R.string.log_out, this::confirmLogOut)); items.add(new FooterItem(getString(R.string.sk_settings_app_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE))); } @@ -438,6 +447,10 @@ public class SettingsFragment extends MastodonToolbarFragment{ this.text=getString(text); } + public HeaderItem(String text) { + this.text=text; + } + @Override public int getViewType(){ return 0; @@ -499,15 +512,25 @@ public class SettingsFragment extends MastodonToolbarFragment{ private String text; private Runnable onClick; private boolean loading; + private int icon; public TextItem(@StringRes int text, Runnable onClick) { - this(text, onClick, false); + this(text, onClick, false, 0); } - public TextItem(@StringRes int text, Runnable onClick, boolean loading){ + public TextItem(@StringRes int text, Runnable onClick, boolean loading) { + this(text, onClick, loading, 0); + } + + public TextItem(@StringRes int text, Runnable onClick, @DrawableRes int icon) { + this(text, onClick, false, icon); + } + + public TextItem(@StringRes int text, Runnable onClick, boolean loading, @DrawableRes int icon){ this.text=getString(text); this.onClick=onClick; this.loading=loading; + this.icon=icon; } @Override @@ -773,17 +796,20 @@ public class SettingsFragment extends MastodonToolbarFragment{ private class TextViewHolder extends BindableViewHolder implements UsableRecyclerView.Clickable{ private final TextView text; private final ProgressBar progress; + private final ImageView icon; public TextViewHolder(){ super(getActivity(), R.layout.item_settings_text, list); text = itemView.findViewById(R.id.text); progress = itemView.findViewById(R.id.progress); + icon = itemView.findViewById(R.id.icon); } @Override public void onBind(TextItem item){ text.setText(item.text); progress.animate().alpha(item.loading ? 1 : 0); + if (item.icon != 0) icon.setImageDrawable(getActivity().getTheme().getDrawable(item.icon)); } @Override diff --git a/mastodon/src/main/res/drawable/ic_fluent_open_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_open_24_regular.xml new file mode 100644 index 000000000..e18fe0aed --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_open_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/res/drawable/ic_fluent_sign_out_24_regular.xml b/mastodon/src/main/res/drawable/ic_fluent_sign_out_24_regular.xml new file mode 100644 index 000000000..d20ea1330 --- /dev/null +++ b/mastodon/src/main/res/drawable/ic_fluent_sign_out_24_regular.xml @@ -0,0 +1,3 @@ + + + diff --git a/mastodon/src/main/res/layout/item_settings_text.xml b/mastodon/src/main/res/layout/item_settings_text.xml index affa2bb5f..aba038361 100644 --- a/mastodon/src/main/res/layout/item_settings_text.xml +++ b/mastodon/src/main/res/layout/item_settings_text.xml @@ -27,4 +27,8 @@ android:layout_gravity="center" android:alpha="0" /> + \ No newline at end of file diff --git a/mastodon/src/main/res/values/strings_sk.xml b/mastodon/src/main/res/values/strings_sk.xml index 1bdb2145b..75d02586a 100644 --- a/mastodon/src/main/res/values/strings_sk.xml +++ b/mastodon/src/main/res/values/strings_sk.xml @@ -63,4 +63,11 @@ example.social \@megalodon Disable swiping between tabs + Set up profile + Posting preferences + Configure filters + Security settings + Rules + About the app + Donate