diff -r e78d6e055a5b -r b34d53f6acdf activityfw/storage/server/src/afapplicationscollection.cpp --- /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 + +#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 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); +}