Author: bklaas
Date: Fri May  2 14:17:01 2008
New Revision: 2417

URL: http://svn.slimdevices.com?rev=2417&root=Jive&view=rev
Log:
Bug: 5366
Description:

Use a customNodes table in HomeMenu to store information about id's that have 
been configured for reorganization (promoted to home, or hidden). This way the 
CustomizeHomeMeta can register these stored settings without needing a full 
menu already delivered from SC

Add special window for restoring defaults

Add associated strings

(still more work needed, but it's getting close)

Modified:
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua
    
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
    7.1/trunk/squeezeplay/src/squeezeplay/share/jive/ui/HomeMenu.lua

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua?rev=2417&root=Jive&r1=2416&r2=2417&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua
 Fri May  2 14:17:01 2008
@@ -59,17 +59,26 @@
        local nodeTable = jiveMain:getNodeTable()
 
        local homeMenuItems = {}
+       
+       -- first add an entry for returning everything to defaults
+       local menuItem = {
+                       text = self:string('CUSTOMIZE_RESTORE_DEFAULTS'),
+                       weight = 1,
+                       callback = function()
+                               self:restoreDefaultsMenu()
+                       end
+       }
+       table.insert(homeMenuItems, menuItem)
+
        for id, item in pairs(menuTable) do
                if id ~= 'nowhere' and id ~= 'hidden' then
                        
                local selected
-               local choices = { self:string('HIDDEN'), self:string('HOME') }
+               local choices = { self:string('CUSTOMIZE_HIDDEN'), 
self:string('HOME') }
 
-               -- add the default node if it's not home
-               if item.defaultNode ~= 'home' then
-                       log:warn(id)
-                       log:warn(item.node)
-                       table.insert(choices, 
nodeTable[item.defaultNode]['item']['text'])
+               -- add the item's node to the list of choices if it's not home 
or hidden
+               if item.node ~= 'home' and item.node ~= 'hidden' then
+                       table.insert(choices, 
nodeTable[item.node]['item']['text'])
                end
 
                if currentSettings[id] and currentSettings[id] == 'hidden' then
@@ -82,6 +91,7 @@
 
                local menuItem = {
                        text = item.text,
+                       weight = 5,
                        icon = Choice(
                                "choice",
                                choices,
@@ -89,14 +99,19 @@
                                        local node
                                        if selectedIndex == 1 then
                                                node = 'hidden'
+                                               self:getSettings()[item.id] = 
node
                                        elseif selectedIndex == 2 then
                                                node = 'home'
+                                               self:getSettings()[item.id] = 
node
                                        elseif selectedIndex == 3 then
-                                               node = 
menuTable[id]['defaultNode']
+                                               node = menuTable[id]['node']
+                                               self:getSettings()[item.id] = 
nil
                                        end
+                                       -- special case: we want the customize 
home applet to move to the home menu when settings is removed
+                                       if item.id == settings and node == 
'hidden' then
+                                       end
+                                       self:storeSettings()
                                        jiveMain:setNode(item, node)
-                                       self:getSettings()[item.id] = item.node
-                                       self:storeSettings()
                                end,
                                selected
                        ),
@@ -106,10 +121,42 @@
        end
 
        local menu = SimpleMenu("menu",  homeMenuItems  )
-       menu:setComparator(menu.itemComparatorAlpha)
+       menu:setComparator(menu.itemComparatorWeightAlpha)
 
-       local window = Window("window", self:string("CUSTOMIZE_HOME"))
+       local window = Window("window", self:string("CUSTOMIZE_HOME"), 
'settingstitle')
        window:addWidget(menu)
        window:show()
 end
 
+function restoreDefaultsMenu(self)
+       local window = Window("window", 
self:string("CUSTOMIZE_RESTORE_DEFAULTS"), 'settingstitle')
+        local menu = SimpleMenu("menu", {
+               {
+                       text = self:string("CUSTOMIZE_CANCEL"),
+                       sound = "WINDOWHIDE",
+                       callback = function()
+                               window:hide()
+                       end
+               },
+               {
+                       text = self:string("CUSTOMIZE_CONTINUE"),
+                       sound = "WINDOWSHOW",
+                       callback = function()
+                               local currentSettings = self:getSettings()
+                               for id, node in pairs(currentSettings) do
+                                       self:getSettings()[id] = nil
+                                       -- fetch item by id
+                                       local item = jiveMain:getItemById(id)
+                                       -- replace to original node, remove 
customNode
+                                       jiveMain:setNode(item, item.node)
+                               end
+                               self:storeSettings()
+                               window:hide()
+                       end
+               },
+       })
+
+       window:addWidget(Textarea("help", 
self:string("CUSTOMIZE_RESTORE_DEFAULTS_HELP")))
+        window:addWidget(menu)
+       window:show()
+end

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua?rev=2417&root=Jive&r1=2416&r2=2417&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua
 Fri May  2 14:17:01 2008
@@ -1,5 +1,7 @@
+local pairs         = pairs
 local oo            = require("loop.simple")
 local AppletMeta    = require("jive.AppletMeta")
+local log           = require("jive.utils.log").addCategory("customizeHome", 
jive.utils.log.DEBUG)
 
 local appletManager = appletManager
 local jiveMain      = jiveMain
@@ -9,18 +11,23 @@
 oo.class(_M, AppletMeta)
 
 
-function jiveVersion(meta)
+function jiveVersion(self)
        return 1, 1
 end
 
-
-function defaultSettings(meta)
+function defaultSettings(self)
         return {
         }
 end
 
-function registerApplet(meta)
-       
-       jiveMain:addItem(meta:menuItem('customizeHomeApplet', 'home', 
"CUSTOMIZE_HOME", function(applet, ...) applet:menu(...) end, 1))
+function registerApplet(self)
+
+       -- register custom nodes for ids stored in settings.lua in a HomeMenu 
table customNodes
+       local currentSettings = self:getSettings()
+       for id, node in pairs(currentSettings) do
+               jiveMain:setCustomNode(id, node)
+       end
+
+       jiveMain:addItem(self:menuItem('customizeHomeApplet', 'home', 
"CUSTOMIZE_HOME", function(applet, ...) applet:menu(...) end, 1))
 
 end

Modified: 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt?rev=2417&root=Jive&r1=2416&r2=2417&view=diff
==============================================================================
--- 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
 (original)
+++ 
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
 Fri May  2 14:17:01 2008
@@ -5,5 +5,29 @@
 CUSTOMIZE_HOME
        EN      Customize Home Menu
 
-HIDDEN
+CUSTOMIZE_HIDDEN
        EN      Hidden
+
+CUSTOMIZE_RESTORE_DEFAULTS
+       EN      Restore Menu Defaults
+
+CUSTOMIZE_CANCEL
+       DA      Afbryd
+       DE      Abbrechen
+       EN      Cancel
+       ES      Cancelar
+       FR      Annuler
+       IT      Annulla
+       NL      Annuleren
+
+CUSTOMIZE_CONTINUE
+       DA      Fortsæt
+       DE      Weiter
+       EN      Continue
+       ES      Continuar
+       FR      Continuer
+       IT      Continua
+       NL      Verdergaan
+
+CUSTOMIZE_RESTORE_DEFAULTS_HELP
+       EN      Select "Continue" to remove all custom menu organization 
settings

Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/ui/HomeMenu.lua
URL: 
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/ui/HomeMenu.lua?rev=2417&root=Jive&r1=2416&r2=2417&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/ui/HomeMenu.lua (original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/ui/HomeMenu.lua Fri May  2 
14:17:01 2008
@@ -23,6 +23,7 @@
                windowTitle = name,
                menuTable = {},
                nodeTable = {},
+               customNodes = {},
        })
 
        local menu = SimpleMenu("menu")
@@ -41,19 +42,11 @@
 end
 
 function getMenuTable(self)
-       if self.menuTable then
-               return self.menuTable
-       else
-               return {}
-       end
+       return self.menuTable
 end
 
 function getNodeTable(self)
-       if self.nodeTable then
-               return self.nodeTable
-       else
-               return {}
-       end
+       return self.nodeTable
 end
 
 function setTitle(self, title)
@@ -64,11 +57,21 @@
        end
 end
 
+function setCustomNode(self, id, node)
+       if self.menuTable[id] then
+               local item = self.menuTable[id]
+               self:removeItem(item)
+               self:addItem(item)
+       end
+       self.customNodes[id] = node
+end
+
 function setNode(self, item, node)
        assert(item)
        assert(node)
+
        self:removeItem(item)
-       item.node = node
+       self:setCustomNode(item.id, node)
        self:addItem(item)
 end
 
@@ -181,17 +184,23 @@
                item.defaultNode = item.node
        end
 
+       local whichNode
+       if self.customNodes[item.id] then
+               whichNode = self.customNodes[item.id]
+       else
+               whichNode = item.node
+       end
+
        -- add or update the item from the menuTable
        self.menuTable[item.id] = item
-       log:warn(self.menuTable[item.id]['node'])
-
-       if self.nodeTable[item.node] then
-               self.nodeTable[item.node].items[item.id] = item
-               self.nodeTable[item.node].menu:addItem(item)
+
+       if self.nodeTable[whichNode] then
+               self.nodeTable[whichNode].items[item.id] = item
+               self.nodeTable[whichNode].menu:addItem(item)
        end
 
        -- add parent node?
-       local nodeEntry = self.nodeTable[item.node]
+       local nodeEntry = self.nodeTable[whichNode]
        if nodeEntry and nodeEntry.item then
                local hasItem = self.menuTable[nodeEntry.item.id] ~= nil
 
@@ -237,11 +246,22 @@
 function removeItem(self, item)
        assert(item)
        assert(item.node)
-       if self.nodeTable[item.node] then
+
+       if self.menuTable[item.id] then
                self.menuTable[item.id] = nil
-               self.nodeTable[item.node].items[item.id] = nil
-               self.nodeTable[item.node].menu:removeItem(item)
-               self:_checkRemoveNode(item.node)
+       end
+
+       local node
+       if self.customNodes[item.id] then
+               node = self.customNodes[item.id]
+       elseif self.nodeTable[item.node] then
+               node = item.node
+       end
+
+       if self.nodeTable[node] then
+               self.nodeTable[node].items[item.id] = nil
+               self.nodeTable[node].menu:removeItem(item)
+               self:_checkRemoveNode(node)
        end
 end
 

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

Reply via email to