Author: titmuss
Date: Mon Apr 28 03:14:56 2008
New Revision: 2374
URL: http://svn.slimdevices.com?rev=2374&root=Jive&view=rev
Log:
Bug: N/A
Description:
Add basic mouse support for all widget (expect TextInput). The mouse behaviour
needs
tuning in each widget.
Modified:
7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Menu.lua
7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Scrollbar.lua
7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Slider.lua
7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Textarea.lua
7.2/trunk/squeezeplay/src/squeezeplay_test/share/applets/Test/TestApplet.lua
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Menu.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Menu.lua?rev=2374&root=Jive&r1=2373&r2=2374&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Menu.lua (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Menu.lua Mon Apr 28
03:14:56 2008
@@ -214,7 +214,7 @@
if self.scrollbar:mouseInside(event) then
-- forward event to scrollbar
- self.scrollbar:_event(event)
+ return self.scrollbar:_event(event)
else
-- menu selection follows mouse
@@ -222,6 +222,8 @@
local i = y / self.itemHeight --(h / self.numWidgets)
self:setSelectedIndex(self.topItem + math.floor(i))
+
+ return EVENT_CONSUME
end
elseif evtype == EVENT_SHOW or
@@ -263,7 +265,6 @@
end)
obj.scrollbar = Scrollbar("scrollbar",
function(_, value)
- log:warn("V=", value)
obj:setSelectedIndex(value)
end)
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Scrollbar.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Scrollbar.lua?rev=2374&root=Jive&r1=2373&r2=2374&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Scrollbar.lua (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Scrollbar.lua Mon Apr
28 03:14:56 2008
@@ -89,24 +89,20 @@
self.value = pos - min
self.size = size
-self.foo = min
-
self:reDraw()
end
-function _adjustPosition(self, percent)
+function _setSlider(self, percent)
local oldvalue = self.value
- local pos = math.floor(percent * self.range)
+ local pos = percent * (self.range)
- self.value = pos - self.foo
+ self.value = math.floor(pos)
self:reDraw()
- log:warn("value=", self.value, " oldvalue=", oldvalue, " closure=",
self.closure)
-
if self.value ~= oldvalue and self.closure then
- self.closure(self, pos, false)
+ self.closure(self, self.value, false)
end
end
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Slider.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Slider.lua?rev=2374&root=Jive&r1=2373&r2=2374&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Slider.lua (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Slider.lua Mon Apr 28
03:14:56 2008
@@ -38,6 +38,8 @@
local tostring, type = tostring, type
local oo = require("loop.simple")
+local math = require("math")
+
local Widget = require("jive.ui.Widget")
local log = require("jive.utils.log").logger("ui")
@@ -158,7 +160,8 @@
return self.size
end
-function _adjustSlider(self, value)
+
+function _moveSlider(self, value)
local oldSize = self.size
self:setValue(self.size + value)
@@ -171,11 +174,24 @@
end
+function _setSlider(self, percent)
+ local oldSize = self.size
+
+ self:setValue(math.ceil(percent * self.range))
+
+ if self.size ~= oldSize then
+ if self.closure then
+ self.closure(self, self.size, false)
+ end
+ end
+end
+
+
function _eventHandler(self, event)
local type = event:getType()
if type == EVENT_SCROLL then
- self:_adjustSlider(event:getScroll())
+ self:_moveSlider(event:getScroll())
return EVENT_CONSUME
elseif type == EVENT_MOUSE_DOWN or
@@ -185,13 +201,12 @@
if w > h then
-- horizontal
- self:_adjustPosition(x / w)
- log:warn("H=", x / w)
+ self:_setSlider(x / w)
else
-- vertical
- self:_adjustPosition(y / h)
- log:warn("V=", y / h)
- end
+ self:_setSlider(y / h)
+ end
+ return EVENT_CONSUME
elseif type == EVENT_KEY_PRESS then
local keycode = event:getKeycode()
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Textarea.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Textarea.lua?rev=2374&root=Jive&r1=2373&r2=2374&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Textarea.lua (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/ui/Textarea.lua Mon Apr 28
03:14:56 2008
@@ -52,8 +52,12 @@
local Widget = require("jive.ui.Widget")
local Scrollbar = require("jive.ui.Scrollbar")
+local log = require("jive.utils.log").logger("ui")
+
+
local EVENT_SCROLL = jive.ui.EVENT_SCROLL
local EVENT_KEY_PRESS = jive.ui.EVENT_KEY_PRESS
+local EVENT_MOUSE_DRAG = jive.ui.EVENT_MOUSE_DRAG
local EVENT_CONSUME = jive.ui.EVENT_CONSUME
local EVENT_UNUSED = jive.ui.EVENT_UNUSED
@@ -86,14 +90,17 @@
_assert(type(text) ~= nil)
local obj = oo.rawnew(self, Widget(style))
- obj.scrollbar = Scrollbar("scrollbar")
+ obj.scrollbar = Scrollbar("scrollbar",
+ function(_, value)
+ obj:_scrollTo(value)
+ end)
obj.scrollbar.parent = obj
obj.topLine = 0
- obj.visibleLine = 0
+ obj.visibleLines = 0
obj.text = text
- obj:addListener(EVENT_SCROLL | EVENT_KEY_PRESS,
+ obj:addListener(EVENT_SCROLL | EVENT_KEY_PRESS | EVENT_MOUSE_DRAG,
function (event)
return obj:_eventHandler(event)
end)
@@ -153,15 +160,18 @@
function scrollBy(self, scroll)
_assert(type(scroll) == "number")
- self.topLine = self.topLine + scroll
-
- if self.topLine < 0 then
- self.topLine = 0
+ self:_scrollTo(self.topLine + scroll)
+end
+
+function _scrollTo(self, topLine)
+ if topLine < 0 then
+ topLine = 0
end
- if self.topLine + self.visibleLines > self.numLines then
- self.topLine = self.numLines - self.visibleLines
+ if topLine + self.visibleLines > self.numLines then
+ topLine = self.numLines - self.visibleLines
end
+ self.topLine = topLine
self.scrollbar:setScrollbar(0, self.numLines, self.topLine + 1,
self.visibleLines)
self:reDraw()
end
@@ -174,6 +184,10 @@
self:scrollBy(event:getScroll())
return EVENT_CONSUME
+
+ elseif type == EVENT_MOUSE_DRAG then
+
+ return self.scrollbar:_event(event)
elseif type == EVENT_KEY_PRESS then
local keycode = event:getKeycode()
Modified:
7.2/trunk/squeezeplay/src/squeezeplay_test/share/applets/Test/TestApplet.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay_test/share/applets/Test/TestApplet.lua?rev=2374&root=Jive&r1=2373&r2=2374&view=diff
==============================================================================
---
7.2/trunk/squeezeplay/src/squeezeplay_test/share/applets/Test/TestApplet.lua
(original)
+++
7.2/trunk/squeezeplay/src/squeezeplay_test/share/applets/Test/TestApplet.lua
Mon Apr 28 03:14:56 2008
@@ -46,11 +46,8 @@
local log = require("jive.utils.log").addCategory("test",
jive.utils.log.DEBUG)
-local EVENT_KEY_PRESS = jive.ui.EVENT_KEY_PRESS
-local EVENT_CONSUME = jive.ui.EVENT_CONSUME
-
-
-module(...)
+
+module(..., Framework.constants)
oo.class(_M, Applet)
@@ -561,7 +558,7 @@
log:debug("w = " .. w .. " h = " .. h)
window:addWidget(Icon("image", image))
- window:addListener(EVENT_KEY_PRESS,
+ window:addListener(EVENT_KEY_PRESS | EVENT_MOUSE_PRESS,
function(event)
window:hide()
return EVENT_CONSUME
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins