qtcontactsmobility/plugins/contacts/symbian/src/cntdisplaylabel.cpp
changeset 37 fd64c38c277d
parent 27 de1630741fbe
child 40 b46a585f6909
--- a/qtcontactsmobility/plugins/contacts/symbian/src/cntdisplaylabel.cpp	Fri May 14 15:42:23 2010 +0300
+++ b/qtcontactsmobility/plugins/contacts/symbian/src/cntdisplaylabel.cpp	Thu May 27 12:45:19 2010 +0300
@@ -41,13 +41,30 @@
 
 #include "cntdisplaylabel.h"
 #include <qtcontacts.h>
+#include <centralrepository.h>
+#include <cntcenrepkeys.h>
+
+const TUint32 KOrderLastFirst = 0x00000000;
+const TUint32 KOrderLastCommaFirst = 0x00000001;
+const TUint32 KOrderFirstLast = 0x00000002;
 
 /*! 
  * Constructor
  */
 
-CntDisplayLabel::CntDisplayLabel()
+CntDisplayLabel::CntDisplayLabel() :
+    m_nameOrder(KOrderFirstLast)
 {
+#ifdef SYMBIAN_BACKEND_USE_SQLITE
+    CRepository* cenrep;
+    TRAPD(err, cenrep = CRepository::NewL(KCRUiContacts));
+    if (err == KErrNone) {
+        TInt value(-1);
+        if (cenrep->Get(KNameOrdering, value) == KErrNone) {
+            m_nameOrder = static_cast<int>(value);
+        }
+    }
+#endif
     setDisplayLabelDetails();
 }
 
@@ -74,8 +91,16 @@
     //Contact
     //Preferred details
     QList<QPair<QLatin1String, QLatin1String> > contactPrefferedDisplayLabelDetails;
-    contactPrefferedDisplayLabelDetails.append(qMakePair(QLatin1String(QContactName::DefinitionName), QLatin1String(QContactName::FieldFirstName)));
-    contactPrefferedDisplayLabelDetails.append(qMakePair(QLatin1String(QContactName::DefinitionName), QLatin1String(QContactName::FieldLastName)));
+    QLatin1String firstLatin(QContactName::FieldFirstName);
+    QLatin1String secondLatin(QContactName::FieldLastName);
+    
+    if (m_nameOrder == KOrderLastFirst || m_nameOrder == KOrderLastCommaFirst) {
+        firstLatin = QLatin1String(QContactName::FieldLastName);
+        secondLatin = QLatin1String(QContactName::FieldFirstName);
+    }
+
+    contactPrefferedDisplayLabelDetails.append(qMakePair(QLatin1String(QContactName::DefinitionName), firstLatin));
+    contactPrefferedDisplayLabelDetails.append(qMakePair(QLatin1String(QContactName::DefinitionName), secondLatin));
     m_contactDisplayLabelDetails.append(contactPrefferedDisplayLabelDetails);
 
     //if preferred details doesn't exist use these
@@ -146,9 +171,12 @@
                 
                 if(!label.isEmpty())
                 {
-                    displayLabel.append(delimiter());
+                    // Inlcude a comma if needed in the display label
+                    if (m_nameOrder == KOrderLastCommaFirst)
+                        displayLabel.append(comma());
+                    displayLabel.append(delimiter());                        
                     displayLabel.append(label);
-                }  
+                }
             }
         }
     }
@@ -196,3 +224,12 @@
 {
     return m_groupDisplayLabelDetails.at(0);
 }
+
+/*! 
+ * Comma to be used in display label
+ * \return comma
+ */
+QString CntDisplayLabel::comma() const
+{
+    return ",";
+}