activityfw/storage/server/src/afapplicationscollection.cpp
author hgs
Fri, 06 Aug 2010 13:40:46 +0300
changeset 107 b34d53f6acdf
permissions -rw-r--r--
201031

/*
* 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);
}