diff --git a/frontend/ui/data/creoptions.lua b/frontend/ui/data/creoptions.lua
index 9e979b6d8..38be22113 100644
--- a/frontend/ui/data/creoptions.lua
+++ b/frontend/ui/data/creoptions.lua
@@ -22,19 +22,48 @@ local CreOptions = {
{
name = "rotation_mode",
name_text = _("Rotation"),
- item_icons = {
- "rotation.90CCW",
- "rotation.0UR",
- "rotation.90CW",
- "rotation.180UD",
- },
+ item_icons_func = function()
+ if Screen:getRotationMode() == Screen.ORIENTATION_PORTRAIT then
+ -- P, 0UR
+ return {
+ "rotation.P.90CCW",
+ "rotation.P.0UR",
+ "rotation.P.90CW",
+ "rotation.P.180UD",
+ }
+ elseif Screen:getRotationMode() == Screen.ORIENTATION_PORTRAIT_ROTATED then
+ -- P, 180UD
+ return {
+ "rotation.P.90CW",
+ "rotation.P.180UD",
+ "rotation.P.90CCW",
+ "rotation.P.0UR",
+ }
+ elseif Screen:getRotationMode() == Screen.ORIENTATION_LANDSCAPE then
+ -- L, 90CW
+ return {
+ "rotation.L.90CCW",
+ "rotation.L.0UR",
+ "rotation.L.90CW",
+ "rotation.L.180UD",
+ }
+ else
+ -- L, 90CCW
+ return {
+ "rotation.L.90CW",
+ "rotation.L.180UD",
+ "rotation.L.90CCW",
+ "rotation.L.0UR",
+ }
+ end
+ end,
-- For Dispatcher's sake
labels = {C_("Rotation", "⤹ 90°"), C_("Rotation", "↑ 0°"), C_("Rotation", "⤸ 90°"), C_("Rotation", "↓ 180°")},
alternate = false,
values = {Screen.ORIENTATION_LANDSCAPE_ROTATED, Screen.ORIENTATION_PORTRAIT, Screen.ORIENTATION_LANDSCAPE, Screen.ORIENTATION_PORTRAIT_ROTATED},
args = {Screen.ORIENTATION_LANDSCAPE_ROTATED, Screen.ORIENTATION_PORTRAIT, Screen.ORIENTATION_LANDSCAPE, Screen.ORIENTATION_PORTRAIT_ROTATED},
default_arg = 0,
- current_func = function() return Device.screen:getRotationMode() end,
+ current_func = function() return Screen:getRotationMode() end,
event = "SetRotationMode",
name_text_hold_callback = optionsutil.showValues,
},
@@ -50,7 +79,7 @@ local CreOptions = {
--[[ Commented out, to have it also available in portrait mode
current_func = function()
-- If not in landscape mode, shows "1" as selected
- if Device.screen:getScreenMode() ~= "landscape" then
+ if Screen:getScreenMode() ~= "landscape" then
return 1
end
-- if we return nil, ConfigDialog will pick the one from the
@@ -59,7 +88,7 @@ local CreOptions = {
]]--
enabled_func = function(configurable)
return optionsutil.enableIfEquals(configurable, "view_mode", 0) -- "page" mode
- -- and Device.screen:getScreenMode() == "landscape"
+ -- and Screen:getScreenMode() == "landscape"
end,
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Render the document on half the screen width and display two pages at once with a single page number. This makes it look like two columns.
@@ -602,7 +631,7 @@ Whether enabled or disabled, KOReader's own status bar at the bottom of the scre
args = {true, false},
default_arg = nil,
event = "ToggleNightmodeImages",
- show_func = function() return Device.screen.night_mode end,
+ show_func = function() return Screen.night_mode end,
name_text_hold_callback = optionsutil.showValues,
help_text = _([[Disable the automagic inversion of images when nightmode is enabled. Useful if your book contains mainly inlined mathematical content or scene break art.]]),
},
diff --git a/frontend/ui/data/koptoptions.lua b/frontend/ui/data/koptoptions.lua
index ab7ac3695..53c86662c 100644
--- a/frontend/ui/data/koptoptions.lua
+++ b/frontend/ui/data/koptoptions.lua
@@ -29,12 +29,41 @@ local KoptOptions = {
{
name = "rotation_mode",
name_text = _("Rotation"),
- item_icons = {
- "rotation.90CCW",
- "rotation.0UR",
- "rotation.90CW",
- "rotation.180UD",
- },
+ item_icons_func = function()
+ if Screen:getRotationMode() == Screen.ORIENTATION_PORTRAIT then
+ -- P, 0UR
+ return {
+ "rotation.P.90CCW",
+ "rotation.P.0UR",
+ "rotation.P.90CW",
+ "rotation.P.180UD",
+ }
+ elseif Screen:getRotationMode() == Screen.ORIENTATION_PORTRAIT_ROTATED then
+ -- P, 180UD
+ return {
+ "rotation.P.90CW",
+ "rotation.P.180UD",
+ "rotation.P.90CCW",
+ "rotation.P.0UR",
+ }
+ elseif Screen:getRotationMode() == Screen.ORIENTATION_LANDSCAPE then
+ -- L, 90CW
+ return {
+ "rotation.L.90CCW",
+ "rotation.L.0UR",
+ "rotation.L.90CW",
+ "rotation.L.180UD",
+ }
+ else
+ -- L, 90CCW
+ return {
+ "rotation.L.90CW",
+ "rotation.L.180UD",
+ "rotation.L.90CCW",
+ "rotation.L.0UR",
+ }
+ end
+ end,
-- For Dispatcher's sake
labels = {C_("Rotation", "⤹ 90°"), C_("Rotation", "↑ 0°"), C_("Rotation", "⤸ 90°"), C_("Rotation", "↓ 180°")},
alternate = false,
diff --git a/frontend/ui/widget/configdialog.lua b/frontend/ui/widget/configdialog.lua
index 54eeac302..0701321a6 100644
--- a/frontend/ui/widget/configdialog.lua
+++ b/frontend/ui/widget/configdialog.lua
@@ -486,8 +486,11 @@ function ConfigOption:init()
end
-- Icons (ex: columns, text align, with PDF)
- if self.options[c].item_icons then
- local items_count = #self.options[c].item_icons
+ local item_icons = self.options[c].item_icons_func and
+ self.options[c].item_icons_func(self.config.configurable, self.config.document) or
+ self.options[c].item_icons
+ if item_icons then
+ local items_count = #item_icons
local icon_max_height = math.min(option_height, max_icon_height)
local icon_max_width = math.floor(option_widget_width / items_count)
local icon_size = math.min(icon_max_height, icon_max_width)
@@ -497,17 +500,17 @@ function ConfigOption:init()
-- We don't want the underline to be that far away from the image content,
-- so we use some negative padding to eat a bit on their padding.
local underline_padding = - math.floor(0.05 * icon_size)
- for d = 1, #self.options[c].item_icons do
+ for d = 1, items_count do
local option_item = OptionIconItem:new{
icon = IconWidget:new{
- icon = self.options[c].item_icons[d],
+ icon = item_icons[d],
dim = not enabled,
width = icon_size,
height = icon_size,
},
underline_padding = underline_padding,
padding_left = d > 1 and horizontal_half_padding,
- padding_right = d < #self.options[c].item_icons and horizontal_half_padding,
+ padding_right = d < items_count and horizontal_half_padding,
color = d == current_item and (enabled and Blitbuffer.COLOR_BLACK or Blitbuffer.COLOR_DARK_GRAY) or Blitbuffer.COLOR_WHITE,
enabled = enabled,
}
diff --git a/resources/icons/mdlight/rotation.L.0UR.svg b/resources/icons/mdlight/rotation.L.0UR.svg
new file mode 100644
index 000000000..486e4bc5e
--- /dev/null
+++ b/resources/icons/mdlight/rotation.L.0UR.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/resources/icons/mdlight/rotation.L.180UD.svg b/resources/icons/mdlight/rotation.L.180UD.svg
new file mode 100644
index 000000000..22c1bbe47
--- /dev/null
+++ b/resources/icons/mdlight/rotation.L.180UD.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/resources/icons/mdlight/rotation.L.90CCW.svg b/resources/icons/mdlight/rotation.L.90CCW.svg
new file mode 100644
index 000000000..66e7c8975
--- /dev/null
+++ b/resources/icons/mdlight/rotation.L.90CCW.svg
@@ -0,0 +1,84 @@
+
+
diff --git a/resources/icons/mdlight/rotation.L.90CW.svg b/resources/icons/mdlight/rotation.L.90CW.svg
new file mode 100644
index 000000000..b0dcfe6ce
--- /dev/null
+++ b/resources/icons/mdlight/rotation.L.90CW.svg
@@ -0,0 +1,84 @@
+
+
diff --git a/resources/icons/mdlight/rotation.P.0UR.svg b/resources/icons/mdlight/rotation.P.0UR.svg
new file mode 100644
index 000000000..b2363de17
--- /dev/null
+++ b/resources/icons/mdlight/rotation.P.0UR.svg
@@ -0,0 +1,87 @@
+
+
diff --git a/resources/icons/mdlight/rotation.P.180UD.svg b/resources/icons/mdlight/rotation.P.180UD.svg
new file mode 100644
index 000000000..f9095bdf6
--- /dev/null
+++ b/resources/icons/mdlight/rotation.P.180UD.svg
@@ -0,0 +1,89 @@
+
+
diff --git a/resources/icons/mdlight/rotation.P.90CCW.svg b/resources/icons/mdlight/rotation.P.90CCW.svg
new file mode 100644
index 000000000..2dcc0f97e
--- /dev/null
+++ b/resources/icons/mdlight/rotation.P.90CCW.svg
@@ -0,0 +1,83 @@
+
+
diff --git a/resources/icons/mdlight/rotation.P.90CW.svg b/resources/icons/mdlight/rotation.P.90CW.svg
new file mode 100644
index 000000000..6ce053ac1
--- /dev/null
+++ b/resources/icons/mdlight/rotation.P.90CW.svg
@@ -0,0 +1,84 @@
+
+