diff -r 2580314736af -r 2669f8761a99 simpledatamodeladapter/inc/presenceplugindata.h --- a/simpledatamodeladapter/inc/presenceplugindata.h Thu Aug 19 10:19:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,470 +0,0 @@ -/* -* Copyright (c) 2006-2010 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: IETF SIMPLE Protocol implementation for XIMP Framework -* -*/ - - -#ifndef C_PRESENCEPLUGINDATA_H -#define C_PRESENCEPLUGINDATA_H - -#include -#include -#include -#include - -#include "mpresencepluginconnectionobs.h" -#include "presencelogger.h" - -class MXIMPObjectFactory; -class MPresenceObjectFactory; -class MSimpleDocument; -class MPresenceInfo; -class MSimplePresenceList; -class MPresenceInfoFieldCollection; -class MXIMPObjectCollection; -class MPersonPresenceInfo; -class MPresenceInfoField; -class MSimpleElement; -class MPresenceCacheWriter2; -class MPresenceCacheReader2; - -/** - * CPresencePluginData - * - * @lib presenceplugin.dll - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CPresencePluginData ): public CBase - { - public: - - /** - * Two-phased constructor. - * - * @param none - * @param none - */ - static CPresencePluginData* NewL( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ); - - /** - * Two-phased constructor. - * - * @param none - * @param none - */ - static CPresencePluginData* NewLC( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ); - - /** - * Standard C++ destructor - */ - virtual ~CPresencePluginData(); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 5.0 - * @param aPresenceFactory object factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - */ - void NotifyToBlockedToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC ); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - */ - void NotifyToPendingToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC ); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - */ - void NotifyTerminatedToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC ); - - /** - * Convert to engine notification to MXIMPPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aPrInfo ximp info structure [out] - * @param aUnicodeNoteContent note field content [out] - * @param aAvailability availability value for cache entry [out] - */ - void NotifyToActiveToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MPresenceInfo& aPrInfo, - const TDesC& aUnicodeNoteContent = KNullDesC, - NPresenceInfo::TAvailabilityValues aAvailability = - NPresenceInfo::EAvailable ); - - /** - * Convert to engine notification to MximpPresenceInfo - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aDocument notification - * @param aPrInfo ximp info structure [out] - */ - void NotifyToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimpleDocument& aDocument, - MPresenceInfo& aPrInfo ); - - /** - * Extracts cache data entries from presence info object. - * - * @since S60 5.0 - * @param aPrInfo ximp info structure - * @param aAvailability will store cache availability - * @param aExtendedAvailability will store extended availability - * @param aStatusMessage will store custom status message - */ - void CacheEntriesFromPrInfo( - MPresenceInfo& aPrInfo, - MPresenceBuddyInfo2::TAvailabilityValues& aAvailability, - TPtr& aExtendedAvailability, - TPtr& aStatusMessage ); - - /** - * Convert to engine list notification to MximpPresenceInfo elements - * - * @since S60 3.2 - * @param aFactory ximp Factory - * @param aList notification - * @param aEntities array of ximp info structure [out] - * @param aTerminated array of ximp info structure for - * terminated entities [out] - */ - void NotifyListToPrInfoL( - MXIMPObjectFactory& aFactory, - MPresenceObjectFactory& aPresenceFactory, - MSimplePresenceList& aList, - RPointerArray& aEntities, - RPointerArray& aActives, - RPointerArray& aTerminated ); - - /** - * AddPrPersToSimpleDocumentL - * - * @since S60 3.2 - * Add subscribed or blocked person to document - * @param aInfo, presence info - * @param aDocument, xml document - * @param aSipId, sip identity - * @param aTupleId, client tupleId - */ - void AddPrPersToSimpleDocumentL( - const MPersonPresenceInfo* aInfo, - MSimpleDocument& aDocument, - const TDesC8& aSipId, - TInt aTupleId ); - - /** - * Creates document. - * - * @since S60 3.2 - * @param aDocument XDM document - * @param aSipId SIP profile id - * @param aStatusField, status enum field - * @param aMessageField, message field - */ - void DoCreateDocumentL( - MSimpleDocument& aDocument, - const TDesC8& aSipId, - const MPresenceInfoField* aStatusField, - const MPresenceInfoField* aMessageField ); - - /** - * DoCheckBasicStatusValueL - * - * @since S60 3.2 - * @param aField - * @return TPtrC basic status value - */ - TPtrC DoCheckBasicStatusValueL( - const MPresenceInfoField& aField ); - - /** - * DoCheckActivitiesValueL - * - * @since S60 3.2 - * @param aField - * @return TPtrC activities value - */ - TPtrC8 DoCheckActivitiesValueL( - const MPresenceInfoField& aField ); - - /** - * DoCheckNoteValueL - * - * @since S60 3.2 - * @param aField - * @return TPtrC activities value - */ - TPtrC DoCheckNoteValueL( - const MPresenceInfoField& aField ); - - /** - * CreatePresenceUri8LC - * - * @since S60 3.2 - * @param aPresentityUri - * @return presence URI - */ - HBufC8* CreatePresenceUri8LC( - const TDesC8& aPresentityUri ); - - /** - * GenerateTupleId() - * Generate Tuple id for status document - * - * @since S60 3.2 - * @param none - * @return TInt, tupleid - */ - TInt GenerateTupleId(); - - - /** - * Removes prefix from uri. - * - * @since S60 3.2 - * @param aPresentityUri, presentity url - * @return HBufC16, URL without prefix - */ - HBufC16* RemovePrefixLC( - const TDesC& aPresentityUri ); - - /** - * Returns service id. - * - * @since S60 5.0 - * @return TInt, service id related to this data instance - */ - TInt ServiceId(); - - /** - * Resolve service name - * - * @since S60 5.0 - * @param aServiceId Service Id. - * @return resolved service name, ownership returned to caller - */ - HBufC* ServiceNameLC( TInt aServiceId ) const; - - /** - * Writes status to presence cache - * - * @since S60 5.0 - * @param aPresentityId, identity of status - * @param aAvailability, availability value to set - * @param aAvailabilityText, text for extended states - * @param aStatusMessage, status message from remote party - * @return None - */ - void WriteStatusToCacheL( - const TDesC& aPresentityId, - MPresenceBuddyInfo2::TAvailabilityValues aAvailability, - const TDesC& aAvailabilityText, - const TDesC& aStatusMessage ); - - /** - * Removes cache entries for this service. - * - * @since S60 5.0 - * @return None - */ - void RemoveCacheL(); - - /** - * Removes cache entries for certain person. - * - * @since S60 5.0 - * @param aIdentity, identity of presence entry - * @return None - */ - void DeletePresenceL( const TDesC& aIdentity ); - - /** - * Stores own presence values to permanent storage. - * - * @since S60 5.0 - * @param aServiceId, service id - * @param aAvailability, availability enumeration - * @param aStatusMessage, custom status message - * @return None - */ - void StorePresenceOwnPresenceL( - const TUint aServiceId, - NPresenceInfo::TAvailabilityValues aAvailability, - const TDesC& aStatusMessage ); - - /** - * Reads document id from permanent storage. - * - * @since S60 5.0 - * @param aServiceId, service id - * @param aDocumentId, document id - * @return None - */ - void ReadDocumentIdL( - const TInt aServiceId, - TDes8& aDocumentId ); - - /** - * Deletes permanent data from storage - * - * @since S60 5.0 - * @param aServiceId, service id - * @return None - */ - void DeletePresenceVariablesL( const TInt aServiceId ); - - private: - - /** - * Standard C++ constructor - */ - CPresencePluginData( - MPresencePluginConnectionObs& aObs, - TInt aServiceId ); - - /** - * Standard C++ constructor - */ - void ConstructL(); - - /** - * UserNoteToXIMPL - * - * @since S60 3.2 - * This method not yet used - * @param aPresenceFactory ximp Factory - * @param aElement Simple elemnt - * @param aCollection Field Collection - */ - void UserNoteToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aElement, - MPresenceInfoFieldCollection& aCollection ); - - /** - * SingleUserStatusToXIMPL - * - * @since S60 3.2 - * @param aPresenceFactory ximp Factory - * @param aElement Simple element - * @param aActivitiesElement Simple element - * @param aNoteElement Simple element for note elems (can be null) - * @param aCollection Field Collection - */ - void SingleUserStatusToXIMPL( - MPresenceObjectFactory& aPresenceFactory, - MSimpleElement* aBasicElement, - MSimpleElement* aActivitiesElement, - MSimpleElement* aNoteElement, - MPresenceInfoFieldCollection& aCollection ); - - /** - * Returns element or NULL if no is found in the given - * element list. element which matches best current locale is - * returned. - * - * @since S60 5.1 - * @param aElements Element array. - * @return Best matching or NULL. - */ - MSimpleElement* ResolveNoteElementL( - const RPointerArray& aElements ) const; - - /** - * Checks if element has language attribute compatible with the - * current locale. - * - * @since S60 5.1 - * @param aElement Simple element containing language attribute. - * @return ETrue if compatible language attribute is found, - * EFalse otherwise. - */ - TBool IsElementLanguageValidForCurrentLocaleL( - MSimpleElement& aElement ) const; - - /** - * Resolve cache used identifier - * - * @since S60 5.0 - * @param aIdentity presence id without prefix - * @return resolved cache identifier, ownership returned to caller - */ - HBufC* ResolveCacheXspIdentifierL( const TDesC& aIdentity ) const; - - - private: // data - - /** - * Generated tuple/person id - * Own. - */ - TInt iNumBuf; - - /** - * ximp Plugin connection observer - * Not Own. - */ - MPresencePluginConnectionObs& iConnObs; - - /** - * Stores service id. - */ - TInt iServiceId; - - /** - * Writes service status to presence cache. - * Own. - */ - MPresenceCacheWriter2* iPresenceCacheWriter; - - /** - * Reads service status from presence cache. - * Own. - */ - MPresenceCacheReader2* iPresenceCacheReader; - - SIMPLE_UNIT_TEST( T_CPresencePluginData ) - }; - -#endif //C_PRESENCEPLUGINDATA_H