Author: mherger
Date: Tue Feb  9 23:05:59 2010
New Revision: 8470

URL: http://svn.slimdevices.com/jive?rev=8470&view=rev
Log:
Bug: 15646
Description: various ImageViewer fixes

- don't change touch/button/action behaviour when using ImageViewer in 
screensaver mode

- catch WINDOW_POP/PUSH events for the first "loading" screen too

- only allow interaction in interactive mode, when called manually. Make sure 
screensavers are more reliably recognized as such.

- always animate slideshow, even if there seems to be only one item: many of 
the remote screensavers (flickr, facebook) only return one item per request

Modified:
    
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
    
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerMeta.lua

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua?rev=8470&r1=8469&r2=8470&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerApplet.lua
 Tue Feb  9 23:05:59 2010
@@ -86,6 +86,7 @@
 
                if src == "card" then
                        self.imgSource = ImageSourceCard(self)
+-- Flickr is now being served by mysb.com, disable standalone applet
 --             elseif src == "flickr" then
 --                     self.imgSource = ImageSourceFlickr(self)
                -- default to web list - it's available on all players
@@ -105,7 +106,7 @@
                                text = 
self:string("IMAGE_VIEWER_START_SLIDESHOW"), 
                                sound = "WINDOWSHOW",
                                callback = function(event, menuItem)
-                                       self:startSlideshow(menuItem, false)
+                                       self:startSlideshow(false)
                                        return EVENT_CONSUME
                                end
                        },
@@ -124,14 +125,18 @@
        return window
 end
 
-
-function startSlideshow(self, menuItem, isScreensaver, imgSourceOverride)
+function startScreensaver(self)
+       log:info("start standard image viewer screensaver")
+       self:startSlideshow(true)
+end
+
+function startSlideshow(self, isScreensaver, imgSourceOverride)
        log:info("start image viewer")
 
        -- initialize the chosen image source
        self:initImageSource(imgSourceOverride)
        self.initialized = true
-       self.isScreensaver = isScreensaver
+       self.isScreensaver = isScreensaver and true or false
        self:showInitWindow()
        self:startSlideshowWhenReady()
 end
@@ -157,11 +162,16 @@
 
        self:applyScreensaverWindow(popup)
        popup:addListener(EVENT_KEY_PRESS | EVENT_MOUSE_PRESS,
-                         function()
+                       function()
                                popup:playSound("WINDOWHIDE")
                                popup:hide()
-                         end)
-
+                       end)
+
+       popup:addListener(EVENT_WINDOW_PUSH | EVENT_WINDOW_POP,
+                       function(event)
+                               return EVENT_CONSUME
+                       end)
+                       
        self:tieAndShowWindow(popup, Window.transitionFadeIn)
 
 end
@@ -198,7 +208,6 @@
                return
        end
 
-
        -- image list is ready
        self.imgSource:nextImage(self:getSettings()["ordering"])
        self:displaySlide()
@@ -307,9 +316,9 @@
                                end
                                local now = Framework:getTicks()
                                if not self.lastScrollT or
-                                 self.lastScrollT + MIN_SCROLL_INTERVAL < now 
or
-                                 self.lastScrollDir ~= dir then
-                                       --scrolling a lot or a little only 
moves by one, since image fetching is relatively slow
+                                       self.lastScrollT + MIN_SCROLL_INTERVAL 
< now or
+                                       self.lastScrollDir ~= dir then
+                                       --scrolling a lot or a little only 
moves by one, since image fetching is relatively slow
                                        self.lastScrollT = now
                                        self.lastScrollDir = dir
                                        if scroll > 0 then
@@ -330,6 +339,8 @@
 
 --service method
 function registerRemoteScreensaver(self, serverData)
+       serverData.isScreensaver = true
+       
        appletManager:callService("addScreenSaver",
                        serverData.text,
                        "ImageViewer",
@@ -348,10 +359,10 @@
 
 
 function openRemoteScreensaver(self, force, serverData)
-       self:startSlideshow(_, true, ImageSourceServer(self, serverData))
-end
-
-function closeRemoteScreensaver(self, force, serverData)
+       self:startSlideshow(serverData.isScreensaver, ImageSourceServer(self, 
serverData))
+end
+
+function closeRemoteScreensaver(self)
        if self.window then
                self.window:hide()
        end
@@ -389,7 +400,7 @@
                        end)
        end
        local manager = appletManager:getAppletInstance("ScreenSavers")
-       manager:screensaverWindow(window, true, {"add", "go", "up", "down", 
"back"}, true)
+       manager:screensaverWindow(window, true, {"add", "go", "up", "down", 
"back"})
 end
 
 
@@ -412,8 +423,7 @@
        if not self.imgSource:imageReady() then
                -- try again in a few moments
                log:debug("image not ready, try again...")
---             self.checkFotoTimer = Timer(1000, --hmm, this seems to enforce 
a second wait even if response is fast.... todo have image sink trigger this 
instead
-               --todo: also, might this run continuously on a failure even if 
the applet is complete.
+
                if not self.checkFotoTimer then
                        self.checkFotoTimer = Timer(200, --hmm, this seems to 
enforce a second wait even if response is fast....
                                function()
@@ -541,9 +551,9 @@
 
                if self.isScreensaver then
                        self:applyScreensaverWindow(window)
+               else
+                       self:setupEventHandlers(window)
                end
-
-               self:setupEventHandlers(window)
 
                -- replace the window if it's already there
                if self.window then
@@ -569,16 +579,13 @@
                --no iconbar
                self.window:setShowFrameworkWidgets(false)
 
-               -- if we have more than one picture, start slideshow
-               if self.imgSource:getImageCount() > 1 then
-                       -- start timer for next photo in 'delay' milliseconds
-                       local delay = self:getSettings()["delay"]
-                       self.nextSlideTimer = self.window:addTimer(delay,
-                               function()
-                                       
self.imgSource:nextImage(self:getSettings()["ordering"])
-                                       self:displaySlide()
-                               end)
-               end
+               -- start timer for next photo in 'delay' milliseconds
+               local delay = self:getSettings()["delay"]
+               self.nextSlideTimer = self.window:addTimer(delay,
+                       function()
+                               
self.imgSource:nextImage(self:getSettings()["ordering"])
+                               self:displaySlide()
+                       end)
        else
                file = self.imgSource:getCurrentImagePath() or 'unknown'
                log:info("Invalid image object found: " .. file)

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerMeta.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerMeta.lua?rev=8470&r1=8469&r2=8470&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerMeta.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/ImageViewer/ImageViewerMeta.lua
 Tue Feb  9 23:05:59 2010
@@ -45,7 +45,7 @@
 
 function configureApplet(self)
        appletManager:callService("addScreenSaver", 
self:string("IMAGE_VIEWER"), "ImageViewer",
-               "startSlideshow", self:string("IMAGE_VIEWER_SETTINGS"), 
"openSettings", 90)
+               "startScreensaver", self:string("IMAGE_VIEWER_SETTINGS"), 
"openSettings", 90, "closeRemoteScreensaver")
 end
 
 

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/jive-checkins

Reply via email to