mod: move slider event handling to global command module

Since this event must be handled in all UIs, it is
better to register it on command object construction.
This commit is contained in:
Qingping Hou
2012-04-08 12:46:33 +08:00
parent 7f0faa20bb
commit 709e7853e4
2 changed files with 45 additions and 0 deletions

View File

@@ -162,5 +162,24 @@ function Commands:new(obj)
end
setmetatable(obj.map, mt)
obj:add(KEY_INTO_SCREEN_SAVER, nil, "slider",
"toggle screen saver",
function()
Screen:saveCurrentBB()
Screen.kpv_rotation_mode = Screen.cur_rotation_mode
fb:setOrientation(Screen.native_rotation_mode)
--os.execute("killall -cont cvm")
end
)
obj:add(KEY_OUTOF_SCREEN_SAVER, nil, "slider",
"toggle screen saver",
function()
os.execute("sleep 3")
--os.execute("killall -stop cvm")
fb:setOrientation(Screen.kpv_rotation_mode)
Screen:resotreFromSavedBB()
fb:refresh(0)
end
)
return obj
end

View File

@@ -44,6 +44,8 @@ Screen = {
-- these two variabls are used to help switching from framework to reader
native_rotation_mode = nil,
kpv_rotation_mode = nil,
saved_bb = nil,
}
-- @orien: 1 for clockwise rotate, -1 for anti-clockwise
@@ -74,3 +76,27 @@ function Screen:updateRotationMode()
end
end
function Screen:saveCurrentBB()
if not self.saved_bb then
self.saved_bb = Blitbuffer.new(width, height)
end
if self.saved_bb:getWidth() ~= width then
self.saved_bb:free()
self.saved_bb = Blitbuffer.new(width, height)
end
self.saved_bb:blitFullFrom(fb.bb)
end
function Screen:resotreFromSavedBB()
self:restoreFromBB(self.saved_bb)
end
function Screen:getCurrentScreenBB()
local bb = Blitbuffer.new(width, height)
bb:blitFullFrom(fb.bb)
return bb
end
function Screen:restoreFromBB(bb)
fb.bb:blitFullFrom(bb)
end