Author: titmuss
Date: Sun Jan 20 13:07:15 2008
New Revision: 1526

URL: http://svn.slimdevices.com?rev=1526&root=Jive&view=rev
Log:
Bug: 5461
Description:
Enable Choose Music Source and Choose Player options to the error screen 
displayed when 
the connection to SqueezeCenter is not available. This works, but not really 
well, it 
requires some redesign that will happen post 7.0.

Bug: 5467
Description:
Added a check mark in Choose Player to show the currently connected player.
Don't show players if the server is disconnected. Also update the list as the 
server is 
stopped/started.



Modified:
    trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua
    
trunk/jive/src/pkg/jive/share/applets/SetupSlimServers/SetupSlimServersApplet.lua
    
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
    trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua
    trunk/jive/src/pkg/jive/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua
    trunk/jive/src/pkg/jive/share/jive/AppletManager.lua
    trunk/jive/src/pkg/jive/share/jive/slim/Player.lua
    trunk/jive/src/pkg/jive/share/jive/slim/SlimServer.lua
    trunk/jive/src/pkg/jive/share/jive/slim/SlimServers.lua

Modified: 
trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua 
(original)
+++ trunk/jive/src/pkg/jive/share/applets/SelectPlayer/SelectPlayerApplet.lua 
Sun Jan 20 13:07:15 2008
@@ -85,6 +85,22 @@
 
 function notify_playerCurrent(self, playerObj)
        self.selectedPlayer = playerObj
+       self:manageSelectPlayerMenu()
+end
+
+
+function notify_serverConnected(self, server)
+       for id, player in server:allPlayers() do
+               self:_refreshPlayerItem(player)
+       end
+       self:manageSelectPlayerMenu()
+end
+
+
+function notify_serverDisconnected(self, server)
+       for id, player in server:allPlayers() do
+               self:_refreshPlayerItem(player)
+       end
        self:manageSelectPlayerMenu()
 end
 
@@ -140,11 +156,43 @@
                end,
                weight =  1
        }
+
+       if player == self.selectedPlayer then
+               item.style = "checked"
+       end
+
        self.playerMenu:addItem(item)
        self.playerItem[mac] = item
        
        if self.selectedPlayer == player then
                self.playerMenu:setSelectedItem(item)
+       end
+end
+
+
+function _refreshPlayerItem(self, player)
+       local mac = player.id
+
+       if player:isConnected() then
+               if not self.playerItem[mac] then
+                       -- add player
+                       self:_addPlayerItem(player)
+
+               else
+                       -- update player state
+                       if player == self.selectedPlayer then
+                               item.style = "checked"
+                       else
+                               item.style = nil
+                       end
+               end
+
+       else
+               -- not connected
+               if self.playerItem[mac] then
+                       self.playerMenu:removeItem(self.playerItem[mac])
+                       self.playerItem[mac] = nil
+               end
        end
 end
 
@@ -204,21 +252,10 @@
        end
 
        self.selectedPlayer = self.discovery:getCurrentPlayer()
-       for mac, playerObj in self.discovery:allPlayers() do
-               _addPlayerItem(self, playerObj)
-       end
-
-       -- Bug 6130 add a Set up Squeezebox option
-       local sbsetup = AppletManager:loadApplet("SetupSqueezebox")
-       if sbsetup then
-               self.playerMenu:addItem({
-                                       text = self:string("SQUEEZEBOX_SETUP"),
-                                       sound = "WINDOWSHOW",
-                                       callback = function()
-                                                          
sbsetup:settingsShow()
-                                                  end,
-                                       weight =  10
-                               })
+       for mac, player in self.discovery:allPlayers() do
+               if player:isConnected() then
+                       _addPlayerItem(self, player)
+               end
        end
 
        window:addWidget(menu)

Modified: 
trunk/jive/src/pkg/jive/share/applets/SetupSlimServers/SetupSlimServersApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SetupSlimServers/SetupSlimServersApplet.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive/share/applets/SetupSlimServers/SetupSlimServersApplet.lua
 (original)
+++ 
trunk/jive/src/pkg/jive/share/applets/SetupSlimServers/SetupSlimServersApplet.lua
 Sun Jan 20 13:07:15 2008
@@ -60,9 +60,9 @@
 
 
 -- main setting menu
-function settingsShow(self, menuItem)
-
-       local window = Window("window", menuItem.text)
+function settingsShow(self)
+
+       local window = Window("window", self:string("SLIMSERVER_SERVERS"))
        local menu = SimpleMenu("menu", items)
        menu:setComparator(SimpleMenu.itemComparatorWeightAlpha)
        window:addWidget(menu)

Modified: 
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- 
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua 
(original)
+++ 
trunk/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua 
Sun Jan 20 13:07:15 2008
@@ -1245,7 +1245,7 @@
        if string.lower(playerId) == string.lower(self.mac) then
 
                -- wait until the player is connected before continuing
-               if not player:getConnected() then
+               if not player:isConnected() then
                        log:info("player not connected to SC")
                        return
                end

Modified: 
trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua 
(original)
+++ trunk/jive/src/pkg/jive/share/applets/SlimBrowser/SlimBrowserApplet.lua Sun 
Jan 20 13:07:15 2008
@@ -83,6 +83,7 @@
 
 local JIVE_VERSION           = jive.JIVE_VERSION
 local jiveMain               = jiveMain
+local appletManager          = appletManager
 local iconbar                = iconbar
 local jnt                    = jnt
 
@@ -1944,7 +1945,7 @@
 
        iconbar:setServerError("ERROR")
 
-       if numPendingRequests == 0 then
+       if numPendingRequests == 0 or self.serverErrorWindow then
                return
        end
 
@@ -1953,34 +1954,57 @@
 
        local menu = SimpleMenu("menu")
 
+       local player = _player
+
+       -- try again, reconnect to server
        menu:addItem({
                             text = self:string("SLIMBROWSER_TRY_AGAIN"),
                             callback = function()
                                                server:connect()
+
+                                               local slimDiscovery = 
appletManager:loadApplet("SlimDiscovery")
+                                               
slimDiscovery:setCurrentPlayer(player)
                                        end,
                     })
 
-       --[[ XXXX to do
-       menu:addItem({
-                            text = 
self:string("SLIMBROWSER_CHOOSE_MUSIC_SOURCE"),
-                            callback = function()
-                                       end,
-                    })
-       --]]
-       --[[ XXXX to do
-       menu:addItem({
-                            text = self:string("SLIMBROWSER_CHOOSE_PLAYER"),
-                            callback = function()
-                                       end,
-                    })
-       --]]
+       -- change music source, only for udap players
+       if player and player:canUdap() and 
appletManager:hasApplet("SetupSqueezebox") then
+               menu:addItem({
+                                    text = 
self:string("SLIMBROWSER_CHOOSE_MUSIC_SOURCE"),
+                                    callback = function()
+                                                       local slimDiscovery = 
appletManager:loadApplet("SlimDiscovery")
+                                                       
slimDiscovery:setCurrentPlayer(nil)
+
+                                                       local setupSqueezebox = 
appletManager:loadApplet("SetupSqueezebox")
+                                                       
setupSqueezebox:startSqueezeboxSetup(player:getMacAddress(), nil)
+                                               end,
+                            })
+       end
+
+       -- change player, only if multiple players
+       local slimDiscovery = appletManager:loadApplet("SlimDiscovery")
+       if slimDiscovery:countConnectedPlayers() > 1 and 
appletManager:hasApplet("SelectPlayer") then
+               menu:addItem({
+                                    text = 
self:string("SLIMBROWSER_CHOOSE_PLAYER"),
+                                    callback = function()
+                                                       
slimDiscovery:setCurrentPlayer(nil)
+
+                                                       local selectPlayer = 
appletManager:loadApplet("SelectPlayer")
+                                                       selectPlayer:setupShow()
+                                               end,
+                            })
+       end
 
        window:addWidget(Textarea("help", 
self:string("SLIMBROWSER_PROBLEM_CONNECTING_HELP", tostring(_player:getName()), 
tostring(_server:getName()))))
        window:addWidget(menu)
 
+       self.serverErrorWindow = window
+       window:addListener(EVENT_WINDOW_POP,
+                          function()
+                                  self.serverErrorWindow = nil
+                          end)
+
        window:show()
-
-       self.serverErrorWindow = window
 end
 
 

Modified: 
trunk/jive/src/pkg/jive/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua 
(original)
+++ trunk/jive/src/pkg/jive/share/applets/SlimDiscovery/SlimDiscoveryApplet.lua 
Sun Jan 20 13:07:15 2008
@@ -131,6 +131,25 @@
 
 --[[
 
+=head2 applets.SlimDiscovery.SlimDiscoveryApplet:countPlayers()
+
+Returns the number of connected players.
+
+=cut
+--]]
+function countConnectedPlayers(self)
+       local count = 0
+       for i, player in self:allPlayers() do
+               if player:isConnected() then
+                       count = count + 1
+               end
+       end
+       return count
+end
+
+
+--[[
+
 =head2 applets.SlimDiscovery.SlimDiscoveryApplet:setCurrentPlayer()
 
 Sets the current player

Modified: trunk/jive/src/pkg/jive/share/jive/AppletManager.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/jive/AppletManager.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/jive/AppletManager.lua (original)
+++ trunk/jive/src/pkg/jive/share/jive/AppletManager.lua Sun Jan 20 13:07:15 
2008
@@ -417,6 +417,12 @@
 end
 
 
+-- returns true if the applet can be loaded
+function hasApplet(self, appletName)
+       return _appletsDb[appletName] ~= nil
+end
+
+
 --[[
 
 =head2 jive.AppletManager.getAppletInstance(appletName)

Modified: trunk/jive/src/pkg/jive/share/jive/slim/Player.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/jive/slim/Player.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/jive/slim/Player.lua (original)
+++ trunk/jive/src/pkg/jive/share/jive/slim/Player.lua Sun Jan 20 13:07:15 2008
@@ -438,6 +438,26 @@
 --]]
 function getId(self)
        return self.id
+end
+
+
+--[[
+
+=head2 jive.slim.Player:getMacAddress()
+
+Returns the player mac address, or nil for http players.
+
+=cut
+--]]
+function getMacAddress(self)
+       if self.model == "squeezebox2"
+               or self.model == "receiver"
+               or self.model == "transporter" then
+
+               return string.gsub(self.id, "[^%x]", "")
+       end
+
+       return nil
 end
 
 
@@ -824,6 +844,12 @@
 end
 
 
+-- returns true if this player supports udap setup
+function canUdap(self)
+       return self.model == "receiver"
+end
+
+
 -- returns true if this player can connect to another server
 function canConnectToServer(self)
        return self.model == "squeezebox2"
@@ -831,6 +857,7 @@
                or self.model == "transporter"
 end
 
+
 -- tell the player to connect to another server
 function connectToServer(self, server)
        local ip, port = server:getIpPort()
@@ -838,8 +865,8 @@
 end
 
 
-function getConnected(self)
-       return self.connected
+function isConnected(self)
+       return self.slimServer and self.slimServer:isConnected() and 
self.connected
 end
 
 

Modified: trunk/jive/src/pkg/jive/share/jive/slim/SlimServer.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/jive/slim/SlimServer.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/jive/slim/SlimServer.lua (original)
+++ trunk/jive/src/pkg/jive/share/jive/slim/SlimServer.lua Sun Jan 20 13:07:15 
2008
@@ -313,6 +313,7 @@
                return
        end
 
+       log:info(self, " connected")
        self.active = true
        self.jnt:notify('serverConnected', self)
 end
@@ -323,6 +324,7 @@
                return
        end
 
+       log:info(self, " disconnected")
        self.active = false
        self.jnt:notify('serverDisconnected', self, numPendingRequests)
 end

Modified: trunk/jive/src/pkg/jive/share/jive/slim/SlimServers.lua
URL: 
http://svn.slimdevices.com/trunk/jive/src/pkg/jive/share/jive/slim/SlimServers.lua?rev=1526&root=Jive&r1=1525&r2=1526&view=diff
==============================================================================
--- trunk/jive/src/pkg/jive/share/jive/slim/SlimServers.lua (original)
+++ trunk/jive/src/pkg/jive/share/jive/slim/SlimServers.lua Sun Jan 20 13:07:15 
2008
@@ -259,7 +259,6 @@
                self:connect()
        end
 
-
        if self.currentPlayer then
                if self.discoverState ~= 'timeout' then
                        self.discoverState = 'timeout'

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

Reply via email to