--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uidesigner/com.nokia.sdt.series60.componentlibrary/components/containers/CAknDialog.component Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,586 @@
+<?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.DialogBase"
+ friendlyName="%friendlyName"
+ qualifiedName="com.nokia.sdt.series60.CAknDialog"
+ abstract="true"
+ version="1.0">
+ <documentation>
+ <information>%information</information>
+ <wizardDescription>%information</wizardDescription>
+ </documentation>
+ <symbian sdkName="com.nokia.series60" minSDKVersion="2.0"
+ className="CAknDialog" classHelpTopic="" />
+ <designerImages
+ smallIconFile="CAknDialog_sm.png"
+ largeIconFile="CAknDialog.png"/>
+
+ <attributes>
+ <attribute key="options-menu-property-name">optionsMenu</attribute>
+ <attribute key="event-handler-target">true</attribute>
+ <attribute key="base-container-class">CAknDialog</attribute>
+ </attributes>
+ <properties>
+ <property category="Appearance" name="backColor" type="string"
+ editorClass="com.nokia.sdt.symbian.ui.editors.RGBEditorFactoryWithSystemColorCombo"/>
+ <property category="Appearance" name="fillRect" type="boolean" default="true"/>
+ <!-- corresponds to flag EEikDialogFlagFillAppClientRect 0x1000 -->
+ <componentReferenceProperty category="Dialog" scope="children" constraint="com.nokia.sdt.series60.MenuBar" name="optionsMenu"/>
+ </properties>
+ <implementations>
+ <implementation>
+ <interface id="com.nokia.sdt.datamodel.adapter.IVisualAppearance"/>
+ <interface id="com.nokia.sdt.datamodel.adapter.ILayout"/>
+ <code class="com.nokia.sdt.series60.component.AknDialogVisualAndLayoutImplFactory"/>
+ </implementation>
+ <implementation>
+ <interface id="com.nokia.sdt.datamodel.adapter.IQueryContainment"/>
+ <script file="CAknDialog_queryContainment.js" prototype="CAknDialogQueryContainment"/>
+ </implementation>
+ </implementations>
+
+ <sourceMapping>
+ <mapResource struct="DIALOG" headers="avkon.rsg avkon.rh eikon.rh">
+ <!-- TODO: flags -->
+ <mapBitmaskMember property="." member="flags"
+ includedProperties="fillRect wait notifyEsc modeless">
+ <!-- initial blank entries force bits on -->
+ <mapBitmaskValue properties="" value="EEikDialogFlagNoDrag" />
+ <mapBitmaskValue properties="" value="EEikDialogFlagNoTitleBar" />
+ <mapBitmaskValue properties="" value="EEikDialogFlagCbaButtons" />
+
+ <mapBitmaskValue properties="notifyEsc" value="EEikDialogFlagNotifyEsc" />
+ <mapBitmaskValue properties="modeless" value="EEikDialogFlagModeless" />
+ <mapBitmaskValue properties="fillRect" value="EEikDialogFlagFillAppClientRect" />
+ <mapBitmaskValue properties="wait" value="EEikDialogFlagWait" />
+ </mapBitmaskMember>
+ <select property="[parent].[com.nokia.sdt.series60.CBA]">
+ <choice value="">
+ <!-- no CBA -->
+ </choice>
+ <choice>
+ <select property="[parent].[com.nokia.sdt.series60.CBA].info">
+ <choice value="com.nokia.sdt.series60.CBA.Type.CUSTOM">
+ <!-- emit a reference to the resource generated -->
+ <mapReferenceMember property="[parent].[com.nokia.sdt.series60.CBA]" member="buttons"/>
+ </choice>
+ <choice>
+ <!-- else, emit the builtin -->
+ <mapIdentifierMember property="[parent].[com.nokia.sdt.series60.CBA].info" member="buttons" />
+ </choice>
+ </select>
+ </choice>
+ </select>
+ <mapArrayMember property="." member="items">
+ <select attribute="is-dialog-content">
+ <!-- only map visible items, not menu bars, etc. -->
+ <choice value="true">
+ <mapResourceElement struct="DLG_LINE" headers="avkon.rh"
+ instanceIdentifyingMember="id" id="dialog_line">
+ <!-- looking at the current array element, always
+ create a unique value from the dialog and instance name -->
+ <mapEnumMember property="." member="id"
+ uniqueValue="*"
+ nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_DIALOG_LINE_ID"
+ />
+ <!-- looking at the current array element, get the
+ enumerator for the instance's control type -->
+ <mapEnumMember property="." member="type"
+ nameAlgorithm="com.nokia.sdt.component.symbian.NAME_ALG_CONTROL_TYPE"
+ />
+ <mapResourceMember property="." member="control"/>
+ </mapResourceElement>
+ </choice>
+ <!-- default case does nothing -->
+ <choice/>
+ </select>
+ </mapArrayMember>
+
+ </mapResource>
+ </sourceMapping>
+
+ <sourceGen forms="AppUi AknView RootAppUi">
+
+ <!-- contributions as dialog -->
+
+ <defineLocation id="HEADER_FILE" domain="cpp" dir="${inc}"
+ file="${instanceName}.h"
+ owned="false"
+ location="">
+ </defineLocation>
+
+ <template location="HEADER_FILE">
+#ifndef ${instanceName.toUpperCase()}_H
+#define ${instanceName.toUpperCase()}_H
+
+ </template>
+
+ <defineLocation id="HEADER_INCLUDES" baseLocation="HEADER_FILE"
+ location="region(Generated Includes)"
+ filter="unique-includes">
+ </defineLocation>
+
+ <template location="HEADER_INCLUDES"><![CDATA[
+#include <akndialog.h>
+]]> </template>
+
+ <defineLocation id="EVENT_INCLUDES" baseLocation="HEADER_FILE"
+ owned="false"
+ filter="unique-includes"
+ location="region(Event Handler Includes)">
+ </defineLocation>
+
+ <template location="EVENT_INCLUDES" />
+
+ <defineLocation id="HEADER_FORWARD_DECLARATIONS" baseLocation="HEADER_FILE"
+ location="region(Generated Forward Declarations)">
+ </defineLocation>
+
+ <template location="HEADER_FORWARD_DECLARATIONS"/>
+
+
+ <defineLocation id="CLASS" baseLocation="HEADER_FILE"
+ owned="false"
+ location="class(${className})">
+ <template><![CDATA[
+/**
+ * @class ${className} ${instanceName}.h
+ */
+class ${className} : public CAknDialog
+ {
+public:
+ // constructors and destructor
+ ${className}();
+ virtual ~${className}();
+ void ConstructL();
+
+ static TBool RunDlgLD();
+ void LoadFromResourceL();
+
+protected:
+ // from CAknDialog
+ void Draw( const TRect& aRect ) const;
+ TBool OkToExitL( TInt aButtonId );
+ void PreLayoutDynInitL();
+ };
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="CLASS"/>
+
+ <defineLocation id="CLASS_IVARS" baseLocation="CLASS"
+ location="region(Generated Instance Variables)">
+ <template><![CDATA[
+private: <% contrib.indentAdjust(-1); %>
+]]> </template>
+ </defineLocation>
+
+ <template location="CLASS_IVARS"/>
+
+ <template location="HEADER_FILE">
+#endif // ${instanceName.toUpperCase()}_H
+ </template>
+
+ <defineLocation id="MAIN_FILE" domain="cpp" dir="${src}"
+ file="${instanceName}.cpp"
+ owned="false"
+ location="">
+ </defineLocation>
+
+ <template location="MAIN_FILE"/>
+
+ <defineLocation id="MAIN_SYSTEM_INCLUDES" baseLocation="MAIN_FILE"
+ location="region(Generated System Includes)"
+ filter="unique-includes">
+ <template><![CDATA[
+#include <aknappui.h>
+]]> </template>
+ <template><![CDATA[
+#include <avkon.hrh>
+]]> </template>
+ </defineLocation>
+
+ <template location="MAIN_SYSTEM_INCLUDES"/>
+
+ <defineLocation id="MAIN_USER_INCLUDES" baseLocation="MAIN_FILE"
+ location="region(Generated User Includes)"
+ filter="unique-includes">
+ <template><![CDATA[
+#include "${instanceName}.h"
+]]> </template>
+ </defineLocation>
+
+ <template location="MAIN_USER_INCLUDES"/>
+
+ <inline>
+if (Engine.formMatches(form, [""])) {
+ this.getHrhFiles(contribs);
+}
+ </inline>
+
+ <defineLocation id="CONSTANTS" baseLocation="MAIN_FILE"
+ location="region(Generated Constants)">
+ </defineLocation>
+
+ <template location="CONSTANTS" />
+
+ <defineLocation id="CONSTRUCTOR" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::${className}())">
+ <template><![CDATA[
+/**
+ * Construct the ${className} instance
+ */
+${className}::${className}()
+ {
+ }
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="CONSTRUCTOR"/>
+
+ <defineLocation id="CONSTRUCTOR_BODY" baseLocation="CONSTRUCTOR"
+ location="region(Generated Contents)">
+ <template>
+iContextMenuCommandObserver = NULL;
+ </template>
+ </defineLocation>
+
+
+ <defineLocation id="CONSTRUCTL" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::ConstructL())">
+ <template><![CDATA[
+/**
+ * @brief Completes the second phase of Symbian object construction.
+ * Put initialization code that could leave here.
+ */
+void ${className}::ConstructL()
+ {
+ }
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="CONSTRUCTL"/>
+
+ <defineLocation id="CONSTRUCTL_BODY" baseLocation="CONSTRUCTL"
+ location="region(Generated Contents)">
+ </defineLocation>
+
+ <inline scope="prototype">
+include("containerLibrary.js")
+ </inline>
+
+ <template location="CONSTRUCTL_BODY"><![CDATA[
+<% var menuBarId =
+ Engine.getGeneratedResource(getInstanceFromChildName(children, properties.optionsMenu));
+ // TODO children are not yet generated, so can't get the generated resource name for menuBar!
+ if (menuBarId != null) { %>
+CAknDialog::ConstructL( ${menuBarId.toUpperCase()} );
+<% } %>
+]]> </template>
+
+
+ <defineLocation id="DESTRUCTOR" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::~${className}())">
+ <template><![CDATA[
+/**
+ * The dialog's destructor removes the container from the control
+ * stack and destroys it.
+ */
+${className}::~${className}()
+ {
+ }
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="DESTRUCTOR"/>
+
+ <defineLocation id="DESTRUCTOR_BODY" baseLocation="DESTRUCTOR"
+ location="region(Generated Contents)">
+ </defineLocation>
+
+ <defineLocation id="RUNDLGLD" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::RunDlgLD())">
+ <template><![CDATA[
+/**
+* Static construction and execution of the dialog.
+* @return ETrue if the dialog is accepted, EFalse if canceled
+*/
+TBool ${className}::RunDlgLD()
+ {
+ ${className}* ${instanceName} = new ( ELeave ) ${className}();
+ return ${instanceName}->ExecuteLD( ${resourceName$upper} );
+ }
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="RUNDLGLD"/>
+
+
+ <defineLocation id="DRAW_BODY" baseLocation="DRAW"
+ location="region(Generated Contents)">
+ </defineLocation>
+
+ <useTemplate ids="DrawBodyBgColor"/>
+
+ <defineLocation id="OKTOEXITL" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::OkToExitL(TInt))">
+ <template><![CDATA[
+/**
+ * Handle a button press and tell whether it closes the dialog. (override)
+ * @param aButtonId the identifier for the button (avkon.hrh)
+ */
+TBool ${className}::OkToExitL( TInt aButtonId )
+ {
+ }
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="OKTOEXITL"/>
+
+ <defineLocation id="OKTOEXITL_BODY" baseLocation="OKTOEXITL"
+ location="region(Generated Contents)">
+ </defineLocation>
+
+<!-- TODO: need to check for CBA overrides -->
+ <template location="OKTOEXITL_BODY" form="AppUi"><![CDATA[
+switch ( aButtonId )
+ {
+ case EAknSoftkeyOptions:
+ iAvkonAppUi->ProcessCommandL( EAknSoftkeyOptions );
+ break;
+ case EAknSoftkeyBack:
+ iAvkonAppUi->ProcessCommandL( EEikCmdExit );
+ break;
+ }
+
+// Do not exit the application; this is the main window.
+// AppUi determines when to exit based on the EEikCmdExit command above.
+return EFalse;
+]]> </template>
+
+ <inline scope="prototype">
+include("../cba/cbaLibrary.js")
+ </inline>
+
+ <template location="OKTOEXITL_BODY" form="AknView"><![CDATA[
+switch ( aButtonId )
+ {
+<% // "handle" left command id
+ var id = findCbaLeftId(children);
+ if (id != null && id != "") {
+%> case ${id}:
+ {
+ // handle left button
+ break;
+ }
+<% } // "handle" right command id
+ id = findCbaRightId(children);
+ if (id == null)
+ id = "EAknSoftkeyExit";
+ var rightShouldExit = (id == null || id == "EAknSoftkeyExit" || id == "EAknSoftkeyBack");
+%> case ${id}:
+ {
+ // handle right button<% if (rightShouldExit) { %>
+ iAvkonAppUi->ProcessCommandL( EEikCmdExit );<% } %>
+ break;
+ }
+ }
+return EFalse;
+]]> </template>
+
+
+
+
+ <defineLocation id="PRELAYOUTDYNINITL" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::PreLayoutDynInitL())">
+ <template><![CDATA[
+/**
+ * Initialize controls and settings before a dialog is laid out. (override)
+ */
+void ${className}::PreLayoutDynInitL()
+ {
+ }
+]]>
+ </template>
+ </defineLocation>
+
+ <template location="PRELAYOUTDYNINITL"/>
+
+ <defineLocation id="PRELAYOUTDYNINITL_BODY" baseLocation="PRELAYOUTDYNINITL"
+ location="region(Generated Contents)">
+ </defineLocation>
+
+ <template location="PRELAYOUTDYNINITL_BODY"/>
+
+ <defineLocation id="DRAW" baseLocation="MAIN_FILE"
+ owned="false"
+ location="function(${className}::Draw(const TRect&))">
+ <template><![CDATA[
+void ${className}::Draw( const TRect& aRect ) const
+ {
+ }
+]]>
+ </template>
+ </defineLocation>
+
+
+ <defineLocation id="LOADFROMRESOURCEL" baseLocation="MAIN_FILE"
+ location="function(${className}::LoadFromResourceL())">
+ <template>
+void ${className}::LoadFromResourceL()
+ {
+ }
+ </template>
+ </defineLocation>
+
+ <template form="AppUi" location="LOADFROMRESOURCEL">
+ExecuteLD( ${resourceName.toUpperCase()} );
+ </template>
+
+ <!-- gather child contributions -->
+
+ <inline scope="prototype">
+ include("../srcgenLibrary.js");
+ </inline>
+
+ <inline>
+
+ if (form != 'RootAppUi') {
+ if (Engine.formMatches(form, [ "AknView", "AppUi" ])) {
+ // clear out any image stuff
+ resetImagePropertyState(instance);
+
+ // get default and dialog-specific contributions
+ contribs.addAll(Engine.generateChildContributions(form+"|Dialog"))
+ } else {
+ // get specific desired contributions
+ contribs.addAll(Engine.generateChildContributions(form))
+ }
+
+ // fix up the phases so they point to real locations
+ Engine.assignLocationsForPhase(contribs, "ClassSource", "MAIN_FILE");
+ Engine.assignLocationsForPhase(contribs, "ClassHeader", "HEADER_FILE");
+
+ Engine.assignLocationsForPhase(contribs, "MainConstants", "CONSTANTS");
+ Engine.assignLocationsForPhase(contribs, "MainSystemIncludes", "MAIN_SYSTEM_INCLUDES");
+ Engine.assignLocationsForPhase(contribs, "MainUserIncludes", "MAIN_USER_INCLUDES");
+ Engine.assignLocationsForPhase(contribs, "Construct", "CONSTRUCTOR_BODY");
+ Engine.assignLocationsForPhase(contribs, "Initialize", "PRELAYOUTDYNINITL_BODY");
+ Engine.assignLocationsForPhase(contribs, "HeaderIncludes", "HEADER_INCLUDES");
+ Engine.assignLocationsForPhase(contribs, "EventIncludes", "EVENT_INCLUDES");
+ Engine.assignLocationsForPhase(contribs, "ForwardDeclarations", "HEADER_FORWARD_DECLARATIONS");
+ Engine.assignLocationsForPhase(contribs, "InstanceVariables", "CLASS_IVARS");
+
+ //Engine.removeDuplicateContributionsForLocation(contribs, "HEADER_INCLUDES");
+ Engine.removeDuplicateContributionsForLocation(contribs, "HEADER_FORWARD_DECLARATIONS");
+ //Engine.removeDuplicateContributionsForLocation(contribs, "MAIN_SYSTEM_INCLUDES");
+ //Engine.removeDuplicateContributionsForLocation(contribs, "MAIN_USER_INCLUDES");
+ }
+
+ </inline>
+
+ <template id="IncludeRsgFile" location="MAIN_SYSTEM_INCLUDES"><![CDATA[
+#include <${resourceFileNameBase}.rsg>
+]]> </template>
+
+ <!-- contributions as child -->
+
+ <template form="AknView" phase="MainUserIncludes">
+#include "${instanceName}.h"
+ </template>
+
+ <template form="AknView" phase="ForwardDeclarations">
+class ${className};
+ </template>
+
+ <template form="AknView" phase="InstanceVariables">
+${className}* ${instanceMemberName};
+ </template>
+
+ <template form="AknView" phase="DoActivateL"><![CDATA[
+if ( ${instanceMemberName} == NULL )
+ {
+ ${instanceMemberName} = new ${className}();
+ ${instanceMemberName}->SetMopParent( this ); <%
+if ( properties.wait ) {
+ var sb = newStatusBuilder();
+ sb.add(IStatus.ERROR, lookupString("waitPropertySetInView"), [ instanceName ]);
+ logStatus(sb.createStatus("", null));
+ } %>
+ ${instanceMemberName}->ExecuteLD( ${resourceName.toUpperCase()} );
+ AppUi()->AddToStackL( *this, ${instanceMemberName} );
+ }
+]]> </template>
+
+ <template form="AknView" phase="DoDeactivate">
+if ( ${instanceMemberName} != NULL )
+ {
+ AppUi()->RemoveFromViewStack( *this, ${instanceMemberName} );
+ delete ${instanceMemberName};
+ ${instanceMemberName} = NULL;
+ }
+ </template>
+
+
+ <template form="RootAppUi" phase="MainUserIncludes">
+#include "${instanceName}.h"
+ </template>
+
+ <template form="RootAppUi" phase="ForwardDeclarations">
+class ${className};
+ </template>
+
+ <template form="RootAppUi" phase="InstanceVariables">
+${className}* ${instanceMemberName};
+ </template>
+
+
+ <!-- NOTE: this only makes sense when this is the initial view -->
+ <template form="RootAppUi" phase="Initialize">
+${instanceMemberName} = new ( ELeave ) ${className};
+${instanceMemberName}->ConstructL();
+${instanceMemberName}->SetMopParent( this );
+${instanceMemberName}->LoadFromResourceL();
+AddToStackL( ${instanceMemberName} );
+ </template>
+
+ <template form="RootAppUi" phase="Destroy">
+if ( ${instanceMemberName} != NULL )
+ {
+ RemoveFromStack( ${instanceMemberName} );
+ delete ${instanceMemberName};
+ ${instanceMemberName} = NULL;
+ }
+ </template>
+
+ <useTemplateGroup ids="GeneratePrepareForFocusTransition GeneratePageChanged GenerateLineChanged"/>
+ <useTemplateGroup ids="GenerateProcessCommand GenerateOfferKeyToApp"/>
+ <useTemplateGroup ids="GenerateFocusChanged"/>
+ <useTemplateGroup ids="GenerateSizeChanged GeneratePositionChanged"/>
+ <useTemplateGroup ids="GenerateDraw GenerateOfferKeyEvent"/>
+ <useTemplateGroup ids="GeneratePrepareForFocusLoss GeneratePrepareForFocusGain"/>
+
+ </sourceGen>
+ </component>
+</componentDefinition>