internetradio2.0/mcppluginsrc/irmcpplugin.cpp
changeset 14 896e9dbc5f19
parent 12 608f67c22514
child 15 065198191975
--- a/internetradio2.0/mcppluginsrc/irmcpplugin.cpp	Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,584 +0,0 @@
-/*
-* Copyright (c) 2008-2008 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:  
-*
-*/
-
-
-#include <bautils.h>
-#include <coemain.h>
-#include <data_caging_path_literals.hrh>
-#include <e32cmn.h>
-#include <implementationproxy.h>
-#include <liwvariant.h>
-#include <stringloader.h>
-#include <irmcpplugin.rsg>
-
-#include <e32property.h>
-
-#include "iractionhandler.hrh"
-#include "iractionhandlerdefs.h"
-#include "iractiveidleeng.h"
-#include "iractiveidleengnotifyhandler.h"
-#include "irdebug.h"
-#include "irmcpplugin.h"
-#include "irmcpplugin.hrh"
-
-
-
-#include "irmetadata.h"
-
-const TInt KIRMinVolumeLevel = 0;
-const TInt KIRMaxVolumeLevel  = 10;
-
-_LIT( KIRMCPPluginResourceFileName, "irmcpplugin.rsc" );
-
-//Temp images from Music widget, svg via handle to rgba bitmap will be supported soon.
-_LIT( KIMGPlay, "z:\\Resource\\apps\\qgn_prop_image_tb_play2_dimmed2.png" );
-_LIT( KIMGStop, "z:\\Resource\\apps\\qgn_prop_image_tb_pause_dimmed2.png" );
-
-_LIT8( KIRPluginUid, "plugin_id" );
-_LIT8( KIRData, "data" );
-_LIT( KEmpty, "" );
-// ---------------------------------------------------------
-// CIRMCPPlugin::NewL
-// ---------------------------------------------------------
-//
-CIRMCPPlugin* CIRMCPPlugin::NewL( MMCPPluginObserver* aObserver )
-    {
-    CIRMCPPlugin* self = new ( ELeave ) CIRMCPPlugin( aObserver );
-    CleanupStack::PushL( self );
-
-    self->ConstructL();
-    
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------
-// CIRMCPPlugin::~CIRMCPPlugin
-// ---------------------------------------------------------
-//
-CIRMCPPlugin::~CIRMCPPlugin()
-    {
-    if ( iResourceOffset > 0 )
-        {
-        CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );
-        }
-
-    delete iMetaData;
-
-    delete iEngine;
-    delete iLastPlayedText;
-    }
-
-// ---------------------------------------------------------
-// CIRMCPPlugin::CIRMCPPlugin
-// ---------------------------------------------------------
-//
-CIRMCPPlugin::CIRMCPPlugin( MMCPPluginObserver* aObserver )
-    : iObserver( aObserver )
-    {
-    }
-
-// ---------------------------------------------------------
-// CIRMCPPlugin::ConstructL
-// ---------------------------------------------------------
-//
-void CIRMCPPlugin::ConstructL()
-    {
-    InitializeResourceLoadingL();
-
-    iRunningState = EIRPSApplicationUninitialized;
-
-    iLastPlayedText = StringLoader::LoadL( R_IR_MCP_LASTPLAYED);
-    iBufferingText = StringLoader::LoadL( R_IR_MCP_BUFFERING);
-
-    iEngine = CIRActiveIdleEng::NewL( *this );
-    iEngine->SecondConstructL();
-    
-    iMetaData = CIRMetaData::NewL();
-	HandleApplicationRunningStateChangeL(iRunningState);
-
-    }
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::InitializeResourceLoadingL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::InitializeResourceLoadingL()
-    {
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    RFs fs( coeEnv->FsSession() );
-    TFileName fileName; 
-    TFileName baseResource;
-    TFindFile finder( fs );
-    TLanguage language( ELangNone );
-    
-    TParsePtrC parse( KIRMCPPluginResourceFileName );
-    _LIT( resourceFileWildExt, ".r*" );
-
-    // Make sure to find all resource files, not only .rsc files as it may be so
-    // that there is only .r01, .r02, etc. files available
-    fileName.Copy( parse.Name() );
-    fileName.Append( resourceFileWildExt );
-
-    // TFindFile applies search order that is from 
-    // drive Y to A, then Z
-    CDir* entries = NULL;
-    TInt err = finder.FindWildByDir( fileName , KDC_RESOURCE_FILES_DIR, entries );
-    delete entries;
-    entries = NULL;
-    TBool found = EFalse;
-    while ( !found && err == KErrNone )
-        {
-        // Found file
-        fileName.Zero();
-        TParsePtrC foundPath( finder.File() );
-        fileName.Copy( foundPath.DriveAndPath() );
-        fileName.Append( KIRMCPPluginResourceFileName );
-        BaflUtils::NearestLanguageFile( fs, fileName, language );
-        if ( language != ELangNone && BaflUtils::FileExists( fs, fileName ) )
-            {
-            found = ETrue;
-            iResourceOffset = coeEnv->AddResourceFileL( fileName );
-            }
-        else
-            {
-            if ( language == ELangNone &&
-                 !baseResource.Compare( KNullDesC ) &&
-                 BaflUtils::FileExists( fs, fileName ) )
-                {
-                baseResource.Copy( fileName );
-                }
-            err = finder.FindWild( entries );
-            delete entries;
-            entries = NULL;
-            }
-        }
-
-    if ( !found && baseResource.Compare( KNullDesC ) )
-        {
-        // If we found *.rsc then better to use that than nothing
-        if ( BaflUtils::FileExists( fs, baseResource ) )
-            {
-            iResourceOffset = coeEnv->AddResourceFileL( baseResource );
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::Deactivate
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::Deactivate()
-    {
-    IRRDEBUG2("InternetRadio -- CIRMCPPlugin::Deactivate Entering", KNullDesC);
-
-    iActive = EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::ActivateL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::ActivateL()
-    {
-    IRRDEBUG2("CIRMCPPlugin::ActivateL Entering", KNullDesC);
-
-    iActive = ETrue;
-    iObserver->BecameActiveL(this);
-    
-    HandleChannelChangeL();
-    
-    HandleMetaDataReceivedL(*iMetaData);
-  
-  	RProperty::Get( KUidActiveInternetRadioApp,KIRPSPlayStop,
-					 iPlayingState );	 
-
-	HandlePlayStopL(static_cast<TIRStopPlayState>(iPlayingState));
-	
-/*	IRRDEBUG2("ActivateL iRunningState = %d",iRunningState);
-    InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger1 );
-    iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay ); */ 	
-	
-    InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger2 );            
-
-    }
-
-
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::PublishLastPlayedWidgetItemsL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::PublishLastPlayedWidgetItemsL()
-    {
-    if ( iActive )
-    	{
-   	    IRRDEBUG2("CIRMCPPlugin::PublishLastPlayedWidgetItemsL Entering", KNullDesC);
-
-        InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger1 );
-        iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay );
-        }
-	
-    HandleChannelChangeL();
-    IRRDEBUG2("CIRMCPPlugin::PublishLastPlayedWidgetItemsL Exitings", KNullDesC);
-       
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleChannelChangeL
-// Handles channel change
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleChannelChangeL()
-	{
-	
-    IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL Entering", KNullDesC);
-
-	RProperty::Get ( KUidActiveInternetRadioApp, KIRPSDataChannel,
-				 	 iChannelName );
-				 	 
-	IRRDEBUG2("HandleChannelChange iRunningState = %d",iRunningState);
-
-	 if ( iActive )
-        {
-        switch(iRunningState)
-	        {
-	        case EIRPSApplicationRunning:
-		        {
-		        iObserver->PublishTextL( this, EMusicWidgetText1, iChannelName);
-		        IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL iChannelName published", KNullDesC);
-							       	
-				break;
-		        }
-		     
-	        case  EIRPSApplicationUninitialized:
-	        case  EIRPSApplicationClosing:
-		       {
-	     	   IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL EIRPSApplicationUninitialized", KNullDesC);
-		       iObserver->PublishTextL( this, EMusicWidgetText1, *iLastPlayedText );
-	           iObserver->PublishTextL( this, EMusicWidgetText2, iChannelName );
-	      			
-					break;
-		       }
-		       
-		    default:
-		    	break;
-	        }
-        }	
-
-    IRRDEBUG2("CIRMCPPlugin::HandleChannelChangeL Exiting", KNullDesC);
-
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleMetaDataReceivedL
-// Handles meta data changes
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleMetaDataReceivedL( const CIRMetaData& aMetaData )
-    {
-    IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Entering", KNullDesC);
-
-    iMetaData->SetL( aMetaData );
-    
-    if ( iActive )
-        {
-        switch(iRunningState)
-	        {
-
-	        case EIRPSApplicationRunning:
-		        {
-		        IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL EIRPSApplicationRunning", KNullDesC);
-				if(iMetaData->Song().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText2, iMetaData->Song());
-		            IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Song published", KNullDesC);
-					}
-			/*	else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText2, KEmpty)
-					}*/
-										
-				if(iMetaData->Artist().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, iMetaData->Artist());
-			        IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Artist published", KNullDesC);
-					} 
-			/*	else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, KEmpty)
-					}*/	
-									       	
-				break;
-		        }
-		     
-	        case  EIRPSApplicationUninitialized:
-	        case  EIRPSApplicationClosing:
-		       {
-	     	   IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL EIRPSApplicationUninitialized/Closing", KNullDesC);
-	           if(iMetaData->Song().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, iMetaData->Song());
-		            IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL LastSong published", KNullDesC);
-					}
-			   else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, KEmpty);
-					}	
-						
-					break;
-		       }
-		       
-		    default:
-		    	break;
-	        }
-        }	   
-        	
-    IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL exiting", KNullDesC);
-
-	}
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandlePlayStopL
-// Handles data change in Stop State
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandlePlayStopL( TIRStopPlayState aState )
-	{
-	
-    IRRDEBUG2("CIRMCPPlugin::HandlePlayStopL Entering", KNullDesC);
-
-	if ( aState == EIRStatePlay )
-		{
-	    IRRDEBUG2("CIRMCPPlugin::HandlePlayStopL unmute/play", KNullDesC);
-
-	    InstallIRCommandActionL( KIRCommandValueStop(), EMusicWidgetTrigger1 );
-
-        iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGStop );
-		}
-	else 			//if (aState == EIRStateStop)
-		{
-		
-	    IRRDEBUG2("CIRMCPPlugin::HandlePlayStopL mute/stop", KNullDesC);
-
-	    InstallIRCommandActionL( KIRCommandValuePlay(), EMusicWidgetTrigger1 );
-
-        iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay );
-		}
-		
-		
-
-    IRRDEBUG2("InternetRadio -- CIRMCPPlugin::HandlePlayStopL Exiting", KNullDesC);
-
-	}
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleVolumeChangeL
-// Handles volume change
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleVolumeChangeL( const TInt aVolume )
-	  {
-      if ( aVolume >= KIRMinVolumeLevel && aVolume <= KIRMaxVolumeLevel )
-	      {
-	      	
-	      }
-	  else
-		  {
-		  User::Leave(KErrGeneral);
-	 	  }		      
- 	  }
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::HandleApplicationRunningStateChangeL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::HandleApplicationRunningStateChangeL( TIRPSApplicationRunningState 
-															aRunningState )
-	{
-	IRRDEBUG2("CIRMCPPlugin::HandleApplicationRunningStateChangeL Entering aRunningState= %d", aRunningState);
-
-	if ( iRunningState != aRunningState )
-		{
-		iRunningState = aRunningState;
-
-		switch ( iRunningState )
-			{
-			case EIRPSApplicationUninitialized:
-			case EIRPSApplicationRunning:
-			ActivateL();
-			break;
-			case EIRPSApplicationClosing:
-			if ( iActive )
-				{
-				IRRDEBUG2("HandleApplicationRunningStateChangeL EIRPSApplicationClosing iActive", KNullDesC);
-
-				InstallIRCommandActionL( KIRCommandValueStartNowPlaying(), EMusicWidgetTrigger1 );
-				IRRDEBUG2("HandleApplicationRunningStateChangeL StartNowPlaying", KNullDesC);
-
-				iObserver->PublishImageL( this, EMusicWidgetImage1, KIMGPlay );
-				IRRDEBUG2("HandleApplicationRunningStateChangeL PublishImageL", KNullDesC);
-
- 				iObserver->PublishTextL( this, EMusicWidgetText1, *iLastPlayedText );
-	            iObserver->PublishTextL( this, EMusicWidgetText2, iChannelName );
-	      	
-
-				if(iMetaData->Song().Length())
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, iMetaData->Song());
-					IRRDEBUG2("CIRMCPPlugin::HandleMetaDataReceivedL Song published", KNullDesC);
-					}
-				else
-					{
-					iObserver->PublishTextL( this, EMusicWidgetText3, KEmpty);
-					}
-
-				}
-			iActive = EFalse;
-			break;
-			default:
-			break;
-
-			}
-
-		}
-	IRRDEBUG2("CIRMCPPlugin::HandleApplicationRunningStateChangeL Exiting", KNullDesC);
-
-	}
-
-
-// ---------------------------------------------------------------------------
-// CIRMCPPlugin::InstallIRCommandActionL
-// ---------------------------------------------------------------------------
-//
-void CIRMCPPlugin::InstallIRCommandActionL( const TDesC& aCommand, 
-											TMCPTriggerDestination aDestination )
-    {
-    IRRDEBUG2("CIRMCPPlugin::InstallIRCommandActionL Entering", KNullDesC);
-
-    CLiwDefaultMap* mapTrigger = CLiwDefaultMap::NewLC();
-    CLiwDefaultMap* mapData = CLiwDefaultMap::NewLC();
-
-    mapTrigger->InsertL( KIRPluginUid, TLiwVariant( 
-	TUid::Uid( KIRActionHandlerImplementationUid ) ) );
-	
-    mapData->InsertL( KIRCommand, TLiwVariant( aCommand ) );
-    
-    mapTrigger->InsertL( KIRData, TLiwVariant( mapData ) );
-    
-    if ( iActive )
-        {
-        IRRDEBUG2("InstallIRCommandActionL iActive", KNullDesC);
-        
-        iObserver->PublishActionL( this, aDestination, mapTrigger );
-        IRRDEBUG2("InstallIRCommandActionL PublishActionL", KNullDesC);
-        
-        }
-    
-    CleanupStack::PopAndDestroy( mapData );
-    CleanupStack::PopAndDestroy( mapTrigger );
-    
-    IRRDEBUG2("CIRMCPPlugin::InstallIRCommandActionL Exiting", KNullDesC);
-
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CIRActiveIdle::HandleBufferingStateL
-// Handles changes in Internet Radio buffering state
-// ---------------------------------------------------------------------------
-//
-
-void CIRMCPPlugin::HandleBufferingStateL(TIRBufferingState aState )
-	{
-	IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL Entering", KNullDesC);
-	
-	if(iActive)
-		{
-		switch (aState)	
-			{
-			case EIRStateBufferingStop:
-				{
-				IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL 0", KNullDesC);
-
-				HandleChannelChangeL();
-    
-    			HandleMetaDataReceivedL(*iMetaData);
-  
-  				RProperty::Get( KUidActiveInternetRadioApp,KIRPSPlayStop,
-					 iPlayingState );	 
-
-				HandlePlayStopL(static_cast<TIRStopPlayState>(iPlayingState));
-	
-	
-				}
-			break;
-			case EIRStateBufferingStart:
-				{
-				
- 				IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL 1", KNullDesC);
-
-				iObserver->PublishTextL( this, EMusicWidgetText1, KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText2,KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText3,*iBufferingText);
-	
-				}
-				break;
-				
-			case  EIRStateBufferingError:
-				{
-				iObserver->PublishTextL( this, EMusicWidgetText1, KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText2,KEmpty);
-				iObserver->PublishTextL( this, EMusicWidgetText3,KEmpty);
-	
-				}
-			break;
-			}
-		}
-
-	IRRDEBUG2("CIRMCPPlugin::HandleBufferingStateL Exiting", KNullDesC);
-	
-	}
-
-    
-/** Provides a key-value pair table, that is used to identify the correct construction function for the requested interface. */
-const TImplementationProxy KIRMCPPluginImplementationTable[] =
-    {
-    IMPLEMENTATION_PROXY_ENTRY( KIRMCPPluginImplementationUid, CIRMCPPlugin::NewL )
-    };
-
-const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount );
-
-// ---------------------------------------------------------------------------
-// Returns the implementations provided by this ECOM plugin DLL.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
-    {
-    IRRDEBUG2("CIRMCPPlugin::ImplementationGroupProxy", KNullDesC);
-
-    aTableCount = sizeof( KIRMCPPluginImplementationTable ) / sizeof( TImplementationProxy );
-    return KIRMCPPluginImplementationTable;
-    }
-