feat: split status bar setting (#733)

## Summary

This PR aims to reduce the complexity of the status bar by splitting the
setting into 5:
- Chapter Page Count
- Book Progress %
- Progress Bar
- Chapter Title
- Battery Indicator

These are located within the new StausBarSettings activity, which also
shows a preview of the bar the user has created

<img width="513" height="806" alt="image"
src="https://github.com/user-attachments/assets/cdf852fb-15d8-4da2-a74f-fd69294d7b05"
/>


<img width="483" height="797" alt="image"
src="https://github.com/user-attachments/assets/66fc0c0d-ee51-4d31-b70d-e2bc043205d1"
/>


When updating from a previous version, the user's past settings are
honoured.

## Additional Context

The PR aims to remove any duplication of status bar code where possible,
and extracts the status bar rendering into a new component - StatusBar

It also adds a new (optional) padding option to the progress bar to
allow the status bar to be shifted upwards - this is only intended for
use in the settings.

---

### AI Usage

While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code?
No - although did help to decode some C++ errors

---------

Co-authored-by: Arthur Tazhitdinov <lisnake@gmail.com>
This commit is contained in:
James Whyte
2026-02-25 10:06:38 +00:00
committed by GitHub
parent cb72916397
commit 2d49c7b7b4
30 changed files with 505 additions and 300 deletions

View File

@@ -35,7 +35,7 @@ class CrossPointSettings {
SLEEP_SCREEN_COVER_FILTER_COUNT
};
// Status bar display type enum
// Status bar enum - legacy
enum STATUS_BAR_MODE {
NONE = 0,
NO_PROGRESS = 1,
@@ -45,6 +45,19 @@ class CrossPointSettings {
CHAPTER_PROGRESS_BAR = 5,
STATUS_BAR_MODE_COUNT
};
enum STATUS_BAR_PROGRESS_BAR {
BOOK_PROGRESS = 0,
CHAPTER_PROGRESS = 1,
HIDE_PROGRESS = 2,
STATUS_BAR_PROGRESS_BAR_COUNT
};
enum STATUS_BAR_PROGRESS_BAR_THICKNESS {
PROGRESS_BAR_THIN = 0,
PROGRESS_BAR_NORMAL = 1,
PROGRESS_BAR_THICK = 2,
STATUS_BAR_PROGRESS_BAR_THICKNESS_COUNT
};
enum STATUS_BAR_TITLE { BOOK_TITLE = 0, CHAPTER_TITLE = 1, HIDE_TITLE = 2, STATUS_BAR_TITLE_COUNT };
enum ORIENTATION {
PORTRAIT = 0, // 480x800 logical coordinates (current default)
@@ -128,8 +141,14 @@ class CrossPointSettings {
uint8_t sleepScreenCoverMode = FIT;
// Sleep screen cover filter
uint8_t sleepScreenCoverFilter = NO_FILTER;
// Status bar settings
// Status bar settings (statusBar retained for migration only)
uint8_t statusBar = FULL;
uint8_t statusBarChapterPageCount = 1;
uint8_t statusBarBookProgressPercentage = 1;
uint8_t statusBarProgressBar = HIDE_PROGRESS;
uint8_t statusBarProgressBarThickness = PROGRESS_BAR_NORMAL;
uint8_t statusBarTitle = CHAPTER_TITLE;
uint8_t statusBarBattery = 1;
// Text rendering settings
uint8_t extraParagraphSpacing = 1;
uint8_t textAntiAliasing = 1;