diff -r 000000000000 -r 96612d01cf9f videocollection/hgmyvideos/src/vcxhgmyvideosaiwmenuhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videocollection/hgmyvideos/src/vcxhgmyvideosaiwmenuhandler.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,257 @@ +/* +* Copyright (c) 2009 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". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: A class to manage AIW provided menu items* +*/ + + +#include +#include +#include +#include + +#include "vcxhgmyvideosaiwmenuhandler.h" +#include "vcxhgmyvideos.hrh" +#include "IptvDebug.h" + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::CHgMyVideosAiwMenuHandler() +// --------------------------------------------------------------------------- +// +CHgMyVideosAiwMenuHandler::CHgMyVideosAiwMenuHandler() + { + IPTVLOGSTRING_LOW_LEVEL( + "CHgMyVideosAiwMenuHandler::CHgMyVideosAiwMenuHandler()"); + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::~CHgMyVideosAiwMenuHandler() +// --------------------------------------------------------------------------- +// +CHgMyVideosAiwMenuHandler::~CHgMyVideosAiwMenuHandler() + { + IPTVLOGSTRING_LOW_LEVEL( + "CHgMyVideosAiwMenuHandler::~CHgMyVideosAiwMenuHandler()"); + + delete iMediaRecognizer; + delete iAiwServiceHandler; + delete iPath; + delete iMimeType; + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::AttachMenuL() +// --------------------------------------------------------------------------- +// +void CHgMyVideosAiwMenuHandler::AttachMenuL( TInt aMenuPaneId ) + { + IPTVLOGSTRING2_LOW_LEVEL( + "CHgMyVideosAiwMenuHandler::AttachMenuL(%d)", aMenuPaneId ); + + if ( ! iAiwServiceHandler ) + { + iAiwServiceHandler = CAiwServiceHandler::NewL(); + } + + iAiwServiceHandler->AttachMenuL( + aMenuPaneId, R_VCXHGMYVIDEOS_AIW_ASSIGN_INTEREST ); + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::DetachMenu() +// --------------------------------------------------------------------------- +// +void CHgMyVideosAiwMenuHandler::DetachMenu( TInt aMenuPaneId ) + { + IPTVLOGSTRING2_LOW_LEVEL( + "CHgMyVideosAiwMenuHandler::DetachMenu(%d)", aMenuPaneId ); + + iAiwServiceHandler->DetachMenu( + aMenuPaneId, R_VCXHGMYVIDEOS_AIW_ASSIGN_INTEREST ); + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::TryHandleSubmenuL() +// --------------------------------------------------------------------------- +// +TBool CHgMyVideosAiwMenuHandler::TryHandleSubmenuL( CEikMenuPane* aMenuPane ) + { + IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::HandleSubmenuL()"); + return iAiwServiceHandler->HandleSubmenuL( *aMenuPane ); + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::InitializeMenuPaneL() +// --------------------------------------------------------------------------- +// +void CHgMyVideosAiwMenuHandler::InitializeMenuPaneL( + TInt aResourceId, + CEikMenuPane* aMenuPane, + const TDesC& aPath, + const TDesC& aMimeType ) + { + IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::InitializeMenuPaneL()"); + + // Let provider add its menu items to the view menu. + // If placeholder has been deleted, no AIW option is displayed. + // Note! Filehandles are not used, only file paths. + CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL(); + + FillAiwParamsL( paramList, aPath, aMimeType ); + + iAiwServiceHandler->InitializeMenuPaneL( + *aMenuPane, + aResourceId, + EVcxHgMyVideosCmdAiwBase, + paramList ); + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::IsAiwCommand() +// --------------------------------------------------------------------------- +// +TBool CHgMyVideosAiwMenuHandler::IsAiwCommand( TInt aCommand ) + { + TBool res = EFalse; + + if ( iAiwServiceHandler ) + { + res = iAiwServiceHandler->ServiceCmdByMenuCmd( aCommand ) != KAiwCmdNone; + } + + IPTVLOGSTRING2_LOW_LEVEL("CHgMyVideosAiwMenuHandler::IsAiwCommand(%d)", res); + + return res; + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::HandleAiwCommandL() +// --------------------------------------------------------------------------- +// +void CHgMyVideosAiwMenuHandler::HandleAiwCommandL( + TInt aCommand, + const TDesC& aPath, + const TDesC& aMimeType ) + { + IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::HandleAiwCommandL()"); + + // + // Save the command parameters so they can be used to cancel + // menu if needed + // + iCommand = aCommand; + + HBufC* newPath = aPath.AllocL(); + if ( iPath ) + { + delete iPath; + iPath = NULL; + } + iPath = newPath; + + HBufC* newMimeType = aMimeType.AllocL(); + if ( iMimeType ) + { + delete iMimeType; + iMimeType = NULL; + } + iMimeType = newMimeType; + + CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL(); + FillAiwParamsL( paramList, aPath, aMimeType ); + + iMenuActive = ETrue; + // Call AIW service handler + iAiwServiceHandler->ExecuteMenuCmdL( + aCommand, + paramList, + iAiwServiceHandler->OutParamListL() ); + iMenuActive = EFalse; + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::IsMenuActive() +// --------------------------------------------------------------------------- +// +TBool CHgMyVideosAiwMenuHandler::IsMenuActive() + { + return iMenuActive; + } + +// --------------------------------------------------------------------------- +// CHgMyVideosAiwMenuHandler::FillAiwParamsL() +// --------------------------------------------------------------------------- +// +void CHgMyVideosAiwMenuHandler::FillAiwParamsL( + CAiwGenericParamList& aAiwParamsList, + const TDesC& aPath, + const TDesC& aMimeType ) + { + IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::FillAiwParamsL()"); + + HBufC* path = aPath.AllocLC(); + TAiwVariant varMime( aMimeType ); + if ( ! aMimeType.Length() ) + { + if ( ! iMediaRecognizer ) + { + iMediaRecognizer = CMediaRecognizer::NewL(); + } + varMime.Set( iMediaRecognizer->MimeTypeL( *path ) ); + } + + TAiwGenericParam paramMime( EGenericParamMIMEType, varMime ); + aAiwParamsList.AppendL( paramMime ); + + TAiwVariant varFile( *path ); + TAiwGenericParam paramFile( EGenericParamFile, varFile ); + aAiwParamsList.AppendL( paramFile ); + + CleanupStack::PopAndDestroy( path ); + } + +//------------------------------------------------------------------------------ +// CHgMyVideosAiwMenuHandler::CloseOpenAiwMenuL() +//------------------------------------------------------------------------------ +// +void CHgMyVideosAiwMenuHandler::CloseOpenAiwMenuL() + { + IPTVLOGSTRING_LOW_LEVEL("CHgMyVideosAiwMenuHandler::CloseOpenAiwMenuL()"); + + if ( iMenuActive ) + { + CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL(); + + FillAiwParamsL( paramList, iPath->Des(), iMimeType->Des() ); + + // Call AIW service handler to cancel the menu + iAiwServiceHandler->ExecuteMenuCmdL( + iCommand, + paramList, + iAiwServiceHandler->OutParamListL(), + KAiwOptCancel ); + + // Reset the member variables so command will not be reset + iMenuActive = EFalse; + iCommand = 0; + delete iPath; + iPath = NULL; + delete iMimeType; + iMimeType = NULL; + } + } + +// End of File