Author: bklaas
Date: Thu May 1 14:55:41 2008
New Revision: 2416
URL: http://svn.slimdevices.com?rev=2416&root=Jive&view=rev
Log:
Bug: 5366
Description: initial pass at CustomizeHomeMenuApplet.
Note: this isn't fully functional yet, particularly with regard to reading
existing settings at boot-time and maintaining that data between changing
players. Also, there need to be some special case assessments for particular
items, e.g., should you be able to hide the customize home menu item,
effectively eliminating your ability to change anything without a factory reset.
It does the basics correctly, however: allows a user to move an item from it's
default node to the home node, or to hide it from view.
I have not added the applet to the makefile yet, so the applet will not be
exposed to the UI yet.
Added:
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/
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
(with props)
Modified:
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
7.1/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua
7.1/trunk/squeezeplay/src/squeezeplay/share/jive/ui/HomeMenu.lua
Added:
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=2416&root=Jive&view=auto
==============================================================================
---
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua
(added)
+++
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuApplet.lua
Thu May 1 14:55:41 2008
@@ -1,0 +1,115 @@
+
+--[[
+=head1 NAME
+
+applets.CustomizeHomeMenu.CustomizeHomeMenuApplet - Customize Home Menu Applet
+
+=head1 DESCRIPTION
+
+This applet is to allow for a user to customize what items are
displayed/hidden from the home menu
+
+=head1 FUNCTIONS
+
+Applet related methods are described in L<jive.Applet>.
+
+=cut
+--]]
+
+
+-- stuff we use
+local tostring, pairs, table = tostring, pairs, table
+local oo = require("loop.simple")
+local string = require("string")
+local table = require("jive.utils.table")
+
+local Applet = require("jive.Applet")
+local Checkbox = require("jive.ui.Checkbox")
+local Choice = require("jive.ui.Choice")
+local RadioButton = require("jive.ui.RadioButton")
+local RadioGroup = require("jive.ui.RadioGroup")
+local Window = require("jive.ui.Window")
+local Popup = require("jive.ui.Popup")
+local Textarea = require('jive.ui.Textarea')
+
+local SimpleMenu = require("jive.ui.SimpleMenu")
+local RadioGroup = require("jive.ui.RadioGroup")
+local log =
require("jive.utils.log").addCategory("customizeHome", jive.utils.log.DEBUG)
+
+local debug = require("jive.utils.debug")
+local jiveMain = jiveMain
+local appletManager = appletManager
+local jnt = jnt
+
+module(...)
+oo.class(_M, Applet)
+
+
+function menu(self, menuItem)
+
+ log:info("menu")
+ local group = RadioGroup()
+ local currentSettings = self:getSettings()
+
+ -- get the menu table from jiveMain
+ local menuTable = jiveMain:getMenuTable()
+ -- get items that have been customized
+ --local customTable = jiveMain:getCustomTable()
+
+ -- get the nodes. these become the choices + hidden
+ local nodeTable = jiveMain:getNodeTable()
+
+ local homeMenuItems = {}
+ for id, item in pairs(menuTable) do
+ if id ~= 'nowhere' and id ~= 'hidden' then
+
+ local selected
+ local choices = { self:string('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'])
+ end
+
+ if currentSettings[id] and currentSettings[id] == 'hidden' then
+ selected = 1
+ elseif currentSettings[id] and currentSettings[id] == 'home'
then
+ selected = 2
+ else
+ selected = #choices
+ end
+
+ local menuItem = {
+ text = item.text,
+ icon = Choice(
+ "choice",
+ choices,
+ function(object, selectedIndex)
+ local node
+ if selectedIndex == 1 then
+ node = 'hidden'
+ elseif selectedIndex == 2 then
+ node = 'home'
+ elseif selectedIndex == 3 then
+ node =
menuTable[id]['defaultNode']
+ end
+ jiveMain:setNode(item, node)
+ self:getSettings()[item.id] = item.node
+ self:storeSettings()
+ end,
+ selected
+ ),
+ }
+ table.insert(homeMenuItems, menuItem)
+ end
+ end
+
+ local menu = SimpleMenu("menu", homeMenuItems )
+ menu:setComparator(menu.itemComparatorAlpha)
+
+ local window = Window("window", self:string("CUSTOMIZE_HOME"))
+ window:addWidget(menu)
+ window:show()
+end
+
Added:
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=2416&root=Jive&view=auto
==============================================================================
---
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua
(added)
+++
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/CustomizeHomeMenuMeta.lua
Thu May 1 14:55:41 2008
@@ -1,0 +1,26 @@
+local oo = require("loop.simple")
+local AppletMeta = require("jive.AppletMeta")
+
+local appletManager = appletManager
+local jiveMain = jiveMain
+
+
+module(...)
+oo.class(_M, AppletMeta)
+
+
+function jiveVersion(meta)
+ return 1, 1
+end
+
+
+function defaultSettings(meta)
+ return {
+ }
+end
+
+function registerApplet(meta)
+
+ jiveMain:addItem(meta:menuItem('customizeHomeApplet', 'home',
"CUSTOMIZE_HOME", function(applet, ...) applet:menu(...) end, 1))
+
+end
Added:
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=2416&root=Jive&view=auto
==============================================================================
---
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
(added)
+++
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
Thu May 1 14:55:41 2008
@@ -1,0 +1,9 @@
+#
+# The two letter codes are defined by ISO 639-1
+# http://en.wikipedia.org/wiki/List_of_ISO_639_codes
+
+CUSTOMIZE_HOME
+ EN Customize Home Menu
+
+HIDDEN
+ EN Hidden
Propchange:
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/CustomizeHomeMenu/strings.txt
------------------------------------------------------------------------------
svn:executable = *
Modified:
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
URL:
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua?rev=2416&root=Jive&r1=2415&r2=2416&view=diff
==============================================================================
---
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
(original)
+++
7.1/trunk/squeezeplay/src/squeezeplay/share/applets/SetupWallpaper/SetupWallpaperApplet.lua
Thu May 1 14:55:41 2008
@@ -87,7 +87,7 @@
}
}
-local authors = { "Chapple", "Scott Robinson", "Los Cardinalos", "Orin
Optiglot", "Ryan McD", "Fred Fredrickson" }
+local authors = { "Chapple", "Scott Robinson", "Los Cardinalos", "Orin
Optiglot", "Ryan McD", "Robbie Fisher" }
local PREFIX = "applets/SetupWallpaper/wallpaper/"
Modified: 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua
URL:
http://svn.slimdevices.com/7.1/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua?rev=2416&root=Jive&r1=2415&r2=2416&view=diff
==============================================================================
--- 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua (original)
+++ 7.1/trunk/squeezeplay/src/squeezeplay/share/jive/JiveMain.lua Thu May 1
14:55:41 2008
@@ -227,6 +227,7 @@
_globalStrings = locale:readGlobalStringsFile()
end
+ jiveMain:addNode( { id = 'hidden', node = 'nowhere' } )
jiveMain:addNode( { id = 'extras', node = 'home', text =
_globalStrings:str("EXTRAS"), weight = 70 } )
jiveMain:addNode( { id = 'games', node = 'extras', text =
_globalStrings:str("GAMES"), weight = 70 } )
jiveMain:addNode( { id = 'settings', node = 'home', text =
_globalStrings:str("SETTINGS"), weight = 50, titleStyle = '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=2416&root=Jive&r1=2415&r2=2416&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 Thu May 1
14:55:41 2008
@@ -40,6 +40,21 @@
return obj
end
+function getMenuTable(self)
+ if self.menuTable then
+ return self.menuTable
+ else
+ return {}
+ end
+end
+
+function getNodeTable(self)
+ if self.nodeTable then
+ return self.nodeTable
+ else
+ return {}
+ end
+end
function setTitle(self, title)
if title then
@@ -49,6 +64,13 @@
end
end
+function setNode(self, item, node)
+ assert(item)
+ assert(node)
+ self:removeItem(item)
+ item.node = node
+ self:addItem(item)
+end
--[[
@@ -87,18 +109,22 @@
end
end
-
function addNode(self, item)
assert(item.id)
assert(item.node)
log:debug("JiveMain.addNode: Adding a non-root node, ", item.id)
+ item.isANode = 1
+
if not item.weight then
item.weight = 100
end
-
- -- remove node from previous node (if changed)
+ if not item.defaultNode then
+ item.defaultNode = item.node
+ end
+
+ -- remove/update node from previous node (if changed)
if self.menuTable[item.id] then
self.menuTable[item.id].text = item.text
local newNode = item.node
@@ -110,8 +136,6 @@
return
end
- -- new/update node
-
local window
if item.window and item.window.titleStyle then
window = Window("window", item.text, item.window.titleStyle ..
"title")
@@ -153,9 +177,13 @@
if not item.weight then
item.weight = 100
end
+ if not item.defaultNode then
+ item.defaultNode = 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
@@ -190,7 +218,7 @@
function _checkRemoveNode(self, node)
local nodeEntry = self.nodeTable[node]
- if nodeEntry.item then
+ if nodeEntry and nodeEntry.item then
local hasItem = self.menuTable[nodeEntry.item.id] ~= nil
if hasItem then
@@ -210,11 +238,9 @@
assert(item)
assert(item.node)
if self.nodeTable[item.node] then
- self.nodeTable[item.node].menu:removeItem(item)
-
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
end
@@ -223,9 +249,10 @@
function removeItemById(self, id)
if self.menuTable[id] then
local item = self.menuTable[id]
-
- self.nodeTable[item.node].menu:removeItemById(id)
- self.nodeTable[item.node].items[id] = nil
+ if self.nodeTable[item.node] then
+ self.nodeTable[item.node].menu:removeItemById(id)
+ self.nodeTable[item.node].items[id] = nil
+ end
self.menuTable[id] = nil
self:_checkRemoveNode(item.node)
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins