--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irisdsclient/inc/isdsclientdll.h Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,401 @@
+/*
+* 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 "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: The implementation for presentation elements.
+*
+*/
+
+
+#ifndef ISDSCLIENTDLL_H
+#define ISDSCLIENTDLL_H
+
+#include <e32base.h>
+
+#include "ircacheobserver.h"
+#include "irdataproviderobserver.h"
+#include "irlanguagemapper.h"
+#include "irparserobserver.h"
+
+class CIRCacheMgmt;
+class CIRDataProvider;
+class CIRHttpRequestData;
+class CIRIsdsPreset;
+class CIRReportGenerator;
+class CIRSettings;
+class CIRXMLContentHandler;
+class MIsdsResponseObserver;
+
+/**
+ * This class is the one which acts as a interface between UI and network
+ * component which interacts with the isds server.It provides the data to
+ * be diplayed to the UI either from cache or fetches it from the ISDS
+ * server.
+ *
+ *
+ * @code
+ * creates the instance of isdsclient
+ * iISDSClient = CIRIsdsClient::NewL(*this , iIRSettings->GetISDSBaseUrlL());
+ * iISDSClient->IRIsdsClientIntefaceL(EGenre); //requests for genre data
+ * //requests for selected channel
+ * iISDSClient->IRIsdsClientIntefaceL(iIndex, CIRIsdsClient::EChannels);
+ * //cancels any previous requests
+ * iISDSClient->IRISDSCancelRequest();
+ * //gets irid
+ * iISDSClient->IRGetIRIDL();
+ * iISDSClient->GetOtaStatusL(forceUpdate);//gets ota update status
+ * iISDSClient->IRISDSSearchL(aIsdsSearchString);
+ * iISDSClient->IRISDSPostL(pathtopost);
+ * SyncPresetL(iUi->iFavPresets->iFavPresetList->At(aUrlIndex)->GetId(),
+ * iUi->iFavPresets->iFavPresetList->At(aUrlIndex)->GetLastModifiedTime());
+ * iISDSClient->ReleaseResources();
+ * @endcode
+ *
+ */
+
+NONSHARABLE_CLASS( CIRIsdsClient ) : public CBase ,
+ public MIRDataProviderObserver,
+ public MIRParserObserver,
+ public MIRCacheObserver
+ {
+
+public: //public data
+
+ /**
+ * These Enums correspond to a particular UI event which
+ * requires request to be made to isds.
+ */
+ enum TIRIsdsclientInterfaceIDs
+ {
+ EGenre,
+ ELanguages,
+ ECountries,
+ Ehotpicks
+ };
+
+ enum TIRIsdsClientInterfaces
+ {
+ ECatagory,
+ EChannels,
+ EPresets,
+ EOtaInfo
+ };
+
+ /**
+ *type of data recieved from ISDS
+ */
+ enum TDataRecieved
+ {
+ ECategoryInfoRecieved,
+ EChannelListRecieved,
+ EPresetDataRecieved,
+ EOtaInfoRecieved,
+ EIridRecieved,
+ ESessionLogRecieved
+ };
+
+public:
+
+ /**
+ * CIRIsdsClient::NewL(MIsdsResponseObserver& aobserver)
+ * Used by UI to create instance of CIRIsdsClient.
+ */
+ IMPORT_C static CIRIsdsClient* NewL(MIsdsResponseObserver& aobserver,
+ const TDesC& aISDSBaseUrl);
+
+ /**
+ * CIRIsdsClient::NewLC(MIsdsResponseObserver& aobserver)
+ * Creates instance of CIRIsdsClient.
+ */
+
+ static CIRIsdsClient* NewLC(MIsdsResponseObserver& aobserver,
+ const TDesC& aISDSBaseUrl);
+
+ /**
+ * CIRIsdsClient::~CIRIsdsClient()
+ * Destructor
+ */
+
+ ~CIRIsdsClient();
+
+ /**
+ * CIRIsdsClient::ConstructL()
+ * Symbian two phased constructor
+ */
+ void ConstructL(const TDesC& aISDSBaseUrl);
+
+ /**
+ * CIRIsdsClient::CIRIsdsClient(MIsdsResponseObserver& aobserver)
+ * Default constructor
+ */
+ CIRIsdsClient(MIsdsResponseObserver& aobserver);
+
+ /**
+ * void CIRIsdsClientInteface(TIRIsdsclientInterfaceIDs aISDSClientRequest)
+ * Called by UI to make request to ISDS for catogories
+ * @param :ENUM value depending on catogory which user wants to explore
+ */
+ IMPORT_C TBool IRIsdsClientIntefaceL(
+ TIRIsdsclientInterfaceIDs aISDSClientRequest);
+
+ /**
+ * TBool IRIsdsIsCategoryCachedL(
+ * TIRIsdsclientInterfaceIDs aISDSClientRequest);
+ *
+ */
+ IMPORT_C TBool IRIsdsIsCategoryCachedL(
+ TIRIsdsclientInterfaceIDs aISDSClientRequest);
+
+ /**
+ * void CIRIsdsClientInteface(TUint aSelectedOption,TIRIsdsClientInterfaces aChoice)
+ * This API is used by the UI to make request for isds listed channels
+ * @param : aSelectedOption-returns the index of the option selected by the user
+ * @param : aChoice-ENUM value specifies what data is expected preset or channel data
+ */
+ IMPORT_C TBool IRIsdsClientIntefaceL(TUint aSelectedOption,
+ TIRIsdsClientInterfaces aChoice, TInt aHistoryBool = EFalse);
+
+ /**
+ * TBool IRIsdsIsChannelCachedL(TUint aSelectedOption);
+ *
+ */
+ IMPORT_C TBool IRIsdsIsChannelCachedL(TUint aSelectedOption);
+
+ /**
+ * void CIRISDSCancelRequest()
+ * This API is used by the UI to cancel a request made.
+ */
+ IMPORT_C void IRISDSCancelRequest();
+
+ /**
+ * void CIRGetIRID()
+ * This API is used to get IR ID from isds server
+ * isds if it doesnt have one
+ */
+ IMPORT_C void IRGetIRIDL();
+
+ /**
+ * void GetOtaStatusL()
+ * This API is used to get the OTA status from the server
+ * @param TBool,if ETrue the call is from UI and a call back has to be made to ui
+ * TBool contains the source of update (cache/isds)upon return.Used by Ui to load the
+ * loading screen based on this value.
+ */
+ IMPORT_C void GetOtaStatusL(TBool& aDataFrom);
+
+ /**
+ * void CIRISDSSearch(TDesC& aSearchString)
+ * This API is used by the UI to search channels from isds
+ * @param : aSearchString-search string entered by user
+ */
+ IMPORT_C void IRISDSSearchL(const TDesC& aSearchString);
+
+ /**
+ * void IRISDSPostL(TFileName &aFileName)
+ *function used to post the sesson logs
+ *@param sesson log file name
+ */
+ IMPORT_C void IRISDSPostL(TFileName &aFileName);
+
+ /**
+ * CIRDataProvider* GetDataProvider();
+ *function pointer to CIRDataProvider
+ *@param None
+ */
+ IMPORT_C CIRDataProvider* GetDataProvider();
+
+ /*
+ * void IRISDSMultiSearch()
+ * function used to search the stations by multi conditions
+ * @param
+ */
+ IMPORT_C void IRISDSMultiSearchL(const TDesC& aGenreID,
+ const TDesC& aCountryID, const TDesC& aLanguageID,
+ const TDesC& aSearchText);
+
+ /**
+ * void RHttpGeneralError(TInt aErrorCode)
+ * It is a call back function called by the data provider
+ * to return error code in case of some error.
+ *@param error code
+ */
+ void IRHttpGeneralError(TInt aErrCode);
+
+ /**
+ * void IRHttpDataReceived(TDesC& aXmlPath)
+ * It is a call back function called by the data provider
+ * once it recieves the XML data
+ */
+ void IRHttpDataReceived(const TDesC& aXmlPath,
+ const CIRHttpResponseData& aResponseHeaders);
+
+ /**
+ * void IRHttpContentNotChanged()
+ * this is call back funtion called by Dataprovider in case
+ * HTTP content isnt changed by ISDS
+ */
+ void IRHttpResponseCodeReceived(TInt aResponseCode,
+ CIRHttpResponseData& aResponseHeaders);
+
+ /**
+ * void ParseError()
+ * Call back funtion called by XML parser in case of parsing error
+ */
+ void ParseError(TInt aErrorCode);
+
+ /**
+ * void ParsedStructureL(TInt aChoice)
+ * Call back funtion called by XML parser after parsing is over
+ * @param : aChoice -specifies the type of data recieved from ISDS
+ */
+ void ParsedStructureL(TInt aChoice);
+
+ /**
+ * void CacheError()
+ * Called from cachemgmt in case of an error
+ */
+ void CacheError();
+
+ /**
+ * void CacheError()
+ * Called from cachemgmt in case of cache failure
+ */
+ void CacheFailed();
+
+ /**
+ * void CacheError()
+ * Called from cachemgmt in case cache is invalid
+ */
+ void CacheInvalid();
+
+ /**
+ * void CacheError()
+ * Called from cachemgmt data retrival is successful
+ *@param aChoice,it gives the data type of the cache
+ */
+ void CachedStructureL(TInt aChoice);
+
+ /**
+ *void CIRIsdsClient::SyncPresetL()
+ *Used to syncronize presets
+ *@param TInt,TDesC, the preset id and the last modified tag for the preset
+ */
+ IMPORT_C TInt SyncPresetL(TInt aPresetId, const TDesC&aIfModifiedSince);
+
+ /**
+ *void CIRIsdsClient::ConvertToTimeDate()
+ *Used to convert the date-time stamp to Symbian DateTime format
+ *@param TDesC&,TDateTime& the time stamp and the DateTime ref to
+ *hold the new data
+ */
+ void ConvertToTimeDate(const TDesC& aTime, TDateTime& aDateTime) const;
+
+ /**
+ *ReleaseResources()
+ *relese the resources held by isds client
+ */
+ IMPORT_C void ReleaseResources();
+
+ /**
+ *CIRIsdsClient::GetMultiplePresetsL()
+ *for multiple selected presets to be saved
+ *@param RArray&,TBool,the array of preset ids to be saved,return value
+ */
+ IMPORT_C void GetMultiplePresetsL(const RArray<TInt>& aIndexArray,
+ TBool& aDataFrom);
+
+ /**
+ *CIRIsdsClient::PurgeOtaInfoL
+ *delete all the data cached wrt OTA
+ *reset the flags
+ *function called when the ota info available earlier is no longer valid
+ */
+ IMPORT_C void PurgeOtaInfoL();
+
+private:
+ /**
+ *void IRHttpIssueRequestL(CIRHttpRequestData &);
+ *for making http request to Data Provider with Request object
+ *@param aRequestObject :The request object which has URL and other details
+ */
+ void IRHttpIssueRequestL(CIRHttpRequestData &aRequestObject);
+
+ /**
+ * void EncodeUrlL( TDes &aQuery )
+ * Encode the url using EEscapeUrlEncoded mode, This is used in session log
+ * @param url to be encoded
+ */
+ void EncodeUrlL(TDes& aQuery);
+
+private:
+ //Session log
+ TBuf<256> iBrowseUrl;
+ TInt iChannId;
+
+ //XML parser instance
+ CIRXMLContentHandler* iXmlReader;
+
+ //ISDS observer reference
+ MIsdsResponseObserver& iIsdsResponseObserver;
+
+ //DataProvider instance
+ CIRDataProvider *iDataProvider;
+
+ //cache mgmt
+ CIRCacheMgmt *iCache;
+ CIRSettings *iSettings;
+ CArrayPtrFlat<CIRIsdsPreset>* iSendPreset;
+ // used to store the isds base URL
+ HBufC* iISDSBaseUrl;
+ //contains catogory base URL
+ TBuf<256> iCatgoryURL;
+ //contains search base URL
+ TBuf<256> iSearchURL;
+ //contains irid base URL
+ TBuf<256> iGetIridUrl;
+ TBuf<128> iGetOtaStatus;
+ TBool iSyncRequest;//1 if the preset data request is a sync request,0 if general request
+ TInt iPresetToBeSynced;//keeps the presetid for which the sync request has been sent
+ TBool iDataFrom;//data from isds =1,isds =0
+ TBool iCatDataFrom;//0 if isds,1 for cache
+ TBool iChannelDataFrom;//0 if isds,1 for cache
+ TBuf<256> iCachePath;
+ TBool iOtaReqFrom;//0 internal 1from UI
+ //session log
+ CIRReportGenerator* iBrowseReport;
+ //conditionalGet
+ TBool iConditonalGet;
+ TTime iLastModifiedTime;
+ TInt iRequestType;
+ TBool iForceGet;
+ TBool iOnceForTheUsageSession;
+ TBool iPostResponsePending;
+ TBufC8<KIRLanguageCodeLength> iShortLanguageCode;
+
+ /**
+ * boolean for to track whether the cache request has made or not
+ */
+ TBool iCacheReqMade;
+ TBool iIRIDPending;
+ TBool iReqPending;
+ TBool iReqFromGetIRIDFunc;
+ TBool iReqFromSync;
+
+ /**
+ * to store further pending request objects
+ */
+ CIRHttpRequestData* iTempRequestObject;
+ };
+
+#endif //ISDSCLIENTDLL_H
+
+