--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/storage/server/src/afapplicationscollection.cpp Fri Aug 06 13:40:46 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include <apgupdate.h>
+
+#include "afapplicationscollection.h"
+//------------------------------------------------------------------------------
+CAfApplicationsCollection* CAfApplicationsCollection::NewL(RApaLsSession& serviceProvider,
+ MAfApplicationsObserver* observer)
+{
+ CAfApplicationsCollection *self = new(ELeave) CAfApplicationsCollection(serviceProvider, observer);
+ return self;
+}
+
+//------------------------------------------------------------------------------
+CAfApplicationsCollection::CAfApplicationsCollection(RApaLsSession& serviceProvider, MAfApplicationsObserver* observer)
+:
+ mServiceProvider(serviceProvider),
+ mObserver(observer)
+{}
+
+//------------------------------------------------------------------------------
+CAfApplicationsCollection::~CAfApplicationsCollection()
+{
+ mDeinstalledApplications.Close();
+}
+
+//------------------------------------------------------------------------------
+void CAfApplicationsCollection::applicationsChanged()
+{
+ TRAP_IGNORE(collectsApplicationsInfoL());
+ if (mObserver) {
+ mObserver->applicationsChanged();
+ }
+}
+
+//------------------------------------------------------------------------------
+TArray<TUid> CAfApplicationsCollection::removedApplications()const
+{
+ return mDeinstalledApplications.Array();
+}
+
+//------------------------------------------------------------------------------
+void CAfApplicationsCollection::setObserver(MAfApplicationsObserver& observer)
+{
+ mObserver = &observer;
+}
+
+//------------------------------------------------------------------------------
+void CAfApplicationsCollection::collectsApplicationsInfoL()
+{
+ mDeinstalledApplications.Close();
+ RArray< TApaAppUpdateInfo > updatedApps;
+ CleanupClosePushL(updatedApps);
+ TInt errNo = mServiceProvider.UpdatedAppsInfoL(updatedApps);
+ User::LeaveIfError(errNo);
+ for (TInt offset(0); offset < updatedApps.Count(); ++offset) {
+ const TApaAppUpdateInfo::TApaAppAction action(updatedApps[offset].iAction);
+ switch (action) {
+ case TApaAppUpdateInfo::EAppNotPresent:
+ mDeinstalledApplications.AppendL(updatedApps[offset].iAppUid);
+ break;
+ //TODO add implementation for other cases when needed
+ }
+ }
+ CleanupStack::PopAndDestroy(&updatedApps);
+}