homescreenplugins/videoahlplugin/src/videoactionhandler.cpp
branchRCL_3
changeset 10 112a725ff2c2
parent 9 5294c000a26d
child 11 8970fbd719ec
--- 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;
-    }