From b4c5f2816404de287c2df72940f9d1c4b8bb4db5 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Thu, 14 Mar 2013 10:52:09 +0800 Subject: [PATCH] add iconbutton widget --- frontend/ui/widget/button.lua | 2 +- frontend/ui/widget/iconbutton.lua | 53 +++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 frontend/ui/widget/iconbutton.lua diff --git a/frontend/ui/widget/button.lua b/frontend/ui/widget/button.lua index 622c78c74..767e50f79 100644 --- a/frontend/ui/widget/button.lua +++ b/frontend/ui/widget/button.lua @@ -2,7 +2,7 @@ require "ui/widget/container" --[[ a button widget -]] +--]] Button = InputContainer:new{ text = nil, -- mandatory preselect = false, diff --git a/frontend/ui/widget/iconbutton.lua b/frontend/ui/widget/iconbutton.lua new file mode 100644 index 000000000..85f825bd3 --- /dev/null +++ b/frontend/ui/widget/iconbutton.lua @@ -0,0 +1,53 @@ +require "ui/widget/container" +require "ui/widget/image" + + +--[[ +Button with a big icon image! Designed for touch device +--]] +IconButton = InputContainer:new{ + icon_file = "resources/info-confirm.png", + dimen = nil, + -- parent is used for UIManager:setDirty + parent = nil, + callback = function() end, +} + +function IconButton:init() + self.image = ImageWidget:new{ + file = self.icon_file + } + + self.parent = self.parent or self + self.dimen = self.image:getSize() + + self:initGesListener() + + self[1] = self.image +end + +function IconButton:initGesListener() + self.ges_events = { + TapClickButton = { + GestureRange:new{ + ges = "tap", + range = self.dimen, + } + }, + } +end + +function IconButton:onTapClickButton() + self.image.invert = true + UIManager:setDirty(self.parent, "partial") + UIManager:scheduleIn(0.5, function() + self.image.invert = false + UIManager:setDirty(self.parent, "partial") + end) + self.callback() +end + +function IconButton:onSetDimensions(new_dimen) + self.dimen = new_dimen +end +