Author: blblack
Date: Thu Jan 24 11:59:34 2008
New Revision: 1611

URL: http://svn.slimdevices.com?rev=1611&root=Jive&view=rev
Log:
Added Global Settings for core stuff, accessed via
Framework:getGlobalSetting(key) and Framework:setGlobalSetting(key, value)
Moved the use_sn_beta pref to be a Global Setting controlled
by the NetworkThread
Removed stupid "* SN BETA *" main menu entry
Updated "Music Source" to show "SqueezeNetwork Beta" when beta in use.
Updated SetupSqueezeboxApplet to use the correct server addresses
for the two beta services


Modified:
    branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNApplet.lua
    branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNMeta.lua
    
branches/7.0/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
    branches/7.0/jive/src/pkg/jive/share/jive/net/NetworkThread.lua
    branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServer.lua
    branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServers.lua
    branches/7.0/jive/src/pkg/jive/share/jive/ui/Framework.lua

Modified: branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNApplet.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNApplet.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNApplet.lua 
(original)
+++ branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNApplet.lua Thu 
Jan 24 11:59:34 2008
@@ -8,7 +8,7 @@
 local SimpleMenu             = require("jive.ui.SimpleMenu")
 local Window                 = require("jive.ui.Window")
 
-local log                    = 
require("jive.utils.log").logger("applets.setup")
+local jnt                    = jnt
 
 module(...)
 oo.class(_M, Applet)
@@ -21,14 +21,12 @@
                        icon = Checkbox("checkbox",
                                        function(_, isSelected)
                                                if isSelected then
-                                                       
self:getSettings()["use_sn_beta"] = true
-                                                       self:storeSettings()
+                                                       
jnt:setSNBetaSetting(true);
                                                else
-                                                       
self:getSettings()["use_sn_beta"] = false
-                                                       self:storeSettings()
+                                                       
jnt:setSNBetaSetting(false);
                                                end
                                        end,
-                                       self:getSettings()["use_sn_beta"]
+                                       jnt:getSNBetaSetting()
                                )
                },
        })

Modified: branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNMeta.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNMeta.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNMeta.lua 
(original)
+++ branches/7.0/jive/src/pkg/jive/share/applets/SetupSN/SetupSNMeta.lua Thu 
Jan 24 11:59:34 2008
@@ -1,14 +1,7 @@
 
 local oo            = require("loop.simple")
-
 local AppletMeta    = require("jive.AppletMeta")
-local jul           = require("jive.utils.log")
-
-local appletManager = appletManager
 local jiveMain      = jiveMain
-
-local jnt           = jnt
-local pairs         = pairs
 
 module(...)
 oo.class(_M, AppletMeta)
@@ -19,29 +12,10 @@
 end
 
 function defaultSettings(meta)
-       return {
-               use_sn_beta = false,
-       }
+       return { }
 end
 
 function registerApplet(meta)
-
-       local settings = meta:getSettings()
-       for k,v in pairs(settings) do
-               if k == "use_sn_beta" then
-                       jnt:setSNBeta(v)
-                       if(v) then
-                               jiveMain:addItem({
-                                       id = 'snBetaIndicator',
-                                       node = 'home',
-                                       text = "* SN BETA *",
-                                       weight = 100,
-                                       titleStyle = 'settings'
-                               })
-                       end
-               end
-       end
-
        jiveMain:addItem(meta:menuItem('appletSetupSN', 'advancedSettings', 
"ADVSET_SQUEEZENETWORK", function(applet, ...) applet:settingsShow(...) end))
 end
 

Modified: 
branches/7.0/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- 
branches/7.0/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
 (original)
+++ 
branches/7.0/jive/src/pkg/jive/share/applets/SetupSqueezebox/SetupSqueezeboxApplet.lua
 Thu Jan 24 11:59:34 2008
@@ -31,7 +31,7 @@
 local log                    = 
require("jive.utils.log").logger("applets.setup")
 
 local jnt                    = jnt
-
+local socket                 = require("socket")
 
 local EVENT_KEY_PRESS        = jive.ui.EVENT_KEY_PRESS
 local EVENT_WINDOW_ACTIVE    = jive.ui.EVENT_WINDOW_ACTIVE
@@ -1201,14 +1201,29 @@
        self.slimserver = slimserver:getName()
 
        if slimserver:isSqueezeNetwork() then
-               log:info("slimserver_address=www.squeezenetwork.com")
-
-               self.data2.server_address = Udap.packNumber(1, 4)
                -- set slimserver address to 0.0.0.1 to workaround a bug in
                -- squeezebox firmware
+               --
+               -- XXX this should be 1 or 2 depending on jnt:getSNBeta()
+               -- this:
+               -- self.data2.server_address = Udap.packNumber(1, 4)
+               -- self.data2.slimserver_address = 
Udap.packNumber(parseip("0.0.0.1"), 4)
+               -- or:
+               -- self.data2.server_address = Udap.packNumber(2, 4)
+               -- self.data2.slimserver_address = 
Udap.packNumber(parseip("0.0.0.1"), 4)
+               --
+               -- XXX but until that's in firmware and while using funny beta 
addresses:
+               local ip
+               if jnt:getSNBeta() then
+                       ip = socket.dns.toip(jnt:getSNHostname())
+               else
+                       ip = "207.7.156.11"
+               end
+               log:info("SN server_address=", ip)
+               self.data2.server_address = Udap.packNumber(parseip(ip), 4)
                self.data2.slimserver_address = 
Udap.packNumber(parseip("0.0.0.1"), 4)
        else
-               log:info("slimserver_address=", serverip)
+               log:info("SC slimserver_address=", serverip)
 
                self.data2.server_address = Udap.packNumber(0, 4)
                self.data2.slimserver_address = 
Udap.packNumber(parseip(serverip), 4)

Modified: branches/7.0/jive/src/pkg/jive/share/jive/net/NetworkThread.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/jive/net/NetworkThread.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- branches/7.0/jive/src/pkg/jive/share/jive/net/NetworkThread.lua (original)
+++ branches/7.0/jive/src/pkg/jive/share/jive/net/NetworkThread.lua Thu Jan 24 
11:59:34 2008
@@ -278,41 +278,56 @@
 
 --[[
 
+=head2 setSNBetaSetting(bool)
+
+Changes whether NetworkThread will use
+production or beta SqueezeNetwork servers on
+next reboot.
+
+=cut
+--]]
+function setSNBetaSetting(self, use_sn_beta)
+       Framework:setGlobalSetting("use_sn_beta", use_sn_beta)
+end
+
+--[[
+
+=head2 getSNBetaSetting()
+
+Indicates whether NetworkThread will use
+production or beta SqueezeNetwork servers on
+next reboot.
+
+=cut
+--]]
+function getSNBetaSetting(self)
+       return Framework:getGlobalSetting("use_sn_beta");
+end
+
+--[[
+
 =head2 getSNBeta()
 
 Boolean, indicates whether we're using the SqueezeNetwork
-Beta server (as opposed to production)
+Beta server (as opposed to production) Right Now
 
 =cut
 --]]
 function getSNBeta(self)
-       return self.use_sn_beta
-end
-
---[[
-
-=head2 setSNBeta(use_sn_beta)
-
-Set the use_sn_beta flag in jnt.  This is only to be
-called once by the SetupSN applet's Meta, and affects
-the output of getSNBeta() and getSNHostname()
-
---]]
-function setSNBeta(self, use_sn_beta)
-       self.use_sn_beta = use_sn_beta
+       return self._use_sn_beta
 end
 
 --[[
 
 =head2 getSNHostname()
 
-Retreive the hostname to be used to connect to SqueezeNetwork,
-which is affected by the use_sn_beta (getSNBeta()) flag.
+Retreive the hostname to be used to connect to SqueezeNetwork
+Right Now
 
 =cut
 --]]
 function getSNHostname(self)
-       if self.use_sn_beta then
+       if self._use_sn_beta then
                return "www.beta.squeezenetwork.com"
        else
                return "www.squeezenetwork.com"
@@ -337,6 +352,9 @@
 
                -- list of objects for notify
                subscribers = {},
+
+               -- SN Beta in use?
+               _use_sn_beta = Framework:getGlobalSetting("use_sn_beta")
        })
 
        return obj

Modified: branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServer.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServer.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServer.lua (original)
+++ branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServer.lua Thu Jan 24 
11:59:34 2008
@@ -281,7 +281,11 @@
 
 
 function isSqueezeNetwork(self)
-       return self.name == "SqueezeNetwork"
+       if self.jnt:getSNBeta() then
+               return self.name == "SqueezeNetwork Beta"
+       else
+               return self.name == "SqueezeNetwork"
+       end
 end
 
 

Modified: branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServers.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServers.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServers.lua (original)
+++ branches/7.0/jive/src/pkg/jive/share/jive/slim/SlimServers.lua Thu Jan 24 
11:59:34 2008
@@ -248,7 +248,13 @@
        end
 
        -- Special case Squeezenetwork
-       _cacheServer(self, self.jnt:getSNHostname(), 9000, "SqueezeNetwork")
+       local sn_name
+       if self.jnt:getSNBeta() then
+               sn_name = "SqueezeNetwork Beta"
+       else
+               sn_name = "SqueezeNetwork"
+       end
+       _cacheServer(self, self.jnt:getSNHostname(), 9000, sn_name)
 
        -- Remove SqueezeCenters that have not been seen for a while
        _cacheCleanup(self)

Modified: branches/7.0/jive/src/pkg/jive/share/jive/ui/Framework.lua
URL: 
http://svn.slimdevices.com/branches/7.0/jive/src/pkg/jive/share/jive/ui/Framework.lua?rev=1611&root=Jive&r1=1610&r2=1611&view=diff
==============================================================================
--- branches/7.0/jive/src/pkg/jive/share/jive/ui/Framework.lua (original)
+++ branches/7.0/jive/src/pkg/jive/share/jive/ui/Framework.lua Thu Jan 24 
11:59:34 2008
@@ -28,7 +28,7 @@
 
 
 -- stuff we use
-local _assert, collectgarbage, jive, ipairs, pairs, require, string, tostring, 
type = _assert, collectgarbage, jive, ipairs, pairs, require, string, tostring, 
type
+local _assert, collectgarbage, jive, ipairs, load, pairs, require, setfenv, 
string, tostring, type = _assert, collectgarbage, jive, ipairs, load, pairs, 
require, setfenv, string, tostring, type
 
 local oo            = require("loop.simple")
 local table         = require("jive.utils.table")
@@ -75,6 +75,8 @@
 local log           = require("jive.utils.log").logger("ui")
 local logTask       = require("jive.utils.log").logger("ui.task")
 
+local serialize     = require("jive.utils.serialize")
+local io            = require("io")
 
 -- import C functions
 jive.frameworkOpen()
@@ -93,6 +95,14 @@
 screen.bounds = { 0, 0, 240, 320 }
 screen.bpp = 16
 
+-- Put default global settings here
+default_global_settings = {
+       use_sn_beta = false,
+}
+
+-- To be filled in later when someone tries
+--  to access a setting...
+global_settings_file = nil
 
 --[[ C functions:
 
@@ -444,6 +454,69 @@
 end
 
 
+--[[
+
+=head2 jive.ui.Framework:getGlobalSetting(key)
+
+Get the value of a given Global Settings key
+
+=cut
+--]]
+function getGlobalSetting(self, key)
+
+       if not self._global_settings then
+               -- One-shot initialization, the first
+               -- time someone accesses a Global Setting
+
+               global_settings_file = self:findFile("jive/") .. 
"global_settings.txt"
+
+               local fh = io.open(global_settings_file)
+               if fh == nil then
+                       self._global_settings = default_global_settings
+               else
+                       local f, err = load(function() return fh:read() end)
+                       fh:close()
+                       if not f then
+                               log:error("Error reading global settings: ", 
err)
+                               self._global_settings = default_global_settings
+                       else
+                               -- evalulate the settings in a sandbox
+                               local env = {}
+                               setfenv(f, env)
+                               f()
+                               self._global_settings = env.global_settings
+                       end
+               end
+        end
+
+       return self._global_settings[key]
+end
+
+
+--[[
+
+=head2 jive.ui.Framework:setGlobalSetting(key, value)
+
+Change the value of the Global Setting indicated by key
+
+=cut
+--]]
+function setGlobalSetting(self, key, value)
+       -- skip no-ops
+       -- as a nice side-effect, calling getGlobalSetting
+       -- ensures global_settings_file and self._global_settings
+       -- are initialized
+       if self:getGlobalSetting(key) == value then
+               return
+       end
+
+       self._global_settings[key] = value
+       local file = _assert(io.open(global_settings_file, "w"))
+       serialize.save(file, "global_settings", self._global_settings)
+       file:close()
+end
+
+
 function _addAnimationWidget(self, widget)
        _assert(not table.contains(animations, widget))
 

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

Reply via email to