author | stechong |
Wed, 20 Oct 2010 11:19:31 -0500 | |
changeset 2165 | 2a7b5eccb0bc |
parent 0 | fb279309251b |
permissions | -rw-r--r-- |
<?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:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <component baseComponent="com.nokia.sdt.series60.CommonBase" friendlyName="%friendlyName" qualifiedName="com.nokia.sdt.series60.CAknPreviewPopUp" category="NotesDialogs" instanceNameRoot="previewPopUp" version="1.0"> <documentation> <information>%information</information> </documentation> <symbian sdkName="com.nokia.series60" minSDKVersion="3.2" className="CAknPreviewPopUpController" classHelpTopic="" /> <designerImages smallIconFile="CAknPreviewPopUp_sm.png" largeIconFile="CAknPreviewPopUp.png"/> <attributes> <attribute key="is-non-layout-object">true</attribute> <attribute key="is-transient-object">true</attribute> <attribute key="is-layout-object">true</attribute> <attribute key="is-layout-container">true</attribute> <attribute key="event-handler-target">true</attribute> </attributes> <properties> <property category="Hidden" name="className" type="string" readOnly="true"/> <compoundProperty category="Hidden" name="location" type="com.nokia.sdt.series60.locationProperty" editorClass="com.nokia.sdt.symbian.ui.editors.ReadOnlySummaryEditorFactory" readOnly="true"/> <compoundProperty category="Layout" name="size" type="com.nokia.sdt.series60.sizeProperty" editorClass="com.nokia.sdt.symbian.ui.editors.ReadOnlySummaryEditorFactory" readOnly="true" descriptionKey="sizeDescription"/> <property category="Appearance" name="backColor" displayName="%backColor" type="string" editorClass="com.nokia.sdt.symbian.ui.editors.RGBEditorFactoryWithSystemColorCombo" descriptionKey="backColorDescription" /> <property category="Behavior" name="asynchronous" descriptionKey="asynchronousDescription" type="boolean" default="true" /> <property category="Flags" name="ELayoutDefault" descriptionKey="ELayoutDefaultDescription" type="boolean" default="false" /> <property category="Flags" name="ELayoutSubMenu" descriptionKey="ELayoutSubMenuDescription" type="boolean" default="false" /> <property category="Flags" name="EPermanentMode" descriptionKey="EPermanentModeDescription" type="boolean" default="false" /> <property category="Flags" name="EFixedMode" descriptionKey="EFixedModeDescription" type="boolean" default="false" /> <property category="Flags" name="EExcludeFrames" descriptionKey="EExcludeFramesDescription" type="boolean" default="false" /> <property category="Behavior" name="showDelay" descriptionKey="showDelayDescription" type="float" default="1.0" minValue="0" maxValue="2147.0" /> <property category="Behavior" name="hideDelay" descriptionKey="hideDelayDescription" type="float" default="3.0" minValue="0" maxValue="2147.0" /> <property category="Data" name="headingText" type="localizedString" default="" descriptionKey="headingTextDescription" editorClass="com.nokia.sdt.symbian.ui.editors.ScalableTextEditorFactory" /> </properties> <events> <event name="resourceChanged" category="Content" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}ResourceChanged" descriptionKey="resourceChangedDescription" /> <event name="sizeChanged" category="Content" group="CAknPreviewPopUp" descriptionKey="sizeChangedDescription" handlerNameTemplate="Handle{title(name)}SizeChanged" /> <event name="draw" category="Content" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}Draw" descriptionKey="drawDescription" /> <event name="positionChanged" category="Content" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}PositionChanged" descriptionKey="positionChangedDescription" /> <event name="handlePointerEvent" category="Content" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}PointerEventL" descriptionKey="handlePointerEventDescription" /> <event name="handleLongTapEvent" category="Content" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}LongTapEventL" descriptionKey="handleLongTapEventDescription" /> <event name="previewPopUpShown" category="Observer" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}PreviewPopUpShownL" descriptionKey="previewPopUpShownDescription" /> <event name="previewPopUpHidden" category="Observer" group="CAknPreviewPopUp" handlerNameTemplate="Handle{title(name)}PreviewPopUpHiddenL" descriptionKey="previewPopUpHiddenDescription" /> </events> <implementations> <implementation> <interface id="com.nokia.sdt.datamodel.adapter.IVisualAppearance"/> <interface id="com.nokia.sdt.datamodel.adapter.IDirectLabelEdit"/> <interface id="com.nokia.sdt.datamodel.adapter.ILayout"/> <script file="CAknPreviewPopUp.js" prototype="CAknPreviewPopUpVisual"/> </implementation> <implementation> <interface id="com.nokia.sdt.datamodel.adapter.IQueryContainment"/> <script file="CAknPreviewPopUp.js" prototype="CAknPreviewPopUpContainment"/> </implementation> <implementation> <interface id="com.nokia.sdt.datamodel.adapter.IInitializer"/> <interface id="com.nokia.sdt.datamodel.adapter.IComponentInstancePropertyListener"/> <script file="CAknPreviewPopUp.js" prototype="CAknPreviewPopUpInit"/> </implementation> <implementation> <interface id="com.nokia.sdt.datamodel.adapter.IComponentEventInfo"/> <script file="CAknPreviewPopUp.js" prototype="CAknPreviewPopUpEventInfo"/> </implementation> </implementations> <sourceMapping> <select property="headingText"> <choice value=""> </choice> <choice> <mapResource struct="TBUF" headers="eikon.rh" id="headingText"> <mapSimpleMember property="headingText" member="buf" /> </mapResource> </choice> </select> </sourceMapping> <sourceGen> <expandMacro name="HeaderFileTemplate" LocationPrefix="CONTENT_HEADER"> <expandArgument name="InitialOwnedSystemIncludesContent"><![CDATA[ #include <coecntrl.h> #include <aknpreviewpopupcontentprovider.h> ]]></expandArgument> <expandArgument name="InitialOwnedForwardDeclarationsContent"><![CDATA[ class MEikCommandObserver; class CAknPreviewPopUpController; ]]></expandArgument> </expandMacro> <template id="IncludeRsgFile" location="CONTENT_MAIN_OWNED_SYSTEM_INCLUDES"><![CDATA[ <% if (resourceFileNameBase != null) {%>#include <${resourceFileNameBase}.rsg> <% } %>]]></template> <expandMacro name="SourceFileTemplate" LocationPrefix="CONTENT_MAIN"> <expandArgument name="InitialSystemIncludesContent"><![CDATA[ #include <eikcmobs.h> #include <aknpreviewpopupcontroller.h> ]]></expandArgument> </expandMacro> <expandMacro name="ClassTemplate" LocationPrefix="CONTENT_" BaseLocation="CONTENT_HEADER_FILE" BaseClassName="CCoeControl" ExtraBaseClasses="public MAknPreviewPopUpContentProvider"> <expandArgument name="ClassComment"> /** * Content class for ${instanceName}. * @class ${className} ${instanceName$title}.h */ </expandArgument> <expandArgument name="InitialPrivateTailContent"> MEikCommandObserver* iCommandObserver; CAknPreviewPopUpController* iController; </expandArgument> </expandMacro> <defineLocation id="CONTENT_CHILD_ENUMS" baseLocation="CONTENT_CLASS" owned="false" location="enum(TControls)"> <template><![CDATA[ public: <% contrib.indentAdjust(-1); %> enum TControls { }; ]]> </template> </defineLocation> <defineLocation id="CONTENT_CHILD_ENUMS_CONTENTS" baseLocation="CONTENT_CHILD_ENUMS" location="region(Generated Contents)"> </defineLocation> <template id="GetChildEnums" location="CONTENT_CHILD_ENUMS_CONTENTS"><![CDATA[<% // each control must contribute enumerators if (Engine.formMatches(form, ["AppUi", "AknView"])) { var enumContribs = Engine.generateChildContributions("HandleCCoeControlEnums"); Engine.assignLocationsForPhase(enumContribs, "ChildEnumsContents", "CONTENT_CHILD_ENUMS_CONTENTS"); contribs.addAll(enumContribs); } %>]]> </template> <template id="AddLastChildEnum" location="CONTENT_CHILD_ENUMS"> // add any user-defined entries here... ELastControl </template> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" FunctionLocationId="CONSTRUCTOR" FunctionName="${className}" FunctionArgs="" ReturnType="" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * First phase of Symbian two-phase construction. Should not * contain any code that could leave. */ </expandArgument> </expandMacro> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" IsVirtual="true" FunctionLocationId="DESTRUCTOR" FunctionName="~${className}" FunctionArgs="" ReturnType="" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Destroy child controls. */ </expandArgument> </expandMacro> <expandMacro name="GenerateMethod" IsOwned="false" IsStatic="true" FunctionLocationId="NEWL_METHOD" FunctionName="NewL" FunctionArgs="MEikCommandObserver* aCommandObserver" ReturnType="${className}*" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Construct the control (first phase). * Creates an instance and initializes it. * Instance is not left on cleanup stack. * @return initialized instance of ${className} */ </expandArgument> <expandArgument name="FunctionBody"><![CDATA[ ${className}* self = ${className}::NewLC( aCommandObserver ); CleanupStack::Pop( self ); return self; ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethod" IsOwned="false" IsStatic="true" FunctionLocationId="NEWLC_METHOD" FunctionName="NewLC" FunctionArgs="MEikCommandObserver* aCommandObserver" ReturnType="${className}*" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Construct the control (first phase). * Creates an instance and initializes it. * Instance is left on cleanup stack. * @return new instance of ${className} */ </expandArgument> <expandArgument name="FunctionBody"><![CDATA[ ${className}* self = new ( ELeave ) ${className}(); CleanupStack::PushL( self ); self->ConstructL( aCommandObserver ); return self; ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" FunctionLocationId="CONSTRUCTL_METHOD" FunctionName="ConstructL" FunctionArgs="MEikCommandObserver* aCommandObserver" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Construct the control (second phase). * Creates a window to contain the controls and activates it. */ </expandArgument> <expandArgument name="StartFunctionBody"><![CDATA[ iCommandObserver = aCommandObserver; CreateWindowL(); InitializeControlsL(); ActivateL(); ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethod" IsOwned="false" IsConst="true" FunctionLocationId="COUNTCOMPONENTCONTROLS_METHOD" FunctionName="CountComponentControls" FunctionArgs="" ReturnType="TInt" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Return the number of controls in the container (override) * @return count */ </expandArgument> <expandArgument name="FunctionBody"><![CDATA[ return ( int ) ELastControl; ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" IsConst="true" FunctionLocationId="COMPONENTCONTROL_METHOD" FunctionName="ComponentControl" FunctionArgs="TInt aIndex" ReturnType="CCoeControl*" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"><![CDATA[ /** * Get the control with the given index (override) * @param aIndex Control index [0...n) (limited by #CountComponentControls) * @return Pointer to control */ ]]> </expandArgument> <expandArgument name="EndFunctionBody"><![CDATA[ // handle any user controls here... return NULL; ]]> </expandArgument> </expandMacro> <template id="ComponentControlSwitch1" location="COMPONENTCONTROL_METHOD_BODY"><![CDATA[ switch ( aIndex ) { ]]> </template> <template id="GetChildSwitchCases" location="COMPONENTCONTROL_METHOD_BODY"><![CDATA[<% // each control must contribute switch cases if (Engine.formMatches(form, ["AppUi", "AknView"])) { var switchContribs = Engine.generateChildContributions("HandleComponentSwitchDispatch"); Engine.assignLocationsForPhase(switchContribs, "ComponentControlBody", "COMPONENTCONTROL_METHOD_BODY"); contribs.addAll(switchContribs); } %>]]></template> <template id="ComponentControlSwitch2" location="COMPONENTCONTROL_METHOD_BODY"><![CDATA[ } ]]> </template> <expandMacro name="GenerateMethod" IsOwned="false" FunctionLocationId="STARTCONTENTBUILDINGL_METHOD" FunctionName="StartContentBuildingL" FunctionArgs="" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * When asynchronous, called by the preview popup controller when * content building should be started. */ </expandArgument> <expandArgument name="FunctionBody"><![CDATA[ iController->ContentReady(); ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethod" IsOwned="false" FunctionLocationId="CANCELCONTENTBUILDING_METHOD" FunctionName="CancelContentBuilding" FunctionArgs="" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE" Realize="true"> <expandArgument name="FunctionComment"> /** * When asynchronous, called by the preview popup controller if ongoing * content building operation should be cancelled. */ </expandArgument> </expandMacro> <expandMacro name="GenerateMethod" IsOwned="false" FunctionLocationId="SETPOPUPCONTROLLER_METHOD" FunctionName="SetPopUpController" FunctionArgs="CAknPreviewPopUpController* aController" DeclLocation="CONTENT_CLASS_PUBLIC" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Set the pop-up controller member. */ </expandArgument> <expandArgument name="FunctionBody"><![CDATA[ iController = aController; ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" FunctionLocationId="MINIMUMSIZE_METHOD" FunctionName="MinimumSize" FunctionArgs="" ReturnType="TSize" DeclLocation="CONTENT_CLASS_PROTECTED" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Return the size of the pop-up. * Modify this method to dynamically size the pop-up. */ </expandArgument> <expandArgument name="StartFunctionBody"> TSize size; </expandArgument> <expandArgument name="FunctionBody"><![CDATA[ <% include("popupDialogLibrary.js") var size = new Point(instance.properties.size.width, instance.properties.size.height); var laf = findExistingLookAndFeel(instance); if (laf != null) { size.y -= getPreviewPopUpHeadingHeight(instance, laf); } // the frame size.x -= 12; size.y -= 12; %>size = TSize(${size.x}, ${size.y});]]></expandArgument> <expandArgument name="EndFunctionBody"> return size; </expandArgument> </expandMacro> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" FunctionLocationId="SIZECHANGED_METHOD" FunctionName="SizeChanged" FunctionArgs="" DeclLocation="CONTENT_CLASS_PROTECTED" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Handle resizing of the container. This implementation will lay out * labels, images, etc. to the size they were given in the UI designer. * This code will need to be modified to adjust arbitrary controls to * any screen size. */ </expandArgument> <expandArgument name="StartFunctionBody"><![CDATA[ CCoeControl::SizeChanged(); LayoutControls(); ]]> </expandArgument> </expandMacro> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" IsConst="true" FunctionLocationId="DRAW_METHOD" FunctionName="Draw" FunctionArgs="const TRect& aRect" DeclLocation="CONTENT_CLASS_PRIVATE" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Draw container contents. */ </expandArgument> </expandMacro> <inline scope="prototype"> function getBackgroundColorRgb(properties) { if (properties.backColor.indexOf(',') > 0) return "( " + properties.backColor + " )"; else return " = iEikonEnv->Color( ( TLogicalColor ) " + properties.backColor + " )"; } </inline> <template id="DrawBodyBgColor" location="DRAW_METHOD_BODY"><![CDATA[ CWindowGc& gc = SystemGc(); <%if (properties.backColor == "") {%>gc.Clear( aRect ); <%} else {%>gc.SetPenStyle( CGraphicsContext::ENullPen ); TRgb backColor${getBackgroundColorRgb(properties)}; gc.SetBrushColor( backColor ); gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); gc.DrawRect( aRect ); <%}%> ]]> </template> <expandMacro name="GenerateMethod" FunctionLocationId="INITIALIZECONTROLSL_METHOD" FunctionName="InitializeControlsL" FunctionArgs="" DeclLocation="CONTENT_CLASS_PRIVATE_OWNED_METHODS" DefnLocation="CONTENT_MAIN_FILE" Realize="true"> <expandArgument name="FunctionComment"> /** * Initialize each control upon creation. */ </expandArgument> </expandMacro> <expandMacro name="GenerateMethod" FunctionLocationId="LAYOUTCONTROLS_METHOD" FunctionName="LayoutControls" FunctionArgs="" DeclLocation="CONTENT_CLASS_PRIVATE_OWNED_METHODS" DefnLocation="CONTENT_MAIN_FILE" Realize="true"> <expandArgument name="FunctionComment"> /** * Layout components as specified in the UI Designer */ </expandArgument> </expandMacro> <templateGroup id="GenerateResourceChanged" ifEvents="resourceChanged"> <expandMacro name="GenerateVirtualMethodOverrideForEventHandler" IsOwned="false" FunctionLocationId="HANDLERESOURCECHANGED_METHOD" FunctionArgs="TInt aType" FunctionName="HandleResourceChange" DeclLocation="CONTENT_CLASS_PROTECTED_OVERRIDDEN_METHODS" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Handle global resource changes, such as scalable UI or skin events (override) */ </expandArgument> <expandArgument name="StartFunctionBody"> CCoeControl::HandleResourceChange( aType ); </expandArgument> </expandMacro> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="RESOURCECHANGED_EVENTHANDLER" FunctionArgs="TInt aType" DeclLocation="CONTENT_CLASS_PROTECTED_USER_HANDLERS" DefnLocation="CONTENT_MAIN_FILE"> </expandMacro> </templateGroup> <templateGroup id="GenerateSizeChangedHandler" ifEvents="sizeChanged"> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="SIZECHANGED_EVENTHANDLER" FunctionArgs="" DeclLocation="CONTENT_CLASS_PROTECTED_USER_HANDLERS" DefnLocation="CONTENT_MAIN_FILE"> </expandMacro> <template id="InvokeSizeChangedHandler" location="SIZECHANGED_METHOD_BODY"> ${event.handlerName}(); </template> </templateGroup> <templateGroup id="GenerateDrawHandler" ifEvents="draw"> <expandMacro name="GenerateUserEventHandlerFunction" IsConst="true" FunctionLocationId="DRAW_EVENTHANDLER" FunctionArgs="const TRect& aRect" DeclLocation="CONTENT_CLASS_PROTECTED_USER_HANDLERS" DefnLocation="CONTENT_MAIN_FILE"> </expandMacro> <template id="InvokeDrawHandler" location="DRAW_METHOD_BODY"> ${event.handlerName}( aRect ); </template> </templateGroup> <templateGroup id="GeneratePositionChanged" ifEvents="positionChanged"> <expandMacro name="GenerateVirtualMethodOverrideForEventHandler" IsOwned="false" FunctionLocationId="POSITIONCHANGED_METHOD" FunctionArgs="" FunctionName="PositionChanged" DeclLocation="CONTENT_CLASS_PROTECTED_OVERRIDDEN_METHODS" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Handle position change (override) */ </expandArgument> <expandArgument name="StartFunctionBody"> CCoeControl::PositionChanged(); </expandArgument> </expandMacro> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="POSITIONCHANGED_EVENTHANDLER" FunctionArgs="" DeclLocation="CONTENT_CLASS_PROTECTED_USER_HANDLERS" DefnLocation="CONTENT_MAIN_FILE"> </expandMacro> </templateGroup> <templateGroup id="HandlePointerEvent" ifEvents="handlePointerEvent handleLongTapEvent"> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" FunctionLocationId="HANDLEPOINTEREVENTL_METHOD" FunctionArgs="const TPointerEvent& aPointerEvent" FunctionName="HandlePointerEventL" DeclLocation="CONTENT_CLASS_PROTECTED_OVERRIDDEN_METHODS" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Handle pointer events (override) */ </expandArgument> <expandArgument name="StartFunctionBody"> CCoeControl::HandlePointerEventL( aPointerEvent ); </expandArgument> </expandMacro> </templateGroup> <templateGroup id="HandlePointerEventHandler" ifEvents="handlePointerEvent"> <template id="InvokeHandlePointerEventHandler" location="HANDLEPOINTEREVENTL_METHOD_BODY"> ${event.handlerName}( aPointerEvent ); </template> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="HANDLEPOINTEREVENT_EVENTHANDLER" FunctionArgs="const TPointerEvent& aPointerEvent" DeclLocation="CONTENT_CLASS_PROTECTED_USER_HANDLERS" DefnLocation="CONTENT_MAIN_FILE"> </expandMacro> </templateGroup> <inline><![CDATA[ include("../srcgenLibrary.js"); if (!Engine.formMatches(form, ["RootAppUi"])) { if (Engine.formMatches(form, ["AppUi", "AknView"])) { // clear out any image stuff resetImagePropertyState(instance); } if (!Engine.formMatches(form, ["RootAppUi"])) { if (Engine.formMatches(form, [ "AknView", "AppUi" ])) { // get default and container-specific contributions // (the argument is a regular expression) contribs.addAll(Engine.generateChildContributions(form+"|Container")) } else { // unknown form -- likely specific to a parent -- so get // form-specific contributions contribs.addAll(Engine.generateChildContributions(form)) } } if (Engine.formMatches(form, ["AppUi", "AknView"])) { Engine.collateContributionsByPhase(contribs, ["Initialize", "PostInitialize"]); // fix up the phases so they point to real locations Engine.assignLocationsForPhase(contribs, "MainConstants", "CONTENT_HEADER_OWNED_CONSTANTS"); Engine.assignLocationsForPhase(contribs, "MainSystemIncludes", "CONTENT_MAIN_OWNED_SYSTEM_INCLUDES"); Engine.assignLocationsForPhase(contribs, "MainUserIncludes", "CONTENT_MAIN_OWNED_USER_INCLUDES"); Engine.assignLocationsForPhase(contribs, "Destroy", "DESTRUCTOR_BODY"); Engine.assignLocationsForPhase(contribs, "Construct", "CONSTRUCTOR_BODY"); Engine.assignLocationsForPhase(contribs, "Initialize", "INITIALIZECONTROLSL_METHOD"); Engine.assignLocationsForPhase(contribs, "PostInitialize", "INITIALIZECONTROLSL_METHOD"); Engine.assignLocationsForPhase(contribs, "PostActivateL", "CONSTRUCTL_METHOD_BODY"); Engine.assignLocationsForPhase(contribs, "LayoutControls", "LAYOUTCONTROLS_METHOD"); Engine.assignLocationsForPhase(contribs, "HeaderIncludes", "CONTENT_HEADER_OWNED_SYSTEM_INCLUDES"); Engine.assignLocationsForPhase(contribs, "ForwardDeclarations", "CONTENT_HEADER_OWNED_FORWARD_DECLARATIONS"); Engine.assignLocationsForPhase(contribs, "ClassTypeDeclarations", "CONTENT_CLASS_PUBLIC_OWNED_TYPES"); Engine.assignLocationsForPhase(contribs, "InstanceVariables", "CONTENT_CLASS_PRIVATE_OWNED_INSTANCE_VARIABLES"); Engine.assignLocationsForPhase(contribs, "ClassMethods", "CONTENT_CLASS_PRIVATE_OWNED_METHODS"); Engine.assignLocationsForPhase(contribs, "ClassSource", "CONTENT_MAIN_FILE"); Engine.assignLocationsForPhase(contribs, "ClassHeader", "CONTENT_HEADER_FILE"); Engine.assignLocationsForPhase(contribs, "BaseClassList", "CONTENT_CLASS_BASES"); Engine.assignLocationsForPhase(contribs, "OverriddenMethods", "CONTENT_CLASS_PROTECTED_OVERRIDDEN_METHODS"); Engine.assignLocationsForPhase(contribs, "UserHandlers", "CONTENT_CLASS_PROTECTED_USER_HANDLERS"); Engine.assignLocationsForPhase(contribs, "EventIncludes", "CONTENT_HEADER_EVENT_HANDLER_INCLUDES"); Engine.assignLocationsForPhase(contribs, "SizeChanged", "SIZECHANGED_METHOD_BODY"); // remove duplicate contributions where the location doesn't already have a filter Engine.removeDuplicateContributionsForLocation(contribs, "CONTENT_HEADER_OWNED_FORWARD_DECLARATIONS"); Engine.removeDuplicateContributionsForLocation(contribs, "DESTRUCTOR_BODY"); } } ]]> </inline> <template phase="ForwardDeclarations"><![CDATA[ class CAknPreviewPopUpController; class ${className}; ]]> </template> <template phase="MainSystemIncludes"><![CDATA[ #include <aknpreviewpopupcontroller.h> #include <barsread.h> #include <stringloader.h> ]]> </template> <template phase="MainSystemIncludes"><![CDATA[ #include "${instanceName$title}.h" ]]> </template> <inline scope="prototype"> function controllerInstance() { return instanceMemberName + "Controller"; } function contentInstance() { return instanceMemberName + "Content"; } </inline> <template phase="Construct"><![CDATA[ ${controllerInstance()} = NULL; ${contentInstance()} = NULL; ]]> </template> <template phase="Destroy"><![CDATA[ delete ${controllerInstance()}; ${controllerInstance()} = NULL; delete ${contentInstance()}; ${contentInstance()} = NULL; ]]> </template> <template phase="InstanceVariables"><![CDATA[ CAknPreviewPopUpController* ${controllerInstance()}; ${className}* ${contentInstance()}; ]]> </template> <inline> function getStyleArgs(instance) { var flags = ""; if (instance.properties.ELayoutDefault) flags += "CAknPreviewPopUpController::ELayoutDefault"; if (instance.properties.ELayoutSubMenu) { if (flags.length != 0) flags += " |\n\t\t"; flags += "CAknPreviewPopUpController::ELayoutSubMenu"; } if (instance.properties.EPermanentMode) { if (flags.length != 0) flags += " |\n\t\t"; flags += "CAknPreviewPopUpController::EPermanentMode"; } if (instance.properties.EFixedMode) { if (flags.length != 0) flags += " |\n\t\t"; flags += "CAknPreviewPopUpController::EFixedMode"; } if (instance.properties.EExcludeFrames) { if (flags.length != 0) flags += " |\n\t\t"; flags += "CAknPreviewPopUpController::EExcludeFrames"; } return flags; } function getCommandObserver(instance) { if (instance.parent.componentId == "com.nokia.sdt.series60.CAknView" || instance.parent.componentId == "com.nokia.sdt.series60.CAknAppUi") return "this"; return "iCoeEnv->AppUi()"; } </inline> <inline><![CDATA[ var mycontrib = Engine.createContributionForPhase("Initialize") var text = contentInstance() + " = " + className + "::NewL( " + getCommandObserver(instance) + " );\n"; var styleArgs = getStyleArgs(instance); text += controllerInstance() + " = CAknPreviewPopUpController::NewL(\n" if (styleArgs.length == 0 && !instance.properties.asynchronous) text += "\t\t*" + contentInstance() + " );\n"; if (styleArgs.length > 0 && !instance.properties.asynchronous) text += "\t\t*" + contentInstance() + ",\n\t\t" + styleArgs + " );\n"; if (styleArgs.length == 0 && instance.properties.asynchronous) text += "\t\t*" + contentInstance() + ",\n\t\t*" + contentInstance() + " );\n"; if (styleArgs.length > 0 && instance.properties.asynchronous) text += "\t\t*" + contentInstance() + ",\n\t\t*" + contentInstance() + ",\n\t\t" + styleArgs + " );\n"; text += contentInstance() + "->SetPopUpController( " + controllerInstance() + " );\n"; mycontrib.setText(text); contribs.add(mycontrib); ]]> </inline> <template phase="Initialize"><![CDATA[ <% if (instance.properties.headingText.length > 0) { %> { HBufC* headingText = StringLoader::LoadLC( ${Engine.getGeneratedResource(instance, "headingText").toUpperCase() } ); ${controllerInstance()}->SetHeadingTextL( *headingText ); CleanupStack::PopAndDestroy( headingText ); }<% } %> ]]> </template> <inline> function getMicroSecs(aFloat) { return (1000000.0 * aFloat).toFixed(); } </inline> <template phase="Initialize"><![CDATA[ <% if (instance.properties.showDelay != 1.0) { %> { TTimeIntervalMicroSeconds32 ms = ${getMicroSecs(instance.properties.showDelay)}; ${controllerInstance()}->SetPopUpShowDelay( ms ); }<% } %> ]]> </template> <template phase="Initialize"><![CDATA[ <% if (instance.properties.hideDelay != 3.0) { %> { TTimeIntervalMicroSeconds32 ms = ${getMicroSecs(instance.properties.hideDelay)}; ${controllerInstance()}->SetPopUpHideDelay( ms ); }<% } %> ]]> </template> <expandMacro name="GenerateMethod" FunctionLocationId="SHOW_PREVIEW_POPUP_RECT_METHOD" FunctionName="Show${instanceName$title}L" FunctionArgs="const TRect& aHighlightRect, const TDesC* aOverrideHeadingText" DeclPhase="ClassMethods" DefnLocation="MAIN_FILE" ClassName="${parentClassName}"> <expandArgument name="FunctionComment"> /** * Show the preview pop-up for ${instanceName}. * Sets the position of the preview pop-up so that it is aligned with the highlight rect. * This is intented to be used in conjunction with lists and grids if the * application wishes to implement a popup that follows lists/grids item highlight. * If fixed mode is used then the value of the highlight rect has no effect. * @param aHighlightRect Screen-relative rectangle used to calculate pop-up's position. * @param aOverrideText optional override header text */ </expandArgument> </expandMacro> <template location="SHOW_PREVIEW_POPUP_RECT_METHOD"> if ( aOverrideHeadingText != NULL ) { ${controllerInstance()}->SetHeadingTextL( *aOverrideHeadingText ); } ${controllerInstance()}->SetPositionByHighlight( aHighlightRect ); ${controllerInstance()}->ShowPopUp(); </template> <expandMacro name="GenerateMethod" FunctionLocationId="SHOW_PREVIEW_POPUP_POINT_METHOD" FunctionName="Show${instanceName$title}L" FunctionArgs="const TPoint& aPoint, const TDesC* aOverrideHeadingText" DeclPhase="ClassMethods" DefnLocation="MAIN_FILE" ClassName="${parentClassName}"> <expandArgument name="FunctionComment"> /** * Show the preview pop-up for ${instanceName}. * Sets the position of preview popup left and down from the given point. * If there is not enough space, the pop-up is opened up and left. * If fixed mode is used then the value of the point has no effect. * @param aPoint Popup's position. * @param aOverrideText optional override header text */ </expandArgument> </expandMacro> <template location="SHOW_PREVIEW_POPUP_POINT_METHOD"> if ( aOverrideHeadingText != NULL ) { ${controllerInstance()}->SetHeadingTextL( *aOverrideHeadingText ); } ${controllerInstance()}->SetPosition( aPoint ); ${controllerInstance()}->ShowPopUp(); </template> <templateGroup id="GeneratePreviewPopupObserverEvents" ifEvents="previewPopUpShown previewPopUpHidden"> <template phase="EventIncludes"><![CDATA[ #include <aknpreviewpopupobserver.h> ]]> </template> <template phase="BaseClassList">, MAknPreviewPopUpObserver</template> <expandMacro name="GenerateMethodWithOwnedBody" IsOwned="false" FunctionLocationId="HANDLEPREVIEWPOPUPEVENTL_METHOD" FunctionArgs="CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent" FunctionName="HandlePreviewPopUpEventL" DeclPhase="ClassPublic" DefnLocation="MAIN_FILE" ClassName="${parentClassName}"> <expandArgument name="FunctionComment"> /** * Handle preview pop-up events */ </expandArgument> </expandMacro> <template id="DispatchPreviewPopUpShown" location="HANDLEPREVIEWPOPUPEVENTL_METHOD_BODY"><![CDATA[<% var event = instance.events["previewPopUpShown"]; if (event) { %> if ( aEvent == MAknPreviewPopUpObserver::EPreviewPopUpShown && aController == ${controllerInstance()} ) { ${event.handlerName}( aController, aEvent ); return; } <%}%> ]]> </template> <template id="DispatchPreviewPopUpHidden" location="HANDLEPREVIEWPOPUPEVENTL_METHOD_BODY"><![CDATA[<% var event = instance.events["previewPopUpHidden"]; if (event) { %> if ( aEvent == MAknPreviewPopUpObserver::EPreviewPopUpHidden && aController == ${controllerInstance()} ) { ${event.handlerName}( aController, aEvent ); return; } <%}%> ]]> </template> <template phase="Initialize"><![CDATA[ ${controllerInstance()}->AddObserverL( *this ); ]]> </template> </templateGroup> <templateGroup id="GeneratePreviewPopupShownHandler" ifEvents="previewPopUpShown"> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="PREVIEWPOPUPSHOWN_EVENTHANDLER" FunctionArgs="CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent" DeclPhase="UserHandlers" DefnLocation="MAIN_FILE" ClassName="${parentClassName}"> </expandMacro> </templateGroup> <templateGroup id="GeneratePreviewPopupHiddenHandler" ifEvents="previewPopUpHidden"> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="PREVIEWPOPUPHIDDEN_EVENTHANDLER" FunctionArgs="CAknPreviewPopUpController* aController, TPreviewPopUpEvent aEvent" DeclPhase="UserHandlers" DefnLocation="MAIN_FILE" ClassName="${parentClassName}"> </expandMacro> </templateGroup> <!-- BEGIN EVENT handleLongTapEvent --> <templateGroup id="HandleLongTapEvent" ifEvents="handleLongTapEvent"> <template id="EventIncludes" location="CONTENT_HEADER_EVENT_HANDLER_INCLUDES"><![CDATA[ #include <AknLongTapDetector.h> ]]> </template> <template id="EventInterface" location="CONTENT_CLASS_BASES">, MAknLongTapDetectorCallBack</template> <template id="CallDetectorWithPointerEvent" location="HANDLEPOINTEREVENTL_METHOD_BODY"><![CDATA[ iLongTapDetector->PointerEventL( aPointerEvent ); ]]> </template> <expandMacro name="GenerateVirtualMethodOverrideForEventHandler" IsOwned="false" FunctionLocationId="HANDLELONGTAPEVENTL_METHOD" FunctionArgs="const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation" FunctionName="HandleLongTapEventL" DeclLocation="CONTENT_CLASS_PROTECTED_OVERRIDDEN_METHODS" DefnLocation="CONTENT_MAIN_FILE"> <expandArgument name="FunctionComment"> /** * Implement the HandleLongTapEventL method of MAknLongTapDetectorCallBack */ </expandArgument> </expandMacro> <expandMacro name="GenerateUserEventHandlerFunction" FunctionLocationId="HANDLELONGTAP_EVENTHANDLER" FunctionArgs="const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation" DeclLocation="CONTENT_CLASS_PROTECTED_USER_HANDLERS" DefnLocation="CONTENT_MAIN_FILE"> </expandMacro> <template id="DeclareDetectorMember" location="CONTENT_CLASS_PRIVATE_OWNED_INSTANCE_VARIABLES"> CAknLongTapDetector* iLongTapDetector; </template> <template id="MainSystemIncludes" location="CONTENT_MAIN_OWNED_SYSTEM_INCLUDES"><![CDATA[ #include <AknLongTapDetector.h> ]]> </template> <template id="ClearDetectorMember" location="CONSTRUCTOR_BODY"> iLongTapDetector = NULL; </template> <template id="DestroyDetectorMember" location="DESTRUCTOR_BODY"> delete iLongTapDetector; iLongTapDetector = NULL; </template> <template id="ConstructDetectorMember" location="CONSTRUCTL_METHOD_BODY"> iLongTapDetector = CAknLongTapDetector::NewL( this ); </template> </templateGroup> <!-- END EVENT handleLongTapEvent --> </sourceGen> </component> </componentDefinition>