camerauis/cameraapp/generic/src/CamBurstCaptureArray.cpp
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/src/CamBurstCaptureArray.cpp	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,581 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  A class that represents a single item in a burst capture
-*
-* Copyright © 2007-2008 Nokia.  All rights reserved.
-*  This material, including documentation and any related computer
-*  programs, is protected by copyright controlled by Nokia.  All
-*  rights are reserved.  Copying, including reproducing, storing,
-*  adapting or translating, any or all of this material requires the
-*  prior written consent of Nokia.  This material also contains
-*  confidential information which may not be disclosed to others
-*  without the prior written consent of Nokia.
-
-*
-*
-*/
-
-
-// INCLUDE FILES
-#include <fbs.h>
-#include <eikenv.h>
-#include <barsread.h>
-#include <AknUtils.h>
-
-#include <cameraapp.rsg>
-#include <vgacamsettings.rsg>
-
-#include "CamBurstCaptureArray.h"
-#include "CamImageSaveActive.h"
-#include "CamPanic.h"
-#include "camlogging.h"
-
-
-// CONSTANTS
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CCamBurstCaptureItem::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCamBurstCaptureArray::CCamBurstCaptureItem* CCamBurstCaptureArray::CCamBurstCaptureItem::NewLC()
-    {
-    CCamBurstCaptureItem* self = new( ELeave ) CCamBurstCaptureItem();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem destructor
-// 
-// ---------------------------------------------------------------------------
-//
-CCamBurstCaptureArray::CCamBurstCaptureItem::~CCamBurstCaptureItem()
-  {
-  PRINT( _L("Camera => ~CCamBurstCaptureItem") );
-  delete iFileName;
-  delete iImageName;
-  delete iSnapshot;
-  PRINT( _L("Camera <= ~CCamBurstCaptureItem") );
-  }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::SetNameL
-// Sets the item's full file path and image name
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::CCamBurstCaptureItem::SetNameL( const TDesC& aFullFileName, 
-                                    const TDesC& aImageName )
-    {
-    delete iFileName;
-    iFileName = NULL;
-    delete iImageName;
-    iImageName = NULL;
-    iFileName = aFullFileName.AllocL();
-    iImageName = aImageName.AllocL();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::SetSnapshotL
-// Stores the snapshot bitmap in the item
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::CCamBurstCaptureItem::SetSnapshotL( const CFbsBitmap& aSnapshot ) 
-    {
-    delete iSnapshot;
-    iSnapshot = NULL;
-
-    // Create bitmap
-    iSnapshot = new( ELeave ) CFbsBitmap();
-    TInt createError = iSnapshot->Duplicate( aSnapshot.Handle() );
-
-    if ( createError )
-        {
-        delete iSnapshot;
-        iSnapshot = NULL;
-        }
-
-    User::LeaveIfError( createError );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::SetDeleted
-// Sets the item's deletion state
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::CCamBurstCaptureItem::SetDeleted( TBool aDeleted ) 
-    {
-    iIsDeleted = aDeleted;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::FileName
-// Return a pointer to the full file path and name
-// ---------------------------------------------------------------------------
-//
-const TDesC& CCamBurstCaptureArray::CCamBurstCaptureItem::FileName() const
-    {
-    if( !iFileName )
-      {
-      return KNullDesC;
-      }
-    else
-      {  
-      return *iFileName;
-      }
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::ImageName
-// Return a pointer to the image name
-// ---------------------------------------------------------------------------
-//
-const TDesC& CCamBurstCaptureArray::CCamBurstCaptureItem::ImageName() const
-    {
-    return *iImageName;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamCaptureSetupListItem::Bitmap
-// Return a pointer to the bitmap
-// ---------------------------------------------------------------------------
-//
-const CFbsBitmap* CCamBurstCaptureArray::CCamBurstCaptureItem::Snapshot() const
-    {
-    return iSnapshot;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::IsDeleted
-// Whether or not the item has been marked for deletion
-// ---------------------------------------------------------------------------
-//
-TBool CCamBurstCaptureArray::CCamBurstCaptureItem::IsDeleted() const
-    {
-    return iIsDeleted;
-    }
-      
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::CCamBurstCaptureItem::ReplaceSnapshot
-// Replaces the bitmap.
-// ---------------------------------------------------------------------------
-// 
-TBool CCamBurstCaptureArray::CCamBurstCaptureItem::ReplaceSnapshot( 
-    const CFbsBitmap* aBitmap )
-    {
-    if( !iSnapshot )
-        {
-        TRAPD( err, iSnapshot = new( ELeave ) CFbsBitmap() );
-        if( err )
-            {
-            return EFalse;
-            }
-        }
-    if ( iSnapshot->Duplicate( aBitmap->Handle() ) )
-        {
-        return EFalse;
-        }
-    return ETrue;
-    } 
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::CCamBurstCaptureItem
-// C++ constructor
-// ---------------------------------------------------------------------------
-//
-CCamBurstCaptureArray::CCamBurstCaptureItem::CCamBurstCaptureItem()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureItem::ConstructL
-// Second phase construction
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::CCamBurstCaptureItem::ConstructL()
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CCamBurstCaptureArray::NewLC
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CCamBurstCaptureArray* CCamBurstCaptureArray::NewL( CCamImageSaveActive& aImageSaveActive )
-    {
-    CCamBurstCaptureArray* self = new( ELeave ) CCamBurstCaptureArray( aImageSaveActive );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray destructor
-// 
-// ---------------------------------------------------------------------------
-//
-CCamBurstCaptureArray::~CCamBurstCaptureArray()
-    {
-    iBurstItems.ResetAndDestroy();
-    iBurstItems.Close();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::SetNameL
-// Sets an item's full file path and image name
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::SetNameL( const TDesC& aFullFileName, 
-    const TDesC& aImageName, TInt aIndex )
-    {
-    PRINT1( _L("Camera => CCamBurstCaptureArray::SetNameL, name:[%S]"), &aFullFileName );  
-    iBurstItems[aIndex]->SetNameL( aFullFileName, aImageName );
-    PRINT( _L("Camera <= CCamBurstCaptureArray::SetNameL") );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::AlreadySavedFile
-// Returns whether a particular file has already been saved.
-// ---------------------------------------------------------------------------
-//
-TBool CCamBurstCaptureArray::AlreadySavedFile( const TDesC& aFilename )
-    {
-    return iImageSaveActive.AlreadySavedFile( aFilename );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::CurrentlySavingFile
-// Returns whether a particular file is in the process of being saved.
-// ---------------------------------------------------------------------------
-//
-TBool CCamBurstCaptureArray::CurrentlySavingFile( const TDesC& aFilename )
-    {
-    return iImageSaveActive.CurrentlySavingFile( aFilename );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::Count
-// Return the number of items in the array
-// ---------------------------------------------------------------------------
-//
-TInt CCamBurstCaptureArray::Count() const
-    {
-    return iBurstItems.Count();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::Reset
-// Delete unwanted items from the array
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::Reset( TInt aRequiredCount )
-    {
-    PRINT1( _L("Camera => CCamBurstCaptureArray::Reset(%d)"), aRequiredCount );
-    TInt count = iBurstItems.Count();
-    // if the current count is less than the required count
-    if ( aRequiredCount >= count )
-        {
-        return;
-        }
-    // if the required count is 0 or less, empty the array
-    if ( aRequiredCount <= 0 )
-        {
-        iBurstItems.ResetAndDestroy();
-        iNextSetName = 0;
-        iNextGetName = 0;
-        iNextSnapshot = 0;
-        iImagesRemaining = 0;
-        }
-    // otherwise delete the unwanted items
-    else
-        {
-        TInt index;
-        // repeat for every extra item
-        for ( index = count - 1; index >= aRequiredCount; index-- )
-            {
-            CCamBurstCaptureItem* item = iBurstItems[index];
-            if ( !item->IsDeleted() )
-                {
-                iImagesRemaining--;
-                }
-            iBurstItems.Remove( index );
-            delete item;
-            }
-        // reset the accessing indexes if necessary
-        count = iBurstItems.Count();
-        iNextSetName = Min( iNextSetName, count );
-        iNextSnapshot = Min( iNextSnapshot, count );
-        }
-    User::Heap().Compress();    
-    PRINT( _L("Camera <= CCamBurstCaptureArray::Reset") );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::SetNextNameL
-// Set the item's full file path and image name
-// ---------------------------------------------------------------------------
-// 
-void CCamBurstCaptureArray::SetNextNameL( const TDesC& aFullFileName, const TDesC& aImageName )
-    {
-    PRINT1( _L("Camera => CCamBurstCaptureArray::SetNextNameL, name:[%S]"), &aFullFileName );
-    CheckArraySizeL( iNextSetName );
-    iBurstItems[iNextSetName]->SetNameL( aFullFileName, aImageName );
-    iNextSetName++;
-    PRINT( _L("Camera <= CCamBurstCaptureArray::SetNextNameL") );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::SetNextSnapshotL
-// Stores the snapshot bitmap in the item
-// ---------------------------------------------------------------------------
-//  
-void CCamBurstCaptureArray::SetNextSnapshotL( const CFbsBitmap& aSnapshot )
-    {
-    PRINT( _L("Camera => CCamBurstCaptureArray::SetNextSnapshotL") );
-    CheckArraySizeL( iNextSnapshot );
-    TInt nextIndex = iNextSnapshot;
-    iNextSnapshot++;
-    iBurstItems[nextIndex]->SetSnapshotL( aSnapshot );
-    PRINT( _L("Camera <= CCamBurstCaptureArray::SetNextSnapshotL") );
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::SetDeleted
-// Sets the items deletion state
-// ---------------------------------------------------------------------------
-//   
-TInt CCamBurstCaptureArray::SetDeleted( TInt aItemIndex, TBool aDeleted )
-    {
-    PRINT2( _L("Camera => CCamBurstCaptureArray::SetDeleted( index:%d, deleted:%d )"), aItemIndex, aDeleted );
-    TInt ret = KErrNone;
-
-    __ASSERT_DEBUG( aItemIndex < Count() && aItemIndex >= 0,
-        CamPanic( ECamPanicBadIndex ) );
-
-    if ( aDeleted == iBurstItems[aItemIndex]->IsDeleted() )
-        {
-        PRINT( _L("Camera <= CCamBurstCaptureArray::SetDeleted A") );
-        return ret;
-        }
-   
-    if ( aDeleted )
-        {
-        //iImagesRemaining--;
-        TInt saveRequested = EFalse;
-        // if the image save has already been requested
-        if ( aItemIndex < iNextGetName )
-            {
-            saveRequested = ETrue;
-            }
-        iImageSaveActive.CancelThumbnail( aItemIndex );
-        ret = iImageSaveActive.DeleteFile( iBurstItems[aItemIndex]->FileName(), saveRequested );
-
-        PRINT1( _L("Camera <> CCamBurstCaptureArray::SetDeleted iImageSaveActive.DeleteFile() returned %d" ), ret );
-        // file might have already been deleted and that's ok so ignore -NotFound errors
-        if( ret == KErrNone || ret == KErrNotFound || ret == KErrPathNotFound )
-            {
-            iImagesRemaining--;
-            }
-        }
-    else
-        {
-        iImagesRemaining++;
-        }
-    if( ret == KErrNone || ret == KErrNotFound || ret == KErrPathNotFound )
-        {
-        iBurstItems[aItemIndex]->SetDeleted( aDeleted );
-        }
-
-    PRINT( _L("Camera <= CCamBurstCaptureArray::SetDeleted B") );
-    return ret;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::IsNextImageDeleted
-// Increments iNextGetName and returns ETrue if the next image is marked for 
-// deletion, otherwise returns EFalse 
-// ---------------------------------------------------------------------------
-// 
-TBool CCamBurstCaptureArray::IsNextImageDeleted()
-  {
-  PRINT( _L("Camera => CCamBurstCaptureArray::IsNextImageDeleted") );  
-  TBool deleted( EFalse );
-
-  if ( iNextGetName >= Count() )
-    {
-    PRINT2( _L("Camera <> index(%d) out of range(%d), return deleted"), iNextGetName, Count() );
-    deleted = ETrue;
-    }
-  else if ( iBurstItems[iNextGetName]->IsDeleted() )
-    {
-    PRINT( _L("Camera <> next item marked deleted") );
-    iNextGetName++;
-    deleted = ETrue;
-    }
-  else
-    {
-    deleted = EFalse;
-    }
-
-  PRINT1( _L("Camera <= CCamBurstCaptureArray::IsNextImageDeleted, return: %d"), deleted );  
-  return deleted;
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::NextFileName
-// Returns a pointer to the full file path and name for the next image
-// ---------------------------------------------------------------------------
-//    
-const TDesC& CCamBurstCaptureArray::NextFileName()
-    {
-    PRINT( _L("Camera => CCamBurstCaptureArray::NextFileName") );  
-    if ( iNextGetName >= Count() )
-        {
-        PRINT( _L("Camera <> Returning KNullDesC") );  
-        return KNullDesC;
-        }
-
-    TInt itemIndex = iNextGetName;
-    iNextGetName++;
-
-    PRINT( _L("Camera <= CCamBurstCaptureArray::NextFileName") );  
-    return iBurstItems[itemIndex]->FileName();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::NextFileIndex
-// Returns the index of the next image
-// ---------------------------------------------------------------------------
-// 
-TInt CCamBurstCaptureArray::NextFileIndex() const
-    {
-    return iNextGetName;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::FileName
-// Returns a pointer to the full file path and name
-// ---------------------------------------------------------------------------
-//   
-const TDesC& CCamBurstCaptureArray::FileName( TInt aItemIndex ) const
-    {
-    if ( aItemIndex >= Count() || aItemIndex < 0 )
-        {
-        return KNullDesC;
-        }
-    return iBurstItems[aItemIndex]->FileName();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::ImageName
-// Returns a pointer to the image name 
-// ---------------------------------------------------------------------------
-//  
-const TDesC& CCamBurstCaptureArray::ImageName( TInt aItemIndex ) const
-    {
-    if ( aItemIndex >= Count() || aItemIndex < 0 )
-        {
-        return KNullDesC;
-        }
-    return iBurstItems[aItemIndex]->ImageName();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::Snapshot
-// Returns a pointer to the snapshot image
-// ---------------------------------------------------------------------------
-// 
-const CFbsBitmap* CCamBurstCaptureArray::Snapshot( TInt aItemIndex ) const
-    {
-    if ( aItemIndex >= Count() || aItemIndex < 0 )
-        {
-        return NULL;
-        }
-    return iBurstItems[aItemIndex]->Snapshot();
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::IsDeleted
-// Returns the item's deletion state
-// ---------------------------------------------------------------------------
-// 
-TBool CCamBurstCaptureArray::IsDeleted( TInt aItemIndex ) const
-    {
-    if ( aItemIndex >= Count() )
-        {
-        return ETrue;
-        }
-    return iBurstItems[aItemIndex]->IsDeleted();
-    }
-  
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::ReplaceSnapshot
-// Replaces the bitmap in the given index.
-// ---------------------------------------------------------------------------
-// 
-TBool CCamBurstCaptureArray::ReplaceSnapshot( 
-    const CFbsBitmap* aBitmap, 
-    TInt aItemIndex )
-    {
-    if ( ( iBurstItems.Count() > aItemIndex ) &&
-        ( aItemIndex >= 0 ) )
-        {
-        return iBurstItems[aItemIndex]->ReplaceSnapshot( aBitmap );
-        }
-    return EFalse;
-    } 
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::CCamBurstCaptureArray
-// C++ constructor
-// ---------------------------------------------------------------------------
-//   
-CCamBurstCaptureArray::CCamBurstCaptureArray( CCamImageSaveActive& aImageSaveActive )
-: iImageSaveActive( aImageSaveActive )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::ConstructL
-// Second phase construction
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::ConstructL()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CCamBurstCaptureArray::CheckArraySizeL
-// Add extra items to the array if required
-// ---------------------------------------------------------------------------
-//
-void CCamBurstCaptureArray::CheckArraySizeL( TInt aRequiredIndex )
-    {
-    TInt count = Count();
-    TInt i;
-    for ( i = count; i <= aRequiredIndex; i++ )
-        {
-        CCamBurstCaptureItem* newItem = CCamBurstCaptureItem::NewLC();
-        iBurstItems.AppendL( newItem );
-        CleanupStack::Pop( newItem );
-        iImagesRemaining++;
-        }
-    }
-
-//  End of File