diff -r 5aadd1120515 -r b57382753122 searchfw/plugins/multimediaplugin/inc/multimediasearcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/searchfw/plugins/multimediaplugin/inc/multimediasearcher.h Wed Nov 03 17:12:22 2010 +0530 @@ -0,0 +1,416 @@ +/* +* Copyright (c) 2006-2007 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: ECom search interface definition +* +*/ + + + + + +#ifndef C_CMULTIMEDIASEARCHER_H +#define C_CMULTIMEDIASEARCHER_H + +//SYSTEM INCLUDES +#include +#include +#include +#include +#include +#include +#include + +//FORWARD DECLARATION +class CSearchTextSearcher; +class MSearchPluginObserver; +class MSearchPluginObserver; +class MCLFOperationObserver; +class MCLFItemListModel; +class MCLFContentListingEngine; + + +/** + * This class is the searcher class for the multimedia items (music/videos/images) + * + * This class searches the multimedia using the Content listing framework + * of the mediagallery2 + * + * @lib multimediasearchplugin.lib + */ +class CMultimediaSearcher : public CActive, + public MSearchContentSearcher, + public MCLFOperationObserver + +{ + public: + + /** + * 1st phase constructor + * + + * + * @param aContentIdArray - content id + * @param aCondition - condition + * @param aPluginId - Implementation id + * @return returns pointer to the constructed object of type CContactsSearcher + */ + static CMultimediaSearcher* NewL( const RArray& aContentIdArray, + const CSearchCondition& aCondition, + const TUid& aPluginId, + MSearchPluginObserver& aObserver ); + + /** + * Destructor + */ + virtual ~CMultimediaSearcher(); + + + /** + * Sets the value of iCurrentContentClassUid + * + * + * @param aSearchClassUid + */ + void SetContentClassUid(const TUid aSearchClassUid); + + /** + * Sets the value of iCurrentMediaTypeToBeUsed + * + * + * @param aMediaType - Type of media i.e music/image/video + */ + void SetMediaType(TCLFMediaType aMediaType); + + /** + * Gets the complete file path corresponding to the index in the iCompleteFilePathArray + * + * + * @param aIndex - Index in the iCompleteFilePathArray + */ + HBufC* GetFilePathArrayIndexValue(TInt aIndex); + + public: //from base class MSearchContentSearcher + /** + * From MSearchContentSearcher + * Releses the object. + * + */ + void Destroy(); + + + /** + * From MSearchContentSearcher + * Starts the search. Progress of the search is notified through aObserver. + * Notice that this call must be asynchronous. + * + * @param aObserver Observer for search progress. + */ + void SearchL(); + + /** + * From MSearchContentSearcher + * Function returning ETrue when a search is ongoing. EFalse otherwise. + * + * @return ETrue when a search is ongoing. EFalse otherwise. + */ + TBool IsSearching(); + + /** + * From MSearchContentSearcher + * Cancels the ongoing search. This call must complete synchronously and no calls for + * observers must be made after this call. + * + */ + void CancelSearch(); + + /** + * From MSearchContentSearcher + * Gets the results indicated by the given document ids. Asynchronous. Results will be given + * through callback in MSearchPlugInObserver given in Search request. + * + * @param aResults Results of the search process. Ownership transfers to caller. + */ + void GetResultsL( const RPointerArray& aDocumentIdArray ); + + /** + * From MSearchContentSearcher + * Cancels the result retrieval process. + * + */ + void CancelResultsRetrieve(); + + /** + * From MSearchContentSearcher + * Gets the current search progress. + * + * @param aContentClassId On return contains the content class id, which is currently searched. + * @param aCurrentDocument On return contains the index document that is currently being searched. + * @param aTotalDocuments On return contains the total count of documents to be searched. + */ + void GetSearchProgressL( TUid& aContentClassId, TInt& aCurrentDocument, TInt& aTotalDocuments ); + + + /** + * From MSearchContentSearcher , through MSearchTextSearcherObserver + * Called when all search criteria are met. + * + * @param aCharPos The character position of the keyword match within the original text. + */ + void HitL( TInt aCharPos ); + + + HBufC8* LaunchInfoL( const CSearchDocumentId& aDocumentID ); + + public: // from base class MCLFOperationObserver + + /** + * Method to get list model operation events. This method is + * called when an event is received. + * @param aOperationEvent Operation event code of the event + * @param aError System wide error code if the operation did not + * succeed. + */ + void HandleOperationEventL( TCLFOperationEvent aOperationEvent, + TInt aError ) ; + + protected: // From base class CActive + + /** + * From CActive + * Implements cancellation of an outstanding request. + * + * This function is called as part of the active object's Cancel(). + */ + void DoCancel() ; + + /** + * From CActive + * Handles an active object's request completion event. + * + * The function is called by the active scheduler when a request + * completion event occurs, i.e. after the active scheduler's + * WaitForAnyRequest() function completes. + * + * Before calling this active object's RunL() function, the active scheduler + * has: + * + * 1. decided that this is the highest priority active object with + * a completed request + * + * 2. marked this active object's request as complete (i.e. the request is no + * longer outstanding) + * + * RunL() runs under a trap harness in the active scheduler. If it leaves, + * then the active scheduler calls RunError() to handle the leave. + * + * Note that once the active scheduler's Start() function has been called, + * all user code is run under one of the program's active object's RunL() or + * RunError() functions. + * + */ + void RunL(); + + + /** + * From CActive + * If the RunL function leaves, + * then the active scheduler calls RunError() to handle the leave. + * + */ + TInt RunError( TInt aError ); + + + + +private: + + /** + * Constructor + * + * + * @param aPluginId + */ + CMultimediaSearcher( const TUid& aPluginId ); + + + /** + * 2nd phase constructor + * + * @param aContentIdArray + * @param aCondition + */ + void ConstructL( const RArray& aContentIdArray, + const CSearchCondition& aCondition ,MSearchPluginObserver& aObserver); + + /** + * Notifies the observer about the search complete + * + * + */ + void ReportFinishedL(); + + /** + * Cleans up the memory held + * + * + */ + void CleanUp(); + + /** + * Does actual search + * + * + */ + TBool DoActualSearchL(); + + /** + * Searches Music,Video and Image files from the Media Gallery + * + * + */ + void SearchMediaL(); + + /** + * Creates Search Data for Videos for one Media Gallery item + * + * + * @param aItem - the multimedia item + */ + TBool FetchSearchDataForVideosL(const MCLFItem& aItem); + + /** + * Creates Search Data for Image Files for one Media Gallery item + * + * + * @param aItem - the multimedia item + */ + TBool FetchSearchDataForImagesL(const MCLFItem& aItem); + + /** + * Creates Search Data for Music files for one Media Gallery item + * + * @param aItem - the multimedia item + */ + TBool FetchSearchDataForMusicL(const MCLFItem& aItem); + + + +private: + /** + * Text searcher + * Own. + */ + CSearchTextSearcher* iTextSearcher; + + /** + * Search Plugin Observer + * Own. + */ + MSearchPluginObserver* iObserver; + + + /** + * The plugin id + */ + TUid iPluginId; + + /** + * Number of multimedia items searched + */ + TInt iTotalNumOfItemsSearched; + + /** + * Total number of successfull hits + */ + TInt iTotalHits; + + /** + * The title and snippet buffer + */ + HBufC* iCurrentTitle; + HBufC8* iCurrentSnippet; + + + /** + * Flags for multimedia operations + */ + TBool iAllMultimediaFilesSearched; + TBool iSearchAlreadyStarted; + TBool iRefreshStarted; + TBool iRefreshDone; + TBool iCancelSearch; + + /** + * The content listing framework engine + * Own. + */ + + /** + * some data required for local use + */ + RFs ifSession; + TUid iCurrentContentClassUid; + TCLFMediaType iCurrentMediaTypeToBeUsed; + MCLFContentListingEngine* iCLFengine ; + HBufC* iCompletefilePath; + + + /** + * The caption for "Kilobyte", read from the resource file + * Own + */ + HBufC8* iSizeKiloBytes; + + /** + * The caption for "Bytes", read from the resource file + * Own + */ + HBufC8* iSizeBytes; + + /** + * The content listing framework modes + * Own. + */ + MCLFItemListModel* iCLFmodel; + + /** + * The mime type array used for searching multimedia item from CLF + * Own. + */ + CDesCArray* iMimeTypeArray; + + /** + * The data to be searched + * Own. + */ + HBufC* iDataToSearch; + + /** + * The array containing the complete path of the multimedia item + * Own. + */ + RPointerArray iCompleteFilePathArray; + + /** + * The heavy results array + + */ + RPointerArray iHeavyResultsArray; +}; + +#endif //C_CMULTIMEDIASEARCHER_H + + + +