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