activityfw/storage/server/src/afapplicationscollection.cpp
changeset 107 b34d53f6acdf
--- /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);
+}