feat(settings): add giant header
This commit is contained in:
parent
f7c76f7503
commit
992fb5fefe
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue