From 992fb5fefe3b90c3e02795a140711be25b22c480 Mon Sep 17 00:00:00 2001 From: FineFindus Date: Wed, 17 May 2023 12:56:19 +0200 Subject: [PATCH] feat(settings): add giant header --- .../settings/SettingsBaseFragment.java | 43 ++++++++++++++++++- .../settings/SettingsMainFragment.java | 16 ++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBaseFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBaseFragment.java index 8a5ce06ab..6d86abc48 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBaseFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsBaseFragment.java @@ -8,7 +8,6 @@ import android.graphics.Canvas; import android.graphics.Rect; import android.os.Build; import android.os.Bundle; -import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; @@ -131,6 +130,15 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple this.view = view; } + protected void hideToolbar() { + getToolbar().setElevation(0f); + getToolbar().setTitle(""); + TypedValue typedValue = new TypedValue(); + if (getActivity().getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true)) { + getToolbar().setBackgroundColor(typedValue.data); + } + } + protected Instance getInstance() { return instance; } @@ -265,6 +273,19 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple } } + protected class GiantHeaderItem extends Item { + private String text; + + public GiantHeaderItem(String text) { + this.text = text; + } + + @Override + public int getViewType() { + return Type.GIANT_HEADER.ordinal(); + } + } + protected class SmallTextItem extends Item { private String text; @@ -364,6 +385,7 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple public enum Type{ HEADER, RED_HEADER, + GIANT_HEADER, SWITCH, THEME, TEXT, @@ -385,6 +407,7 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple return (BindableViewHolder) switch(Type.values()[viewType]){ case HEADER -> new HeaderViewHolder(); case RED_HEADER -> new HeaderViewHolder(true); + case GIANT_HEADER -> new GiantHeaderViewHolder(); case SWITCH -> new SwitchViewHolder(); case THEME -> new ThemeViewHolder(); case TEXT -> new TextViewHolder(); @@ -433,6 +456,24 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple } } + private class GiantHeaderViewHolder extends BindableViewHolder { + private final TextView text; + + public GiantHeaderViewHolder(){ + super(getActivity(), R.layout.item_settings_text, list); + text = itemView.findViewById(R.id.text); + text.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); + text.setTextSize(TypedValue.COMPLEX_UNIT_SP, 32); + text.setPaddingRelative(text.getPaddingStart(), 0, text.getPaddingEnd(), text.getPaddingBottom()); + } + + @Override + public void onBind(GiantHeaderItem item){ + text.setText(item.text); + } + } + + protected void onThemePreferenceClick(GlobalUserPreferences.ThemePreference theme){ GlobalUserPreferences.theme=theme; GlobalUserPreferences.save(); diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java index eb3ef9f67..a9eb8798d 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/settings/SettingsMainFragment.java @@ -1,17 +1,31 @@ package org.joinmastodon.android.fragments.settings; +import android.graphics.Color; +import android.os.Build; +import android.os.Bundle; +import android.util.TypedValue; +import android.view.View; + import org.joinmastodon.android.R; import java.util.ArrayList; public class SettingsMainFragment extends SettingsBaseFragment{ @Override - public void addItems(ArrayList items) { + public void addItems(ArrayList items) { + items.add(new GiantHeaderItem(getContext().getString(R.string.settings))); items.add(new SettingsCategoryItem(R.string.settings_theme, SettingsAppearanceFragment.class, R.drawable.ic_fluent_color_24_regular)); items.add(new SettingsCategoryItem(R.string.settings_behavior, BehaviourFragment.class, R.drawable.ic_fluent_chat_settings_24_regular)); items.add(new SettingsCategoryItem(R.string.sk_timelines, TimeLineFragment.class, R.drawable.ic_fluent_timeline_24_regular)); items.add(new SettingsCategoryItem(R.string.settings_notifications, NotificationsFragment.class, R.drawable.ic_fluent_alert_28_regular_badged)); items.add(new SettingsCategoryItem(R.string.settings_account, AccountFragment.class, R.drawable.ic_fluent_person_28_regular)); items.add(new SettingsCategoryItem(R.string.sk_settings_about, AboutFragment.class, R.drawable.ic_fluent_info_24_regular)); + + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + hideToolbar(); } }