--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiprocess/Inc/CCASearchInterfacePC.h Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,387 @@
+/*
+* Copyright (c) 2006 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: Implementation for PC Search Interface
+*
+*/
+
+
+#ifndef CCASEARCHINTERFACEPC_H
+#define CCASEARCHINTERFACEPC_H
+
+
+// INCLUDES
+#include "MCASearchInterfacePC.h"
+#include "MCABackgroundObserver.h"
+
+
+// FORWARD DECLARATIONS
+class MCASearchBackgroundObserverPC;
+class MCASearchInterface;
+class MCASearchObserverInterfacePC;
+class MCAGroupManagerInterface;
+class MCAStoredGroups;
+
+
+//class declaration
+/**
+ * Implementation class for Search Interface for the UI.
+ *
+ * @lib wvuiprocessng.lib
+ * @since 3.2
+ */
+class CCASearchInterfacePC: public CBase,
+ public MCASearchInterfacePC,
+ public MCABackgroundObserver
+
+ {
+
+ public:
+
+ /**
+ * Symbian Two Phase Constructor
+ * @param aSearchInterface : a reference to search interface in the chat engine
+ * @param aBackgroundInterface : a ref. to background interface in the chat engine
+ * @param groupMgrInterface : a ref. to group manager interface in the chat engine
+ */
+ static CCASearchInterfacePC* NewL( MCASearchInterface* aSearchInterface ,
+ MCABackgroundInterface& aBackgroundInterface,
+ MCAGroupManagerInterface& groupMgrInterface );
+
+
+ /**
+ * virtual destructor
+ */
+ virtual ~CCASearchInterfacePC();
+
+ private:
+ /**
+ * default constructor
+ * @param aSearchInterface : a reference to search interface in the chat engine
+ * @param aBackgroundInterface : a ref. to background interface in the chat engine
+ */
+
+
+ CCASearchInterfacePC( MCASearchInterface* aSearchInterface,
+ MCABackgroundInterface& aBackgroundInterface,
+ MCAGroupManagerInterface& groupMgrInterface );
+
+ /**
+ * constructor
+ * @since 3.2
+ */
+ void ConstructL();
+
+ public:
+
+ /**
+ * Find any contact which id is aContactId
+ * @param aContactId Contactid to recognize contact.
+ * @return ETrue if contact found else EFalse
+ */
+ TBool FindAnyContactL( const TDesC& aContactId );
+
+ /**
+ * To convert the engine side TCABackgroundTasks enum to PC side TEnumsPC
+ * @param aEventSource: enum type in engine MCABackgroundInterface::TCABackgroundTasks
+ * @return TEnumsPC::TCABackgroundTasks
+ */
+ TEnumsPC::TCABackgroundTasks ConvertTCABackgroundTasksToTEnumsPC
+ ( MCABackgroundInterface::TCABackgroundTasks aEventSource );
+
+ /**
+ * To convert the engine side TCABackgroundStatus enum to PC side TEnumsPC
+ * @param aEventSource: enum type in engine MCABackgroundInterface::TCABackgroundStatus
+ * @return TEnumsPC::TCABackgroundStatus
+ */
+ TEnumsPC::TCABackgroundStatus ConvertTCABackgroundStatus
+ ( MCABackgroundInterface::TCABackgroundStatus aStatus );
+
+ /**
+ * To convert the PC Side TEnumsPC::TCABackgroundTasks enum to Engine side TCABackgroundStatus
+ * @param aSource: enum type in process TEnumsPC::TCABackgroundStatus
+ * @return enum type in engine MCABackgroundInterface::TCABackgroundStatus
+ */
+ MCABackgroundInterface::TCABackgroundTasks ConvertToTCABackgroundTasks
+ ( TEnumsPC::TCABackgroundTasks aSource );
+
+ /**
+ * To convert the PC Side TSearchCriteria enum to IMEngine side TImpsSearchElement
+ * @param aElement: enum type in process TEnumsPC::TSearchCriteria
+ * @return enum type in IMEngine TImpsSearchElement
+ */
+ TImpsSearchElement CCASearchInterfacePC::
+ ConvertToTImpsSearchElement( TEnumsPC::TSearchCriteria aElement );
+
+ /**
+ * @return a CSearchPairs pointer
+ */
+ CSearchPairs* SearchPairs();
+
+ /**
+ * set search pairs
+ * @param aCount: specifies the number of elements
+ * in the array iSearchPairs that has to be constructed
+ */
+ void SetSearchPairsL( TInt aCount );
+
+ /**
+ * @return ETrue if iSearchPairs is not null
+ */
+ TBool IsSearchPairsSet();
+
+ /**
+ * @return SearchString -string to be searched
+ */
+ HBufC* GetSearchStringLC();
+
+ /**
+ * Builds the search pairs and sets the search requestSet values.
+ * This allocates memory and copies aValue to its internal data storage.
+ * @param aSearchCriteriaArray specifies list of search criterias (search keys)
+ * @param aSearchStringArray specifies array of strings to be searched(search values)
+ */
+
+ void SetRequestL( RArray<TEnumsPC::TSearchCriteria>& aSearchCriteriaArray,
+ CDesCArray& aSearchStringArray );
+ public://From MCABackgroundObserver
+
+ /**
+ * Call if an event happend that match registered task and event mask.
+ * @param aEventSource is the source of event
+ * @param aStatus is the status of the background task
+ * @param aSubTaskNumber is the number of subtask
+ * @param aLeaveCode is the leave code of the task/subtask
+ */
+ void HandleBackgroundEvent(
+ MCABackgroundInterface::TCABackgroundTasks aEventSource,
+ MCABackgroundInterface::TCABackgroundStatus aStatus,
+ TInt aSubTaskNumber,
+ TInt aLeaveCode
+ );
+
+ public://From MCASearchInterfacePC
+
+ /**
+ * @see MCASearchInterfacePC
+ * To add the UI side observer for MCASearchObserverInterfacePC
+ * events from the engine.
+ */
+ void AddObserver( MCASearchObserverInterfacePC* aObserver );
+
+ /**
+ * @see MCASearchInterfacePC
+ * To remove the UI side observer for MCASearchObserverInterfacePC
+ * events from the engine.
+ */
+ void RemoveObserver();
+
+ /**
+ * Registers observer for background task
+ * @param aBackgaBackgroundObserver pointer of instance of UI component
+ * @param aTaskMask is an AND mask for task requested,
+ * @param aEventMask is an AND mask for events requested,
+ * @return KErrNone on success, system wide error code otherwise
+ */
+ TInt RegisterBackgroundObserver(
+ MCASearchBackgroundObserverPC* aBackgroundObserver,
+ TInt aTaskMask,
+ TInt aEventMask );
+
+ /**
+ * Removes observer from the queue
+ * @param aBackgroundObserver pointer of instance to remove
+ */
+ void UnRegisterBackgroundObserver(
+ MCASearchBackgroundObserverPC* aBackgroundObserver );
+
+ /**
+ * @param aTaskID is an id of a background task
+ * @retrun status of the background task or KErrNotFound
+ */
+ TInt BackgroundTaskStatus( TEnumsPC::TCABackgroundTasks aTaskID );
+
+ public:
+
+ /**
+ * @see MCASearchObserverInterface::HandleSearchError
+ */
+ void HandleSearchError( TInt aErrorCode );
+ /**
+ * @see MCASearchObserverInterface::HandleSearchFinished
+ */
+ void HandleSearchFinished( );
+
+
+ public:
+
+ /**
+ * @see MCASearchInterfacePC
+ * Start the search.
+ * @param aSearchLimit defines how many results you want.
+ * @param aObserver The observer for this search operation
+ * @param aSearchPairs Pairs to be searched
+ * @return Error code.
+ * Leaves
+ * ESearchNotSupported
+ */
+ TInt StartSearchL( TInt aSearchLimit,
+ MCASearchObserverInterfacePC* aObserver,
+ CSearchPairs* aSearchPairs = NULL ) ;
+
+ /**
+ * @see MCASearchInterfacePC
+ * Stops the current search. Must be called before starting new search.
+ * @return Error code.
+ * Leaves
+ * ESearchNotSupported
+ */
+ TInt EndSearchL() ;
+
+ /**
+ * @see MCASearchInterfacePC
+ * Continues search. This function must only be called when more results
+ * are wanted.
+ * @param aIndex specifies the next index where to start search.
+ * @param aObserver The observer for this search operation
+ * @return Error code.
+ * Leaves
+ * ERequestedResultsButNotAvailable
+ * ESearchNotSupported
+ */
+ TInt SearchNextL( TInt aIndex, MCASearchObserverInterfacePC* aObserver ) ;
+
+ /**
+ * Gets the properties of group
+ * @param The group id
+ * @param aCommonProps Common group properties
+ * @param aPrivateProps Private group properties
+ * @return CSP error code
+ */
+ virtual TEnumsPC::TImpsCSPAllErrors GetPropertiesL( const TDesC& aGroupId,
+ CImpsCommonGroupProps*& aCommonProps,
+ CImpsPrivateGroupProps*& aPrivateProps
+ );
+
+ /**
+ * To set the groupname of the group whose id is aGroupId
+ * @param aGroupId: id of the group whose name has to be set
+ * @param aGroupName: name of the group to be set
+ */
+ virtual void SetGroupNameL( const TDesC& aGroupId, const TDesC& aGroupName );
+
+ /**
+ * To create a group with group id aGroupId
+ * @param aGroupId: id of the group to be created
+ */
+ virtual void CreateGroupL( const TDesC& aGroupId );
+
+ /**
+ * To save the changes made to a groups properties and make it persistent. Once this is done
+ * the isFavorite property of the group will always return true.
+ * @param aGroupId: id of the group which has to be saved
+ */
+ virtual void SaveChangesL( const TDesC& aGroupId );
+
+ /**
+ * To populate the two arrays of group names and goup ids
+ * @param aGroupNames: array of the current group names
+ * @param aGroupIds: array of the current group IDs
+ */
+ virtual MCAServerContactsArrayPC* GetPairArrayForServerContactsArrayLC() ;
+
+ /**
+ * To set the groupname of the group whose id is aGroupId
+ * @param aGroupId: id of the group which has to be searched for
+ * @param bool : returns true if the group with aGroupId is found else returns false
+ */
+ virtual TBool FindGroup( const TDesC& aGroupId );
+
+ /**
+ * Delete the given group
+ * @param aGroupId The group id of the group to delete
+ * @param aDeleteFromNetwork Defines whether the group should
+ * be deleted also from network server or not
+ * @return The errorcode
+ */
+ virtual TInt DeleteGroupL( const TDesC& aGroupId, TBool aDeleteFromNetwork );
+
+ /**
+ * To get the groupname of the group whose id is aGroupId
+ * @param aGroupId: of the group whose name has to be set
+ * @param aHasCommonProps: Returned by reference. True if the group has common group properties
+ * else return false
+ * @param aImpsError: return by reference. Return the error code if any.
+ */
+ virtual TPtrC GetGroupNameL( const TDesC& aGroupId, TBool& aHasCommonProps,
+ TEnumsPC::TImpsCSPAllErrors& aImpsError );
+ /*
+ * Get the storage type of this group and check if it is a persistent grp.
+ * If the group is marked as favourite, then it will be persistent
+ * @return ETrue if favourite else EFalse
+ */
+ virtual TBool IsFavouriteChatGroup( const TDesC& aGroupId ) const;
+
+
+ /*
+ * Get the total no. of groups the user has joined too'.
+ */
+ virtual TInt JoinedGroups();
+
+ private:
+
+ /*
+ * To convert the imps error code to the TEnumsPC type to pass in to the UI.
+ * @param integer imps error code
+ * @return TImpsCSPAllErrors specified in TEnumsPC
+ */
+ TEnumsPC::TImpsCSPAllErrors ConvertImpsErrorToUiEnums( TInt aImpsError );
+
+ private:
+
+ /**
+ * iDataInterface: a reference to searchdata interface in the chat engine
+ */
+ MCASearchInterface* iSearchInterface;
+
+ /**
+ * Does not own, do not delete
+ * iSearchObserverPC: a reference to the observer for events
+ * from MCASearchInterfacePC. MCASearchInterfacePC inturn receives
+ * the actual engine events from MCASearchObserverInterface.
+ */
+ MCASearchObserverInterfacePC* iSearchObserverPC;
+
+ /**
+ * Pointer to BackgroundObserverPC that has to be given to UI
+ */
+ MCASearchBackgroundObserverPC* iBackgroundObserver;
+
+ /**
+ * Reference to the engine's contactlist model
+ */
+ MCABackgroundInterface& iBackgroundInterface;
+
+ // SearchPairs, Owns.
+ CSearchPairs* iSearchPairs;
+
+ //Reference to the group manager interface in the engine component. Doesnt own
+ MCAGroupManagerInterface& iGroupMgrInterface;
+
+ //Pointer to stored groups interface in the storage component. Doesnt own
+ MCAStoredGroups* iStoredGroupsInterface;
+ };
+
+#endif // CCASEARCHINTERFACEPC_H
+
+// End of File