uidesigner/com.nokia.sdt.series60.componentlibrary/components/toolbar/Toolbar.component
author timkelly
Tue, 03 Aug 2010 16:29:13 -0500
branchC3_BUILDER_WORK
changeset 1757 ec3c1e4702be
parent 0 fb279309251b
permissions -rw-r--r--
Remove makefile dependency checks on SBSv2 builder since they don't apply. Remove SBSv2BuilderInfo.java and functionality. That has been used for loading the SBSv2 tab, which no longer exists. Now the SBSv2 data in the .cproject is loaded directly by the build configuration loading mechanism.

<?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.toolbar.orientation"  defaultValue="Horizontal ">
		<enumElement value="Horizontal"/>
		<enumElement value="Vertical"/>
	</enumPropertyDeclaration>
	
	<component baseComponent="com.nokia.sdt.series60.ControlBase"
		friendlyName="%friendlyName" 
		qualifiedName="com.nokia.sdt.series60.Toolbar" 
		category="Controls"
		instanceNameRoot="toolBar"
		version="1.0">
		
		<documentation>
			<information>%information</information>
		</documentation>
		
		<symbian sdkName="com.nokia.series60" minSDKVersion="5.0" 
			className="CAknToolbar" classHelpTopic=""
			resourceType="AVKON_TOOLBAR" resourceHelpTopic="" />
		
		<designerImages smallIconFile="Toolbar_sm.png" 
			largeIconFile="Toolbar.png" />
			
		<attributes>
			<attribute key="cpp-class-name">CAknToolbar</attribute>
			<attribute key="is-layout-container">true</attribute>
			<attribute key="layout-type">ordered</attribute>
			<attribute key="is-non-resizable-or-moveable-layout-object">true</attribute>
		</attributes>	
		
		<properties>		
			<enumProperty category="Appearance" name="orientation" type="com.nokia.sdt.toolbar.orientation" descriptionKey="orientationDescr" default="Horizontal" />
			<property category="Appearance" name="smallToolbar" type="boolean" descriptionKey="smallToolbarDescr" />
			<property category="Appearance" name="transparent" type="boolean" descriptionKey="transparentDescr" />
			<property category="Appearance" name="flexiblePosition" type="boolean" descriptionKey="flexPosDescr" />
			<property category="Appearance" name="hasControlPane" type="boolean" descriptionKey="hasControlPaneDescr" default="true" />
			<property category="Appearance" name="rememberLastSelection" type="boolean" descriptionKey="memLastSelDescr" />
			<property category="Appearance" name="middleItemFocused" type="boolean" descriptionKey="middleItemFocusDescr" />
						
		</properties>
		
		<implementations>
			<implementation>
				<interface id="com.nokia.sdt.datamodel.adapter.IVisualAppearance"/>
				<interface id="com.nokia.sdt.datamodel.adapter.ILayout"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IQueryContainment"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IComponentInstancePropertyListener"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IComponentValidator"/>
				<interface id="com.nokia.sdt.datamodel.adapter.IComponentInstanceChildListener"/>
				<script file="Toolbar.js" prototype="CAknToolbar"/>
			</implementation>
			<implementation>
				<interface id="com.nokia.sdt.displaymodel.adapter.ITargetFeedbackListener"/>
				<code class="com.nokia.sdt.series60.component.ToolbarTargetFeedbackListenerImplFactory"/>
			</implementation>
		</implementations>
		
		<sourceMapping>
			<mapResource struct="AVKON_TOOLBAR" headers="eikon.rh">
				<mapBitmaskMember property="." member="flags"
				  includedProperties="smallToolbar transparent flexiblePosition hasControlPane middleItemFocused rememberLastSelection">
					<mapBitmaskValue properties="smallToolbar" value="KAknToolbarSmall" />
					<mapBitmaskValue properties="transparent" value="KAknToolbarTransparent" />
					<mapBitmaskValue properties="flexiblePosition" value="KAknToolbarFlexiblePosition" />
					<mapBitmaskValue properties="hasControlPane" value="KAknToolbarWithoutCba" />
					<mapBitmaskValue properties="middleItemFocused" value="KAknToolbarMiddleItemFocused" />
					<mapBitmaskValue properties="rememberLastSelection" value="KAknToolbarLastUsedItemFocused" />
				</mapBitmaskMember>
				
				<!-- Map the toolbar items, if required -->
				<mapArrayMember property="." member="items">
  					<select isComponentInstanceOf="com.nokia.sdt.series60.CAknButton">
      					<choice value="true">
      						<!-- map the button to the toolbar -->
	      					<mapResource struct="TBAR_CTRL" id="toolBarButton" headers="eikon.rh">
	      						<mapSimpleMember property="toolBarType" member="type"/>
	      						<mapEnumMember property="command" member="id" uniqueValue="UNIQUE"
											nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_COMMANDS"/>
	      						<mapResourceMember property="." member="control"/>
	      					</mapResource>
      					</choice>
      					<choice>
      						<!-- else, don't map this resource -->
      					</choice>
  					</select>
				</mapArrayMember>

			</mapResource>
			
		</sourceMapping>
		
		<sourceGen>
			
			<template phase="HeaderIncludes"><![CDATA[
#include <aknutils.h>
#include <akntoolbar.h>
]]>			</template>
<template phase="EventIncludes"><![CDATA[
#include <AknToolbarObserver.h>
]]>			</template>
		
			
			<template phase="Initialize">
if( AknLayoutUtils::PenEnabled() &amp;&amp; Toolbar() ) 
	{
	//By default keep toolbar invisible        
	ShowToolbarOnViewActivation( ETrue ); 
	Toolbar()-&gt;SetToolbarObserver( this );
	}		
				</template>
			
			<template id="BaseClass" phase="BaseClassList">,MAknToolbarObserver</template>
			
			<expandMacro name="GenerateMethodWithOwnedBody"
					IsOwned="false"
					FunctionLocationId="DYNINITTOOLBARL_METHOD"
					FunctionName="DynInitToolbarL"
					FunctionArgs="TInt aResourceId, CAknToolbar* aToolBar"
					IsStatic="false"
					DeclPhase="ClassPublic"
					DefnLocation="MAIN_FILE">
				<expandArgument name="FunctionComment">
/**
 * Should be used to set the properties of some toolbar components 
 * before it is drawn.
 * @param aResourceId The resource ID for particular toolbar
 * @param aToolbar The toolbar object pointer
 */
				</expandArgument>				
			</expandMacro>

			<template location="DYNINITTOOLBARL_METHOD_BODY"><![CDATA[
<% if (properties.orientation == "Vertical") { %>Toolbar()->SetOrientation( EAknOrientationVertical );
<% } %>	
<%	// generate dynamic initialization for child component
	var itemContribs = Engine.generateChildContributions("AknToolbar");
	Engine.assignLocationsForPhase(itemContribs, "InitToolbarItems", "DYNINITTOOLBARL_METHOD_BODY");
	contribs.addAll(itemContribs);
%>
]]>			</template>
			<expandMacro name="GenerateMethod"
					IsOwned="false"
					FunctionLocationId="OFFERTOOLBAREVENTL_METHOD"
					FunctionName="OfferToolbarEventL"
					FunctionArgs="TInt aCommandId"
					IsStatic="false"
					DeclPhase="ClassPublic"
					DefnLocation="MAIN_FILE">
				<expandArgument name="FunctionComment">
/**
 * Handles toolbar events for a certain toolbar item.
 * @param aCommand The command ID of some toolbar item.
 */
				</expandArgument>				
				<expandArgument name="FunctionBody"><![CDATA[
HandleCommandL( aCommandId );
			]]>	</expandArgument>
			</expandMacro>

		
			<!-- child contributions -->
			<inline scope="prototype">
include("../containers/containerLibrary.js")
			</inline>
					
			<inline>
			
				// Emit the toolbar item uids.
				for (i in instance.children) {
					var view = instance.children[i];
					//println(view);
					var theEnum = findOrCreateViewUidConstant(view);
				}
				
				// iterate children
				contribs.addAll(Engine.generateChildContributions(form))
				
			</inline>
		
		</sourceGen>
			
	</component>

</componentDefinition>