localisation/apparchitecture/apserv/APSSES.H
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localisation/apparchitecture/apserv/APSSES.H	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,227 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#if !defined(__APSSES_H__)
+#define __APSSES_H__
+
+#if !defined(__E32BASE_H__)
+#include <e32base.h>
+#endif
+#if !defined(__APSSERV_H__)
+#include <APSSERV.H>
+#endif
+#if !defined(__F32FILE_H__)
+#include <f32file.h>
+#endif
+#if !defined(__APAID_H__)
+#include <apaid.h>
+#endif
+#if !defined(__APSCLSV_H__)
+#include "APSCLSV.H"
+#endif
+
+#include "APGAPLST.H"
+#include "APSRECUTIL.H"
+
+// classes defined
+class CApaAppListServSession;
+//
+// classes referenced
+class CApaAppList;
+class CApaAppData;
+class CApaFileRecognizer;
+class CApaScanningDataRecognizer;
+class TDataType;
+class CTypeStoreManager;
+class CApsNonNativeApplicationsManager;
+//
+class MArrayItemWriter;
+
+class CFileRecognitionUtility;
+
+class CApaAppListServSession : public CSession2
+	{
+public:
+	// construct/destruct
+	static CApaAppListServSession* NewL(CApaAppListServer& aServer, RFs& aFs);
+	~CApaAppListServSession();
+	//service request
+	virtual void ServiceL(const RMessage2 &aMessage);
+	void NotifyClients(TInt aReason);
+	void NotifyClientForCompletionOfListPopulation();
+	void NotifyClientOfDataMappingChange();
+	void NotifyScanComplete();
+private:
+	CApaAppListServSession(CApaAppListServer& aServer, RFs& aFs);
+	void ConstructL();
+	void NotifyOnDataMappingChange(const RMessage2& aMessage);
+	void CancelNotifyOnDataMappingChange();
+private:
+	enum TAppListType {
+		ENoList,
+		EListFilteredEmbeddedApps,
+		EListCapabilityAttrFilteredApps,
+		EListServerApps
+		};
+	enum TAppListDocumentStart {
+		EStart,
+		EStartByDataType,
+		EStartByUid,
+		ECreateByUid
+		};
+private:
+	class CApaAppInfo;
+private:
+	void AppCount(const RMessage2& aMessage) const;
+	void EmbedCount(const RMessage2& aMessage) const;
+	void GetNextAppL(const RMessage2& aMessage);
+	void InitListL(const RMessage2& aMessage, TAppListType aType);
+	void GetAppInfoL(const RMessage2& aMessage);
+	void GetAppInfoL(TUid aUid, TApaAppInfo& aInfo);
+	void GetAppCapabilityL(const RMessage2& aMessage);
+	void GetDefaultScreenNumberL(const RMessage2& aMessage);
+	void StartAppL(const RMessage2& aMessage, TBool aReturnThreadId);
+	//
+	// Data recognition stuff
+	void RecognizeDataL(const RMessage2& aMessage);
+	void RecognizeDataPassedByFileHandleL(const RMessage2& aMessage);
+	void RecognizeSpecificDataL(const RMessage2& aMessage);
+	void RecognizeSpecificDataPassedByFileHandleL(const RMessage2& aMessage);
+	static void DoRecognizeUnpackLC(HBufC*& aName, HBufC8*& aBuffer, const RMessage2& aMessage);
+	//
+	void AppForDataTypeL(const RMessage2& aMessage);
+	void StartDocumentL(const RMessage2& aMessage,TAppListDocumentStart aStartType);
+	TThreadId StartDocumentL(const TDesC& aFileName, TUid aUid, TApaCommand aCommand);
+	void GetExecutableNameGivenDocumentL(const RMessage2& aMessage);
+	void GetExecutableNameGivenDocumentPassedByFileHandleL(const RMessage2& aMessage);
+	void GetExecutableNameGivenDataTypeL(const RMessage2& aMessage);
+	void GetExecutableNameGivenAppUidL(const RMessage2& aMessage);
+	void GetExecutableNameL(const RMessage2& aMessage, TUid aAppUid);
+	void GetNativeExecutableNameIfNonNativeL(const RMessage2& aMessage);
+	void WriteNativeExecutableIfNonNativeAndPrepareForClientRetrievalOfOpaqueDataL(const RMessage2& aMessage, TInt aMessageSlotForNativeExecutable, const CApaAppData& aAppData);
+	void GetOpaqueDataL(const RMessage2& aMessage);
+	TUid AppForDataTypeL(const TDataType& aDataType, const TUid* aServiceUid);
+	void AppForDocumentL(const RMessage2& aMessage, const TUid* aServiceUid);
+	//
+	void IconForAppL(const RMessage2& aMessage);
+	//
+	void IconForAppBySizeL(const RMessage2& aMessage);
+	void AppIconSizesL(const RMessage2& aMessage);
+	void IconFileHandleForAppL(const RMessage2& aMessage);
+	//
+	void AppViewsL(const RMessage2& aMessage);
+	void IconForViewBySizeL(const RMessage2& aMessage);
+	void AppFileOwnershipInfoL(const RMessage2& aMessage);
+	//
+	void NumberOfOwnDefinedIconsL(const RMessage2& aMessage);
+	//
+	void AppInfoProvidedByRegistrationFileL(const RMessage2& aMessage);
+	void IconFileNameL(const RMessage2& aMessage);
+	void ViewIconFileNameL(const RMessage2& aMessage);
+	//
+	void RecognizeFilesL(const RMessage2& aMessage);
+	void TransferRecognitionResultL(const RMessage2& aMessage);
+	void RecognizeFilesAsyncL(const RMessage2& aMessage);
+	void RuleBasedLaunchingL(const RMessage2& aMessage);
+	void CancelRecognizeFiles();
+	//
+	void InsertDataMappingL(const RMessage2& aMessage);
+	void DeleteDataMappingL(const RMessage2& aMessage);
+	void GetAppByDataTypeL(const RMessage2& aMessage) const;
+	//
+	void GetAppServicesL(const RMessage2& aMessage);
+	CBufBase* GetServiceBufferL(const RMessage2& aMessage) const;
+	void AppForDataTypeAndServiceL(const RMessage2& aMessage);
+	void AppForDocumentPassedByFileHandleL(const RMessage2& aMessage, const TUid* aServiceUid);
+
+	void RegisterNonNativeApplicationTypeL(const RMessage2& aMessage);
+	void DeregisterNonNativeApplicationTypeL(const RMessage2& aMessage);
+
+	void GetAppTypeL(const RMessage2& aMessage);
+	void ForceRegistrationL(const RMessage2& aMessage);
+	inline const CApaAppList& AppList() const;
+	inline CApaFileRecognizer* FileRecognizer() const;
+	CApaAppData& FindAppInListL(TUid aUid);
+	TBool FindAppInList(CApaAppData*& aApp,TApaAppEntry& aEntry,TUid aAppUid);
+	TBool AppMatchesEmbeddabilityFilter(const CApaAppData& aAppData, const TApaEmbeddabilityFilter& aEmbeddabilityFilter) const;
+	TBool AppMatchesCapabilityAttrFilter(const CApaAppData& aAppData) const;
+	static TBool AppIsControlPanelItem(const CApaAppData& aAppData);
+
+	void GetConfidenceL(const RMessage2& aMessage);
+	void SetConfidence(const RMessage2& aMessage);
+	void GetBufSize(const RMessage2& aMessage);
+	void SetBufSize(const RMessage2& aMessage);
+	void GetDataTypesCountL(const RMessage2& aMessage);
+	void GetDataTypesL(const RMessage2& aMessage);
+	void SetNotify(const RMessage2& aMessage);
+	void CancelNotify();
+	//
+	void SendArrayL(const MArrayItemWriter& aArrayItemWriter,const RMessage2& aMessage) const;
+	//
+	void ApplicationLanguageL(const RMessage2& aMessage);
+	void RegisterListPopulationCompleteObserver(const RMessage2& aMessage);
+	void CancelListPopulationCompleteObserver();
+	void MatchesSecurityPolicyL(const RMessage2& aMessage);
+	//
+	void SetAppShortCaptionL(const RMessage2& aMessage);
+
+	static void NullifyAppCommandLinePointer(TAny* aServer);
+	TInt PreferredBufSize() const;
+	CApaAppData* FindSpecificAppL(TUid aAppUid);
+	TUid AppUidFromFullFileNameL(const TDesC& aFullFileName) const;
+	static TInt NextDriveToScan(TInt aCurrentDrive);
+	
+private:
+	enum
+		{
+		ENotifyPresent=0x01,
+		EAppListPopulationPending=0x02
+		};
+
+private:
+	CApaAppListServer& iServ;
+	TInt iFlags;
+	RFs& iFs;
+	TInt iMaxBufSize;
+	CBufBase* iBuffer;
+	RMessage2 iNotifyMessage;
+	RMessage2 iNotifyOnScanCompleteMsg;
+	RPointerArray<CApaAppInfo> iApaAppInfoArray;	//contains the most recent "snapshot" of the applist taken by GetNextAppL.
+	TAppListType iAppListType;
+	TInt iAppListScreenMode;
+	TApaEmbeddabilityFilter iEmbeddabilityFilter;
+	TUint iCapabilityAttrFilterMask; // contains bit flags from TCapabilityAttribute
+	TUint iCapabilityAttrFilterValue; // contains bit flags from TCapabilityAttribute
+	TUid iServiceUid;
+	RMessage2 iCompletionOfListPopulationObserverMsg;
+	CDirectoryRecognitionResult* iRecognitionResult;
+	CFileRecognitionUtility* iFileRecognitionUtility;
+	TBool iAsyncRecognitionActive;
+	HBufC8* iOpaqueData_pendingDispatchToClient;
+	RMessagePtr2 iMessage_NotifyOnDataMappingChange;
+	CApsNonNativeApplicationsManager* iNonNativeApplicationsManager;
+	};
+
+//
+// inlines
+//
+
+inline const CApaAppList& CApaAppListServSession::AppList() const
+	{ return ((CApaAppListServer*)Server())->AppList(); } 
+
+inline CApaFileRecognizer* CApaAppListServSession::FileRecognizer() const
+	{ return ((CApaAppListServer*)Server())->FileRecognizer(); }
+
+#endif