Author: titmuss
Date: Mon Aug 18 02:49:31 2008
New Revision: 2861

URL: http://svn.slimdevices.com?rev=2861&root=Jive&view=rev
Log:
 [EMAIL PROTECTED] (orig r2860):  titmuss | 2008-08-18 10:47:22 +0100
 Bug: N/A
 Description:
 Applet to allow different squeezeplay skins to be selected.
 
 Temporarily breaks some applets, see Bug 9191.
 
 

Modified:
    7.4/trunk/   (props changed)
    7.4/trunk/squeezeplay/src/squeezeplay/Makefile.am
    7.4/trunk/squeezeplay/src/squeezeplay/Makefile.in
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinApplet.lua
    
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinMeta.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletMeta.lua
    7.4/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_framework.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_style.c
    7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_widget.c
    
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinMeta.lua

Propchange: 7.4/trunk/
------------------------------------------------------------------------------
--- svk:merge (original)
+++ svk:merge Mon Aug 18 02:49:31 2008
@@ -2,7 +2,7 @@
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.1/branches/discovery-refactor:2596
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.1/trunk:2847
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.2/trunk:2855
-bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.3/trunk:2856
+bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/7.3/trunk:2860
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/7.0:2013
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/SN:1083
 bbe22326-0783-4b3a-ac2b-7ab96b24c8d9:/branches/scrolling:1378

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/Makefile.am
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/Makefile.am?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/Makefile.am (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/Makefile.am Mon Aug 18 02:49:31 2008
@@ -410,6 +410,11 @@
 dist_applets_testplayback_DATA = \
        share/applets/TestPlayback/TestPlaybackApplet.lua \
        share/applets/TestPlayback/TestPlaybackMeta.lua
+
+applets_selectskindir = $(datadir)/jive/applets/SelectSkin
+dist_applets_selectskin_DATA = \
+       share/applets/SelectSkin/SelectSkinApplet.lua \
+       share/applets/SelectSkin/SelectSkinMeta.lua
 
 # Default skin
 applets_defaultskindir = $(pkgdatadir)/applets/DefaultSkin

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/Makefile.in
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/Makefile.in?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/Makefile.in (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/Makefile.in Mon Aug 18 02:49:31 2008
@@ -53,6 +53,7 @@
        $(dist_applets_screensavers_DATA) \
        $(dist_applets_screenshot_DATA) \
        $(dist_applets_selectplayer_DATA) \
+       $(dist_applets_selectskin_DATA) \
        $(dist_applets_setupSqueezebox_DATA) \
        $(dist_applets_setupappletinstaller_DATA) \
        $(dist_applets_setupdatetime_DATA) \
@@ -119,6 +120,7 @@
        "$(DESTDIR)$(applets_screensaversdir)" \
        "$(DESTDIR)$(applets_screenshotdir)" \
        "$(DESTDIR)$(applets_selectplayerdir)" \
+       "$(DESTDIR)$(applets_selectskindir)" \
        "$(DESTDIR)$(applets_setupSqueezeboxdir)" \
        "$(DESTDIR)$(applets_setupappletinstallerdir)" \
        "$(DESTDIR)$(applets_setupdatetimedir)" \
@@ -181,6 +183,7 @@
 dist_applets_screensaversDATA_INSTALL = $(INSTALL_DATA)
 dist_applets_screenshotDATA_INSTALL = $(INSTALL_DATA)
 dist_applets_selectplayerDATA_INSTALL = $(INSTALL_DATA)
+dist_applets_selectskinDATA_INSTALL = $(INSTALL_DATA)
 dist_applets_setupSqueezeboxDATA_INSTALL = $(INSTALL_DATA)
 dist_applets_setupappletinstallerDATA_INSTALL = $(INSTALL_DATA)
 dist_applets_setupdatetimeDATA_INSTALL = $(INSTALL_DATA)
@@ -213,6 +216,7 @@
        $(dist_applets_screensavers_DATA) \
        $(dist_applets_screenshot_DATA) \
        $(dist_applets_selectplayer_DATA) \
+       $(dist_applets_selectskin_DATA) \
        $(dist_applets_setupSqueezebox_DATA) \
        $(dist_applets_setupappletinstaller_DATA) \
        $(dist_applets_setupdatetime_DATA) \
@@ -718,6 +722,11 @@
 dist_applets_testplayback_DATA = \
        share/applets/TestPlayback/TestPlaybackApplet.lua \
        share/applets/TestPlayback/TestPlaybackMeta.lua
+
+applets_selectskindir = $(datadir)/jive/applets/SelectSkin
+dist_applets_selectskin_DATA = \
+       share/applets/SelectSkin/SelectSkinApplet.lua \
+       share/applets/SelectSkin/SelectSkinMeta.lua
 
 
 # Default skin
@@ -1650,6 +1659,23 @@
          echo " rm -f '$(DESTDIR)$(applets_selectplayerdir)/$$f'"; \
          rm -f "$(DESTDIR)$(applets_selectplayerdir)/$$f"; \
        done
+install-dist_applets_selectskinDATA: $(dist_applets_selectskin_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(applets_selectskindir)" || $(mkdir_p) 
"$(DESTDIR)$(applets_selectskindir)"
+       @list='$(dist_applets_selectskin_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(dist_applets_selectskinDATA_INSTALL) '$$d$$p' 
'$(DESTDIR)$(applets_selectskindir)/$$f'"; \
+         $(dist_applets_selectskinDATA_INSTALL) "$$d$$p" 
"$(DESTDIR)$(applets_selectskindir)/$$f"; \
+       done
+
+uninstall-dist_applets_selectskinDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_applets_selectskin_DATA)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(applets_selectskindir)/$$f'"; \
+         rm -f "$(DESTDIR)$(applets_selectskindir)/$$f"; \
+       done
 install-dist_applets_setupSqueezeboxDATA: $(dist_applets_setupSqueezebox_DATA)
        @$(NORMAL_INSTALL)
        test -z "$(applets_setupSqueezeboxdir)" || $(mkdir_p) 
"$(DESTDIR)$(applets_setupSqueezeboxdir)"
@@ -2025,7 +2051,7 @@
 distdir: $(DISTFILES)
        $(am__remove_distdir)
        mkdir $(distdir)
-       $(mkdir_p) $(distdir)/config $(distdir)/share/applets/BlankScreen 
$(distdir)/share/applets/ChooseMusicSource $(distdir)/share/applets/Clock 
$(distdir)/share/applets/CustomizeHomeMenu $(distdir)/share/applets/DefaultSkin 
$(distdir)/share/applets/DefaultSkin/images $(distdir)/share/applets/Flickr 
$(distdir)/share/applets/HttpAuth $(distdir)/share/applets/InfoBrowser 
$(distdir)/share/applets/LogSettings $(distdir)/share/applets/MacroPlay 
$(distdir)/share/applets/NowPlaying $(distdir)/share/applets/NowPlaying/images 
$(distdir)/share/applets/ScreenSavers $(distdir)/share/applets/Screenshot 
$(distdir)/share/applets/SelectPlayer 
$(distdir)/share/applets/SetupAppletInstaller 
$(distdir)/share/applets/SetupDateTime $(distdir)/share/applets/SetupLanguage 
$(distdir)/share/applets/SetupNetTest 
$(distdir)/share/applets/SetupSoundEffects 
$(distdir)/share/applets/SetupSoundEffects/sounds 
$(distdir)/share/applets/SetupSqueezebox 
$(distdir)/share/applets/SetupWallpaper $(distdir)/share/appl!
 ets/SetupWallpaper/wallpaper $(distdir)/share/applets/SlimBrowser 
$(distdir)/share/applets/SlimDiscovery 
$(distdir)/share/applets/SqueezeNetworkPIN 
$(distdir)/share/applets/TestPlayback $(distdir)/share/jive 
$(distdir)/share/jive/audio $(distdir)/share/jive/net 
$(distdir)/share/jive/slim $(distdir)/share/jive/ui $(distdir)/share/jive/utils 
$(distdir)/src
+       $(mkdir_p) $(distdir)/config $(distdir)/share/applets/BlankScreen 
$(distdir)/share/applets/ChooseMusicSource $(distdir)/share/applets/Clock 
$(distdir)/share/applets/CustomizeHomeMenu $(distdir)/share/applets/DefaultSkin 
$(distdir)/share/applets/DefaultSkin/images $(distdir)/share/applets/Flickr 
$(distdir)/share/applets/HttpAuth $(distdir)/share/applets/InfoBrowser 
$(distdir)/share/applets/LogSettings $(distdir)/share/applets/MacroPlay 
$(distdir)/share/applets/NowPlaying $(distdir)/share/applets/NowPlaying/images 
$(distdir)/share/applets/ScreenSavers $(distdir)/share/applets/Screenshot 
$(distdir)/share/applets/SelectPlayer $(distdir)/share/applets/SelectSkin 
$(distdir)/share/applets/SetupAppletInstaller 
$(distdir)/share/applets/SetupDateTime $(distdir)/share/applets/SetupLanguage 
$(distdir)/share/applets/SetupNetTest 
$(distdir)/share/applets/SetupSoundEffects 
$(distdir)/share/applets/SetupSoundEffects/sounds 
$(distdir)/share/applets/SetupSqueezebox $(distdir)/share/applets/!
 SetupWallpaper $(distdir)/share/applets/SetupWallpaper/wallpaper 
$(distdir)/share/applets/SlimBrowser $(distdir)/share/applets/SlimDiscovery 
$(distdir)/share/applets/SqueezeNetworkPIN 
$(distdir)/share/applets/TestPlayback $(distdir)/share/jive 
$(distdir)/share/jive/audio $(distdir)/share/jive/net 
$(distdir)/share/jive/slim $(distdir)/share/jive/ui $(distdir)/share/jive/utils 
$(distdir)/src
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
@@ -2154,7 +2180,7 @@
        $(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA)
 installdirs:
-       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testdir)" 
"$(DESTDIR)$(applets_blankscreendir)" 
"$(DESTDIR)$(applets_choosemusicsourcedir)" "$(DESTDIR)$(applets_clockdir)" 
"$(DESTDIR)$(applets_customizehomemenudir)" 
"$(DESTDIR)$(applets_defaultskindir)" 
"$(DESTDIR)$(applets_defaultskin_imagesdir)" "$(DESTDIR)$(applets_flickrdir)" 
"$(DESTDIR)$(applets_httpauthdir)" "$(DESTDIR)$(applets_infobrowserdir)" 
"$(DESTDIR)$(applets_logdir)" "$(DESTDIR)$(applets_macroplaydir)" 
"$(DESTDIR)$(applets_nowplayingdir)" 
"$(DESTDIR)$(applets_nowplaying_imagesdir)" 
"$(DESTDIR)$(applets_screensaversdir)" "$(DESTDIR)$(applets_screenshotdir)" 
"$(DESTDIR)$(applets_selectplayerdir)" 
"$(DESTDIR)$(applets_setupSqueezeboxdir)" 
"$(DESTDIR)$(applets_setupappletinstallerdir)" 
"$(DESTDIR)$(applets_setupdatetimedir)" "$(DESTDIR)$(applets_setuplanguagedir)" 
"$(DESTDIR)$(applets_setupnettestdir)" 
"$(DESTDIR)$(applets_setupsoundeffectsdir)" 
"$(DESTDIR)$(applets_setupsoundeffects_soundsdir)" "$(DESTDIR)$(applet!
 s_setupwallpaperdir)" "$(DESTDIR)$(applets_setupwallpaper_wallpaperdir)" 
"$(DESTDIR)$(applets_slimbrowserdir)" "$(DESTDIR)$(applets_slimdiscoverydir)" 
"$(DESTDIR)$(applets_squeezenetworkpindir)" 
"$(DESTDIR)$(applets_testplaybackdir)" "$(DESTDIR)$(jivedir)" 
"$(DESTDIR)$(jiveuidir)" "$(DESTDIR)$(luaaudiodir)" "$(DESTDIR)$(luanetdir)" 
"$(DESTDIR)$(luaslimdir)" "$(DESTDIR)$(luautildir)"; do \
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(testdir)" 
"$(DESTDIR)$(applets_blankscreendir)" 
"$(DESTDIR)$(applets_choosemusicsourcedir)" "$(DESTDIR)$(applets_clockdir)" 
"$(DESTDIR)$(applets_customizehomemenudir)" 
"$(DESTDIR)$(applets_defaultskindir)" 
"$(DESTDIR)$(applets_defaultskin_imagesdir)" "$(DESTDIR)$(applets_flickrdir)" 
"$(DESTDIR)$(applets_httpauthdir)" "$(DESTDIR)$(applets_infobrowserdir)" 
"$(DESTDIR)$(applets_logdir)" "$(DESTDIR)$(applets_macroplaydir)" 
"$(DESTDIR)$(applets_nowplayingdir)" 
"$(DESTDIR)$(applets_nowplaying_imagesdir)" 
"$(DESTDIR)$(applets_screensaversdir)" "$(DESTDIR)$(applets_screenshotdir)" 
"$(DESTDIR)$(applets_selectplayerdir)" "$(DESTDIR)$(applets_selectskindir)" 
"$(DESTDIR)$(applets_setupSqueezeboxdir)" 
"$(DESTDIR)$(applets_setupappletinstallerdir)" 
"$(DESTDIR)$(applets_setupdatetimedir)" "$(DESTDIR)$(applets_setuplanguagedir)" 
"$(DESTDIR)$(applets_setupnettestdir)" 
"$(DESTDIR)$(applets_setupsoundeffectsdir)" "$(DESTDIR)$(applets_setupsoundef!
 fects_soundsdir)" "$(DESTDIR)$(applets_setupwallpaperdir)" 
"$(DESTDIR)$(applets_setupwallpaper_wallpaperdir)" 
"$(DESTDIR)$(applets_slimbrowserdir)" "$(DESTDIR)$(applets_slimdiscoverydir)" 
"$(DESTDIR)$(applets_squeezenetworkpindir)" 
"$(DESTDIR)$(applets_testplaybackdir)" "$(DESTDIR)$(jivedir)" 
"$(DESTDIR)$(jiveuidir)" "$(DESTDIR)$(luaaudiodir)" "$(DESTDIR)$(luanetdir)" 
"$(DESTDIR)$(luaslimdir)" "$(DESTDIR)$(luautildir)"; do \
          test -z "$$dir" || $(mkdir_p) "$$dir"; \
        done
 install: $(BUILT_SOURCES)
@@ -2221,6 +2247,7 @@
        install-dist_applets_screensaversDATA \
        install-dist_applets_screenshotDATA \
        install-dist_applets_selectplayerDATA \
+       install-dist_applets_selectskinDATA \
        install-dist_applets_setupSqueezeboxDATA \
        install-dist_applets_setupappletinstallerDATA \
        install-dist_applets_setupdatetimeDATA \
@@ -2283,6 +2310,7 @@
        uninstall-dist_applets_screensaversDATA \
        uninstall-dist_applets_screenshotDATA \
        uninstall-dist_applets_selectplayerDATA \
+       uninstall-dist_applets_selectskinDATA \
        uninstall-dist_applets_setupSqueezeboxDATA \
        uninstall-dist_applets_setupappletinstallerDATA \
        uninstall-dist_applets_setupdatetimeDATA \
@@ -2325,6 +2353,7 @@
        install-dist_applets_screensaversDATA \
        install-dist_applets_screenshotDATA \
        install-dist_applets_selectplayerDATA \
+       install-dist_applets_selectskinDATA \
        install-dist_applets_setupSqueezeboxDATA \
        install-dist_applets_setupappletinstallerDATA \
        install-dist_applets_setupdatetimeDATA \
@@ -2362,6 +2391,7 @@
        uninstall-dist_applets_screensaversDATA \
        uninstall-dist_applets_screenshotDATA \
        uninstall-dist_applets_selectplayerDATA \
+       uninstall-dist_applets_selectskinDATA \
        uninstall-dist_applets_setupSqueezeboxDATA \
        uninstall-dist_applets_setupappletinstallerDATA \
        uninstall-dist_applets_setupdatetimeDATA \

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinApplet.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinApplet.lua?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinApplet.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinApplet.lua
 Mon Aug 18 02:49:31 2008
@@ -98,7 +98,11 @@
 
 -- skin
 -- The meta arranges for this to be called to skin Jive.
-function skin(self, s)
+function skin(self, s, reload)
+       if not reload then
+               Framework:setVideoMode(240, 320, 16, false)
+       end
+
        local screenWidth, screenHeight = Framework:getScreenSize()
 
        -- Images and Tiles
@@ -370,6 +374,7 @@
        s.item.order = { "text", "icon" }
        s.item.padding = { 9, 6, 6, 6 }
        s.item.text = {}
+--     s.item.text.padding = { 1, 1, 1, 1 }
        s.item.text.w = WH_FILL
        s.item.text.font = FONT_BOLD_15px
        s.item.text.fg = TEXT_COLOR

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinMeta.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinMeta.lua?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinMeta.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay/share/applets/DefaultSkin/DefaultSkinMeta.lua
 Mon Aug 18 02:49:31 2008
@@ -35,7 +35,7 @@
 
 function registerApplet(self)
        -- load ourselves indirectly through jiveMain
-       jiveMain:loadSkin("DefaultSkin", "skin")
+       jiveMain:registerSkin(self:string("CONTROLLER_SKIN"), "DefaultSkin", 
"skin")
 end
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua 
(original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletManager.lua Mon Aug 
18 02:49:31 2008
@@ -102,7 +102,8 @@
 
                        settings = false,
                        metaLoaded = false,
-                       metaEvaluated = false,
+                       metaRegistered = false,
+                       metaConfigured = false,
                        appletLoaded = false,
                        appletEvaluated = false,
                }
@@ -202,10 +203,10 @@
 
 -- _evalMeta
 -- evaluates the meta information of applet entry
-local function _evalMeta(entry)
+local function _registerMeta(entry)
        log:debug("_evalMeta: ", entry.appletName)
 
-       entry.metaEvaluated = true
+       entry.metaRegistered = true
 
        local class = require(entry.metaModule)
        local obj = class()
@@ -230,48 +231,33 @@
        obj._settings = entry.settings
        obj._stringsTable = entry.stringsTable
 
+       entry.metaObj = obj
+
        -- we're good to go, the meta should now hook the applet
        -- so it can be loaded on demand.
        log:info("Registering: ", entry.appletName)
-       obj:registerApplet()
-
-       -- get rid of us
---     obj._stringsTable = nil
-       obj = nil
-
-       return true
-end
-
-
--- _pevalMeta
--- pcall of _evalMeta
+       entry.metaObj:registerApplet()
+end
+
+
+local function _configureMeta(entry)
+       entry.metaConfiured = true
+
+       entry.metaObj:configureApplet()
+end
+
+
 local function _pevalMeta(entry)
---     log:debug("_pevalMeta(", entry.appletName, ")")
-       
-       local ok, resOrErr = pcall(_evalMeta, entry)
-       
-       -- trash the meta in all cases, it's done it's job
-       package.loaded[entry.metaModule] = nil
-       
-       -- remove strings eating up mucho valuable memory
---     entry.stringsTable = nil
-       
-       if not ok then
-               entry.metaEvaluated = false
-               entry.metaLoaded = false
-               log:error("Error while evaluating meta for ", entry.appletName, 
":", resOrErr)
-               return nil
-       end
-       
-       -- at this point, we have loaded the meta, the applet strings and 
settings
-       -- performed the applet registration and we try to remove all traces of 
the 
-       -- meta but removing it from package.loaded, deleting the string table, 
etc.
-       
-       -- we keep settings around to that we minimize writing to flash. If we 
wanted to
-       -- trash them , we would need to store them here (to reload them if the 
applet ever runs)
-       -- because the meta might have changed them.
-       
-       return resOrErr
+       if entry.metaLoaded and not entry.metaRegistered then
+               local ok, resOrErr = pcall(_registerMeta, entry)
+               if not ok then
+                       entry.metaConfigured = false
+                       entry.metaRegistered = false
+                       entry.metaLoaded = false
+                       log:error("Error registering meta for ", 
entry.appletName, ":", resOrErr)
+                       return nil
+               end
+       end
 end
 
 
@@ -281,9 +267,38 @@
        log:debug("_evalMetas")
 
        for name, entry in pairs(_appletsDb) do
-               if entry.metaLoaded and not entry.metaEvaluated then
-                       _pevalMeta(entry)
-               end
+               _pevalMeta(entry)
+       end
+
+       for name, entry in pairs(_appletsDb) do
+               if entry.metaLoaded and not entry.metaConfigured then
+                       local ok, resOrErr = pcall(_configureMeta, entry)
+                       if not ok then
+                               entry.metaConfigured = false
+                               entry.metaRegistered = false
+                               entry.metaLoaded = false
+                               log:error("Error configuring meta for ", 
entry.appletName, ":", resOrErr)
+                               return nil
+                       end
+               end
+       end
+
+       -- at this point, we have loaded the meta, the applet strings and 
settings
+       -- performed the applet registration and we try to remove all traces of 
the 
+       -- meta by removing it from package.loaded, deleting the string table, 
etc.
+       
+       -- we keep settings around to that we minimize writing to flash. If we 
wanted to
+       -- 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
+               entry.metaObj = nil
+
+               -- trash the meta in all cases, it's done it's job
+               package.loaded[entry.metaModule] = nil
+       
+               -- remove strings eating up mucho valuable memory
+--             entry.stringsTable = nil
        end
 end
 
@@ -301,7 +316,8 @@
        local soundEffectsEntry = _appletsDb["SetupSoundEffects"]
        if soundEffectsEntry then
                _loadMeta(soundEffectsEntry)
-               _evalMeta(soundEffectsEntry)
+               _registerMeta(soundEffectsEntry)
+               _configureMeta(soundEffectsEntry)
        end
 
        _loadMetas()
@@ -424,7 +440,7 @@
        end
        
        -- meta processed?
-       if not entry.metaEvaluated then
+       if not entry.metaRegistered then
                if not entry.metaLoaded and not _ploadMeta(entry) then
                        return nil
                end

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletMeta.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletMeta.lua?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletMeta.lua (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/AppletMeta.lua Mon Aug 18 
02:49:31 2008
@@ -53,6 +53,20 @@
 --]]
 function registerApplet(self)
        error("registerApplet() required")
+end
+
+
+--[[
+
+=head2 self:configureApplet()
+
+Called after all applets have been registered, this can be used to
+configure the applet.
+
+=cut
+--]]
+function configureApplet(self)
+       -- optional
 end
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua Mon Aug 18 
02:49:31 2008
@@ -244,13 +244,79 @@
 
        -- manage applets
        appletManager:discover()
-       
+
+       -- make sure a skin is selected
+       if not self.selectedSkin then
+               for askin in pairs(self.skins) do
+                       self:setSelectedSkin(askin)
+                       break
+               end
+       end
+       assert(self.selectedSkin, "No skin")
+end
+
+
+function JiveMain:registerSkin(name, appletName, method)
+       log:debug("registerSkin(", name, ",", appletName, ")")
+
+       self.skins[appletName] = { name, method }
+end
+
+
+function JiveMain:skinIterator()
+       local _f,_s,_var = pairs(self.skins)
+       return function(_s,_var)
+               local appletName, entry = _f(_s,_var)
+               if appletName then
+                       return appletName, entry[1]
+               else
+                       return nil
+               end
+       end,_s,_var
+end
+
+
+function JiveMain:getSelectedSkin()
+       return self.selectedSkin
+end
+
+
+local function _loadSkin(self, appletName, reload)
+       if not self.skins[appletName] then
+               return false
+       end
+
+       local name, method = unpack(self.skins[appletName])
+       local obj = appletManager:loadApplet(appletName)
+       assert(obj, "Cannot load skin " .. appletName)
+
+       -- reset the skin
+       jive.ui.style = {}
+
+       obj[method](obj, jive.ui.style, reload==nil and true or relaod)
+
        Framework:styleChanged()
+
+       return true
+end
+
+
+function JiveMain:setSelectedSkin(appletName, reload)
+       if _loadSkin(self, appletName, false) then
+               self.selectedSkin = appletName
+       end
+end
+
+
+-- reloadSkin
+-- 
+function JiveMain:reloadSkin(reload)
+       _loadSkin(self, self.selectedSkin, true);
 end
 
 
 -- loadSkin
--- 
+-- XXXX deprecated, to be replaced with per window skinning
 function JiveMain:loadSkin(appletName, method)
        log:debug("loadSkin(", appletName, ")")
        
@@ -258,22 +324,6 @@
        assert(obj, "Cannot load skin " .. appletName)
 
        obj[method](obj, jive.ui.style)
-
-       self.skins[#self.skins + 1] = { obj, method }
-end
-
--- reloadSkin
--- 
-function JiveMain:reloadSkin()
-       -- reset the skin
-       jive.ui.style = {}
-
-       for i,v in ipairs(self.skins) do
-               local obj, method = v[1], v[2]
-               obj[method](obj, jive.ui.style)
-       end
-
-       Framework:styleChanged()
 end
 
 

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_framework.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_framework.c?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_framework.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_framework.c Mon Aug 18 
02:49:31 2008
@@ -723,11 +723,7 @@
        screen_w = luaL_optinteger(L, 2, 0);
        screen_h = luaL_optinteger(L, 3, 0);
 
-       /* redraw screen */
-       lua_pushcfunction(L, jiveL_redraw);
-       lua_pushvalue(L, 1);
-       lua_pushnil(L);
-       lua_call(L, 2, 0);
+       next_jive_origin++;
 
        return 0;
 }

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_style.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_style.c?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_style.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_style.c Mon Aug 18 
02:49:31 2008
@@ -538,19 +538,11 @@
 void jive_style_insets(lua_State *L, int index, char *key, JiveInset *inset) {
        JIVEL_STACK_CHECK_BEGIN(L);
 
-
        lua_pushcfunction(L, jiveL_style_value);
        lua_pushvalue(L, index);
        lua_pushstring(L, key);
        lua_pushnil(L);
        lua_call(L, 3, 1);
-
-       if (lua_isnil(L, -1)) {
-               lua_pop(L, 1);
-
-               JIVEL_STACK_CHECK_ASSERT(L);
-               return;
-       }
 
        if (lua_isinteger(L, -1)) {
                int v = lua_tointeger(L, -1);

Modified: 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_widget.c
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_widget.c?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_widget.c (original)
+++ 7.4/trunk/squeezeplay/src/squeezeplay/src/ui/jive_widget.c Mon Aug 18 
02:49:31 2008
@@ -44,7 +44,6 @@
        lua_getfield(L, 1, "peer");
        peer = lua_touserdata(L, -1);
        if (!peer) {
-               peer = lua_touserdata(L, -1);
                return 0;
        }
 
@@ -379,7 +378,7 @@
                                lua_pushvalue(L, 1);
                                lua_call(L, 1, 0);
                        }
-
+                       
                        if (!peer) {
                                lua_getfield(L, 1, "peer");
                                peer = lua_touserdata(L, -1);

Modified: 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinMeta.lua
URL: 
http://svn.slimdevices.com/7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinMeta.lua?rev=2861&root=Jive&r1=2860&r2=2861&view=diff
==============================================================================
--- 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinMeta.lua
 (original)
+++ 
7.4/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/FullscreenSkin/FullscreenSkinMeta.lua
 Mon Aug 18 02:49:31 2008
@@ -34,7 +34,7 @@
 
 
 function registerApplet(self)
---     jiveMain:loadSkin('FullscreenSkin', 'skin')
+       jiveMain:registerSkin(self:string("DESKTOP_SKIN"), 'FullscreenSkin', 
'skin')
 end
 
 

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

Reply via email to