Author: titmuss
Date: Mon Nov 17 08:05:26 2008
New Revision: 3386

URL: http://svn.slimdevices.com?rev=3386&root=Jive&view=rev
Log:
Bug: 9981
Description:
On the Controller automatically switch to the local player when the headphones 
are inserted (and switch 
back when they are removed).


Modified:
    
7.3/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua

Modified: 
7.3/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua?rev=3386&root=Jive&r1=3385&r2=3386&view=diff
==============================================================================
--- 
7.3/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 (original)
+++ 
7.3/trunk/squeezeplay/src/squeezeplay_jive/share/applets/SqueezeboxJive/SqueezeboxJiveApplet.lua
 Mon Nov 17 08:05:26 2008
@@ -11,6 +11,7 @@
 local jiveBSP                = require("jiveBSP")
 local Watchdog               = require("jiveWatchdog")
 local Wireless               = require("jive.net.Wireless")
+local LocalPlayer            = require("jive.slim.LocalPlayer")
 
 local Applet                 = require("jive.Applet")
 local Sample                 = require("squeezeplay.sample")
@@ -184,11 +185,7 @@
                                              end
 
                                      elseif sw == SW_PHONE_DETECT then
-                                             if val == 1 then
-                                                     os.execute("amixer -q 
sset Endpoint Headphone")
-                                             else
-                                                     os.execute("amixer -q 
sset Endpoint Speaker")
-                                             end
+                                             headphoneJack(self, val)
                                      end
 
                                      return EVENT_CONSUME
@@ -251,12 +248,8 @@
        end
 
        -- headphone or speaker
-       local headphone = jiveBSP.ioctl(18)
-       if headphone == 1 then
-               os.execute("amixer -q sset Endpoint Headphone")
-       else
-               os.execute("amixer -q sset Endpoint Speaker")
-       end
+       local headphoneInserted = jiveBSP.ioctl(18)
+       self:headphoneJack(headphoneInserted)
 
        -- set initial state
        self:update()
@@ -269,6 +262,11 @@
 
 
 function notify_playerCurrent(self, player)
+       -- track changes to the remote player selection for headphone jack
+       if not oo.instanceof(player, LocalPlayer) then
+               self.remotePlayer = player
+       end
+
        -- if not passed a player, or if player hasn't change, exit
        if not player or not player:isConnected() then
                return
@@ -360,6 +358,45 @@
        -- wireless strength
        local quality = self.wireless:getLinkQuality()
        iconbar:setWirelessSignal(quality ~= nil and quality or "ERROR")
+end
+
+
+function headphoneJack(self, inserted)
+       -- switch between headphone and speaker
+       if inserted == 1 then
+               os.execute("amixer -q sset Endpoint Headphone")
+       else
+               os.execute("amixer -q sset Endpoint Speaker")
+       end
+
+       -- automatically select internal player
+       if inserted == 1 then
+               local localPlayer
+
+               if appletManager:hasService("iteratePlayers") then
+                       for _, player in 
appletManager:callService("iteratePlayers") do
+                               if oo.instanceof(player, LocalPlayer) then
+                                       localPlayer = player
+                                       break
+                               end
+                       end
+               end
+
+               if localPlayer then
+
+                       local currentPlayer = 
appletManager:callService("getCurrentPlayer")
+                       if currentPlayer ~= localPlayer then
+                               self.remotePlayer = currentPlayer
+                               appletManager:callService("setCurrentPlayer", 
localPlayer)
+                       end
+               end
+       else
+               -- switch back to remote player
+               if self.remotePlayer then
+                       appletManager:callService("setCurrentPlayer", 
self.remotePlayer)
+                       self.remotePlayer = nil
+               end
+       end
 end
 
 

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

Reply via email to