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 31579b98b..3e2c13790 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -18,6 +18,8 @@ import android.view.WindowInsets; import android.view.WindowManager; import android.view.animation.LinearInterpolator; import android.widget.Button; +import android.widget.EditText; +import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.PopupMenu; @@ -102,7 +104,25 @@ public class SettingsFragment extends MastodonToolbarFragment{ GlobalUserPreferences.disableMarquee=i.checked; GlobalUserPreferences.save(); })); - items.add(new ColorPicker()); + items.add(new ButtonItem(R.string.sk_settings_color_palette, R.drawable.ic_fluent_color_24_regular, b->{ + PopupMenu popupMenu=new PopupMenu(getActivity(), b, Gravity.CENTER_HORIZONTAL); + popupMenu.inflate(R.menu.color_palettes); + popupMenu.getMenu().findItem(R.id.m3_color).setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.S); + popupMenu.setOnMenuItemClickListener(SettingsFragment.this::onColorPreferenceClick); + b.setOnTouchListener(popupMenu.getDragToOpenListener()); + b.setOnClickListener(v->popupMenu.show()); + b.setText(switch(GlobalUserPreferences.color){ + case MATERIAL3 -> R.string.sk_color_palette_material3; + case PINK -> R.string.sk_color_palette_pink; + case PURPLE -> R.string.sk_color_palette_purple; + case GREEN -> R.string.sk_color_palette_green; + case BLUE -> R.string.sk_color_palette_blue; + case BROWN -> R.string.sk_color_palette_brown; + case RED -> R.string.sk_color_palette_red; + case YELLOW -> R.string.sk_color_palette_yellow; + case NORD -> R.string.sk_color_palette_nord; + }); + })); items.add(new HeaderItem(R.string.settings_behavior)); items.add(new SwitchItem(R.string.settings_gif, R.drawable.ic_fluent_gif_24_regular, GlobalUserPreferences.playGifs, i->{ @@ -248,13 +268,29 @@ public class SettingsFragment extends MastodonToolbarFragment{ restartActivityToApplyNewTheme(); } - private void onColorPreferenceClick(GlobalUserPreferences.ColorPreference color){ + private boolean onColorPreferenceClick(MenuItem item){ + ColorPreference pref = null; + int id = item.getItemId(); - GlobalUserPreferences.color=color; + if (id == R.id.m3_color) pref = ColorPreference.MATERIAL3; + else if (id == R.id.pink_color) pref = ColorPreference.PINK; + else if (id == R.id.purple_color) pref = ColorPreference.PURPLE; + else if (id == R.id.green_color) pref = ColorPreference.GREEN; + else if (id == R.id.blue_color) pref = ColorPreference.BLUE; + else if (id == R.id.brown_color) pref = ColorPreference.BROWN; + else if (id == R.id.red_color) pref = ColorPreference.RED; + else if (id == R.id.yellow_color) pref = ColorPreference.YELLOW; + else if (id == R.id.nord_color) pref = ColorPreference.NORD; + + if (pref == null) return false; + + GlobalUserPreferences.color=pref; GlobalUserPreferences.save(); restartActivityToApplyNewTheme(); + return true; } + private void onTrueBlackThemeChanged(SwitchItem item){ GlobalUserPreferences.trueBlackTheme=item.checked; GlobalUserPreferences.save(); @@ -458,6 +494,23 @@ public class SettingsFragment extends MastodonToolbarFragment{ } } + public class ButtonItem extends Item{ + private int text; + private int icon; + private Consumer