internetradio2.0/uisrc/iraddmanuallystationview.cpp
changeset 0 09774dfdd46b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/uisrc/iraddmanuallystationview.cpp	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,601 @@
+/*
+* 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:  Channel list view class
+*
+*/
+
+
+#include <akniconarray.h>
+#include <akntitle.h>
+#include <eikmenup.h>
+#include <gulicon.h>
+#include <stringloader.h>
+#include <hlplch.h>
+#include <aknappui.h>
+
+//For Touch Toolbar
+#include <akntoolbar.h>
+#include <akntouchpane.h>
+#include <aknbutton.h>
+#include <internetradio.mbg>
+#include <internetradio.rsg>
+
+#include "irui.h"
+#include "ir.hrh"
+#include "ircommon.h"
+#include "irsettings.h"
+#include "irdebug.h"
+#include "irbaseview.h"
+#include "irapplication.h"
+#include "iraddmanuallystationview.h"
+#include "iraddmanuallystationcontainer.h"
+#include "irviewstack.h"
+#include "irmainview.h"
+#include "irnowplayingwrapper.h"
+
+
+const TInt KWaitTimeInMicroSeconds = 100000;
+
+// ---------------------------------------------------------------------------
+// C++ default constructor can NOT contain any code, that might leave.
+// ---------------------------------------------------------------------------
+//
+CIRAddManuallyStationView::CIRAddManuallyStationView() 
+    {
+    IRLOG_DEBUG( "CIRAddManuallyStationView::CIRAddManuallyStationView " );
+    }
+
+
+// ---------------------------------------------------------------------------
+// EPOC default constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CIRAddManuallyStationView::ConstructL(const TRect& /*aRect*/)
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ConstructL - Begin " );
+    CIRBaseView::ConstructL(R_IR_ADDURL);
+	MAknsSkinInstance * skin=AknsUtils::SkinInstance () ;
+	TRgb color;
+	TInt skinColor=AknsUtils::GetCachedColor(skin, color, KAknsIIDQsnTextColors,
+				                                      EAknsCIQsnTextColorsCG6 );
+	if(color.Gray2()!=0)
+		{
+		CreateAndSetToolbarL(R_IR_ADDMANUALLY_WHITE_TOOLBAR);
+		}
+	else
+		{
+		CreateAndSetToolbarL(R_IR_ADDMANUALLY_BLACK_TOOLBAR);	
+		}
+	if( AknLayoutUtils::PenEnabled() && Toolbar() )
+		{
+		Toolbar()->SetToolbarObserver( this );
+		}
+	
+    IRLOG_DEBUG( "CIRAddManuallyStationView::ConstructL - Exiting " );
+    }
+
+
+CIRAddManuallyStationView* CIRAddManuallyStationView::NewL(const TRect& aRect)
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::NewL - Begin " );
+	CIRAddManuallyStationView* self = CIRAddManuallyStationView::NewLC(aRect);
+	CleanupStack::Pop(self);
+	IRLOG_DEBUG( "CIRAddManuallyStationView::NewL - Exiting " );
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CIRAddManuallyStationView* CIRAddManuallyStationView::NewLC(const TRect& aRect)
+    {
+    IRLOG_DEBUG( "CIRAddManuallyStationView::NewLC - Begin " );
+    CIRAddManuallyStationView* self = new( ELeave ) CIRAddManuallyStationView;
+    CleanupStack::PushL( self );
+    self->ConstructL(aRect);
+    IRLOG_DEBUG( "CIRAddManuallyStationView::NewLC - Exiting " );
+    return self;
+    }
+
+    
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CIRAddManuallyStationView::~CIRAddManuallyStationView()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::~CIRAddManuallyStationView - Begin " );
+    CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
+	if ( Toolbar() )
+		{
+		Toolbar()->SetToolbarVisibility(EFalse, EFalse);
+		Toolbar()->SetToolbarObserver( NULL );
+		}
+	if(iAddStationsTimer)
+		{
+		iAddStationsTimer->StopTimer();
+		delete iAddStationsTimer;
+		iAddStationsTimer = NULL;
+		}
+	CActiveScheduler::Delete(iAddStationsTimer);
+	IRLOG_DEBUG( "CIRAddManuallyStationView::~CIRAddManuallyStationView - Exiting " );
+	}
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Returns view id.
+// ---------------------------------------------------------------------------
+//
+TUid CIRAddManuallyStationView::Id() const
+    {
+    IRLOG_DEBUG( "CIRAddManuallyStationView::Id " );
+    return KIRAddManuallyStationViewID;
+    }
+
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Handles view activation.
+// ---------------------------------------------------------------------------
+//
+void CIRAddManuallyStationView::DoActivateL( const TVwsViewId& aPrevViewId, 
+        TUid aCustomMessageId, const TDesC8& aCustomMessage )
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DoActivateL - Begin " ); 
+	CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
+	appUi->iPresentViewID = KIRAddManuallyStationViewID;
+ 	ConstructToolbarL(); 
+	Toolbar()->SetToolbarVisibility(ETrue, EFalse);
+	//save the previous view id
+	iPrevViewId = aPrevViewId;
+	
+//	SetAddStationsTitleL()
+	
+
+	if ( !iContainer )
+		{
+		iContainer =CIRAddManuallyStationContainer::NewL(this);
+		iContainer->ConstructL(R_FORM_MENUBAR);
+		}
+	else
+		{
+		iContainer->SetRect(ClientRect());
+		iContainer->HandleResourceChange(KEikDynamicLayoutVariantSwitch);			
+		}
+	
+	iAddStationsTimer = CIRAddStationsTimer::NewL(*iContainer);
+	CActiveScheduler::Add(iAddStationsTimer);
+
+    iAddStationsTimer->ExecuteL();
+ 	CIRBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DoActivateL - Exiting " );
+	}
+
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Handles view deactivation.
+// ---------------------------------------------------------------------------
+//
+void CIRAddManuallyStationView::DoDeactivate()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DoDeactivate - Begin " );
+	if ( iContainer )
+		{
+		if(iUi->ActiveView() == KIRAddManuallyStationViewID)
+			{
+			delete iContainer;
+			}
+		iContainer = NULL;
+		}
+	if ( Toolbar() )
+		{
+	    Toolbar()->SetToolbarVisibility(EFalse, EFalse);
+		Toolbar()->SetToolbarObserver( NULL );
+		}
+	if(iAddStationsTimer)
+		{
+		iAddStationsTimer->StopTimer();
+		delete iAddStationsTimer;
+		iAddStationsTimer = NULL;
+		}
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DoDeactivate - Exiting " );
+	}
+
+
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Command handling function.
+// ---------------------------------------------------------------------------
+//
+void CIRAddManuallyStationView::HandleCommandL( TInt aCommand )
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::HandleCommandL - Begin " );
+	CIRUi* appUi = static_cast<CIRUi*>( AppUi() );
+	CIRViewStack& viewStack = appUi->ViewStack();
+
+	switch ( aCommand )
+	    {
+	   	   
+	    case EGotoNowPlayingViewCmd:
+	   		{
+	   		appUi->SetHistory(EFalse);
+	  		appUi->SavePrevIDL(KIRAddManuallyStationViewID, aCommand); 
+	        break;
+	        }
+	    case EHelpCmd:
+			{
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+	        	HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
+	        	AppUi()->AppHelpContextL() );
+				}
+	        break;
+			}
+		case EAknSoftkeyBack:
+	    	{
+			if((appUi->IsFirstTime()))
+				{
+				CIRBaseView::HandleCommandL( aCommand );	                
+				}
+			else
+				{
+				TInt count = (viewStack.Count());
+				if(viewStack.Count() == 2 )
+					{
+					TUid topView = viewStack.Pop();
+					if(viewStack.Peek()==KIRMainChoiceViewID)
+						{
+						viewStack.PushL(topView);
+						CIRBaseView::HandleCommandL( aCommand );	                
+						}
+			
+					else
+						{
+						viewStack.Pop();
+						appUi->ActivateLocalViewL(KIRMainChoiceViewID);	
+						}
+					}
+					
+				else if(viewStack.Count() >2 )
+					{
+					CIRBaseView::HandleCommandL( aCommand );	
+					}
+				else
+					{
+					viewStack.Pop();
+					appUi->ActivateLocalViewL(KIRMainChoiceViewID);
+					}
+				}
+			}
+	    
+	        break;
+	   default:
+	        {
+	        CIRBaseView::HandleCommandL( aCommand );
+	        break;
+	        }
+	    }
+	IRLOG_DEBUG( "CIRAddManuallyStationView::HandleCommandL - Exiting " );
+	}
+
+
+
+
+// ---------------------------------------------------------------------------
+//  CIRAddManuallyStationView::ConstructToolbarL 
+//  To Create Touch Toolbar
+// ---------------------------------------------------------------------------
+
+void CIRAddManuallyStationView::ConstructToolbarL()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ConstructToolbarL - Begin " );
+	
+	if(Toolbar())
+		{
+	    Toolbar()->SetItemDimmed(EButton1,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton3,EFalse,ETrue);	
+	    
+	    if (iIsTextEntered )
+			{
+			Toolbar()->SetItemDimmed(EButton2,EFalse,ETrue);
+			}
+		else
+			{
+			if (iUi->GetEditStation())
+				{
+				if (iContainer)
+					{
+					if (!iContainer->iIsEnable)
+						{
+						Toolbar()->SetItemDimmed(EButton2,ETrue,ETrue);							
+						}
+					else
+						{
+						Toolbar()->SetItemDimmed(EButton2,EFalse,ETrue);				
+						}
+					}
+				}
+			else 
+				{
+				Toolbar()->SetItemDimmed(EButton2,ETrue,ETrue);
+				}
+			}
+	    	   
+		Toolbar()->SetToolbarVisibility( ETrue );
+		}
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ConstructToolbarL - Exiting " );
+	}
+
+// ---------------------------------------------------------------------------
+//  CIRAddManuallyStationView::DynInitToolbarL 
+// ---------------------------------------------------------------------------
+
+void CIRAddManuallyStationView::DynInitToolbarL( TInt /*aResourceId*/, CAknToolbar* /*aToolbar*/ )
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DynInitToolbarL - Begin " );
+	/*if ( !aToolbar ) User::Leave(KErrNotFound);
+		{
+
+		}*/
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DynInitToolbarL - Exiting " );
+	}
+	
+// --------------------------------------------------------------------------
+// CIRAddManuallyStationView::OfferToolbarEventL
+// --------------------------------------------------------------------------
+//
+void CIRAddManuallyStationView::OfferToolbarEventL( TInt aCommand )
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::OfferToolbarEventL - Begin " );
+	switch(aCommand)
+		{
+		
+		case EButton1:
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+	         	iContainer->CopyDataL();
+				}
+            break;
+      
+        case EButton2:
+			if ( !iUi->CheckAndNotifyLowDiskSpaceL() )
+				{
+	         	iContainer->SaveDataL();
+				}
+            break;
+        case EButton3:
+        	iContainer->PasteDataL();
+        	break;
+	
+        default:
+            break;
+	        
+		}
+	IRLOG_DEBUG( "CIRAddManuallyStationView::OfferToolbarEventL - Exiting " );
+	}
+
+// --------------------------------------------------------------------------
+// CIRAddManuallyStationView::SetToolbarItems
+// To dim/undim the touch toolbar buttons
+// --------------------------------------------------------------------------
+
+void CIRAddManuallyStationView::SetToolbarItems()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::SetToolbarItems - Begin " );
+	CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi( ) );
+  	  
+	if(iIsTextEntered )
+	    {
+	    Toolbar()->SetItemDimmed(EButton1,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton2,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton3,EFalse,ETrue);	
+	
+	    }
+	else if (appUi->GetEditStation() && iIsTextEntered)
+		{
+	    Toolbar()->SetItemDimmed(EButton1,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton2,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton3,EFalse,ETrue) ;	
+		}
+		
+	else if(iIsCopied)
+	    {
+	    Toolbar()->SetItemDimmed(EButton1,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton2,ETrue,ETrue);
+	    Toolbar()->SetItemDimmed(EButton3,EFalse,ETrue)	;
+	    }
+	else
+	  {
+	    Toolbar()->SetItemDimmed(EButton1,EFalse,ETrue);
+	    Toolbar()->SetItemDimmed(EButton2,ETrue,ETrue);
+	    Toolbar()->SetItemDimmed(EButton3,EFalse,ETrue);	
+	  }
+	Toolbar()->DrawNow();
+	iIsCopied=EFalse; 
+	IRLOG_DEBUG( "CIRAddManuallyStationView::SetToolbarItems - Exiting " );  
+	}
+
+// --------------------------------------------------------------------------
+// CIRAddManuallyStationView::SetAddStationsTitleL
+// Sets the Title
+// --------------------------------------------------------------------------
+void CIRAddManuallyStationView::SetAddStationsTitleL()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::SetAddStationsTitleL - Begin " );
+	if (!iUi->GetEditStation())
+		{
+		SetTitleL(R_IRAPP_ADDMANUALLY_TITLE);
+		}
+	else
+		{
+		SetTitleL(R_IRAPP_EDITSTATION_TITLE);	
+		}
+	IRLOG_DEBUG( "CIRAddManuallyStationView::SetAddStationsTitleL - Exiting " );
+	}
+
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::CIRAddStationTimer
+// --------------------------------------------------------------------------
+
+CIRAddStationsTimer::CIRAddStationsTimer(CIRAddManuallyStationContainer& aContainer): 
+					 CActive(CActive::EPriorityStandard),iContainer(aContainer)
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::CIRAddStationsTimer - Begin " );
+	iCounter=0;
+	IRLOG_DEBUG( "CIRAddManuallyStationView::CIRAddStationsTimer - Exiting " );
+	}
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::~CIRAddStationTimer
+// --------------------------------------------------------------------------
+CIRAddStationsTimer::~CIRAddStationsTimer()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::~CIRAddStationsTimer - Begin " );
+	// Make sure we're cancelled
+	Cancel();
+	iTimer.Close(); // Close the ASP
+	IRLOG_DEBUG( "CIRAddManuallyStationView::~CIRAddStationsTimer - Exiting " );
+	}
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::NewL
+// --------------------------------------------------------------------------
+CIRAddStationsTimer* CIRAddStationsTimer::NewL(CIRAddManuallyStationContainer& aContainer)
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::NewL - Begin " );
+	CIRAddStationsTimer* self = new (ELeave) CIRAddStationsTimer(aContainer);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	IRLOG_DEBUG( "CIRAddManuallyStationView::NewL - Exiting " );
+	return self;
+	}   
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::ConstructL
+// --------------------------------------------------------------------------
+void CIRAddStationsTimer::ConstructL()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ConstructL - Begin " );
+	iTimer.CreateLocal();
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ConstructL - Exiting " );
+	return;
+
+	} 
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::IssueRequest
+// --------------------------------------------------------------------------
+void CIRAddStationsTimer::IssueRequest()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::IssueRequest - Begin " );
+	// Request another wait
+	iStatus = KRequestPending;
+	if(!IsActive())
+		{
+		iTimer.After( iStatus, KWaitTimeInMicroSeconds);
+		SetActive();
+		}
+	IRLOG_DEBUG( "CIRAddManuallyStationView::IssueRequest - Exiting " );
+	} 
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::DoCancel
+// --------------------------------------------------------------------------
+void CIRAddStationsTimer::DoCancel()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DoCancel - Begin " );
+	iTimer.Cancel(); // Close the ASP
+	IRLOG_DEBUG( "CIRAddManuallyStationView::DoCancel - Exiting " );
+	}
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::RunL
+// --------------------------------------------------------------------------
+void CIRAddStationsTimer::RunL()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::RunL - Begin " );
+	iContainer.ExecuteLD( R_ADD_STATION_FORM_DIALOG );
+	IRLOG_DEBUG( "CIRAddManuallyStationView::RunL - Exiting " );
+	}
+   
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::ExecuteL
+// --------------------------------------------------------------------------
+void CIRAddStationsTimer::ExecuteL()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ExecuteL - Begin " );
+	IssueRequest();
+	IRLOG_DEBUG( "CIRAddManuallyStationView::ExecuteL - Exiting " );
+	return;
+	}
+
+// --------------------------------------------------------------------------
+// CIRAddStationTimer::StopTimer
+// --------------------------------------------------------------------------
+void CIRAddStationsTimer::StopTimer()
+	{
+	IRLOG_DEBUG( "CIRAddManuallyStationView::StopTimer - Begin " );
+	iTimer.Cancel();
+	IRLOG_DEBUG( "CIRAddManuallyStationView::StopTimer - Exiting " );
+	}	
+	
+// ---------------------------------------------------------------------------
+// From class CAknView.
+// Foreground event handling function.
+// ---------------------------------------------------------------------------
+//
+void CIRAddManuallyStationView::HandleForegroundEventL( TBool aForeground )
+    {
+	IRLOG_DEBUG( "CIRAddManuallyStationView::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_ADDMANUALLY_WHITE_TOOLBAR);
+				}
+			else
+				{
+				CreateAndSetToolbarL(R_IR_ADDMANUALLY_BLACK_TOOLBAR);	
+				}
+			if( AknLayoutUtils::PenEnabled() && Toolbar() )
+				{
+				Toolbar()->SetToolbarObserver( this );
+				}
+			ConstructToolbarL();
+			}
+		}
+	IRLOG_DEBUG( "CIRAddManuallyStationView::HandleForegroundEventL" );
+    }
+	
+
+
+void CIRAddManuallyStationView::RefreshView()
+	{
+	if (iContainer)
+		{
+		iContainer->SetRect(ClientRect());		
+		}
+	}