diff -r 000000000000 -r 8466d47a6819 ipsservices/ipssossettings/inc/ipssetuifinder.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipsservices/ipssossettings/inc/ipssetuifinder.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,319 @@ +/* +* Copyright (c) 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: Decleares class for tree structure searching. +* +*/ + + +#ifndef IPSSETUIITEMFINDER_H +#define IPSSETUIITEMFINDER_H + +#include + +#include "ipssetuiitembase.h" +#include "ipssetuifinderinterface.h" + +class CIpsSetUiItem; + + +/** + * Class to find item(s) from the setting tree + * + * @lib IpsSosSettings.lib + * @since FS v1.0 + */ +class CIpsSetUiFinder : public CBase + { +public: + +// Constructors and destructor + + /** + * Destructor + */ + ~CIpsSetUiFinder(); + + /** + * @param aObserver Observer for search operation. + * @return New finder object. + */ + static CIpsSetUiFinder* NewL( + MIpsSetUiFinder& aObserver ); + + /** + * @param aObserver Observer for search operation. + * @return New finder object. + */ + static CIpsSetUiFinder* NewLC( + MIpsSetUiFinder& aObserver ); + +// New functions + + /** + * Set method to member iSearchFlags + * @param aSearchFlags, Sets value of iSearchFlags + */ + void SetSearchFlags( const TUint64& aSearchFlags ); + + /** + * Get function for member iSearchFlags + * @return value of iSearchFlags + */ + TUint64 SearchFlags() const; + + /** + * + * @param aItemArray Array to be searched. + */ + void StartSearchL( + CIpsSetUiBaseItemArray& aItemArray, + const TUid& aId ); + + /** + * + * @param aItemArray Array to be searched. + * + */ + void StartSearchL( + CIpsSetUiBaseItemArray& aItemArray, + const TInt aItem ); + + /** + * Get function for member iFinderArray + * @return value of iFinderArray + */ + CIpsSetUiFinderArray* FinderArray() const; + + /** + * Gets the copy of finder array and saves it to stack + * @return value of iFinderArray + */ + CIpsSetUiFinderArray* FinderArrayLC() const; + +private: + +// Constructors + + /** + * Constructor + * + * @param aObserver Observer for search operation. + */ + CIpsSetUiFinder( + MIpsSetUiFinder& aObserver ); + + /** + * 2nd phase constructor + */ + void ConstructL(); + +// New functions + + /** + * Prepare for search. + * + * @param aNth Start from nth item in the array. + */ + void InitializeSearchL( const TInt aNth ); + + /** + * Clear all internal data. + */ + void FinalizeSearchL(); + + /** + * Check, if the search criterias have been met. + * + * @param aCurrentItem Index of the current item + * @param aMaxItems Maximum number of items in the array. + * @return ETrue, when the search should be continued. + */ + TBool ContinueSearch( + const TInt aCurrentItem, + const TInt aMaxItems ); + + /** + * @return ETrue, when the item fills the search criterias. + */ + TBool SearchingItem(); + + /** + * Adds new branch to search array. + */ + void ItemToArrayL(); + + /** + * Item check for ID search algorithm. + * + * @param aId Id to be searched + */ + void ItemCheckL( const TUid& aId ); + + /** + * Item check for index search algorithm. + */ + void ItemCheckL(); + + /** + * @return ETrue, when item doesn't have container for other items. + */ + TBool ItemSubArrayCheck(); + + /** + * @return ETrue, when search criterias are not met. + */ + TBool ContinueSubSearch(); + + /** + * Intelligence to search the ID from the subarrays. + * + * @param aId Id to be searched + */ + void DoIdSearchSubArraysL( const TUid& aId ); + + /** + * Intelligence to search index from the sub arrays. + */ + void DoIndexSearchSubArraysL(); + + /** + * Stops the search opertion. + */ + void DoEndSearch(); + + /** + * Main intelligence to search ID from the tree. + * + * @param aItemArray Array to be searched. + * @param aId Id to be searched + */ + void DoIdSearchL( + CIpsSetUiBaseItemArray& aItemArray, + const TUid& aId ); + + /** + * Main intelligence for index search. + * @param aItemArray Array to be searched. + */ + void DoIndexSearchL( CIpsSetUiBaseItemArray& aItemArray ); + + /** + * Searches for the item from the array based on the id. + * + * @param aItemArray Array, which may contain the item. + * @param aId Id to be searched + */ + void SearchIdFromTreeL( + CIpsSetUiBaseItemArray& aItemArray, + const TUid& aId ); + + /** + * Searches for the item's index from the given array. + * + * @param aItemArray Array to be searched. + */ + void SearchIndexFromTreeL( + CIpsSetUiBaseItemArray& aItemArray ); + + /** + * @return ETrue, when item is hidden. Otherwise EFalse. + */ + TBool IsHidden(); + + /** + * Check wheter searching has met the conditions to finish itself. + */ + void SearchShouldStop(); + +public: + +// Data + + /** Flags to control finder's search routine. */ + enum TIpsSetUiFinderFlags + { + // Following flags are for set up the search + + // When enabled, user defined check is made + EFinderCustomCheck = 0x001, + // Includes subfolders in search + EFinderSearchSubFolders = 0x002, + // Overrides the item spesific tests for one round + EFinderOverrideChecks = 0x004, + // Hidden items will not be included into the search + EFinderDoHideCheck = 0x008, + // Searches for resources instead of item + EFinderResourceSearch = 0x010, + // Goes through whole array regardless of hits + EFinderSearchAll = 0x020, + // Keeps the last search result in memory + EFinderKeepLastResult = 0x040, + // Searches items that doesn't match the set + EFinderExlusiveSearch = 0x080, + // The result tree's ownership is moved to client + EFinderMoveOwnership = 0x100, + + // Following flags are mainly for internal use + EFinderItemFound = 0x200, + EFinderItemFindError = 0x400, + EFinderExit = 0x800 + }; + +private: + +// Data + + + /** + * Observer for search operation. + */ + MIpsSetUiFinder& iObserver; + + /** + * Flags to control the finder + */ + TUint64 iSearchFlags; + + /** + * Container for subarrays. + * Owned. + */ + CIpsSetUiBaseItemArray* iSubArrays; + + /** + * Temporary item storage. + * Not owned. + */ + CIpsSetUiItem* iTempItem; + + /** + * Starting point as index for search. + */ + TInt iSearchItem; + + /** + * Current item index, used for passing forward + */ + TInt iCurrentItem; + + /** + * Container for search results. + * Owned. + */ + CIpsSetUiFinderArray* iFinderArray; + }; + +#endif // IPSSETUIITEMFINDER_H + +// End of File