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

Reply via email to