diff -r d189ee25cf9d -r 3533d4323edc meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclslistshandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/inc/cesmrclslistshandler.h Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,242 @@ +/* +* Copyright (c) 2009 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: CLS lists handler class definition + * +*/ + +#ifndef CESMRCLSLISTSHANDLER_H +#define CESMRCLSLISTSHANDLER_H + +// INCLUDES +#include +#include // TContactItemId +#include // MDesCArray +#include +#include + +#include "cesmrclsitem.h" +#include "resmrstatic.h" + +// FORWARD DECLARATIONS +class CPSRequestHandler; +class CRepository; +class CESMRClsMatchObserver; +class CESMRInputModeObserver; +class MESMRClsListsObserver; +class CFSMailBox; +class RFs; +class CPsQuery; +class CVPbkContactManager; + +// CLASS DECLARATION +/** + * Handler for cls lists. Heavy array operations are wrapped here. + */ +NONSHARABLE_CLASS( CESMRClsListsHandler ) : public CBase + { +public: + /** + * Two-phased constructor. + * Creates a new instance of class + * + * @param aClsListObserver reference to lists observer object. + * @param aMailBox reference to current mailbox item + * @param aFs reference to file server session + * + * @return CESMRClsListsHandler instance + */ + static CESMRClsListsHandler* NewL( RFs& aFs, CVPbkContactManager* aContactManager ); + + /** + * Two-phased constructor. + * Creates a new instance of class and leaves it on the cleanupstack + * + * @param aClsListObserver reference to lists observer object. + * @param aMailBox reference to current mailbox item + * @param aFs reference to file server session + * + * @return CESMRClsListsHandler instance + */ + static CESMRClsListsHandler* NewLC( RFs& aFs, CVPbkContactManager* aContactManager ); + + /** + * Destructor. + */ + virtual ~CESMRClsListsHandler(); + +public: // new methods + /** + * Updates all the matching contact lists and informs the observer to update the view + * This method is for cls contact match observer to call. + * + * @param aMatches ids of all the matches so far. + */ + void UpdateContactMatchListsL( const RPointerArray& aMatches ); + + /** + * This method is for input mode observer to call. Set new input mode to both matchers + * + * @param aInputMode EItut if new input mode is predictive. EQwerty if multitap + */ + void InputModeChangedL( TKeyboardModes aNewInputMode ); + + /** + * Returns the text we are currently matching + * + * @return TDesC& reference to current search string + */ + const TDesC& CurrentSearchText(); + + /** + * Sets new search text and either starts a search or buffers the search + * request. + * + * @param aText new search text. + */ + void SearchMatchesL( const TDesC& aText ); + + /** + * Check if the input language is supported by search engine + */ + TBool IsLanguageSupportedL(); + + /** + * Sets a MESMRClsListsObserver + */ + void SetObserver( MESMRClsListsObserver* aClsListObserver ); + + /** + * Sets mailbox to be used + */ + void SetCurrentMailboxL( CFSMailBox* aMailBox ); + + /** + * handle operation errors + */ + void OperationErrorL( TInt aErrorCode ); + +protected: + /** + * C++ default constructor. + * + * @param aClsListObserver reference to lists observer object. + * @param aMailBox reference to current mailbox item + * @param aFs reference to file server session + */ + CESMRClsListsHandler( RFs& aFs, CVPbkContactManager* aContactManager ); + +private: + /** + * ConstructL + */ + void ConstructL(); + + /** + * Reads display name & email address from current match item index from the aTextArray + * and writes those informations to given clsitem + * + * @param aTextArray MRU list of display names and email addresses + * @param aClsItem new clsitem where the information is written + * @param aCurrentMatchIndex index of the display name or email address that matched the search + * @param aPreviousMatchIndex index of the previous match. This is for checking that the item + * has not been added to the match list yet + * + * @return TBool ETrue if current item was new match. EFalse if matched item was the same as previous match + */ + TBool ReadCLSInfoFromMRUListIndexL( MDesCArray& aTextArray, + CESMRClsItem& aClsItem, + const TInt aCurrentMatchIndex, + const TInt aPreviousMatchIndex ); + + /** + * Searches given cls item from the given list. If duplicate is found, it is returned. + * + * @param aClsItem cls item to be found from the list + * @param aContacts list of contacts + * + * @return index of the item, KErrNotFound if it doesn't exist + */ + TInt FindDuplicate( const CESMRClsItem& aClsItem, + RPointerArray& aContacts ); + + /** + * Appends all the matches item from contact db and mru list to one list, which is given to ui to draw. + * + * @param aContactMatchesWithEmail list of so far matched contacts with email address + * @param aMRUMatches list of so far matched MRU items + * @param aContactMatchesWithoutEmail list of so far matched contacts without email address + */ + RPointerArray ConstructOneListL( + const RPointerArray& aContactMatchesWithEmail, + const RPointerArray& aMRUMatches, + const RPointerArray& aContactMatchesWithoutEmail ); + + /** + * Creates new cls item and copies all the data from given cls item to the new item. + * + * @param aClsItem old cls item where the data is been copied. + * + * @return CESMRClsItem* pointer to the newly created cls item. Pointer is leaved to the + * cleanupstack as well. + */ + CESMRClsItem* CopyClsItemLC( const CESMRClsItem& aClsItem ); + + /** + * Constructs MRU datastore Uri for Mailbox + **/ + void GetMruDatastoreUriFromMailbox( CFSMailBox& aMailbox, HBufC& aUri ); + +private: // Implementation + void SetSearchSettingsForPcsMatchObserverL(); + +private: // data + // Three pointer array's for different lists + RPointerArray iMatchingCompleteContacts; + RPointerArray iMatchingMRUContacts; + RPointerArray iMatchingMissingEmailContacts; + + // owned + MDesCArray* iAllMRUContacts; + + // Pointer to the service instance, owned + CPSRequestHandler* iRequestHandler; + + // Pointer AknFep Central repository, owned + CRepository* iAknFepCenRep; + + //not owned + CVPbkContactManager* iContactManager; + + // Pointer to input observer, owned + CESMRInputModeObserver* iInputObserver; + + MESMRClsListsObserver* iClsListObserver; + //owned + CESMRClsMatchObserver* iPcsMatchObserver; + + // owned + HBufC* iSearchedText; + + // Pointer to actual contact database. + RFs& iFs; + + // Reference to current mailbox + CFSMailBox* iMailBox; + + TBool iRemoteLookupSupported; + }; + +#endif // CESMRCLSLISTSHANDLER_H + +// End of File