diff -r ccd0fd43f247 -r 208a4ba3894c harvesterplugins/messaging/smsmms/inc/cmessageplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/harvesterplugins/messaging/smsmms/inc/cmessageplugin.h Mon May 03 12:32:15 2010 +0300 @@ -0,0 +1,153 @@ +/* +* Copyright (c) 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: +* +*/ + + +#ifndef CMESSAGEPLUGIN_H +#define CMESSAGEPLUGIN_H + +#include +#include +#include +#include + +class CMessageMonitor; +class CMessageHarvester; +class CMessageDataHandler; +class CCPixIndexer; + +enum TMsgType +{ + EMsgTypeInvalid, + EMsgTypeSms, + EMsgTypeMms, + EMsgTypeDraft, + EMsgTypeEmailPop3, + EMsgTypeEmailSmtp, + EMsgTypeEmailImap4 +}; + +class CMessagePlugin : public CIndexingPlugin, public MMsvSessionObserver +{ +public: + static CMessagePlugin* NewL(); + static CMessagePlugin* NewLC(); + virtual ~CMessagePlugin(); + + /** + * From CIndexingPlugin + */ + void StartPluginL(); + void StartHarvestingL(const TDesC& aQualifiedBaseAppClass); + + /** + * callback from MMsvSessionObserver + */ + virtual void HandleSessionEventL(TMsvSessionEvent aEvent, + TAny* aArg1, + TAny* aArg2, + TAny* aArg3); + + /** + * Called by Message monitor or harvester when new item is found. + * + * @param aMsgId Message item identifier + * @param TCPixActionType aActionType action type + * @param aFolderId identifier of the folder where message is stored + */ + void MessageItemL( TMsvId aMsgId, TCPixActionType aActionType, TMsvId aFolderId ); + + /** + * Indentify the message type from TMsvEntry + * + * @param TMsvEntry& aEntry a entry item to identify + */ + TMsgType CalculateMessageType (const TMsvEntry& aEntry ); + + /** + * Gets the database observer class + */ + CCPixIndexer* GetIndexer(); //SPB { return iIndexer; } + /** + * MountL - Mount an IndexDB. + * @aMedia drive to mount. + * @aForceReharvesting to reharvest or not + */ + void MountL(TDriveNumber aMedia, TBool aForceReharvesting=EFalse); + + /** + * UnMount - Dismount a IndexDB for drive aMedia. + * @aMedia drive to unmount. + * @aUndefineAsWell if ETrue then undefine the volume as well + * + */ + void UnMount(TDriveNumber aMedia, TBool aUndefineAsWell = ETrue); + + /** + * FormBaseAppClass - constructs a baseAppClass for the given drive. + * @aMedia drive to form the baseAppClass for. + * @aBaseAppClass return descriptor containing the baseAppClass + * returns KErrNone on success or a standard error code + */ + static TInt FormBaseAppClass(TDriveNumber aMedia, TDes& aBaseAppClass); + + /** + * DatabasePathL - Forms IndexDb path. + * @param aMedia - The drive for which the path should be constructed. + * returns pointer to the IndexDb path. + */ + HBufC* DatabasePathLC(TDriveNumber aMedia); + + /** + * IsMediaRemovableL - Check media is removable or not. + * @param aDrive - The drive for which it is checked. + * returns ETrue if it is removable else EFalse. + */ + TBool IsMediaRemovableL(TDriveNumber& aDrive); + +public: + /* + * Notifies the indexing manager of completed harvesting, called by CMessageHarvester + */ + void HarvestingCompleted(TInt aError); + +protected: + CMessagePlugin(); + void ConstructL(); + +private: + // Session to Messge server session + CMsvSession* iMsvSession; + CMessageMonitor* iMessageMonitor; + CMessageHarvester* iMessageHarvester; + CMessageDataHandler* iMessageDataHandler; + + // File system session + RFs iFs; + //Currently used Drive by messaging application + TInt iCurrentDrive; + // CPix indexer + CCPixIndexer* iIndexer[EDriveZ+1]; // EDriveZ enum value is 25, so add 1. + +#ifdef __PERFORMANCE_DATA + TTime iStartTime; + TTime iCompleteTime; + void UpdatePerformaceDataL(); + void UpdatePerformaceDataL(TMsvSessionEvent); +#endif +}; + +#endif // CMESSAGEPLUGIN_H