internetradio2.0/uiinc/irmainview.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 19 Apr 2010 14:01:53 +0300
changeset 0 09774dfdd46b
permissions -rw-r--r--
Revision: 201011 Kit: 201015

/*
* Copyright (c) 2005-2006 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:  Header for CIRMainView
*
*/


#ifndef CIRMAINVIEW_H
#define CIRMAINVIEW_H


#include "irbaseview.h"
#include <akntoolbarobserver.h>
#include <aknbutton.h>
#include <pspresetobserver.h>

#include "irpreset.h"
#include "MViewsResponseAndErrorObserver.h"
#include "IRActiveNetworkObserver.h"
#include "msyncpresetobserver.h"	// MSyncPresetObserver
#include "MLogoDownloadObserver.h"

class CIRMainContainer;
class CAknWaitDialog;
class MLogoDownloadObserver;


/**
 * SearchResults View
 */
class CIRMainView : public CIRBaseView,
						   public MAknToolbarObserver,
	   				       public MPSPresetObserver,
	   				       public MIRActiveNetworkObserver,
	   				       public MSyncPresetObserver,
					       public MLogoDownloadObserver,
					       public MViewsResponseAndErrorObserver

    {
    
public: //Methods
    /**
     * NewL()
     * Static constructor.
     */
    static CIRMainView* NewL();

    /**
     * NewLC()
     * Static constructor.
     */
    static CIRMainView* NewLC();
    
    /**
     *~CIRMainView()
     * Destructor.
     */
    ~CIRMainView();
    /**
     * ConstructL()
     * 2nd phase constructor
     */
    void ConstructL();

	/**
     * CIRMainView()
     * C++ default constructor.
     */
    CIRMainView();

    // from base class CAknView
	/**
	 * From CAknView
	 *
	 * @see CAknView::Id() const
	 */
    TUid Id() const;

	/**
	 * From CAknView
	 *
	 * @see CAknView::HandleCommandL( TInt aCommand )
	 */
	void HandleCommandL( TInt aCommand );
	
	
	/**
	* DynInitMenuPaneL
	* Dynamically initialises a menu pane
	*/
	void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
    
    /**
    * ConstructToolbarL()
    * Constructs a touch toolbar
    */         
   	virtual void ConstructToolbarL();
   	
   	
    /**
     * From CAknView
     *
     * @see CAknView::HandleForegroundEventL( TBool aForeground )
     */
   	void HandleForegroundEventL( TBool aForeground );

    /**
     * From CAknView
     */
	void HandleStatusPaneSizeChange();

	/*
	* OfferToolbarEventL
	* 
	*/
	void OfferToolbarEventL(TInt aCommand );
	/*
	* SetToolbarItems
	* Sets the  touch tool bar items
	*/
    void SetToolbarItems();
    
	//from MIRActiveNetworkObserver
	/**
	 * Notifies all observers whose network request is active
	 * to reissue the request  
	 * NotifyActiveNetworkObserversL()
	 */	
	 void NotifyActiveNetworkObserversL(TIRNetworkEvent aEvent);
	 
 	 /**
	 * Notifies all observers whose network request is active
	 * to reset the pending request status  
	 * ResetPendingRequests()
	 */	
	 void ResetPendingRequests(TBool aValue);

	/**
	 * HandlePresetChangedL
	 * whenever their is any change in preset
	 * the function will get invoked.
	 */
	 void HandlePresetChangedL( TInt aId, TUid aDataHandler, MPSPresetObserver::TPSReason aReason );
	 /**
	 * ConnectToLastPlayedStationL()
	 * Connects to the last played station.
	 */
    void ConnectToLastPlayedStationL();
	/*
	* GetMainContainer()
	* returns pointer to main container
	*/
	CIRMainContainer* GetMainContainer();
	/**
	 * SetUrlFromPresetL.
	 */
    void SetUrlFromPresetL(TInt aUrlIndex);
	/**
	 * DoConnectToChannelL
	 * Connects to the  station .
	 */
    void DoConnectToChannelL( TInt aUrlIndex );
	/**
	 * SyncPresetL.
	 */
    void SyncPresetL(TInt aChid,const TDesC &aModifiedTime);
	/**
	* SetListBoxMarkedCount()
	* sets the marked item count in the listbox
	*/ 
	void SetListBoxMarkedCount(TInt aMarkedItemCount);
	/**
	* SetMarkedFlag()
	* sets the marked flag
	*/ 
	void SetMarkedFlag(TInt aMarkedFlag);
	/**
	* SetMarkedAllFlag()
	* sets the marked All flag value.
	*/ 
	void SetMarkedAllFlag(TInt aMarkedAllFlag);
	/*
	* SetRequestPendingStatus()
	* Sets the request pending state
	*/
	void SetRequestPendingStatus(TBool aRequestPending);
	/*
	* SetFavListen()
	* Sets the listen is from favourites or not
	*/
	void SetFavListen(TBool aFavListen);
	/*
	* SetActualFilteredItemIndex()
	* sets the original index of the filtered item
	*/
	void SetActualFilteredItemIndex(TInt aFilteredIndex);
 	/**
	* SetMovingFlag()
	* Sets the view is in move mode .
	*/ 
    void SetMovingFlag(TBool aValue);
	/**
	* GetMarkedIndexArray()
	* returns the array of elements marked  in the listbox
	*/ 
	RArray<TInt> GetMarkedIndexArray();
	/**
	* GetListBoxMarkedCount()
	* returns the number of elements marked  in the listbox
	*/ 
	TInt GetListBoxMarkedCount();
	/**
	* GetMarkedFlag()
	* returns the iMarkedflag value
	*/ 
	TInt GetMarkedFlag();
	/**
	* GetMarkedAllFlag()
	* returns the iMarkedAllflag value
	*/ 
	TInt GetMarkedAllFlag();
	/**
	* GetCurrentIndex()
	* returns the index of the station.
	*/ 
	TInt GetCurrentIndex();
	/**
	* GetLastPlayedStatus()
	* returns the iLastplayed value
	*/ 
	TBool GetLastPlayedStatus();
	/**
	* GetAddToFavouratesFlag()
	* returns whether any station is added to favourates or not.
	*/ 
  	TBool GetAddToFavouratesFlag();
	/*
	* GetRequestPendingStatus()
	* returns whether an active request is pending
	*/
	TBool GetRequestPendingStatus();
	/*
	* GetFavListen()
	* returns /Checks whether request is listen to favorites.
	*/
	TBool GetFavListen();
    /**
	* GetAddDimmingStatus()
	* returns the dimming status value for Enable/Disabling Add to favourites option
	*/ 
    TBool GetAddDimmingStatus();
   
    /**
	* GetEditDimmingStatus()
	* returns the dimming status value for Enable/Disabling Edit option
	*/ 
  	TBool GetEditDimmingStatus();
 	/**
	* GetMovingFlag()
	* Gets the view is in move mode or not.
	*/ 
    TBool GetMovingFlag();
    
	/**
	 * from MSyncPresetObserver
	 * SyncPresetRemovedL()
	 * called back when the preset that is synced was removed from isds
	 * @param TInt,the preset id
	 */
	void SyncPresetRemovedL(TInt aId);

	/**
	 * from MSyncPresetObserver	
	 * SyncPresetChangedL()
	 * called back when the preset that is synced has been changed in the isds
	 * @param CIRIsdsPreset&,the new preset data
	 */
	void SyncPresetChangedL(CIRIsdsPreset& aPreset);
	
	/**
	 * from MSyncPresetObserver	
	 * SyncPresetNoChangeL()
	 * called back when the preset that is synced has not been changed
	 */
	 void SyncPresetNoChangeL();
	 
	/**
	 * ConnectToSelectedStationL()
	 * Used to synchronize the LastPlayed preset before listen
	 */
	 void ConnectToSelectedStationL();
	 
	/**
	 * AddStationtoFavoritesL()
	 * Called when user selects AddtoStations cmd from the MainView options
	 */ 
	 void AddStationtoFavoritesL();
    
	/**
    * PresetLogoDownloadedL()
    * CallBack Function Returning the Preset With Logo
    */
	void PresetLogoDownloadedL(CIRIsdsPreset* aPreset);
	
	/**
    * PresetLogoDownloadError()
    * CallBack Function Returning the Preset With no Logo/Error while downloading
    */
	void PresetLogoDownloadError(CIRIsdsPreset* /*aPreset*/);
	
	/**
	* LogoRequestL()
	* Called by the container of this view
	*/
	void LogoRequestL();
	
	/**
	* ResponseL()
	* From the class MViewsResponseAndErrorObserver
	*/
	void ResponseL(CIRIsdsPreset* aPreset = NULL );

	/**
	* PresetResponseL()
	* From the class MViewsResponseAndErrorObserver
	*/
	void PresetResponseL(CIRIsdsPreset* aPreset);

	/**
	* ErrorL()
	* From the class MViewsResponseAndErrorObserver
	*/
	void ErrorL();
	
	
	
	
    
protected:  //Methods

    // from base class CAknView
    /**
     * From CAknView
     *
     * @see CAknView::DoActivateL(const TVwsViewId& aPrevViewId, 
     *    TUid aCustomMessageId, 
     *    const TDesC8& aCustomMessage)
     */
    void DoActivateL( const TVwsViewId& aPrevViewId,TUid aCustomMessageId,
    			 const TDesC8& aCustomMessage );

	/**
     * From CAknView
     *
     * @see CAknView::DoDeactivate()
     */
	void DoDeactivate();

  	
private:
	/** 
	* iContainer
	* Container for this view. 
	*/
	CIRMainContainer* iContainer;
	/** 
	* iMarkedFlag
	* returns bool value depending on mark/unmark state. 
	*/    
	TBool iMarkedFlag;
	/** 
	* iMarkedAllFlag
	* returns bool value depending on whether all the elements are marked/unmarked state. 
	*/    
	TBool iMarkedAllFlag;
	/*
	* iAddToFavouratesFlag
	* returns whether any station is added to favourates or not.
	*/
	TBool iAddToFavouratesFlag;
	
 	/*
	* iIndexExisting
	*/
	TBool iIndexExisting;
	/*
	 * iRequestPending
	 * Checks whether an active request is pending
	 */
	TBool iRequestPending;
	/*
	 * iFavListen
	 * Checks whether request is listen to favorites 
	 */
	TBool iFavListen;
	/*
	 * iStationDetailsCmd
	 *  
	 */
    TBool iStationDetailsCmd;
	
	/** 
	* iMoveMarkedFlag
	* boolean flag to set the moving state 
	*/
	TBool iMoveMarkedFlag;
	/**
	* iMarkedItemCount
	* Data to count the no.of items marked
	* Used to Handle multiselection
	*/
	TInt iMarkedItemCount; 
	/*
	 * iFilteredIndex
	 * the index that is obtained after the dynamic filtering of a station
	 */
	TInt iFilteredIndex;
	/** 
	* iMovedItemIndex
	* flag to get the marked item 
	*/
    TInt iMovedItemIndex;
	/** 
	* iIndexTo
	* Index of moved place 
	*/
    TInt iIndexTo;
	/** 
	* iIndexFrom
	* Index of moving place
	*/
    TInt iIndexFrom;
	/** 
	* iChannelIdTo
	* Id of the moved channel
	*/
    TInt iChannelIdTo;
	/** 
	* iChannelIdFrom
	* Id of the moving channel
	*/
    TInt iChannelIdFrom;
    
     /* iListenRequest
	 * Checks whether request is for listen
	 */
	TBool iListenRequest;
	
	/* iAddtoStationsCmd
	* Checks whether request is for AddtoStations
	*/
	TBool iAddtoStationsCmd;
  

public:
	/*
	* iInvalidIconIndices
	* instance of RArray
	*/
	RArray<TInt> iMarkedIndexArray;
	/*
	* iInvalidIconIndices
	* instance of RArray
	*/
	RArray<TInt> iUnMarkedArray;
	/*
	* iEditStation
	* instance for getting the Edit station index
	*/
	TBool iEditStation;
	
	/*
	* iSyncReq
	* to know the status whether the sync request is completed or not
	*/	
    TBool iSyncReq;
    
    
    
   };

#endif      // CIRMAINVIEW_H