org.symbian.tools.wrttools.previewer/preview/script/menu.js
changeset 402 f943a50b6689
child 405 9ce576f05e7a
equal deleted inserted replaced
400:91acf7e95f86 402:f943a50b6689
       
     1 function EmulatorMenu() {
       
     2 	this.is_menu_visible = false; // true/false
       
     3 	this.is_softkeys_visible = false; // true : only when MenuItem's are
       
     4 										// displayed
       
     5 	this.softkeys_visibility = true; // true/false : for hide/show SFK's
       
     6 	this.is_dimmed = false;
       
     7 	this.is_rsk_overridden = false;
       
     8 	this.log_counter = 1;
       
     9 	this.enable_log = false;
       
    10 	this.rsk_label = '';
       
    11 	this.rsk_event = false;
       
    12 	this.highlighted_item = null;
       
    13 }
       
    14 
       
    15 EmulatorMenu.prototype.hide = function() {
       
    16 	$("#MenuItemsArea").fadeIn("slow");
       
    17 
       
    18 	// Hide the SFK's If user hidden them from his code
       
    19 	if (NOKIA.menu.softkeys_visibility)
       
    20 		$("#SoftKeysArea").fadeIn("slow");
       
    21 
       
    22 	NOKIA.menu.is_softkeys_visible = false;
       
    23 };
       
    24 
       
    25 EmulatorMenu.prototype.log = function(str) {
       
    26 	if (!this.enable_log)
       
    27 		return false;
       
    28 	NOKIA.layout.log("log", NOKIA.menu.log_counter + ' ' + str);
       
    29 	NOKIA.layout.log("log", 'is_rsk_overridden: '
       
    30 			+ NOKIA.menu.is_rsk_overridden);
       
    31 	NOKIA.layout.log("log", 'rsk_label: ' + NOKIA.menu.rsk_label);
       
    32 	NOKIA.layout.log("log", 'rsk_event: ' + NOKIA.menu.rsk_event);
       
    33 
       
    34 	NOKIA.menu.log_counter++;
       
    35 };
       
    36 
       
    37 EmulatorMenu.prototype.show = function() {
       
    38 	if (NOKIA.menu.is_dimmed)
       
    39 		return false;
       
    40 
       
    41 	NOKIA.menu.showSoftKeys();
       
    42 
       
    43 	NOKIA.menu.is_menu_visible = true;
       
    44 	$("#MenuItemsArea").show();
       
    45 
       
    46 	NOKIA.menu.highlighted_item = $("#MenuItemsArea > ul > li")[0];
       
    47 	NOKIA.menu.highlighted_item.className = 'active';
       
    48 
       
    49 	$("#MenuItemsArea > ul > li").mouseover(function() {
       
    50 		if (NOKIA.menu.highlighted_item != null) {
       
    51 			NOKIA.menu.highlighted_item.className = '';
       
    52 			NOKIA.menu.highlighted_item = null;
       
    53 		}
       
    54 
       
    55 		NOKIA.menu.highlighted_item = this;
       
    56 		NOKIA.menu.highlighted_item.className = 'active';
       
    57 	});
       
    58 
       
    59 	$("#SoftKeysArea").mouseout(function() {
       
    60 		if (!NOKIA.menu.is_menu_visible) {
       
    61 			return false;
       
    62 		}
       
    63 
       
    64 		if (NOKIA.helper.intervalId) {
       
    65 			clearInterval(NOKIA.helper.intervalId);
       
    66 		}
       
    67 		NOKIA.helper.intervalId = setTimeout(function() {
       
    68 			NOKIA.menu.cancel();
       
    69 		}, 500);
       
    70 	});
       
    71 
       
    72 	// Change the label "Options" to "Select" to LSK
       
    73 	$("#LskLabel > a")[0].innerHTML = "Select";
       
    74 	NOKIA.menu.setLsk(NOKIA.menu.selectMenu);
       
    75 
       
    76 	// Change the label "Exit" to "Cancel" to RSK
       
    77 	$("#RskLabel > a")[0].innerHTML = 'Cancel';
       
    78 	NOKIA.menu.setRsk(NOKIA.menu.cancel);
       
    79 
       
    80 	NOKIA.emulator.setMenuItemsStyle();
       
    81 
       
    82 };
       
    83 
       
    84 EmulatorMenu.prototype.selectMenu = function() {
       
    85 	try {
       
    86 		if (typeof NOKIA.menu.highlighted_item.onclick != 'undefined') {
       
    87 			eval(NOKIA.menu.highlighted_item.onclick)();
       
    88 		}
       
    89 	} catch (e) {
       
    90 
       
    91 	}
       
    92 	// NOKIA.menu.cancel();
       
    93 };
       
    94 
       
    95 EmulatorMenu.prototype.cancel = function() {
       
    96 	if (NOKIA.menu.is_dimmed)
       
    97 		return false;
       
    98 
       
    99 	NOKIA.menu.hideSoftKeys();
       
   100 
       
   101 	NOKIA.menu.is_menu_visible = false;
       
   102 	$("#MenuItemsArea").hide();
       
   103 
       
   104 	// Reset the "OPTION" label to LSK
       
   105 	$("#LskLabel > a")[0].innerHTML = 'Options';
       
   106 	NOKIA.menu.setLsk(NOKIA.emulator.child.menu.show);
       
   107 
       
   108 	// Change the label "CANCEL" to "EXIT" to RSK
       
   109 	if (!NOKIA.menu.is_rsk_overridden) {
       
   110 		$("#RskLabel > a")[0].innerHTML = 'Exit';
       
   111 		NOKIA.menu.setRsk(NOKIA.menu.exit);
       
   112 	} else {
       
   113 		$("#RskLabel > a")[0].innerHTML = NOKIA.menu.rsk_label;
       
   114 		NOKIA.menu.setRsk(NOKIA.menu.rsk_event);
       
   115 	}
       
   116 
       
   117 };
       
   118 
       
   119 EmulatorMenu.prototype.exit = function() {
       
   120 	if (NOKIA.menu.is_dimmed)
       
   121 		return false;
       
   122 
       
   123 	if (NOKIA.helper.setHomeScreen())
       
   124 		return false;
       
   125 
       
   126 	// clear the Menu Settings
       
   127 	NOKIA.menu.cancel();
       
   128 	NOKIA.emulator.child.menu.setRightSoftkeyLabel('', null);
       
   129 	NOKIA.emulator.child.menu.items = [];
       
   130 	NOKIA.menu.softkeys_visibility = false;
       
   131 
       
   132 	// Hide Widget DIV
       
   133 	NOKIA.menu.hideSoftKeys();
       
   134 	NOKIA.menu.setLsk(function() {
       
   135 	});
       
   136 	NOKIA.menu.setRsk(function() {
       
   137 	});
       
   138 
       
   139 	$("#WidgetArea").hide();
       
   140 
       
   141 	// Show Icon
       
   142 	var style = NOKIA.deviceList[NOKIA.currentDevice][NOKIA.mode]['style'];
       
   143 	$('#IconArea').css( {
       
   144 		'width' : '100%',
       
   145 		'height' : style['widget']['height'] + 'px',
       
   146 		'float' : style['widget']['float']
       
   147 	});
       
   148 
       
   149 	$('#IconArea')[0].className = NOKIA.mode + NOKIA.currentDevice;
       
   150 
       
   151 	var img = document.createElement('img');
       
   152 	img.src = NOKIA.emulator.iconFile;
       
   153 	img.border = 0;
       
   154 
       
   155 	var div = document.createElement('div');
       
   156 	var p = document.createElement('p');
       
   157 
       
   158 	if (NOKIA.emulator.plist.DisplayName.length <= 12)
       
   159 		p.innerHTML = NOKIA.emulator.plist.DisplayName;
       
   160 	else
       
   161 		p.innerHTML = NOKIA.emulator.plist.DisplayName.substr(0, 11) + '...';
       
   162 
       
   163 	div.className = 'IconFile';
       
   164 	div.style.marginTop = parseInt(parseInt(style['widget']['height'] / 2) - 80)
       
   165 			+ 'px';
       
   166 	div.appendChild(img);
       
   167 	img.onclick = function() {
       
   168 
       
   169 		// close the console DIV
       
   170 		NOKIA.layout._console_enabled = false;
       
   171 		NOKIA.layout.render();
       
   172 
       
   173 		$("#loaderDiv").html("Widget is loading. Please wait...");
       
   174 		$("#loaderDiv")[0].className = 'green';
       
   175 		$("#loaderDiv").show();
       
   176 		window.setTimeout(function() {
       
   177 			document.location = document.location;
       
   178 		}, 3000);
       
   179 
       
   180 	};
       
   181 
       
   182 	div.appendChild(p);
       
   183 
       
   184 	$("#loaderDiv").html("Click on Icon to Launch Widget");
       
   185 	$("#loaderDiv").show();
       
   186 	$("#loaderDiv")[0].className = 'yellow';
       
   187 
       
   188 	$('#IconArea').append(div);
       
   189 	$('#IconArea').show();
       
   190 
       
   191 	NOKIA.menu.is_dimmed = true;
       
   192 
       
   193 };
       
   194 
       
   195 EmulatorMenu.prototype.setLsk = function(func) {
       
   196 	// for RSK
       
   197 	$('#LskArea')[0].onclick = function() {
       
   198 		if (!NOKIA.menu.is_dimmed)
       
   199 			func();
       
   200 	};
       
   201 
       
   202 	$('#LskLabel > a')[0].onclick = function() {
       
   203 		if (!NOKIA.menu.is_dimmed)
       
   204 			func();
       
   205 	};
       
   206 
       
   207 	return true;
       
   208 };
       
   209 
       
   210 EmulatorMenu.prototype.setRsk = function(func) {
       
   211 	// for RSK
       
   212 	$('#RskArea')[0].onclick = function() {
       
   213 		if (!NOKIA.menu.is_dimmed)
       
   214 			func();
       
   215 	};
       
   216 
       
   217 	$('#RskLabel > a')[0].onclick = function() {
       
   218 		if (!NOKIA.menu.is_dimmed)
       
   219 			func();
       
   220 	};
       
   221 
       
   222 	return true;
       
   223 };
       
   224 
       
   225 EmulatorMenu.prototype.triggerLsk = function(event) {
       
   226 	var callback;
       
   227 	if (NOKIA.mode == 'portrait')
       
   228 		callback = NOKIA.menu.lsk_event;
       
   229 	else if ((NOKIA.mode == 'landscape') && (event.id == 'LskLabel'))
       
   230 		callback = NOKIA.menu.lsk_event;
       
   231 	else
       
   232 		callback = NOKIA.menu.rsk_event;
       
   233 
       
   234 	if (typeof callback == 'function' && !NOKIA.menu.is_dimmed) {
       
   235 		callback();
       
   236 	}
       
   237 };
       
   238 
       
   239 EmulatorMenu.prototype.triggerRsk = function(event) {
       
   240 	var callback;
       
   241 	if (NOKIA.mode == 'portrait')
       
   242 		callback = NOKIA.menu.rsk_event;
       
   243 	else if ((NOKIA.mode == 'landscape') && (event.id == 'RskLabel'))
       
   244 		callback = NOKIA.menu.rsk_event;
       
   245 	else
       
   246 		callback = NOKIA.menu.lsk_event;
       
   247 
       
   248 	if (typeof callback == 'function') {
       
   249 		if (!NOKIA.menu.is_dimmed) {
       
   250 			callback();
       
   251 			NOKIA.menu.cancel();
       
   252 		}
       
   253 	}
       
   254 };
       
   255 
       
   256 EmulatorMenu.prototype.render = function() {
       
   257 	if (!NOKIA.menu.softkeys_visibility)
       
   258 		NOKIA.menu.hideSoftKeys();
       
   259 	else
       
   260 		NOKIA.menu.showSoftKeys();
       
   261 
       
   262 	NOKIA.emulator.setWidgetStyle();
       
   263 };
       
   264 
       
   265 EmulatorMenu.prototype.init = function() {
       
   266 	NOKIA.menu.render();
       
   267 };
       
   268 
       
   269 EmulatorMenu.prototype.createSFKArea = function() {
       
   270 	var a = $('#SoftKeys > a');
       
   271 	a.html('');
       
   272 
       
   273 	var preferences = NOKIA.deviceList[NOKIA.currentDevice][NOKIA.mode];
       
   274 
       
   275 	var lsk = document.createElement('img');
       
   276 	lsk.border = "0";
       
   277 	lsk.id = "LskArea";
       
   278 	lsk.name = "LskArea";
       
   279 	lsk.src = "preview/images/TransperantImage.png";
       
   280 	lsk.style.width = preferences.style.softkeysImg.width;
       
   281 	lsk.style.height = preferences.style.softkeysImg.height;
       
   282 
       
   283 	var rsk = document.createElement('img');
       
   284 	rsk.border = 0;
       
   285 	rsk.id = "RskArea";
       
   286 	rsk.name = "RskArea";
       
   287 	rsk.src = "preview/images/TransperantImage.png";
       
   288 	rsk.style.width = preferences.style.softkeysImg.width;
       
   289 	rsk.style.height = preferences.style.softkeysImg.height;
       
   290 
       
   291 	if (NOKIA.mode == 'portrait') {
       
   292 		lsk.onclick = function() {
       
   293 			$("#LskLabel > a").trigger('click');
       
   294 		};
       
   295 		a[0].appendChild(lsk);
       
   296 
       
   297 		rsk.onclick = function() {
       
   298 			$("#RskLabel > a").trigger('click');
       
   299 		};
       
   300 		a[1].appendChild(rsk);
       
   301 
       
   302 	} else {
       
   303 
       
   304 		rsk.onclick = function() {
       
   305 			$("#RskLabel > a").trigger('click');
       
   306 		};
       
   307 		a[0].appendChild(rsk);
       
   308 
       
   309 		lsk.onclick = function() {
       
   310 			$("#LskLabel > a").trigger('click');
       
   311 		};
       
   312 		a[1].appendChild(lsk);
       
   313 	}
       
   314 
       
   315 };
       
   316 
       
   317 EmulatorMenu.prototype.showSoftKeys = function() {
       
   318 	NOKIA.menu.is_softkeys_visible = true;
       
   319 
       
   320 	NOKIA.emulator.setWidgetStyle();
       
   321 	$("#SoftKeysArea").show();
       
   322 };
       
   323 
       
   324 EmulatorMenu.prototype.hideSoftKeys = function() {
       
   325 	// Hide the SFK's If user hidden them from his code
       
   326 	if (!NOKIA.menu.softkeys_visibility)
       
   327 		$("#SoftKeysArea").hide();
       
   328 
       
   329 	NOKIA.menu.is_softkeys_visible = false;
       
   330 
       
   331 	NOKIA.emulator.setWidgetStyle();
       
   332 };