diff -r 2e1adbfc62af -r ee64f059b8e1 internetradio2.0/uisrc/irplsview.cpp --- a/internetradio2.0/uisrc/irplsview.cpp Mon May 03 12:25:23 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,507 +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: view class for pls list -* -*/ - - -#include - -#include -#include - -#include "ir.hrh" -#include "ircommon.h" -#include "irdebug.h" -#include "irplsview.h" -#include "irplscontainer.h" -#include "irui.h" -#include "irbaseview.h" -#include "irsettings.h" -#include "irnowplayingwrapper.h" -#include "irisdspreset.h" -#include -#include - -#include "irnetworkcontroller.h" -#include "iractivenetworkobserver.h" - -//----------------------------------------------------------------------------- -// CIRPlsView::NewL -// Creates a new instance of pls view -//----------------------------------------------------------------------------- -// -CIRPlsView* CIRPlsView::NewL(const TRect& aRect) - { - IRLOG_DEBUG( "CIRPlsView::NewL - Entering" ); - CIRPlsView* self = CIRPlsView::NewLC(aRect); - CleanupStack::Pop(self); - IRLOG_DEBUG( "CIRPlsView::NewL - Exiting." ); - return self; - } - -//----------------------------------------------------------------------------- -// CIRPlsView::NewLC -// Creates a new instance of pls view and leaves it on the cleanup stack. -//----------------------------------------------------------------------------- -// -CIRPlsView* CIRPlsView::NewLC(const TRect& aRect) - { - IRLOG_DEBUG( "CIRPlsView::NewLC - Entering" ); - CIRPlsView* self = new (ELeave) CIRPlsView; - CleanupStack::PushL(self); - self->ConstructL(aRect); - IRLOG_DEBUG( "CIRPlsView::NewLC - Exiting." ); - return self; - } - -//----------------------------------------------------------------------------- -// CIRPlsView::CIRPlsView() -// Default constructor -//----------------------------------------------------------------------------- -// -CIRPlsView::CIRPlsView():iContainer(NULL) - { - IRLOG_DEBUG( "CIRPlsView::CIRPlsView" ); - SetCurrentTopItem(0); - } - -//----------------------------------------------------------------------------- -// CIRPlsView::~CIRPlsView() -// Destructor -//----------------------------------------------------------------------------- -// -CIRPlsView::~CIRPlsView() - { - IRLOG_DEBUG( "CIRPlsView::~CIRPlsView - Entering" ); - if ( iContainer ) - { - AppUi()->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - } - if( AknLayoutUtils::PenEnabled() && Toolbar() ) - { - Toolbar()->SetToolbarVisibility(EFalse, EFalse); - Toolbar()->SetToolbarObserver( NULL ); - } - IRLOG_DEBUG( "CIRPlsView::~CIRPlsView - Exiting." ); - } - -//----------------------------------------------------------------------------- -// CIRPlsView::ConstructL -// Second phase constructor -//----------------------------------------------------------------------------- -// -void CIRPlsView::ConstructL(const TRect& /*aRect*/) - { - IRLOG_DEBUG( "CIRPlsView::ConstructL - Entering" ); - CIRBaseView::ConstructL(R_IR_PLSVIEW); - MAknsSkinInstance * skin=AknsUtils::SkinInstance () ; - TRgb color; - TInt skinColor=AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors, - EAknsCIQsnTextColorsCG6 ); - if(color.Gray2()!=0) - { - CreateAndSetToolbarL(R_NOW_PLSLIST_WHITE_TOOLBAR); - } - else - { - CreateAndSetToolbarL(R_NOW_PLSLIST_BLACK_TOOLBAR); - } - if( AknLayoutUtils::PenEnabled() && Toolbar() ) - { - Toolbar()->SetToolbarObserver( this ); - } - SetCurrentFocus(0); - iRequestPending = EFalse; - IRLOG_DEBUG( "CIRPlsView::ConstructL - Exiting." ); - } - - -//----------------------------------------------------------------------------- -// TUid CIRPlsView::Id() -// This returns the view ID -//----------------------------------------------------------------------------- -// -TUid CIRPlsView::Id() const - { - IRLOG_DEBUG( "CIRPlsView::Id" ); - return KIRPlsViewID; - } - -// ---------------------------------------------------------------------------- -// This is called when a view needs to be activated. -// This creates container with its controls. -// It also receives messages sent to the view. -// aPrevViewId is passed s.t. we can return to the previous view. -// aCustomMessageId is an ID for the message. -// aCustomMessage is the actual message. -// ---------------------------------------------------------------------------- -// -void CIRPlsView::DoActivateL(const TVwsViewId& aPrevViewId,TUid /*aCustomMessageId*/, - const TDesC8& aCustomMessage) - { - IRLOG_DEBUG( "CIRPlsView::DoActivateL - Entering" ); - iUi->iPresentViewID = KIRPlsViewID; - if ( !iContainer ) - { - iContainer =CIRPlsContainer::NewL(ClientRect(),*this); - 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_FEATURE_FILE_TITLE ); - CIRBaseView::DoActivateL( aPrevViewId, TUid::Uid(1), aCustomMessage ); - HandleStatusPaneSizeChange(); - iUi->iNetworkController->RegisterActiveNetworkObserverL(*this); - IRLOG_DEBUG( "CIRPlsView::DoActivateL - Exiting" ); - } - -// ---------------------------------------------------------------------------- -// CIRPlsView::DoDeactivate() -// This is called when a view needs to be deactivated. -// This destroys container with its controls. -// ---------------------------------------------------------------------------- -// -void CIRPlsView::DoDeactivate() - { - IRLOG_DEBUG( "CIRPlsView::DoDeactivate - Entering" ); - if ( iContainer ) - { - SetCurrentFocus(iContainer->GetCurrentItemIndex()); - SetCurrentTopItem(iContainer->GetListBoxTopIndex()); - AppUi()->RemoveFromViewStack( *this, iContainer ); - delete iContainer; - iContainer = NULL; - } - if( AknLayoutUtils::PenEnabled() && Toolbar() ) - { - Toolbar()->SetToolbarVisibility(EFalse, EFalse); - Toolbar()->SetToolbarObserver( NULL ); - } - iUi->iNetworkController->DeleteActiveNetworkObserver(*this); - IRLOG_DEBUG( "CIRPlsView::DoDeactivate - Exiting." ); - } - -// ---------------------------------------------------------------------------- -// CIRPlsView::HandleCommandL(TInt aCommand) -// Command handling function -// ---------------------------------------------------------------------------- -// -void CIRPlsView::HandleCommandL(TInt aCommand) - { - IRLOG_DEBUG( "CIRPlsView::HandleCommandL - Entering" ); - iCurrentFocus = iContainer->GetCurrentItemIndex(); - - // handle the corresponding command selected by the user through options. - switch(aCommand) - { - - case EListenCmd: - { - iUi->SetListenFromPls(ETrue); - if( iUi->VerifyNetworkConnectivityL() ) - { - iRequestPending = ETrue; - break; - } - else - { - SetCurrentFocus(iContainer->GetCurrentItemIndex()); - iContainer->ListenToStationL(); - } - - } - break; - - case ESaveCmd: - { - if( !iUi->CheckAndNotifyLowDiskSpaceL() ) - { - iContainer->SaveL(); - } - } - break; - - case ESaveAllCmd: - { - if( !iUi->CheckAndNotifyLowDiskSpaceL() ) - { - iContainer->SaveAllL(); - } - } - break; - - case EGotoNowPlayingViewCmd: - { - SetCurrentFocus(iContainer->GetCurrentItemIndex()); - iUi->SetHistory(EFalse); - iUi->SavePrevIDL(KIRMainChoiceViewID,aCommand); - } - break; - - case ESettingsCmd: - { - SetCurrentFocus(iContainer->GetCurrentItemIndex()); - AppUi()->ActivateLocalViewL(KIRSettingsViewId); - } - break; - - case EHelpCmd: - { - if( !iUi->CheckAndNotifyLowDiskSpaceL() ) - { - SetCurrentFocus(iContainer->GetCurrentItemIndex()); - HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), - AppUi()->AppHelpContextL() ); - } - } - break; - - case EGotoMainView: - { - _LIT8(KNull,""); - AppUi()->ActivateLocalViewL( KIRMainChoiceViewID ,KMainViewLaunch ,KNull); - } - break; - default: - { - CIRBaseView::HandleCommandL( EAknSoftkeyExit ); - } - - } - IRLOG_DEBUG( "CIRPlsView::HandleCommandL - Exiting." ); - } - -// ---------------------------------------------------------------------------- -// CIRPlsView::DynInitMenuPaneL() -// Dynamically handles menu pane. -// ---------------------------------------------------------------------------- -// -void CIRPlsView::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane) - { - IRLOG_DEBUG( "CIRPlsView::DynInitMenuPaneL - Entering" ); - // Pls view options menu - CIRUi* appUi = static_cast( AppUi() ); - if(aResourceId == R_IR_MENU_PLS ) - { - if(!aMenuPane) User::Leave(KErrNotFound); - { - // Now Playing option - if(iNowPlayingWrapper->iPlaying) - { - aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,EFalse); - } - else - { - aMenuPane->SetItemDimmed(EGotoNowPlayingViewCmd,ETrue); - } - if(iUi->IsFirstTime()) - { - aMenuPane->SetItemDimmed(EGotoMainView,ETrue); - } - else - { - aMenuPane->SetItemDimmed(EGotoMainView,EFalse); - } - } - } - IRLOG_DEBUG( "CIRPlsView::DynInitMenuPaneL - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRPlsView::ConstructToolbarL() -// Coonstructs the toolbar for the view. -// --------------------------------------------------------------------------- -// -void CIRPlsView::ConstructToolbarL() - { - IRLOG_DEBUG( "CIRPlsView::ConstructToolbarL - Entering." ); - - TInt count = (iUi->iURLs.Count()); - if(Toolbar()) - { - if((count==0)) - { - Toolbar()->SetItemDimmed(ESaveCmd,ETrue,ETrue); - Toolbar()->SetItemDimmed(EListenCmd,ETrue,ETrue); - } - else - { - Toolbar()->SetItemDimmed(ESaveCmd,EFalse,ETrue); - Toolbar()->SetItemDimmed(EListenCmd,EFalse,ETrue); - } - if((count<=2)) - { - Toolbar()->SetItemDimmed(ESaveAllCmd,ETrue,ETrue); - } - else - { - Toolbar()->SetItemDimmed(ESaveAllCmd,EFalse,ETrue); - } - Toolbar()->SetToolbarVisibility( ETrue ); - - // Update rect, as changes in toolbar visibility also affect layout. - if(iContainer) - { - iContainer->SetRect( ClientRect() ); - iContainer->DrawDeferred(); - } - } - IRLOG_DEBUG( "CIRPlsView::ConstructToolbarL - Exiting." ); - } -// --------------------------------------------------------------------------- -// CIRPlsView::ConstructToolbarL() -// Dynamically initialises a tool bar.. -// --------------------------------------------------------------------------- -// -void CIRPlsView::DynInitToolbarL( TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ ) - { - IRLOG_DEBUG( "CIRPlsView::DynInitToolbarL - Entering." ); - IRLOG_DEBUG( "CIRPlsView::DynInitToolbarL - Exiting." ); - } - -// --------------------------------------------------------------------------- -// CIRMainView::OfferToolbarEventL() -// catch the selection key event and perform the operation according to it... -// --------------------------------------------------------------------------- -void CIRPlsView::OfferToolbarEventL - ( TInt aCommand ) - { - IRLOG_DEBUG( "CIRPlsView::OfferToolbarEventL - Entering." ); - HandleCommandL(aCommand); - IRLOG_DEBUG( "CIRPlsView::OfferToolbarEventL - Exiting." ); - } -// --------------------------------------------------------------------------- -// CIRPlsView::HandleStatusPaneSizeChange() -// -// --------------------------------------------------------------------------- -// -void CIRPlsView::HandleStatusPaneSizeChange() - { - IRLOG_DEBUG( "CIRPlsView::HandleStatusPaneSizeChange - Entering." ); - // the client rect is also set here after screen orientation change - if (iContainer ) - { - iContainer->SetRect( ClientRect() ); - } - IRLOG_DEBUG( "CIRPlsView::HandleStatusPaneSizeChange - Exiting." ); - } -// --------------------------------------------------------------------------- -// From class CAknView. -// Foreground event handling function. -// --------------------------------------------------------------------------- -// -void CIRPlsView::HandleForegroundEventL( TBool aForeground ) - { - IRLOG_DEBUG( "CIRMainView::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_NOW_PLSLIST_WHITE_TOOLBAR); - } - else - { - CreateAndSetToolbarL(R_NOW_PLSLIST_BLACK_TOOLBAR); - } - if( AknLayoutUtils::PenEnabled() && Toolbar() ) - { - Toolbar()->SetToolbarObserver( this ); - } - ConstructToolbarL(); - //iUi->iNetworkController->RegisterActiveNetworkObserver(this) - //iListen = ETrue - iContainer->DrawDeferred(); - Toolbar()->DrawDeferred(); - iContainer->SecondPls(); - } - } - IRLOG_DEBUG( "CIRMainView::HandleForegroundEventL - Exiting." ); - } - - -// --------------------------------------------------------------------------- -//Notifies all observers whose network request is active -// to reissue the request -//NotifyActiveNetworkObserversL() -// --------------------------------------------------------------------------- - -void CIRPlsView::NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent) - { - IRLOG_DEBUG( "CIRPlsView::NotifyActiveNetworkObserversL - Entering." ); - - switch(aEvent) - { - case ENetworkConnectionDisconnected: - { - iNowPlayingWrapper->HandleNetworkDisconnected(); - } - break; - case ENetworkConnectionEstablished: - { - if(iContainer) - { - if(iRequestPending || iUi->iNetworkController->IsHandingOverConnection()) - { - SetCurrentFocus(iContainer->GetCurrentItemIndex()); - iContainer->ListenToStationL(); - } - } - ResetPendingRequests(EFalse); - } - } - - IRLOG_DEBUG( "CIRPlsView::NotifyActiveNetworkObserversL - Exiting." ); - } - - -// ----------------------------------------------------------------------------- -// Notified by network controller when user cancels network connection, to reset -// the pending requests -// ResetPendingRequests() -// ----------------------------------------------------------------------------- -void CIRPlsView::ResetPendingRequests(TBool aValue) - { - iRequestPending = aValue; - } - - - -// CIRPlsView :: SecondConstruct() -// To again initialise when Second pls file is opened. -// --------------------------------------------------------------------------- -// -void CIRPlsView::SecondConstruct() - { - SetCurrentFocus(0); - SetCurrentTopItem(0); - iRequestPending = EFalse; - }