camerauis/cameraapp/generic/inc/CamBurstThumbnailGridModel.h
changeset 19 d9aefe59d544
parent 3 8b2d6d0384b0
child 21 fa6d9f75d6a6
child 28 3075d9b614e6
--- a/camerauis/cameraapp/generic/inc/CamBurstThumbnailGridModel.h	Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,480 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Model class holding thumbnail grid state information*
-*/
-
-
-
-#ifndef CAMBURSTTHUMBNAILGRIDMODEL_H
-#define CAMBURSTTHUMBNAILGRIDMODEL_H
-
-//  INCLUDES
-#include    <e32base.h>
-#include    <e32std.h>
-#include    <coecntrl.h>
-
-#include    <eiksbobs.h>    // For Scroll component
-#include    <eikscrlb.h>    // For ScrollModel
-
-#include    "CamAppController.h"
-#include    "CamBurstThumbnailGridSizer.h"
-
-// CONSTANTS
-// The max number of items in the small grid layout
-const TInt KSmallGridCellCount = 6;
-
-// The height of the small grid in cells
-const TInt KSmallGridHeight = 2;
-
-// The height of the large grid in cells
-const TInt KLargeGridHeight = 3;
-
-// MACROS
-
-// DATA TYPES
-
-// FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-class CCamThumbnailGridSizer;
-
-// CLASS DECLARATION
-
-/**
-*  Simple class representing a burst capture image's attributes
-*
-*  @since 2.8
-*/
-class CThumbnailGridItem : public CBase
-    {
-public:
-    // Constructor
-    CThumbnailGridItem();
-
-    // Destructor
-    ~CThumbnailGridItem();
-            
-public:
-    // Scaled-down thumbnail for display in the Grid control
-    CFbsBitmap* iDisplayThumb;
-
-    // Whether or not this item has been marked.
-    TBool 		iMarked;
-    };
-
-
-/**
-*  Mix-in class used for listening to GridModel events.
-*
-*  @since 2.8
-*/
-class MThumbModelObserver
-    {
-public: 
-    /**
-    * Called when the highlighted option changes
-    * @since 2.8    
-    */
-    virtual void HighlightChanged();
-
-    /**
-    * Called when one or more images have been deleted
-    * @since 2.8    
-    */
-    virtual void ImagesDeleted();
-
-    /**
-    * Called when a new thumbnail has been generated
-    * @since 2.8    
-    */
-    virtual void ThumbnailGenerated();
-    };
-
-
-/**
-*  Contains the state of the Burst Post-Capture control
-*
-*  @since 2.8
-*/
-class CCamBurstThumbnailGridModel :  public CBase,
-                                     public MBitmapScaler
-    {
-    public:
-        // Bitmask used to identify the events to register for.
-        enum TModelEvent
-        {
-            EModelEventHighlight = 0x1,
-            EModelEventDeleted   = 0x2,
-            EModelEventThumb     = 0x4
-        };
-
-        // Used to represent the direction of highlight movement
-        enum TMoveSelect 
-        {
-            EMoveSelectUp,
-            EMoveSelectDown,
-            EMoveSelectLeft,
-            EMoveSelectRight,
-        };
-
-        // Used to represent the internal state for the image resizing operation
-        enum TTmbState
-        {
-            ETmbStateScaling,       // Currently scaling an image
-            ETmbStateIdle           // Image finished, but more to do
-        };
-
-    public:        
-        /**
-        * Two-phased constructor.
-        */
-        static CCamBurstThumbnailGridModel* NewL();
-
-        /**
-        * Destructor.
-        */
-        ~CCamBurstThumbnailGridModel();  
-        
-    public: // New functions
-        /**
-        * Attempts to move the selection highlight a specified direction
-        * @since 2.8
-        * @param aDir The direction to move the hightlight
-        * @return TBool indicating whether the move was possible or not
-        */
-        TBool MoveHighlight( TMoveSelect aDir );
-        
-        TBool SetHighlight( TInt aIndex );
-
-    	/**
-    	 * Sets new size for the scaling
-    	 * @param aThumbSize The new size
-    	 */
-    	void SetThumbnailSize( const TSize aThumbSize );
-
-        /**
-        * Returns the number of valid (non-deleted) cells.  Used by thumbnail
-        * grid to find how many cells it may need to draw.
-        * @since 2.8       
-        * @return Number of cells
-        */        
-        TInt NoOfValidCells();
-
-        /**
-        * Returns a specific grid item based on the supplied index.
-        * @since 2.8
-        * @param aValidIndex The index of the grid item to retrieve
-        * @return Pointer to the required item
-        */
-        CThumbnailGridItem* GridItem( TInt aValidIndex );
-
-        /**
-        * Returns a specific bitmap based on the supplied index.
-        * @since 2.8
-        * @param aValidIndex The index of the bitmap to retrieve
-        * @return Pointer to the required bitmap
-        */
-        const CFbsBitmap* Snapshot( TInt aValidIndex );
-
-        /**
-        * Set the burst array for the model to use
-        * @since 2.8
-        * @param aArray pointer to the burst array
-        */
-        void SetBurstArrayL( CCamBurstCaptureArray* aArray );
-
-        /**
-        * Returns the grid index for the cell in the top-left of the display
-        * @since 2.8
-        * @return The index to top left cell
-        */
-        TInt TopLeftGridIndex();
-
-        /**
-        * Returns the position of the highlight.  
-        * @since 2.8
-        * @return The index to the valid (non-deleted) list
-        */
-        TInt HighlightedGridIndex();
-
-        /**
-        * Returns the index of the hightlighted entry in the CONTROLLER's
-        * burst array.  This array includes deleted and NON-DELETED items
-        * @since 2.8
-        * @return The index to the controller's burst array
-        */
-        TInt HighlightedBurstIndex();        
-
-        /**
-        * Sets (or clears) the selection 'mark' of the currently highlighted
-        * cell item
-        * @since 2.8
-        * @param aSet Whether to set or clear the mark
-        */
-        void SetCurrentMark( TBool aSet );
-
-        /**
-        * Marks or un-marks all non-deleted items
-        * @since 2.8
-        * @param aMark ETrue to set the mark, EFalse to clear it.
-        */
-        void MarkAll( TBool aMark );
-
-        /**
-        * Returns the number of images that have been "marked"
-        * @since 2.8
-        * @return The number of marked images.
-        */
-        TInt NoOfMarkedImages() const;
-
-        /**
-        * Returns the total number of images including 'deleted' images
-        * @since 2.8
-        * @return The number of images.
-        */
-        TInt NoOfImages() const;
-
-        /**
-        * Returns whether the specified item is marked or not.
-        * @since 2.8
-        * @param  aIndex The index of the item to check
-        * @return ETrue if it is marked, else EFalse
-        */
-        TInt IsMarkedL( TInt aIndex );
-
-        /**
-        * Deletes all marked items
-        * @since 2.8        
-        */        
-        void DeleteMarkedL();
-
-        /**
-        * Deletes currently highlighted object
-        * @since 2.8        
-        */   
-        void DeleteHighlightL();        
-
-        /**
-        * Adds an observer to a specified set of events
-        * @since 2.8
-        * @param aObserver The component to be notified
-        * @param aBitMask The bitmask of events to be reported
-        */
-        void AddModelObserverL( MThumbModelObserver* aObserver, TInt aBitMask );
-        
-        /**
-        * Remove an observer to a specified set of events
-        * @since 2.8
-        * @param aObserver The component to not be notified
-        * @param aBitMask The bitmask of events to not be reported
-        */
-        void RemoveModelObserver( MThumbModelObserver* aObserver, TInt aBitMask );
-
-        /**
-        * Notify all observers to a specific event
-        * @since 2.8
-        * @param aEvent The event which has occurred.
-        * @param aParam Optional parameter to be passed with the event
-        */
-        void NotifyModelObserver( TModelEvent aEvent, TInt aParam = 0 );
-
-        /**
-        * Returns the image name (no path or extension) of the currently 
-        * highlighted item.
-        * @since 2.8
-        * @return The image name
-        */
-        TPtrC HighlightedImageName();       
-        
-        /**
-        * Returns the height of the visible grid, typically 2 or 3 cells high.
-        * @since 2.8
-        * @returns the height of the visible grid.
-        */
-        TInt GridHeight();
-        
-        /**
-        * Returns the image name (no path or extension) of an item.
-        * @since 2.8
-        * @param aIndex The index of the item.
-        * @return The image name
-        */
-        TPtrC ImageName( TInt aIndex );
-
-        /**
-        * Returns the image name (with path and extension) of an item.
-        * Uses the index in the global array (including deleted items)
-        * @since 2.8
-        * @param aIndex The index of the item (in the global array).
-        * @return The image full name and path
-        */
-        TPtrC ImageFileName( TInt aIndex ) const;
-        
-        /**
-        * Refreshes internal state by checking whether the currently
-        * highlighted item has been deleted.  This may happen if an item
-        * is viewed in post capture, then deleted.
-        * @since 2.8
-        */
-        void RefreshL();
-
-        /**
-        * Used to update where the top-left view on the grid is located.
-        * @since 2.8
-        * @param aMovingUp whether the update is because the curor is moving up.
-        */
-        void UpdateViewableGrid( TBool aMovingUp );
-
-        /**
-        * Converts from the "valid-only" list of items to the global "AllThumb"
-        * list.
-        * @since 2.8
-        * @param aValidIndex The valid index to convert from.
-        * @return The global index, or KErrNotFound.
-        */
-        TInt ConvertFromValidToGlobalIndex( TInt aValidIndex );
-        
-        /**
-         * 
-         */
-        void ScrollGrid( TBool aScrollDown, TInt aNewScrollPos );
-
-        /**
-        * Cancels the thumbnail scaling
-        * @since 2.8
-        */
-        void CancelThumbnails();
-        
-        /**
-         * Notifies model that images have been deleted outside of camera
-         */
-        void ImageFilesDeleted();
-
-    public: // Functions from base classes
-        /**
-        * Called by sizer utility class when a bitmap rescale operation 
-        * has completed.
-        * @since 2.8
-        * @param aErr Indicates the completion code (standard epoc error codes possible)
-        * @param aBitmap The resized bitmap (called class takes ownership)
-        */
-        void BitmapScaleCompleteL( TInt aErr, CFbsBitmap* aBitmap, TInt32 aInfo );
-
-    protected:  // New functions
-
-    protected:  // Functions from base classes
-
-    private:
-
-        /**
-        * C++ default constructor.
-        */
-        CCamBurstThumbnailGridModel();
-
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        */
-        void ConstructL();
-
-        /**
-        * Adds the specified cell to the internal structures.  Takes ownership
-        * of the supplied cell object
-        * @since 2.8
-        * @param aCell The grid item to add
-        */
-        void AddCellL( CThumbnailGridItem* aCell );
-
-        /**
-        * Used for the generation of the specified thumbnail
-        * @since 2.8
-        * @param aIndex The index (global) of the item to resize
-        */
-        void StartThumbnailL( TInt aIndex );
-    
-        /**
-        * Force a check for thumbs; deleting those not visible and generating
-        * new thumbs for newly visible cells.  
-        * @since 2.8        
-        */
-        void RecalculateThumbs();
-
-        /**
-        * Queues thumbnails to be resized as required.
-        * @since 2.8        
-        */
-        void QueueThumbnailsL();
-
-        /**
-        * Internal function used by the various delete functions
-        * @since 2.8
-        * @param aGlobalIndex The global index of the item to delete
-        */
-        void DeleteItemL( TInt aGlobalIndex );
-
-        /**
-        * Internal function used by the various delete functions
-        * @since 2.8
-        * @param aHighlightDeleted Whether the delete operation this call 
-        *        followed involved the deletion of the highlight
-        */
-        void DoPostDeleteGridCheck( TBool aHighlightDeleted );
-              
-
-    private:    // Data
-        TInt iCurrHighlight;    // Grid index of current highlight
-        TInt iImagesMarked;     // Number of images marked
-        TInt iTmpThumbIndex;    // The record we are creating a thumb for
-
-        // An array of ALL thumbnail grid items, the "global" list.
-        // Includes delete and non-deleted
-        RPointerArray <CThumbnailGridItem> iAllThumbGrid;
-
-        // An array of VALID (non-deleted) items only.
-        RPointerArray <CThumbnailGridItem> iValidThumbGrid;
-        
-
-        // Pointer to the burst mode capture array.
-        CCamBurstCaptureArray* iBurstArray;     // Not owned
-
-        // Utility class used for resizing bitmaps
-        CCamThumbnailGridSizer* iGridSizer;
-
-        // Current internal state (referring to resizing)
-        TTmbState iState;
-
-        // List of objects requesting bitmap state updates
-        RPointerArray <MThumbModelObserver> iThumbObserver;
-
-        // Array of observers for the hightlight changed
-        RPointerArray <MThumbModelObserver> iHighlightObserver;
-
-        // Array of observers for the delete events
-        RPointerArray <MThumbModelObserver> iDeleteObserver;
-
-        // Grid index of "top left" cell.
-        TInt iTopLeftIndex;
-        
-        // Either 2 (if upto 6 images) or 3 (if more than 6 images)
-        TInt iGridHeight;
-        
-        // Size of the scaled thumbnails
-        TSize iThumbSize;
-    }; 
-
-
-#endif      // CAMBURSTTHUMBNAILGRIDMODEL_H
-            
-// End of File
-
-