--- a/homescreenplugins/videoahlplugin/src/videoactionhandler.cpp Mon Mar 15 12:40:47 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,461 +0,0 @@
-/*
-* Copyright (c) 2008 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: interface class definition for action handler plugin*
-*/
-
-
-// Version : %version: 21 %
-
-#include <e32def.h>
-#include <e32uid.h>
-#include <apgcli.h>
-#include <apacmdln.h>
-#include <apgtask.h>
-#include <eikenv.h>
-#include <vwsdef.h>
-#include <coeaui.h>
-#include <avkon.rsg>
-#include <AknGlobalNote.h>
-#include <MediatorEventProvider.h>
-#include <centralrepository.h>
-#include <liwvariant.h>
-#include <videoplayeractivationmessage.h>
-#include <vcxmyvideosdefs.h>
-#include <ErrorUI.h>
-
-#include "videoahpluginconstants.h"
-#include "videoactionhandler.h"
-#include "videoplayerpskeys.h"
-#include "iptvlastwatcheddata.h"
-#include "iptvlastwatchedapi.h"
-#include "vcxhgvodtelephonyclient.h"
-
-// CONSTANTS
-const TUid KUidMPXVideoPlayerApp = { 0x200159B2 };
-const TUid KUidMediaSettingsApp = { 0x10005A3F };
-
-_LIT8( KKeyMessage, "message" );
-_LIT8( KKeyMessageData, "message_data" );
-
-// Constants for wg name. Used to identify if wg is actually ours.
-_LIT( KVideoPlayerWgName, "*200159b2*");
-const TUint KVideoPlayerWgNameSize = 50;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// CVideoActionHandler::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CVideoActionHandler::ConstructL()
- {
- iMediatorEventProvider = CMediatorEventProvider::NewL();
- }
-
-// ----------------------------------------------------------------------------
-// CVideoActionHandler::NewL
-// ----------------------------------------------------------------------------
-//
-CVideoActionHandler* CVideoActionHandler::NewL()
- {
- CVideoActionHandler* self = CVideoActionHandler::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CVideoActionHandler::NewLC
-// ----------------------------------------------------------------------------
-//
-CVideoActionHandler* CVideoActionHandler::NewLC()
- {
- CVideoActionHandler* self = new( ELeave ) CVideoActionHandler;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::~CVideoActionHandler
-// ---------------------------------------------------------------------------
-CVideoActionHandler::~CVideoActionHandler()
- {
- delete iMediatorEventProvider;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::ExecuteActionL
-// Executes provided action
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::ExecuteActionL( const CLiwMap* aMap )
- {
- TInt errCode( KErrNotFound );
-
- TVideoPlayerActivationMessage* activationMsg = new( ELeave ) TVideoPlayerActivationMessage;
- CleanupStack::PushL( activationMsg );
-
- errCode = PrepareMessageL( aMap, *activationMsg );
- if( KErrNone == errCode )
- {
- errCode = StartAppL( *activationMsg );
- }
- CleanupStack::PopAndDestroy( activationMsg );
-
- return errCode;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::PrepareMessageL
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::PrepareMessageL( const CLiwMap* aMap,
- TVideoPlayerActivationMessage& aActivationMsg )
- {
- TInt err( KErrNone );
-
- TLiwVariant variant;
- variant.PushL();
- err = ExtractVariant( aMap, variant, KKeyMessage );
-
- if( err != KErrNone )
- {
- CleanupStack::PopAndDestroy( &variant );
- return err;
- }
-
- TPtrC message = variant.AsDes();
-
-
- aActivationMsg.iServiceId = 0;
- aActivationMsg.iFileId = 0;
- aActivationMsg.iDrive = 0;
- aActivationMsg.iMsgSender = TVideoPlayerActivationMessage::EMatrixMenu;
-
- if ( !message.CompareF( KVcxNsExtLaunchVideoCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::ELaunchVideoToPlayer;
- TLiwVariant variantData;
- variantData.PushL();
- err = ExtractVariant( aMap, variantData, KKeyMessageData );
-
- if( err == KErrNone )
- {
- TPtrC data = variantData.AsDes();
- aActivationMsg.iFullPath = data;
- }
- else if( err == KErrNotFound )
- {
- err = KErrNone;
- }
- CleanupStack::PopAndDestroy( &variantData );
- }
- else if ( !message.CompareF( KVcxNsExtLaunchLastWatchedCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::ELaunchVideoToPlayer;
- LoadLwDataL( aActivationMsg );
- }
- else if ( !message.CompareF( KVcxNsExtOpenStorageCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::EOpenVideoStorage;
- }
- else if ( !message.CompareF( KVcxNsExtInternetVideoCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::EOpenInternetVideos;
- }
- else if ( !message.CompareF( KVcxNsExtServiceCatalCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::EOpenServiceCatalogue;
- }
- else if ( !message.CompareF( KVcxNsExtVideoShopCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::EOpenVideoShop;
- }
- else if ( !message.CompareF( KVcxNsExtLaunchVCSettingsCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::EOpenVCSettings;
- }
- else if ( !message.CompareF( KVcxNsExtOpenLiveTVCmd ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::ELiveTVMessage;
- }
- else if( !message.CompareF( KVcxNsExtLaunchLiveTVLastWatch ) )
- {
- aActivationMsg.iMsgType = TVideoPlayerActivationMessage::ELiveTVMessageLastWatched;
- }
- else if( !message.CompareF( KVcxNsExtLoadTvVideoSuite ) )
- {
- // If the player app is running
- // in background, switch to that
- TryBringVideoPlayerToForegroundL();
-
- SendMediatorEvent( KVcxNsAhEventSuiteLoaded );
- // This needs cleaner way to not to execute the cmd.
- err = KErrNotSupported;
- }
- else if ( !message.CompareF( KVcxNsExtUnloadTvVideoSuite ) )
- {
- SendMediatorEvent( KVcxNsAhEventSuiteUnloaded );
- // This needs cleaner way to not to execute the cmd.
- err = KErrNotSupported;
- }
- else
- {
- err = KErrNotSupported;
- }
- CleanupStack::PopAndDestroy( &variant );
-
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::StartAppL
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::StartAppL( TVideoPlayerActivationMessage& aMessage )
- {
- TInt err(KErrNone);
-
- // If settings are requested launch them, otherwise launch my videos
- if (aMessage.iMsgType == TVideoPlayerActivationMessage::EOpenVCSettings)
- {
- err = LaunchMediaSettingsL( aMessage );
- }
- else
- {
- err = LaunchMyVideosL( aMessage );
- }
-
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::ExtractVariant
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::ExtractVariant( const CLiwMap* aMap,
- TLiwVariant& aVariant,
- const TDesC8& aKeyName )
-
- {
- TInt errCode( KErrNone );
- TBool found( EFalse );
- TRAP( errCode, found = aMap->FindL( aKeyName, aVariant ) );
-
- if ( errCode == KErrNone && !found )
- {
- errCode = KErrNotFound;
- }
-
- return errCode;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::SendMediatorEvent
-// ---------------------------------------------------------------------------
-//
-void CVideoActionHandler::SendMediatorEvent( TInt aEvent )
- {
- iMediatorEventProvider->RaiseEvent(
- TUid::Uid( KVcxNsAhMediatorDomain ),
- TUid::Uid( KVcxNsAhMediatorCategory ),
- aEvent,
- TVersion( KVcxNsAhEventVersion, 0, 0 ),
- KNullDesC8() );
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::LaunchMediaSettingsL
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::LaunchMediaSettingsL( TVideoPlayerActivationMessage& aMessage )
- {
- // KIptvVodStartPlayer is not currently used. Any case we need it?
- return LaunchMatrixTaskL( aMessage, KUidMediaSettingsApp, KVideoPlayerVodStartPlayer );
- }
-
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::LaunchMyVideosL
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::LaunchMyVideosL( TVideoPlayerActivationMessage& aMessage )
- {
- // KIptvVodStartPlayer is not currently used. Any case we need it?
- return LaunchMatrixTaskL( aMessage, KUidMPXVideoPlayerApp, KVideoPlayerVodStartPlayer );
- }
-
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::LaunchMatrixTaskL
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::LaunchMatrixTaskL( TVideoPlayerActivationMessage& aMessage, TUid appUID, TInt aActivationMessage )
- {
-
- TInt err(KErrNone);
-
- TPckg<TVideoPlayerActivationMessage> message(aMessage);
-
- RWsSession session;
- User::LeaveIfError(session.Connect());
-
- // check if there is existing stand alone running
- TInt ourWgId( 0 );
- TInt ret( 0 );
-
- // No need to check wgId if we are lauching Media Settings
- if ( appUID != KUidMediaSettingsApp )
- {
- ret = RProperty::Get( KVideoPlayerRPropertyCategory, KVideoPlayerRPropertyWGIdKey, ourWgId );
- }
-
- if( !ret )
- {
- // check if the wgId is really one of our own
- TBuf<KVideoPlayerWgNameSize> wgName;
- session.GetWindowGroupNameFromIdentifier(ourWgId, wgName );
- if( wgName.MatchF( KVideoPlayerWgName ) == KErrNotFound )
- {
- // Clear wg id, it is not ours anymore
- ourWgId = 0;
- }
- }
-
- if( ourWgId != 0 )
- {
- // Send message to our wg id
- TUid play = TUid::Uid(aActivationMessage);
- session.SetWindowGroupOrdinalPosition( ourWgId, 0 );
- err = session.SendMessageToWindowGroup( ourWgId, play, message );
- }
- else
- {
- // No stand alone available, create new one
- RApaLsSession lsSession;
- err = lsSession.Connect();
- TApaAppInfo appInfo;
-
- if (lsSession.GetAppInfo(appInfo, appUID) == KErrNone)
- {
- CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
- cmdLine->SetExecutableNameL(appInfo.iFullName);
- cmdLine->SetTailEndL(message);
- User::LeaveIfError(lsSession.StartApp(*cmdLine));
- CleanupStack::PopAndDestroy(cmdLine);
- }
- else
- {
- err = KErrNotFound;
- }
-
- lsSession.Close();
- }
-
- session.Close();
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::LoadLwDataL
-// ---------------------------------------------------------------------------
-//
-void CVideoActionHandler::LoadLwDataL( TVideoPlayerActivationMessage& aMessage )
- {
- CIptvLastWatchedData* data = CIptvLastWatchedData::NewL();
- CleanupStack::PushL( data );
-
- CIptvLastWatchedApi* lwApi = CIptvLastWatchedApi::NewL();
- CleanupStack::PushL( lwApi );
-
- lwApi->GetLastWatchedDataL( *data );
-
- if ( data->ParentalControl() != KVcxMyvideosCenRepParentControlKeyOff )
- {
- TInt parentControlSetting( KVcxMyvideosCenRepParentControlKeyDefault );
- CRepository* rep = NULL;
- TInt error;
- TRAP( error, rep = CRepository::NewL( TUid::Uid( KVcxMyVideosCenRepUid ) ) )
-
- if ( error == KErrNone )
- {
- CleanupStack::PushL( rep );
-
- error = rep->Get( KVcxMyvideosCenRepParentControlKey, parentControlSetting );
-
- if ( error == KErrNone && parentControlSetting != KVcxMyvideosCenRepParentControlKeyOff )
- {
- if ( static_cast<TInt>( data->ParentalControl() ) >= parentControlSetting )
- {
- CVcxHgVodTelephonyClient* tc = new( ELeave ) CVcxHgVodTelephonyClient();
- CleanupStack::PushL(tc);
-
- if ( !tc->CheckLockCodeL() )
- {
- CErrorUI* eu = CErrorUI::NewLC();
- eu->ShowGlobalErrorNoteL( KErrPermissionDenied );
- CleanupStack::PopAndDestroy( eu );
- User::Leave( KErrPermissionDenied );
- }
-
- CleanupStack::PopAndDestroy( tc );
- }
- }
- CleanupStack::PopAndDestroy( rep );
- }
- }
-
- if( data->MpxId() != KIdUndefined )
- {
- aMessage.iServiceId = data->MpxId();
- aMessage.iFullPath = data->Uri();
- }
- else
- {
- aMessage.iServiceId = 0;
- aMessage.iFullPath = data->Uri();
- }
-
- CleanupStack::PopAndDestroy( lwApi );
- CleanupStack::PopAndDestroy( data );
- }
-
-// ---------------------------------------------------------------------------
-// CVideoActionHandler::TryBringVideoPlayerToForegroundL
-// ---------------------------------------------------------------------------
-//
-TInt CVideoActionHandler::TryBringVideoPlayerToForegroundL()
- {
- TInt ret ( KErrNotFound );
- RWsSession session;
- User::LeaveIfError( session.Connect() );
- CleanupClosePushL( session );
-
- TInt ourWgId( 0 );
- TInt error = RProperty::Get( KVideoPlayerRPropertyCategory, KVideoPlayerRPropertyWGIdKey, ourWgId );
-
- if( error == KErrNone && ourWgId != 0 )
- {
- TBuf<KVideoPlayerWgNameSize> wgName;
- session.GetWindowGroupNameFromIdentifier(ourWgId, wgName );
-
- if( wgName.MatchF( KVideoPlayerWgName ) != KErrNotFound )
- {
- ret = session.SetWindowGroupOrdinalPosition( ourWgId, 0 );
- }
- }
-
- CleanupStack::PopAndDestroy( &session );
- return ret;
- }