controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.cpp
changeset 42 3487b2ea501a
parent 37 cb294e641644
--- a/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.cpp	Fri Sep 17 08:29:50 2010 +0300
+++ b/controlpanelui/src/cpprofilewrapper/src/cpprofilemodel_p.cpp	Mon Oct 04 00:18:12 2010 +0300
@@ -33,6 +33,7 @@
 #include <MProfileFeedbackSettings.h>
 #include <MProfileSetFeedbackSettings.h>
 #include <MProfilesNamesArray.h>
+#include <MProfileSetName.h>
 #include <settingsinternalcrkeys.h>
 #include <hbglobal.h>
 #include <QtCore/QStringList>
@@ -50,8 +51,7 @@
  * Constructor
  */
 CpProfileModelPrivate::CpProfileModelPrivate()
-    : mEngine(0),
-      mProfileNames(0),
+    : mEngine(0),      
       q_ptr(0)
 {
     
@@ -66,8 +66,6 @@
     CPFW_LOG("CpProfileModelPrivate::CpProfileModelPrivate(), START.");
     TRAP_IGNORE(
         mEngine = CreateProfileEngineExtended2L();
-        mProfileNames = mEngine->ProfilesNamesArrayLC();
-        CleanupStack::Pop(); // pop the pointer of mProfileNames
         /*
          * Currently, engine part will return all previous version of profile
          * so some invalid profile will be added in the new list, to avoid this 
@@ -94,9 +92,6 @@
     if (mEngine!=0) {
         mEngine->Release();
     }
-    if (mProfileNames) {
-        delete mProfileNames;
-    }
 	mProfileList.clear();
 }
 
@@ -110,14 +105,35 @@
     if (!isValidProfile(profileId)) {
         return QString();
     }
+    QString profileName;
+    QT_TRAP_THROWING(        
+        MProfile *profile = mEngine->Profile2L(profileId);
+        const MProfileName &name = profile->ProfileName();        
+        if (name.Name().Length() > 0) {
+            profileName = XQConversions::s60DescToQString(name.Name());
+        }
+        profile->Release();
+    )
+    return profileName;    
     
-    const MProfileName* name = mProfileNames->ProfileName(profileId);
-    QString profileName;
-    if (name != 0) {
-        profileName = XQConversions::s60DescToQString(name->Name());
-    }
-    CPFW_LOG("CpProfileModelPrivate::profileName(), END.");
-    return profileName;    
+}
+
+/*
+ * Set profile name with \a profileId.
+ */
+void CpProfileModelPrivate::setProfileName(int profileId, const QString &name)
+{
+    HBufC *des = XQConversions::qStringToS60Desc( name );
+    QT_TRAP_THROWING(
+        CleanupStack::PushL(des);
+        MProfileExtended *profileExtend = mEngine->Profile2L(profileId);
+        CleanupStack::PushL(profileExtend);
+        MProfileSetName &profileSetName = profileExtend->ProfileSetName();
+        profileSetName.SetNameL(*des);
+        mEngine ->CommitChangeL(*profileExtend);
+        CleanupStack::Pop(2); // des, profileExtend
+        profileExtend->Release();
+    )    
 }
 
 /*
@@ -126,15 +142,17 @@
 QStringList CpProfileModelPrivate::profileNames() const
 {
     CPFW_LOG("CpProfileModelPrivate::profileNames(), START.");
-    QStringList nameList;
-
-    foreach(int profileId, mProfileList) {
-        const MProfileName *name = mProfileNames->ProfileName(profileId);
-        if (name != 0) {
-            nameList.append(XQConversions::s60DescToQString(name->Name()));
-        }
+    QStringList nameList;    
+    foreach(int profileId, mProfileList) {               
+        QT_TRAP_THROWING(        
+            MProfile *profile = mEngine->Profile2L(profileId);
+            const MProfileName &name = profile->ProfileName();
+            if (name.Name().Length() > 0) {
+                nameList.append(XQConversions::s60DescToQString(name.Name()));
+            }
+            profile->Release();
+        )
     }
-
     CPFW_LOG("CpProfileModelPrivate::profileNames(), END.");
     return nameList;
 }