--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/BubbleManager/Inc/BMUtils.h Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,523 @@
+/*
+* 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:
+* Some utility functions to other classes
+*
+*/
+
+
+#ifndef BUBBLEUTILS_H
+#define BUBBLEUTILS_H
+
+// INCLUDES
+#include "BMBubbleManager.h"
+#include <calslbs.h>
+
+// FORWARD DECLARATIONS
+class CBubbleHeader;
+class CEikImage;
+class CEikLabel;
+class CBubbleImageManager;
+class TAknLayoutRect;
+class CBubbleCallObjectImage;
+class CTelBubbleCustomElement;
+
+// CLASS DECLARATION
+
+class TBubbleLayoutRect
+ {
+public:
+ TBubbleLayoutRect();
+ void SetRect( const TPoint& aPoint, const TSize& aSize );
+ void SetColor( const TRgb aColor );
+ TRgb Color() const;
+ TRect Rect() const;
+private:
+ TRgb iColor;
+ TRect iRect;
+ };
+
+
+/**
+* CBubbleUtils class
+* Some utility functions to other classes
+*
+* @lib bubblemanager.lib
+* @since 1.0
+*/
+class BubbleUtils
+ {
+ public: // Data types
+
+ // Text place enumeration
+ enum KBubbleUtilsHeaderTextPlace
+ {
+ EBubbleHeaderCLI,
+ EBubbleHeaderLabel,
+ EBubbleHeaderTimerCost,
+ EBubbleHeaderCNAP
+ };
+
+ public: // Member functions
+
+ /**
+ * Sets call type indicators in type pane
+ * @param aHeader Header which contains the information
+ * @param aTypeImage1 The selected (left one) bitmap is attached to
+ * this image
+ * @param aTypeImage2 The selected (right one) bitmap is attached to
+ * this image
+ * @param aBubbleManager Reference to BubbleManager
+ * @return Is at least one image set?
+ */
+ static TBool SetCallTypePane( const CBubbleHeader& aHeader,
+ CEikImage*& aTypeImage1,
+ CEikImage*& aTypeImage2,
+ CBubbleManager& aBubbleManager );
+
+ /**
+ * Sets ciphering off icon to image
+ * @param aHeader Header which contains the information
+ * @param aCypfOffImage The selected bitmap is attached to this image
+ * @param aBubbleManager Reference to BubbleManager
+ * @return Is image set?
+ */
+ static TBool SetCyphOffImage( const CBubbleHeader& aHeader,
+ CEikImage*& aCypfOffImage,
+ CBubbleManager& aBubbleManager );
+
+
+ /**
+ * Selects text to lines ( for bottom, bottom right and middle bubbles)
+ * @param aHeader Header which contains the information
+ * @param aFirstLineText Text which goes to line 1 in the bubble
+ * @param aSecondLineText Text which goes to line 2 in the bubble
+ * @param aTimerCost Text which goes to timer/cost in the bubble
+ * @param aTextLine1 Component for resource allocation.
+ * @param aTextLine2 Component for resource allocation.
+ * @param aBubbleManager Bubblemanager reference.
+ * @param aFirstLineDir First line text clipping direction
+ * @param aSecondLineDir Second line text clipping direction
+ * @param aTextLineNumber On return contains the text-part line number
+ */
+ static void ChooseTextsToTwoLines( const CBubbleHeader& aHeader,
+ TPtrC& aFirstLineText,
+ TPtrC& aSecondLineText,
+ CEikLabel*& aTimerCost,
+ CEikLabel*& aTextLine1,
+ CEikLabel*& aTextLine2,
+ CBubbleManager& aBubbleManager,
+ CBubbleManager::TPhoneClippingDirection& aFirstLineDir,
+ CBubbleManager::TPhoneClippingDirection& aSecondLineDir,
+ TUint8& aTextLineNumber );
+
+ /**
+ * Selects text to lines ( for bottom, bottom right and middle bubbles)
+ * @param aHeader Header which contains the information
+ * @param aFirstLineText Text which goes to line 1 in the bubble
+ * @param aSecondLineText Text which goes to line 2 in the bubble
+ * @param aThirdLineText Text which goes to line 2 in the bubble
+ * @param aTimerCost Text which goes to timer/cost in the bubble
+ * @param aTextLine1 Component for resource allocation.
+ * @param aTextLine2 Component for resource allocation.
+ * @param aTextLine3 Component for resource allocation.
+ * @param aBubbleManager Bubblemanager reference.
+ * @param aFirstLineDir First line text clipping direction
+ * @param aSecondLineDir Second line text clipping direction
+ * @param aThirdLineDir Third line text clipping direction
+ * @param aTextLineNumber On return contains the text-part line number
+ * @since Series60 2.6
+ */
+ static void ChooseTextsToThreeLines( const CBubbleHeader& aHeader,
+ TPtrC& aFirstLineText,
+ TPtrC& aSecondLineText,
+ TPtrC& aThirdLineText,
+ CEikLabel*& aTimerCost,
+ CEikLabel*& aTextLine1,
+ CEikLabel*& aTextLine2,
+ CEikLabel*& aTextLine3,
+ CBubbleManager& aBubbleManager,
+ CBubbleManager::TPhoneClippingDirection& aFirstLineDir,
+ CBubbleManager::TPhoneClippingDirection& aSecondLineDir,
+ CBubbleManager::TPhoneClippingDirection& aThirdLineDir,
+ TUint8& aTextLineNumber );
+
+ /**
+ * Selects text to lines
+ * @param aHeader Header which contains the information
+ * @param aFirstLineText Text which goes to line 1 in the bubble
+ * @param aSecondLineText Text which goes to line 2 in the bubble
+ * @param aThirdLineText Text which goes to line 2 in the bubble
+ * @param aTimerCost Text which goes to timer/cost in the bubble
+ * @param aTextLine1 Component for resource allocation.
+ * @param aTextLine2 Component for resource allocation.
+ * @param aTextLine3 Component for resource allocation.
+ * @param aTextLine4 Component for resource allocation.
+ * @param aTextLine5 Component for resource allocation.
+ * @param aBubbleManager Bubblemanager reference.
+ * @param aFirstLineDir First line text clipping direction
+ * @param aSecondLineDir Second line text clipping direction
+ * @param aThirdLineDir Third line text clipping direction
+ * @param aTextLineNumber On return contains the text-part line number
+ * @param aThreeLinesOfText Three lines of call text.
+ * @since Series60 2.6
+ */
+ static void ChooseTextsToFiveLines( const CBubbleHeader& aHeader,
+ TPtrC& aFirstLineText,
+ TPtrC& aSecondLineText,
+ TPtrC& aThirdLineText,
+ CEikLabel*& aTextLine1,
+ CEikLabel*& aTextLine2,
+ CEikLabel*& aTextLine3,
+ CEikLabel*& aTextLine4,
+ CEikLabel*& aTextLine5,
+ CBubbleManager& aBubbleManager,
+ CBubbleManager::TPhoneClippingDirection& aFirstLineDir,
+ CBubbleManager::TPhoneClippingDirection& aSecondLineDir,
+ CBubbleManager::TPhoneClippingDirection& aThirdLineDir,
+ TUint8& aTextLineNumber,
+ TBool aThreeLinesOfText );
+
+ /**
+ * Selects from longer text (format: "longone\tshort") which one to use
+ * @param aText String containing at least long version of the text
+ * @param aLabel Label which width has been set and the text will be
+ * clipped to.
+ * @param aClipDir Text's clipping direction
+ */
+ static void SetTextInLabel(
+ const TDesC16& aText,
+ CEikLabel*& aLabel ,
+ const CBubbleManager::TPhoneClippingDirection& aClipDir );
+
+ /**
+ * Sets given text to label - clips if needed.
+ * @param aText String containing the used text
+ * @param aLabel Label which width has been set and the text will be
+ * clipped to.
+ * @param aClipDir Text's clipping end
+ */
+ static void ClipToLabel (
+ const TDesC16& aText,
+ CEikLabel*& aLabel ,
+ const CBubbleManager::TPhoneClippingDirection& aClipDir );
+
+
+ /**
+ * Draws image to screen. Pointer check added to previos function.
+ * @param aGc Context to draw to
+ * @param aImage Drawable image - with mask!
+ * @return EFalse if image was not drawn.
+ */
+ static TBool DrawMaskedImage( CBitmapContext& aGc , CEikImage* aImage );
+
+ /**
+ * Tries to set text to label.
+ * @param aLabel Label to set the text to
+ * @param aText The text.
+ */
+ static void AddTextToEikLabel(
+ CEikLabel*& aLabel ,
+ const TDesC& aText);
+
+ /**
+ * Adds text to call header. Cuts the text if not fit.
+ * @param aHeader The header
+ * @param aTextPlace Enum for text position
+ * @param aTextToSet Original text.
+ * @param aMaxLength Text max length
+ * @param aClipDirection If text is too long, then cnut it.
+ */
+ static void AddTextToHeader( CBubbleHeader& aHeader,
+ const KBubbleUtilsHeaderTextPlace aTextPlace,
+ const TDesC& aTextToSet,
+ const TInt aMaxLength,
+ const CBubbleManager::TPhoneClippingDirection aClipDirection );
+
+
+ /**
+ * The next three calls AknLayoutUtils's functions after they have
+ * checked the pointer.
+ */
+ static void LayoutControl(
+ CCoeControl* aControl,
+ const TRect& aControlParent,
+ const TAknWindowLineLayout& aLayout );
+
+ static void LayoutBackgroundImage(
+ CEikImage* aImage,
+ const TRect& aParent,
+ const TAknWindowLineLayout& aLayout);
+
+ static void LayoutImage(
+ CEikImage* aImage,
+ const TRect& aParent,
+ const TAknWindowLineLayout& aLayout);
+
+ static void LayoutLabel(
+ CEikLabel* aLabel,
+ const TRect& aLabelParent,
+ const TAknTextLineLayout& aLayout );
+
+ static void LayoutImage(
+ CEikImage* aImage,
+ const TRect& aParent,
+ const AknLayoutUtils::SAknLayoutControl& aLayout );
+
+ static void LayoutCustomElement(
+ CTelBubbleCustomElement* aElement,
+ const TRect& aParent,
+ const TAknWindowLineLayout& aLayout);
+
+ /**
+ * Converts western number string to Arabic-Indic if needed.
+ * @since 2.0
+ * @param aResult Result buffer. aResult.MaxLength() must be greater
+ or equal to aSource.Length().
+ * @param aSource Original string.
+ */
+ static void ConvertToArabicIndic(
+ TDes& aResult ,
+ const TDesC& aSource );
+
+ /**
+ * Converts western number string to Arabic-Indic if needed.
+ * @since 2.0
+ * @param aDes Source and destination
+ */
+ static void ConvertToArabicIndic( TDes& aDes );
+
+ /**
+ * Converts western number string to Arabic-Indic if needed.
+ * @since 2.0
+ * @param aResult Original string.
+ * @return Result buffer. NULL in OOM case. Ownership transferred.
+ */
+ static HBufC* ConvertToArabicIndic( const TDesC& aDes );
+
+
+ /**
+ * Set call type pane
+ * @since 2.0
+ * @param aBubblePlace Bubble place from CBubblePlace.
+ * @param aParent Parent control
+ * @param aTypeIndication1 Left indicator.
+ * @param aTypeIndication2 Rigth indicator.
+ */
+ static void SetLayoutForCellTypePane(
+ const CBubblePlace::TPhoneBubblePlace& aBubblePlace,
+ const TRect& aParent,
+ CEikImage* aTypeIndication1,
+ CEikImage* aTypeIndication2 );
+
+ /**
+ * Set cyphering off icon place
+ * @since 2.0
+ * @param aHeader Call information.
+ * @param aBubblePlace Bubble place from CBubblePlace.
+ * @param aParent Parent control
+ * @param aCyphOffImage The image.
+ */
+ static void SetLayoutFofCypheringOffIcon(
+ const CBubbleHeader& aHeader,
+ const CBubblePlace::TPhoneBubblePlace& aBubblePlace,
+ const TRect& aParent,
+ CEikImage* aCyphOffImage );
+
+ /**
+ * Places thumbnail image
+ * @param aBubblePlace Bubble place from CBubblePlace
+ * @param aImage The thumbnail image
+ * @param aClippingRect Clipping rectangle.
+ * @param aShadow Thumbnail shadow
+ * @param aParentRect Parent control.
+ */
+ static void PlaceThumbnail(
+ const CBubblePlace::TPhoneBubblePlace& aBubblePlace,
+ CEikImage* aImage ,
+ TBubbleLayoutRect& aShadow,
+ const TRect& aParentRect,
+ CFbsBitmap* aThumbNailBitmap );
+
+
+ /**
+ *
+ * @param aParent Parent control.
+ * @param aWidth Width of the thumbnail image.
+ * @return ETrue if customized image, else EFalse.
+ */
+ static TBool IsCustomizedImage( const TRect& aParent, const TInt aWidth );
+
+ /**
+ *
+ * @param aParent Parent control.
+ * @param aWidth Width of the thumbnail image.
+ * @return TInt Internal type of the image used.
+ */
+ static TInt GetThumbnailImageType( const TRect& aParent, const TInt aWidth );
+ /**
+ * @param aLabel Label control to be resized.
+ * @param aParent Parent control.
+ * @param aWidth Width of the thumbnail image.
+ */
+ static void LabelExtent( CEikLabel* aLabel,
+ const TRect& aParent,
+ const TInt aWidth );
+
+ /**
+ * @param aFileName Icon file name.
+ */
+ static void BubbleIconFileName( TDes& aFileName );
+
+ /**
+ * @param aFileName Resource file name.
+ */
+ static void BubbleResourceFileName( TDes& aFileName );
+
+ /**
+ * Selects from longer text (format: "longone\tshort") which one to use
+ * @param aText String containing at least long version of the text
+ * @param aLabel Label which width has been set and the text will be
+ * clipped to.
+ * @param aClipDir Text's clipping direction
+ */
+ static void SetTextInLabel(
+ const TDesC16& aText,
+ CEikLabel& aLabel ,
+ const CBubbleManager::TPhoneClippingDirection& aClipDir );
+
+ /**
+ * Sets given text to label - clips if needed.
+ * @param aText String containing the used text
+ * @param aLabel Label which width has been set and the text will be
+ * clipped to.
+ * @param aClipDir Text's clipping end
+ */
+ static void ClipToLabel (
+ const TDesC16& aText,
+ CEikLabel& aLabel ,
+ const CBubbleManager::TPhoneClippingDirection& aClipDir );
+
+ /**
+ * Tries to set text to label.
+ * @param aLabel Label to set the text to
+ * @param aText The text.
+ */
+ static void AddTextToEikLabel( CEikLabel& aLabel , const TDesC& aText);
+
+ /**
+ * Creates bubble image from 9-pieceframe.
+ * @since 3.1
+ * @param aFrameID Skin id for frame.
+ * @param aOuterRect Outer rectangle.
+ * @param aInnerRect Inner rectangle.
+ * @param aBubble Bubble image.
+ */
+ static void PrepareBubbleImageL(
+ const TAknsItemID& aFrameID,
+ const TRect& aOuterRect,
+ const TRect& aInnerRect,
+ CEikImage*& aBubble );
+
+ /**
+ * Makes bubble image transparent based on given
+ * 9-piece mask frame.
+ * @since 3.1
+ * @param aFrameID Skin id for frame.
+ * @param aOuterRect Outer rectangle.
+ * @param aInnerRect Inner rectangle.
+ * @param aBubble Bubble image.
+ */
+ static void AddTransparencyToBubbleImageL(
+ const TAknsItemID& aFrameID,
+ const TRect& aOuterRect,
+ const TRect& aInnerRect,
+ CEikImage*& aBubble );
+
+ /**
+ * Adds call object image to bubble image.
+ * @since 3.1
+ * @param aCOImage Image.
+ * @param aCOImageMask Image mask.
+ * @param aCallObjectRect Call object location in bubble.
+ * @param aFrameID Mask frame for image fading.
+ * @param aOuterRect Frame outer rectangle.
+ * @param aInnerRect Frame inner rectangle.
+ * @param aBubble Bubble image.
+ * @param aDimmed ETrue if image is shown dimmed.
+ */
+ static void PrepareCallObjectToBubbleImageL(
+ const CFbsBitmap* aCOImage,
+ const CFbsBitmap* aCOImageMask,
+ const TRect& aCallObjectRect,
+ const TAknsItemID& aFrameID,
+ const TRect& aOuterRect,
+ const TRect& aInnerRect,
+ CEikImage*& aBubble,
+ TBool aDimmed = EFalse );
+
+ /**
+ * Fallback background drawing. This method can be used to draw background,
+ * if skin/bitmap graphichs cannot be used (e.g. due to OOM).
+ * @param aRect Rectangle.
+ */
+ static void DrawBackgroundRect( CBitmapContext& aGc,
+ const TRect& aRect );
+
+ /**
+ * Layouts call type indicators in call type pane.
+ * @since S60 3.2
+ * @param aParent Parent rectangle.
+ * @param aCallTypePane Call type pane.
+ * @param aTypeIndication1 First indicator.
+ * @param aTypeIndication2 Second indicator.
+ */
+ static void LayoutCallTypeIndicators(
+ const TRect& aParent,
+ const TAknWindowLineLayout& aCallTypePane,
+ CEikImage* aTypeIndication1,
+ CEikImage* aTypeIndication2 );
+
+
+ /**
+ * Prepares call image attached to call header to be
+ * ready for drawing.
+ * @since S60 3.2
+ * @param aHeader Call header.
+ * @param aSize Displayable size for call image.
+ */
+ static void PrepareCallObjectImageL(
+ CBubbleHeader& aHeader,
+ const TSize& aSize );
+
+ /**
+ * Combines given masks to new mask bitmap.
+ * @since S60 5.0
+ * @param aPrimaryMask Mask treated as primary mask.
+ * @param aSecondaryMask Mask treated as secondary mask.
+ * @return The combined mask.
+ */
+ static CFbsBitmap* CreateCombinedMaskL(
+ const CFbsBitmap* aPrimaryMask,
+ const CFbsBitmap* aSecondaryMask );
+
+ private:
+ static void DrawMaskedImage( CBitmapContext& aGc , CEikImage& aImage );
+
+
+};
+
+#endif //BUBBLEUTILS_H
+
+// End of File