inc/screensaverindicatorarray.h
branchRCL_3
changeset 26 e8d784ac1a4b
parent 0 040fcad49f44
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/screensaverindicatorarray.h	Wed Sep 01 12:30:40 2010 +0100
@@ -0,0 +1,245 @@
+/*
+* Copyright (c) 2003 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:   CScreensaverIndicatorArray declaration.
+*
+*/
+
+
+
+#ifndef C_SCREENSAVERINDICATORARRAY_H
+#define C_SCREENSAVERINDICATORARRAY_H
+
+#include "screensaverindicator.h"
+
+/*
+*   Indicator array class.
+*/
+class CScreensaverIndicatorArray : public CBase
+    {
+    public:
+        
+        /**
+    * Two-phased constructor
+    * 
+    * @param aOldLayout if construct the old layout or the new layout
+    * @param aColorInversionUsed if use the inverted color or the 
+    * normal color
+    */
+    static CScreensaverIndicatorArray* NewL( TBool aColorInversionUsed );
+
+    /**
+    * Destructor
+    */
+    ~CScreensaverIndicatorArray();
+
+    /**
+    * Two-phased constructor
+    */
+    void ConstructL( TBool aColorInversionUsed);
+
+    /**
+    * Creates indicator of given type and pushes it to
+    * cleanup stack.
+    *
+    * @param aId  Indicator to be created.
+    */
+    CScreensaverIndicator *NewIndicatorLC(TScreensaverIndicatorType aType);
+
+    /**
+    * Draws indicator array to given graphics context. Setup function
+    * must be called before calling Draw function.
+    *
+    * @param aGc  Graphics context for drawing indicator array.
+    */
+    void Draw(CWindowGc& aGc) const;
+
+    /**
+    * Sets up indicator array for drawing. Sets positions for
+    * indicators.
+    */
+    void Setup(TAknLayoutRect& aLayoutRect, TAknLayoutText& aLayoutText,
+               TAknLayoutRect& aLayoutInds);
+    
+    /*
+    * Set the attributes of the indicator 
+    */
+    void SetIndicatorsAttribute( 
+        TInt& Ind, 
+        TAknLayoutText& aLayoutText, 
+        TAknLayoutRect& aLayoutInds, 
+        TInt& aCurrentX );
+
+    /**
+    * Checks if there is dependency flag set for given indicator.
+    *
+    * @param
+    * @return ETrue  if there is dependency conflict.
+    *         EFalse if not.
+    */
+    TBool CheckDependencyConflict(TScreensaverIndicatorId aId) const;
+
+    /*
+    * Sets dependency flag to given indicator to given value.
+    * If dependency flag is set then the indicator is not drawn
+    * even when it would be otherwise visible.
+    */
+    void SetDependencyStatus(TScreensaverIndicatorId aId, TBool aValue);
+
+    /**
+    * Queries payload for given indicator.
+    *
+    * @param aId ID of the indicator
+    * @param aPayload Indicator payload to receive the information
+    * @return  KErrNone if payload was set successfully.
+    */
+    TInt GetIndicatorPayload(
+        TScreensaverIndicatorId aId,
+        TIndicatorPayload& aPayload) const;
+
+    /**
+    * Sets payload for given indicator.
+    * NOTE that icon and displayed indication cannot be set
+    *
+    * @param aType
+    * @param aPayload
+    * @return KErrNone if payload was set successfully.
+    */
+    TInt SetIndicatorPayload(
+        TScreensaverIndicatorId aId,
+        const TIndicatorPayload& aPayload);
+
+    /**
+    * Returns value indicating which drawing mode screensaver should select
+    * based on indicator payloads and dependecies. This function aswers to question
+    * "What drawing mode should screensaver select if indicator payloads and
+    * dependencies were the only determining factor?". This doesn't mean
+    * that screensaver will be necessarily drawn in that mode if there is
+    * plugin module present or something happens while setting up indicator array
+    * for drawing. Screensaver needs this information when it prepares itself for
+    * drawing.
+    */
+    TScreensaverDrawType PreferredDrawingMode() const;
+
+    /**
+    * Returns value indicating which drawing mode screensaver should select.
+    * This function is basically same as 'PreferredDrawingMode', but it
+    * returns the final state of indicator array after it has been
+    * set up (which may be different from PreferredDrawingMode).
+    * Screensaver queries this information just before it draws the screen.
+    */
+    TScreensaverDrawType ActualDrawingMode() const;
+
+    /**
+    * Returns the height of indicator.
+    */
+    TInt Height() const;
+
+    /**
+    * To set visibility value for indicators
+    */
+    void SetVisibilityForIndicators();
+    
+private:
+    
+    /**
+    * C++ default constructor
+    */
+    CScreensaverIndicatorArray();
+    
+    /**
+    * Construct the Indicator from the resource file
+    */
+    void ConstructFromResourceL();
+    
+    /*
+    * Constuct the screensaver param from the resource
+    */
+    void ConstructParamFromResourceL();
+    
+    /*
+    * Construct indicator array from resource 
+    */
+    void ConstructIndArrayL();
+    
+    /*
+    * Construct the indicators from resource 
+    */
+    void ConstructIndicatorsL( TInt aResourceId );
+    
+    /**
+    * Returns the dependency record by the index
+    */
+    TBool Dependency(TInt aIndex) const;
+
+private:
+    
+    /**
+    * The count of the indicator
+    */
+    TInt iCount;
+    
+    /**
+    * How many pixels between indicators.
+    */
+    TInt iGap;
+    
+    /** 
+    * Minimum indicator distance to left and right border.
+    */
+    TInt iMargin;
+    
+    /**
+    * Distance from top border of indicator bar to top border of 
+    * indicator icon.
+    */
+    TInt iTopMargin;
+    
+    /**
+    * The level of the text
+    */
+    TInt iTextLevel;
+    
+    /**
+    * The area of the indicator
+    */
+    TRect iRect;
+    
+    /**
+    * The height of the indicator bar
+    */
+    TInt iHeight;
+    
+    /**
+    * The array of indicators
+    */
+    CArrayPtrFlat<CScreensaverIndicator>* iIndicators;
+    
+    /**
+    * The array of dependency record
+    */
+    CArrayFixFlat<TBool>* iDependencyRecord;
+    
+    /**
+    * The flag decised if use the old layout or not.
+    */
+    TBool iOldLayout;
+    
+    /**
+    * Colors to be used for indicator layout
+    */
+    TUint32 iBgColor;
+    TUint32 iTextColor;  
+};
+
+#endif // C_SCREENSAVERINDICATORARRAY_H