phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/inc/ccappcommlauncherheadertextorder.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/ccapplication/ccacommlauncherplugin/inc/ccappcommlauncherheadertextorder.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,178 @@
+/*
+* Copyright (c) 2008-2008 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: Class which takes care of placing the correct texts in the header
+*
+*/
+
+
+#ifndef CCAPPCOMMLAUNCHERHEADERTEXTORDER_H_
+#define CCAPPCOMMLAUNCHERHEADERTEXTORDER_H_
+
+// INCLUDES
+#include "ccappcommlauncherheaders.h"
+
+const TInt KCCAppCommLauncherHeaderTextOrderLineCount = 3;
+const TInt KCCAppCommLauncherHeaderTextOrderFirstField = CCmsContactFieldItem::ECmsLastName;
+const TInt KCCAppCommLauncherHeaderTextOrderLastField = CCmsContactFieldItem::ECmsShareView;
+
+
+// CLASS DECLARATION
+/**
+ * Class which takes care of placing the correct texts in the header
+ *
+ * @code
+ * ?good_class_usage_example(s)
+ * @endcode
+ *
+ * @lib ccappcommlauncherplugin.dll
+ * @since S60 v5.0
+ */
+class CCCAppCommLauncherHeaderTextOrder : public CBase
+ {
+public:
+ // Construction & destruction
+ /**
+ * Two-phased constructor.
+ */
+ static CCCAppCommLauncherHeaderTextOrder* NewL();
+
+ /**
+ * Destructor.
+ */
+ ~CCCAppCommLauncherHeaderTextOrder();
+
+ /**
+ * Gets the text for a header row
+ *
+ * @param aRow Row number (0-)
+ * @return const TDesC& the text
+ */
+ const TDesC& GetTextForRow(TInt aRow);
+
+
+ /**
+ * Processes the contact data and determines which fields are used
+ *
+ * @param aContactField The contact field info
+ */
+ void ProcessContactFieldsL(RArray<CCmsContactField> aCmsContactFields);
+
+ /**
+ * Resets the header texts
+ */
+ void Reset();
+
+ /**
+ * Clips the text
+ *
+ * @param aFont The font which will be used for the text
+ * @param aLineWidth Maximun width of a row in pixels
+ */
+ void ClipL(const CFont& aFont, TInt aLineWidth);
+private:
+ /**
+ * Constructor for performing 1st stage construction
+ */
+ CCCAppCommLauncherHeaderTextOrder();
+
+ /**
+ * Constructor for performing 2nd stage construction
+ */
+ void ConstructL();
+
+ /**
+ * Processes a contact field and puts the data in a row
+ *
+ * @param aContactField The contact field
+ */
+ void ProcessContactFieldL(const CCmsContactField& aContactField);
+
+ /**
+ * Sets the priority of the given contact field type
+ *
+ * @param aContactField The contact field
+ * @param iGroup ETrue to set the group priority,
+ * @param aPriority Priority
+ */
+ void SetPriority(CCmsContactFieldItem::TCmsContactField aContactField, TBool aGroup, TInt aPriority);
+
+ /**
+ * Gets the priority of the given contact field type
+ *
+ * @param aContactField The contact field
+ * @return TInt priority
+ */
+ TInt GetPriority(CCmsContactFieldItem::TCmsContactField aContactField, TBool aGroup);
+
+ /**
+ * Determines whether the Contact Field is to used or skipped.
+ *
+ * @param aContactField the field
+ * @return TInt aTopGroupPriority group to be used when determining.
+ */
+ void SelectContactFieldL(const CCmsContactField& aContactField, TInt aTopGroupPriority);
+
+ /**
+ * Determines stripped length of Contact Field Item
+ *
+ * @param aCmsContactFieldItem the item
+ * @return TInt stripped length
+ */
+ TInt StrippedLengthL( const CCmsContactFieldItem& aCmsContactFieldItem);
+
+ /**
+ * Deletes a char from descriptor
+ *
+ * @param aDest descriptor
+ * @param aChar character to be removed
+ */
+ void DeleteCharL(TDes& aDest, TChar aChar);
+
+ /**
+ * Maps a string to the corresponding contact field type
+ *
+ * @param aDesc The string
+ * @param aType Contact field is returned through the passed reference
+ * @return TInt error code, KErrNotFound if there is no type corresponding to the string, KErrNone otherwise
+ */
+ TInt MapStringToContactField(const TDesC& aDesc, CCmsContactFieldItem::TCmsContactField& aType);
+
+ /**
+ * Tells which is the correct clipping direction for a contact field type
+ *
+ * @param aType Contact field
+ * @return TInt error code, KErrNotFound if there is no type corresponding to the string, KErrNone otherwise
+ */
+ AknTextUtils::TClipDirection MapContactFieldToClipDirection(CCmsContactFieldItem::TCmsContactField aType);
+
+ /**
+ * Count number of items corresponding current database
+ *
+ * @param CCmsContactField Field to be checked
+ * @return TInt number of items
+ */
+ TInt ItemCountForCurrentDbL( const CCmsContactField& aContactField );
+
+ RPointerArray<HBufC> iHeaderRows;
+ RPointerArray<HBufC> iHeaderRowsClipped;
+ TInt iHeaderTypes[KCCAppCommLauncherHeaderTextOrderLineCount];
+
+ TBool iHeadersWrapped;
+
+ TInt iGroupPriorities[KCCAppCommLauncherHeaderTextOrderLastField - KCCAppCommLauncherHeaderTextOrderFirstField + 1];
+ TInt iIndividualPriorities[KCCAppCommLauncherHeaderTextOrderLastField - KCCAppCommLauncherHeaderTextOrderFirstField + 1];
+ HBufC* iCurrentDbName;
+ };
+
+#endif /*CCAPPCOMMLAUNCHERHEADERTEXTORDER_H_*/