--- a/appfw/apparchitecture/aplist/aplapplist.cpp Tue Aug 31 15:24:25 2010 +0300
+++ b/appfw/apparchitecture/aplist/aplapplist.cpp Wed Sep 01 12:24:48 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2009 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"
@@ -21,6 +21,7 @@
#include "APFDEF.H"
#include "../apparc/TRACE.H"
#include "apgnotif.h" // MApaAppListServObserver
+#include "aplappregfinder.h" // CApaAppRegFinder
#include <bautils.h> // BaflUtils::NearestLanguageFile()
#include <s32mem.h> // RBufWriteStream
#include "aplappinforeader.h"
@@ -29,13 +30,6 @@
#include <bafl/sysutil.h>
#endif
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-#include<usif/scr/scr.h>
-#include<usif/scr/appregentries.h>
-#else
-#include "aplappregfinder.h" // CApaAppRegFinder
-#endif
-
// Delays in the pseudo idle object that builds the application list
//
@@ -55,13 +49,6 @@
const TInt16 KROMVersionCacheFileBuildVersion=0;
#endif
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-const TInt KNumAppEntriesFromSCR=10;
-
-const TInt KSCRConnectionWaitTime=20000; //Time to wait if SCR is busy
-const TUid KUidSisLaunchServer={0x1020473f};
-#endif
-
GLDEF_C void Panic(TApgPanic aPanic)
{
@@ -97,373 +84,7 @@
TLanguage iPrevLanguage;
};
-
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-
-enum TApaSCRFetchAction
- {
- EGetAllAppsInfo, //Fetch all application the information from SCR
- EGetSpecificAppsInfo //Fetch only provided application uids information
- };
-
-/*
- * Contain information about appliations to be fetched from SCR.
- */
-
-NONSHARABLE_CLASS(CApaAppSCRFetchInfo : public CBase)
- {
-public:
- static CApaAppSCRFetchInfo* NewL(TApaSCRFetchAction aSCRFetchAction, RArray<TApaAppUpdateInfo>* aAppUpdateInfo);
- ~CApaAppSCRFetchInfo();
- RArray<TApaAppUpdateInfo>* AppUpdateInfo();
- TApaSCRFetchAction SCRFetchAction();
-
-private:
- CApaAppSCRFetchInfo(TApaSCRFetchAction aSCRFetchAction, RArray<TApaAppUpdateInfo>* aAppUpdateInfo);
-
-private:
- TApaSCRFetchAction iSCRFetchAction;
- RArray<TApaAppUpdateInfo>* iAppUpdateInfo;
- };
-
-
-/*
- * Reads multiple application information from SCR and caches it. When requested provides one application
- * information at a time.
- */
-NONSHARABLE_CLASS(CApaAppList::CApaScrAppInfo)
- {
-public:
- static CApaScrAppInfo* NewL(const Usif::RSoftwareComponentRegistry& aScrCon, TInt aNumEntries);
- void GetAllAppsInfoL();
- void GetSpecificAppsInfoL(RArray<TApaAppUpdateInfo>* aAppUpdateInfo);
- TUid GetNextApplicationInfo(TApaAppUpdateInfo::TApaAppAction& aAppAction, Usif::CApplicationRegistrationData*& aAppData);
- TApaSCRFetchAction GetSCRFetchAction();
- ~CApaScrAppInfo();
-
-private:
- void ConstructL();
- CApaScrAppInfo(const Usif::RSoftwareComponentRegistry& aScr, TInt aNumEntries);
- void GetAppUidListL(RArray<TApaAppUpdateInfo>& aAppUpdateInfoArr, RArray<TUid>& aAppUids);
- TUid GetAllAppsNextApplicationInfoL(TApaAppUpdateInfo::TApaAppAction& aAppAction, Usif::CApplicationRegistrationData*& aAppData);
- TUid GetSpecificAppsNextApplicationInfoL(TApaAppUpdateInfo::TApaAppAction& aAppAction, Usif::CApplicationRegistrationData*& aAppData);
-private:
- Usif::RApplicationRegistryView iScrAppView;
- RPointerArray<Usif::CApplicationRegistrationData> iAppInfo;
- RPointerArray<CApaAppSCRFetchInfo> iSCRFetchInfoQueue;
- const Usif::RSoftwareComponentRegistry& iSCR;
- TBool iIsSCRRegViewOpen;
- TInt iSpecificAppsIndex;
- CApaAppSCRFetchInfo* iAppSCRFetchInfo;
- TBool iMoreAppInfo;
- TInt iNumEntriesToFetch;
- };
-
-
-
-CApaAppSCRFetchInfo* CApaAppSCRFetchInfo::NewL(TApaSCRFetchAction aSCRFetchAction, RArray<TApaAppUpdateInfo>* aAppUpdateInfo)
- {
- //Ownership of aAppUpdateInfo is transfered to this object.
- CApaAppSCRFetchInfo* self=new (ELeave) CApaAppSCRFetchInfo(aSCRFetchAction, aAppUpdateInfo);
- return(self);
- }
-
-
-CApaAppSCRFetchInfo::CApaAppSCRFetchInfo(TApaSCRFetchAction aSCRFetchAction, RArray<TApaAppUpdateInfo>* aAppUpdateInfo):
- iSCRFetchAction(aSCRFetchAction),
- iAppUpdateInfo(aAppUpdateInfo)
- {
- }
-
-CApaAppSCRFetchInfo::~CApaAppSCRFetchInfo()
- {
- delete iAppUpdateInfo;
- }
-
-RArray<TApaAppUpdateInfo>* CApaAppSCRFetchInfo::AppUpdateInfo()
- {
- return iAppUpdateInfo;
- }
-
-
-TApaSCRFetchAction CApaAppSCRFetchInfo::SCRFetchAction()
- {
- return iSCRFetchAction;
- }
-
-
-//CApaAppList::CApaScrAppInfo
-
-CApaAppList::CApaScrAppInfo* CApaAppList::CApaScrAppInfo::NewL(const Usif::RSoftwareComponentRegistry& aScrCon, TInt aNumEntries)
- {
- CApaScrAppInfo* self=new(ELeave) CApaScrAppInfo(aScrCon, aNumEntries);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-
-CApaAppList::CApaScrAppInfo::CApaScrAppInfo(const Usif::RSoftwareComponentRegistry& aScr, TInt aNumEntries):
- iSCR(aScr),
- iIsSCRRegViewOpen(EFalse),
- iSpecificAppsIndex(-1),
- iAppSCRFetchInfo(NULL),
- iMoreAppInfo(EFalse),
- iNumEntriesToFetch(aNumEntries)
-
- {
- }
-
-void CApaAppList::CApaScrAppInfo::ConstructL()
- {
- }
-
-
-CApaAppList::CApaScrAppInfo::~CApaScrAppInfo()
- {
- if(iAppSCRFetchInfo)
- {
- delete iAppSCRFetchInfo;
- iAppSCRFetchInfo=NULL;
- }
-
- iAppInfo.ResetAndDestroy();
- iSCRFetchInfoQueue.ResetAndDestroy();
- iScrAppView.Close();
- }
-
-/*
- * Gets all the application information available in the SCR. It adds SCR fetch info with action EGetAllAppsInfo to a queue
- * to get all the application information. The information can be obtained one at a time by calling GetNextApplicationInfoL
- * function.
- */
-void CApaAppList::CApaScrAppInfo::GetAllAppsInfoL()
- {
- CApaAppSCRFetchInfo* appSCRFetchInfo = CApaAppSCRFetchInfo::NewL(EGetAllAppsInfo, NULL);
- CleanupStack::PushL(appSCRFetchInfo);
- iSCRFetchInfoQueue.AppendL(appSCRFetchInfo);
- CleanupStack::Pop();
- }
-
-
-/*
- * Gets specific application information from the SCR. It adds SCR fetch info request with action EGetSpecificAppsInfo
- * along with the required uid list to the queue. The information can be obtained one at a time by calling GetNextApplicationInfoL
- * function.
- */
-void CApaAppList::CApaScrAppInfo::GetSpecificAppsInfoL(RArray<TApaAppUpdateInfo>* aAppUpdateInfo)
- {
- CApaAppSCRFetchInfo* appSCRFetchInfo=CApaAppSCRFetchInfo::NewL(EGetSpecificAppsInfo, aAppUpdateInfo);
- CleanupStack::PushL(appSCRFetchInfo);
- iSCRFetchInfoQueue.AppendL(appSCRFetchInfo);
- CleanupStack::Pop();
- }
-
-/*
- * Create array of uids from TApaAppUpdateInfo array.
- */
-void CApaAppList::CApaScrAppInfo::GetAppUidListL(RArray<TApaAppUpdateInfo>& aAppUpdateInfoArr, RArray<TUid>& aAppUids)
- {
- TInt count=aAppUpdateInfoArr.Count();
-
- for(TInt index=0;index<count;index++)
- {
- TApaAppUpdateInfo appUpdateInfo=aAppUpdateInfoArr[index];
- aAppUids.AppendL(appUpdateInfo.iAppUid);
- }
- }
-
-
-TApaSCRFetchAction CApaAppList::CApaScrAppInfo::GetSCRFetchAction()
-{
- return iAppSCRFetchInfo->SCRFetchAction();
-}
-
-
-/*
- * Provides one application information at a time. Returns Null UID if no more application information available.
- * Ownership of aAppData is transfered to calling function.
- */
-TUid CApaAppList::CApaScrAppInfo::GetNextApplicationInfo(TApaAppUpdateInfo::TApaAppAction& aAppAction, Usif::CApplicationRegistrationData*& aAppData)
- {
- aAppData=NULL;
- TUid appUid=KNullUid;
-
- while(appUid==KNullUid)
- {
- //If there is no valid current SCR fetch information, get it from SCR fetch info queue
- if(!iAppSCRFetchInfo)
- {
- if(iSCRFetchInfoQueue.Count()>0)
- {
- //Get next SCR fetch info
- iAppSCRFetchInfo=iSCRFetchInfoQueue[0];
- iSCRFetchInfoQueue.Remove(0);
- iMoreAppInfo=ETrue;
- }
- else
- {
- //No more SCR fetch information avaialable.
- break;
- }
- }
-
- //Get next application information
- if(iAppSCRFetchInfo->SCRFetchAction()==EGetAllAppsInfo)
- {
- //If there is a leave with current SCR fetch info, ignore and proceed with next SCR fetch info
- TRAP_IGNORE(appUid=GetAllAppsNextApplicationInfoL(aAppAction, aAppData));
- }
- else
- {
- //If there is a leave with current SCR fetch info, ignore and proceed with next SCR fetch info
- TRAP_IGNORE(appUid=GetSpecificAppsNextApplicationInfoL(aAppAction, aAppData));
- }
-
- if(appUid==KNullUid)
- {
- //If no application information avaialble with current fetch action reset the values for next SCR fetch action.
- delete iAppSCRFetchInfo;
- iAppSCRFetchInfo=NULL;
- iScrAppView.Close();
- iIsSCRRegViewOpen=EFalse;
- }
- }
-
- return(appUid);
- }
-
-TUid CApaAppList::CApaScrAppInfo::GetAllAppsNextApplicationInfoL(TApaAppUpdateInfo::TApaAppAction& aAppAction, Usif::CApplicationRegistrationData*& aAppData)
- {
- TUid appUid=KNullUid;
-
- if(iAppInfo.Count()==0 && iMoreAppInfo)
- {
- //Open registry view if its not open.
- if(!iIsSCRRegViewOpen)
- {
- TInt err=KErrNone;
- TInt timeOut=KSCRConnectionWaitTime;
-
- //Retry if an error occurs while opening a SCR view.
- while(timeOut < KSCRConnectionWaitTime*8)
- {
- TRAP(err, iScrAppView.OpenViewL(iSCR));
- if(err != KErrNone)
- {
- User::After(timeOut);
- timeOut= (2*timeOut);
- }
- else
- {
- break;
- }
- }
- User::LeaveIfError(err);
- iIsSCRRegViewOpen=ETrue;
- }
-
- //Get next available applications information.
- iScrAppView.GetNextApplicationRegistrationInfoL(iNumEntriesToFetch, iAppInfo);
- if(iAppInfo.Count()<KNumAppEntriesFromSCR)
- iMoreAppInfo=EFalse;
- }
-
- //If no application information avaialble, return Null UID.
- if(iAppInfo.Count()==0)
- return KNullUid;
-
- aAppData=iAppInfo[0];
- aAppAction=TApaAppUpdateInfo::EAppPresent;
- iAppInfo.Remove(0);
- appUid=aAppData->AppUid();
- return appUid;
- }
-
-
-/*
- * Gets next application information when specific applications information requested.
- */
-TUid CApaAppList::CApaScrAppInfo::GetSpecificAppsNextApplicationInfoL(TApaAppUpdateInfo::TApaAppAction& aAppAction, Usif::CApplicationRegistrationData*& aAppData)
- {
- TUid appUid=KNullUid;
- TApaAppUpdateInfo::TApaAppAction action = TApaAppUpdateInfo::EAppNotPresent; //To make compiler happy
- Usif::CApplicationRegistrationData* appData=NULL;
-
- while(appUid==KNullUid)
- {
- if(iAppInfo.Count()==0 && iMoreAppInfo)
- {
- //Open registry view if its not open and also provides application uid list for which applist needs to be updated.
- if(!iIsSCRRegViewOpen)
- {
- RArray<TUid> appUids;
- CleanupClosePushL(appUids);
- //Get application uids list.
- GetAppUidListL(*iAppSCRFetchInfo->AppUpdateInfo(), appUids);
-
- TInt err=KErrNone;
- do
- {
- TRAP(err, iScrAppView.OpenViewL(iSCR, appUids));
- if(err)
- User::After(KSCRConnectionWaitTime);
- }
- while(err!=KErrNone);
-
- CleanupStack::PopAndDestroy();
- iIsSCRRegViewOpen=ETrue;
- iSpecificAppsIndex=0;
- }
-
- //Get next available applications information.
- iScrAppView.GetNextApplicationRegistrationInfoL(iNumEntriesToFetch,iAppInfo);
- if(iAppInfo.Count()<KNumAppEntriesFromSCR)
- iMoreAppInfo=EFalse;
- }
-
- RArray<TApaAppUpdateInfo>& appUpdateInfo=*iAppSCRFetchInfo->AppUpdateInfo();
-
-
- if(iSpecificAppsIndex<appUpdateInfo.Count())
- {
- appUid=appUpdateInfo[iSpecificAppsIndex].iAppUid;
- action=appUpdateInfo[iSpecificAppsIndex].iAction;
-
- //If application information avaialable, and if application action is not uninstalled or
- //If application action is uninstalled and the uninstalled application exists in SCR,
- //then get the info and assign to aAppData.
- if(iAppInfo.Count()>0)
- {
- if(iAppInfo[0]->AppUid()==appUid)
- {
- appData=iAppInfo[0];
- iAppInfo.Remove(0);
- }
- }
-
- iSpecificAppsIndex++;
-
- //If action is not uninstalled, there should be application data in SCR. Otherwise skip the application action.
- if((action!=TApaAppUpdateInfo::EAppNotPresent) && appData==NULL)
- {
- appUid=KNullUid;
- }
-
- }
- //If there are no more applications in the current update applist, break the loop;
- if(appUpdateInfo.Count()==iSpecificAppsIndex)
- break;
- }
-
- aAppData=appData;
- aAppAction=action;
- return appUid;
- }
-
-#endif
-
+
//
// Local functions
//
@@ -487,29 +108,26 @@
//
EXPORT_C CApaAppList* CApaAppList::NewL(RFs& aFs, TBool aLoadMbmIconsOnDemand, TInt aIdlePeriodicDelay)
- {
- CApaAppList* self=new (ELeave) CApaAppList(aFs, aLoadMbmIconsOnDemand, aIdlePeriodicDelay);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
+ {
+ CApaAppList* self=new (ELeave) CApaAppList(aFs, aLoadMbmIconsOnDemand, aIdlePeriodicDelay);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
CApaAppList::CApaAppList(RFs& aFs, TBool aLoadMbmIconsOnDemand, TInt aIdlePeriodicDelay)
- :iFs(aFs),
- iFlags(0),
- iIdlePeriodicDelay(aIdlePeriodicDelay),
- iLoadMbmIconsOnDemand(aLoadMbmIconsOnDemand),
- iUninstalledApps(NULL)
- {
- }
-
+ :iFs(aFs),
+ iFlags(0),
+ iIdlePeriodicDelay(aIdlePeriodicDelay),
+ iLoadMbmIconsOnDemand(aLoadMbmIconsOnDemand),
+ iUninstalledApps(NULL)
+ {
+ }
void CApaAppList::ConstructL()
{
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
iAppRegFinder = CApaAppRegFinder::NewL(iFs);
-#endif
User::LeaveIfError(iFsShareProtected.Connect());
User::LeaveIfError(iFsShareProtected.ShareProtected());
@@ -517,11 +135,8 @@
//Start language change monitor.
iAppLangMonitor = CApaLangChangeMonitor::NewL(*this);
-
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
const TInt KArrayGranularity = 128;
iForcedRegistrations = new (ELeave) CDesCArraySeg(KArrayGranularity);
-#endif
// Init the AppsList cache paths
_LIT(KAppsListCacheFileName, ":\\private\\10003a3f\\AppsListCache\\AppsList.bin");
@@ -561,14 +176,12 @@
delete iDefaultIconArray;
delete iDefaultAppIconMbmFileName;
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
delete iAppRegFinder;
- delete iForcedRegistrations;
-#endif
delete iAppIdler;
delete iAppListStorer;
delete iAppIconLoader;
delete iAppLangMonitor;
+ delete iForcedRegistrations;
delete iIconCaptionObserver;
delete iIconCaptionOverrides;
iAppsListCacheFileName.Close();
@@ -577,16 +190,8 @@
iCustomAppList.ResetAndDestroy();
iCustomAppList.Close();
-
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
- iForceRegAppUids.Close();
- delete iScrAppInfo;
- iScr.Close();
-#endif
}
-
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
// Stop scanning applications if installation or uninstallation has started
EXPORT_C void CApaAppList::StopScan(TBool aNNAInstall)
{
@@ -601,7 +206,7 @@
}
UndoSetPending(iAppData);
}
-
+
// Allow scanning when installation or uninstallation is complete
EXPORT_C void CApaAppList::RestartScanL()
{
@@ -613,7 +218,18 @@
{
return iNNAInstallation;
}
-#endif
+
+void CApaAppList::UndoSetPending(CApaAppData* aAppData)
+ // Reset all apps to pevious pending state so they don't get purged
+ {
+ for (; aAppData; aAppData = aAppData->iNext)
+ {
+ if (aAppData->iIsPresent == CApaAppData::EPresentPendingUpdate)
+ {
+ aAppData->iIsPresent = CApaAppData::EIsPresent;
+ }
+ }
+ }
EXPORT_C void CApaAppList::StartIdleUpdateL()
/** Updates the list asynchronously, using an idle time active object,
@@ -651,8 +267,7 @@
delete iAppIdler;
iAppIdler=NULL;
}
-
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
// DEF072701
// When performing the update scan let the idle object have lower priority.
if (IsFirstScanComplete())
@@ -665,133 +280,16 @@
}
SetPending(iAppData);
iAppRegFinder->FindAllAppsL(CApaAppRegFinder::EScanAllDrives);
- // DEF072701
- // If this is the first scan i.e the boot scan then it may take some time. Thus
- // the periodic delay value should be used so that this process will stop periodically
- // to allow time for other processes.
- // If this is just a re-scan it should take much less time. Therefore it should just
- // be completed in one go rather than periodically delayed. Thus the delay value
- // should be set to 0.
- iAppIdler->Start(KIdleStartDelay, IsFirstScanComplete()? 0 : iIdlePeriodicDelay, TCallBack(IdleUpdateCallbackL, this));
-#else
-
- iAppIdler=CPeriodic::NewL(CActive::EPriorityStandard);
- iAppIdler->Start(KIdleStartDelay, IsFirstScanComplete()? 0 : iIdlePeriodicDelay, TCallBack(IdleUpdateCallbackL, this));
-
-#endif
- }
-
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-EXPORT_C void CApaAppList::InitializeApplistL(MApaAppListObserver* aObserver)
- {
- if(!iScr.Handle())
- User::LeaveIfError(iScr.Connect());
-
- if(iScrAppInfo==NULL)
- iScrAppInfo=CApaScrAppInfo::NewL(iScr, KNumAppEntriesFromSCR);
-
- iScrAppInfo->GetAllAppsInfoL();
-
- StartIdleUpdateL(aObserver);
- }
-
-
-void CApaAppList::InitializeLangAppListL()
- {
- if(!iScr.Handle())
- User::LeaveIfError(iScr.Connect());
-
- if(iScrAppInfo==NULL)
- iScrAppInfo=CApaScrAppInfo::NewL(iScr, KNumAppEntriesFromSCR);
-
- iScrAppInfo->GetAllAppsInfoL();
-
- // set iIsLangChangePending=ETrue, to all the application present in the applist
- CApaAppData* appData=iAppData;
- while(appData)
- {
- appData->iIsLangChangePending=ETrue;
- appData=appData->iNext;
- }
- }
-
-
-EXPORT_C void CApaAppList::UpdateApplistL(MApaAppListObserver* aObserver, RArray<TApaAppUpdateInfo>* aAppUpdateInfo, TUid aSecureID)
- {
- //If update applist is called by SWI, clear force registrations from applist.
- if(aSecureID == KUidSisLaunchServer)
- {
- TInt count=iForceRegAppUids.Count();
- for(TInt index=0; index<count; index++)
- FindAndDeleteApp(iForceRegAppUids[index]);
- iForceRegAppUids.Reset();
- }
-
- if(aAppUpdateInfo->Count() == 0)
- return;
-
- //If SCR connection is not valid then connect.
- if(!iScr.Handle())
- User::LeaveIfError(iScr.Connect());
-
- if(iScrAppInfo==NULL)
- iScrAppInfo=CApaScrAppInfo::NewL(iScr, KNumAppEntriesFromSCR);
-
- iScrAppInfo->GetSpecificAppsInfoL(aAppUpdateInfo);
-
- if(IsIdleUpdateComplete())
- StartIdleUpdateL(aObserver);
- }
-
-void CleanupAndDestroyAppInfoArray(TAny* aRPArray)
- {
- RPointerArray<Usif::CApplicationRegistrationData>* rpArray = (static_cast<RPointerArray<Usif::CApplicationRegistrationData>*>(aRPArray));
- rpArray->ResetAndDestroy();
- rpArray->Close();
- }
-
-
-EXPORT_C void CApaAppList::UpdateApplistByForceRegAppsL(RPointerArray<Usif::CApplicationRegistrationData>& aForceRegAppsInfo)
- {
- //Get number of force registered application information.
- TInt count=aForceRegAppsInfo.Count();
- Usif::RSoftwareComponentRegistry scr;
- User::LeaveIfError(scr.Connect());
- CleanupClosePushL(scr);
-
- //As this function takes the ownership of aForceRegAppsInfo, this needs to be destroyed if any leave occurs.
- TCleanupItem cleanup(CleanupAndDestroyAppInfoArray, &aForceRegAppsInfo);
- CleanupStack::PushL(cleanup);
-
- //Get each force registered application information and add it to applist.
- for(TInt index=0; index<count; index++)
- {
- Usif::CApplicationRegistrationData* appInfo=aForceRegAppsInfo[index];
- CApaAppData* appData = CApaAppData::NewL(*appInfo, iFs, scr);
- TUid appUid=appInfo->AppUid();
-
- //Delete if the application already exist in the applist.
- FindAndDeleteApp(appUid);
- AddToList(appData);
- //Maintain added force registered application uids so that it can be cleared from applist
- //once installation complete.
- iForceRegAppUids.AppendL(appUid);
- }
-
- CleanupStack::PopAndDestroy(2); //cleanup, scr
- }
-
-
-// The function transfers ownership of the pointer owned by a CApaAppList to the caller
-// to avoid copying the array.
-EXPORT_C CArrayFixFlat<TApaAppUpdateInfo>* CApaAppList::UpdatedAppsInfo()
-{
- CArrayFixFlat<TApaAppUpdateInfo>* updatedAppsInfo=iAppsUpdated;
- iAppsUpdated=NULL;
- return updatedAppsInfo;
-}
-
-#endif
+
+ // DEF072701
+ // If this is the first scan i.e the boot scan then it may take some time. Thus
+ // the periodic delay value should be used so that this process will stop periodically
+ // to allow time for other processes.
+ // If this is just a re-scan it should take much less time. Therefore it should just
+ // be completed in one go rather than periodically delayed. Thus the delay value
+ // should be set to 0.
+ iAppIdler->Start(KIdleStartDelay, IsFirstScanComplete()? 0 : iIdlePeriodicDelay, TCallBack(IdleUpdateCallbackL, this));
+ }
EXPORT_C void CApaAppList::StartIdleUpdateL(MApaAppListObserver* aObserver)
/** Updates the list asynchronously, using an idle time active object
@@ -829,13 +327,7 @@
@param aObserver Observer to be notified when the update has finished. */
{
-
-#ifdef APPARC_SHOW_TRACE
- RDebug::Printf("[Apparc] *****************START CREATING APPLIST ****************************");
-#endif
-
DeleteAppsListBackUpAndTempFiles();
-
TInt ret = KErrGeneral;
#ifndef __WINS__ // on the emulator, don't read app list from file, as doing so means apps
// built while the emulator isn't running won't appear in the list
@@ -846,12 +338,7 @@
// There was an error during restore, so update the list asynchronously.
DeleteAppData();
iFs.Delete(iAppsListCacheFileName);
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
- InitializeApplistL(aObserver);
-#else
- StartIdleUpdateL(aObserver);
-#endif
-
+ StartIdleUpdateL(aObserver);
}
else
{
@@ -873,6 +360,36 @@
iAppIconLoader->Start();
}
+void CApaAppList::ScanRemovableDrivesAndUpdateL()
+/** Rename Appslist.bin file to AppsList_Backup.bin, so that it can be renamed back,
+ if the update scan on removable media drives does not change applist. */
+ {
+ const TArray<const TDriveUnitInfo> listOfRemovableMediaDrives = iAppRegFinder->DriveList();
+ const TInt count = listOfRemovableMediaDrives.Count();
+
+ // Removable media scan would take place only if removable drives are present.
+ if (count)
+ {
+ CApaAppData* appData = iAppData;
+ while (appData)
+ {
+ for (TInt driveIndex = 0; driveIndex < count; ++driveIndex)
+ {
+ if (TParsePtrC(*appData->iRegistrationFile).Drive() == listOfRemovableMediaDrives[driveIndex].iUnit.Name())
+ {
+ appData->SetAppPending();
+ break;
+ }
+ }
+ appData = appData->iNext;
+ }
+
+ while (IdleUpdateL())
+ { // It updates the removable media apps present in AppList if it has changed.
+
+ };
+ }
+ }
void CApaAppList::DeleteAppsListBackUpAndTempFiles()
/** Deletes all files inside AppsListCache folder except AppsList.bin */
@@ -967,7 +484,7 @@
{
//Leave if the current version is different from the previous stored version and recreate applist.
#ifdef _DEBUG
- RDebug::Print(_L("[Apparc] !!Firmware update detected!! Rebuilding AppList"));
+ RDebug::Print(_L("!!Firmware update detected!! Rebuilding AppList"));
#endif
User::Leave(KErrGeneral);
}
@@ -978,7 +495,7 @@
if (err != KErrPathNotFound && err != KErrNotFound)
{
#ifdef _DEBUG
- RDebug::Print(_L("[Apparc] !!Error %d reading Firmware version. Rebuilding AppList"),err);
+ RDebug::Print(_L("!!Error %d reading Firmware version. Rebuilding AppList"),err);
#endif
User::Leave(err);
}
@@ -1016,9 +533,6 @@
// Close the stream;
CleanupStack::PopAndDestroy(&theReadStream);
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
- iFlags |= ENotifyUpdateOnFirstScanComplete;
-#else
iFs.Rename(iAppsListCacheFileName, iAppsListCacheBackUpFileName);
iAppRegFinder->FindAllAppsL(CApaAppRegFinder::EScanRemovableDrives); // Builds the Removable Media Drive List
@@ -1026,7 +540,6 @@
// It runs an update scan on removable media apps.
ScanRemovableDrivesAndUpdateL();
-#endif
}
EXPORT_C TBool CApaAppList::IsLanguageChangePending() const
@@ -1074,7 +587,7 @@
else
iObserver->NotifyScanComplete(); // NotifyScanComplete will notify clients for scan complete.
- //iObserver=NULL;
+ iObserver=NULL;
}
}
@@ -1084,219 +597,9 @@
iAppIdler=NULL;
}
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
-
-// returns ETrue if there more application information avaialable.
-TInt CApaAppList::IdleUpdateL()
- {
-
- Usif::CApplicationRegistrationData* appInfo=NULL;
- TApaAppUpdateInfo::TApaAppAction action=TApaAppUpdateInfo::EAppPresent; //to make compiler happy. Actual value is assigned by GetNextApplicationInfo
- TUid appUid;
-
- //Ownership of appInfo is transfered to this function.
- appUid=iScrAppInfo->GetNextApplicationInfo(action,appInfo);
-
- if(appUid==KNullUid)
- return EFalse;
-
- CleanupStack::PushL(appInfo);
- CApaAppData *appData=NULL;
- CApaAppData* app = NULL;
-
- switch(action)
- {
- case TApaAppUpdateInfo::EAppNotPresent:
- if(appInfo==NULL)
- {
- TInt ret=FindAndDeleteApp(appUid);
- if(ret==KErrNone)
- iFlags |= EAppListHasChanged;
-
- //Add uninstalled application UID to a list
- if(iUninstalledApps==NULL)
- iUninstalledApps=new(ELeave) CArrayFixFlat<TUid>(1);
-
- iUninstalledApps->AppendL(appUid);
- }
- break;
-
- case TApaAppUpdateInfo::EAppPresent:
- // holds the application information from Applist
- app = AppDataByUid(appInfo->AppUid());
-
- if( app && IsLanguageChangePending() && (iScrAppInfo->GetSCRFetchAction() == EGetAllAppsInfo))
- {
- //Application needs to be updated because of language change
- RPointerArray<Usif::CLocalizableAppInfo> localisationInfo;
- localisationInfo=appInfo->LocalizableAppInfoList();
- ASSERT(!(localisationInfo.Count()>1));
-
- if((localisationInfo.Count()>0) && (app->ApplicationLanguage() != localisationInfo[0]->ApplicationLanguage()))
- {
- // holds the application information read from SCR db
- appData=CApaAppData::NewL(*appInfo, iFs, iScr);
- FindAndDeleteApp(appUid);
- AddToList(appData);
- iFlags |= EAppListHasChanged;
- }
- else
- {
- app->iIsLangChangePending=EFalse;
- }
- }
- else
- {
- // holds the application information read from SCR db
- appData=CApaAppData::NewL(*appInfo, iFs, iScr);
- if(app)
- {
- //Application found in applist. Delete existing application information from applist and create new
- //application information object and add to the applist.
- FindAndDeleteApp(appUid);
- AddToList( appData );
- }
- else
- {
- AddToList( appData );
- }
- iFlags |= EAppListHasChanged;
- }
-
- break;
-
- case TApaAppUpdateInfo::EAppInfoChanged:
- appData=CApaAppData::NewL(*appInfo, iFs, iScr);
- //Delete existing application information from applist and create new application information object and
- //add to the applist.
- FindAndDeleteApp(appUid);
- AddToList( appData );
- iFlags |= EAppListHasChanged;
- break;
- }
-
- //If first scan not complete or if phone language is changed then clear the updated application list
- //Otherwise add application updated apps list
- if(!(iFlags&EFirstScanComplete) || (iFlags&ELangChangePending))
- {
- if(!iAppsUpdated)
- delete iAppsUpdated;
- iAppsUpdated=NULL;
- }
- else
- {
- if(!iAppsUpdated)
- iAppsUpdated= new(ELeave) CArrayFixFlat<TApaAppUpdateInfo>(1);
-
- TApaAppUpdateInfo appUpdateInfo(appUid, action);
- iAppsUpdated->AppendL(appUpdateInfo);
- }
-
- CleanupStack::PopAndDestroy(appInfo);
- return ETrue;
- }
-
-
-
-/*
- * Finds and delete an application from applist.
- */
-TInt CApaAppList::FindAndDeleteApp(TUid aAppUid)
- {
- CApaAppData* appData=iAppData;
- CApaAppData* prevAppData=NULL;
-
- while(appData && appData->iUidType[2] != aAppUid)
- {
- prevAppData=appData;
- appData=appData->iNext;
- }
-
- if(appData)
- {
- if(prevAppData)
- {
- //If the application position is not the first application in the list
- prevAppData->iNext=appData->iNext;
- }
- else
- {
- //If the application position is first in the list
- iAppData=appData->iNext;
- }
-
-#ifdef APPARC_SHOW_TRACE
- if(appData)
- {
- RDebug::Print(_L("[Apparc] Application with UID: %X is deleted from applist"), appData->iUidType[2]);
- }
-#endif
-
- delete appData;
- return(KErrNone);
- }
-
- //if application not found, return KErrNotFound
- return(KErrNotFound);
- }
-
-/**
-@internalComponent
-*/
-EXPORT_C CApaAppData* CApaAppList::FindAndAddSpecificAppL(TUid aAppUid)
- {
- Usif::RSoftwareComponentRegistry scrCon;
- //If SCR connection not avaialable then connect to SCR. Otherwise use the
- //existing connection.
- if(!iScr.Handle())
- {
- User::LeaveIfError(scrCon.Connect());
- CleanupClosePushL(scrCon);
- }
- else
- scrCon=iScr;
-
-
- //Pass 1 as number of entries to fetch from SCR as only specific application information is required.
- CApaScrAppInfo *scrAppInfo=CApaScrAppInfo::NewL(scrCon, 1);
- CleanupStack::PushL(scrAppInfo);
-
- RArray<TApaAppUpdateInfo>* appUpdateInfoList=new (ELeave) RArray<TApaAppUpdateInfo>(1);
- CleanupStack::PushL(appUpdateInfoList);
- TApaAppUpdateInfo appUpdateInfo(aAppUid, TApaAppUpdateInfo::EAppPresent) ;
- appUpdateInfoList->AppendL(appUpdateInfo);
-
- scrAppInfo->GetSpecificAppsInfoL(appUpdateInfoList);
- CleanupStack::Pop(appUpdateInfoList);
-
- Usif::CApplicationRegistrationData* appInfo=NULL;
- TApaAppUpdateInfo::TApaAppAction action;
- TUid uid;
- uid=scrAppInfo->GetNextApplicationInfo(action, appInfo);
- CleanupStack::PushL(appInfo);
-
- CApaAppData *appData=NULL;
- if(appInfo)
- {
- appData=CApaAppData::NewL(*appInfo, iFs, scrCon);
- FindAndDeleteApp(uid);
- AddToList(appData);
- iFlags |= EAppListHasChanged;
- }
- CleanupStack::PopAndDestroy(2, scrAppInfo);
-
- //If SCR session established in this function, then close it.
- if(!iScr.Handle())
- CleanupStack::PopAndDestroy();
-
- return appData;
- }
-
-#else
TInt CApaAppList::IdleUpdateL()
// returns ETrue if there is more scanning to be done.
{
-
TBool more=EFalse;
TApaAppEntry currentApp = TApaAppEntry();
TRAPD(err, more = iAppRegFinder->NextL(currentApp, *iForcedRegistrations));
@@ -1332,205 +635,6 @@
return more;
}
-void CApaAppList::UpdateNextAppL(const TApaAppEntry& aAppEntry,TBool& aHasChanged)
- {
- CApaAppData* appData=AppDataByUid(aAppEntry.iUidType[2]);
- if (appData==NULL)
- {// not in list, so add it at the start
- TRAPD(err,appData=CApaAppData::NewL(aAppEntry, iFs));
- if (err==KErrNone)
- {
- AddToList( appData );
- aHasChanged=ETrue;
- }
- }
- else if (appData->IsPending())
- { // not found yet during current scan - we may need to override this one
-
- // On a system which scans for registration .RSC files (V2 apps) first, followed by
- // .APP files (V1 apps), it's valid for a V1 app to override a V2 app (if the V2 app
- // has just been removed). If this is the case, assume it's ok to compare the V1 .APP filename,
- // with the V2 .RSC filename as their filenames will never match (which is what we want in this case).
- TPtrC currentFileName;
- if (appData->RegistrationFileUsed())
- currentFileName.Set(*appData->iRegistrationFile);
- else
- currentFileName.Set(*appData->iFullName);
-
- if (aAppEntry.iFullName.CompareF(currentFileName)!=0)
- {
- delete appData->iSuccessor;
- appData->iSuccessor = NULL;
- appData->iSuccessor = CApaAppEntry::NewL(aAppEntry);
-
- appData->iIsPresent = CApaAppData::ESuperseded;
- aHasChanged=ETrue;
- }
- else
- {
- if (appData->Update() || appData->iIsPresent==CApaAppData::ENotPresentPendingUpdate)
- aHasChanged=ETrue;
-
- appData->iIsPresent = CApaAppData::EIsPresent;
- }
- }
- }
-
-void CApaAppList::SetPending(CApaAppData* aAppData)
- // set all apps to pending update - we'll find them again as we scan
- {
- for (; aAppData; aAppData = aAppData->iNext)
- aAppData->SetAppPending();
- }
-
-void CApaAppList::SetNotFound(CApaAppData* aAppData, TBool& aHasChanged)
- // mark any unfound apps not present
- {
- while (aAppData)
- {
- if (aAppData->IsPending())
- {
- aAppData->iIsPresent = CApaAppData::ENotPresent;
- aHasChanged = ETrue;
- }
- aAppData = aAppData->iNext;
- }
- }
-
-EXPORT_C void CApaAppList::PurgeL()
-/** Removes any applications from the list if they are no longer present
-on the phone. It updates applications that have been
-superceded. */
- {
- CApaAppData* appData=iAppData;
- CApaAppData* prev=NULL;
- while (appData)
- {
- CApaAppData* next=appData->iNext;
- if (appData->iIsPresent==CApaAppData::ENotPresent)
- {
- if (prev)
- prev->iNext=next;
- else
- iAppData=next;
-
- //Add uninstalled application UID to a list
- if(iUninstalledApps==NULL)
- iUninstalledApps=new(ELeave) CArrayFixFlat<TUid>(1);
-
- iUninstalledApps->AppendL(appData->AppEntry().iUidType[2]);
-
- delete appData;
- }
- else if (appData->iIsPresent==CApaAppData::ESuperseded)
- {
- CApaAppData* newApp=NULL;
- TApaAppEntry appEntry;
- appData->iSuccessor->Get(appEntry);
- TRAPD(err,newApp=CApaAppData::NewL(appEntry, iFs));
- if (err==KErrNone)
- {
- // remove the old one and add the new one in its place
- if (prev)
- prev->iNext=newApp;
- else
- iAppData=newApp;
-
- newApp->iNext = appData->iNext;
- delete appData;
- // increment the iterator
- prev = newApp;
- }
- }
- else
- prev=appData;
-
- appData=next;
- }
- }
-
-void CApaAppList::ScanRemovableDrivesAndUpdateL()
-/** Rename Appslist.bin file to AppsList_Backup.bin, so that it can be renamed back,
- if the update scan on removable media drives does not change applist. */
- {
- const TArray<const TDriveUnitInfo> listOfRemovableMediaDrives = iAppRegFinder->DriveList();
- const TInt count = listOfRemovableMediaDrives.Count();
-
- // Removable media scan would take place only if removable drives are present.
- if (count)
- {
- CApaAppData* appData = iAppData;
- while (appData)
- {
- for (TInt driveIndex = 0; driveIndex < count; ++driveIndex)
- {
- if (TParsePtrC(*appData->iRegistrationFile).Drive() == listOfRemovableMediaDrives[driveIndex].iUnit.Name())
- {
- appData->SetAppPending();
- break;
- }
- }
- appData = appData->iNext;
- }
-
- while (IdleUpdateL())
- { // It updates the removable media apps present in AppList if it has changed.
-
- };
- }
- }
-
-void CApaAppList::UndoSetPending(CApaAppData* aAppData)
- // Reset all apps to pevious pending state so they don't get purged
- {
- for (; aAppData; aAppData = aAppData->iNext)
- {
- if (aAppData->iIsPresent == CApaAppData::EPresentPendingUpdate)
- {
- aAppData->iIsPresent = CApaAppData::EIsPresent;
- }
- }
- }
-
-/**
-@internalComponent
-*/
-EXPORT_C CApaAppData* CApaAppList::FindAndAddSpecificAppL(CApaAppRegFinder* aFinder, TUid aAppUid)
- {
-//Scans and adds the specified application to the app list if found
- __ASSERT_DEBUG(aFinder, Panic(EPanicNullPointer));
- TBool found = EFalse;
- TApaAppEntry appEntry;
- aFinder->FindAllAppsL(CApaAppRegFinder::EScanAllDrives);
- while (aFinder->NextL(appEntry, *iForcedRegistrations))
- {
- if (appEntry.iUidType[2] == aAppUid)
- {
- found = ETrue;
- break;
- }
- }
-
- CApaAppData* app = NULL;
- if (found)
- {
- // add the app to the list
- TBool hasChanged = EFalse;
- CApaAppData* prevFirstAppInList = iAppData;
- UpdateNextAppL(appEntry, hasChanged);
- if (iAppData != prevFirstAppInList)
- app = iAppData; // assume the new app was added to the list
-
- if (hasChanged)
- iFlags |= EAppListHasChanged;
- }
-
- return app;
- return NULL;
- }
-
-#endif
-
EXPORT_C TBool CApaAppList::IsIdleUpdateComplete() const
/** Tests whether an asynchronous update of the list is currently in progress.
@@ -1540,19 +644,165 @@
return iAppIdler == NULL;
}
+void CApaAppList::SetPending(CApaAppData* aAppData)
+ // set all apps to pending update - we'll find them again as we scan
+ {
+ for (; aAppData; aAppData = aAppData->iNext)
+ aAppData->SetAppPending();
+ }
+
+void CApaAppList::SetNotFound(CApaAppData* aAppData, TBool& aHasChanged)
+ // mark any unfound apps not present
+ {
+ while (aAppData)
+ {
+ if (aAppData->IsPending())
+ {
+ aAppData->iIsPresent = CApaAppData::ENotPresent;
+ aHasChanged = ETrue;
+ }
+ aAppData = aAppData->iNext;
+ }
+ }
void CApaAppList::AddToList( CApaAppData* aAppData )
{
__ASSERT_DEBUG(aAppData, Panic(EPanicNullPointer));
aAppData->iNext=iAppData;
iAppData=aAppData;
+ }
+
+void CApaAppList::UpdateNextAppL(const TApaAppEntry& aAppEntry,TBool& aHasChanged)
+ {
+ CApaAppData* appData=AppDataByUid(aAppEntry.iUidType[2]);
+ if (appData==NULL)
+ {// not in list, so add it at the start
+ TRAPD(err,appData=CApaAppData::NewL(aAppEntry, iFs));
+ if (err==KErrNone)
+ {
+ AddToList( appData );
+ aHasChanged=ETrue;
+ }
+ }
+ else if (appData->IsPending())
+ { // not found yet during current scan - we may need to override this one
+
+ // On a system which scans for registration .RSC files (V2 apps) first, followed by
+ // .APP files (V1 apps), it's valid for a V1 app to override a V2 app (if the V2 app
+ // has just been removed). If this is the case, assume it's ok to compare the V1 .APP filename,
+ // with the V2 .RSC filename as their filenames will never match (which is what we want in this case).
+ TPtrC currentFileName;
+ if (appData->RegistrationFileUsed())
+ currentFileName.Set(*appData->iRegistrationFile);
+ else
+ currentFileName.Set(*appData->iFullName);
-#ifdef APPARC_SHOW_TRACE
- RDebug::Print(_L("[Apparc] Application with UID: %X is added to applist"), aAppData->iUidType[2]);
-#endif
-
+ if (aAppEntry.iFullName.CompareF(currentFileName)!=0)
+ {
+ delete appData->iSuccessor;
+ appData->iSuccessor = NULL;
+ appData->iSuccessor = CApaAppEntry::NewL(aAppEntry);
+
+ appData->iIsPresent = CApaAppData::ESuperseded;
+ aHasChanged=ETrue;
+ }
+ else
+ {
+ if (appData->Update() || appData->iIsPresent==CApaAppData::ENotPresentPendingUpdate)
+ aHasChanged=ETrue;
+
+ appData->iIsPresent = CApaAppData::EIsPresent;
+ }
+ }
}
+/**
+@internalComponent
+*/
+EXPORT_C CApaAppData* CApaAppList::FindAndAddSpecificAppL(CApaAppRegFinder* aFinder, TUid aAppUid)
+ {
+//Scans and adds the specified application to the app list if found
+ __ASSERT_DEBUG(aFinder, Panic(EPanicNullPointer));
+ TBool found = EFalse;
+ TApaAppEntry appEntry;
+ aFinder->FindAllAppsL(CApaAppRegFinder::EScanAllDrives);
+ while (aFinder->NextL(appEntry, *iForcedRegistrations))
+ {
+ if (appEntry.iUidType[2] == aAppUid)
+ {
+ found = ETrue;
+ break;
+ }
+ }
+
+ CApaAppData* app = NULL;
+ if (found)
+ {
+ // add the app to the list
+ TBool hasChanged = EFalse;
+ CApaAppData* prevFirstAppInList = iAppData;
+ UpdateNextAppL(appEntry, hasChanged);
+ if (iAppData != prevFirstAppInList)
+ app = iAppData; // assume the new app was added to the list
+
+ if (hasChanged)
+ iFlags |= EAppListHasChanged;
+ }
+
+ return app;
+ }
+
+EXPORT_C void CApaAppList::PurgeL()
+/** Removes any applications from the list if they are no longer present
+on the phone. It updates applications that have been
+superceded. */
+ {
+ CApaAppData* appData=iAppData;
+ CApaAppData* prev=NULL;
+ while (appData)
+ {
+ CApaAppData* next=appData->iNext;
+ if (appData->iIsPresent==CApaAppData::ENotPresent)
+ {
+ if (prev)
+ prev->iNext=next;
+ else
+ iAppData=next;
+
+ //Add uninstalled application UID to a list
+ if(iUninstalledApps==NULL)
+ iUninstalledApps=new(ELeave) CArrayFixFlat<TUid>(1);
+
+ iUninstalledApps->AppendL(appData->AppEntry().iUidType[2]);
+
+ delete appData;
+ }
+ else if (appData->iIsPresent==CApaAppData::ESuperseded)
+ {
+ CApaAppData* newApp=NULL;
+ TApaAppEntry appEntry;
+ appData->iSuccessor->Get(appEntry);
+ TRAPD(err,newApp=CApaAppData::NewL(appEntry, iFs));
+ if (err==KErrNone)
+ {
+ // remove the old one and add the new one in its place
+ if (prev)
+ prev->iNext=newApp;
+ else
+ iAppData=newApp;
+
+ newApp->iNext = appData->iNext;
+ delete appData;
+ // increment the iterator
+ prev = newApp;
+ }
+ }
+ else
+ prev=appData;
+
+ appData=next;
+ }
+ }
EXPORT_C TInt CApaAppList::Count() const
/** Gets the count of applications present in the app list.
@@ -1591,7 +841,7 @@
specified screen mode. */
{
- CApaAppData* appData=iAppData;
+ CApaAppData* appData=iValidFirstAppData;
if(aScreenMode!=KIgnoreScreenMode)
{
@@ -1685,7 +935,6 @@
return NULL;
}
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
/**
Adds a registration file to the iForcedRegistrations array.
@@ -1705,7 +954,6 @@
if(iForcedRegistrations)
iForcedRegistrations->Reset();
}
-#endif
/** Finds the preferred application to handle the specified data type.
@@ -1799,19 +1047,7 @@
iObserver->InitialListPopulationComplete();
iValidFirstAppData = iAppData;
iFlags|=EFirstScanComplete;
-
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
iNNAInstallation = EFalse;
-#endif
-
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
- delete iScrAppInfo;
- iScrAppInfo=NULL;
- iScr.Close();
-#endif
-#ifdef APPARC_SHOW_TRACE
- RDebug::Printf("[Apparc] *****************END CREATING APPLIST ****************************");
-#endif
}
/**
@@ -1844,10 +1080,8 @@
if (app)
{
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
if (!app->RegistrationFileUsed())
User::Leave(KErrNotSupported);
-#endif
if (app->iServiceArray)
{
@@ -1877,12 +1111,9 @@
if (app)
{
-
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
if (!app->RegistrationFileUsed())
User::Leave(KErrNotSupported);
-#endif
-
+
if (app->iServiceArray)
{
CArrayFixFlat<TApaAppServiceInfo>& serviceArray = *(app->iServiceArray);
@@ -1918,10 +1149,8 @@
if (app)
{
-#ifndef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
if (!app->RegistrationFileUsed())
User::Leave(KErrNotSupported);
-#endif
if (app->iServiceArray)
{
@@ -2475,9 +1704,6 @@
{
iPrevLanguage = User::Language();
iAppList.iFlags |= CApaAppList::ELangChangePending;
-#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
- iAppList.InitializeLangAppListL();
-#endif
iAppList.StartIdleUpdateL(iAppList.iObserver);
}
}