local Device = require("device")
local Event = require("ui/event")
local UIManager = require("ui/uimanager")
local _ = require("gettext")

-- This whole menu is hidden behind a hasKeys device cap.
local PhysicalButtons = {
    text = _("Physical buttons"), -- Mainly so as to differentiate w/ "Page Turns" when in readermenu...
    sub_item_table = {
        {
            text = _("Invert page-turn buttons"),
            enabled_func = function()
                return not (G_reader_settings:isTrue("input_invert_left_page_turn_keys") or G_reader_settings:isTrue("input_invert_right_page_turn_keys"))
            end,
            checked_func = function()
                return G_reader_settings:isTrue("input_invert_page_turn_keys")
            end,
            callback = function()
                UIManager:broadcastEvent(Event:new("SwapPageTurnButtons"))
            end,
            separator = true,
        }
    },
}

if Device:hasDPad() and Device:useDPadAsActionKeys() then
    table.insert(PhysicalButtons.sub_item_table, {
        text = _("Invert left-side page-turn buttons"),
        enabled_func = function()
            return not G_reader_settings:isTrue("input_invert_page_turn_keys")
        end,
        checked_func = function()
            return G_reader_settings:isTrue("input_invert_left_page_turn_keys")
        end,
        callback = function()
            UIManager:broadcastEvent(Event:new("SwapPageTurnButtons", "left"))
        end,
    })
    table.insert(PhysicalButtons.sub_item_table, {
        text = _("Invert right-side page-turn buttons"),
        enabled_func = function()
            return not G_reader_settings:isTrue("input_invert_page_turn_keys")
        end,
        checked_func = function()
            return G_reader_settings:isTrue("input_invert_right_page_turn_keys")
        end,
        callback = function()
            UIManager:broadcastEvent(Event:new("SwapPageTurnButtons", "right"))
        end,
        separator = true,
    })
    table.insert(PhysicalButtons.sub_item_table, {
        text = _("Use left and right keys for page turning"),
        checked_func = function()
            return G_reader_settings:isTrue("left_right_keys_turn_pages")
        end,
        callback = function()
            G_reader_settings:flipNilOrFalse("left_right_keys_turn_pages")
            UIManager:askForRestart()
        end,
    })
end

if Device:canKeyRepeat() then
    table.insert(PhysicalButtons.sub_item_table, 1, {
        text = _("Disable key repeat"),
        help_text = _("Useful if you don't like the behavior or if your device has faulty switches"),
        checked_func = function()
            return G_reader_settings:isTrue("input_no_key_repeat")
        end,
        callback = function()
            UIManager:broadcastEvent(Event:new("ToggleKeyRepeat"))
        end,
        separator = true,
    })
end

return PhysicalButtons
