internetradio2.0/uisrc/irfirsttimecontainer.cpp
changeset 0 09774dfdd46b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/uisrc/irfirsttimecontainer.cpp	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,327 @@
+/*
+* Copyright (c)  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:  Find stations container.
+*
+*/
+
+
+#include <aknlists.h>
+#include <eikfrlbd.h> 
+
+#include <barsread.h>
+#include <eikenv.h>
+#include <eiklabel.h>
+#include <eikmenub.h>
+
+#include <stringloader.h>
+#include <internetradio.rsg>
+#include <eikenv.h>
+#include "irbaseview.h"
+
+
+#include <eikfrlbd.h>
+
+
+#include <internetradio.rsg>
+#include "irui.h"
+#include "ir.hrh"
+#include "ircommon.h"
+#include "irdebug.h"
+#include "irfirsttimeview.h"
+#include "irfirsttimecontainer.h"
+
+#include "iraap.hlp.hrh"
+
+
+// The granularity of the scan stations list box.
+
+const TInt KMenubufMaxLength = 522;
+const TInt KStringSize = 20;
+#define KCONTROLSCOUNT 0
+
+// ---------------------------------------------------------------------------
+// C++ default constructor can NOT contain any code, that might leave.
+// ---------------------------------------------------------------------------
+//
+CIRFirstTimeContainer::CIRFirstTimeContainer(CIRFirstTimeView& aFirstTimeView):
+                                             iFirstTimeView(aFirstTimeView)
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::CIRFirstTimeContainer" );
+    }
+
+// ---------------------------------------------------------------------------
+// CIRFirstTimeContainer::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::ConstructL( const TRect& aRect )
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::ConstructL - Entering" );
+    CreateWindowL();
+    iListbox = new(ELeave) CAknDoubleStyleListBox;
+    iListbox->SetContainerWindowL(*this);
+    iListbox->ConstructL(this,EAknListBoxSelectionList);
+
+	iItemArray = static_cast<CDesCArray*>( iListbox->Model()->ItemTextArray());
+    PopulateFindStationListL();
+
+			
+    iListbox->SetCurrentItemIndex(iFirstTimeView.GetCurrentFocus());
+	iListbox->HandleItemAdditionL( );
+
+    
+    SetRect( aRect );
+    DrawNow();
+       
+    iListbox->CreateScrollBarFrameL( ETrue );
+    iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, 
+                                              CEikScrollBarFrame::EAuto);
+    
+    iListbox->SetListBoxObserver( this );  
+	IRLOG_DEBUG( "CIRFirstTimeContainer::ConstructL - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CIRFirstTimeContainer::~CIRFirstTimeContainer()
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::~CIRFirstTimeContainer - Entering" );
+	if(iListbox)
+		{
+		delete iListbox;
+		iListbox = NULL;
+		}
+    IRLOG_DEBUG( "CIRFirstTimeContainer::~CIRFirstTimeContainer - Exiting" );
+    }
+
+//----------------------------------------------------------------------------
+// CIRFirstTimeContainer::CountComponentControls() const
+// returns the number of components in the view.
+//----------------------------------------------------------------------------
+//
+TInt CIRFirstTimeContainer::CountComponentControls() const
+	{
+	IRLOG_DEBUG( "CIRFirstTimeContainer::CountComponentControls - Entering" );
+	TInt count(KCONTROLSCOUNT);
+	if(iListbox)
+		{
+		count++;
+		}
+	IRLOG_DEBUG( "CIRFirstTimeContainer::CountComponentControls - Exiting" );
+	return count;
+	}
+//----------------------------------------------------------------------------
+// CIRFirstTimeContainer::ComponentControl() const
+// returns a pointer to the control under this view depending on the index
+// passed,to the framework.
+//----------------------------------------------------------------------------
+// 
+CCoeControl* CIRFirstTimeContainer::ComponentControl(TInt aIndex) const
+	{
+	IRLOG_DEBUG( "CIRFirstTimeContainer::ComponentControl - Entering" );
+	IRLOG_DEBUG( "CIRFirstTimeContainer::ComponentControl - Exiting" );
+	switch(aIndex)
+		{
+		case 0:
+			{
+			if(iListbox)
+			return iListbox;
+			}
+		default:
+			return NULL;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// From class CCoeControl.
+// We need to catch the selection key event in order to do a couple of things 
+// in moving state make the movement, and in normal state open channel 
+// specific popup menu. Up and down buttons are forwarded to the list.
+// ---------------------------------------------------------------------------
+//
+TKeyResponse CIRFirstTimeContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType )
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::OfferKeyEventL" );
+	return iListbox->OfferKeyEventL(aKeyEvent, aType );
+    }
+
+// ---------------------------------------------------------------------------
+// From class CCoeControl.
+// Opens help by context.
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::GetHelpContext( TCoeHelpContext& aContext ) const
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::GetHelpContext - Entering" );
+	aContext = TCoeHelpContext( KIRMCVUid, KIR_HELP_RESULTS  );
+	IRLOG_DEBUG( "CIRFirstTimeContainer::GetHelpContext - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// From class MEikListBoxObserver.
+// List box event handler.
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::HandleListBoxEventL( CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::HandleListBoxEventL - Entering" );
+    CIRUi* appUi = static_cast<CIRUi*>( iCoeEnv->AppUi( ) );
+    
+    switch ( aEventType )
+        {
+        case EEventEnterKeyPressed:
+        	 /**  Keypress event. */
+        case EEventItemDoubleClicked:
+            /**  Item single-tap event */
+            iFirstTimeView.SetCurrentFocus(iListbox->CurrentItemIndex());
+            switch( iListbox->CurrentItemIndex( ) )
+                {
+                case 0:
+					{
+					TBuf8<2> dummy;
+					TVwsViewId viewId(TUid::Uid(KUIDIRAPP),KIRStationDirectoryViewId);
+					appUi->ActivateViewL(viewId ,TUid::Uid(1),dummy);
+					}
+                    break;
+                case 1:
+	                {
+					if( !iFirstTimeView.iUi->CheckAndNotifyLowDiskSpaceL() )
+						{
+						HBufC *SearchTitle = StringLoader::LoadLC(R_IRAPP_SEARCH_STRING);
+	                	_LIT(KNullText,"");
+						RBuf string1;
+						string1.Create(KStringSize);
+						string1.Append(KNullText);
+						iFirstTimeView.ShowQueryDialogL(*SearchTitle,string1);
+						CleanupStack::PopAndDestroy(SearchTitle);
+						string1.Close();
+						}
+	                }
+                    break;
+                case 2:
+                	{
+					if( !iFirstTimeView.iUi->CheckAndNotifyLowDiskSpaceL() )
+						{
+	                	appUi->SetEditStation(EFalse);
+	                    appUi->ActivateLocalViewL(KIRAddManuallyStationViewID);
+						}
+                	}
+                    break;
+                default:
+                    break;
+                }
+			/* fall through */ // pc-lint Warning -e616                
+         default:
+            break;
+        }
+    IRLOG_DEBUG( "CIRFirstTimeContainer::HandleListBoxEventL - Exiting" );
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CIRSearchResultsViewContainer::Draw()
+// From class CCoeControl.
+// Draws the control.
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::Draw( const TRect& /*aRect*/ ) const
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::Draw - Entering" );
+    CWindowGc& gc = SystemGc();
+    gc.SetPenStyle( CGraphicsContext::ENullPen );
+    gc.SetBrushColor( KRgbBlue );
+    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+    IRLOG_DEBUG( "CIRFirstTimeContainer::Draw - Exiting" );
+    }
+
+// ---------------------------------------------------------------------------
+// Populates listbox
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::PopulateFindStationListL( )
+    {
+    IRLOG_DEBUG( "CIRFirstTimeContainer::PopulateFindStationListL - Entering" );   
+    //Fetches the data to be displayed in this view from resource.
+    if(!(iItemArray->Count()))
+	    {
+		CreateFindStationDataL(R_IRAPP_FINDSTATION_DIRECTORY
+			,R_IRAPP_MAIN_DISCOVER_EXPAND);
+		CreateFindStationDataL(R_IRAPP_MAIN_MENU_SEARCH
+			,R_IRAPP_FINDSTATION_SEARCH_EXPAND);
+		CreateFindStationDataL(R_IRAPP_FINDSTATION_ADDSTATIONMANUALLY
+			,R_IRAPP_FINDSTATION_ADDSTATIONMANUALLY_EXPAND);
+	    }
+	IRLOG_DEBUG( "CIRFirstTimeContainer::PopulateFindStationListL - Exiting" );
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CreateDiscoverStationDataL(TInt aTitle,TInt aDescription)
+// Fetches the data from stringloader that should be displayed
+// and sets it to the listbox.
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::CreateFindStationDataL(TInt aTitle,TInt aDescription)
+	{
+	IRLOG_DEBUG( "CIRFirstTimeContainer::CreateFindStationDataL - Entering" );
+	_LIT(KTabSpace,"\t");
+	
+	HBufC *titleData = StringLoader::LoadLC(aTitle);
+    HBufC *descriptionData = StringLoader::LoadLC(aDescription);
+    TBuf<KMenubufMaxLength> menubuf;
+   	menubuf.Append(KTabSpace);
+  	menubuf.Append(*titleData);
+  	menubuf.Append(KTabSpace);
+  	menubuf.Append(*descriptionData);
+  	iItemArray->AppendL(menubuf);
+  	CleanupStack::PopAndDestroy(descriptionData);
+	CleanupStack::PopAndDestroy(titleData);
+	IRLOG_DEBUG( "CIRFirstTimeContainer::CreateFindStationDataL - Exiting" );
+	}
+// -----------------------------------------------------------------------------
+// CIRFirstTimeContainer::SizeChanged()
+// Called by framework when the view size is changed.
+// -----------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::SizeChanged()
+    {  
+    iListbox->SetRect(Rect());
+    }
+// ---------------------------------------------------------------------------
+// CIRFirstTimeContainer::GetCurrentItemIndex()
+// returns the index of the currently selected item
+// ---------------------------------------------------------------------------
+//
+
+TInt CIRFirstTimeContainer::GetCurrentItemIndex() const
+    {
+    IRLOG_DEBUG( "CIRStationDirectoryContainer::GetCurrentItemIndex" );
+	return iListbox->CurrentItemIndex();
+    }
+// ---------------------------------------------------------------------------
+// void CIRFirstTimeContainer::HandleResourceChange(TInt aType)
+// Handles a change to the control's resources.
+// ---------------------------------------------------------------------------
+//
+void CIRFirstTimeContainer::HandleResourceChange(TInt aType)
+	{
+	IRRDEBUG( "CIRFirstTimeContainer::HandleResourceChange - Entering" );
+    CCoeControl::HandleResourceChange( aType );
+	iFirstTimeView.RefreshView();
+	IRRDEBUG( "CIRFirstTimeContainer::HandleResourceChange - Exiting" );
+	}
+// End of file
+
+