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