--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uidesigner/com.nokia.sdt.series60.componentlibrary/components/cba/CBA_visual.js Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,170 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+include("cbaLibrary.js")
+
+function CBAVisual() {
+}
+
+CBAVisual.prototype.draw = function(instance, laf, graphics) {
+ var properties = instance.properties;
+ var middleText = getMiddleText(instance, laf);
+ var leftText = getLeftText(instance);
+ var rightText = getRightText(instance);
+ if (middleText == leftText && middleText != ""){
+ middleText = ".";
+ }
+ drawCBA(leftText, rightText, middleText,
+ new Point(0, 0), new Point(properties.size.width, properties.size.height), laf, graphics);
+}
+
+function isRestricted(instance) {
+ return instance.component.id == "com.nokia.sdt.series60.CBARestricted";
+}
+
+function isCustom(info, instance) {
+ if (isRestricted(instance)){
+ return false;
+ }
+
+ if (info.editableValue == "com.nokia.sdt.series60.CBA.Type.CUSTOM") {
+ return true;
+ }
+
+ return false;
+}
+
+function getLeftText(instance) {
+ var info = instance.properties.info;
+ if (isCustom(info, instance)) {
+ return info.leftText;
+ }
+ else if (isRestricted(instance)) {
+ if ((info == "R_AVKON_SOFTKEYS_OPTIONS_BACK") || (info == "R_AVKON_SOFTKEYS_OPTIONS_EXIT"))
+ return lookupString("text_softkey_option");
+ else if (info == "R_AVKON_SOFTKEYS_OK_BACK")
+ return lookupString("text_softkey_ok");
+ else if (info == "R_AVKON_SOFTKEYS_BACK")
+ return "";
+ }
+ else {
+ return lookupString("text_" + info.leftId);
+ }
+}
+
+function getRightText(instance) {
+ var info = instance.properties.info;
+ if (isCustom(info, instance)) {
+ return info.rightText;
+ }
+ else if (isRestricted(instance)) {
+ if ((info == "R_AVKON_SOFTKEYS_OPTIONS_BACK") || (info == "R_AVKON_SOFTKEYS_OK_BACK") || (info == "R_AVKON_SOFTKEYS_BACK"))
+ return lookupString("text_softkey_back");
+ else if (info == "R_AVKON_SOFTKEYS_OPTIONS_EXIT")
+ return lookupString("text_softkey_exit");
+ }
+ else {
+ if (info.type == "R_AVKON_SOFTKEYS_EXIT") // treat this one special because it uses the "back" id
+ return lookupString("text_EAknSoftkeyExit");
+
+ return lookupString("text_" + info.rightId);
+ }
+}
+
+function getMiddleText(instance, laf) {
+
+ if (isRestricted(instance)){
+ return "";
+ }
+
+ if (hasMSKSupport() && laf.getBoolean("draw.msk", false)){
+ info = instance.properties.info;
+ if (info.middleId == "EAknSoftkeyContextOptions") {
+ return "_"; // sub menu of left soft key, will use icon
+ }
+ else if (isCustom(info, instance))
+ return info.middleText;
+ else
+ return lookupString("text_" + info.middleId);
+ } else {
+ return "";
+ }
+}
+
+
+CBAVisual.prototype.getPreferredSize = function(instance, laf, wHint, hHint) {
+ return null; // needs implementation
+}
+
+CBAVisual.prototype.getPropertyPaths = function(instance) {
+ if (hasMSKSupport()){
+ return new Array("info.leftText", "info.rightText", "info.middleText");
+ } else {
+ return new Array("info.leftText", "info.rightText");
+ }
+}
+
+CBAVisual.prototype.getLabelBounds = function(instance, propertyPath, laf) {
+ var properties = instance.properties;
+ var margin = laf.getInteger("control.pane.text.margin", 5);
+ var width = properties.size.width - (2*margin);
+ var height = properties.size.height;
+ if (laf.getBoolean("is.portrait", false)) {
+ var numButtons = 2;
+ if (hasMSKSupport()){
+ numButtons = 3;
+ }
+ if (propertyPath.equals("info.leftText")) {
+ return new Rectangle(margin, 0, width / numButtons, height);
+ }
+ else if (hasMSKSupport() && propertyPath.equals("info.middleText")) {
+ return new Rectangle(margin + (width / numButtons), 0, width / numButtons, height);
+ }
+ else {
+ return new Rectangle(margin + (width / 2), 0, width / 2, height);
+ }
+ }
+ else {
+ // landscape doesn't support MSK
+ var font = laf.getFont("control.pane.font");
+ var fontHeight = font.getHeight();
+ var sbar2Bounds = laf.getRectangle("status.bar2.bounds");
+ var rect = new Rectangle(0, 1, width-margin, fontHeight);
+ if (propertyPath.equals("info.leftText")) {
+ rect.y = height - sbar2Bounds.height + 1;
+ rect.height = sbar2Bounds.height;
+ }
+
+ return rect;
+ }
+
+ return new Rectangle(0, 0, 0, 0);
+}
+
+CBAVisual.prototype.getLabelFont = function(instance, propertyPath, laf) {
+ return laf.getFont("control.pane.font");
+}
+
+function hasMSKSupport(){
+ var version = getComponentVersions();
+ if (version.getMajor() > 3 || (version.getMajor() == 3 && version.getMinor() >= 2)){
+ return true;
+ }
+
+ return false;
+}