From debf5dc550b6c38af65f5cb059b69119c1499f95 Mon Sep 17 00:00:00 2001 From: zwim <36999612+zwim@users.noreply.github.com> Date: Thu, 2 Sep 2021 22:44:22 +0200 Subject: [PATCH] Footer: add Warmth as footer item (#8060) --- frontend/apps/reader/modules/readerfooter.lua | 25 +++++++++++++++++++ frontend/device/android/powerd.lua | 1 + frontend/device/cervantes/powerd.lua | 6 +++++ frontend/device/devicelistener.lua | 2 +- frontend/device/kobo/powerd.lua | 9 +++++++ frontend/device/pocketbook/powerd.lua | 7 ++++++ frontend/device/sdl/powerd.lua | 6 +++++ 7 files changed, 55 insertions(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index cc410e3cb..4f1682941 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -43,6 +43,7 @@ local MODE = { book_chapter = 13, bookmark_count = 14, chapter_progress = 15, + frontlight_warmth = 16, } local symbol_prefix = { @@ -62,6 +63,8 @@ local symbol_prefix = { chapter_time_to_read = C_("FooterLetterPrefix", "TC:"), -- @translators This is the footer letter prefix for frontlight level. frontlight = C_("FooterLetterPrefix", "L:"), + -- @translators This is the footer letter prefix for frontlight warmth (redshift). + frontlight_warmth = C_("FooterLetterPrefix", "R:"), -- @translators This is the footer letter prefix for memory usage. mem_usage = C_("FooterLetterPrefix", "M:"), -- @translators This is the footer letter prefix for Wi-Fi status. @@ -77,6 +80,7 @@ local symbol_prefix = { book_time_to_read = "⏳", chapter_time_to_read = BD.mirroredUILayout() and "⥖" or "⤻", frontlight = "☼", + frontlight_warmth = "💡", mem_usage = "", wifi_status = "", wifi_status_off = "", @@ -144,6 +148,23 @@ local footerTextGeneratorMap = { end end end, + frontlight_warmth = function(footer) + local symbol_type = footer.settings.item_prefix + local prefix = symbol_prefix[symbol_type].frontlight_warmth + local powerd = Device:getPowerDevice() + if powerd:isFrontlightOn() then + local warmth = powerd:getWarmth() + if warmth then + return (prefix .. " %d%%"):format(warmth) + end + else + if footer.settings.all_at_once and footer.settings.hide_empty_generators then + return "" + else + return T(_("%1 Off"), prefix) + end + end + end, battery = function(footer) local symbol_type = footer.settings.item_prefix local prefix = symbol_prefix[symbol_type].battery @@ -869,6 +890,7 @@ function ReaderFooter:textOptionTitles(option) and T(_("Book time to read (%1)"),symbol_prefix[symbol].book_time_to_read) or _("Book time to read"), chapter_time_to_read = T(_("Chapter time to read (%1)"), symbol_prefix[symbol].chapter_time_to_read), frontlight = T(_("Frontlight level (%1)"), symbol_prefix[symbol].frontlight), + frontlight_warmth = T(_("Frontlight warmth (%1)"), symbol_prefix[symbol].frontlight_warmth), mem_usage = T(_("KOReader memory usage (%1)"), symbol_prefix[symbol].mem_usage), wifi_status = T(_("Wi-Fi status (%1)"), symbol_prefix[symbol].wifi_status), book_title = _("Book title"), @@ -1788,6 +1810,9 @@ With this enabled, the current page is included, so the count goes from n to 1 i if Device:hasFrontlight() then table.insert(sub_items, getMinibarOption("frontlight")) end + if Device:hasNaturalLight() then + table.insert(sub_items, getMinibarOption("frontlight_warmth")) + end table.insert(sub_items, getMinibarOption("mem_usage")) if Device:hasFastWifiStatusQuery() then table.insert(sub_items, getMinibarOption("wifi_status")) diff --git a/frontend/device/android/powerd.lua b/frontend/device/android/powerd.lua index a910c23f9..f81a5b028 100644 --- a/frontend/device/android/powerd.lua +++ b/frontend/device/android/powerd.lua @@ -50,6 +50,7 @@ function AndroidPowerD:setWarmth(warmth) self.fl_warmth = warmth local new_warmth = math.floor(warmth * self.fl_warmth_max / 100) android.setScreenWarmth(new_warmth) + self:stateChanged() end function AndroidPowerD:getWarmth() diff --git a/frontend/device/cervantes/powerd.lua b/frontend/device/cervantes/powerd.lua index 56d42e9fe..ab179f593 100644 --- a/frontend/device/cervantes/powerd.lua +++ b/frontend/device/cervantes/powerd.lua @@ -146,6 +146,12 @@ function CervantesPowerD:setWarmth(warmth) end self.fl_warmth = warmth or self.fl_warmth self.fl:setWarmth(self.fl_warmth) + self:stateChanged() +end + +function CervantesPowerD:getWarmth() + if self.fl == nil then return end + return self.fl_warmth end function CervantesPowerD:calculateAutoWarmth() diff --git a/frontend/device/devicelistener.lua b/frontend/device/devicelistener.lua index 7a13786be..48845a6e2 100644 --- a/frontend/device/devicelistener.lua +++ b/frontend/device/devicelistener.lua @@ -60,7 +60,7 @@ function DeviceListener:onShowWarmth(value) if powerd.fl_warmth ~= nil then -- powerd.fl_warmth holds the warmth-value in the internal koreader scale [0,100] -- powerd.fl_warmth_max is the maximum value the hardware accepts - Notification:notify(T(_("Warmth set to %1."), math.floor(powerd.fl_warmth/100*powerd.fl_warmth_max))) + Notification:notify(T(_("Warmth set to %1%."), math.floor(powerd.fl_warmth))) end return true end diff --git a/frontend/device/kobo/powerd.lua b/frontend/device/kobo/powerd.lua index af5d429a7..16b9ea0a1 100644 --- a/frontend/device/kobo/powerd.lua +++ b/frontend/device/kobo/powerd.lua @@ -252,6 +252,7 @@ function KoboPowerD:setWarmth(warmth) if self.fl == nil then return end if not warmth and self.auto_warmth then self:calculateAutoWarmth() + self:stateChanged() end self.fl_warmth = warmth or self.fl_warmth -- Don't turn the light back on on legacy NaturalLight devices just for the sake of setting the warmth! @@ -259,6 +260,14 @@ function KoboPowerD:setWarmth(warmth) -- On older ones, calling setWarmth *will* actually set the brightness, too! if self.device:hasNaturalLightMixer() or self:isFrontlightOnHW() then self.fl:setWarmth(self.fl_warmth) + self:stateChanged() + end +end + +function KoboPowerD:getWarmth() + if self.fl == nil then return end + if self.device:hasNaturalLight() then + return self.fl_warmth end end diff --git a/frontend/device/pocketbook/powerd.lua b/frontend/device/pocketbook/powerd.lua index 171fa7abf..ad054e1ae 100644 --- a/frontend/device/pocketbook/powerd.lua +++ b/frontend/device/pocketbook/powerd.lua @@ -64,6 +64,13 @@ function PocketBookPowerD:setWarmth(level) if self.fl_warmth then self.fl_warmth = level or self.fl_warmth inkview.SetFrontlightColor(self.fl_warmth) + self:stateChanged() + end +end + +function PocketBookPowerD:getWarmth() + if self.fl_warmth then + return self.fl_warmth end end diff --git a/frontend/device/sdl/powerd.lua b/frontend/device/sdl/powerd.lua index 77263b400..fc56a0430 100644 --- a/frontend/device/sdl/powerd.lua +++ b/frontend/device/sdl/powerd.lua @@ -24,6 +24,12 @@ end function SDLPowerD:setWarmth(level) require("logger").info("set warmth to", level) self.fl_warmth = level or self.fl_warmth + self:stateChanged() +end + +function SDLPowerD:getWarmth() + if self.hw_intensity == 0 then return end + return self.fl_warmth end function SDLPowerD:getCapacityHW()