feat(settings): add giant header

This commit is contained in:
FineFindus 2023-05-17 12:56:19 +02:00
parent f7c76f7503
commit 992fb5fefe
No known key found for this signature in database
GPG Key ID: 64873EE210FF8E6B
2 changed files with 57 additions and 2 deletions

View File

@ -8,7 +8,6 @@ import android.graphics.Canvas;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -131,6 +130,15 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
this.view = view; 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() { protected Instance getInstance() {
return instance; 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 { protected class SmallTextItem extends Item {
private String text; private String text;
@ -364,6 +385,7 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
public enum Type{ public enum Type{
HEADER, HEADER,
RED_HEADER, RED_HEADER,
GIANT_HEADER,
SWITCH, SWITCH,
THEME, THEME,
TEXT, TEXT,
@ -385,6 +407,7 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
return (BindableViewHolder<Item>) switch(Type.values()[viewType]){ return (BindableViewHolder<Item>) switch(Type.values()[viewType]){
case HEADER -> new HeaderViewHolder(); case HEADER -> new HeaderViewHolder();
case RED_HEADER -> new HeaderViewHolder(true); case RED_HEADER -> new HeaderViewHolder(true);
case GIANT_HEADER -> new GiantHeaderViewHolder();
case SWITCH -> new SwitchViewHolder(); case SWITCH -> new SwitchViewHolder();
case THEME -> new ThemeViewHolder(); case THEME -> new ThemeViewHolder();
case TEXT -> new TextViewHolder(); case TEXT -> new TextViewHolder();
@ -433,6 +456,24 @@ public abstract class SettingsBaseFragment extends MastodonToolbarFragment imple
} }
} }
private class GiantHeaderViewHolder extends BindableViewHolder<GiantHeaderItem> {
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){ protected void onThemePreferenceClick(GlobalUserPreferences.ThemePreference theme){
GlobalUserPreferences.theme=theme; GlobalUserPreferences.theme=theme;
GlobalUserPreferences.save(); GlobalUserPreferences.save();

View File

@ -1,17 +1,31 @@
package org.joinmastodon.android.fragments.settings; 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 org.joinmastodon.android.R;
import java.util.ArrayList; import java.util.ArrayList;
public class SettingsMainFragment extends SettingsBaseFragment{ public class SettingsMainFragment extends SettingsBaseFragment{
@Override @Override
public void addItems(ArrayList<SettingsBaseFragment.Item> items) { public void addItems(ArrayList<Item> 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_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.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.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_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.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)); 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();
} }
} }