diff --git a/src/activities/boot_sleep/SleepActivity.cpp b/src/activities/boot_sleep/SleepActivity.cpp index 64fa11d9..88a15aa1 100644 --- a/src/activities/boot_sleep/SleepActivity.cpp +++ b/src/activities/boot_sleep/SleepActivity.cpp @@ -10,13 +10,22 @@ #include "CrossPointSettings.h" #include "CrossPointState.h" +#include "activities/reader/ReaderUtils.h" #include "components/UITheme.h" #include "fontIds.h" #include "images/Logo120.h" void SleepActivity::onEnter() { Activity::onEnter(); - GUI.drawPopup(renderer, tr(STR_ENTERING_SLEEP)); + + // Show popup with reader orientation only when going to sleep from reader + if (APP_STATE.lastSleepFromReader) { + ReaderUtils::applyOrientation(renderer, SETTINGS.orientation); + GUI.drawPopup(renderer, tr(STR_ENTERING_SLEEP)); + renderer.setOrientation(GfxRenderer::Orientation::Portrait); + } else { + GUI.drawPopup(renderer, tr(STR_ENTERING_SLEEP)); + } switch (SETTINGS.sleepScreen) { case (CrossPointSettings::SLEEP_SCREEN_MODE::BLANK): diff --git a/src/activities/reader/EpubReaderChapterSelectionActivity.h b/src/activities/reader/EpubReaderChapterSelectionActivity.h index 20b53aa4..216eadf4 100644 --- a/src/activities/reader/EpubReaderChapterSelectionActivity.h +++ b/src/activities/reader/EpubReaderChapterSelectionActivity.h @@ -32,4 +32,5 @@ class EpubReaderChapterSelectionActivity final : public Activity { void onExit() override; void loop() override; void render(RenderLock&&) override; + bool isReaderActivity() const override { return true; } }; diff --git a/src/activities/reader/EpubReaderFootnotesActivity.h b/src/activities/reader/EpubReaderFootnotesActivity.h index 7336d038..85fe692d 100644 --- a/src/activities/reader/EpubReaderFootnotesActivity.h +++ b/src/activities/reader/EpubReaderFootnotesActivity.h @@ -19,6 +19,7 @@ class EpubReaderFootnotesActivity final : public Activity { void onExit() override; void loop() override; void render(RenderLock&&) override; + bool isReaderActivity() const override { return true; } private: const std::vector& footnotes; diff --git a/src/activities/reader/EpubReaderMenuActivity.h b/src/activities/reader/EpubReaderMenuActivity.h index 9ddba93d..3937d62c 100644 --- a/src/activities/reader/EpubReaderMenuActivity.h +++ b/src/activities/reader/EpubReaderMenuActivity.h @@ -32,6 +32,7 @@ class EpubReaderMenuActivity final : public Activity { void onExit() override; void loop() override; void render(RenderLock&&) override; + bool isReaderActivity() const override { return true; } private: struct MenuItem { diff --git a/src/activities/reader/EpubReaderPercentSelectionActivity.h b/src/activities/reader/EpubReaderPercentSelectionActivity.h index 8cba8664..ad68fc32 100644 --- a/src/activities/reader/EpubReaderPercentSelectionActivity.h +++ b/src/activities/reader/EpubReaderPercentSelectionActivity.h @@ -15,6 +15,7 @@ class EpubReaderPercentSelectionActivity final : public Activity { void onExit() override; void loop() override; void render(RenderLock&&) override; + bool isReaderActivity() const override { return true; } private: // Current percent value (0-100) shown on the slider. diff --git a/src/activities/reader/KOReaderSyncActivity.h b/src/activities/reader/KOReaderSyncActivity.h index 71bdbf2f..afd331ec 100644 --- a/src/activities/reader/KOReaderSyncActivity.h +++ b/src/activities/reader/KOReaderSyncActivity.h @@ -38,6 +38,7 @@ class KOReaderSyncActivity final : public Activity { void loop() override; void render(RenderLock&&) override; bool preventAutoSleep() override { return state == CONNECTING || state == SYNCING; } + bool isReaderActivity() const override { return true; } private: enum State { diff --git a/src/activities/reader/QrDisplayActivity.h b/src/activities/reader/QrDisplayActivity.h index 3cfdb6b3..d6ff236a 100644 --- a/src/activities/reader/QrDisplayActivity.h +++ b/src/activities/reader/QrDisplayActivity.h @@ -14,6 +14,7 @@ class QrDisplayActivity final : public Activity { void onExit() override; void loop() override; void render(RenderLock&&) override; + bool isReaderActivity() const override { return true; } private: std::string textPayload; diff --git a/src/components/themes/BaseTheme.cpp b/src/components/themes/BaseTheme.cpp index 0d6dcd33..dff5ec06 100644 --- a/src/components/themes/BaseTheme.cpp +++ b/src/components/themes/BaseTheme.cpp @@ -648,7 +648,8 @@ void BaseTheme::drawButtonMenu(GfxRenderer& renderer, Rect rect, int buttonCount Rect BaseTheme::drawPopup(const GfxRenderer& renderer, const char* message) const { constexpr int margin = 15; - constexpr int y = 60; + // Scale y position proportionally to screen height (7.5% from top) + const int y = static_cast(renderer.getScreenHeight() * 0.075f); const int textWidth = renderer.getTextWidth(UI_12_FONT_ID, message, EpdFontFamily::BOLD); const int textHeight = renderer.getLineHeight(UI_12_FONT_ID); const int w = textWidth + margin * 2; diff --git a/src/components/themes/lyra/LyraTheme.cpp b/src/components/themes/lyra/LyraTheme.cpp index e2451f68..56903f89 100644 --- a/src/components/themes/lyra/LyraTheme.cpp +++ b/src/components/themes/lyra/LyraTheme.cpp @@ -541,7 +541,8 @@ void LyraTheme::drawButtonMenu(GfxRenderer& renderer, Rect rect, int buttonCount } Rect LyraTheme::drawPopup(const GfxRenderer& renderer, const char* message) const { - constexpr int y = 132; + // Scale y position proportionally to screen height (16.5% from top) + const int y = static_cast(renderer.getScreenHeight() * 0.165f); constexpr int outline = 2; const int textWidth = renderer.getTextWidth(UI_12_FONT_ID, message, EpdFontFamily::REGULAR); const int textHeight = renderer.getLineHeight(UI_12_FONT_ID);