Rotating images with Symbian AIW
Article Metadata
Tested with
Compatibility
Platform Security
Article
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
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);


(no comments yet)