--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/inc/CamBurstThumbnailGrid.h Wed Sep 01 12:30:54 2010 +0100
@@ -0,0 +1,296 @@
+/*
+* 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: Class for displaying the images captured by a Burst session.*
+*/
+
+
+
+#ifndef CAMBURSTTHUMBNAILGRID_H
+#define CAMBURSTTHUMBNAILGRID_H
+
+// ===========================================================================
+// INCLUDES
+
+#include <e32base.h>
+#include <e32std.h>
+#include <coecntrl.h>
+#include <eiksbobs.h> // For Scroll component
+#include <eikscrlb.h> // For ScrollModel
+#include <AknUtils.h> // For TAknLayoutRect
+
+#include "CamBurstThumbnailGridModel.h"
+
+
+// ===========================================================================
+// CONSTANTS
+const TInt KGridWidth = 3; // Number of cells left to right
+
+const TInt KGridHeight= 3; // Number of cells top to bottom
+
+const TInt KGridSize = KGridWidth*KGridHeight;
+
+
+const TInt KBurstGridDefaultThumbnails = 6;
+const TInt KBurstGridMaxVisibleThumbnails = 9;
+
+enum BurstGridLayoutTypes
+ {
+ EDefaultOrLessThumbnails = 0,
+ EMaxVisibleThumbnails,
+ EScrollbarNeeded
+ };
+
+const TInt KNumberOfBurstGridLayoutTypes = 3;
+
+// MACROS
+
+// ===========================================================================
+// DATA TYPES
+
+// ===========================================================================
+// FUNCTION PROTOTYPES
+
+// ===========================================================================
+// FORWARD DECLARATIONS
+class CFbsBitmap;
+class CCamBurstThumbnailGridModel;
+class CBitmapScaler;
+class CEikScrollBar;
+
+
+// ===========================================================================
+// CLASS DECLARATION
+
+/**
+* Utility class used to group together related layout information into one
+* object, and construct itself using a supplied resource reader.
+*
+* @since 2.8
+*/
+class TCamBurstGridCellLayout
+ {
+public:
+ /**
+ * Constructs the layout information for the object
+ * @since 2.8
+ * @param aReader The resource reader to use for construction
+ * @param aRect The parent rect for the layout entries
+ */
+ void ConstructFromResource( TResourceReader& aReader, TRect& aRect );
+
+public:
+ TAknLayoutRect iCellRect; // Rectangle of the cell
+ TAknLayoutRect iHighRect; // Rectangle of the Highlight
+ TAknLayoutRect iMarkRect; // Rectangle of the "mark"
+ TAknLayoutRect iThmbRect; // Rectangle of the thumbnail
+ };
+
+
+/**
+* Handles the drawing of the Burst Post-Capture control
+*
+* @since 2.8
+*/
+class CCamBurstThumbnailGrid : public CCoeControl,
+ public MThumbModelObserver,
+ public MEikScrollBarObserver
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CCamBurstThumbnailGrid* NewL( const CCoeControl* aParent, CCamBurstThumbnailGridModel& aModel );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCamBurstThumbnailGrid();
+
+ public: // New functions
+
+ /**
+ * Constructs the layout information for the grid
+ * @since 2.8
+ */
+ void ReadLayout();
+
+ /**
+ * Returns the ID of the resource to use for the grid structure
+ * @since 2.8
+ * @returns The resource ID to use
+ */
+ TInt ResourceId();
+
+ /**
+ * Tests if the given coordinates match to any item on burst grid
+ * @param aPosition Coordinates to be tested
+ * @return TInt Grid item index that macthes the coordinates. Negative value returned
+ * if position does not match any grid item
+ */
+ TInt HitTestGridItems( TPoint aPosition );
+
+ public: // Functions from base classes
+
+ /**
+ * From CCoeControl
+ * @since 2.8
+ * @param aRect Area to be redrawn
+ */
+ void Draw( const TRect& aRect ) const;
+
+ /**
+ * From CCoeControl
+ * @since 2.8
+ * @return The number of controls owned by this control
+ */
+ TInt CountComponentControls() const;
+
+ /**
+ * From CCoeControl
+ * @since 2.8
+ * @param aIndex The index of the required control
+ * @return Returns the requested control
+ */
+ CCoeControl* ComponentControl( TInt aIndex ) const;
+
+ /**
+ * From CCoeControl
+ * @since 2.8
+ */
+ void SizeChanged();
+
+ /**
+ * From CCoeControl
+ * @since 2.8
+ * @param aKeyEvent Details of the key event
+ * @param aType The keypress type
+ * @return TKeyResponse whether the key event was handled or ignored
+ */
+ TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ) ;
+
+ /**
+ * From MThumbModelObserver.
+ * Called when the highlight has changed
+ * @since 2.8
+ */
+ void HighlightChanged();
+
+ /**
+ * From MThumbModelObserver
+ * Called when an image has been deleted.
+ * @since 2.8
+ */
+ void ImagesDeleted();
+
+ /**
+ * From MThumbModelObserver
+ * Called when a new thumbnail has been generated
+ * @since 2.8
+ */
+ void ThumbnailGenerated();
+
+ /**
+ * From MEikScrollBarObserver
+ * Called when a new thumbnail has been generated
+ * @since 2.8
+ * @param aScrollBar
+ * @param aEventType
+ */
+ void HandleScrollEventL( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType );
+
+ /**
+ * Creates the scrollbar control. SetMopParent must be called before this.
+ * @since 3.0
+ */
+ void CreateScrollBarL();
+
+ /**
+ * Creates the scrollbar control.
+ * @since 3.0
+ */
+ void DeleteScrollBar();
+
+ /**
+ * Sets up the scroll bar, used on start up and when items are deleted
+ * to update the state
+ * @since 3.0
+ */
+ void SetupScrollbarL();
+
+ /**
+ * Returns the height of the grid control.
+ * @since 3.0
+ * @return Height of the grid control in cells
+ */
+ TInt GridSize() const;
+
+ protected: // New functions
+
+ /**
+ * Updates layouts. Used to reload layouts when images are deleted.
+ */
+ void UpdateLayout();
+
+ protected: // Functions from base classes
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CCamBurstThumbnailGrid( CCamBurstThumbnailGridModel& aModel );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const CCoeControl* aParent );
+
+
+
+ public: // Data
+
+ protected: // Data
+
+ private: // Data
+ // Passed in by (and owned by) View
+ CCamBurstThumbnailGridModel& iModel;
+
+ // Array of layout objects read from the resource file.
+ // Each object represents a "cell" on the grid
+ TCamBurstGridCellLayout iGridCellLayout[KGridSize];
+
+ // Bitmap and mask for the "mark" check box for an image
+ CFbsBitmap* iBitmapMark;
+ CFbsBitmap* iBitmapMarkMask;
+
+ CEikScrollBarFrame* iScrollFrame;
+ TAknDoubleSpanScrollBarModel ivModel; // model for double span (side) scrollbar
+ TAknLayoutRect iScrollLayout;
+
+ // As the grid size is potentially variable depending on whether
+ // limited or unlimited capture is used, need to keep track of the
+ // grid size used.
+ TInt iGridSize;
+
+ };
+
+
+
+#endif // CAMBURSTTHUMBNAILGRID_H
+
+// ===========================================================================
+// End of File
+
+