diff -r e8c1ea2c6496 -r 8758140453c0 localisation/apparchitecture/apserv/APSSES.H --- /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 +#endif +#if !defined(__APSSERV_H__) +#include +#endif +#if !defined(__F32FILE_H__) +#include +#endif +#if !defined(__APAID_H__) +#include +#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 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