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