Author: bklaas
Date: Wed Feb 17 10:01:47 2010
New Revision: 8518

URL: http://svn.slimdevices.com/jive?rev=8518&view=rev
Log:
Fixed Bug: 15339
Fixed Bug: 15573
Description: fully replace NP window on track change. This is a workaround to 
the fact that window listeners are being lost in particular situations (e.g., a 
new pandora station being selected and updating an already drawn NP window).
add log debug messages in notifications
don't take action on notifications not intended for the current player
restyle the rbutton widget rather than replace the whole title group widget set

Modified:
    
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua

Modified: 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
URL: 
http://svn.slimdevices.com/jive/7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua?rev=8518&r1=8517&r2=8518&view=diff
==============================================================================
--- 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
 (original)
+++ 
7.5/trunk/squeezeplay/src/squeezeplay/share/applets/NowPlaying/NowPlayingApplet.lua
 Wed Feb 17 10:01:47 2010
@@ -126,12 +126,18 @@
 end
 
 function notify_playerShuffleModeChange(self, player, shuffleMode)
-       log:debug("shuffle mode change notification")
+       if player ~= self.player then
+               return
+       end
+       log:debug("notify_playerShuffleModeChange(): ", shuffleMode)
        self:_updateShuffle(shuffleMode)
 end
 
 function notify_playerRepeatModeChange(self, player, repeatMode)
-       log:debug("repeat mode change notification")
+       if player ~= self.player then
+               return
+       end
+       log:debug("notify_playerRepeatModeChange(): ", repeatMode)
        self:_updateRepeat(repeatMode)
 end
 
@@ -177,6 +183,10 @@
 end
 
 function notify_playerTitleStatus(self, player, text, duration)
+       if player ~= self.player then
+               return
+       end
+       log:debug("notify_playerTitleStatus(): ", text)
        self:_setTitleStatus(text, duration)
 end
 
@@ -184,6 +194,7 @@
        if player ~= self.player then
                return
        end
+       log:debug("notify_playerPower(): ", power)
 
        local mode = self.player:getPlayMode()
 
@@ -203,12 +214,14 @@
 
 function changeTitleText(self, titleText)
        self.titleGroup:setWidgetValue("text", titleText)
-       self.titleGroupOneTrackPlaylist:setWidgetValue("text", titleText)
 end
 
 
 function notify_playerTrackChange(self, player, nowPlaying)
-       log:debug("Notification received that track has changed")
+       if player ~= self.player then
+               return
+       end
+       log:debug("notify_playerTrackChange(): ", nowPlaying)
 
        local thisPlayer = _isThisPlayer(self, player)
        if not thisPlayer then return end
@@ -243,9 +256,15 @@
                -- for local music, nowPlaying = track_id
                self.nowPlaying = nowPlaying
        end
+
+       self:replaceNPWindow()
 end
 
 function notify_playerPlaylistChange(self, player)
+       if player ~= self.player then
+               return
+       end
+       log:debug("notify_playerPlaylistChange()")
        self:_updateAll()
 end
 
@@ -282,7 +301,7 @@
                return
        end
 
-       log:debug("Player mode has been changed to: ", mode)
+       log:debug("notify_playerModeChange(): Player mode has been changed to: 
", mode)
        self:_updateMode(mode)
 end
 
@@ -291,6 +310,7 @@
        if player ~= self.player then
                return
        end
+       log:debug("notify_playerDelete():", player)
 
        self:freeAndClear()
 end
@@ -301,6 +321,7 @@
        if self.player ~= player then
                self:freeAndClear()
        end
+       log:debug("notify_playerCurrent(): ", player)
 
        self.player = player
        if not self.player then
@@ -518,15 +539,13 @@
        if playlistSize == 1 and self.rbutton == 'playlist' then
                if not self.suppressTitlebar then
                        log:debug('changing rbutton to + button')
-                       self.window:removeWidget(self.titleGroup)
-                       self.window:addWidget(self.titleGroupOneTrackPlaylist)
+                       
self.titleGroup:getWidget('rbutton'):setStyle('button_more')
                end
                self.rbutton = 'more'
        elseif self.rbutton == 'more' and playlistSize > 1 then
                if not self.suppressTitlebar then
                        log:debug('changing rbutton to playlist button')
-                       
self.window:removeWidget(self.titleGroupOneTrackPlaylist)
-                       self.window:addWidget(self.titleGroup)
+                       
self.titleGroup:getWidget('rbutton'):setStyle('button_playlist')
                end
                self.rbutton = 'playlist'
        end
@@ -955,6 +974,12 @@
 
        log:debug('setting NP window style to: ', self.selectedStyle)
 
+       self:replaceNPWindow()
+end
+
+
+function replaceNPWindow(self)
+       log:debug("REPLACING NP WINDOW")
        local oldWindow = self.window
 
        self.window = _createUI(self)
@@ -962,7 +987,6 @@
                self:_updateButtons(self.player:getPlayerStatus())
        end
        self:_refreshRightButton()
-
        self.window:replace(oldWindow, Window.transitionFadeIn)
 end
 
@@ -991,7 +1015,6 @@
        self.mainTitle = self:_titleText('play')
 
        self.titleGroup = self:_createTitleGroup(window, 'button_playlist')
-       self.titleGroupOneTrackPlaylist = self:_createTitleGroup(window, 
'button_more')
 
        self.rbutton = 'playlist'
        
@@ -1026,7 +1049,6 @@
        if not self.scrollSwitchTimer then
                self.scrollSwitchTimer = Timer(3000,
                                        function()
-                                               log:debug("in scrollSwitchTimer 
timer")
                                                self.trackTitle:animate(true)
                                                
self.artistalbumTitle:animate(false)
                                                self.artistTitle:animate(false)
@@ -1038,7 +1060,6 @@
        self.trackTitle.textStopCallback = 
                function(label) 
                        if not self.scrollSwitchTimer:isRunning() then
-                               log:debug("in scrollSwitchTimer callback: ", 
label)
                                self.artistalbumTitle:animate(true)
                                self.artistTitle:animate(true)
                                self.trackTitle:animate(false)
@@ -1053,7 +1074,6 @@
                                self.artistalbumTitle:animate(false)
                                self.trackTitle:animate(false)
                                if not self.scrollSwitchTimer:isRunning() then
-                                       log:debug("in scrollSwitchTimer 
callback, setting timer: ", label)
                                        self.scrollSwitchTimer:restart()
                                end
                        end
@@ -1062,7 +1082,6 @@
                self.artistTitle.textStopCallback =
                        function(label)
                                if not self.scrollSwitchTimer:isRunning() then
-                                       log:debug("in scrollSwitchTimer 
callback: ", label)
                                        self.trackTitle:animate(false)
                                        self.artistTitle:animate(false)
                                        self.albumTitle:animate(true)
@@ -1075,7 +1094,6 @@
                                self.albumTitle:animate(false)
                                self.trackTitle:animate(false)
                                if not self.scrollSwitchTimer:isRunning() then
-                                       log:debug("in scrollSwitchTimer 
callback, setting timer: ", label)
                                        self.scrollSwitchTimer:restart()
                                end
                        end

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

Reply via email to