photosgallery/collectionframework/thumbnailcreator/src/glxtndeletethumbnailstask.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:45:44 +0200
changeset 0 4e91876724a2
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2008-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:    Implementation of CGlxtnDeleteThumbnailsTask
*
*/




/**
 * @internal reviewed 31/07/2007 by Simon Brooks
 */

// INCLUDE FILES

#include "glxtndeletethumbnailstask.h"

#include <glxassert.h>
#include "glxtnfileinfo.h"
#include "mglxtnstorage.h"
#include "mglxtnthumbnailcreatorclient.h"
#include <glxtracer.h>

// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
CGlxtnDeleteThumbnailsTask::CGlxtnDeleteThumbnailsTask(
            const TGlxMediaId& aItemId, MGlxtnThumbnailCreatorClient& aClient) :
    CGlxtnClientTask(KGlxtnTaskIdDeleteThumbnails, aItemId, aClient)
    {
    TRACER("CGlxtnDeleteThumbnailsTask::CGlxtnDeleteThumbnailsTask()");
    GLX_ASSERT_ALWAYS( Storage(), Panic( EGlxPanicIllegalArgument ),
                    "CGlxtnDeleteThumbnailsTask created without storage" );
    }

// -----------------------------------------------------------------------------
// ConstructL
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CGlxtnDeleteThumbnailsTask::ConstructL()
    {
    TRACER("void CGlxtnDeleteThumbnailsTask::ConstructL()");
    }

// -----------------------------------------------------------------------------
// NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CGlxtnDeleteThumbnailsTask* CGlxtnDeleteThumbnailsTask::NewL(
            const TGlxMediaId& aItemId, MGlxtnThumbnailCreatorClient& aClient)
    {
    TRACER("CGlxtnDeleteThumbnailsTask::NewL()");
    CGlxtnDeleteThumbnailsTask* self = new (ELeave) CGlxtnDeleteThumbnailsTask(
                                                            aItemId, aClient);

    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop( self );

    return self;
    }

// Destructor
CGlxtnDeleteThumbnailsTask::~CGlxtnDeleteThumbnailsTask()
    {
    TRACER("Destructor CGlxtnDeleteThumbnailsTask::~CGlxtnDeleteThumbnailsTask()");
    delete iInfo;
    }

// -----------------------------------------------------------------------------
// DoStartL
// -----------------------------------------------------------------------------
//
TBool CGlxtnDeleteThumbnailsTask::DoStartL(TRequestStatus& aStatus)
    {
    TRACER("CGlxtnDeleteThumbnailsTask::DoStartL()");
    iInfo = new (ELeave) CGlxtnFileInfo;
    Client().FetchFileInfoL(iInfo, ItemId(), &aStatus);

    return ETrue;
    }

// -----------------------------------------------------------------------------
// DoCancel
// -----------------------------------------------------------------------------
//
void CGlxtnDeleteThumbnailsTask::DoCancel()
    {
    TRACER("CGlxtnDeleteThumbnailsTask::DoCancel()");
    Storage()->StorageCancel();
    }

// -----------------------------------------------------------------------------
// DoRunL
// -----------------------------------------------------------------------------
//
TBool CGlxtnDeleteThumbnailsTask::DoRunL(TRequestStatus& aStatus)
    {
    TRACER("CGlxtnDeleteThumbnailsTask::DoRunL()");
    User::LeaveIfError(aStatus.Int());

    TBool active = EFalse;

    if ( iDeleting )
        {
        Client().ThumbnailDeletionComplete(ItemId(), KErrNone);
        }
    else
        {
        User::LeaveIfNull(iInfo);
        Storage()->DeleteThumbnailsL(ItemId(), *iInfo, &aStatus);
        iDeleting = ETrue;
        active = ETrue;
        }

    return active;
    }

// -----------------------------------------------------------------------------
// DoRunError
// -----------------------------------------------------------------------------
//
TBool CGlxtnDeleteThumbnailsTask::DoRunError(TInt aError)
    {
    TRACER("CGlxtnDeleteThumbnailsTask::DoRunError()");
    Client().ThumbnailDeletionComplete(ItemId(), aError);

    return EFalse;
    }

//  End of File