Author: tom
Date: Mon Nov  3 06:26:29 2008
New Revision: 3257

URL: http://svn.slimdevices.com?rev=3257&root=Jive&view=rev
Log:
Bug 8669,9843:
Description: 
Applet load support, no stopped screensaver by default

Added:
    
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/loadPriority.lua
    
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/loadPriority.lua
Modified:
    
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
    7.3/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua
    
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/DesktopJiveMeta.lua

Modified: 
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua?rev=3257&root=Jive&r1=3256&r2=3257&view=diff
==============================================================================
--- 
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
 (original)
+++ 
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/ScreenSavers/ScreenSaversApplet.lua
 Mon Nov  3 06:26:29 2008
@@ -50,7 +50,7 @@
 function init(self, ...)
        self.screensavers = {}
        self.screensaverSettings = {}
-       self:addScreenSaver(self:string("SCREENSAVER_NONE"), nil, nil, _, _, 
100)
+       self:addScreenSaver(self:string("SCREENSAVER_NONE"), false, false, _, 
_, 100)
 
        self.timeout = self:getSettings()["timeout"]
 
@@ -126,7 +126,7 @@
        end
 
        local screensaver = self.screensavers[the_screensaver]
-       if screensaver == nil or screensaver.applet == nil then
+       if not screensaver or not screensaver.applet then
                -- no screensaver, do nothing
                return
        end

Added: 
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/loadPriority.lua
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/loadPriority.lua?rev=3257&root=Jive&view=auto
==============================================================================
--- 
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/loadPriority.lua
 (added)
+++ 
7.3/trunk/squeezeplay/src/squeezeplay/share/applets/SetupSoundEffects/loadPriority.lua
 Mon Nov  3 06:26:29 2008
@@ -1,0 +1,1 @@
+loadPriority=1

Modified: 7.3/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua?rev=3257&root=Jive&r1=3256&r2=3257&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua 
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua Mon Nov  
3 06:26:29 2008
@@ -32,6 +32,7 @@
 local log              = require("jive.utils.log").logger("applets.misc")
 local locale           = require("jive.utils.locale")
 local dumper           = require("jive.utils.dumper")
+local table            = require("jive.utils.table")
 
 local JIVE_VERSION     = jive.JIVE_VERSION
 local EVENT_ACTION     = jive.ui.EVENT_ACTION
@@ -56,6 +57,9 @@
 
 -- applet services
 local _services = {}
+
+local _defaultSettingsByAppletName = {}
+--work in progress-- local _overrideSettingsByAppletName = {}
 
 -- allowed applets, can be used for debugging to limit applets loaded
 --[[
@@ -106,6 +110,7 @@
                        metaConfigured = false,
                        appletLoaded = false,
                        appletEvaluated = false,
+                       loadPriority = _getLoadPriority(dir.. "/" .. name)
                }
                _appletsDb[name] = newEntry
        end
@@ -193,7 +198,7 @@
 local function _loadMetas()
        log:debug("_loadMetas")
 
-       for name, entry in pairs(_appletsDb) do
+       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
                if not entry.metaLoaded then
                        _ploadMeta(entry)
                end
@@ -223,10 +228,40 @@
 
        if not entry.settings then
                entry.settings = obj:defaultSettings()
+
+               --apply global defaults
+               local globalDefaultSettings = 
_getDefaultSettings(entry.appletName)
+       
+               if globalDefaultSettings then           
+                       if not entry.settings then
+                               entry.settings = {}
+                       end
+                       
+                       for settingName, settingValue in 
pairs(globalDefaultSettings) do
+                               --global defaults override applet default 
settings
+                               log:error("Setting global default", 
settingName, "=", settingValue)
+                               entry.settings[settingName] = settingValue
+                       end
+               end
+
        else
                entry.settings = obj:upgradeSettings(entry.settings)
        end
 
+       --apply global overrides
+--     local overrideSettings = _getOverrideSettings(entry.appletName)
+--
+--     if defaultSettings then
+--             if not entry.settings then
+--                     entry.settings = {}
+--             end
+--             
+--             for settingName, settingValue in pairs(defaultSettings) do
+--                     --global defaults override applet default settings
+--                     entry.settings[settingName] = settingValue
+--             end
+--     end
+       
        obj._entry = entry
        obj._settings = entry.settings
        obj._stringsTable = entry.stringsTable
@@ -268,11 +303,11 @@
 local function _evalMetas()
        log:debug("_evalMetas")
 
-       for name, entry in pairs(_appletsDb) do
+       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
                _pevalMeta(entry)
        end
 
-       for name, entry in pairs(_appletsDb) do
+       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
                if entry.metaLoaded and not entry.metaConfigured then
                        local ok, resOrErr = pcall(_configureMeta, entry)
                        if not ok then
@@ -293,7 +328,7 @@
        -- trash them , we would need to store them here (to reload them if the 
applet ever runs)
        -- because the meta might have changed them.
 
-       for name, entry in pairs(_appletsDb) do
+       for name, entry in pairs(getSortedAppletDb(_appletsDb)) do
                entry.metaObj = nil
 
                -- trash the meta in all cases, it's done it's job
@@ -311,19 +346,26 @@
        log:debug("AppletManager:loadApplets")
 
        _findApplets()
-
-       -- load the sound effects applet first so the startup
-       -- sound is played without delay.
-       -- FIXME make the startup order of applet configurable
-       local soundEffectsEntry = _appletsDb["SetupSoundEffects"]
-       if soundEffectsEntry then
-               _loadMeta(soundEffectsEntry)
-               _registerMeta(soundEffectsEntry)
-               _configureMeta(soundEffectsEntry)
-       end
-
        _loadMetas()
        _evalMetas()
+end
+
+
+function getSortedAppletDb(hash)
+    local sortedTable = {};
+    for k, value in pairs(hash) do
+        table.insert(sortedTable, value);
+    end
+    table.sort(sortedTable, _comparatorLoadPriorityThenAlphabetic)
+    return sortedTable;
+end
+
+function _comparatorLoadPriorityThenAlphabetic(a, b)
+       if (a.loadPriority ~= b.loadPriority) then
+               return a.loadPriority < b.loadPriority
+       else
+               return a.appletName < b.appletName                              
+       end     
 end
 
 
@@ -542,6 +584,33 @@
        end
 end
 
+-- _getLoadPriority
+--
+function _getLoadPriority(appletDir)
+
+       log:debug("_getLoadPriority: ", appletDir)
+
+       local fh = io.open(appletDir .. "/" .. "loadPriority.lua")
+       if fh == nil then
+               -- no loadPriority file, retrun default priority
+               return 100
+       end
+
+       local f, err = load(function() return fh:read() end)
+       fh:close()
+
+       if not f then
+               log:error("Error reading ", appletDir, " loadPriority: ", err)
+       else
+               -- evalulate in a sandbox
+               local env = {}
+               setfenv(f, env)
+               f()
+
+               return env.loadPriority
+       end
+end
+
 
 -- _storeSettings
 --
@@ -609,6 +678,25 @@
 end
 
 
+function _getDefaultSettings(appletName)
+       return _defaultSettingsByAppletName[appletName]
+end
+
+function _setDefaultSettings(appletName, settings)
+       if not _defaultSettingsByAppletName[appletName] then
+               _defaultSettingsByAppletName[appletName] = {}
+       end
+       _defaultSettingsByAppletName[appletName] = settings
+end
+
+function addDefaultSetting(self, appletName, settingName, settingValue)
+       if not _defaultSettingsByAppletName[appletName] then
+               _defaultSettingsByAppletName[appletName] = {}
+       end
+       _defaultSettingsByAppletName[appletName][settingName] = settingValue
+end
+
+
 function registerService(self, appletName, service)
        log:debug("registerService appletName=", appletName, " service=", 
service)
 

Modified: 
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/DesktopJiveMeta.lua
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/DesktopJiveMeta.lua?rev=3257&root=Jive&r1=3256&r2=3257&view=diff
==============================================================================
--- 
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/DesktopJiveMeta.lua
 (original)
+++ 
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/DesktopJiveMeta.lua
 Mon Nov  3 06:26:29 2008
@@ -90,6 +90,8 @@
        -- set uuid
        jnt:setUUID(settings.uuid, settings.mac)
        
+       appletManager:addDefaultSetting("ScreenSavers", "whenStopped", 
"false:false")
+
        jiveMain:setDefaultSkin("FullscreenSkin")
 end
 

Added: 
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/loadPriority.lua
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/loadPriority.lua?rev=3257&root=Jive&view=auto
==============================================================================
--- 
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/loadPriority.lua
 (added)
+++ 
7.3/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/DesktopJive/loadPriority.lua
 Mon Nov  3 06:26:29 2008
@@ -1,0 +1,1 @@
+loadPriority=2

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

Reply via email to