msg_pub/plugin_bio_control_api/inc/CRichBio.h
changeset 0 72b543305e3a
child 5 4697dfb2d7ad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/msg_pub/plugin_bio_control_api/inc/CRichBio.h	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,312 @@
+/*
+* Copyright (c) 2002 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:  
+*     A UI control used by Smart Messaging Viewers.
+*
+*/
+
+
+
+#ifndef _CRICHBIO_H_
+#define _CRICHBIO_H_
+
+// INCLUDES
+
+#include <coecntrl.h>           // CCoeControl
+#include <badesca.h>            // CDesC16ArrayFlat
+#include <txtfrmat.h>           // TCharFormat
+#include <msgeditor.hrh>        // TMsgCursorLocation
+
+// DATA TYPES
+
+/**
+ * This enumeration defines the types of CRichBio
+ * No longer used meaningfully but defined for BC
+ *
+ */
+enum TRichBioMode
+    {
+    ERichBioModeEditorBase,
+    ERichBioModeStandard
+    };
+
+// FORWARD DECLARATIONS
+
+class CEikRichTextEditor;
+class CMsgExpandableControlEditor;
+
+/**
+ * A UI control used by Smart Messaging Viewers.
+ * This control owns an editor, which is capable of viewing rich text content.
+ * NOTE! This is only intended for use with the Smart Message Viewers.
+ */
+class CRichBio : public CCoeControl
+    {
+    public: // construction
+
+        /**
+         * Two-phased constructor. Constructs the complete object.
+         * The parent control has to have a container window at this stage.
+         * The type (TRichBioMode) is legacy code and has no effect on the
+         * construction or use of the object. Either ERichBioModeEditorBase
+         * or ERichBioModeStandard can be used with the same effect
+         * @param aParent The parent control.
+         * @param aMode Either ERichBioModeEditorBase or ERichBioModeStandard
+         * @return a pointer to the created object.
+         */
+        IMPORT_C static CRichBio* NewL( const CCoeControl* aParent,
+            TRichBioMode aMode );
+
+        /**
+         * Constructor.
+         * ConstructL must be called after the container window is get.
+         * The type (TRichBioMode) is legacy code and has no effect on the
+         * construction or use of the object. Either ERichBioModeEditorBase
+         * or ERichBioModeStandard can be used with the same effect
+         * @param aMode Either ERichBioModeEditorBase or ERichBioModeStandard
+         */
+        IMPORT_C CRichBio( TRichBioMode aMode );
+
+        /**
+         * Second phase constructor.
+         * The parent control has to have a container window at this stage.
+         * @param aParent The parent control, which has container window.
+         */
+        IMPORT_C void ConstructL( const CCoeControl* aParent );
+
+    public: // destruction
+
+        /**
+         * Destructor
+         */
+        ~CRichBio();
+
+    public: // own methods
+
+        /**
+         * Adds a label and value pair.
+         * The client does not need to check the length of the strings. This function will
+         * wrap strings that are too long.
+         * @param aLabel text to displayed in label text format.
+         * @param aValue text to displayed in text format.
+         */
+        IMPORT_C void AddItemL(const TDesC& aLabel, const TDesC& aValue);
+
+        /**
+         * This is needed for scrolling with Editor Base.
+         * @return TRect Returns the rectangle of the "current" line.
+         */
+        IMPORT_C TRect CurrentLineRect();
+
+        /**
+         * For accessing the richtext editor.
+         * Must not be called before ConstructL has been called.
+         * @return Reference to the CEikRichTextEditor
+         * @exception Panics if the iEditor is NULL.
+         */
+        IMPORT_C CEikRichTextEditor& Editor();
+
+        /**
+         * Is the editor base mode on.
+         * @return ETrue if it is in Editor Base mode.
+         */
+        IMPORT_C TBool IsEditorBaseMode() const;
+
+        /**
+         * Empties the data contents.
+         */
+        IMPORT_C void Reset();
+
+        /**
+        * Returns the preferred size of the control.
+        * @param aSize Control may set its preferred size
+        */
+        IMPORT_C void SetAndGetSizeL( TSize& aSize );
+
+        /**
+        * Returns the rich text virtual length.
+        * @return text length in rich text.
+        */
+        IMPORT_C TInt VirtualHeight();
+
+        /**
+        * Returns the current cursor position.
+        * Even in the viewer mode control contains a hidden cursor.
+        * This method return its position.
+        * @return a position of the hidden cursor relative to the virtual length.
+        */
+        IMPORT_C TInt VirtualVisibleTop();
+
+        /**
+        * Find out if the cursor is at a certain position.
+        * @param aLocation indicates either that the cursor is at the topmost
+        * position of the control or at the bottom most position.
+        * @return ETrue if the cursor is at the specified position, EFalse otherwise.
+        */
+        IMPORT_C TBool IsCursorLocation(TMsgCursorLocation aLocation) const;
+
+        /**
+         * Performs the internal scrolling of control if needed.
+         * @since 3.2
+         *
+         * @param aPixelsToScroll Amount of pixels to scroll.
+         * @param aDirection      Scrolling direction.
+         * @return Amount of pixels the where scrolled. Zero value means the component cannot
+         * be scrolled to that direction anymore
+         */
+
+        IMPORT_C TInt ScrollL( TInt aPixelsToScroll, TMsgScrollDirection aDirection );
+        
+        /**
+         * Prepares control for viewing.
+         * @since 3.2
+         * @param aEvent	The event type
+         * @param aParam Event related parameters
+         */
+        IMPORT_C void NotifyViewEvent( TMsgViewEvent aEvent, TInt aParam );
+
+    public: // from CCoeControl
+
+        TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+
+    private: // Helper methods.
+
+        /**
+        * Applies the format of label text to viewer.
+        * @param aFormat Character format to be applied.
+        * @param aMask Character format mask
+        */
+        void ApplyLabelFormat(TCharFormat& aFormat, TCharFormatMask& aMask);
+
+        /**
+        * Applies the format of value text to viewer.
+        * @param aFormat Character format to be applied.
+        * @param aMask Character format mask
+        */
+        void ApplyValueFormat(TCharFormat& aFormat, TCharFormatMask& aMask);
+
+        /**
+        * Applies the format of value and label text to viewer.
+        * @param aFormat Character format to be applied.
+        * @param aMask Character format mask
+        * @aIsLabel Determines is the text label or value.
+        */
+        void ApplyFormat(TCharFormat& aFormat, TCharFormatMask& aMask, TBool aIsLabel);
+
+        /**
+        * Appends text to RichText viewer.
+        * @param aLabel Label text
+        * @param aValue value text
+        */
+        void AddItemToRichTextL(const TDesC& aLabel, const TDesC& aValue);
+
+        /**
+        * Add text to viewer, checks and removes linefeeds and carriage returns
+        * @param aText text to be added
+        * @param aFormat Character format
+        * @param aMask Character format mask
+        */
+        void AppendTextL( const TDesC& aText,
+            const TCharFormat& aFormat,
+            const TCharFormatMask& aMask );
+
+        /**
+        * Checks either cache exists or not.
+        * @return TBool exists cache or not
+        */
+        TBool CacheExists();
+
+        /**
+        * Adds items to richtext from cache.
+        */
+        void LoadFromCacheL();
+
+        /**
+        * Adds item to cache
+        * @param aLabel label text
+        * @param aValue value text
+        */
+        void CacheItemL(const TDesC& aLabel, const TDesC& aValue);
+
+        /**
+        * panic wrapper
+        * @param aCode panic code.
+        */
+        static void Panic( TInt aPanic );
+
+
+
+    private:
+
+        /**
+         * Default constructor prohibited
+         */
+        CRichBio();
+
+        /**
+         * Copy constructor hidden away.
+         */
+        CRichBio(const CRichBio& aSource);
+
+        /**
+         * Assignment operator hidden away.
+         */
+        const CRichBio& operator=(const CRichBio& aSource);
+
+    private: // from CCoeControl
+
+        void Draw(const TRect& aRect) const;
+
+        TInt CountComponentControls() const;
+
+        CCoeControl* ComponentControl(TInt aIndex) const;
+
+        void SizeChanged();
+
+    private:
+
+        /// Introduce inner class.
+        class CEdwinSizeObserver;
+
+        /// Declare inner class friend.
+        friend class CEdwinSizeObserver;
+
+        /// Pointer to the editor size observer.
+        CEdwinSizeObserver* iEdwinSizeObserver;
+
+        /// Editor control
+        CMsgExpandableControlEditor* iEditor;
+
+        /// preserved for binary compatibility
+        TInt iVirtualHeight;
+
+        // startup cache for data
+        CDesC16ArrayFlat* iLabelCache;
+
+        // startup cache for data
+        CDesC16ArrayFlat* iValueCache;
+
+        // Editor Base mode on or off.
+        const TRichBioMode iMode;
+
+        /// is first item
+        TBool iIsFirstItem;
+
+    private:
+        friend class T_RichBioTestSuite;
+    };
+
+#endif //_CRICHBIO_H_
+
+// end of file