Symbian.org/preview/script/lib/menu.js
changeset 12 d3fff58a7af9
parent 11 aaba47256eea
child 13 3a1db8573f1e
--- a/Symbian.org/preview/script/lib/menu.js	Tue Jul 21 12:22:37 2009 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,497 +0,0 @@
-/**
- * widget object constructor
- * @param {void}
- *     widget()
- * @return {void}
- */ 
-
-if (typeof window.menu == "undefined" || !window.menu) 
-{
-	window.menu = 
-	{
-		author : 'Nokia WRT Emulation Library',
-		items : [],
-		index : null,
-		isDimmed : false,	
-			
-		//	Event triggers
-		onShow : null,
-		onRightSoftKeySelect : null,
-	};
-	
-	
-	/*
-		Function 	:	menu.append()
-		Argument	:	MenuItem Object
-		Returns		:	Void
-		Description	:	Function appends MenuItem to a Menu Object
-	*/
-	menu.append = function(MenuItem)
-	{
-		if(this.allowedTypeOf(MenuItem))
-		{
-			var i;
-			var flag = true;
-			try{
-			for(var key in this.items)
-			{
-				if(this.items[key].id == MenuItem.id)
-				{	
-					flag = false; 
-					break; 
-				}
-			}} catch(e){ }
-			if(flag)
-			{
-				//	MenuItem.parent = this;
-				this.items[MenuItem.id] = MenuItem;
-			}
-		}
-	}
-	
-	
-	/*
-		Function 	:	menu.remove()
-		Argument	:	MenuItem Object
-		Returns		:	Void
-		Description	:	Function Remove the menuItem and its children from the container options menu.
-	*/
-	menu.remove = function(MenuItem)
-	{
-		if(!this.allowedTypeOf(MenuItem))
-			return false;
-	
-		var flag = false;
-		if (this.items.length) {
-			for (var key in this.items) {
-				if (this.items[key].id == MenuItem.id) {
-					flag = true;
-					break;
-				}
-			}
-		}
-		if(flag)
-		{
-			this.items.splice(key, 1);
-		}
-	}
-	
-	/*
-		Function 	:	menu.clear()
-		Argument	:	Void
-		Returns		:	Void
-		Description	:	Clears (deletes) all the menu items in the menupane.
-	*/
-	menu.clear = function()
-	{
-		try
-		{
-			this.items.splice(0, this.items.length);
-		}catch(e){}
-	}
-	
-	
-	/*
-		Function 	:	Menu.getMenuItemById(id)
-		Argument	:	Integer
-		Returns		:	MenuItem Object
-		Description	:	Function get the MenuItem Object with the reference of id
-	*/
-	menu.getMenuItemById = function(id)
-	{
-		var menuItemRef = menu.menuItemExhistsById(this, id, 0);
-		if(this.allowedTypeOf(menuItemRef))
-			return menuItemRef;
-		else
-			return undefined;
-	}
-	
-	
-	/*
-		Function 	:	Menu.getMenuItemByName(name)
-		Argument	:	String
-		Returns		:	MenuItem Object
-		Description	:	Function get the MenuItem Object with the reference of String name
-	*/
-	menu.getMenuItemByName = function(name)
-	{
-		var menuItemRef = menu.menuItemExhistsById(this, name, 1);
-	
-	//	if(menuItemRef !=null)
-		if(this.allowedTypeOf(menuItemRef))
-			return menuItemRef;
-		else
-			return undefined;
-	}
-	
-	/*
-		Function 	:	Menu.setRightSoftkeyLabel()
-		Argument	:	String, Function
-		Returns		:	Void
-		Description	:	Set the label of the right soft key to str. This enables the default text 
-						to be changed from exit and a new function assigned by setting a callbackfunction
-	*/
-
-	menu.setRightSoftkeyLabel = function(label, callback)
-	{
-		window.menu = this;
-		try
-		{
-			if(typeof label != '' && !label)
-				this.setExitToRsk();			
-
-			else if(typeof callback != 'function' && !callback)
-				this.setExitToRsk();			
-			
-			else if (_BRIDGE_REF.nokia.menu.setRsk(callback)) {
-				_BRIDGE_REF.parent.$("#RskLabel > a")[0].innerHTML = label;
-				_BRIDGE_REF.nokia.menu.rsk_label = label;
-				_BRIDGE_REF.nokia.menu.rsk_event = callback;
-				_BRIDGE_REF.nokia.menu.is_rsk_overridden = true;
-			}
-			else 
-				this.setExitToRsk();
-
-		}catch(e){ 
-			// alert(e);
-		 }
-	}
-
-
-	menu.setExitToRsk = function()
-	{
-		this.onRightSoftKeySelect = null;
-
-		_BRIDGE_REF.nokia.menu.is_rsk_overridden = false;
-		_BRIDGE_REF.nokia.menu.rsk_label = '';
-		_BRIDGE_REF.nokia.menu.rsk_event = null;
-		_BRIDGE_REF.parent.$("#RskLabel > a")[0].innerHTML = 'Exit';
-
-		_BRIDGE_REF.nokia.menu.setRsk(function(){
-			_BRIDGE_REF.nokia.menu.exit();
-		});
-	}
-	
-	/*
-		Function 	:	Menu.showSoftkeys()
-		Argument	:	Void
-		Returns		:	Void
-		Description	:	Makes the softkeys visible. By default the softkeys are not visible
-	
-	*/
-	menu.showSoftkeys = function()
-	{
-		/*
-		 *  Shows showSoftkeys
-		 */
-		_BRIDGE_REF.nokia.menu.softkeys_visibility = true;
-		_BRIDGE_REF.nokia.menu.showSoftKeys();
-	}
-	
-	/*
-		Function 	:	Menu.hideSoftkeys()
-		Argument	:	Void
-		Returns		:	Void
-		Description	:	Makes the softkeys invisible. By default the softkeys are not visible. 
-	
-	*/
-	menu.hideSoftkeys = function()
-	{
-		/*
-		 *  Hide showSoftkeys
-		 */
-		_BRIDGE_REF.nokia.menu.softkeys_visibility = false;
-		_BRIDGE_REF.nokia.menu.hideSoftKeys();
-	}
-	
-	
-	/*	
-	 *  
-	 * ----------------------------------------------------------------
-	 * Exta Functionalities which helps to make main functions to work
-	 * ----------------------------------------------------------------
-	 *  
-	*/
-	
-	menu.cancel = function()
-	{
-		_BRIDGE_REF.nokia.menu.cancel();
-	}
-	
-	menu.exit = function()
-	{
-		_BRIDGE_REF.nokia.menu.exit();
-	}
-	
-	
-	menu.triggeLSKEvent = function()
-	{
-		if(typeof(window.menu.onShow) == 'function')
-		{
-				window.menu.onShow();
-		}
-		_BRIDGE_REF.parent.$('#softKeysPane').show();
-		this.show();
-	}
-	
-	menu.triggerEvent = function(MenuItemId)
-	{
-		try{
-			var menuItemRef = this.menuItemExhistsById(this, MenuItemId, 0);
-			if(menuItemRef != null)
-			{
-				if(typeof menuItemRef.onSelect == 'function')
-					menuItemRef.onSelect(MenuItemId);
-		
-				if(_BRIDGE_REF.helper.getElementsLengthInObject(menuItemRef.items))
-					this.show(MenuItemId);
-				else
-					this.cancel();
-
-			}else
-			{
-				this.show();
-			}
-		}
-		catch(e)
-		{
-			alert('triggeEvent: '+MenuItemId+' >> '+e);
-		}
-	}
-	
-	menu.hasChild = function(parentId)
-	{
-		for(var i in this.items)
-		{
-			if(this.items[i].parentId == parentId)
-			{	
-				 return true;
-			}
-		}
-		return false;
-	}
-	
-	
-	menu.allowedTypeOf = function(MenuItem)
-	{
-		try
-		{
-			if( (typeof(MenuItem) == 'object') && (MenuItem.type == 'MenuItem'))
-				return true;			
-		}
-		catch(e)
-		{
-			return false;
-		}
-	}
-	
-	menu.show = function(parentId)
-	{
-		try
-		{
-			var menuItemsPane = _BRIDGE_REF.parent.$('#MenuItemsArea')
-			menuItemsPane = menuItemsPane[0];
-			
-			menuItemsPane.innerHTML = '';
-			
-			var ul = document.createElement('ul');
-			var ele = window.menu;
-
-			if(typeof parentId != 'undefined' && typeof parentId == 'object')
-			{
-				if (typeof window.menu.onShow != null && typeof window.menu.onShow == 'function') {
-					window.menu.onShow();
-				}
-			}
-
-			if(typeof parentId == 'number')
-			{
-				var tempRef = menu.menuItemExhistsById(ele, parentId, 0);
-	
-				if(typeof parentId != 'undefined' && typeof tempRef != 'undefined')
-					ele = tempRef;
-			}
-
-			if(_BRIDGE_REF.helper.getElementsLengthInObject(ele.items))
-			{
-				for(var key in ele.items)
-				{
-					if(!ele.items[key].isDimmed){
-						
-						try{
-							ul.appendChild(menu.create_menuElement(ele.items[key]));
-						}catch(e){  }
-					}
-				}
-				if(typeof parentId == 'number' && _BRIDGE_REF.helper.getElementsLengthInObject(ele.items))
-				{
-					if(ele.parent)
-						ul.appendChild(menu.create_normalMenuItem('Back', ele.parent.id));	
-					else
-						ul.appendChild(menu.create_normalMenuItem('Back', null));	
-				}
-				else
-				{
-					ul.appendChild(menu.create_exitMenuItem());	
-				}
-
-
-				if(_BRIDGE_REF.helper.getElementsLengthInObject(ele.items) > 5)
-					menuItemsPane.style.overflowY = 'scroll';
-				else
-					menuItemsPane.style.overflowY = 'hidden';
-
-			}
-			else
-			{
-				menuItemsPane.style.overflowY = 'hidden';
-				ul.appendChild(menu.create_exitMenuItem());	
-			}
-			menuItemsPane.innerHTML = '<ul>'+ul.innerHTML+'</ul>';
-			
-			_BRIDGE_REF.nokia.menu.show();
-		}
-		catch(e)
-		{
-			alert('menu.show: '+e);
-		}
-	}
-
-
-
-/*
-*
-*	HELPER FUNCTIONS
-*
-*/
-
-	menu.menuItemExhistsById = function(menuReference, value, argumentType)
-	{
-		var flag = null;
-		
-		for(var key in menuReference.items)
-		{
-			if(!argumentType)
-			{
-				if(menuReference.items[key].id == value)
-				{	
-					flag = true; 
-					break; 
-				}
-			}
-			else
-			{
-				if(menuReference.items[key].name == value)
-				{	
-					flag = true; 
-					break; 
-				}
-			}
-			
-			if(menuReference.items[key].items != undefined && menuReference.items[key].items.length)
-			{
-				var temp = this.menuItemExhistsById(menuReference.items[key], value, argumentType);
-				if(temp)
-					return temp;
-			}
-		}
-		if(flag)
-		{
-			// crate a package and send it
-			menuReference.items[key].index = key;
-			return menuReference.items[key];
-		}
-		else
-			return null;
-	}
-	
-	menu.create_menuElement = function(MenuItem) 
-	{
-		var listitem = document.createElement('li');
-		listitem.id = MenuItem.id;
-		listitem.setAttribute('onClick', 'javascript:NOKIA.emulator.child.menu.triggerEvent('+MenuItem.id+');');
-	
-	    var anchor = document.createElement('a');
-		anchor.id = 'subMenuItem_'+MenuItem.id;
-		anchor.innerHTML = MenuItem.name;
-		if(_BRIDGE_REF.helper.getElementsLengthInObject(MenuItem.items))
-	 	{  
-			anchor.className = 'subMenuItem';
-			anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.show('+MenuItem.id+');');
-		}
-	    listitem.appendChild(anchor);
-		return (listitem);
-	}
-	
-	menu.create_normalMenuItem = function(MenuTitle, index) 
-	{
-	    var listitem = document.createElement('li');
-	
-	    var anchor = document.createElement('a');
-		anchor.id = 'subMenuItem_BACK';
-		anchor.innerHTML = MenuTitle;
-	
-		if (MenuTitle == 'Back') {
-			listitem.className = 'exitOrBackBtn';
-			anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.triggerEvent(' + index + ');');
-		}
-		else 
-			anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.triggerEvent(' + index + ');');
-	    
-		listitem.appendChild(anchor);
-		return (listitem);
-	}
-	
-	menu.create_exitMenuItem = function() 
-	{
-	    var listitem = document.createElement('li');
-		listitem.className = 'exitOrBackBtn';
-	    var anchor = document.createElement('a');
-		anchor.id = 'subMenuItem_EXIT';
-		anchor.innerHTML = 'Exit';
-		anchor.setAttribute('href', 'javascript:NOKIA.emulator.child.menu.exit();');
-		listitem.setAttribute('onClick', 'javascript:NOKIA.emulator.child.menu.exit();');
-		
-	    listitem.appendChild(anchor);
-		return (listitem);
-	}
-	
-	menu.triggeRSK = function()
-	{
-		try {
-			if (window.menu) {
-				if (childToParent_Reference.$('softKeysPane').style.display != 'none') {
-					if (window.menu.onRightSoftKeySelect != null) {
-						window.menu.onRightSoftKeySelect();
-						window.menu.cancel();
-					}
-					else {
-						window.menu.cancel();
-					}
-				}
-			}
-		}catch(e)
-		{
-			alert(e);
-		}
-	}
-	
-	menu.triggeLSK = function()
-	{
-		if(window.menu)
-		{
-			window.menu.show();
-			if(typeof(window.menu.onShow) == 'function')
-			{
-				if(window.menu.onShow)
-				{
-					window.menu.onShow();
-				}
-			}
-		}
-	}
-
-
-	//	make TRUE menu.js script loaded
-	window.parent.NOKIA.scriptsLoaded.menu = true;
-}
\ No newline at end of file