mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp
changeset 15 ccd8e69b5392
parent 2 b31261fd4e04
child 20 e8be2c2e049d
child 22 496ad160a278
--- a/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp	Tue Feb 02 00:09:07 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,558 +0,0 @@
-/*
-* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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:  The ECOM interface implementation.
-*
-*/
-
-
-
-
-#include "musaiwprovider.h"
-#include "musaiwprovider.hrh"
-#include "muslogger.h"
-#include "musmanagercommon.h"
-#include "musmanager.h"
-#include "musuid.hrh"
-#include "musresourcefinderutil.h"
-#include "mussettings.h"
-#include "mussesseioninformationapi.h"
-#include "musindicatorapi.h"
-
-#include <musresourceproperties.h>
-
-#include <featmgr.h>
-#include <e32property.h>
-#include <AiwCommon.h>               // AIW classes and definitions
-#include <AiwCommon.hrh>             // AIW constants
-#include <AiwMenu.h>                 // AIW Menu pane
-#include <aknnotewrappers.h>         // CAknInformationNote
-#include <avkon.rsg>                 // Resources
-#include <apacmdln.h>
-#include <apgtask.h>
-#include <bautils.h>
-#include <charconv.h>
-#include <eikenv.h>
-#include <musaiwproviderui.rsg>
-#include <StringLoader.h>
-#include <AknGlobalNote.h>
-#include <utf.h>
-#include <features.hrh>
-#include <aknenv.h>
-
-////////  public -- constructor and destructor  ////////
-
-_LIT( KMusAiwProviderResource, "musaiwproviderui.rsc" );
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CMusAiwProvider* CMusAiwProvider::NewL()
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::NewL" )
-    CMusAiwProvider* self = new( ELeave ) CMusAiwProvider;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::NewL" )
-    return self;
-    }
-
-
-// -----------------------------------------------------------------------------
-// C++ destructor.
-// -----------------------------------------------------------------------------
-//
-CMusAiwProvider::~CMusAiwProvider()
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::~CMusAiwProvider" )
-    delete iResourceFileName ;
-    iResourceFileName = NULL ;    
-    delete iIndicator;
-    iIndicator = NULL ;    
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::~CMusAiwProvider" )
-    }
-
-
-////////  private -- constructors  ////////
-
-// -----------------------------------------------------------------------------
-// C++ constructor.
-// -----------------------------------------------------------------------------
-//
-CMusAiwProvider::CMusAiwProvider()
-:   iIsWarning( ETrue )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// Symbian second-phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::ConstructL()
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::ConstructL" )
-    iResourceFileName = MusResourceFinderUtil::ResourcePathL(
-                                                    KMusAiwProviderResource );
-    
-    DoInitialiseL();
-    
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::ConstructL" )
-    }
-
-
-
-////////  public -- from CAiwServiceIfBase  ////////
-
-// -----------------------------------------------------------------------------
-// Called by the AIW framework to initialize the provider with necessary
-// information.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::InitialiseL(
-    MAiwNotifyCallback&   /* aFrameworkCallback*/,
-    const RCriteriaArray& /* aInterest */ )
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::InitialiseL")
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::InitialiseL")
-    }
-
-
-
-
-
-////////  public -- from CAiwServiceIfMenu  ////////
-
-// -----------------------------------------------------------------------------
-// Initializes menu pane by adding provider-specific menu items.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::InitializeMenuPaneL(
-        CAiwMenuPane&               aMenuPane,
-        TInt                        aIndex,
-        TInt                        /* aCascadeId */,
-        const CAiwGenericParamList& /* aInParamList */ )
-    {
-	FeatureManager::InitializeLibL();
-    TBool support = FeatureManager::FeatureSupported( KFeatureIdMultimediaSharing );
-	FeatureManager::UnInitializeLib();
-	if( support )
-		{
-	    DoInitializeMenuPaneL( aMenuPane, aIndex );
-		}
-	}
-	
-	
-// -----------------------------------------------------------------------------
-// Initializes menu pane by adding provider-specific menu items.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::DoInitializeMenuPaneL(
-        CAiwMenuPane&               aMenuPane,
-        TInt                        aIndex)
-    {
-    MUS_LOG1( "mus: [AIWPRO]  -> CMusAiwProvider::DoInitializeMenuPaneL( %d )",
-              aIndex )
-    
-    if( iResourceFileName == NULL )
-        {
-        iResourceFileName = MusResourceFinderUtil::ResourcePathL(
-                                                    KMusAiwProviderResource );
-        }   
-    TFileName filename ( *iResourceFileName );
-    MUS_LOG_TDESC( "mus: [AIWPRO]     Resource filename: ", filename ) 
-    
-    if( ApplicationRunningL() )
-    	{
-        MUS_LOG( "mus: [AIWPRO]     Application already running:\
-                 giving _continue sharing_ menu command" )
-        // Application is already started.  Add resources to menu items.
-        aMenuPane.AddMenuItemsL( filename,
-                                 R_MUSAIWPROVIDER_RUNNING_CASCADED_SUBMENU,
-                                 KMusAiwProviderUid,
-                                 aIndex );
-        
-        }
-	else
-		{
-		// check for variant
-	    if ( MultimediaSharingSettings::OperatorVariantSettingL()
-	            == MusSettingsKeys::EOperatorSpecific )
-	        {
-	       	OperatorVariantStartUpL( filename, aMenuPane, aIndex );
-	        }
-		else
-			{
-	        NoVariationStartUpL( filename, aMenuPane, aIndex );
-	        }	
-		}   
-
-    
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::DoInitializeMenuPaneL" )
-    }
-
-// -----------------------------------------------------------------------------
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::DoInitialiseL()
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::DoInitialiseL")
-    
-    if ( !iIndicator )
-        {
-        MUS_LOG( "mus: [AIWPRO]  :  creating indicator")
-        iIndicator = CMusIndicatorApi::NewL();
-        }
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::DoInitialiseL")
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-TBool CMusAiwProvider::ApplicationRunningL()
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::ApplicationRunningL" )    
-    RWsSession wsSession;
-    User::LeaveIfError( wsSession.Connect() );
-    CleanupClosePushL( wsSession );
-    TApaTaskList taskList( wsSession );
-    TUid appUid;
-    appUid.iUid = KMusUiUid;
-    TApaTask task = taskList.FindApp( appUid );
-    TBool running = task.Exists();
-    CleanupStack::PopAndDestroy( &wsSession );
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::ApplicationRunningL" )
-    return running;
-    }
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::NoVariationStartUpL( TFileName&     aFileName,
-										  CAiwMenuPane& aMenuPane,
-									      TInt          aIndex )
-	{
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::NoVariationStartUpL" )    
-	CMusManager* manager =  CMusManager::NewLC();
-	iAvailability = manager->AvailabilityL();
-    
-    /* Multimediasharing Menu items should be shown in call menu when 
-       1.SIP Registration is still ongoing or it has failed for some reason.
-       2.Regardless of Options execution ( All options are just informative.
-         Cant be considered as Error situation.)
-       3.When iAvailability plugin says OK ( Based on call,network,settingui item)
-       4.Also in confrence and hold cases
-    */        
-    if ( iAvailability == MultimediaSharing::ESipRegistrationPending || 
-         iAvailability == MultimediaSharing::ESipOptionsSent ||
-         iAvailability == MultimediaSharing::EMultimediaSharingAvailable ||
-         iAvailability == MultimediaSharing::EErrCallOnHold ||
-         iAvailability == MultimediaSharing::EErrConferenceCall ||             
-         iAvailability == MultimediaSharing::ESipOptionsNotCapable ||
-         iAvailability == MultimediaSharing::ESipOptionsNotSent ||
-         iAvailability == MultimediaSharing::EErrNetwork ||
-         iAvailability == MultimediaSharing::EManualActivation ||
-         iAvailability == MultimediaSharing::EErrConnection ||
-         iAvailability == MultimediaSharing::EErrSipRegistration )           
-        {
-        MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ",iAvailability )
-        TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
-        if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
-            {
-             MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
-             resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
-            }            
-            aMenuPane.AddMenuItemsL( aFileName,
-                                 resourceID,
-                                 KMusAiwProviderUid,
-                                 aIndex );
-        }
-    else
-        {
-        MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability )
-        }
-    CleanupStack::PopAndDestroy( manager );	
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::NoVariationStartUpL" )   
-	}
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::OperatorVariantStartUpL( TFileName&     aFileName,
-										      CAiwMenuPane& aMenuPane,
-									          TInt          aIndex )
-	{
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::OperatorVariantStartUpL" )   
-
-    CMusManager* manager = CMusManager::NewLC();
-	iAvailability = manager->AvailabilityL();
-
-    // In operator specific mode Multimediasharing Menu items 
-    // should be shown in call menu only if iAvailability plugin returns OK 
-    if ( iAvailability == MultimediaSharing::EMultimediaSharingAvailable )           
-        {
-        MUS_LOG1( "mus: [AIWPRO]  Showing AIW Menu -> iAvailability = %d ", iAvailability )
-        TInt resourceID =  R_MUSAIWPROVIDER_BASIC_CASCADED_SUBMENU ;           
-        if ( !FeatureManager::FeatureSupported( KFeatureIdCamera ) )
-            {
-            MUS_LOG( "mus: [AIWPRO]  Camera Not Available" )
-            resourceID =  R_MUSAIWPROVIDER_NOCAMERA_CASCADED_SUBMENU ;                 
-            }            
-            aMenuPane.AddMenuItemsL( aFileName,
-                                     resourceID,
-                                     KMusAiwProviderUid,
-                                     aIndex );
-        }
-    else
-        {
-        MUS_LOG1( "mus: [AIWPRO] Not Showing AIW Menu -> iAvailability = %d ",iAvailability )
-        }
-        
-    CleanupStack::PopAndDestroy( manager );	
-
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::OperatorVariantStartUpL" )  
-	}
-	
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-HBufC* CMusAiwProvider::ErrorNoteTextLC( TInt aError )
-    {
-    MUS_LOG1( "mus: [AIWPRO]  -> CMusAiwProvider::ErrorNoteTextLC( %d )",
-              aError )   
-    
-    TFileName filename( *iResourceFileName );    
-    RFs fs;
-    User::LeaveIfError( fs.Connect() );
-    CleanupClosePushL( fs );
-    
-    RResourceFile resourceFile;
-    resourceFile.OpenL( fs, filename );
-    CleanupClosePushL( resourceFile );
-
-    // Fetch error text
-    HBufC8* dlgPrompt8 = ErrorNoteText8L( aError, resourceFile );
-    CleanupStack::PushL( dlgPrompt8 );
-    const TUint8* ptr8 = dlgPrompt8->Des().Ptr();
-    TPtrC ptr16( ( TUint16* ) ptr8, dlgPrompt8->Length()/2 );
-    HBufC* dlgPrompt = ptr16.AllocL();
-
-    // CnvUtfConverter::ConvertToUnicodeFromUtf8L( *dlgPrompt8 );            
-    CleanupStack::PopAndDestroy( dlgPrompt8 );
-
-    CleanupStack::PopAndDestroy( &resourceFile );
-    CleanupStack::PopAndDestroy( &fs );        
-    CleanupStack::PushL( dlgPrompt );
-    
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::ErrorNoteTextLC" )
-    return dlgPrompt;
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-HBufC8* CMusAiwProvider::ErrorNoteText8L( TInt aError,
-                                          RResourceFile& aResourceFile )
-    {
-    MUS_LOG1( "mus: [AIWPRO]  -> CMusAiwProvider::ErrorNoteTextL( %d )",
-              aError )
-              
-    HBufC8* errorText = NULL;
-    
-    switch( aError )
-        {
-        case MultimediaSharing::EErrCallOnHold:
-            {
-            errorText = aResourceFile.AllocReadL( R_MUSAIWPROVIDER_ON_HOLD );
-            iIsWarning = ETrue ;
-            break;
-            }        
-        case MultimediaSharing::EErrNetwork:
-            {
-            errorText = aResourceFile.AllocReadL( 
-                                    R_MUSAIWPROVIDER_NETWORK_INCOMPATIBLE );
-            iIsWarning = ETrue ;
-            break;
-            }
-        case MultimediaSharing::EErrConferenceCall:
-            {
-            errorText = aResourceFile.AllocReadL( 
-                                    R_MUSAIWPROVIDER_CONFERENCE_CALL );
-            iIsWarning = ETrue ;
-            break;
-            }
-        case MultimediaSharing::ESipOptionsNotCapable:
-            {
-            errorText = aResourceFile.AllocReadL( 
-                                    R_MUSAIWPROVIDER_RECIPIENT_INCAPABLE );
-            iIsWarning = ETrue ;
-            break;
-            }
-        case MultimediaSharing::EErrSipRegistration:
-            {
-            errorText = aResourceFile.AllocReadL( R_MUSAIWPROVIDER_NO_REG );
-            iIsWarning = ETrue ;
-            break;
-            }
-        case MultimediaSharing::EErrConnection:
-            {
-            errorText = aResourceFile.AllocReadL( R_MUSAIWPROVIDER_NO_REG );
-            iIsWarning = ETrue ;
-            break;
-            }
-        default:
-            {
-            errorText = aResourceFile.AllocReadL( R_MUSAIWPROVIDER_APP_GENERAL );  
-            iIsWarning = EFalse ; 
-            break;
-            }
-        }
-    
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::ErrorNoteTextL" )
-    return errorText;
-    }
-
-
-// -----------------------------------------------------------------------------
-// Handles a service command invoked by the Handler.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::HandleServiceCmdL(
-    const TInt&                 aCmdId,
-    const CAiwGenericParamList& aInParamList,
-    CAiwGenericParamList&       aOutParamList,
-    TUint                       aCmdOptions,
-    const MAiwNotifyCallback*   aCallback )
-    { 
-    HandleMenuCmdL( aCmdId,
-                    aInParamList,
-                    aOutParamList,
-                    aCmdOptions,
-                    aCallback );
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::ShowErrorNoteL( TInt aError )
-    {
-    MUS_LOG1( "mus: [AIWPRO]  -> CMusAiwProvider::ShowErrorNote( %d )",
-              aError )        
-    HBufC* dlgPrompt = ErrorNoteTextLC( aError );    
-    MUS_LOG_TDESC( "mus: [AIWPRO]  Error : ", ( *dlgPrompt  ) )
-    CAknGlobalNote* note = CAknGlobalNote::NewLC();
-    TRequestStatus status;
-    if( iIsWarning )
-        {
-        note->ShowNoteL( status,EAknGlobalInformationNote,*dlgPrompt ); 
-        }
-    else
-        {
-        note->ShowNoteL( status,EAknGlobalErrorNote,*dlgPrompt );   
-        }    
-    User::WaitForRequest( status );        
-    CleanupStack::PopAndDestroy( note );
-    CleanupStack::PopAndDestroy( dlgPrompt );    
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::ShowErrorNote" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// Handles a menu command invoked by the Handler.
-// -----------------------------------------------------------------------------
-//
-void CMusAiwProvider::HandleMenuCmdL(
-                                TInt                        aMenuCmdId,
-                                const CAiwGenericParamList& /*aInParamList*/,
-                                CAiwGenericParamList&       /*aOutParamList*/,
-                                TUint                       /*aCmdOptions*/,
-                                const MAiwNotifyCallback*   /*aCallback*/ )
-    {
-    MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::HandleMenuCmdL" )
-
-    TInt error( KErrNone );
-
-    CMusManager* manager = CMusManager::NewLC();
-    
-    if ( iAvailability == MultimediaSharing::EManualActivation )
-    	{
-    	MUS_LOG( "mus: [AIWPRO]  Manual activation" )
-    	TRAP( error, manager->HandleCommandL( MultimediaSharing::ECommandManualActivation ));	
-    	iAvailability = manager->AvailabilityL(); 
-    	}
-
-    switch ( aMenuCmdId )
-        {
-        case EMusCommandLiveShare:
-            {
-            MUS_LOG( "mus: [AIWPRO]     \
-                    EMusCommandLiveShare: Will now attempt to start Mus." )
-            TRAP( error, manager->StartApplicationL( 
-                                        MultimediaSharing::EMusLiveVideo ) );
-            break;
-            }
-        case EMusCommandClipShare:
-            {
-            MUS_LOG( "mus: [AIWPRO]     \
-                    EMusCommandClipShare: Will now attempt to start Mus." )
-            TRAP( error, manager->StartApplicationL(
-                                        MultimediaSharing::EMusClipVideo ) );
-            break;
-            }
-        case EMusCommandImageShare:
-            {
-            MUS_LOG( "mus: [AIWPRO]     \
-                    EMusCommandImageShare: Will now attempt to start Mus." )
-            TRAP( error, manager->StartApplicationL(
-                                        MultimediaSharing::EMusStillImage ) );
-            break;
-            }
-        case EMusCommandContinue:
-            {
-            MUS_LOG( "mus: [AIWPRO]     \
-                    EMusCommandContinue: Will now attempt to start/continue Mus." )
-            TRAP( error, manager->StartApplicationL( 
-                                        MultimediaSharing::EMusContinue ) ); 
-            break;
-            }
-        default:
-            {
-            MUS_LOG( "mus: [AIWPRO]     \
-                    Unknown command. Leave with KErrArgument" )
-            User::Leave( KErrArgument );
-            break;
-            }
-        }
-
-    CleanupStack::PopAndDestroy( manager );
-
-    if( error != KErrNone )
-        {
-        ShowErrorNoteL( error );
-        }
-
-    MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::HandleMenuCmdL" )
-    }
-
-// end of file