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.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<Item>) 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<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){
GlobalUserPreferences.theme=theme;
GlobalUserPreferences.save();

View File

@ -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<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_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();
}
}