--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/uicomponents/inc/fstextstylemanager.h Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,187 @@
+/*
+* 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_FSTEXTSTYLEMANAGER_H
+#define C_FSTEXTSTYLEMANAGER_H
+
+#include <e32base.h>
+#include <txtfrmat.h>
+
+class CAlfTextStyleManager;
+
+/**
+ * TFsTextStyleData
+ *
+ * This class is meant only for internal use of CFsTextStyleManager. It
+ * encapsulates the style information for storage.
+ *
+ * @since S60 v3.2
+ */
+
+class TFsTextStyleData
+{
+public:
+ TFsTextStyleData( const TCharFormat& aCharFormat, TInt aTextStyleID );
+
+ /**
+ * Match
+ *
+ * Method for comparing to instances of TFsTextStyleData
+ *
+ * @since S60 3.2
+ * @param aFirst The first TFsTextStyleData
+ * @param aSecond The other TFsTextStyleData
+ * @return If match ETrue else EFalse
+ */
+ static TBool Match( const TFsTextStyleData& aFirst,
+ const TFsTextStyleData& aSecond );
+
+ static TBool MatchId( const TFsTextStyleData& aFirst,
+ const TFsTextStyleData& aSecond );
+
+public: //Data
+
+ /**
+ * Stored TCharFormat
+ */
+ const TCharFormat iCharFormat;
+
+ /**
+ * Stored THuiTextStyle id
+ */
+ TInt iTextStyleID;
+};
+
+
+/**
+ * CFsTextStyleManager
+ *
+ * This class is designed to convert CRichText style definitions to
+ * THuiTextStyles. 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 = CHuiTextVisual::AddNewL( *iControl, iCurveLayout );
+ * visual->SetTextStyle( styleID );
+ *
+ * @endcode
+ *
+ * @since S60 v3.2
+ */
+class CFsTextStyleManager : CBase
+ {
+public:
+
+ /**
+ * Two-phased constructor.
+ * @param aHuiTextStyleManager Reference to the CHuiTextStyleManager
+ */
+ static CFsTextStyleManager* NewL( CAlfTextStyleManager& aAlfTextStyleManager );
+
+ /**
+ * Destructor.
+ */
+ ~CFsTextStyleManager();
+
+ /**
+ * GetStyleIDL
+ *
+ * This is the only public method in CFsTextStyleManager. 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 THuiTextStyle
+ */
+ 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 THuiTextStyle or KErrNotFound
+ */
+ TInt GetStyleIDWithOpositeUnderlineL( TInt aId );
+
+private:
+
+ CFsTextStyleManager( 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 THuiTextStyle 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 THuiTextStyle 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 THuiTextStyle
+ */
+ TInt CreateNewTextStyleL( const TCharFormat& aCharFormat );
+
+private: // data
+
+ /**
+ * Reference to the CHuiTextStyleManager
+ */
+ CAlfTextStyleManager& iAlfTextStyleManager;
+
+ /**
+ * Array of previously created styles
+ */
+ RArray<TFsTextStyleData> iStyles;
+
+ };
+
+#endif // C_FSTEXTSTYLEMANAGER_H
\ No newline at end of file