diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/GsCamcorderPlugin/inc/GSCamQualitySettingSlider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/GsCamcorderPlugin/inc/GSCamQualitySettingSlider.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,360 @@ +/* +* 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: Class for showing the EV slider* +*/ + + + +#ifndef __CGSCAMQUALITYSETTINGSLIDER_H +#define __CGSCAMQUALITYSETTINGSLIDER_H + +// INCLUDES +#include +#include // for TAknLayoutText +#include "CamPSI.h" // For Product Specific Information +#include "CamSettingsInternal.hrh" +#include "CamSettings.hrh" +#include "GSCamcorderPlugin.hrh" +#include "Cam.hrh" +#include "CamSettingValueObserver.h" + +// CONSTANTS +// The maximum number of divisions required for the quality slider. +#define BITMAP_SHAFT_MAX_DIVISIONS 6 + +class CCamConfiguration; + + +/** +* 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: + + ~CCamSliderLegend(); + + /** + * Constructs the layout information for the object + * @since 3.0 + * @param aLayoutRect Layout for the icon + * @param aBitmap Bitmap ID + * @param aMask Mask ID + */ + void ConstructL( const TAknLayoutRect& aLayoutRect, + TInt aBitmap, TInt aMask ); + + /** + * 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 Quality level settings +* +* @since 2.8 +*/ +class CGSCamQualitySettingSlider : public CCoeControl + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CGSCamQualitySettingSlider* NewL( const CCoeControl* aParent, + MCamSettingValueObserver* aObserver, + TCamSettingItemIds aSettingType, + TInt aSteps, + CCamConfiguration* aConfiguration + ); + + /** + * Destructor. + */ + virtual ~CGSCamQualitySettingSlider(); + + 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, + HBufC* aTopSubtitle, + HBufC* aBottomSubtitle ); + + /** + * 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. + */ + CGSCamQualitySettingSlider( MCamSettingValueObserver* aObserver, + TCamSettingItemIds aSettingType, + TInt aSteps, + CCamConfiguration* aConfiguration ); + + /** + * 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 TouchLayoutVideo(); + + /** + * Read nontouch layout + */ + void NonTouchLayoutVideo(); + + /** + * Read touch layout + */ + void TouchLayoutPhoto(); + + /** + * Read nontouch layout + */ + void NonTouchLayoutPhoto(); + + /** + * Appends legends to iLegendArray by Product Specific Information key + * @since 5.0 + * @param aKey, Product Specific Information key + * @param aNumSliderValues, number of slider values + */ + void AppendLegendArrayL( TCamPsiKey aKey, TInt aNumSliderValues = 0 ); + + /** + * Get layout for video/image quality legend icons + * @since S60 v5.0 + * @param aParentRect Parent rectangle + * @param aSettingType Setting type + * @param aIndex Item index + * @return Layout rect that has the correct layout set + */ + TAknLayoutRect GetTouchVideoLegendLayout( + const TRect& aParentRect, + TInt aIndex ) const; + + /** + * Get layout for video/image quality legend icons + * @since S60 v5.0 + * @param aParentRect Parent rectangle + * @param aSettingType Setting type + * @param aIndex Item index + * @return Layout rect that has the correct layout set + */ + TAknLayoutRect GetNonTouchVideoLegendLayout( + const TRect& aParentRect, + TInt aIndex ) const; + + /** + * Get layout for video/image quality legend icons + * @since S60 v5.0 + * @param aParentRect Parent rectangle + * @param aSettingType Setting type + * @param aIndex Item index + * @return Layout rect that has the correct layout set + */ + TAknLayoutRect GetTouchPhotoLegendLayout( + const TRect& aParentRect, + TInt aIndex ) const; + + /** + * Get layout for three image quality legend icons + * @since S60 v5.0 + * @param aParentRect Parent rectangle + * @param aSettingType Setting type + * @param aIndex Item index + * @return Layout rect that has the correct layout set + */ + TAknLayoutRect GetNonTouchPhotoLegend3Layout( + const TRect& aParentRect, + TInt aIndex ) const; + + /** + * Get layout for five image quality legend icons + * @since S60 v5.0 + * @param aParentRect Parent rectangle + * @param aSettingType Setting type + * @param aIndex Item index + * @return Layout rect that has the correct layout set + */ + TAknLayoutRect GetNonTouchPhotoLegend5Layout( + const TRect& aParentRect, + TInt aIndex ) const; + + /** + * Counts quality setting steps. Available layouts are for three and + * five steps. + * @return TBool, ETrue if count is three or less + */ + TBool IsThreeTicksSlider() const; + + public: // Data + + protected: // Data + + private: // Data + + // Bitmaps for the slider "shaft" + CFbsBitmap* iBitmapShafts[BITMAP_SHAFT_MAX_DIVISIONS+1]; + CFbsBitmap* iBitmapShaftsMasks[BITMAP_SHAFT_MAX_DIVISIONS+1]; + + // Current level to be indicated by the slider + TInt iValue; + + // Pointer to the observer of slider events + MCamSettingValueObserver* iSettingObserver; + + // The values that + RPointerArray iLegendArray; + + // Layout structure for the Shaft + TAknLayoutRect iShaftLayout; + + // 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; + + // Configuration manager + CCamConfiguration* iConfiguration; + + // The subtitle text at top of page + HBufC* iTopSubtitle; + // The subtitle text at bottom of page + HBufC* iBottomSubtitle; + // The layout for the subtitle text at top + TAknLayoutText iLayoutSubtitleTop; + // The layout for the subtitle text at bottom of page + TAknLayoutText iLayoutSubtitleBottom; + + }; + +#endif // __CGSCAMQUALITYSETTINGSLIDER_H + +// End of File