searchui/searchapp/inc/srchuimanager.h
changeset 0 f979ecb2b13e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/searchui/searchapp/inc/srchuimanager.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,341 @@
+/*
+* 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:      Manager communicates with the client and srchuigenui
+*
+*/
+
+
+
+
+
+
+
+#ifndef C_SEARCH_UI_MANAGER_H
+#define C_SEARCH_UI_MANAGER_H
+ 
+#include <e32base.h>
+#include "searchrequirement.h"
+#include <searchclientsession.h>
+#include <srchuicustomservice.h>
+
+#include "srchuiresulthandler.h"
+#include "srchuiserviceplugin.h"
+#include "srchuiresultviewerplugin.h"
+
+class CFbsBitmap;
+class CAknView;
+class CSrchUiResFolder;
+class MSrchUiFolder;
+class CSrchUiResultViewerPlugin;
+
+
+/**
+* This structure contains the information that is needed by the 
+* SearchMainView to be displayed.
+*/
+struct TServiceInfo
+   {
+
+public:
+
+	/**
+	 * Service Id
+	 */	
+	TUid iServiceId;
+	
+	/**
+	 * Caption for service
+	 */
+	HBufC* iPrimaryCaption;
+	
+	/**
+	 * Secondary Caption for service
+	 */
+	HBufC* iSecondaryCaption;
+	
+	/**
+	 * Icon
+	 */
+	CFbsBitmap* iServiceIcon;
+	
+	/**
+	 * Icon mask
+	 */
+	CFbsBitmap* iServiceIconMask;
+	
+	/**
+	 * Visiblity
+	 */
+	TBool iVisible;	
+    };
+
+
+/**
+ * Class is an interface for communication between srchgenui and 
+ * search client. 
+ *
+ * And also constructs the result folder.
+ */
+NONSHARABLE_CLASS( CSrchUiManager ) : public CBase
+  	{
+  		
+public:	
+         /**
+         * Symbian OS 2 phased constructor.
+         *
+         * @return	A pointer to the created instance of CSrchUiManager.
+         */
+         static CSrchUiManager* NewL();
+
+         /**
+         * Symbian OS 2 phased constructor.
+         *
+         * @return	A pointer to the created instance of CSrchUiManager.
+         */
+         static CSrchUiManager* NewLC();
+
+         /**
+         * Destructor
+         */
+         virtual ~CSrchUiManager();
+	
+	
+         /**
+	 * Loads the services that are implemented as the SearchUiCustomPlugIns
+         *
+         * @param aServiceInfoArray Service info array
+         */
+         void LoadUiServicesL( RPointerArray<TServiceInfo>& aServiceInfoArray );	
+
+         /**
+         * Handles the selection of the a particular service id from the Search 
+         * Main View.If the Service plug in uses light customization, then InDevice
+         * /ServiceMainView is constructed and launched using GeneralSearch Ui
+         * Else, if the Service plug in uses heavy customization, then  
+         * of the plug in is called... If the query string is not NULL, 
+         * then the search is launched for the selected service, without launching
+         * the Service/InDeviceMainView
+         *
+         * Called when the service has been selected by the user.
+         *
+         * @param aQueryString The query string entered by the user.
+         * @param aServiceId The ServiceId of the service.
+         * @param  aSelectedContentTypes All the selected content types
+         *@param aObserver Observer
+         */   
+         void HandleSelectionL ( TDesC8& aQueryString,  TUid aServiceId, 
+                                 RArray <TBool> aSelectedContentTypes, MSearchQueryObserver* aObserver );
+
+         /**
+         * Gets the supported content classes by the SearchFW
+         * Used by the Service Main view of General Search Ui to display 
+         * the content classes
+         *
+         * @param aSupportedContentClasses supported content classes will be 
+         				placed in this variable
+         * @param aServiceId Service Id of which to be 
+         */
+         void GetSupportedContentClassesL ( RPointerArray<CSearchContent>& 
+	 		aSupportedContentClasses, const TUid& aServiceId );
+	
+         /**
+         *
+         * Sets the threshold
+         * @param aThreshold
+         */
+         void SetThreshold( TSearchThreshold aThreshold );
+   	
+      
+         /**
+         * Gets the results
+         *
+         * @param aObserver Obsrever through which results are retrieved
+         */
+         void GetResultL( RPointerArray<CSearchDocumentId>& aResultIdArray,
+     		 MSearchResultRetrieveObserver* aObserver );
+    
+ 	
+         /**
+  	 * Getter for iAllContentClassesSelected flag
+         */
+         TBool AllContentClassesSelected() const;
+	
+         /**
+         * Setter for iAllContentClassesSelected flag
+         */
+         void SetAllContentClassesSelected( TBool aSelected );
+	
+         /**
+         * Get the selected content types
+         *
+         * @return Boolean values if the selected in same order as the content 
+         * 			types
+         */
+         RArray<TBool>& SelectedContentTypes();
+    
+         /**
+         * Set the selected content types
+         *
+         * @param aSelected
+         */
+         void SetSelectedContentTypesL( RArray<TBool>& aSelected );
+    
+         /**
+         * Updates the supported content classes to the passed parameter
+         *
+         * @param aContentClass content classes to be updated
+         */
+         void UpdateContentClassesL( RPointerArray< CSearchContent> aContentClass );
+	
+         /**
+         * returns max results allowed
+         *
+         */
+         TInt MaxResults();
+	
+         /**
+         * Getter for light result count
+         *
+         * @return The number of light result count
+         */
+         TInt LightResultCount();
+	
+         /**
+         * Sets the last visited view id
+         *
+         * @param aViewId : the view id of the previous view
+         */
+         void SetLastLaunchViewId(const TUid aViewId);
+	 
+	 
+         /**
+         * Get the Query string
+         *
+         * @since S60 v3.2
+         * @return : reference to the query string
+         */
+         TDesC8& GetQueryString();
+
+         /**
+         * From MSrchUiResultHandler
+         *
+         * Launches the application for given document id
+         *
+         * @param aResultId Document Id for which is to be launched
+         */
+         void LaunchApplicationL( const CSearchDocumentId& aResultId );
+    
+         /**
+         * Cancels the search operation
+         */
+         TInt CancelSearch();
+         /**
+		 * Get the launch infor 
+		 */         
+         HBufC8* GetLaunchInfoL( const CSearchDocumentId& aDocumentID );
+    					
+private:
+         // C++ constructor - not exported;
+         // implicitly called from NewLC()
+         /**
+         * Constructor
+         *
+         */
+         CSrchUiManager( );
+	
+         /**
+         * second-phase constructor
+         *
+         */
+         void ConstructL( ); 
+	
+         /**
+         * Initializes the Ui Plugins
+         *
+         * @param aImpUid Implementation Uid
+         */	
+         CSrchUiServicePlugin* InitializeUiPlugInsL(TUid aImpUid );
+    	
+         /**
+         * Loads the Plugin information
+         *
+         * @param aServiceInfoArray service info array
+         */
+         void LoadPluginInfoL( RPointerArray<TServiceInfo>& aServiceInfoArray );
+    
+         /**
+         * fires a search
+         *
+         * @param aQueryString query string to be searched
+         * @param aServiceId service id
+         * @param aObserver observer
+         */
+         void FireSeacrhL( TDesC8& aQueryString,TUid aServiceId, 
+                           MSearchQueryObserver* aObserver );
+ 
+private: //data
+	
+         /**
+         * Service Id
+         */
+         TUid iServiceId;
+     
+         /**
+         * search requirement 
+         * includes query string, where to search, what to search etc.,
+         *
+         * Own
+         */
+         CSearchRequirement* iSearchRequirement;
+     
+         /**
+         * Array of Services available
+         */
+         RPointerArray<CSrchUiServicePlugin> iServices;
+    
+         /**
+         * session with the search client
+         *
+         * Own
+         */
+         CSearchClientSession* iClientSession;
+    
+         /**
+         * Supported content classes
+         */
+         RPointerArray<CSearchContent> iSupportedContentClasses;
+        
+         /**
+         * Number of requests made for e.g, 3rd search request to client
+         */
+         TInt iRequest;
+    
+         /**
+         * Array of selected content type
+         */
+         RArray <TBool> iSelectedContentTypes;
+    
+         /**
+         * Boolean if all classes are selected
+         */
+         TBool iAllContentClassesSelected;
+     
+     
+         /**
+         * Threshold for the search : Max results, max time etc.,
+         */
+         TSearchThreshold iThreshold;
+         };
+
+#endif //C_SEARCH_UI_MANAGER_H
\ No newline at end of file