emailuis/uicomponents/inc/fsalftextstylemanager.h
changeset 0 8466d47a6819
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/inc/fsalftextstylemanager.h	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,145 @@
+/*
+* Copyright (c) 2007-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:  This component converts CRichText style's to HuiTextStyle
+*
+*/
+
+
+#ifndef C_FSALFTEXTSTYLEMANAGER_H
+#define C_FSALFTEXTSTYLEMANAGER_H
+
+#include <e32base.h>
+#include <txtfrmat.h>
+
+class CAlfTextStyleManager;
+class TFsTextStyleData;
+
+
+/**
+ *  CFsAlfTextStyleManager
+ *   
+ *  This class is designed to convert CRichText style definitions to
+ *  TAlfTextStyles. To avoid overlapping style definitions, all previously
+ *  created styles are stored in a list.
+ *
+ *  Example:
+ *  @code
+ *
+ *  manager = CFsTextStyleManager::NewL( Env().TextStyleManager() );
+ *  rText.GetChars( someText, charFormat, position ); //CRichText
+ *  TInt styleID = manager->GetStyleIDL( charFormat );
+ *  visual = CAlfTextVisual::AddNewL( *iControl, iCurveLayout );
+ *  visual->SetTextStyle( styleID );
+ *  
+ *  @endcode
+ *
+ *  @since S60 v3.2
+ */
+class CFsAlfTextStyleManager : CBase
+    {
+public:
+
+	/**
+	 * Two-phased constructor.
+	 * @param aAlfTextStyleManager Reference to the CAlfTextStyleManager
+	 */
+     static CFsAlfTextStyleManager* NewL( CAlfTextStyleManager& aAlfTextStyleManager );
+
+     /**
+      * Destructor.
+      */
+     ~CFsAlfTextStyleManager();
+
+     /**
+      * GetStyleIDL
+      * 
+      * This is the only public method in CFsAlfTextStyleManager. If there
+      * already a style that matches the given TCharFormat, the ID of this
+      * style is returned. If not, a new style is created.
+      *
+      * @since S60 3.2
+      * @param aCharFormat Style format from CRichText
+      * @return ID for TAlfTextStyle
+      */
+     TInt GetStyleIDL( const TCharFormat& aCharFormat );
+     
+     /**
+      * FindId
+      * 
+      * The array of previously created styles is searched for matching
+      * TCharFormat. If not found KErrNotFound is returned.
+      *
+      * @since S60 3.2
+      * @param aCharFormat Style format from CRichText
+      * @return ID for TAlfTextStyle or KErrNotFound
+      */
+     TInt GetStyleIDWithOpositeUnderlineL( TInt aId );
+
+private:
+
+		CFsAlfTextStyleManager( CAlfTextStyleManager& aAlfTextStyleManager );
+		
+		// void ConstructL(); This wasn't needed at the time 
+		
+	     /**
+	      * FindId
+	      * 
+	      * The array of previously created styles is searched for matching
+	      * TCharFormat. If not found KErrNotFound is returned.
+	      *
+	      * @since S60 3.2
+	      * @param aCharFormat Style format from CRichText
+	      * @return ID for TAlfTextStyle or KErrNotFound
+	      */
+        TInt FindId( const TCharFormat& aCharFormat );
+        
+        
+        /**
+	      * FindPositionOfId
+	      * 
+	      * The array of previously created styles is searched for matching
+	      * ID. If not found KErrNotFound is returned.
+	      *
+	      * @since S60 3.2
+	      * @param ID Style format from CRichText
+	      * @return position in table for TAlfTextStyle or KErrNotFound
+	      */
+        TInt FindPositionOfId(TInt aId);
+
+	     /**
+	      * CreateNewTextStyleL
+	      * 
+	      * Creates a new text style using TCharFormat.
+	      *
+	      * @since S60 3.2
+	      * @param aCharFormat Style format from CRichText
+	      * @return ID for TAlfTextStyle
+	      */
+        TInt CreateNewTextStyleL( const TCharFormat& aCharFormat );
+
+private: // data
+
+    /**
+     * Reference to the CAlfTextStyleManager
+     */
+    CAlfTextStyleManager& iAlfTextStyleManager;
+
+    /**
+     * Array of previously created styles
+     */
+    RArray<TFsTextStyleData> iStyles;
+
+    };
+
+#endif // C_FSALFTEXTSTYLEMANAGER_H
\ No newline at end of file