diff -r 839377eedc2b -r befca0ec475f videofeeds/vcnsuiengine/inc/vcxnscontentclienthandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/vcnsuiengine/inc/vcxnscontentclienthandler.h Wed Sep 01 12:30:28 2010 +0100 @@ -0,0 +1,216 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + + + + +#ifndef VCXNSCONTENTCLIENTHANDLER_H_ +#define VCXNSCONTENTCLIENTHANDLER_H_ + +// INCLUDES +#include + +#include "MIptvVodContentClientObserver.h" +#include + +// FORWARD DECLARATIONS +class CIptvVodContentClient; +class CVcxNsUiEngine; +class CVcxConnectionUtility; + +// TYPEDEFS +typedef TUint32 TIptvServiceId; + +/** +* Class CVcxNsContentClientHandler handles content client interactions. +* +* @lib vcxnsuiengine.lib +*/ +class CVcxNsContentClientHandler : public CBase, + public MIptvVodContentClientObserver, + public MConnUtilEngineObserver + { + +public: + + /** + * Constructor. + * + * @param aUiEngine Ui engine + * @param aConnUtil Connection util + */ + static CVcxNsContentClientHandler* CVcxNsContentClientHandler::NewL( + CVcxNsUiEngine& aUiEngine, CVcxConnectionUtility& aConnUtil ); + + virtual ~CVcxNsContentClientHandler(); + + /** + * Returns content management client. + * @return Pointer to CIptvVodContentClient object. + */ + CIptvVodContentClient* GetVodContentClientL( TUint32 aServiceId ); + + /** + * Updates the given service's ecg. + * This causes the iap to be reasked if necessary. + * + * @param aServiceId Service id + * @return Error code + */ + TInt UpdateEcgL( TUint32 aServiceId ); + + /** + * Stores mpx media id to content database. + * @param aServiceId Service id + * @param aContentId Content id + * @param aCaIndex Content access index + * @param aMpxId Mpx id. + */ + void StoreMpxIdToEcgDbL( TUint32 aServiceId, + TUint32 aContentId, + TUint32 aCaIndex, + TUint32 aMpxId ); + + + /** + * Stores Last Playing Position to content database. + * @param aServiceId Service id + * @param aContentId Content id + * @param aCaIndex Content access index + * @param aPos Last play pos. + */ + void StoreLastPlayPosL( TUint32 aServiceId, + TUint32 aContentId, + TUint32 aCaIndex, + TReal32 aPos ); + +// From MIptvVodContentClientObserver + + /** + * Messages from EPG manager are handled here. Messages are defined in CIptvUtil.h + * @since Engine 1.1 + * @param aMsg Message + * @param aInfo Info + * @param aServiceId Service id. + */ + void HandleEpgManagerMsgL( TInt aMsg, TInt aInfo, TIptvServiceId aServiceId ); + +// from MConnUtilEngineObserver + + /** + * This method is called by the vcxconnectionutility when + * it has received a notification about the availibility of + * "better" iap in the network. This might happen + * when WLAN defined in the corresponding destination becomes + * available or when WLAN carrier is lost and there is defined + * 3G/gprs iap (or another available WLAN) in the destination + * being used. + * + * Client don't have to accept the changing of the iap. If client + * returns EFalse notifying it does not want to roam, then the + * iap will not be changed. + * + * This however might result in diconnecting, if the old iap is + * no longer available, like it would happen when WLAN carrier is lost + * + * @return TBool ETrue: roaming accepted, EFalse: Roaming not accepted + */ + TBool RequestIsRoamingAllowedL(); + + /** + * This method is called by the vcxconnectionutility when + * there have been some change in the iap currently using: + * + * Connection lost: this happens when for example WLAN carrier + * is lost and there is no other iap to use to or when corresponding + * connection is closed by some other application. + * + * Iap change by the roaming: if client has accepted roaming + * vcxconnectionutility notifies about new iap is ready to use + * + * When client is being called by this method, it can request a + * iap id by calling CVcxConnectionUtility::GetIap- + */ + void IapChangedL(); + + /** + * Return iap query status. + * + * @return ETrue if connection for service has been created or + * will be triggered via MIptvVodContentClientObserver + * interface, otherwise EFalse + */ + TBool IapAsked( TUint32 aServiceId ); + + /** + * Set specified service iap query status. + * + * @param aServiceId the service id, that value is to be set. + * @param aSet Value to be set to iap asked flag + */ + void SetIapAsked( TUint32 aServiceId, TBool aSet ); + +private: + + + /** + * Constructor. + * + * @param aUiEngine Ui engine + * @param aConnUtil Connection util + */ + CVcxNsContentClientHandler( CVcxNsUiEngine& aUiEngine, + CVcxConnectionUtility& aConnUtil ); + + /** + * Private 2nd phase construction. + */ + void ConstructL(); + +// Data + + /** + * Pointers to VOD Content Clients. + * Own. + */ + RPointerArray iVodContentClients; + + /** + * Array of content client service id's. + */ + RArray iVodContentClientIds; + + /** + * Array of flags, if the iap query is needed for service + * This must be set to ETrue by default. If user cancels in + * connection creation dialog, then set to EFalse + */ + RArray iIapAsked; + + /** + * CVcxNsUiEngine + */ + CVcxNsUiEngine& iUiEngine; + + /** + * Reference to connection utility + */ + CVcxConnectionUtility& iConnUtil; + + }; + +#endif /*VCXNSCONTENTCLIENTHANDLER_H_*/