--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/searchfw/plugins/notessearchplugin/inc/notessearcher.h Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,339 @@
+/*
+* 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_CNOTESSEARCHER_H
+#define C_CNOTESSEARCHER_H
+
+//System Includes
+#include <e32std.h>
+#include <d32dbms.h>
+#include <e32cmn.h>
+#include <badesca.h>
+
+//Search FW Common includes
+#include <searchcontent.h>
+#include <searchcontentsearcher.h>
+
+
+//Forwared declarations
+class CSearchCondition;
+class CSearchResult;
+class CSearchTextSearcher;
+class MSearchPluginObserver;
+class CNotesSearchPluginUtils;
+
+/**
+ * This class is the searcher class for the notes
+ *
+ * This class searches the phonebook notes
+ *
+ * @lib notessearchplugin.lib
+ */
+
+class CNotesSearcher : public CActive ,
+ public MSearchContentSearcher
+ {
+
+public: // Constructors and destructor
+ /**
+ *
+ * First phase construction
+ *
+ * @return constructed CNotesSearchPlugin object.
+ */
+ static CNotesSearcher* NewL(const RArray<TUid>& aContentIdArray,
+ const CSearchCondition& aCondition,
+ const TUid& aPluginId,
+ MSearchPluginObserver& aObserver );
+
+ /**
+ * Destructor.
+ *
+ */
+ virtual ~CNotesSearcher();
+
+ /**
+ * Check if the entry exists in notes
+ *
+ */
+ TBool CNotesSearcher::CheckIfEntryExistsL (TInt aNoteKey);
+ /**
+ * Cleanup internal resource
+ *
+ */
+ void CleanUp();
+
+
+
+
+public:// from MSearchContentSearcher interface
+
+ /**
+ * Search FW calls this function when it no longer needs this searcher.
+ *
+ */
+ void Destroy();
+
+
+ /**
+ * Starts the search. Progress of the search is notified through aObserver. Notice that
+ * this call must be asynchronous.
+ *
+ */
+ void SearchL( void);
+
+ /**
+ * Function returning ETrue when a search is ongoing. EFalse otherwise.
+ *
+ * @return ETrue when a search is ongoing. EFalse otherwise.
+ */
+ TBool IsSearching();
+
+ /**
+ * Cancels the ongoing search. This call must complete synchronously and no calls for
+ * observers must be made after this call.
+ *
+ */
+ void CancelSearch();
+
+ /**
+ * Gets the results got so far. A call to this function must flush the
+ * plugins internal buffer so that results returned by this call are not
+ * given twice.
+ * This is called in case the plugin fails to provide results to the framework
+ * through MSearchPlugInObserver in the time defined by the engine.
+ *
+ * @param aResults Results of the search process. Ownership transfers to caller.
+ */
+ void GetResultsL( const RPointerArray<CSearchDocumentId>& aDocumentIdArray );
+
+
+ /**
+ * Gets the current search progress. Typically this is called by the framework
+ * in case the plugin fails to provide results through MSearchPlugInObserver in the
+ * time defined by the framework.
+ *
+ * @param aContentClassId The content class, whose search progress is requested. If NULL, the function should return the
+ * total search progress.
+ * @param aCurrentDocument The index document that is currently being searched (from the set of documents belonging to given
+ * content class).
+ * @param aTotalDocuments The total count of documents to be searched (from the set of documents belonging to given
+ * content class).
+ */
+ void GetSearchProgressL( TUid& aContentClassId, TInt& aCurrentDocument, TInt& aTotalDocuments );
+
+ /**
+ * Cancels the result retrieval process.
+ *
+ */
+ void CancelResultsRetrieve();
+
+protected: //from the base class CActive
+
+ /**
+ * 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.
+ *
+ * Implements cancellation of an outstanding request.
+ */
+ void DoCancel();
+
+ /**
+ * From CActive
+ * If the RunL function leaves,
+ * then the active scheduler calls RunError() to handle the leave.
+ *
+ */
+ TInt RunError( TInt aError );
+
+
+private:
+ /**
+ * Does some initialization for database
+ */
+ void InitDbL();
+
+ /**
+ * Does the search of the note. Called from RunL. In one RunL call
+ * a limited number of note items are searched.
+ *
+ * @return ETrue if more note items need to be searched. EFalse otherwise.
+ */
+ TBool DoActualSearchL();
+
+ /**
+ * from MSearchTextSearcherObserver
+ * @param aKeywordCharPos keyword position
+ *
+ * @return void
+ */
+ void HitL( TInt aKeywordCharPos );
+
+ HBufC8* LaunchInfoL( const CSearchDocumentId& aDocumentID );
+ /**
+ * Gets the content and date by key value
+ *
+ * @param aKey
+ * @param aContentDes
+ * @param aTime
+ * @return void
+ */
+ void GetContentAndDateByKeyL(const TInt& aKey,HBufC*& aContentDes,TTime& aTime);
+
+private:
+
+ /**
+ * Constructor
+ *
+ *
+ * @param aPluginId
+ */
+ CNotesSearcher( const TUid& aPluginId);
+
+ /**
+ * 2nd phase constructor
+ *
+ * @param aContentIdArray
+ * @param aCondition
+ */
+ void ConstructL( const RArray<TUid>& aContentIdArray,
+ const CSearchCondition& aCondition,
+ MSearchPluginObserver& aObserver);
+
+
+
+ RPointerArray<CSearchLightResult> iSearchLightResult;
+ RPointerArray<CSearchResult> iHeavyResultsArray;
+
+protected:
+
+ enum TNotepadColumnType
+ {
+ ENotepadKey = 1, // this must be 1 (DBMS/SQL restriction)
+ ENotepadUpdateTime,
+ ENotepadMemo,
+ ENotepadColCountPlusOne // sentinel
+ };
+
+private: //Data members
+
+ /**
+ * The notes plugin id
+ */
+ const TUid iNotesPluginId;
+
+
+ /**
+ * Represents the DB status
+ */
+ TBool iSDbmsUp;
+
+ /**
+ * Represents a session with the DBMS server
+ */
+ RDbs iDbSession;
+
+ /**
+ * provides an interface for creating and opening a database identified by name and format.
+ */
+
+ RDbNamedDatabase iNamedDataBase; //
+
+ /**
+ * Provides a view to a table. The view depends on the SQL query used for building the view.
+ */
+ RDbView iDbView;
+
+ /**
+ * Counter used when reporting the status of the search.
+ */
+ TInt iStatusItemCounter;
+
+ /**
+ * Total number of items to be searched, used when reporting the status
+ * of the search.Set to KErrUnknown when the total number of items
+ * is not known in advance..
+ */
+ TInt iTotalNumOfItems;
+
+
+
+ /**
+ * The array containg the key word hit position
+ * Own
+ */
+ RArray<TInt> iKeyHitPos;
+
+
+ /**
+ * The plugin observer
+ */
+ MSearchPluginObserver* iObserver;
+
+ /**
+ * The Text searcher
+ * Own
+ */
+ CSearchTextSearcher* iTextSearcher; //own
+
+
+ /**
+ * The notes content
+ * Own
+ */
+ HBufC16* iContent;
+
+ /**
+ * The date format,read from the resource file
+ * Own
+ */
+ HBufC16* iDateFormat;
+ };
+
+
+#endif //C_CNOTESSEARCHER_H
+
+