mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
The release key event will cause the dialog disappear immediately after show up. Also the timeout error is handled with pcall.
59 lines
1.2 KiB
Lua
59 lines
1.2 KiB
Lua
require "widget"
|
|
require "font"
|
|
|
|
InfoMessage = {
|
|
face = Font:getFace("infofont", 25)
|
|
}
|
|
|
|
function InfoMessage:show(text,refresh_mode)
|
|
print("# InfoMessage ", text, refresh_mode)
|
|
local dialog = CenterContainer:new({
|
|
dimen = { w = G_width, h = G_height },
|
|
FrameContainer:new({
|
|
margin = 2,
|
|
background = 0,
|
|
HorizontalGroup:new({
|
|
align = "center",
|
|
ImageWidget:new({
|
|
file = "resources/info-i.png"
|
|
}),
|
|
Widget:new({
|
|
dimen = { w = 10, h = 0 }
|
|
}),
|
|
TextWidget:new({
|
|
text = text,
|
|
face = Font:getFace("cfont", 30)
|
|
})
|
|
})
|
|
})
|
|
})
|
|
dialog:paintTo(fb.bb, 0, 0)
|
|
dialog:free()
|
|
if refresh_mode ~= nil then
|
|
fb:refresh(refresh_mode)
|
|
end
|
|
end
|
|
|
|
function showInfoMsgWithDelay(text, msec, refresh_mode)
|
|
if not refresh_mode then refresh_mode = 0 end
|
|
Screen:saveCurrentBB()
|
|
|
|
InfoMessage:show(text)
|
|
fb:refresh(refresh_mode)
|
|
-- util.usleep(msec*1000)
|
|
|
|
-- eat the first key release event
|
|
local ev = input.waitForEvent()
|
|
adjustKeyEvents(ev)
|
|
repeat
|
|
ok = pcall( function()
|
|
ev = input.waitForEvent(msec*1000)
|
|
adjustKeyEvents(ev)
|
|
end)
|
|
print(is_not_timeout)
|
|
until not ok or ev.value == EVENT_VALUE_KEY_PRESS
|
|
|
|
Screen:restoreFromSavedBB()
|
|
fb:refresh(refresh_mode)
|
|
end
|