--- a/localisation/apparchitecture/inc/APGAPLST.H Wed Jul 28 16:03:37 2010 +0100
+++ b/localisation/apparchitecture/inc/APGAPLST.H Tue Aug 03 10:20:34 2010 +0100
@@ -1,7 +1,7 @@
// 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 "Eclipse Public License v1.0"
+// 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".
//
@@ -11,36 +11,18 @@
// Contributors:
//
// Description:
+// apgaplst.h
//
-#if !defined(__APGAPLST_H__)
+#ifndef __APGAPLST_H__
#define __APGAPLST_H__
-#if !defined(__APAID_H__)
#include <apaid.h>
-#endif
-#if !defined(__APMSTD_H__)
#include <apmstd.h>
-#endif
-#if !defined(__BADESCA_H__)
#include <badesca.h>
-#endif
-
#include <s32file.h>
-// classes defined:
-class CApaAppData;
-class CApaAppList;
-class CApaAppViewData;
-//
-// classes referenced:
-class CApaMaskedBitmap;
-class TEntry;
-class RFs;
-class CApaAppRegFinder;
-class CApaAppIconArray;
-class CApaIconLoader;
-//
+
/**
KApaMaxAppIcons
@@ -74,470 +56,9 @@
*/
const TInt KApaIconIndexLarge=2;
-/**
-KIgnoreScreenMode
-
-@internalTechnology
-*/
-const TInt KIgnoreScreenMode=-1;
-
_LIT(KDefaultAppIconMbm,"Z:\\Resource\\Apps\\default_app_icon.mbm");
_LIT(KLitPathForUntrustedRegistrationResourceFiles, "?:\\private\\10003a3f\\import\\apps\\*");
-class CApaAppEntry : public CBase
-/**
-Utility class with smaller RAM footprint than TApaAppEntry
-
-@internalComponent
-*/
- {
-public:
- static CApaAppEntry* NewL(const TApaAppEntry& aAppEntry);
- ~CApaAppEntry();
- void Get(TApaAppEntry& aAppEntry) const;
-private:
- CApaAppEntry(const TUidType& aUidType);
- void ConstructL(const TDesC& aFileName);
-private:
- TUidType iUidType;
- HBufC* iFullName;
- };
-
-class CApaAppData : public CBase
-/** Represents the data associated with a CApaApplication, such as its
-caption, capabilities and icons. This should be accessed through the Apparc Server.
-
-@internalComponent
-*/
- {
-public:
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- IMPORT_C static CApaAppData* NewL(const TApaAppEntry& aAppEntry, RFs& aFs);
-#else
- IMPORT_C static CApaAppData* NewL(const TApaAppEntry& aAppEntry, RFs& aFs, const TDesC& aDefaultAppIconFileName);
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- IMPORT_C ~CApaAppData();
- IMPORT_C TApaAppEntry AppEntry() const;
- inline TPtrC Caption() const;
- inline TPtrC ShortCaption() const;
- IMPORT_C CApaMaskedBitmap* Icon(TInt aIconIndex) const;
- IMPORT_C void Capability(TDes8& aCapabilityBuf)const;
- inline TBool IsPresent() const;
- // ER5
- IMPORT_C TDataTypePriority DataType(const TDataType& aDataType) const;
- // ER6
- IMPORT_C CApaMaskedBitmap* Icon(TSize aSize) const;
- IMPORT_C CArrayFixFlat<TSize>* IconSizesL() const;
- // ER6.1
- IMPORT_C CArrayPtrFlat<CApaAppViewData>* Views() const;
- IMPORT_C CDesCArray* OwnedFiles() const;
- IMPORT_C TBool CanUseScreenMode(TInt aScreenMode);
- // 7.0s
- IMPORT_C void GetIconInfo(TInt& aIconCount, TInt& aDefaultIconsUsed) const;
- // 8.1
- IMPORT_C TUint DefaultScreenNumber() const;
- IMPORT_C TBool RegistrationFileUsed() const;
- IMPORT_C TPtrC IconFileName() const;
- IMPORT_C TBool NonMbmIconFile() const;
-
- // 9.0
- IMPORT_C TBool ImplementsService(TUid aServiceUid) const;
- TInt ImplementsServiceWithDataType(TUid aServiceUid, const TDataType& aDataType) const;
-
- // 9.1
- IMPORT_C TLanguage ApplicationLanguage() const;
- IMPORT_C TPtrC RegistrationFileName() const;
- IMPORT_C TPtrC8 OpaqueData() const;
- IMPORT_C TUid NonNativeApplicationType() const;
- IMPORT_C TPtrC LocalisableResourceFileName() const;
- IMPORT_C void SetShortCaptionL(const TDesC& aShortCaption);
- IMPORT_C TBool IsPending()const;
-
- // Icon/caption overrides
- IMPORT_C void SetCaptionL(const TDesC& aCaption);
- IMPORT_C void SetIconsL(const TDesC& aFileName, TInt aNumIcons);
-
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- void ExternalizeL(RWriteStream& aWriteStream) const;
- void LoadIconsL();
- TBool MbmIconsRequireLoading() const;
- inline CApaAppData* Next() const;
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
-private:
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- CApaAppData(RFs& aFs);
- TBool Update();
- void SetAppPending();
-
- void ConstructL(const TApaAppEntry& aAppEntry);
- TInt StoreApplicationInformation();
-#else
- CApaAppData(RFs& aFs);
- TBool Update(const TDesC& aDefaultAppIconFileName);
- void ConstructL(const TApaAppEntry& aAppEntry, const TDesC& aDefaultAppIconFileName);
- TInt StoreApplicationInformation(const TDesC& aDefaultAppIconFileName);
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- void UpdateServiceArray(CArrayFixFlat<TApaAppServiceInfo>* aNewServiceArray);
- TDataTypePriority DataType(const TDataType& aDataType, const CArrayFixFlat<TDataTypeWithPriority>& aDataTypeArray) const;
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- void InternalizeL(RReadStream& aReadStream);
- TBool ViewMbmIconsRequireLoading() const;
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-private:
- enum { ENotPresent, ENotPresentPendingUpdate, EPresentPendingUpdate, EIsPresent, ESuperseded };
-private:
- CApaAppIconArray* iIcons;
- HBufC* iCaption;
- HBufC* iShortCaption;
- HBufC* iFullName; // filename of application binary
- TInt iIsPresent; // uses enum
- TUidType iUidType;
- CApaAppData* iNext;
- TApaAppCapabilityBuf iCapabilityBuf;
- CApaAppEntry* iSuccessor;
- TTime iTimeStamp;
- CArrayPtrFlat<CApaAppViewData>* iViewDataArray;
- CDesCArray* iOwnedFileArray;
- RFs& iFs;
- HBufC* iRegistrationFile;
- TUint iDefaultScreenNumber;
- HBufC* iIconFileName;
- TBool iNonMbmIconFile;
- HBufC* iLocalisableResourceFileName;
- TTime iLocalisableResourceFileTimeStamp;
- TTime iIconFileTimeStamp;
- TLanguage iApplicationLanguage;
- CArrayFixFlat<TApaAppServiceInfo>* iServiceArray;
- TInt iIndexOfFirstOpenService;
- TUid iNonNativeApplicationType;
- HBufC8* iOpaqueData;
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- TInt iNumOfAppIcons;
- TInt iNumOfAppIconsFromResourceFile;
- HBufC* iIconFileNameFromResourceFile; // Icon file name as found in the localisable resource file
- TBool iNonMbmIconFileFromResourceFile; // A Flag that tells whether the icon in resource file is non MBM file format
- TTime iIconFileTimeStampFromResourceFile;
- HBufC* iShortCaptionFromResourceFile; // Short Caption as found in the localisable resource file
- HBufC* iCaptionFromResourceFile; // Caption as found in the localisable resource file
- CApaIconLoader* iIconLoader;
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
-private:
- friend class CApaAppList;
- };
-
-class CApaAppViewData : public CBase
-/**
-The CApaAppViewData class represents the data associated with an application view.
-
-@internalComponent
-*/
- {
-public:
- IMPORT_C TUid Uid() const;
- inline TPtrC Caption() const;
- IMPORT_C CApaMaskedBitmap* Icon(const TSize& aSize) const;
- IMPORT_C CArrayFixFlat<TSize>* IconSizesL() const;
- IMPORT_C TInt ScreenMode() const;
- IMPORT_C TPtrC IconFileName() const;
- IMPORT_C TBool NonMbmIconFile() const;
-public:
- ~CApaAppViewData();
- static CApaAppViewData* NewLC();
- void SetUid(TUid aUid);
- void SetCaptionL(const TDesC& aCaption);
- void SetIconArray(CApaAppIconArray* aIcons);
- void SetScreenMode(TInt aScreenMode);
- void SetIconFileNameL(const TDesC& aFileName);
- void SetNonMbmIconFile(TBool aNonMbmIconFile);
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- void SetNumOfViewIcons(TInt aNumOfViewIcons);
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-private:
- CApaAppViewData();
- void ConstructL();
-private:
- CApaAppIconArray* iIcons;
- HBufC* iCaption;
- TUid iUid;
- TInt iScreenMode;
- HBufC* iIconFileName;
- TBool iNonMbmIconFile;
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- TInt iNumOfViewIcons;
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- friend class CApaAppData;
- };
-
-
-class MApaAppListObserver
-/**
- The MApaAppListObserver interface allows a class to be informed when a CApaAppList is
- updated.
-
- @internalComponent
-*/
- {
-public:
- virtual void NotifyUpdate(TInt aReason)=0;
- virtual void InitialListPopulationComplete()=0;
- virtual void NotifyScanComplete()=0;
- };
-
-class CApaAppList : public CBase
-/**
-The CApaAppList class provides a list of all available applications present on a device.
-Its functionality should be accessed through the Apparc Server.
-
-@internalComponent
-*/
- {
-public:
- IMPORT_C static CApaAppList* NewL(RFs& aFs,CApaAppRegFinder* aAppRegFinder, TBool aLoadMbmIconsOnDemand, TInt aTimeoutDelay = 50000); // takes ownership of aAppRegFinder
-public:
- IMPORT_C void PurgeL();
- inline void Purge();
- IMPORT_C TInt Count() const;
- IMPORT_C CApaAppData* FirstApp() const;
- IMPORT_C CApaAppData* FirstApp(TInt aScreenMode) const;
- IMPORT_C CApaAppData* NextApp(const CApaAppData* aApp) const;
- IMPORT_C CApaAppData* NextApp(const CApaAppData* aApp, TInt aScreenMode) const;
- IMPORT_C CApaAppData* AppDataByUid(TUid aAppUid) const;
- IMPORT_C void StopScan(TBool aNNAInstall = EFalse);
- IMPORT_C void RestartScanL();
- IMPORT_C TBool AppListUpdatePending();
-#ifndef SYMBIAN_APPARC_APPINFO_CACHE
- IMPORT_C TInt UpdateCounter() const;
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- // ER5
- IMPORT_C TUid PreferredDataHandlerL(const TDataType& aDataType) const;
- IMPORT_C void StartIdleUpdateL();
- IMPORT_C void StartIdleUpdateL(MApaAppListObserver* aObserver);
- IMPORT_C void InitListL(MApaAppListObserver* aObserver);
- IMPORT_C TBool IsIdleUpdateComplete() const;
- //
- IMPORT_C TBool IsFirstScanComplete() const;
- IMPORT_C TBool AppScanInProgress() const;
- IMPORT_C CBufFlat* ServiceArrayBufferL(TUid aAppUid) const;
- IMPORT_C CBufFlat* ServiceImplArrayBufferL(TUid aServiceUid) const;
- IMPORT_C CBufFlat* ServiceImplArrayBufferL(TUid aServiceUid, const TDataType& aDataType) const;
- IMPORT_C CBufFlat* ServiceUidBufferL(TUid aAppUid) const;
- IMPORT_C CBufFlat* ServiceOpaqueDataBufferL(TUid aAppUid, TUid aServiceUid) const;
- IMPORT_C CApaAppData* FindAndAddSpecificAppL(CApaAppRegFinder* aFinder, TUid aAppUid);
- IMPORT_C TUid PreferredDataHandlerL(const TDataType& aDataType, const TUid* aServiceUid,
- TInt& aPriority) const;
- IMPORT_C ~CApaAppList();
- // 9.1
- IMPORT_C CApaAppData* AppDataByFileName(const TDesC& aFullFileName) const;
- /*IMPORT_C*/ RFs& ShareProtectedFileServer();
- IMPORT_C void AddForcedRegistrationL(HBufC* aRegistrationFile);
- IMPORT_C void ResetForcedRegistrations();
- IMPORT_C static TInt CompareStrings(const HBufC& aFirst, const HBufC& aSecond);
- IMPORT_C TBool IsLanguageChangePending() const;
- IMPORT_C static CApaAppList* Self();
- IMPORT_C CArrayFixFlat<TUid>* UninstalledAppArray();
- void AcquireDefaultIconArrayL() const;
- const CApaAppIconArray& DefaultIconArray() const;
- void ReleaseDefaultIconArray() const;
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- void StoreL();
- void NotifyObserver();
- void DeleteAppListStorer();
- void DeleteAppIconLoader();
- void InitiateStoringOfAppList();
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-private:
- enum
- {
- EFirstScanComplete = 0x01
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- ,EAppListHasChanged = 0x02, // This flag is used to check if the applist has really changed after a re-scan/update scan.
- ENotifyUpdateOnFirstScanComplete = 0x04 // This flag is used to notify clients for applist update on first boot when AppsList.Bin is used.
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- ,ELangChangePending = 0x08 // This flag is used to check if applist update is in progress on language change event.
- };
-
-#ifndef SYMBIAN_APPARC_APPINFO_CACHE
- enum
- {
- EFirstStageScan=0x01,
- EScanFinished=0x02,
- };
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
-private:
- CApaAppList(RFs& aFs, CApaAppRegFinder* aAppRegFinder, TBool aLoadMbmIconsOnDemand, TInt aIdlePeriodicDelay);
- void UpdateNextAppL(const TApaAppEntry& aAppEntry,TBool& aHasChanged);
- void AddToList( CApaAppData* aAppData );
- static void SetPending(CApaAppData* aAppData);
- static void SetNotFound(CApaAppData* aAppData, TBool& aHasChanged);
- static TInt IdleUpdateCallbackL(TAny* aObject);
- TInt IdleUpdateL();
- void ScanComplete();
- void UndoSetPending(CApaAppData* aAppData);
-
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- void StopIdler();
- void DeleteAppData();
-#else
- void StopIdlerL();
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- CArrayFixFlat<TDataTypeWithPriority>* DataTypeArrayDeepCopyLC(const CArrayFixFlat<TDataTypeWithPriority>& aOriginal) const;
- CApaAppIconArray* LoadDefaultIconsL() const;
- void UpdateDefaultIconsL();
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- void StartIconLoadingL();
- void DeleteAppsListBackUpAndTempFiles();
- void ScanRemovableDrivesAndUpdateL();
- void CreateDefaultAppIconFileNameL();
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
-private:
- // Persistence Layer
- void RestoreL();
- void ConstructL();
-#ifndef SYMBIAN_APPARC_APPINFO_CACHE
- void StoreL();
- void StoreEntryL(RFileWriteStream& theWriteStream,CApaAppData* aApp);
- void DoStoreL(RFileWriteStream& aWriteStream);
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
- void GetAppsListCachePathL();
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- NONSHARABLE_CLASS(CApaIdleIconLoader) : public CActive
- {
- /**
- Utility class used to Load Icons once applist is populated
- @internalComponent
- */
- public:
- CApaIdleIconLoader(CApaAppData* aFirstAppData, RFs& aFs, CApaAppList& aAppList);
- ~CApaIdleIconLoader();
- void Start();
-
- private: // from CActive
- void RunL();
- void DoCancel();
- TInt RunError(TInt aError);
-
- private:
- CApaAppData* iCurrentAppData;
- RFs& iFs;
- CApaAppList& iAppList;
- };
-
- NONSHARABLE_CLASS(CApaAppListStorer) : public CActive
- {
- /**
- Utility class used to externalize applist to file
- @internalComponent
- */
- public:
- static CApaAppListStorer* NewL(CApaAppData* aFirstAppData, RFs& aFs, CApaAppList& aAppList);
- ~CApaAppListStorer();
- void StartL(const TTimeIntervalMicroSeconds32& aDelay);
-
- private:
- CApaAppListStorer(CApaAppData* aFirstAppData, RFs& aFs, CApaAppList& aAppList);
- static void StoreEntryL(RWriteStream& aWriteStream, const CApaAppData& aApp);
- void ConstructL();
-
- private: // from CActive
- void RunL();
- void DoCancel();
- TInt RunError(TInt aError);
-
- private:
- CApaAppData* iCurrentAppData;
- TFileName iTempFilename;
- RFileWriteStream iWriteStream;
- RTimer iTimer;
- RFs& iFs;
- CApaAppList& iAppList;
- };
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
-private:
- RFs& iFs;
- CApaAppData* iAppData; // linked list of apps
- CPeriodic* iAppIdler;
- MApaAppListObserver* iObserver;
- CApaAppData* iValidFirstAppData; //First valid app data in linked list!
- TInt iFlags;
- CApaAppRegFinder* iAppRegFinder;
- TInt iIdlePeriodicDelay; // idle timeout periodic delay
- RFs iFsShareProtected;
- mutable CApaAppIconArray* iDefaultIconArray;
- mutable TInt iDefaultIconUsageCount;
- RPointerArray<HBufC> iForcedRegistrations;
- class CApaLangChangeMonitor; //inner class of CApaAppList.
- CApaLangChangeMonitor* iAppLangMonitor; // Active Object used for language change monitoring.
-
- RBuf iAppsListCacheFileName;
- RBuf iAppsListCacheBackUpFileName;
- RBuf iAppsListCachePath;
-
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- HBufC* iDefaultAppIconMbmFileName; // This member data lives only during the scan
- CApaAppListStorer* iAppListStorer; //Active Object used for writing applist to file.
- CApaIdleIconLoader* iAppIconLoader; //Active Object used for icon handling
-#else
- TInt iScanStage;
- TInt iUpdateCounter;
- TApaAppEntry iCurrentApp;
- TInt iOldUpdateCounter;
- HBufC* iDefaultAppIcon; // This member data lives only during the scan
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
- TBool iLoadMbmIconsOnDemand;
- TBool iNNAInstallation;
- CArrayFixFlat<TUid>* iUninstalledApps;
-
-private:
- friend class CApaLangChangeMonitor;
- };
-
-//
-// inlines
-//
-
-inline TPtrC CApaAppViewData::Caption() const
- { return *iCaption; }
-
-inline TPtrC CApaAppData::Caption() const
-/** Gets the application's caption.
-
-@return The application's caption. */
- { return *iCaption; }
-
-inline TPtrC CApaAppData::ShortCaption() const
-/** Gets the application's short caption.
-
-@return The application's short caption. */
- { return *iShortCaption; }
-
-inline TBool CApaAppData::IsPresent() const
-/** Tests whether the application is present or not on the device.
-
-@return True if application exists, else false. */
- { return iIsPresent; }
-
-#ifdef SYMBIAN_APPARC_APPINFO_CACHE
-inline CApaAppData* CApaAppData::Next() const
-/** Gets the Next Appdata in the list
-
-@return iNext */
- { return iNext; }
-#endif // SYMBIAN_APPARC_APPINFO_CACHE
-
-/**
- * Use PurgeL.
- *
- * @deprecated
- */
-inline void CApaAppList::Purge()
- { TRAP_IGNORE(PurgeL()); }
-
#endif //__APGAPLST_H__