diff -r 000000000000 -r 8466d47a6819 ipsservices/ipssosplugin/inc/ipsplgtextsearcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipsservices/ipssosplugin/inc/ipsplgtextsearcher.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,309 @@ +/* +* Copyright (c) 2005-2008 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: This file defines classes MIpsPlgTextSearcherObserver, TIpsPlgKeywordSearchStatus, CIpsPlgTextSearcher +* +*/ + + +#ifndef IPSPLGTEXTSEARCHER_H +#define IPSPLGTEXTSEARCHER_H + +// INCLUDE FILES +// Removed for 3.2 +//#include +// Removed for 3.2 +//#include + +// FORWARD DECLARATIONS + +class MIpsPlgTextSearcherObserver + { + public: + /** + * Called from the text searcher when all search criteria are met. + * + * @param aSnippet The snippet + * @param aSnippetCharPos The character position of the keyword + * match within the snippet + * @param aStartIncomplete Indicates that the snippet start is + * incomplete + * @param aEndIncomplete Indicates that the snippet end is + * incomplete + */ + virtual void HitL( + const TDesC& aSnippet, + TInt aSnippetCharPos, + TBool aStartIncomplete, + TBool aEndIncomplete ) = 0; + }; +/** +* Original class TKeywordSearchStatus +* from . Replaced +* for 3.2 version +* Search status belonging to a single search keyword. +*/ +class TIpsPlgKeywordSearchStatus + { + public: + // Boolean indicating whether this keyword has been found + TBool iFound; + + // Integer indicating in what wordposition this keyword was found + TInt iFoundAsNthWord; + }; + +/** +* Original enum used TIdsCriteriaOperation from +* Replaced for 3.2 version +*/ +// Binary operators for the search criteria. +enum TIpsPlgCriteriaOperation + { + EIpsPlgCriteriaOperationAND, + EIpsPlgCriteriaOperationOR, + EIpsPlgCriteriaOperationNOT + }; + +/** +* Class handling the search of several keywords in a block of text. +* A hit is informed via the MIpsPlgTextSearcherObserver. +* +* Data/text can be supplied in steps and does not need to be known in advance. +*/ +NONSHARABLE_CLASS( CIpsPlgTextSearcher ) : public CBase + { + public: // Constructors and destructor + /** + * Symbian OS 2 phased constructor. + * + * @param aObserver Text searcher's observer + * + * @return A pointer to the created instance of CIpsPlgTextSearcher. + */ + static CIpsPlgTextSearcher* NewL( + MIpsPlgTextSearcherObserver& aObserver ); + + /** + * Symbian OS 2 phased constructor + * + * @param aObserver Text searcher's observer + * + * @return A pointer to the created instance of CIpsPlgTextSearcher. + */ + static CIpsPlgTextSearcher* NewLC( + MIpsPlgTextSearcherObserver& aObserver ); + + /** + * Destructor. + */ + virtual ~CIpsPlgTextSearcher(); + + public: // New functions + /** + * Cleans up internal data. Must be called before each new search + * is started. Does not clean up the parameters set via SetParametersL. + * + * When same search parameters are needed with different search text, + * call Cleanup but not SetParametersL. + */ + void Cleanup(); + + /** + * Sets the search parameters for the search. + * + * @param aKeywords Keywords for the search. + * @param aOperator Determines the operation for the search + * (AND, OR, ...) + * @param aCaseSensitive Flag indicating case sensitivity + * @param aRecommendedSnippetLength Recommended snippet length. + */ + void SetParametersL( + const CDesCArray& aKeywords, + TIpsPlgCriteriaOperation aOperator, + TBool aCaseSensitive, + TInt aRecommendedSnippetLength ); + + /** + * Starts the text search with the previous supplied parameters set + * by SetParametersL. 16 bit version. + * + * @param aToBeSearchedDes 16 bit descriptor to be searched. + * @return ETrue when a hit was found. EFalse otherwise. + */ + TBool SearchL( const TDesC& aToBeSearchedDes ); + + /** + * Starts the text search with the previous supplied parameters set by + * SetParametersL. 8 bit version. + * + * @param aToBeSearchedDes 8 bit descriptor to be searched. + * @return ETrue when a hit was found. EFalse otherwise. + */ + TBool SearchL( const TDesC8& aToBeSearchedDes ); + + private: // New functions + /** + * Compares the to be searched string with the list of keywords. + * 16 bit version. + * + * @param aToBeSearchedDes Text to be searched. + * @param aKeywords Array of keywords to be matched. + * @param aKeywordSearchStatusArray Array storing the search result + * for each individual search keyword + * @param aOperator Determines the operation for + * the search (AND, OR, ...) + * @param aCaseSensitive Flag indicating case sensitivity + * + * @return ETrue when a hit was found. EFalse otherwise. + */ + TBool DoStringCompareWithKeywordsL( + const TDesC& aToBeSearchedDes, + const CDesCArray& aKeywords, + RArray& aKeywordSearchStatusArray, + TIpsPlgCriteriaOperation aOperator, + TBool aCaseSensitive ); + + /** + * Compares the to be searched string with the list of keywords. + * 8 bit version. + * + * @param aToBeSearchedDes Text to be searched. + * @param aKeywords Array of keywords to be matched. + * @param aKeywordSearchStatusArray Array storing the search result + * for each individual search keyword + * @param aOperator Determines the operation for + * the search (AND, OR, ...) + * @param aCaseSensitive Flag indicating case sensitivity + * + * @return ETrue when a hit was found. EFalse otherwise. + */ + TBool DoStringCompareWithKeywordsL( + const TDesC8& aToBeSearchedDes, + const CDesC8Array& aKeywords, + RArray& aKeywordSearchStatusArray, + TIpsPlgCriteriaOperation aOperator, + TBool aCaseSensitive ); + + /** + * Creates the snippet from the 1st found keyword. 16 bit version. + * + * @param aToBeSearchedDes Text that was searched. + * @param aSnippetCharPos The character position of the keyword match + * within the snippet + * @param aStartIncomplete Indicates that the snippet start is + * incomplete + * @param aEndIncomplete Indicates that the snippet end is incomplete + * + * @return A pointer to the newly created snippet. + */ + HBufC* CreateSnippetLC( + const TDesC& aToBeSearchedDes, + TInt& aSnippetCharPos, + TBool& aStartIncomplete, + TBool& aEndIncomplete ) const; + + /** + * Creates the snippet from the 1st found keyword. 8 bit version. + * + * @param aToBeSearchedDes Text that was searched. + * @param ASnippetCharPos The character position of the keyword match + * within the snippet + * @param aStartIncomplete Indicates that the snippet start is + * incomplete + * @param aEndIncomplete Indicates that the snippet end is incomplete + * @return A pointer to the newly created snippet. + */ + HBufC* CreateSnippetLC( + const TDesC8& aToBeSearchedDes, + TInt& aSnippetCharPos, + TBool& aStartIncomplete, + TBool& aEndIncomplete ); + + /** + * Makes a conversion from unicode + * + * @param aFs Reference to a file session + * @param aUnicodeSource Source text to be converted + * @param aTargetEncoding The UID of the non-Unicode character set from + * or to which to convert. + * @return Converted non-unicode descriptor + */ + HBufC8* ConvertFromUnicodeL( + RFs& aFs, + const TDesC16& aUnicodeSource, + TUint aTargetEncoding ); + + /** + * Makes a conversion into unicode + * + * @param aFs Reference to a file session. + * @param aSource Source text to be converted. + * @param aSourceEncoding The UID of the non-Unicode character set + * from or to which to convert. + * @return Converted unicode descriptor + */ + HBufC16* ConvertToUnicodeL( + RFs& aFs, + const TDesC8& aSource, + TUint aSourceEncoding ); + + private: // More constructors + /** + * Performs the first phase of two phase construction. + * + * @param aObserver Text searcher's observer + */ + CIpsPlgTextSearcher( MIpsPlgTextSearcherObserver& aObserver ); + + /** + * Performs the second phase construction. + */ + void ConstructL(); + + + private: + // A file session for the unicode converter + RFs iRFs; + + // Text searcher's observer + MIpsPlgTextSearcherObserver& iObserver; + + // Array that contains 16 bit keywords to search. Not owned + const CDesCArray* iSearchKeywords; + + // Array that contains 8 bit versions from keywords to search + // These are copied from the 16bit version when search is done in text + // that is available in 8 bit format + CDesC8ArrayFlat* iSearchKeywords8; + + // Determines the operation for the search (AND, OR, ...) + TIpsPlgCriteriaOperation iOperator; + + // Flag indicating case sensitivity + TBool iCaseSensitive; + + // Flag indicating whether search parameters where set. + TBool iHaveParameters; + + // Array storing the search result for each individual search keyword + RArray iKeywordSearchStatusArray; + + // Character position of the 1st keyword match + TInt iFirstMatchKeywordCharPos; + + // Recommended snippet length. + TInt iSearchResultRecommendedSnippetLength; + }; + +#endif // IPSPLGTEXTSEARCHER_H