uidesigner/com.nokia.sdt.series60.componentlibrary/components/controls/CAknButton.component
author timkelly
Mon, 26 Jul 2010 11:32:21 -0500
branchC3_BUILDER_WORK
changeset 1681 6636e8c75e66
parent 0 fb279309251b
permissions -rw-r--r--
Fix problem with sbs config xml parsing. Make sure to trim error message to avoid erroneously adding an error when there is none. Fix problem with adding system includes for variants.

<?xml version="1.0" encoding="UTF-8"?>
<!-- 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". -->

<componentDefinition xmlns="http://www.nokia.com/sdt/emf/component" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	
	<enumPropertyDeclaration qualifiedName="com.nokia.sdt.series60.ButtonToolbarItemCommands">
		<enumElement value="UNIQUE"/>
	</enumPropertyDeclaration>
	
	<enumPropertyDeclaration qualifiedName="com.nokia.sdt.series60.CAknButton.HorizTextAlign" defaultValue="CGraphicsContext::ECenter">
		<enumElement value="CGraphicsContext::ECenter" displayValue="center" />
		<enumElement value="CGraphicsContext::ELeft" displayValue="left" />
		<enumElement value="CGraphicsContext::ERight" displayValue="right" />
	</enumPropertyDeclaration>
	
	<enumPropertyDeclaration qualifiedName="com.nokia.sdt.series60.CAknButton.ToolTipPosition" defaultValue="CAknButton::EPositionTop">
		<enumElement value="CAknButton::EPositionTop" displayValue="top" />
		<enumElement value="CAknButton::EPositionBottom" displayValue="bottom" />
		<enumElement value="CAknButton::EPositionLeft" displayValue="left" />
		<enumElement value="CAknButton::EPositionRight" displayValue="right" />
	</enumPropertyDeclaration>
	
	<enumPropertyDeclaration qualifiedName="com.nokia.sdt.series60.CAknButton.TextAndIconAlignment" defaultValue="CAknButton::EIconBeforeText">
		<enumElement value="CAknButton::EIconBeforeText" displayValue="icon before text" />
		<enumElement value="CAknButton::EIconAfterText" displayValue="icon after text" />
		<enumElement value="CAknButton::EIconUnderText" displayValue="icon under text" />
		<enumElement value="CAknButton::EIconOverText" displayValue="icon over text" />
		<enumElement value="CAknButton::EOverlay" displayValue="overlay" />
	</enumPropertyDeclaration>
	
	<enumPropertyDeclaration qualifiedName="com.nokia.sdt.series60.CAknButton.VertTextAlign" defaultValue="CAknButton::ECenter">
		<enumElement value="CAknButton::ECenter" displayValue="center" />
		<enumElement value="CAknButton::ETop" displayValue="top" />
		<enumElement value="CAknButton::EBottom" displayValue="bottom" />
	</enumPropertyDeclaration>
	
	<enumPropertyDeclaration qualifiedName="com.nokia.sdt.series60.CAknButton.Font" defaultValue="normal">
		<enumElement value="normal" displayValue="normal" />
		<enumElement value="CEikonEnv::Static()-&gt;LegendFont()" displayValue="legend" />
		<enumElement value="CEikonEnv::Static()-&gt;DenseFont()" displayValue="dense" />
		<enumElement value="CEikonEnv::Static()-&gt;SymbolFont()" displayValue="symbol" />
		<enumElement value="CEikonEnv::Static()-&gt;TitleFont()" displayValue="title" />
		<enumElement value="CEikonEnv::Static()-&gt;AnnotationFont()" displayValue="annotation" />
	</enumPropertyDeclaration>
	
	<compoundPropertyDeclaration 
		qualifiedName="com.nokia.sdt.series60.CAknButtonMultiImageProperty"
		editorClass="com.nokia.sdt.symbian.ui.editors.ImageEditorFactory"
		converterClass="com.nokia.sdt.series60.component.CAknButtonMultiImagePropertyConverter">
		<property name="bmpfile" descriptionKey="bmpfileDescription" type="string"/>
		<property name="bmpid" descriptionKey="bmpidDescription" type="string"/>
		<property name="bmpmask" descriptionKey="bmpmaskDescription" type="string"/>
		<property name="bmpidDimmed" descriptionKey="bmpidDimmedDescription" type="string"/>
		<property name="bmpmaskDimmed" descriptionKey="bmpmaskDimmedDescription" type="string"/>
		<property name="bmpidPressed" descriptionKey="bmpidPressedDescription" type="string"/>
		<property name="bmpmaskPressed" descriptionKey="bmpmaskPressedDescription" type="string"/>
		<property name="bmpidHover" descriptionKey="bmpidHoverDescription" type="string"/>
		<property name="bmpmaskHover" descriptionKey="bmpmaskHoverDescription" type="string"/>
	</compoundPropertyDeclaration>
	
	
	<component baseComponent="com.nokia.sdt.series60.CCoeControlBase" 
		friendlyName="%friendlyName" 
		qualifiedName="com.nokia.sdt.series60.CAknButton"
		category="Controls"
		instanceNameRoot="button"
		version="1.0">
		<documentation>
			<information>%information</information>
		</documentation>
		<symbian sdkName="com.nokia.series60" minSDKVersion="5.0" 
			className="CAknButton" classHelpTopic=""
			resourceType="" resourceHelpTopic="" />
		<designerImages smallIconFile="CAknButton_sm.png" 
			largeIconFile="CAknButton.png" />
			
		<attributes>
			<attribute key="cpp-class-name">CAknButton</attribute>
			<attribute key="is-ccoecontrol-content">true</attribute>
			<attribute key="editable-array-property">items</attribute>
		</attributes>
		
		<properties>
			
			<property category="Text" name="buttonText" type="localizedString" default="Button"
				 editorClass="com.nokia.sdt.symbian.ui.editors.ScalableTextEditorFactory"
			     descriptionKey="buttonTextDescription" displayName="%buttonTextDisplay"/>
			 <property category="Text" name="buttonHelpText" type="localizedString" default="Button Hover Text"
				 editorClass="com.nokia.sdt.symbian.ui.editors.ScalableTextEditorFactory"
			     descriptionKey="buttonHelpTextDescription" displayName="%buttonHelpTextDisplay"/>
			 <enumProperty category="Text" name="horizTextAlign" type="com.nokia.sdt.series60.CAknButton.HorizTextAlign"
				descriptionKey="horizTextAlignDescr" displayName="%horizTextAlign" />
			<enumProperty category="Text" name="vertTextAlign" type="com.nokia.sdt.series60.CAknButton.VertTextAlign"
				descriptionKey="vertTextAlignDescr" displayName="%vertTextAlign" />
			<enumProperty category="Text" name="toolTipPosition" type="com.nokia.sdt.series60.CAknButton.ToolTipPosition"
				descriptionKey="toolTipPositionDescr" displayName="%toolTipPosition" />
			<enumProperty category="Text" name="textAndIconAlignment" type="com.nokia.sdt.series60.CAknButton.TextAndIconAlignment"
				descriptionKey="textAndIconAlignmentDescr" displayName="%textAndIconAlignment" />
			<enumProperty category="Text" name="textFont" type="com.nokia.sdt.series60.CAknButton.Font"
				descriptionKey="textFontDescr" displayName="%textFont" />
			<compoundProperty category="Image" name="images"  
				type="com.nokia.sdt.series60.CAknButtonMultiImageProperty"
				descriptionKey="imagesDescription" />
			
			<property category="Flags" name="buttonTextLeft" type="boolean" descriptionKey="buttonTextLeftDescr" />
			<property category="Flags" name="buttonSizeFitText" type="boolean" descriptionKey="buttonSizeFitTextDescr" />
			<property category="Flags" name="buttonNoFrame" type="boolean" descriptionKey="buttonNoFrameDescr" />
			<property category="Flags" name="buttonKeyRepeat" type="boolean" descriptionKey="buttonKeyRepeatDescr" />
			<property category="Flags" name="buttonReportOnKeyDown" type="boolean" descriptionKey="buttonReportOnKeyDownDescr" />
			<property category="Flags" name="buttonNoFramePressEvent" type="boolean" descriptionKey="buttonNoFramePressEventDescr" />
			<property category="Flags" name="buttonRequestExitOnButtonUpEvent" type="boolean" descriptionKey="buttonRequestExitOnButtonUpEventDescr" />
			<property category="Flags" name="buttonReportOnLongPress" type="boolean" descriptionKey="buttonReportOnLongPressDescr" />
			
			<!-- Hidden commands used to fill out the TBAR_CTRL 'type' and 'id' members -->
			<property category="Hidden" name="toolBarType" type="string" default="EAknCtButton"/>
			<enumProperty category="Hidden" name="command" 
				type="com.nokia.sdt.series60.ButtonToolbarItemCommands" 
				descriptionKey="commandDescription" />
							
		</properties>
		
		<implementations>
			<implementation>
				<interface id="com.nokia.sdt.datamodel.adapter.IVisualAppearance"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IDirectImageEdit"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IDirectLabelEdit"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IComponentEventInfo"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IImagePropertyRenderingInfo"/>
				<script file="CAknButton.js" prototype="CAknButton"/>
			</implementation>
		</implementations>
		
		<events defaultEventName="selected">
			<event name="selected" displayName="%selected" category="ToolbarEvent"
				group="ToolbarEvent" 
			    handlerNameTemplate="Handle{title(name)}SelectedL"
			    descriptionKey="selectedDescription"
			/>
		</events>
		
		<sourceMapping>
		
			<mapResource struct="AVKON_BUTTON" headers="eikon.rh">
				
				<mapBitmaskMember property="." member="flags"
				  includedProperties="buttonTextLeft buttonSizeFitText buttonNoFrame buttonKeyRepeat buttonReportOnKeyDown buttonNoFramePressEvent buttonRequestExitOnButtonUpEvent buttonReportOnLongPress">
					<mapBitmaskValue properties="buttonTextLeft" value="KAknButtonTextLeft" />
					<mapBitmaskValue properties="buttonSizeFitText" value="KAknButtonSizeFitText" />
					<mapBitmaskValue properties="buttonNoFrame" value="KAknButtonNoFrame" />
					<mapBitmaskValue properties="buttonKeyRepeat" value="KAknButtonKeyRepeat" />
					<mapBitmaskValue properties="buttonReportOnKeyDown" value="KAknButtonReportOnKeyDown" />
					<mapBitmaskValue properties="buttonNoFramePressEvent" value="KAknButtonNoFramePressEvent" />
					<mapBitmaskValue properties="buttonRequestExitOnButtonUpEvent" value="KAknButtonRequestExitOnButtonUpEvent" />
					<mapBitmaskValue properties="buttonReportOnLongPress" value="KAknButtonReportOnLongPress" />
				</mapBitmaskMember>
				
				 <mapResourceMember property="." member="states[0]" 
		        		struct="AVKON_BUTTON_STATE" headers="eikon.rh" id="multi$states[0]" >
		        		
		        		<mapSimpleMember property="buttonText" member="txt"/>
						<mapSimpleMember property="buttonHelpText" member="helptxt"/>
						<mapSimpleMember property="images.bmpfile" member="bmpfile"/>
						
						<mapIdentifierMember property="images.bmpid" member="bmpid"/>
						<mapIdentifierMember property="images.bmpmask" member="bmpmask"/>
    					
    					// stupid header doesn't initialize bmpmask to -1
						<select property="images.bmpmask">
							<choice value="">
								<mapFixedMember member="bmpmask" value="-1"/>
							</choice>
							<choice>
								<mapIdentifierMember property="images.bmpmask" member="bmpmask"/>
							</choice>
						</select>
    				
					 	<select property="images.bmpmaskDimmed">
							<choice value="">
								<mapFixedMember member="dim_bmpmask" value="-1"/>
							</choice>
							<choice>
								<mapIdentifierMember property="images.bmpmaskDimmed" member="dim_bmpmask"/>
							</choice>
						</select>
					 
					 	<select property="images.bmpmaskPressed">
							<choice value="">
								<mapFixedMember member="press_bmpmask" value="-1"/>
							</choice>
							<choice>
								<mapIdentifierMember property="images.bmpmaskPressed" member="press_bmpmask"/>
							</choice>
						</select>
					 
					 	<select property="images.bmpmaskHover">
							<choice value="">
								<mapFixedMember member="hover_bmpmask" value="-1"/>
							</choice>
							<choice>
								<mapIdentifierMember property="images.bmpmaskHover" member="hover_bmpmask"/>
							</choice>
						</select>

				</mapResourceMember>
				
			</mapResource>
		</sourceMapping>
		
		<sourceGen>
			<useTemplateGroup ids="CLASS_CONTRIBS" />
			<useTemplateGroup ids="CONTAINER_CHILD_CONTRIBS" />
			
			<inline scope="prototype">
include("../containers/containerLibrary.js")
			</inline>
			
			<template form="Container" phase="HeaderIncludes"><![CDATA[
#include <aknbutton.h>
#include <stringloader.h>
]]>			</template>
			
			<template form="Container" phase="ForwardDeclarations">
class CAknButton;
			</template>

			<template form="Container" phase="Destroy"><![CDATA[
delete ${instanceMemberName};
${instanceMemberName} = NULL;
]]>			</template>
		
<template id="INIT_FROM_CONTAINER" form="Container" phase="Initialize"><![CDATA[

${instanceMemberName} = static_cast< CAknButton* >
				( EikControlFactory::CreateByTypeL( EAknCtButton ).iControl );
${instanceMemberName}->ConstructFromResourceL ( ${resourceName$upper} );

${instanceMemberName}->SetContainerWindowL ( *this );
${instanceMemberName}->SetRect ( TRect ( 
							TPoint ( ${properties.location.x}, ${properties.location.y} ) , 
							TSize ( ${properties.size.width}, ${properties.size.height} ) )  
							 ) ; 
${instanceMemberName}->SetObserver( ( MCoeControlObserver* ) iCommandObserver ); 
<% if (properties.horizTextAlign != "CGraphicsContext::ECenter") { %>${instanceMemberName}->SetTextHorizontalAlignment( ${properties.horizTextAlign} );<% } %>
<% if (properties.vertTextAlign != "CAknButton::ECenter") { %> ${instanceMemberName}->SetTextVerticalAlignment( ${properties.vertTextAlign} );<% } %>
<% if (properties.textAndIconAlignment != "CAknButton::EIconBeforeText") { %> ${instanceMemberName}->SetTextAndIconAlignment( ${properties.textAndIconAlignment} );<% } %>
<% if (properties.toolTipPosition != "CAknButton::EPositionTop") { %>${instanceMemberName}->SetTooltipPosition( ${properties.toolTipPosition} );<% } %>
<% if (properties.textFont != "normal") { %>${instanceMemberName}->SetTextFont( ${properties.textFont} );<% } %>

]]>			</template>

		<templateGroup id="HandleSelectedEvent" ifEvents="selected">
			<template id="0" phase="UserHandlers">
TBool ${event.handlerName}( TInt aCommand );
			</template>

			<defineLocation id="SelectedMethod" baseLocation="MAIN_FILE"
					owned="false"
					isEventHandler="true"
					location="function(${handlerClassName}::${event.handlerName}(TInt))">
					<template id="2"><![CDATA[
/** 
 * Handle the ${event.eventName} event.
 * @param aCommand the command id invoked
 * @return ETrue if the command was handled, EFalse if not
 */
TBool ${handlerClassName}::${event.handlerName}( TInt aCommand )
	{
	// TODO: implement ${event.eventName} event handler
	return ETrue;
	}
]]>				
					</template>
				</defineLocation>
			
			<template id="3" location="SelectedMethod" />
	
			<template id="4" form="HandleCommandSwitchDispatch" phase="SwitchContents" ifEvents="selected"><![CDATA[
<% var commandId =  Engine.findOrCreateEnumeratorForAlgorithm(instance, "command", 
		"com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS");
	//println("commandId = " + commandId);
	if (commandId != null) { 
%>	case ${commandId}:
		commandHandled = ${event.handlerName}( aCommand );
		break;
<% } %> ]]>	</template>
		</templateGroup>
		
		<useTemplateGroup ids="GenerateCommonControlEvents GenerateStateChangedEvent"/>
		<useTemplateGroup ids="GenerateRequestingFocusEvent GenerateRequestingExitEvent"/>
		<useTemplateGroup ids="GenerateRequestingCancelEvent GenerateInteractionRefusedEvent"/>
		<useTemplateGroup ids="GeneratePrepareFocusTransitionEvent"/>
		
		</sourceGen>
		
	</component>
</componentDefinition>