localisation/apparchitecture/apserv/apsnnappupdates.cpp
branchSymbian3
changeset 57 b8d18c84f71c
parent 6 c108117318cb
--- a/localisation/apparchitecture/apserv/apsnnappupdates.cpp	Wed Jul 28 16:03:37 2010 +0100
+++ b/localisation/apparchitecture/apserv/apsnnappupdates.cpp	Tue Aug 03 10:20:34 2010 +0100
@@ -1,7 +1,7 @@
 // Copyright (c) 2007-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".
 //
@@ -13,9 +13,9 @@
 // Description:
 // Non-Native application registration functionality for the AppArc server session
 // 
+// apsnnappupdates.cpp
 //
 
-
 #include "apsnnappupdates.h"
 
 #include <bautils.h>
@@ -23,10 +23,10 @@
 #include <s32file.h>
 
 #include "APAID.H"
-#include "APGAPLST.H"
-#include "APSSERV.H"
+#include "../aplist/aplapplistitem.h"
+#include "apsserv.h"
 #include "APSSTD.H"
-#include "../apfile/aprfndr.h"
+#include "../aplist/aplappregfinder.h"
 #include "../apgrfx/apprivate.h"
 #include "apsnnapps.h"
 
@@ -155,7 +155,7 @@
 	__ASSERT_DEBUG(iTempPath == KNullDesC, Panic(ENonNativeAppsTFileDetailsCreateTempWithTempPathSet));
 	RFile file;
 	CleanupClosePushL(file);
-	// TODO: remove this hack if/when RFile::Temp is fixed by base
+	// NOTE: remove this workaround if/when RFile::Temp is fixed by base
 	TInt tempErr = KErrAlreadyExists;
 	/* RFile::Temp is a bit dodgy, at least on Winscw with the proxy FS */
 	for(TInt tries = 0; tempErr == KErrAlreadyExists && tries < 50; ++tries)
@@ -212,14 +212,14 @@
 			return err;
 			}
 		}
-	//Check if file already exists, if it exists delete it because we might be trying to register an upgrade
-	if(BaflUtils::FileExists(aFs, iPath))
-		{
-		TInt err = BaflUtils::DeleteFile(aFs, iPath);
-		if(KErrNone != err)
-			{
-			return err;
-			}
+	//Check if file already exists, if it exists delete it because we might be trying to register an upgrade 
+	if(BaflUtils::FileExists(aFs, iPath)) 
+    	{ 
+        TInt err = BaflUtils::DeleteFile(aFs, iPath); 
+        if(KErrNone != err) 
+        	{ 
+            return err; 
+            } 
 		}
 	TInt err = iHandle.Rename(iPath);
 	if(err != KErrNone)
@@ -244,7 +244,7 @@
 	/* create a temp file and delete it to get an unused filename */
 	RFile file;
 	CleanupClosePushL(file);
-	// TODO: remove this hack if/when RFile::Temp is fixed by base
+	// NOTE: remove this workaround if/when RFile::Temp is fixed by base
 	TInt tempErr = KErrAlreadyExists;
 	/* RFile::Temp is a bit dodgy, at least on Winscw with the proxy FS */
 	for(TInt tries = 0; tempErr == KErrAlreadyExists && tries < 50; ++tries)
@@ -706,7 +706,7 @@
 	WriteResourceFileL(iLocalisableResourceFile, aData, aDataPrefix);
 	}
 
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
 
 /**
 Create a new file in a designated temporary-files directory
@@ -782,18 +782,9 @@
 
 void CApsRegisterNonNativeApplication::DoPerformUpdateL(RApsUpdateLog& aUpdateLog)
 	{
-	HBufC* hDrive = iDrive.AllocL();
-	TInt err = aUpdateLog.DrivesAffected().InsertInOrder(hDrive, TLinearOrder<HBufC>(CApaAppList::CompareStrings));
-	if(err != KErrNone)
-		{
-		delete hDrive;
-		}
-
-	if ((err != KErrNone) &&
-	    (err != KErrAlreadyExists)) // We silently ignore attempts to insert duplicates
-		{
-		User::Leave(err);
-		}
+	TRAPD(err,aUpdateLog.DrivesAffected().InsertIsqL(iDrive, ECmpFolded));
+	if (err != KErrAlreadyExists) // We silently ignore attempts to insert duplicates
+		User::LeaveIfError(err);
 	
 	RWriteStream& stream = aUpdateLog.LogWriteStream();
 
@@ -814,18 +805,9 @@
 		iResourceFile.ExternalizeContinuationL(stream, EIconFileUpdate);
 		}
 	
-	HBufC* hPath = iResourceFile.Path().AllocL();
-	err = aUpdateLog.NewRegistrationFiles().InsertInOrder(hPath, TLinearOrder<HBufC>(CApaAppList::CompareStrings));
-	if(err != KErrNone)
-		{
-		delete hPath;
-		}
-	
-	if ((err != KErrNone) &&
-	    (err != KErrAlreadyExists)) // We silently ignore attempts to insert duplicates
-		{
-		User::Leave(err);
-		}
+	TRAP(err,aUpdateLog.NewRegistrationFiles().InsertIsqL(iResourceFile.Path(), ECmpFolded));
+	if (err != KErrAlreadyExists) // We silently ignore attempts to insert duplicates
+		User::LeaveIfError(err);
 	}
 
 void CApsRegisterNonNativeApplication::DoRollbackUpdate(RApsUpdateLog& aUpdateLog)
@@ -849,7 +831,7 @@
 	}
 
 
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
 
 void CApsRegisterNonNativeApplication::ExternalizeL(RWriteStream& aStream)
 	{
@@ -939,18 +921,18 @@
  * CApsDeregisterNonNativeApplication
  **************************************************************************************************************/
 
-CApsDeregisterNonNativeApplication* CApsDeregisterNonNativeApplication::NewL(RFs& aFs, CApaAppListServer& aServ, TUid aUid, TState aState)
+CApsDeregisterNonNativeApplication* CApsDeregisterNonNativeApplication::NewL(RFs& aFs, CApaAppArcServer& aServ, TUid aUid, TState aState)
 	{
 	return new(ELeave)CApsDeregisterNonNativeApplication(aFs, aServ, aUid, aState);
 	}
 
-CApsDeregisterNonNativeApplication::CApsDeregisterNonNativeApplication(RFs& aFs, CApaAppListServer& aServ, TUid aUid, TState aState) :
+CApsDeregisterNonNativeApplication::CApsDeregisterNonNativeApplication(RFs& aFs, CApaAppArcServer& aServ, TUid aUid, TState aState) :
 		CApsNonNativeApplicationsUpdate(aFs, aUid, aState, EDeregisterApplication),
 		iServ(aServ)
 	{
 	}
 
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
 
 
 CApaAppData* CApsDeregisterNonNativeApplication::FindAppDataLC(RApsUpdateLog& aUpdateLog)
@@ -986,18 +968,7 @@
 			entry.iUidType = fsEntry.iType;
 
 			appData = NULL;
-			#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- 				TRAP_IGNORE(appData = CApaAppData::NewL(entry,iFs));
- 			#else
- 				{
- 				// find the default icons (.mbm file) for applications, wrt current locale
- 				TFileName* tempFileName = NULL;
- 				tempFileName->Append(KDefaultAppIconMbm);
- 				BaflUtils::NearestLanguageFile(iFs, *tempFileName); 
- 				HBufC* defaultAppIcon = tempFileName->AllocL();
- 				TRAP_IGNORE(appData = CApaAppData::NewL(entry,iFs,*defaultAppIcon));
- 				}
- 			#endif //SYMBIAN_APPARC_APPINFO_CACHE
+			TRAP_IGNORE(appData = CApaAppData::NewL(entry,iFs));
 			if(appData != NULL)
 				{
 				CleanupStack::PushL(appData);
@@ -1014,10 +985,10 @@
 	TBool found = EFalse;
 	TApaAppEntry appEntry;
 
-	regFinder->FindAllAppsL();
-	RPointerArray<HBufC>& forcedRegs = aUpdateLog.NewRegistrationFiles();
+	regFinder->FindAllAppsL(CApaAppRegFinder::EScanAllDrives);
+	const CDesCArray& forcedRegs = aUpdateLog.NewRegistrationFiles();
 
-	while(regFinder->NextL(appEntry,forcedRegs))
+	while(regFinder->NextL(appEntry, forcedRegs))
 		{
 		if (appEntry.iUidType[2] == Uid())
 			{
@@ -1029,18 +1000,7 @@
 
 	if(found)
 		{
-		#ifdef SYMBIAN_APPARC_APPINFO_CACHE
- 			appData = CApaAppData::NewL(appEntry, iFs);
- 		#else
-			{
- 			// find the default icons (.mbm file) for applications, wrt current locale
- 			TFileName* tempFileName = NULL;
- 			tempFileName->Append(KDefaultAppIconMbm);
- 			BaflUtils::NearestLanguageFile(iFs, *tempFileName); 
- 			HBufC* defaultAppIcon = tempFileName->AllocL();
- 			appData = CApaAppData::NewL(appEntry, iFs,*defaultAppIcon);	
- 			}
- 		#endif //SYMBIAN_APPARC_APPINFO_CACHE 
+		appData = CApaAppData::NewL(appEntry, iFs);
 		CleanupStack::PushL(appData);
 		return appData;
 		}
@@ -1060,17 +1020,12 @@
 		User::Leave(KErrPathNotFound);
 		}
 	TDriveName drive(parse.Drive());
+	TRAPD(err, aUpdateLog.DrivesAffected().InsertIsqL(drive, ECmpFolded));
+	if (err != KErrAlreadyExists) // We silently ignore attempts to insert duplicates
+		User::LeaveIfError(err);
 
-	HBufC* hDrive = drive.AllocL();
-	TInt err = aUpdateLog.DrivesAffected().InsertInOrder(hDrive, TLinearOrder<HBufC>(CApaAppList::CompareStrings));
-	if(err != KErrNone)
-		{
-		delete hDrive;
-		}
-	
-	TFileName path(TemporaryFilePathL(drive));
-
-	aFile.RenameToTemporaryL(iFs,path);
+	const TFileName path(TemporaryFilePathL(drive));
+	aFile.RenameToTemporaryL(iFs, path);
 	}
 
 void CApsDeregisterNonNativeApplication::DoPerformUpdateL(RApsUpdateLog& aUpdateLog)