diff --git a/src/main/java/org/saturnclient/config/Theme.java b/src/main/java/org/saturnclient/config/Theme.java index a0b0eaf..a12e97c 100644 --- a/src/main/java/org/saturnclient/config/Theme.java +++ b/src/main/java/org/saturnclient/config/Theme.java @@ -10,26 +10,27 @@ import org.saturnclient.config.property.SelectProperty; public class Theme { public static ConfigManager config; - // Main UI background (slightly warm dark to match Saturn tone), translucent over the world - public static final ColorProperty BACKGROUND = Property.color(0xD112100D); + // Main UI background (a near-neutral dark, so the warm world showing through + // doesn't muddy it), translucent over the world + public static final ColorProperty BACKGROUND = Property.color(0xD1131417); // Default text color - public static final ColorProperty FOREGROUND = Property.color(0xFFF2E6D2); + public static final ColorProperty FOREGROUND = Property.color(0xFFECEFF3); // Widget default background (normal state), translucent over the world - public static final ColorProperty PRIMARY = Property.color(0xB81C1915); + public static final ColorProperty PRIMARY = Property.color(0xB81E2025); // Widget text color - public static final ColorProperty PRIMARY_FG = Property.color(0xFFEAD9B8); + public static final ColorProperty PRIMARY_FG = Property.color(0xFFD5DAE1); - // Saturn brand color (hovered / enabled / selected) - public static final ColorProperty ACCENT = Property.color(0xFFE2BF7D); + // Saturn brand color, a pale frost (hovered / enabled / selected) + public static final ColorProperty ACCENT = Property.color(0xFFD3DCE6); // Text/icons shown on accent background - public static final ColorProperty ACCENT_FG = Property.color(0xFF1A140A); + public static final ColorProperty ACCENT_FG = Property.color(0xFF15181C); - // Misc colors - public static final ColorProperty SCROLL = Property.color(0xFFE2BF7D); + // Misc colors: the one warm touch, Saturn's butterscotch + public static final ColorProperty SCROLL = Property.color(0xFFD9B98A); // UI metrics public static final IntProperty BG_RADIUS = Property.integer(12).range(0, 24); @@ -62,10 +63,11 @@ public class Theme { } public static final List PRESETS = List.of( - new Preset("Saturn", 0xD112100D, 0xFFF2E6D2, 0xB81C1915, 0xFFEAD9B8, 0xFFE2BF7D, 0xFF1A140A, 0xFFE2BF7D), - new Preset("Midnight", 0xD10E1117, 0xFFE4EAF5, 0xB8171C26, 0xFFC9D4E8, 0xFF8FB3FF, 0xFF0A1224, 0xFF8FB3FF), - new Preset("Amethyst", 0xD1120F17, 0xFFEDE4F7, 0xB81C1724, 0xFFD8C9EB, 0xFFC79BFF, 0xFF1A0F2A, 0xFFC79BFF), - new Preset("Emerald", 0xD10D1210, 0xFFE2F2EA, 0xB816201B, 0xFFC4E0D2, 0xFF7FD1A8, 0xFF0A1F15, 0xFF7FD1A8)); + new Preset("Saturn", 0xD1131417, 0xFFECEFF3, 0xB81E2025, 0xFFD5DAE1, 0xFFD3DCE6, 0xFF15181C, 0xFFD9B98A), + new Preset("Saturn Gold", 0xD112100D, 0xFFF2E6D2, 0xB81C1915, 0xFFEAD9B8, 0xFFE2BF7D, 0xFF1A140A, 0xFFE2BF7D), + new Preset("Mono", 0xD1121212, 0xFFF0F0F0, 0xB81C1C1C, 0xFFDADADA, 0xFFF0F0F0, 0xFF121212, 0xFFF0F0F0), + new Preset("Midnight", 0xD1121418, 0xFFE5E9F0, 0xB81C2027, 0xFFD8DEE9, 0xFF8FAFCF, 0xFF10151D, 0xFF8FAFCF), + new Preset("Amethyst", 0xD1141317, 0xFFECE8F1, 0xB81F1D24, 0xFFDAD3E3, 0xFFB49CCB, 0xFF19131F, 0xFFB49CCB)); public static void init(ConfigManager parent) { config = new ConfigManager(parent, "UI Style"); diff --git a/src/main/java/org/saturnclient/ui/components/ThemePresetCard.java b/src/main/java/org/saturnclient/ui/components/ThemePresetCard.java index 0da52e6..f470abd 100644 --- a/src/main/java/org/saturnclient/ui/components/ThemePresetCard.java +++ b/src/main/java/org/saturnclient/ui/components/ThemePresetCard.java @@ -12,6 +12,8 @@ import org.saturnclient.ui.resources.Fonts; */ public class ThemePresetCard extends Element { public static final int HEIGHT = 92; + /** The narrowest card that still fits its preview's widgets */ + public static final int MIN_WIDTH = 100; private static final int PADDING = 10; private static final int PREVIEW_HEIGHT = 44; diff --git a/src/main/java/org/saturnclient/ui/screens/ClientSettings.java b/src/main/java/org/saturnclient/ui/screens/ClientSettings.java index e6cfbb3..bf763f8 100644 --- a/src/main/java/org/saturnclient/ui/screens/ClientSettings.java +++ b/src/main/java/org/saturnclient/ui/screens/ClientSettings.java @@ -102,15 +102,20 @@ public class ClientSettings extends PanelScreen { Map properties = Theme.config.getProperties(); int y = PropertyList.drawSection(scroll, "Presets", 0) + 10; - int cardWidth = (width - PRESET_GAP * (Theme.PRESETS.size() - 1)) / Theme.PRESETS.size(); + // One row when the cards fit, otherwise as many rows as they need + int columns = Math.max(1, Math.min(Theme.PRESETS.size(), + (width + PRESET_GAP) / (ThemePresetCard.MIN_WIDTH + PRESET_GAP))); + int rows = (Theme.PRESETS.size() + columns - 1) / columns; + int cardWidth = (width - PRESET_GAP * (columns - 1)) / columns; for (int i = 0; i < Theme.PRESETS.size(); i++) { // Rebuild so the color inputs show the preset's colors scroll.draw(new ThemePresetCard(Theme.PRESETS.get(i), cardWidth, this::init) - .position(i * (cardWidth + PRESET_GAP), y)); + .position(i % columns * (cardWidth + PRESET_GAP), + y + i / columns * (ThemePresetCard.HEIGHT + PRESET_GAP))); } - y += ThemePresetCard.HEIGHT + SECTION_GAP; + y += rows * ThemePresetCard.HEIGHT + (rows - 1) * PRESET_GAP + SECTION_GAP; y = PropertyList.drawSection(scroll, "Colors", y) + 10; y = ColorGrid.draw(scroll, properties, width, y) + SECTION_GAP;