localisation/apparchitecture/apgrfx/APGAIR.H
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localisation/apparchitecture/apgrfx/APGAIR.H	Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,258 @@
+// Copyright (c) 2004-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(__APGAIR_H__)
+#define __APGAIR_H__
+
+#if !defined(__APAID_H__)
+#include <apaid.h>
+#endif
+#if !defined(__APMSTD_H__)
+#include <apmstd.h>
+#endif
+
+#include <barsc.h>
+#include <barsread.h>
+
+/**
+@internalComponent
+*/
+class ApaUtils
+	{
+public:
+	IMPORT_C static TBool HandleAsRegistrationFile(const TUidType& aUidType);
+	};
+
+/** The 2nd UID that defines a resource file as being an application registration resource file.
+
+@internalComponent
+*/
+const TUid KUidAppRegistrationFile ={0x101F8021};
+
+class CApaMaskedBitmap;
+class CApaAppViewData;
+class TEntry;
+class RFs;
+class CResourceFile;
+class RResourceReader;
+class CApaAppList;
+class CApaAppIconArray;
+
+/**
+@internalComponent
+*/
+
+NONSHARABLE_CLASS(CApaIconLoader) : public CBase
+	{
+public:
+	static CApaIconLoader* NewL(RFs& aFs);
+	static CApaIconLoader* NewLC(RFs& aFs);
+	~CApaIconLoader();
+
+	void AddIconArrayL(const CApaAppIconArray& aIcons);
+	void LoadAllIconsL();
+	TBool LoadIconsL(TInt aNumOfIcons, const TDesC& aMbmFileName, CArrayPtr<CApaMaskedBitmap>& aIcons);
+
+private:
+	CApaIconLoader(RFs& aFs);
+	void ConstructL();
+	TInt IconIndexL(const TDesC& aFileName, TBool& aUseCache);
+	static TInt CompareIcons(const CApaMaskedBitmap& aFirst, const CApaMaskedBitmap& aSecond);
+
+private:
+	struct TKeyValuePair
+		{
+	public:
+		HBufC* iFileName; // key
+		TInt iIndex; // value
+		};
+private:
+	RFs& iFs;
+	RArray<TKeyValuePair> iIconIndexArray;
+	TInt iCachedArrayIndex;
+	RPointerArray<CApaAppIconArray> iIconArrays;
+	};
+
+/**
+@internalComponent
+*/
+NONSHARABLE_CLASS(CApaAppIconArray) : public CBase
+	{
+public:
+	static CApaAppIconArray* NewL(); // creates a dummy icon array
+	static CApaAppIconArray* NewAppIconsL(TInt aNumOfIcons, const TDesC& aMbmFileName, CApaIconLoader& aIconLoader);
+	static CApaAppIconArray* NewViewIconsL(TInt aNumOfIcons, const TDesC& aMbmFileName, CApaIconLoader& aIconLoader);
+	static CApaAppIconArray* NewDefaultIconsL(); // creates a CApaAppIconArray that uses the default icons
+	static CApaAppIconArray* NewRealDefaultIconsLC(TInt aNumOfIcons, const TDesC& aMbmFileName, CApaIconLoader& aIconLoader); // creates the CApaAppIconArray that contains the default icons
+	~CApaAppIconArray();
+
+	TBool LoadIconsL();
+
+	CApaMaskedBitmap* IconBySize(const TSize& aSize) const;
+	CArrayFixFlat<TSize>* IconSizesL() const;
+	TInt Count() const;
+	TBool DefaultIconsUsed() const;
+	CApaMaskedBitmap* operator[](TInt aIndex) const;
+#ifdef SYMBIAN_APPARC_APPINFO_CACHE	
+	TBool AreAppIconsLoaded() const;
+	TBool AreViewIconsLoaded() const;
+#endif	// SYMBIAN_APPARC_APPINFO_CACHE
+	
+private:
+	static CApaAppIconArray* NewL(TInt aNumOfIcons, const TDesC& aMbmFileName, CApaIconLoader& aIconLoader, TBool aFallbackToDefaultIcons);
+	static CApaAppIconArray* NewLC(TInt aNumOfIcons, const TDesC& aMbmFileName, CApaIconLoader& aIconLoader, TBool aFallbackToDefaultIcons);
+	CApaAppIconArray();
+	CApaAppIconArray(TInt aNumOfIcons, CApaIconLoader& aIconLoader, TBool aFallbackToDefaultIcons);
+	void ConstructL(const TDesC& aMbmFileName);
+	void GetDefaultIconsL();
+	const CApaAppIconArray& DefaultIcons() const;
+	
+private:
+	TInt iNumOfIcons;
+	CApaIconLoader* iIconLoader;
+	TBool iFallbackToDefaultIcons;
+	HBufC* iMbmFileName;
+	TBool iDefaultIconsUsed;
+	CArrayPtrFlat<CApaMaskedBitmap>* iIcons;
+	CApaAppList* iDefaultIconsProvider;
+	};
+
+class CApaAppInfoReader : public CBase
+/**
+Abstract base class for application information readers.
+
+Concrete implementations should read information from some
+data source and implement policy specific to each reader.
+
+@internalComponent
+*/
+	{
+public:
+	~CApaAppInfoReader();
+public:
+	HBufC* AppBinaryFullName();
+	TUidType AppBinaryUidType() const;
+	TTime TimeStamp() const;
+	TTime IconFileTimeStamp() const;
+	void Capability(TDes8& aCapabilityBuf) const;
+	TUint DefaultScreenNumber() const;
+	HBufC* Caption();
+	HBufC* ShortCaption();
+	CApaAppIconArray* Icons();
+#ifdef SYMBIAN_APPARC_APPINFO_CACHE	
+	TInt NumOfAppIcons() const;
+	virtual CApaIconLoader* IconLoader() = 0;
+#else	
+	TBool DefaultIconsUsed() const;
+#endif	// SYMBIAN_APPARC_APPINFO_CACHE
+	CArrayPtrFlat<CApaAppViewData>* Views();
+	CDesCArray* OwnedFiles();
+	HBufC* IconFileName();
+	TBool NonMbmIconFile() const;
+	HBufC* LocalisableResourceFileName();
+	TTime LocalisableResourceFileTimeStamp() const;
+	TLanguage AppLanguage() const;
+	CArrayFixFlat<TApaAppServiceInfo>* ServiceArray(TInt& aIndexOfFirstOpenService);
+	HBufC8* OpaqueData();
+
+public:
+	virtual TBool Read()=0;
+protected:
+	CApaAppInfoReader(RFs& aFs, const TUid aAppUid);
+	
+protected:
+	RFs& iFs;
+	TUid iAppUid;
+	HBufC* iAppBinaryFullName;
+	TUidType iAppBinaryUidType;
+	TTime iTimeStamp;
+	TTime iIconFileTimeStamp;
+	TApaAppCapability iCapability;
+	TUint iDefaultScreenNumber;
+	HBufC* iCaption;
+	HBufC* iShortCaption;
+	CApaAppIconArray* iIcons;
+#ifdef SYMBIAN_APPARC_APPINFO_CACHE
+	TInt iNumOfAppIcons;
+#else
+	TBool iDefaultIconsUsed;
+#endif
+	CArrayPtrFlat<CApaAppViewData>* iViewDataArray;
+	CDesCArray* iOwnedFileArray;
+	HBufC* iIconFileName;
+	TBool iNonMbmIconFile; // ETrue if icon filename is not an MBM file, however, EFalse does not necessarily mean it is an MBM file
+	HBufC* iLocalisableResourceFileName;
+	TTime iLocalisableResourceFileTimeStamp;
+	TLanguage iApplicationLanguage;
+	CArrayFixFlat<TApaAppServiceInfo>* iServiceArray;
+	TInt iIndexOfFirstOpenService;
+	TBool iOpenServiceIsLegacy;
+	HBufC8* iOpaqueData;
+	};
+
+class CApaAppInfoReaderV2 : public CApaAppInfoReader
+/**
+Reads application information from a combination of registration file,
+optional localisable resource file and optional icon file.
+Application information stored in this way is referred to as version 2.
+
+@internalComponent
+*/
+	{
+public:
+#ifdef SYMBIAN_APPARC_APPINFO_CACHE
+	static CApaAppInfoReaderV2* NewL(RFs& aFs, const TDesC& aRegistrationFileName, const TUid aAppUid);
+	virtual CApaIconLoader* IconLoader();
+#else
+	static CApaAppInfoReaderV2* NewL(RFs& aFs, const TDesC& aRegistrationFileName, const TUid aAppUid,const TDesC& aDefaultAppIconFileName);
+#endif	// SYMBIAN_APPARC_APPINFO_CACHE
+	~CApaAppInfoReaderV2();
+
+public:
+	virtual TBool Read();
+	static TBool FileIsMbm(const TDesC& aFileName);
+
+private:
+#ifdef SYMBIAN_APPARC_APPINFO_CACHE
+	CApaAppInfoReaderV2(RFs& aFs, const TDesC& aRegistrationFileName, const TUid aAppUid);
+#else
+	CApaAppInfoReaderV2(RFs& aFs, const TDesC& aRegistrationFileName, const TUid aAppUid, const TDesC& aDefaultAppIconFileName);
+#endif
+	void ConstructL();
+	void ReadMandatoryInfoL(CResourceFile*& aRegistrationFile, RResourceReader& aResourceReader);
+	void ReadNonLocalisableInfoL(RResourceReader& aResourceReader, CResourceFile*& aLocalisableResourceFile, TUint& aLocalisableResourceId);
+	void ReadNonLocalisableOptionalInfoL(RResourceReader& aResourceReader, const CResourceFile* aRegistrationFile, CResourceFile* aLocalisableResourceFile);
+	void ReadDataTypesL(RResourceReader& aResourceReader, CArrayFixFlat<TDataTypeWithPriority>& aDatatypes);
+	void ReadLocalisableInfoL(const CResourceFile* aResourceFile, TUint aResourceId, TBool& aUseDefaultIcons);
+	HBufC* FullIconFileNameL(const TDesC& aIconFileName) const;
+	TBool HasWriteDeviceDataCap();
+    void ReadAppSecurityInfo();
+	
+    TBool FileIsMbmWithGenericExtensionL(const TDesC& aFileName) const;
+	static HBufC8* ReadOpaqueDataL(TUint aResourceId, const CResourceFile* aRegistrationFile, CResourceFile* aLocalisableResourceFile);
+
+private:
+	const TDesC& iRegistrationFileName;
+	TBool iHasWriteDeviceDataCap;
+    TBool iIsSidTrusted;
+    // This flag is used to determine if app security info was allready read
+    TBool iSecurityInfoHasBeenRead;
+	CApaIconLoader* iIconLoader;	
+#ifndef SYMBIAN_APPARC_APPINFO_CACHE
+	const TDesC& iDefaultAppIconFileName;
+#endif
+	};
+
+#endif