/*
* 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 showing the EV slider*
*/
#ifndef __CCAMCAPTURESETUPSLIDER_H
#define __CCAMCAPTURESETUPSLIDER_H
// INCLUDES
#include <coecntrl.h>
#include <AknUtils.h> // for TAknLayoutText
#include "CamSettingsInternal.hrh"
#include "CamSettings.hrh"
#include "Cam.hrh"
#include "CamSettingValueObserver.h"
/**
* Utility class used to group together related layout information into one
* object, and construct itself using a supplied resource reader.
*
* @since 2.8
*/
class CCamSliderLegend : public CBase
{
public:
virtual ~CCamSliderLegend();
/**
* Constructs the layout information for a text object
* @since 5.0
* @param aRect The parent rect for the layout entries
* @param aLayout Layout for the text
*/
void ConstructTextL(
TResourceReader& aReader,
const TRect& aRect,
const TAknTextComponentLayout& aLayout );
/**
* Constructs the layout information for an icon object
* @since 5.0
* @param aRect The parent rect for the layout entries
* @param aLayout Layout for the icon
*/
void ConstructIconL(
TResourceReader& aReader,
const TRect& aRect,
const TAknWindowComponentLayout& aLayout );
/**
* Draws the legend
* @since 2.8
* @param aGc The window contest to use for the drawing
*/
void Draw( CWindowGc& aGc ) const;
/**
* Returns the rect for the legend
* @since 2.8
* @return The rect for the legend
*/
TRect Rect() const;
private:
TCamSliderLegendItem iItem;
TAknLayoutText iPosition;
HBufC* iText;
TAknLayoutRect iIconRect;
CFbsBitmap* iBitmap;
CFbsBitmap* iMask;
};
/**
* Slider for showing Exposure Value in capture settings
*
* @since 2.8
*/
class CCamCaptureSetupSlider : public CCoeControl
{
public: // Constructors and destructor
/**
* Two-phased constructor.
*/
static CCamCaptureSetupSlider* NewL( const CCoeControl* aParent,
MCamSettingValueObserver* aObserver,
TCamSettingItemIds aSettingType,
TInt aSteps );
/**
* Destructor.
*/
virtual ~CCamCaptureSetupSlider();
public: // New functions
/**
* Sets up the range and initial value of the slider
* @since 2.8
* @param aValue The value to start with on the slider.
*/
void InitializeL( TInt aValue );
/**
* Returns the minium slider value
* @since 2.8
* @return The minimum slider value
*/
TInt MinValue() const;
/**
* Returns the maximum slider value
* @since 2.8
* @return The maximum slider value
*/
TInt MaxValue() const;
/**
* Sets the minimum and maximum values of the slider control
* @since 3.0
* @param aMin The minimum slider value
* @param aMax The maximum slider value
*/
void SetRange( TInt aMin, TInt aMax );
public: // Functions from base classes
/**
* From CCoeControl
* @since 2.8
* @param aRect Rect indicating the specific area to draw
*/
void Draw( const TRect& aRect ) const;
/**
* 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 CCoeControl
* @since 2.8
* @return The minimum size required for the control to display
*/
TSize MinimumSize();
/**
* From CCoeControl
* @since 2.8
*/
void SizeChanged();
/**
* From CCoeControl
* @
*/
void HandlePointerEventL(const TPointerEvent& aPointerEvent);
protected: // New functions
protected: // Functions from base classes
private:
/**
* C++ default constructor.
*/
CCamCaptureSetupSlider( MCamSettingValueObserver* aObserver,
TCamSettingItemIds aSettingType,
TInt aSteps );
/**
* By default Symbian 2nd phase constructor is private.
*/
void ConstructL( const CCoeControl* aParent );
/**
* Called to read the layout information from a resource
* @since 2.8
*/
void ReadLayoutL();
/*
* Read touch layout
*/
void TouchLayoutL();
/*
* Read non-touch layout
*/
void NonTouchLayoutL();
/*
* Read touch contrast layout
*/
void TouchContrastLayoutL( const TRect& aParentRect );
/*
* Read non-touch contrast layout
*/
void NonTouchContrastLayoutL( const TRect& aParentRect );
/*
* Read touch exposure value layout
*/
void TouchEVLayoutL( const TRect& aParentRect );
/*
* Read non-touch exposure value layout
*/
void NonTouchEVLayoutL( const TRect& aParentRect );
/*
* Initialzing slider values
*/
void InitializeSliderValuesL();
public: // Data
protected: // Data
private: // Data
// Bitmap and mask for slider "shaft"
CFbsBitmap* iBitmapShaft;
CFbsBitmap* iBitmapShaftMask;
// Bitmap and mask for slider "thumb"
CFbsBitmap* iBitmapThumb;
CFbsBitmap* iBitmapThumbMask;
// Bitmap and mask for pressed slider "thumb"
CFbsBitmap* iBitmapThumbSelected;
CFbsBitmap* iBitmapThumbSelectedMask;
// Bitmap and mask for slider "thumb" currently in use
CFbsBitmap* iBitmapThumbCurrent;
CFbsBitmap* iBitmapThumbCurrentMask;
// Current level to be indicated by the thumb
TInt iValue;
// Pointer to the observer of slider events
MCamSettingValueObserver* iSettingObserver;
// Point of where the top-left of the thumb bitmap will be drawn
TPoint iThumbPoint;
// The values that
RPointerArray <CCamSliderLegend> iLegendArray;
// Layout structure for the Shaft
TAknLayoutRect iShaftLayout;
// Layout structure for the Thumb
TAknLayoutRect iThumbLayout;
// Main parent
TRect iLayoutAreaRect;
// The minimum size the control requires to be drawn
TSize iMinimumSize;
// The parent control of the slider
const CCoeControl* iParentControl;
// The maximum slider value
TInt iMaxSliderValue;
// The minium slider value
TInt iMinSliderValue;
// the number of slider values
TInt iNumSliderValues;
// Identifies which setting is being edited
TCamSettingItemIds iSettingType;
// number of slider steps
TInt iSteps;
};
#endif // __CCAMCAPTURESETUPSLIDER_H
// End of File