uidesigner/com.nokia.sdt.series60.componentlibrary/components/cba/CBA_reconcile.js
changeset 0 fb279309251b
equal deleted inserted replaced
-1:000000000000 0:fb279309251b
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 /**
       
    18  *	Script for reconciling the CBA property of a CBA component.
       
    19  *	Implements IReconcileProperty
       
    20  *
       
    21  */
       
    22 
       
    23 var summaryIndex = 0;
       
    24 var leftIdIndex = 1;
       
    25 var rightIdIndex = 2;
       
    26 var middleIdIndex = 3;
       
    27 
       
    28 var FIXED_CBA_PREFIX = "R_AVKON_SOFTKEYS_";
       
    29 
       
    30 var EMPTY = new Array("EMPTY", "EAknSoftkeyEmpty", "EAknSoftkeyEmpty", "EAknSoftkeyEmpty");
       
    31 var EMPTY_WITH_IDS = new Array("EMPTY_WITH_IDS", "EAknSoftkeyEmpty", "EAknSoftkeyEmpty", "EAknSoftkeyEmpty");
       
    32 var OK_EMPTY = new Array("OK_EMPTY", "EAknSoftkeyOk", "", "EAknSoftkeyEmpty");
       
    33 var SELECT_CANCEL = new Array("SELECT_CANCEL", "EAknSoftkeySelect", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    34 var OK_CANCEL = new Array("OK_CANCEL", "EAknSoftkeyOk", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    35 var OK_DETAILS = new Array("OK_DETAILS", "EAknSoftkeyOk", "EAknSoftkeyDetails", "EAknSoftkeyEmpty");
       
    36 var CALL_CANCEL = new Array("CALL_CANCEL", "EAknSoftkeyCall", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    37 var OPTIONS_BACK = new Array("OPTIONS_BACK", "EAknSoftkeyOptions", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    38 var OPTIONS_DONE = new Array("OPTIONS_DONE", "EAknSoftkeyOptions", "EAknSoftkeyDone", "EAknSoftkeyEmpty");
       
    39 var OPTIONS_CANCEL = new Array("OPTIONS_CANCEL", "EAknSoftkeyOptions", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    40 var OPTIONS_EXIT = new Array("OPTIONS_EXIT", "EAknSoftkeyOptions", "EAknSoftkeyExit", "EAknSoftkeyEmpty");
       
    41 var OK_BACK = new Array("OK_BACK", "EAknSoftkeyOk", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    42 var CANCEL = new Array("CANCEL", "", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    43 var BACK = new Array("BACK", "", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    44 var CLOSE = new Array("CLOSE", "", "EAknSoftkeyClose", "EAknSoftkeyEmpty");
       
    45 var DONE_BACK = new Array("DONE_BACK", "EAknSoftkeyDone", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    46 var DONE_CANCEL = new Array("DONE_CANCEL", "EAknSoftkeyDone", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    47 var MARK_BACK = new Array("MARK_BACK", "EAknSoftkeyMark", "EAknSoftkeyOk", "EAknSoftkeyEmpty");
       
    48 var UNMARK_BACK = new Array("UNMARK_BACK", "EAknSoftkeyUnmark", "EAknSoftkeyOk", "EAknSoftkeyEmpty");
       
    49 var YES_NO = new Array("YES_NO", "EAknSoftkeyYes", "EAknSoftkeyNo", "EAknSoftkeyEmpty");
       
    50 var UNLOCK_EMPTY = new Array("UNLOCK_EMPTY", "EAknSoftkeyUnlock", "", "EAknSoftkeyEmpty");
       
    51 var SAVE_BACK = new Array("SAVE_BACK", "EAknSoftkeySave", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    52 var SHOW_CANCEL = new Array("SHOW_CANCEL", "EAknSoftkeyShow", "EAknSoftkeyCancel", "EAknSoftkeyEmpty");
       
    53 var SHOW_EXIT = new Array("SHOW_EXIT", "EAknSoftkeyShow", "EAknSoftkeyExit", "EAknSoftkeyEmpty");
       
    54 var EXIT = new Array("EXIT", "", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    55 var READ_EXIT = new Array("READ_EXIT", "EAknSoftkeyRead", "EAknSoftkeyExit", "EAknSoftkeyEmpty");
       
    56 var LISTEN_EXIT = new Array("LISTEN_EXIT", "EAknSoftkeyListen", "EAknSoftkeyExit", "EAknSoftkeyEmpty");
       
    57 var SEARCH_BACK = new Array("SEARCH_BACK", "EAknSoftkeySearch", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    58 var AGAIN_QUIT = new Array("AGAIN_QUIT", "EAknSoftkeyAgain", "EAknSoftkeyQuit", "EAknSoftkeyEmpty");
       
    59 var QUIT = new Array("QUIT", "", "EAknSoftkeyQuit", "EAknSoftkeyEmpty");
       
    60 var INSERT_BACK = new Array("INSERT_BACK", "EAknSoftkeyInsert", "EAknSoftkeyBack", "EAknSoftkeyEmpty");
       
    61 // Options with MSK support
       
    62 var SELECT_CANCEL__SELECT = new Array("SELECT_CANCEL__SELECT", "EAknSoftkeySelect", "EAknSoftkeyCancel", "EAknSoftkeySelect");
       
    63 var SELECT_BACK__SELECT = new Array("SELECT_BACK__SELECT", "EAknSoftkeySelect", "EAknSoftkeyBack", "EAknSoftkeySelect");
       
    64 var OK_CANCEL__MARK = new Array("OK_CANCEL__MARK", "EAknSoftkeyOk", "EAknSoftkeyCancel", "EAknSoftkeyMark");
       
    65 var OK_CANCEL__OK = new Array("OK_CANCEL__OK", "EAknSoftkeyOk", "EAknSoftkeyCancel", "EAknSoftkeyOk");
       
    66 var OK_EMPTY__OK = new Array("OK_EMPTY__OK", "EAknSoftkeyOk", "EAknSoftkeyEmpty", "EAknSoftkeyOk");
       
    67 var OK_CANCEL__UNMARK = new Array("OK_CANCEL__UNMARK", "EAknSoftkeyOk", "EAknSoftkeyCancel", "EAknSoftkeyUnmark");
       
    68 var SEND_CANCEL__SEND = new Array("SEND_CANCEL__SEND", "EAknSoftkeySend", "EAknSoftkeyCancel", "EAknSoftkeySend");
       
    69 var YES_NO__YES = new Array("YES_NO__YES", "EAknSoftkeyYes", "EAknSoftkeyNo", "EAknSoftkeyYes");
       
    70 var SHOW_EXIT__SHOW = new Array("SHOW_EXIT__SHOW", "EAknSoftkeyShow", "EAknSoftkeyExit", "EAknSoftkeyShow");
       
    71 var CALL_CANCEL__CALL = new Array("CALL_CANCEL__CALL", "EAknSoftkeyCall", "EAknSoftkeyCancel", "EAknSoftkeyCall");
       
    72 var READ_EXIT__READ = new Array("READ_EXIT__READ", "EAknSoftkeyRead", "EAknSoftkeyExit", "EAknSoftkeyRead");
       
    73 var LISTEN_EXIT__LISTEN = new Array("LISTEN_EXIT__LISTEN", "EAknSoftkeyListen", "EAknSoftkeyExit", "EAknSoftkeyListen");
       
    74 var OPTIONS_BACK__SELECT = new Array("OPTIONS_BACK__SELECT", "EAknSoftkeyOptions", "EAknSoftkeyBack", "EAknSoftkeySelect");
       
    75 var OPTIONS_DONE__SELECT = new Array("OPTIONS_DONE__SELECT", "EAknSoftkeyOptions", "EAknSoftkeyDone", "EAknSoftkeySelect");
       
    76 var OPTIONS_CANCEL__SELECT = new Array("OPTIONS_CANCEL__SELECT", "EAknSoftkeyOptions", "EAknSoftkeyCancel", "EAknSoftkeySelect");
       
    77 var OPTIONS_EXIT__SELECT = new Array("OPTIONS_EXIT__SELECT", "EAknSoftkeyOptions", "EAknSoftkeyExit", "EAknSoftkeySelect");
       
    78 var OK_CANCEL__SELECT = new Array("OK_CANCEL__SELECT", "EAknSoftkeyOk", "EAknSoftkeyCancel", "EAknSoftkeySelect");
       
    79 var OK_BACK__OK = new Array("OK_BACK__OK", "EAknSoftkeyOk", "EAknSoftkeyBack", "EAknSoftkeyOk");
       
    80 var SELECT_CLOSE__SELECT = new Array("SELECT_CLOSE__SELECT", "EAknSoftkeySelect", "EAknSoftkeyClose", "EAknSoftkeySelect");
       
    81 var NEXT_EXIT__NEXT = new Array("NEXT_EXIT__NEXT", "EAknSoftkeyNext", "EAknSoftkeyExit", "EAknSoftkeyNext");
       
    82 var USSD_ANSWER_EXIT__ANSWER = new Array("USSD_ANSWER_EXIT__ANSWER", "EAknSoftkeyAnswer", "EAknSoftkeyExit", "EAknSoftkeyAnswer");
       
    83 var HIDE_CANCEL__HIDE = new Array("HIDE_CANCEL__HIDE", "EAknSoftkeyHide", "EAknSoftkeyCancel", "EAknSoftkeyHide");
       
    84 var OPTIONS_BACK__SELECT = new Array("OPTIONS_BACK__SELECT", "EAknSoftkeyOptions", "EAknSoftkeyBack", "EAknSoftkeySelect");
       
    85 
       
    86 // array for S60 3.1 and prior.
       
    87 var cbaTable = new Array(EMPTY, EMPTY_WITH_IDS, OK_EMPTY, SELECT_CANCEL, OK_CANCEL, OK_DETAILS, 
       
    88 						CALL_CANCEL, OPTIONS_BACK, OPTIONS_DONE, OPTIONS_CANCEL, OPTIONS_EXIT, 
       
    89 						OK_BACK, CANCEL, BACK, CLOSE, DONE_BACK, DONE_CANCEL, MARK_BACK, 
       
    90 						UNMARK_BACK, YES_NO, UNLOCK_EMPTY, SAVE_BACK, SHOW_CANCEL, SHOW_EXIT, 
       
    91 						EXIT, READ_EXIT, LISTEN_EXIT, SEARCH_BACK, AGAIN_QUIT, QUIT, INSERT_BACK);
       
    92 
       
    93 // array for S60 3.2+ -  Middle Soft Key support added
       
    94 var cbaTablePlusMSK = new Array(EMPTY, EMPTY_WITH_IDS, OK_EMPTY, SELECT_CANCEL, OK_CANCEL, OK_DETAILS, 
       
    95 						CALL_CANCEL, OPTIONS_BACK, OPTIONS_DONE, OPTIONS_CANCEL, OPTIONS_EXIT, 
       
    96 						OK_BACK, CANCEL, BACK, CLOSE, DONE_BACK, DONE_CANCEL, MARK_BACK, 
       
    97 						UNMARK_BACK, YES_NO, UNLOCK_EMPTY, SAVE_BACK, SHOW_CANCEL, SHOW_EXIT, 
       
    98 						EXIT, READ_EXIT, LISTEN_EXIT, SEARCH_BACK, AGAIN_QUIT, QUIT, INSERT_BACK, SELECT_CANCEL__SELECT,
       
    99 						SELECT_BACK__SELECT, OK_CANCEL__MARK, OK_CANCEL__OK, OK_EMPTY__OK, OK_CANCEL__UNMARK, 
       
   100 						SEND_CANCEL__SEND, YES_NO__YES, SHOW_EXIT__SHOW, CALL_CANCEL__CALL, READ_EXIT__READ,
       
   101 						LISTEN_EXIT__LISTEN, OPTIONS_BACK__SELECT, OPTIONS_DONE__SELECT, OPTIONS_CANCEL__SELECT,
       
   102 						OPTIONS_EXIT__SELECT, OK_CANCEL__SELECT, OK_BACK__OK, SELECT_CLOSE__SELECT, NEXT_EXIT__NEXT,
       
   103 						USSD_ANSWER_EXIT__ANSWER, HIDE_CANCEL__HIDE, OPTIONS_BACK__SELECT );
       
   104 
       
   105 var CUSTOM = "com.nokia.sdt.series60.CBA.Type.CUSTOM";
       
   106 
       
   107 function findSpecifiedType(typeString) {
       
   108 	for (var i = 0; i < cbaTablePlusMSK.length; i++) {
       
   109 		var test = FIXED_CBA_PREFIX + cbaTablePlusMSK[i][summaryIndex];
       
   110 		if (typeString == test)
       
   111 			return typeString;
       
   112 	}
       
   113 	
       
   114 	return null;
       
   115 }
       
   116 
       
   117 
       
   118 function CBAReconcile() {
       
   119 }
       
   120 
       
   121 CBAReconcile.prototype.createDisplayValue = function(instance, propertyTypeName, propertyValue) {
       
   122 	if (!propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty") && 
       
   123 		!propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty_3_2")) {
       
   124 		return null;
       
   125 	}
       
   126 
       
   127 	var specifiedType = findSpecifiedType(propertyValue.type);
       
   128 	
       
   129 	if (propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty_3_2")){
       
   130 		for (var i = 0; i < cbaTablePlusMSK.length; i++) {
       
   131 			if ( propertyValue.leftId.equals(cbaTablePlusMSK[i][leftIdIndex])     &&
       
   132 				 (propertyValue.leftText.length == 0) 					   &&
       
   133 				 propertyValue.rightId.equals(cbaTablePlusMSK[i][rightIdIndex])   &&
       
   134 				 (propertyValue.rightText.length == 0)					   &&
       
   135 				 propertyValue.middleId.equals(cbaTablePlusMSK[i][middleIdIndex]) &&
       
   136 				 (propertyValue.middleText.length == 0) ) {
       
   137 					// if we had stored a specified type, use it!
       
   138 					if (specifiedType != null)
       
   139 						return specifiedType;
       
   140 					else
       
   141 						return FIXED_CBA_PREFIX + cbaTablePlusMSK[i][summaryIndex];
       
   142 				}
       
   143 		}
       
   144 	} else {
       
   145 		// pre middle soft key
       
   146 		for (var i = 0; i < cbaTable.length; i++) {
       
   147 			if ( propertyValue.leftId.equals(cbaTable[i][leftIdIndex])     &&
       
   148 				 (propertyValue.leftText.length == 0) 					   &&
       
   149 				 propertyValue.rightId.equals(cbaTable[i][rightIdIndex])   &&
       
   150 				 (propertyValue.rightText.length == 0) ) {
       
   151 					// if we had stored a specified type, use it!
       
   152 					if (specifiedType != null)
       
   153 						return specifiedType;
       
   154 					else
       
   155 						return FIXED_CBA_PREFIX + cbaTable[i][summaryIndex];
       
   156 				}
       
   157 		}
       
   158 	}
       
   159 	
       
   160 	return CUSTOM;
       
   161 }
       
   162 
       
   163 CBAReconcile.prototype.isDisplayValueEditable = function(instance, propertyTypeName) {
       
   164 	if (!propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty") && 
       
   165 		!propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty_3_2")) {
       
   166 		return true;
       
   167 	}
       
   168 				
       
   169 	return true;
       
   170 }
       
   171 	
       
   172 CBAReconcile.prototype.applyDisplayValue = function(instance, propertyTypeName, displayValue, propertyValue) {
       
   173 	if (!propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty") && 
       
   174 		!propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty_3_2")) {
       
   175 		return;
       
   176 	}
       
   177 	
       
   178 	if (propertyTypeName.equals("com.nokia.sdt.series60.CBAProperty_3_2")){
       
   179 		for (var i = 0; i < cbaTablePlusMSK.length; i++) {
       
   180 			var typeString = FIXED_CBA_PREFIX + cbaTablePlusMSK[i][summaryIndex];
       
   181 			if (displayValue.equals(typeString)) {
       
   182 				propertyValue.leftId = cbaTablePlusMSK[i][leftIdIndex];
       
   183 				propertyValue.leftText = "";
       
   184 				propertyValue.rightId = cbaTablePlusMSK[i][rightIdIndex];
       
   185 				propertyValue.rightText = "";
       
   186 				propertyValue.middleId = cbaTablePlusMSK[i][middleIdIndex];
       
   187 				propertyValue.middleText = "";
       
   188 				propertyValue.type = typeString;
       
   189 				return;
       
   190 			}
       
   191 		}
       
   192 	} else {
       
   193 		for (var i = 0; i < cbaTable.length; i++) {
       
   194 			var typeString = FIXED_CBA_PREFIX + cbaTable[i][summaryIndex];
       
   195 			if (displayValue.equals(typeString)) {
       
   196 				propertyValue.leftId = cbaTable[i][leftIdIndex];
       
   197 				propertyValue.leftText = "";
       
   198 				propertyValue.rightId = cbaTable[i][rightIdIndex];
       
   199 				propertyValue.rightText = "";
       
   200 				propertyValue.type = typeString;
       
   201 				return;
       
   202 			}
       
   203 		}
       
   204 	}
       
   205 	propertyValue.type = "CUSTOM";
       
   206 }
       
   207 
       
   208