mirror of
https://github.com/koreader/koreader
synced 2024-11-16 06:12:56 +00:00
9826615f06
Something in the gettext/weblate pipeline doesn't like it... These are real unicode codepoints, not custom nerdfont ones, so just render the actual glyph instead of escaping it. Fix #11328 Cf. #10845.
83 lines
3.2 KiB
Lua
83 lines
3.2 KiB
Lua
local Notification = require("ui/widget/notification")
|
|
local TextViewer = require("ui/widget/textviewer")
|
|
local UIManager = require("ui/uimanager")
|
|
local logger = require("logger")
|
|
local _ = require("gettext")
|
|
|
|
local band = bit.band
|
|
local bor = bit.bor
|
|
local bnot = bit.bnot
|
|
|
|
local function getMask()
|
|
return G_reader_settings:readSetting("notification_sources_to_show_mask") or Notification.SOURCE_DEFAULT
|
|
end
|
|
|
|
local function setMask(source)
|
|
logger.dbg(string.format("Notification: Updating display mask from %#x to %#x", getMask(), source))
|
|
G_reader_settings:saveSetting("notification_sources_to_show_mask", source)
|
|
end
|
|
|
|
local function isEnabled(source)
|
|
return band(getMask(), source) == source
|
|
end
|
|
|
|
-- Helper function to avoid repeating boilerplate code, as we just flip a few bits one way or the other
|
|
local function genMenuItem(source, label, help, separator)
|
|
return {
|
|
text = label,
|
|
help_text = help,
|
|
checked_func = function() return isEnabled(source) end,
|
|
callback = function()
|
|
if isEnabled(source) then
|
|
setMask(
|
|
band(getMask(), bnot(source)))
|
|
else
|
|
setMask(
|
|
bor(getMask(), source))
|
|
end
|
|
end,
|
|
separator = separator,
|
|
}
|
|
end
|
|
|
|
-- NOTE: Default is MORE + DISPATCHER; i.e., BOTTOM_MENU_FINE + BOTTOM_MENU_MORE + BOTTOM_MENU_PROGRESS + DISPATCHER
|
|
return {
|
|
text = _("Notifications"),
|
|
help_text = _([[Notification popups may be shown at the top of screen on various occasions.
|
|
This allows selecting which to show or hide.]]),
|
|
checked_func = function()
|
|
local value = G_reader_settings:readSetting("notification_sources_to_show_mask") or Notification.SOURCE_DEFAULT
|
|
return value ~= 0
|
|
end,
|
|
sub_item_table = {
|
|
genMenuItem(Notification.SOURCE_BOTTOM_MENU_ICON, _("From bottom menu icons")),
|
|
genMenuItem(Notification.SOURCE_BOTTOM_MENU_TOGGLE, _("From bottom menu toggles")),
|
|
genMenuItem(Notification.SOURCE_BOTTOM_MENU_FINE, _("From bottom menu ± buttons")), -- Poor man's +/- w/ \u{207a}\u{2044}\u{208b} doesn't look too great because subscript minus sits on the baseline in most fonts...
|
|
genMenuItem(Notification.SOURCE_BOTTOM_MENU_MORE, _("From bottom menu ⋮ buttons")),
|
|
genMenuItem(Notification.SOURCE_BOTTOM_MENU_PROGRESS, _("From bottom menu progress bars")),
|
|
genMenuItem(Notification.SOURCE_DISPATCHER, _("From gestures and profiles")),
|
|
genMenuItem(Notification.SOURCE_OTHER, _("From all other sources"), nil, true),
|
|
{
|
|
text = _("Show past notifications"),
|
|
callback = function()
|
|
local content = require("ui/widget/notification"):getPastMessages()
|
|
|
|
if not content or #content == 0 then
|
|
content = _("No notifications available.")
|
|
else
|
|
content = table.concat(content, "\n")
|
|
end
|
|
|
|
local textviewer
|
|
textviewer = TextViewer:new{
|
|
title = _("Past notifications"),
|
|
text = content,
|
|
justified = false,
|
|
}
|
|
UIManager:show(textviewer)
|
|
end,
|
|
keep_menu_open = true,
|
|
},
|
|
}
|
|
}
|