meetingrequest/mrgui/inc/cesmrlayoutmgr.h
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/inc/cesmrlayoutmgr.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,430 @@
+/*
+* Copyright (c) 2007-2009 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:  ESMR checkbox component for es mr gui (editor)
+*
+*/
+
+
+#ifndef CESMRLAYOUTMGR_H
+#define CESMRLAYOUTMGR_H
+
+#include <e32base.h>
+#include <fbs.h>
+//<cmail>
+#include "esmrdef.h"
+//</cmail>
+#include <layoutmetadata.cdl.h>
+#include <cenrepnotifyhandler.h>
+
+class CFont;
+class CCoeEnv;
+class TMargins;
+class TLogicalFont;
+class CAknLayoutFont;
+class CRepository;
+class TAknsItemID;
+class MESMRFontSizeObserver;
+
+/**
+ * MRUI mif file that includes all icon fallbacks for sis installations
+ */
+_LIT( KESMRMifFile, "esmrgui.mif");
+
+/**
+ * Namespace for layout constants
+ */
+namespace ESMRLayout // codescanner::namespace
+    {
+    /**
+     * common icon value all around the application
+     */
+    #define KIconSize ::TSize(20,20) // codescanner::baddefines
+    
+    /**
+     * Icon border margin
+     */
+    const TInt KIconBorderMargin = 3;
+
+    /**
+     * Field end margin
+     */
+    const TInt KFieldEndMargin = 6;
+    
+    /**
+     * Mirrored icon margin
+     */
+    const TInt KMirroredIconMargin = 9;
+    }
+
+/**
+ * CESMRLayoutManager
+ *
+ * @lib esmrgui.lib
+ */
+NONSHARABLE_CLASS( CESMRLayoutManager ) :
+    public CBase,
+    public MCenRepNotifyHandlerCallback
+    {
+public:
+    // Enumeration for margin ids
+    enum TMarginsId
+        {
+        EFieldMargins = 0x000000
+        };
+
+    // Struct for field sizes
+    struct SFieldSize
+        {
+        TESMREntryFieldId iId;
+        TInt iFontSmallHeight;
+        TInt iFontNormalHeight;
+        TInt iFontLargeHeight;
+        TInt iWidthLandscape;
+        TInt iWidthPortrait;
+        };
+
+public: // Construction and destruction
+
+    /**
+     * Creates and initialzes new CESMRLayoutManager object.
+     * @return Pointer to CESMRLayoutManager object.
+     */
+    static CESMRLayoutManager* NewL();
+
+    /**
+     * C++ destructor
+     */
+    virtual ~CESMRLayoutManager();
+
+public: // Interface
+
+    /**
+     * Fetches field size information.
+     * @param aId Field id.
+     * @return Field size information.
+     */
+    virtual TSize FieldSize( TESMREntryFieldId aId );
+
+    /**
+     * Returns margin values used in the fields
+     *
+     * @param TMarginsId - Not currently in use
+     * @return TMargins margin values (pixels)
+     */
+    virtual TMargins Margins( TMarginsId aId );
+
+    /**
+     * Fetches font for field.
+     *
+     * @param aEnv Pointer to coe environment
+     * @param aId Field id.
+     * @return Pointer to font object. Ownership is not transferred.
+     *         Can return NULL pointer.
+     */
+    virtual const CFont* Font(
+            CCoeEnv* aEnv,
+            TESMREntryFieldId aId);
+
+    /**
+     * Fetces icon margin from the top of the field.
+     * This depends on the font size
+     *
+     * @return Margin value (pixels)
+     */
+    virtual TInt IconTopMargin();
+
+    /**
+     * Fetces text margin from the top of the field.
+     * This depends on the font size
+     *
+     * @return Margin value (pixels)
+     */
+    virtual TInt TextTopMargin();
+
+    /**
+     * Fetces text margin from the side of the field.
+     * This depends on the font size.
+     *
+     * @return Margin value (pixels)
+     */
+    virtual TInt TextSideMargin();
+
+    /**
+     * Returns the size of the control where response
+     * area answer text is written.
+     *
+     * @return TSize Size of the control
+     */
+    virtual TSize ResponseAreaAnswerTextSize();
+
+    /**
+     * Returns the size of the control where response
+     * area topic text is written.
+     *
+     * @return TSize Size of the control
+     */
+    virtual TSize ResponseAreaTopicTextSize();
+
+    /**
+     * Returns the position of the control where response
+     * area answer text is written.
+     *
+     * @return TPoint position of the control
+     */
+    virtual TPoint ResponseAreaAnswerTextPosition();
+
+    /**
+     * Returns the position of the icon in the response area item
+     *
+     * @return TPoint position of the control
+     */
+    virtual TPoint ResponseAreaAnswerIconPosition();
+
+    /**
+     * Returns the height of the response area item
+     *
+     * @return TInt height of the control
+     */
+    virtual TInt ResponseAreaAnswerItemheight();
+
+    /**
+     * Returns the height of standard list field
+     *
+     * @return TInt height of the control
+     */
+    virtual TInt RegularFieldHeight();
+
+    /**
+     * Returns the position of the text control used in organizer field
+     *
+     * @return TInt height of the control
+     */
+    virtual TPoint OrganizerTextPosition();
+
+    /**
+     * Returns the width of the text control used in organizer field
+     *
+     * @return TInt width of the control
+     */
+    virtual TInt OrganizerTextWidth();
+
+    /**
+     * Returns the height of the title pane
+     *
+     * @return TInt height of the control
+     */
+    virtual TInt TitlePaneHeight();
+
+    /**
+     * Returns the skin/theme based color used as a background
+     * color in the list.
+     *
+     * @return TRgb background color
+     */
+    virtual TRgb ListAreaBgColor();
+
+    /**
+     * Returns the skin/theme based color used as a text
+     * color.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb GeneralListAreaTextColor();
+
+    /**
+     * Returns the skin/theme based color used as a text
+     * color.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb ViewerListAreaTextColor();
+
+    /**
+     * Returns the skin/theme based color used as a text
+     * color when text is "highlighted".
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb ViewerListAreaHighlightedTextColor();
+
+    /**
+     * Returns the skin/theme based text color used as a text
+     * color in theme documentation specified places.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb NormalTextColor();
+
+    /**
+     * Returns the skin/theme based text color used as a text
+     * color in theme documentation specified places.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb HighlightedTextColor();
+    
+    /**
+     * Returns the skin/theme based text color used as a text
+     * color in title pane.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb TitleAreaTextColor();
+
+    /**
+     * Returns the skin/theme based text background color to be used
+     * as a color in theme documentation specified places.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb NormalTextBgColor();
+
+    /**
+     * Returns the skin/theme based field border color to be used
+     * as a color in theme documentation specified places.
+     *
+     * @return TRgb text color
+     */
+    virtual TRgb FieldBorderColor();
+
+    /**
+     * Returns the text color ID for normal text.
+     *
+     * @return TInt text color ID
+     */
+    virtual TInt NormalTextColorID();
+
+    /**
+     * Returns the text color ID for viewer area text.
+     *
+     * @return TInt text color ID
+     */
+    virtual TInt ViewerListAreaTextColorID();
+
+    /**
+     * Creates bitmap and bitmap mask. Bitmap is skin/theme based
+     * and it's retrived by the given ID.Bitmap is also resized to
+     * the given size.
+     * Ownership of these created bitmaps is transferred to the caller.
+     *
+     * @param aIconID - id of the wanted bitmap
+     * @param aBitmap - reference to the pointer where new bitmap is stored
+     * @param aMask - reference to the pointer where new bitmap mask is stored
+     * @param aSize - Desired size for the bitmap
+     * @return TInt - KErrNone if bitmap was constructed succesfully
+     *                KErrNotFound if any problems occured
+     */
+    virtual TInt GetSkinBasedBitmap( TAknsItemID aIconID,
+                                     CFbsBitmap*& aBitmap,
+                                     CFbsBitmap*& aMask,
+                                     TSize aSize );
+    /**
+     * Checks if Font settings were changed since last font update query
+     * Note: This function does not make a query/poll from the cenrep
+     * @see CESMRLayoutManager::Font
+     *
+     * @return TBool - True, if font was changed
+     */
+    virtual TBool IsFontChanged();
+
+   /**
+     * Checks current font zoom/size of this layoutmanager
+     *
+     * @return TAknUiZoom - font zoom state
+     */
+    virtual TInt CurrentFontZoom();
+
+    /**
+     * Sets the Font size settings observer.
+     * @param MESMRFontSizeObserver Observer instance to be informed.
+     */
+    void SetObserver( MESMRFontSizeObserver* aObserver );
+
+    /**
+     * Returns the position of the conflict popup control
+     *
+     * @return TPoint control position
+     */
+    IMPORT_C static TPoint ConflictPopupPosition();
+
+    /**
+     * Returns information about mirrored layout.
+     *
+     * @return TBool - ETrue if mirrored layout is set, otherwise EFalse.
+     */
+    IMPORT_C static TBool IsMirrored();
+
+    /**
+     * Sets fallback icon from esmrgui.mif file if no matching icon from skin
+     * also used by several other fields as a utility
+     *
+     * @param aIconID - ID for the icon that this field should show
+     * @param aFileIndex - id of the icon (from esmrgui.mif)
+     * @param aFileMaskIndex - id of the icon mask (from esmrgui.mif)
+     */
+    IMPORT_C static void SetBitmapFallback( const TAknsItemID& aIconID,
+                                            TInt& aFileIndex,
+                                            TInt& aFileMaskIndex);
+    
+private:
+    // Default c++ constructor
+    CESMRLayoutManager();
+    // Second phase constructor
+    void ConstructL();
+    // From MCenRepNotifyHandlerCallback
+    // Notifies the observer that font size has changed
+    virtual void HandleNotifyInt( TUint32 aId, TInt aNewValue );
+
+    /**
+     * Method is used to add sizes of the fields for different font sizes and
+     * orientations. This is called only once at the construct phase.
+     *
+     * @param aId - ID of the field
+     * @param aFontSmallHeight - height of the field when small fonts are set.
+     * @param aFontNormalHeight - height of the field when normal fonts are set.
+     * @param aFontLargeHeight - height of the field when large fonts are set.
+     * @param aWidthLandscape - width of the field when orientation is landscape.
+     * @param aWidthPortrait - width of the field when orientation is portrait.
+     *
+     */
+    void AddSize(
+            TESMREntryFieldId aId,
+            TInt aFontSmallHeight,
+            TInt aFontNormalHeight,
+            TInt aFontLargeHeight,
+            TInt aWidthLandscape,
+            TInt aWidthPortrait );
+
+private: // Data
+    /// Own: Field size array
+    RArray<SFieldSize> iSize;
+    /// Own: Pointer to text field fonts
+    CAknLayoutFont* iFont;
+    /// Own: Pointer to mfne field fonts
+    CAknLayoutFont* iMfneFont;
+    /// Own: Pointer to cenrep object fetching font settings information
+    CRepository* iFontSettings;
+    /// Own: Font settings value
+    TInt iFontSettingsValue;
+    /// Own: Font settings change status
+    TBool iFontSettingsChanged;
+    /// Own: Active object which listens Font Size Key from a CenRep
+    CCenRepNotifyHandler* iNotifyHandler;
+    /// Ref: Observer for Font Size
+    MESMRFontSizeObserver* iFontSizeObserver;
+    };
+
+#endif //CESMRLAYOUTMGR_H
+
+// EOF