×
Namespaces

Variants
Actions

Rotating images with Symbian AIW

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Tested with
Devices(s): Nokia N95
CompatibilityPlatform Security
Signing Required: Self-Signed
Article
Created: User:Technical writer 1 (09 Oct 2008)
Last edited: hamishwillee (18 Sep 2012)

Contents

Overview

This code snippet shows how to rotate an image 90/180/270 degrees with the AIW (Application Interworking Framework) handler.

This snippet can be self-signed.

Preconditions

Note.pngNote: This API is not part of the public SDK. It can be found in the SDK API Plug-in.


MMP file

The following library is required:

LIBRARY servicehandler.lib

In the resource file

Add the following headers:

 #include <AiwCommon.hrh>
#include <AiwCommon.rh>

Then define a submenu item as follows in the MENU_PANE resource:

 MENU_ITEM
{
command=ERotateSub;
cascade=r_rotate_menu;
txt = "Rotate";
}

Then define the actual submenu item as follows:

 RESOURCE MENU_PANE r_rotate_menu
{
items =
{
MENU_ITEM
{
command=EAIWPlaceHolder1;
txt = "Rotate";
}
};
}


After this, you can define the AIW menu interest item as follows:

 RESOURCE AIW_INTEREST r_aiwmenutst_ROTATE
{
items =
{
AIW_CRITERIA_ITEM
{
id = EAIWPlaceHolder1;
serviceCmd = KAiwCmdRotate; //from aiwcommon.hrh
serviceClass = KAiwClassMenu; //from aiwcommon.hrh
contentType = "image/*";
}
};
}


Source file

Add the following header:

 #include <AiwServiceHandler.h>

Construct the CAiwServiceHandler and attach the menu:

 iServiceHandler = CAiwServiceHandler::NewL();
iServiceHandler->AttachMenuL(R_ROTATE_MENU, R_AIWMENUTST_ROTATE);

Because the menu items for rotating were defined as submenus, you can handle adding the menu with the following code inside the DynInitMenuPaneL implementation:

 if ( iServiceHandler->HandleSubmenuL( *aMenuPane ) )
{
return;
}
if(iImageFileName.Length()
&& BaflUtils::Parse(iImageFileName) == KErrNone)
{
CAiwGenericParamList& paramList = iServiceHandler->InParamListL();
 
TAiwVariant varFile(iImageFileName);
TAiwGenericParam paramFile( EGenericParamFile, varFile );
paramList.AppendL( paramFile );
 
TAiwVariant varMime(_L("image/jpeg"));
TAiwGenericParam paramMime( EGenericParamMIMEType, varMime );
paramList.AppendL( paramMime );
 
iServiceHandler->InitializeMenuPaneL(
*aMenuPane,
aResourceId,
EAIWExampleCmdLast1,
paramList);
 
}
else if(aResourceId == your Menu id goes here)
{
// Use aMenuPane->SetItemDimmed to dim out the menu item.
}

And when the user selects the menu item, you just need to forward the command to CAiwServiceHandler in your command handler’s default block as follows:

 CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC();
 
TAiwGenericParam filePath( EGenericParamFile, iImageFileName );
paramList->AppendL( filePath );
 
TAiwVariant varMime(_L("image/jpeg"));
TAiwGenericParam paramMime( EGenericParamMIMEType, varMime );
paramList->AppendL( paramMime );
 
iServiceHandler->ExecuteMenuCmdL(
aCommand,
*paramList,
NULL,
0,
this);
 
CleanupStack::PopAndDestroy(paramList);
This page was last modified on 18 September 2012, at 10:14.
61 page views in the last 30 days.
×