internetradio2.0/uisrc/irhistorylistview.cpp
changeset 0 09774dfdd46b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/uisrc/irhistorylistview.cpp	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,1013 @@
+/*
+* Copyright (c) 2004 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:  view class for IRHistoryListView.cpp
+*
+*/
+
+#include <stringloader.h>
+#include <internetradio.rsg>
+
+#include "irui.h"
+#include "ir.hrh"
+#include "ircommon.h"
+#include "irdebug.h"
+#include "irbaseview.h"
+#include "irhistorylistview.h"
+#include "irhistorylistcontainer.h"
+#include "irapplication.h"
+#include "irsonghistoryinfo.h"
+#include "irsonghistoryengine.h"
+#include "irnowplayingwrapper.h"
+#include "irisdswrapper.h"
+#include <hlplch.h>
+
+//For Touch Toolbar
+#include <internetradio.mbg>
+#include <akntoolbar.h>
+#include <aknbutton.h>
+
+#ifdef MUSICSHOP_AVAILABLE
+#include <mpxfindinmusicshop.h> //For Find in Shop
+#include <apgcli.h>             //For Find in Shop
+#endif
+
+//to be removed after UT
+#include "irmetadata.h"
+#include "irdialoglauncher.h"
+
+#include "irnetworkcontroller.h" 	
+#include "iractivenetworkobserver.h"
+
+
+// ---------------------------------------------------------------------------
+// C++ default constructor can NOT contain any code, that might leave.
+// ---------------------------------------------------------------------------
+//
+
+CIRHistoryListView::CIRHistoryListView():iCallRequestPending(EFalse)
+    {
+    IRLOG_DEBUG( "CIRHistoryListView::CIRHistoryListView" );
+    // Nothing here
+    }
+
+// ---------------------------------------------------------------------------
+// EPOC default constructor can leave.
+// ---------------------------------------------------------------------------
+//
+
+void CIRHistoryListView::ConstructL()
+{
+	IRLOG_DEBUG( "CIRHistoryListView::ConstructL - Entering" );
+	CIRBaseView::ConstructL(R_IR_HISTORY);
+	
+	MAknsSkinInstance * skin=AknsUtils::SkinInstance () ;
+	TRgb color;
+	TInt skinColor=AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors,
+				                                      EAknsCIQsnTextColorsCG6 );
+	if(color.Gray2()!=0)
+		{
+		CreateAndSetToolbarL(R_IR_HISTORY_WHITE_TOOLBAR);
+		}
+	else
+		{
+		CreateAndSetToolbarL(R_IR_HISTORY_BLACK_TOOLBAR);	
+		}
+	if( AknLayoutUtils::PenEnabled() && Toolbar() )
+		{
+		Toolbar()->SetToolbarObserver( this );
+		}
+	
+	iHistoryEngine = CIRSongHistoryEngine::NewL(*this);
+  	GetAllListL();
+
+  	//For Find in Shop
+  	iMPXFindInShop = NULL;
+#ifdef MUSICSHOP_AVAILABLE  	
+	TRAPD(error, iMPXFindInShop = CMPXFindInMShop::NewL());
+    if (error != KErrNotFound && error != KErrNone)
+    {
+       User::Leave(error);
+    }
+#endif    
+
+    iRequestPending = EFalse;
+    iAddToFav= EFalse;
+    iListenRequest = EFalse;
+    IRLOG_DEBUG( "CIRHistoryListView::ConstructL - Exiting" );
+}
+// ---------------------------------------------------------------------------
+// Static constructor.
+// CIRHistoryListView::NewL
+// ---------------------------------------------------------------------------
+//
+CIRHistoryListView* CIRHistoryListView::NewL()
+    {
+    IRLOG_DEBUG("CIRHistoryListView::NewL - Entering" );
+    CIRHistoryListView* self = CIRHistoryListView::NewLC();
+    CleanupStack::Pop(self);
+    IRLOG_DEBUG( "CIRHistoryListView::NewL - Exiting." );
+    return self;
+    }
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// CIRHistoryListView::NewLC
+// ---------------------------------------------------------------------------
+//
+CIRHistoryListView* CIRHistoryListView::NewLC()
+    {
+       
+    IRLOG_DEBUG( "CIRHistoryListView::NewLC - Entering" );
+    CIRHistoryListView* self = new (ELeave) CIRHistoryListView();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    IRLOG_DEBUG( "CIRHistoryListView::NewLC - Exiting." );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+
+CIRHistoryListView::~CIRHistoryListView()
+	{
+	IRLOG_DEBUG( "CIRHistoryListView::~CIRHistoryListView - Entering" );
+    if ( iContainer )
+        {
+        	AppUi()->RemoveFromViewStack( *this, iContainer );
+        	iContainer->MakeVisible( EFalse );
+        	delete iContainer;
+        	iContainer=NULL;
+        }
+
+    iHistoryDataArr.ResetAndDestroy();
+
+    if(iHistoryEngine)
+        {
+        	delete iHistoryEngine;
+        	iHistoryEngine = NULL;
+        }
+
+#ifdef MUSICSHOP_AVAILABLE
+    if (iMPXFindInShop)
+		{
+			delete iMPXFindInShop;
+			iMPXFindInShop = NULL;
+		}
+#endif
+
+	if( AknLayoutUtils::PenEnabled() && Toolbar() )
+		{
+		Toolbar()->SetToolbarVisibility(EFalse, EFalse);
+		Toolbar()->SetToolbarObserver( NULL );
+		}
+    IRLOG_DEBUG( "CIRHistoryListView::~CIRHistoryListView - Exiting" );
+	}
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Returns view id.
+// ---------------------------------------------------------------------------
+//
+
+TUid CIRHistoryListView::Id() const
+    {
+    IRLOG_DEBUG( "CIRHistoryListView::Id" );
+    return KIRHistoryListViewId;
+    }
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Handles view activation.
+// ---------------------------------------------------------------------------
+//
+
+void CIRHistoryListView::DoActivateL( const TVwsViewId& aPrevViewId,
+        TUid aCustomMessageId, const TDesC8& aCustomMessage )
+    {
+    IRLOG_DEBUG( "CIRHistoryListView::DoActivateL - Entering" );
+    iUi->iPresentViewID = KIRHistoryListViewId;
+    CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
+     if ( !iContainer )
+		{
+		iContainer = CIRHistoryListContainer::NewL(ClientRect(),*this,iHistoryDataArr );
+		iContainer->SetMopParent( this );
+		appUi->AddToViewStackL( *this, iContainer );
+		}
+    else
+       {
+		// we must notify a resource change in order to update the skin context
+		// This is a flaw of CEikFormattedCellListBox
+			iContainer->SetRect(ClientRect());
+        	iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch);
+       }
+
+    ConstructToolbarL();
+    iContainer->ActivateL();
+    iContainer->MakeVisible( ETrue );
+    SetTitleL( R_IRAPP_HISTORY_TITLE );
+    CIRBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
+    HandleStatusPaneSizeChange();
+    iUi->iNetworkController->RegisterActiveNetworkObserverL(*this);
+    EnableObserverL(EIRSystemEventObserver);
+    IRLOG_DEBUG( "CIRHistoryListView::DoActivateL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Handles view deactivation.
+// ---------------------------------------------------------------------------
+//
+
+void CIRHistoryListView::DoDeactivate()
+   {
+   IRLOG_DEBUG( "CIRHistoryListView::DoDeactivate - Entering" );
+    CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
+    if(&(appUi->SystemEventCollector()))
+	    {
+		DisableObserver(EIRSystemEventObserver);
+	    }
+
+    if ( iContainer )
+        {
+        appUi->RemoveFromViewStack( *this, iContainer );
+        iContainer->MakeVisible( EFalse );
+        delete iContainer;
+    	iContainer  = NULL;
+        }
+
+	if( AknLayoutUtils::PenEnabled() && Toolbar() )
+		{
+		Toolbar()->SetToolbarVisibility(EFalse, EFalse);
+		Toolbar()->SetToolbarObserver( NULL );
+		}
+    iUi->iNetworkController->DeleteActiveNetworkObserver(*this);
+    IRLOG_DEBUG( "CIRHistoryListView::DoDeactivate - Exiting" );
+   }
+
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Command handling function.
+// ---------------------------------------------------------------------------
+//
+
+void CIRHistoryListView::HandleCommandL( TInt aCommand )
+    {
+    IRLOG_DEBUG( "CIRHistoryListView::HandleCommandL - Entering" );
+	iCommand = aCommand;
+    switch ( aCommand )
+        {
+       case EAknSoftkeyOptions:
+            {
+
+            Cba()->DrawDeferred();
+            break;
+            }
+
+        case EAknSoftkeyCancel:
+            {
+            break;
+            }
+
+        case EClearCmd:
+			{
+			
+			RBuf sumvalue;
+			HBufC* textResource = StringLoader::LoadLC( R_IRAPP_HISTORY_QUERY );
+			sumvalue.Create(*textResource);
+			CIRDialogLauncher* queryNote = CIRDialogLauncher::NewL();
+			CleanupStack::PushL( queryNote );
+			TInt dlgValue;
+			queryNote->ShowQueryDialogDeletionL(sumvalue,dlgValue);
+			if(dlgValue)
+				{
+				ClearSongHistoryItemL();
+				}
+			CleanupStack::PopAndDestroy( queryNote );
+			CleanupStack::PopAndDestroy( textResource );
+			sumvalue.Close();
+			Toolbar()->DrawNow();
+
+			break;
+
+			}
+        case EHelpCmd:
+            {
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+				HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), AppUi()->AppHelpContextL() );
+				}
+          		break;
+            }
+
+        case EGotoNowPlayingViewCmd:
+            {
+            	iUi->SetHistory(ETrue);
+			    iUi->SavePrevIDL(KIRHistoryListViewId,aCommand);
+			    break;
+            }
+
+        case EListenCmd:
+            {
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+				iUi->SetListenFromPls(EFalse);
+				if( iUi->VerifyNetworkConnectivityL() )
+					{
+					iRequestPending = ETrue;
+					iListenRequest  = ETrue;
+					iAddToFav=EFalse;
+					break;
+					}
+				else
+					{
+	                iNowPlayingWrapper->SetView(EHistoryView);
+					TInt index=iContainer->GetCurrentFocussedNode();
+					iContainer->ListenUrlL(index );
+					}
+				}
+		        break;
+            }
+
+        case ESettingsCmd:
+            {
+		        AppUi()->ActivateLocalViewL(KIRSettingsViewId);
+           	    break;
+            }
+
+        case EAddtoFavouritesCmd:
+            {
+				if ( iUi->CheckAndNotifyLowDiskSpaceL() )
+					{
+					break;
+					}
+				
+			   if(iContainer->IsdsOrNot())
+					{
+					if( iUi->VerifyNetworkConnectivityL() )
+						{
+						iRequestPending = ETrue;
+						iAddToFav = ETrue;
+						iListenRequest=EFalse;
+						break;
+						}
+					else 
+						{
+						iAddToFav = ETrue;
+	                    iContainer->AddStationToFavoritesL(aCommand);
+						}
+					}
+				else
+					{
+					iContainer->AddStationToFavoritesL(aCommand);
+					}
+			            
+            }
+        break;    
+        case EFindInShop:
+        	{
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+				_LIT(KFind, "find");
+	        	FindInShopOptionL();
+	        	 
+	        	/**
+	        	 * Increment the Find In Store count by One
+	        	 */
+	        	iUi->FindInMusicStoreCounter();
+	        	iNowPlayingWrapper->UpdateNmsLogEventsL(KFind);
+				}
+        	}
+        break;
+       	case EAddStationManuallyCmd:
+			{
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+				iUi->SetEditStation(EFalse);
+				AppUi()->ActivateLocalViewL(KIRAddManuallyStationViewID);
+				}
+			}
+		break;
+
+        default:
+            {
+            CIRBaseView::HandleCommandL( aCommand );
+            break;
+            }
+        }
+    IRLOG_DEBUG( "CIRHistoryListView::HandleCommandL - Exiting" );
+    }
+
+
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Event handler for status pane size changes.
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::HandleStatusPaneSizeChange()
+    {
+    IRLOG_DEBUG( "CIRHistoryListView::HandleStatusPaneSizeChange - Entering" );
+    // the client rect is also set here after screen orientation change
+    if ( iContainer )
+        {
+        iContainer->SetRect( ClientRect() );
+        }
+    IRLOG_DEBUG( "CIRHistoryListView::HandleStatusPaneSizeChange - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::NextSongReceivedL()
+// Adds the currently playing song to the history's array.
+// ---------------------------------------------------------------------------
+//
+
+void CIRHistoryListView::NextSongReceivedL( const TDesC& /*aSongName*/,
+                                            const TDesC& /*aArtistName*/,
+                                            const TDesC& /*aChannelName*/, 
+                                            const TDesC& /*aChannelUrl*/ )
+{
+	IRLOG_DEBUG( "CIRHistoryListView::NextSongReceivedL - Entering" );
+	iHistoryDataArr.ResetAndDestroy();
+
+	if(iContainer)
+	{
+		iContainer->ClearHistoryListL();
+	}
+
+	GetAllListL();
+	if(iContainer)
+	{
+		iContainer->UpdateAllL(iHistoryDataArr);
+	}
+	IRLOG_DEBUG( "CIRHistoryListView::NextSongReceivedL - Exiting" );
+}
+
+
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::ChannelChangedL()
+// Moves the currently playing channel to the top.
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::ChannelChangedL( const TDesC& /*aSongName*/,const TDesC& /*aArtistName*/,
+		 const TDesC& /*aChannelName*/, const TDesC& /*aChannelUrl*/ )
+{
+	IRLOG_DEBUG( "CIRHistoryListView::ChannelChangedL - Entering" );
+	iHistoryDataArr.ResetAndDestroy();
+
+	if(iContainer)
+	{
+		iContainer->ClearHistoryListL();
+	}
+
+	GetAllListL();
+	if(iContainer)
+	{
+		iContainer->UpdateAllL(iHistoryDataArr);
+	}
+	IRLOG_DEBUG( "CIRHistoryListView::ChannelChangedL - Exiting" );
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::RemoveSongEntry()
+// Removes the particular  from the List Array
+// ---------------------------------------------------------------------------
+//
+TInt CIRHistoryListView::RemoveSongEntry(const TDesC & /*aSongName*/,
+                                         const TDesC & /*aArtistName*/, 
+                                         const TDesC & /*aChannelName*/,
+                                         const TDesC& /*aChannelUrl*/)
+ {
+ 	IRLOG_DEBUG( "CIRHistoryListView::RemoveSongEntry - Entering" );
+    IRLOG_DEBUG( "CIRHistoryListView::RemoveSongEntry - Exiting" );
+	return KErrNone;
+ }
+
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::RemoveChannelEntry()
+// ---------------------------------------------------------------------------
+//
+TInt CIRHistoryListView::RemoveChannelEntry( const TDesC& /*aSongName*/, 
+                                             const TDesC& /*aArtistName*/,
+                                             const TDesC& /*aChannelName*/,
+                                             const TDesC& /*aChannelUrl*/ )
+{
+	IRLOG_DEBUG( "CIRHistoryListView::RemoveChannelEntry" );
+	// No implementation required for DoubleStyleListbox as no seperate channel entries exist to be deleted.
+	return KErrNone;
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::NotifyDataChangeToUIError()
+// Not Implemented
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::NotifyDataChangeToUIError(TInt /*aError*/)
+{
+	IRLOG_DEBUG( "CIRHistoryListView::NotifyDataChangeToUIError" );
+}
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::ClearSongHistoryItemL()
+// Clears the Song History array
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::ClearSongHistoryItemL()
+{
+	IRLOG_DEBUG( "CIRHistoryListView::ClearSongHistoryItemL - Entering" );
+	if(iHistoryEngine->ClearAllHistory() != KErrNone)
+	{
+		iHistoryDataArr.ResetAndDestroy();
+		iContainer->ClearHistoryListL();
+		Toolbar()->SetItemDimmed(EFindInShop,ETrue,ETrue);
+		Toolbar()->SetItemDimmed(EListenCmd,ETrue,ETrue);
+		GetAllListL();
+		if(iContainer)
+		{
+			iContainer->UpdateAllL(iHistoryDataArr);
+		}
+		IRLOG_DEBUG( "CIRHistoryListView::ClearSongHistoryItemL - Exiting" );
+		return;
+	}
+	iHistoryDataArr.ResetAndDestroy();
+
+	if(iContainer)
+	{
+		iContainer->ClearHistoryListL();
+		Toolbar()->SetItemDimmed(EFindInShop,ETrue,ETrue);
+		Toolbar()->SetItemDimmed(EListenCmd,ETrue,ETrue);
+		iContainer->UpdateAllL(iHistoryDataArr);
+	}
+	IRLOG_DEBUG( "CIRHistoryListView::ClearSongHistoryItemL - Exiting" );
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::GetAllList()
+// gets the List which was stored earlier
+//---------------------------------------------------------------------------
+void CIRHistoryListView::GetAllListL()
+{
+	IRLOG_DEBUG( "CIRHistoryListView::GetAllListL - Entering" );
+	TInt songCount = iHistoryEngine->GetHistoryCount();
+
+	if(songCount == 0)
+		{
+		IRLOG_DEBUG( "CIRHistoryListView::GetAllListL - Exiting" );
+		return;
+		}
+
+	for(TInt arrCount=0 ; arrCount<songCount ; arrCount++ )
+		{
+		CIRSongHistoryInfo *songHistory = CIRSongHistoryInfo::NewL();
+		CleanupStack::PushL( songHistory );
+		iHistoryDataArr.Append(songHistory);
+		CleanupStack::Pop(songHistory);
+		}
+
+	//to be implemented after getting the engine class..
+	iHistoryEngine->GetAllHistoryL(iHistoryDataArr);
+	IRLOG_DEBUG( "CIRHistoryListView::GetAllListL - Exiting" );
+}
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::DynInitMenuPaneL()
+// Dynamically handles the Menu Pane
+//---------------------------------------------------------------------------
+void CIRHistoryListView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
+	{
+	IRLOG_DEBUG( "CIRHistoryListView::DynInitMenuPaneL - Entering" );
+	if(aResourceId == R_IR_MENU_HISTORY)
+		{
+		if(!aMenuPane) User::Leave(KErrNotFound);
+			{
+			if (  iHistoryDataArr.Count() == 0 )
+				{
+				aMenuPane->SetItemDimmed( EClearCmd, ETrue );
+				}
+			else
+				{
+				aMenuPane->SetItemDimmed( EClearCmd, EFalse );
+				}
+			// Now Playing option
+			if(iNowPlayingWrapper->iPlaying)
+				{
+				aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,EFalse);
+				}
+			else
+				{
+				aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,ETrue);
+				}
+            if(iContainer->ShowFocus()|| !(iHistoryDataArr.Count() ))
+	            {
+	            aMenuPane->SetItemDimmed(EAddtoFavouritesCmd,ETrue);
+	            }
+            else
+	            {
+	            aMenuPane->SetItemDimmed(EAddtoFavouritesCmd,EFalse);
+	            }
+			}
+
+		}
+	IRLOG_DEBUG( "CIRHistoryListView::DynInitMenuPaneL - Exiting" );
+
+	}
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::HandleMetaDataReceived()
+// Handles the change in metadata.
+//---------------------------------------------------------------------------
+
+void CIRHistoryListView::HandleMetaDataReceived( const CIRMetaData& aMetaData )
+{
+	IRLOG_DEBUG( "CIRHistoryListView::HandleMetaDataReceived - Entering" );
+	if( iHistoryEngine )
+	{
+		TRAPD( error, iHistoryEngine->HandleMetaDataReceivedL( aMetaData ) );
+		if( error )
+		{
+			IRLOG_DEBUG( "CIRHistoryListView::HandleMetaDataReceivedL - Failed." );
+		}
+	}
+	IRLOG_DEBUG( "CIRHistoryListView::HandleMetaDataReceived - Exiting" );
+}
+
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::ConstructToolbarL()
+// Constructs Touch Toolbar
+//---------------------------------------------------------------------------
+
+void CIRHistoryListView::ConstructToolbarL()
+	{
+	IRLOG_DEBUG( "CIRHistoryListView::ConstructToolbarL - Entering" );
+    if(Toolbar())
+	    {
+		if (  iHistoryDataArr.Count() == 0 )
+			{
+			Toolbar()->SetItemDimmed(EFindInShop,ETrue,ETrue);
+			Toolbar()->SetItemDimmed(EListenCmd,ETrue,ETrue);
+			}
+
+		if(iMPXFindInShop)
+			{
+			if(iContainer->GetButtonDimmed())
+				{
+				Toolbar()->SetItemDimmed(EFindInShop,ETrue,ETrue);
+				}
+			}
+		else
+			{
+			Toolbar()->SetItemDimmed(EFindInShop,ETrue,ETrue);
+			}
+		Toolbar()->SetToolbarVisibility( ETrue );
+		if(iContainer)
+			{
+		    iContainer->SetRect( ClientRect() );
+		    iContainer->DrawDeferred();
+			}
+	    }
+	IRLOG_DEBUG( "CIRHistoryListView::ConstructToolbarL - Exiting" );
+}
+
+// --------------------------------------------------------------------------
+// CIRHistoryListView::DynInitToolbarL()
+// Dynamically Updates the toolbar
+// --------------------------------------------------------------------------
+//
+void CIRHistoryListView::DynInitToolbarL( TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ )
+{
+	IRLOG_DEBUG( "CIRHistoryListView::DynInitToolbarL - Entering" );
+	
+	IRLOG_DEBUG( "CIRHistoryListView::DynInitToolbarL - Exiting" );
+}
+
+// --------------------------------------------------------------------------
+// CIRHistoryListView::OfferToolbarEventL
+// Handles key events
+// --------------------------------------------------------------------------
+//
+void CIRHistoryListView::OfferToolbarEventL( TInt aCommand )
+	{
+	IRLOG_DEBUG( "CIRHistoryListView::OfferToolbarEventL - Entering" );
+	HandleCommandL(aCommand);
+	IRLOG_DEBUG( "CIRHistoryListView::OfferToolbarEventL - Exiting" );
+	}
+
+
+
+
+// ---------------------------------------------------------------------------
+// void CIRHistoryListView::LaunchMusicShopL()
+// To Launch Find in Shop Option
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::LaunchMusicShopL()
+	{
+#ifdef MUSICSHOP_AVAILABLE
+	  IRLOG_DEBUG( "Entered CIRHistoryListView::LaunchMusicShopL() Entering" );
+
+	  TApaTaskList tasList( iCoeEnv->WsSession() );
+	  TApaTask task = tasList.FindApp( KUidMusicStore );
+
+	  if ( task.Exists() )
+		  {
+		    task.BringToForeground();
+		  }
+	  else
+		  {
+		    RApaLsSession session;
+		    if ( KErrNone == session.Connect() )
+			    {
+			      CleanupClosePushL( session );
+			      TThreadId threadId;
+			      session.CreateDocument( KNullDesC, KUidMusicStore, threadId );
+			      CleanupStack::PopAndDestroy(&session);
+			    }
+		  }
+
+	  IRLOG_DEBUG( "Leaving CIRHistoryListView::LaunchMusicShopL() Exiting" );
+#endif
+   }
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::DoFindInMusicShopL()
+// To Launch Find in Shop Option
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::DoFindInMusicShopL( const TDesC& aSongName,
+                                             const TDesC& aArtistName,
+                                             const TDesC& aAlbumName )
+	{
+	IRLOG_DEBUG( "Entered CIRHistoryListView::DoFindInMusicShopL() - Entering" );
+#ifdef MUSICSHOP_AVAILABLE
+	HBufC* url = NULL;
+	url = iMPXFindInShop->CreateSearchURLL( aSongName,
+	             							 aArtistName,
+	             							 aAlbumName,
+	             							 KNullDesC,     // Composer - Not used
+	              							 KNullDesC );   // Genre - Not used
+	CleanupStack::PushL(url);   // the pointer will be poped
+	RProperty::Set( KUidMusicStore,
+	KMShopCategoryId,
+	KFindInMShopKeyValid );  // Set Key to Valid
+
+	RProperty::Set( KUidMusicStore,
+	KMShopCategoryName,
+	*url );
+	LaunchMusicShopL();
+	if(url)
+		{
+		CleanupStack::PopAndDestroy(url);
+		}
+	REComSession::FinalClose();
+#else
+    if(aSongName.Length() > 0 || aArtistName.Length() > 0 || aAlbumName.Length() > 0)
+        {
+        // do nothing, just remove build warnings.
+        }
+	IRLOG_DEBUG( "Leaving CIRHistoryListView::DoFindInMusicShopL() - Exiting" );
+#endif
+	}
+
+// ---------------------------------------------------------------------------
+// CIRHistoryListView::FindInShopOption()
+// To Launch Find in Shop Option when selected from the toolbar
+// ---------------------------------------------------------------------------
+//
+
+void CIRHistoryListView:: FindInShopOptionL()
+	{
+	IRLOG_DEBUG( "CIRHistoryListView::FindInShopOptionL - Entering" );
+	TInt itemIndex = iContainer->GetCurrentFocussedLeaf();
+	if(itemIndex==-1)
+		{
+	    IRLOG_DEBUG( "CIRHistoryListView::FindInShopOptionL - Exiting" );
+		return;
+		}
+	if(itemIndex>=0 && itemIndex<iHistoryDataArr.Count())
+		{	
+		DoFindInMusicShopL(iHistoryDataArr[itemIndex]->GetSongInfo(),
+		iHistoryDataArr[itemIndex]->GetArtistInfo(),
+		KNullDesC);
+		}
+	IRLOG_DEBUG( "CIRHistoryListView::FindInShopOptionL - Exiting" );
+	}
+// ---------------------------------------------------------------------------
+//Notifies all observers whose network request is active
+// to reissue the request  
+//NotifyActiveNetworkObserversL()
+// ---------------------------------------------------------------------------
+
+void CIRHistoryListView::NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent)
+	{
+	IRLOG_DEBUG( "CIRHistoryListView::NotifyActiveNetworkObserversL - Entering" );
+	
+	switch(aEvent)
+	{
+	case ENetworkConnectionDisconnected:
+		{
+		iNowPlayingWrapper->HandleNetworkDisconnected();
+		}
+		break;
+	case ENetworkConnectionEstablished:
+		{
+		if( !iUi->CheckAndNotifyLowDiskSpaceL() && iContainer )
+			{
+			if(iRequestPending || iUi->iNetworkController->IsHandingOverConnection())
+				{
+				if(iAddToFav)
+					{
+					iAddToFav=ETrue;
+					iListenRequest=EFalse;
+					iContainer->AddStationToFavoritesL(EAddtoFavouritesCmd);
+					}
+				else if(iListenRequest)
+					{
+					iAddToFav=EFalse;
+					iListenRequest=EFalse;
+					iNowPlayingWrapper->SetView(EHistoryView);
+					TInt index=iContainer->GetCurrentFocussedNode();
+					iContainer->ListenUrlL(index );
+					}
+				else
+					{
+						
+					}
+				}
+			}
+		if(iUi->iNetworkController->IsHandingOverConnection())
+			{
+			ResetPendingRequests(EFalse);
+			}
+		}
+	}
+
+	IRLOG_DEBUG( "CIRHistoryListView::NotifyActiveNetworkObserversL - Exiting" );
+	}
+	
+	
+
+// -----------------------------------------------------------------------------
+// Notified by network controller when user cancels network connection, to reset 
+// the pending requests  
+// ResetPendingRequests()
+// -----------------------------------------------------------------------------
+void CIRHistoryListView::ResetPendingRequests(TBool aValue)
+	{
+	iRequestPending = aValue;
+	iListenRequest  = aValue;
+	iAddToFav = aValue;
+	}
+
+	
+	
+	
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Foreground event handling function.
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::HandleForegroundEventL( TBool aForeground )
+    {
+	IRLOG_DEBUG( "CIRHistoryListView::HandleForegroundEventL - Entering" );
+	CIRBaseView::HandleForegroundEventL( aForeground );
+   
+	if ( aForeground )
+		{
+		if(iContainer)
+			{
+			MAknsSkinInstance * skin=AknsUtils::SkinInstance () ;
+		    TRgb color;
+		    TInt skinColor=AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors,
+		    				                                      EAknsCIQsnTextColorsCG6 );
+			if(color.Gray2()!=0)
+				{
+				CreateAndSetToolbarL(R_IR_HISTORY_WHITE_TOOLBAR);
+				}
+			else
+				{
+				CreateAndSetToolbarL(R_IR_HISTORY_BLACK_TOOLBAR);	
+				}
+	        if( AknLayoutUtils::PenEnabled() && Toolbar() )
+				{
+				Toolbar()->SetToolbarObserver( this );
+				}
+			ConstructToolbarL();
+			}
+		}
+	IRLOG_DEBUG( "CIRHistoryListView::HandleForegroundEventL" );
+    }
+
+// ---------------------------------------------------------------------------
+// GetFindInShopInstance()
+// Get the FindInShop Instance is null or not.
+// ---------------------------------------------------------------------------
+//
+TBool CIRHistoryListView::GetFindInShopInstance()
+	{
+	TBool ret = EFalse;
+	if(iMPXFindInShop)
+		{
+		ret = ETrue;	
+		}
+	IRLOG_DEBUG( "CIRHistoryListView::GetFindInShopInstance" );
+	return ret;	
+	}
+// ---------------------------------------------------------
+// CIRHistoryListView::HandleSystemEventL
+// from base class MIRSystemEventObserver
+// ---------------------------------------------------------
+//
+void CIRHistoryListView::HandleSystemEventL(TIRSystemEventType aEventType)
+	{
+	IRLOG_DEBUG(" CIRHistoryListView::HandleSystemEventL - Entering");
+	
+	switch (aEventType)
+		{
+		case EIRCallActivated:
+			{
+			if( iUi->GetNetworkControllerInstance()->IdentifyConnectionType() != EWiFi )
+				{
+				if(iUi->iIsdsWrapper->iIsdsWaitDialog)
+					{
+					TRAP_IGNORE( iUi->iIsdsWrapper->DestroyWaitDialogL() );
+					}
+				if(!iCallRequestPending && iCommand==EAddtoFavouritesCmd)
+					{
+					iUi->iIsdsWrapper->IsdsCancelRequest();
+					iCallRequestPending = ETrue;
+					}
+				if(iUi->iIsdsWrapper->GetListenRequest())
+					{
+					iNowPlayingWrapper->DestroyWaitDialogL();
+					iUi->iIsdsWrapper->SetListenRequest(EFalse);
+					iUi->iIsdsWrapper->IsdsCancelRequest();
+					}
+				}
+			break;
+			}
+		case EIRCallDeactivated:
+			{
+			if(iCallRequestPending && iCommand==EAddtoFavouritesCmd)
+				{
+				iCallRequestPending = EFalse;
+				HandleCommandL(iCommand);
+				}
+			break;
+			}
+		default:
+			{
+			break;
+			}
+		}
+	IRLOG_DEBUG( "CIRHistoryListView::HandleSystemEventL - Exiting." );
+	}	
+// ---------------------------------------------------------------------------
+// RefreshHistoryL()
+// Refreshes the History view while Synchronisation.
+// ---------------------------------------------------------------------------
+//
+void CIRHistoryListView::RefreshHistoryL()
+{
+	IRLOG_DEBUG( "CIRHistoryListView::RefreshHistoryL - Entering" );
+	iHistoryDataArr.ResetAndDestroy();
+
+	if(iContainer)
+	{
+		iContainer->ClearHistoryListL();
+	}
+
+	GetAllListL();
+	if(iContainer)
+	{
+		iContainer->UpdateAllL(iHistoryDataArr);
+	}
+	IRLOG_DEBUG( "CIRHistoryListView::RefreshHistoryL - Exiting" );
+}
+// ---------------------------------------------------------------------------
+// HistoryEngineInstance()
+// Gets the history Engine object Instance.
+// ---------------------------------------------------------------------------
+//
+CIRSongHistoryEngine* CIRHistoryListView::HistoryEngineInstance()
+{
+	IRLOG_DEBUG( "CIRHistoryListView::HistoryEngineInstance - Exiting" );
+	return iHistoryEngine ;
+}