From 1fab1f9ec5f49e8cba6fee83e84ce8302890bb47 Mon Sep 17 00:00:00 2001 From: Brackyt <60280126+Brackyt@users.noreply.github.com> Date: Sun, 25 Jan 2026 17:43:10 +0100 Subject: [PATCH] fix: set default theme to original crosspoint ui + add small font + battery icon --- lib/ThemeEngine/include/BasicElements.h | 69 +++ lib/ThemeEngine/include/DefaultTheme.h | 583 +++++++++--------------- lib/ThemeEngine/include/UIElement.h | 1 + lib/ThemeEngine/src/ThemeManager.cpp | 6 + src/activities/home/default.ini | 332 -------------- src/main.cpp | 1 + 6 files changed, 285 insertions(+), 707 deletions(-) delete mode 100644 src/activities/home/default.ini diff --git a/lib/ThemeEngine/include/BasicElements.h b/lib/ThemeEngine/include/BasicElements.h index 5bf1f594..e0032d0b 100644 --- a/lib/ThemeEngine/include/BasicElements.h +++ b/lib/ThemeEngine/include/BasicElements.h @@ -440,4 +440,73 @@ public: } }; +// --- BatteryIcon --- +class BatteryIcon : public UIElement { + Expression valueExpr; + Expression colorExpr; + +public: + BatteryIcon(const std::string &id) : UIElement(id) { + valueExpr = Expression::parse("0"); + colorExpr = Expression::parse("0x00"); // Black by default + } + + ElementType getType() const override { return ElementType::BatteryIcon; } + + void setValue(const std::string &expr) { + valueExpr = Expression::parse(expr); + markDirty(); + } + + void setColor(const std::string &expr) { + colorExpr = Expression::parse(expr); + markDirty(); + } + + void draw(const GfxRenderer &renderer, const ThemeContext &context) override { + if (!isVisible(context)) + return; + + std::string valStr = context.evaluatestring(valueExpr); + int percentage = valStr.empty() ? 0 : std::stoi(valStr); + + std::string colStr = context.evaluatestring(colorExpr); + uint8_t color = Color::parse(colStr).value; + bool black = (color == 0x00); + + constexpr int batteryWidth = 15; + constexpr int batteryHeight = 12; + + int x = absX; + int y = absY; + + if (absW > batteryWidth) + x += (absW - batteryWidth) / 2; + if (absH > batteryHeight) + y += (absH - batteryHeight) / 2; + + renderer.drawLine(x + 1, y, x + batteryWidth - 3, y, black); + renderer.drawLine(x + 1, y + batteryHeight - 1, x + batteryWidth - 3, + y + batteryHeight - 1, black); + renderer.drawLine(x, y + 1, x, y + batteryHeight - 2, black); + renderer.drawLine(x + batteryWidth - 2, y + 1, x + batteryWidth - 2, + y + batteryHeight - 2, black); + + renderer.drawPixel(x + batteryWidth - 1, y + 3, black); + renderer.drawPixel(x + batteryWidth - 1, y + batteryHeight - 4, black); + renderer.drawLine(x + batteryWidth - 0, y + 4, x + batteryWidth - 0, + y + batteryHeight - 5, black); + + if (percentage > 0) { + int filledWidth = percentage * (batteryWidth - 5) / 100 + 1; + if (filledWidth > batteryWidth - 5) { + filledWidth = batteryWidth - 5; + } + renderer.fillRect(x + 2, y + 2, filledWidth, batteryHeight - 4, black); + } + + markClean(); + } +}; + } // namespace ThemeEngine diff --git a/lib/ThemeEngine/include/DefaultTheme.h b/lib/ThemeEngine/include/DefaultTheme.h index 192bbda3..2c5e263b 100644 --- a/lib/ThemeEngine/include/DefaultTheme.h +++ b/lib/ThemeEngine/include/DefaultTheme.h @@ -1,13 +1,23 @@ #pragma once -constexpr const char *DEFAULT_THEME_INI = R"( +// Default theme - matches the original CrossPoint Reader look +// This is embedded in the firmware as a fallback + +namespace ThemeEngine { + +// Use static function for C++14 ODR compatibility +static const char *getDefaultThemeIni() { + static const char *theme = R"INI( ; ============================================ -; Default Theme for CrossPoint Reader +; DEFAULT THEME - Original CrossPoint Reader ; ============================================ +; Screen: 480x800 +; Layout: Centered book card + vertical menu list [Global] FontUI12 = UI_12 FontUI10 = UI_10 +NavBookCount = 1 ; ============================================ ; HOME SCREEN @@ -17,429 +27,252 @@ FontUI10 = UI_10 Type = Container X = 0 Y = 0 -Width = 100% -Height = 100% -Color = white +Width = 480 +Height = 800 +BgColor = white -; --- Status Bar --- -[StatusBar] +; --- Battery (top right) --- +[BatteryWrapper] Parent = Home Type = Container -X = 0 -Y = 10 -Width = 100% -Height = 24 - -[BatteryContainer] -Parent = StatusBar -Type = Container X = 400 -Y = 3 -Width = 28 -Height = 18 +Y = 10 +Width = 80 +Height = 20 [BatteryIcon] -Parent = BatteryContainer -Type = Icon -Src = battery +Parent = BatteryWrapper +Type = BatteryIcon X = 0 -Y = 0 -Width = 28 -Height = 18 +Y = 5 +Width = 15 +Height = 20 +Value = {BatteryPercent} Color = black -; Fill bar inside the battery (positioned inside the battery outline) -[BatteryFill] -Parent = BatteryContainer -Type = ProgressBar -X = 2 -Y = 4 -Width = 20 -Height = 10 -Value = {BatteryPercent} -Max = 100 -FgColor = black -BgColor = white -ShowBorder = false - -[BatteryLabel] -Parent = StatusBar +[BatteryText] +Parent = BatteryWrapper Type = Label -Font = UI_10 +Font = Small Text = {BatteryPercent}% -X = 432 -Y = 3 -Width = 48 -Height = 18 +X = 22 +Y = 0 +Width = 50 +Height = 20 +Align = Left +Visible = {ShowBatteryPercent} -; --- Recent Books Section --- -[RecentBooksSection] +; --- Book Card (centered) --- +; Original: 240x400 at (120, 30) +[BookCard] Parent = Home Type = Container -X = 0 +X = 120 Y = 30 -Width = 100% -Height = 280 -Visible = {HasRecentBooks} +Width = 240 +Height = 400 +Border = true +BgColor = {IsBookSelected ? "black" : "white"} +Visible = {HasBook} -[RecentBooksList] -Parent = RecentBooksSection -Type = List -Source = RecentBooks -ItemTemplate = RecentBookItem -X = 10 -Y = 0 -Width = 460 -Height = 280 -Direction = Horizontal -ItemWidth = 149 -ItemHeight = 270 -Spacing = 8 - -; --- Recent Book Item Template --- -; Based on mockup: 74.5px at 240px scale = 149px at 480px -[RecentBookItem] +; Bookmark ribbon decoration (when no cover) +[BookmarkRibbon] +Parent = BookCard Type = Container -Width = 149 -Height = 270 -Padding = 8 -BgColor = {Item.Selected ? "0xD9" : "white"} -BorderRadius = 12 +X = 200 +Y = 5 +Width = 30 +Height = 60 +BgColor = {IsBookSelected ? "white" : "black"} +Visible = {!HasCover} -[BookCoverImage] -Parent = RecentBookItem -Type = Bitmap -X = 0 -Y = 0 -Width = 133 -Height = 190 -Src = {Item.Image} +[BookmarkNotch] +Parent = BookmarkRibbon +Type = Container +X = 10 +Y = 45 +Width = 10 +Height = 15 +BgColor = {IsBookSelected ? "black" : "white"} -[BookProgressBadge] -Parent = RecentBookItem -Type = Badge -X = 4 -Y = 224 -Text = {Item.Progress}% -Font = UI_10 -BgColor = black -FgColor = white -PaddingH = 6 -PaddingV = 3 - -[BookTitleLabel] -Parent = RecentBookItem -Type = Label -Font = UI_10 -Text = {Item.Title} -X = 0 -Y = 196 -Width = 133 -Height = 22 -Ellipsis = true - -; --- No Recent Books State --- -[EmptyBooksMessage] -Parent = Home +; Title centered in card +[BookTitle] +Parent = BookCard Type = Label Font = UI_12 -Text = No recent books -Centered = true -X = 0 -Y = 100 -Width = 480 -Height = 30 -Visible = {!HasRecentBooks} +Text = {BookTitle} +X = 20 +Y = 150 +Width = 200 +Height = 60 +Color = {IsBookSelected ? "white" : "black"} +Align = center +Ellipsis = true -[EmptyBooksSub] -Parent = Home +[BookAuthor] +Parent = BookCard Type = Label Font = UI_10 -Text = Open a book to start reading -Centered = true -X = 0 -Y = 130 -Width = 480 -Height = 30 -Visible = {!HasRecentBooks} +Text = {BookAuthor} +X = 20 +Y = 210 +Width = 200 +Height = 25 +Color = {IsBookSelected ? "white" : "black"} +Align = center +Ellipsis = true -; --- Main Menu (2-column grid) --- -[MainMenuList] +; "Continue Reading" at bottom of card +[ContinueLabel] +Parent = BookCard +Type = Label +Font = UI_10 +Text = Continue Reading +X = 20 +Y = 365 +Width = 200 +Height = 25 +Color = {IsBookSelected ? "white" : "black"} +Align = center + +; --- No Book Message --- +[NoBookCard] +Parent = Home +Type = Container +X = 120 +Y = 30 +Width = 240 +Height = 400 +Border = true +Visible = {!HasBook} + +[NoBookTitle] +Parent = NoBookCard +Type = Label +Font = UI_12 +Text = No open book +X = 20 +Y = 175 +Width = 200 +Height = 25 +Align = center + +[NoBookSubtitle] +Parent = NoBookCard +Type = Label +Font = UI_10 +Text = Start reading below +X = 20 +Y = 205 +Width = 200 +Height = 25 +Align = center + +; --- Menu List --- +; Original: margin=20, tileWidth=440, tileHeight=45, spacing=8 +; menuStartY = 30 + 400 + 15 = 445 +[MenuList] Parent = Home Type = List Source = MainMenu -ItemTemplate = MainMenuItem -X = 15 -Y = 330 -Width = 450 -Height = 350 -Columns = 2 -ItemHeight = 70 -Spacing = 20 +ItemTemplate = MenuItem +X = 20 +Y = 445 +Width = 440 +Height = 280 +Direction = Vertical +ItemHeight = 45 +Spacing = 8 ; --- Menu Item Template --- -[MainMenuItem] -Type = HStack -Width = 210 -Height = 65 -Spacing = 12 -CenterVertical = true -Padding = 16 -BgColor = {Item.Selected ? "0xD9" : "white"} -BorderRadius = 12 - -[MenuItemIcon] -Parent = MainMenuItem -Type = Icon -Src = {Item.Icon} -Width = 36 -Height = 36 -Color = black +[MenuItem] +Type = Container +Width = 440 +Height = 45 +BgColor = {Item.Selected ? "black" : "white"} +Border = true [MenuItemLabel] -Parent = MainMenuItem +Parent = MenuItem Type = Label -Font = UI_12 +Font = UI_10 Text = {Item.Title} -Width = 150 -Height = 40 -Color = black +X = 0 +Y = 0 +Width = 440 +Height = 45 +Color = {Item.Selected ? "white" : "black"} +Align = center -; --- Bottom Navigation Bar --- -; Positioned at the very bottom of screen, buttons align with physical buttons -[NavBar] +; --- Button Hints (bottom) --- +; Original: 4 buttons at [25, 130, 245, 350], width=106, height=40 +; Y = pageHeight - 40 = 760 + +[HintBtn2] Parent = Home Type = Container -X = 0 -Y = 776 -Width = 100% -Height = 24 - -; Left button group (OK and Back) - aligned with left physical buttons -[NavLeftGroup] -Parent = NavBar -Type = HStack -X = 120 -Y = 0 -Width = 168 -Height = 24 -Spacing = 8 - -[NavBtnBack] -Parent = NavLeftGroup -Type = Container -Width = 80 -Height = 8 -Border = true -BorderRadius = 8 - -[NavBtnOK] -Parent = NavLeftGroup -Type = Container -Width = 80 -Height = 24 -Border = true -BorderRadius = 8 - -[NavBtnOKIcon] -Parent = NavBtnOK -Type = Icon -Src = check -X = 30 -Y = 6 -Width = 20 -Height = 12 - -; Right button group (Up and Down) - aligned with right physical buttons -[NavRightGroup] -Parent = NavBar -Type = HStack -X = 292 -Y = 0 -Width = 168 -Height = 24 -Spacing = 8 - -[NavBtnUp] -Parent = NavRightGroup -Type = Container -Width = 80 -Height = 24 -Border = true -BorderRadius = 8 - -[NavBtnUpIcon] -Parent = NavBtnUp -Type = Icon -Src = up -X = 30 -Y = 6 -Width = 20 -Height = 12 - -[NavBtnDown] -Parent = NavRightGroup -Type = Container -Width = 80 -Height = 24 -Border = true -BorderRadius = 8 - -[NavBtnDownIcon] -Parent = NavBtnDown -Type = Icon -Src = down -X = 30 -Y = 6 -Width = 20 -Height = 12 - -; ============================================ -; SETTINGS SCREEN -; ============================================ - -[Settings] -Type = Container -X = 0 -Y = 0 -Width = 100% -Height = 100% -Color = white - -[SettingsTitle] -Parent = Settings -Type = Label -Font = UI_12 -Text = Settings -X = 15 -Y = 15 -Width = 200 -Height = 30 - -[SettingsTabBar] -Parent = Settings -Type = TabBar -X = 0 -Y = 50 -Width = 100% +X = 130 +Y = 760 +Width = 106 Height = 40 -Selected = {SelectedTab} -IndicatorHeight = 3 -ShowIndicator = true +BgColor = white +Border = true -[TabReading] -Parent = SettingsTabBar +[HintBtn2Label] +Parent = HintBtn2 Type = Label Font = UI_10 -Text = Reading -Centered = true -Height = 35 - -[TabControls] -Parent = SettingsTabBar -Type = Label -Font = UI_10 -Text = Controls -Centered = true -Height = 35 - -[TabDisplay] -Parent = SettingsTabBar -Type = Label -Font = UI_10 -Text = Display -Centered = true -Height = 35 - -[TabSystem] -Parent = SettingsTabBar -Type = Label -Font = UI_10 -Text = System -Centered = true -Height = 35 - -[SettingsList] -Parent = Settings -Type = List -Source = SettingsItems -ItemTemplate = SettingsItem +Text = Confirm X = 0 -Y = 95 -Width = 450 -Height = 650 -ItemHeight = 50 -Spacing = 0 +Y = 0 +Width = 106 +Height = 40 +Align = center -[SettingsScrollIndicator] -Parent = Settings -Type = ScrollIndicator -X = 460 -Y = 100 -Width = 15 -Height = 640 -Position = {ScrollPosition} -Total = {TotalItems} -VisibleCount = {VisibleItems} -TrackWidth = 4 - -; --- Settings Item Template --- -[SettingsItem] +[HintBtn3] +Parent = Home Type = Container -Width = 450 -Height = 48 -Border = false +X = 245 +Y = 760 +Width = 106 +Height = 40 +BgColor = white +Border = true -[SettingsItemBg] -Parent = SettingsItem -Type = Rectangle +[HintBtn3Label] +Parent = HintBtn3 +Type = Label +Font = UI_10 +Text = Up X = 0 Y = 0 -Width = 450 -Height = 45 -Fill = {Item.Selected} -Color = black +Width = 106 +Height = 40 +Align = center -[SettingsItemLabel] -Parent = SettingsItem +[HintBtn4] +Parent = Home +Type = Container +X = 350 +Y = 760 +Width = 106 +Height = 40 +BgColor = white +Border = true + +[HintBtn4Label] +Parent = HintBtn4 Type = Label Font = UI_10 -Text = {Item.Title} -X = 15 +Text = Down +X = 0 Y = 0 -Width = 250 -Height = 45 -Color = {Item.Selected ? white : black} +Width = 106 +Height = 40 +Align = center -[SettingsItemValue] -Parent = SettingsItem -Type = Label -Font = UI_10 -Text = {Item.Value} -X = 270 -Y = 0 -Width = 120 -Height = 45 -Align = Right -Color = {Item.Selected ? white : black} +)INI"; + return theme; +} -[SettingsItemToggle] -Parent = SettingsItem -Type = Toggle -X = 390 -Y = 8 -Width = 50 -Height = 30 -Value = {Item.ToggleValue} -Visible = {Item.HasToggle} - -[SettingsItemDivider] -Parent = SettingsItem -Type = Divider -X = 15 -Y = 46 -Width = 420 -Height = 1 -Horizontal = true -Color = 0x80 -)"; +} // namespace ThemeEngine diff --git a/lib/ThemeEngine/include/UIElement.h b/lib/ThemeEngine/include/UIElement.h index db2393c4..306c4548 100644 --- a/lib/ThemeEngine/include/UIElement.h +++ b/lib/ThemeEngine/include/UIElement.h @@ -153,6 +153,7 @@ public: Toggle, TabBar, Icon, + BatteryIcon, ScrollIndicator }; diff --git a/lib/ThemeEngine/src/ThemeManager.cpp b/lib/ThemeEngine/src/ThemeManager.cpp index da260798..24330167 100644 --- a/lib/ThemeEngine/src/ThemeManager.cpp +++ b/lib/ThemeEngine/src/ThemeManager.cpp @@ -63,6 +63,8 @@ UIElement *ThemeManager::createElement(const std::string &id, return new Icon(id); if (type == "ScrollIndicator") return new ScrollIndicator(id); + if (type == "BatteryIcon") + return new BatteryIcon(id); return nullptr; } @@ -115,6 +117,8 @@ void ThemeManager::applyProperties( static_cast(elem)->setColorExpr(val); } else if (elemType == UIElement::ElementType::Icon) { static_cast(elem)->setColorExpr(val); + } else if (elemType == UIElement::ElementType::BatteryIcon) { + static_cast(elem)->setColor(val); } } @@ -273,6 +277,8 @@ void ThemeManager::applyProperties( static_cast(elem)->setValue(val); } else if (elemType == UIElement::ElementType::Toggle) { static_cast(elem)->setValue(val); + } else if (elemType == UIElement::ElementType::BatteryIcon) { + static_cast(elem)->setValue(val); } } else if (key == "Max") { if (elemType == UIElement::ElementType::ProgressBar) { diff --git a/src/activities/home/default.ini b/src/activities/home/default.ini deleted file mode 100644 index 6487e381..00000000 --- a/src/activities/home/default.ini +++ /dev/null @@ -1,332 +0,0 @@ -; ============================================ -; Default Theme for CrossPoint Reader -; ============================================ -; -; ELEMENT TYPES: -; Container - Basic container for grouping elements -; HStack - Horizontal stack layout -; VStack - Vertical stack layout -; Grid - Grid layout with columns -; Rectangle - Rectangle (filled or outlined) -; Label - Text display -; Bitmap - Image display (BMP files) -; Icon - Built-in icons or small images -; List - Repeating items (vertical, horizontal, or grid) -; Badge - Small text overlay/tag -; Toggle - On/off switch -; TabBar - Tab selection bar -; ProgressBar - Progress indicator -; Divider - Horizontal/vertical line -; ScrollIndicator - Scroll position indicator -; -; BUILT-IN ICONS: -; heart, book, books, folder, files, settings, gear, -; transfer, send, library, device, battery, check, -; back, left, up, down -; -; EXPRESSIONS: -; {Variable} - Variable substitution -; {!Variable} - Boolean negation -; {A && B} - Boolean AND -; {A || B} - Boolean OR -; {A == B} - Equality -; {A != B} - Inequality -; {A < B}, {A > B} - Comparisons -; {Cond ? True : False} - Ternary -; -; DIMENSIONS: -; 100 - Absolute pixels -; 50% - Percentage of parent -; -; COLORS: -; 0x00, black - Black -; 0xFF, white - White - -[Global] -FontUI12 = UI_12 -FontUI10 = UI_10 - -; ============================================ -; HOME SCREEN -; ============================================ - -[Home] -Type = Container -X = 0 -Y = 0 -Width = 100% -Height = 100% -Color = white - -; --- Status Bar --- -[StatusBar] -Parent = Home -Type = Container -X = 0 -Y = 10 -Width = 100% -Height = 24 - -[BatteryContainer] -Parent = StatusBar -Type = Container -X = 400 -Y = 3 -Width = 28 -Height = 18 - -[BatteryIcon] -Parent = BatteryContainer -Type = Icon -Src = battery -X = 0 -Y = 0 -Width = 28 -Height = 18 -Color = black - -; Fill bar inside the battery (positioned inside the battery outline) -[BatteryFill] -Parent = BatteryContainer -Type = ProgressBar -X = 2 -Y = 4 -Width = 20 -Height = 10 -Value = {BatteryPercent} -Max = 100 -FgColor = black -BgColor = white -ShowBorder = false - -[BatteryLabel] -Parent = StatusBar -Type = Label -Font = UI_10 -Text = {BatteryPercent}% -X = 432 -Y = 3 -Width = 48 -Height = 18 - -; --- Recent Books Section --- -[RecentBooksSection] -Parent = Home -Type = Container -X = 0 -Y = 30 -Width = 100% -Height = 280 -Visible = {HasRecentBooks} - -[RecentBooksList] -Parent = RecentBooksSection -Type = List -Source = RecentBooks -ItemTemplate = RecentBookItem -X = 10 -Y = 0 -Width = 460 -Height = 280 -Direction = Horizontal -ItemWidth = 149 -ItemHeight = 270 -Spacing = 8 - -; --- Recent Book Item Template --- -; Based on mockup: 74.5px at 240px scale = 149px at 480px -[RecentBookItem] -Type = Container -Width = 149 -Height = 270 -Padding = 8 -BgColor = {Item.Selected ? "0xD9" : "white"} -BorderRadius = 12 - -[BookCoverImage] -Parent = RecentBookItem -Type = Bitmap -X = 0 -Y = 0 -Width = 133 -Height = 190 -Src = {Item.Image} - -[BookProgressBadge] -Parent = RecentBookItem -Type = Badge -X = 4 -Y = 224 -Text = {Item.Progress}% -Font = UI_10 -BgColor = black -FgColor = white -PaddingH = 6 -PaddingV = 3 - -[BookTitleLabel] -Parent = RecentBookItem -Type = Label -Font = UI_10 -Text = {Item.Title} -X = 0 -Y = 196 -Width = 133 -Height = 22 -Ellipsis = true - -; --- No Recent Books State --- -[EmptyBooksMessage] -Parent = Home -Type = Label -Font = UI_12 -Text = No recent books -Centered = true -X = 0 -Y = 100 -Width = 480 -Height = 30 -Visible = {!HasRecentBooks} - -[EmptyBooksSub] -Parent = Home -Type = Label -Font = UI_10 -Text = Open a book to start reading -Centered = true -X = 0 -Y = 130 -Width = 480 -Height = 30 -Visible = {!HasRecentBooks} - -; --- Main Menu (2-column grid) --- -[MainMenuList] -Parent = Home -Type = List -Source = MainMenu -ItemTemplate = MainMenuItem -X = 15 -Y = 330 -Width = 450 -Height = 350 -Columns = 2 -ItemHeight = 70 -Spacing = 20 - -; --- Menu Item Template --- -[MainMenuItem] -Type = HStack -Width = 210 -Height = 65 -Spacing = 12 -CenterVertical = true -Padding = 16 -BgColor = {Item.Selected ? "0xD9" : "white"} -BorderRadius = 12 - -[MenuItemIcon] -Parent = MainMenuItem -Type = Icon -Src = {Item.Icon} -Width = 36 -Height = 36 -Color = black - -[MenuItemLabel] -Parent = MainMenuItem -Type = Label -Font = UI_12 -Text = {Item.Title} -Width = 150 -Height = 40 -Color = black - -; --- Bottom Navigation Bar --- -; Positioned at the very bottom of screen, buttons align with physical buttons -[NavBar] -Parent = Home -Type = Container -X = 0 -Y = 776 -Width = 100% -Height = 24 - -; Left button group (OK and Back) - aligned with left physical buttons -[NavLeftGroup] -Parent = NavBar -Type = HStack -X = 120 -Y = 0 -Width = 168 -Height = 24 -Spacing = 8 - -[NavBtnBack] -Parent = NavLeftGroup -Type = Container -Width = 80 -Height = 8 -Border = true -BorderRadius = 8 - -[NavBtnOK] -Parent = NavLeftGroup -Type = Container -Width = 80 -Height = 24 -Border = true -BorderRadius = 8 - -[NavBtnOKIcon] -Parent = NavBtnOK -Type = Icon -Src = check -X = 30 -Y = 6 -Width = 20 -Height = 12 - -; Right button group (Up and Down) - aligned with right physical buttons -[NavRightGroup] -Parent = NavBar -Type = HStack -X = 292 -Y = 0 -Width = 168 -Height = 24 -Spacing = 8 - -[NavBtnUp] -Parent = NavRightGroup -Type = Container -Width = 80 -Height = 24 -Border = true -BorderRadius = 8 - -[NavBtnUpIcon] -Parent = NavBtnUp -Type = Icon -Src = up -X = 30 -Y = 6 -Width = 20 -Height = 12 - -[NavBtnDown] -Parent = NavRightGroup -Type = Container -Width = 80 -Height = 24 -Border = true -BorderRadius = 8 - -[NavBtnDownIcon] -Parent = NavBtnDown -Type = Icon -Src = down -X = 30 -Y = 6 -Width = 20 -Height = 12 diff --git a/src/main.cpp b/src/main.cpp index def0acca..82573e2f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -344,6 +344,7 @@ void setup() { ThemeEngine::ThemeManager::get().begin(); ThemeEngine::ThemeManager::get().registerFont("UI_12", UI_12_FONT_ID); ThemeEngine::ThemeManager::get().registerFont("UI_10", UI_10_FONT_ID); + ThemeEngine::ThemeManager::get().registerFont("Small", SMALL_FONT_ID); ThemeEngine::ThemeManager::get().loadTheme(SETTINGS.themeName); exitActivity();