controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesgroupitemdata.cpp
changeset 11 10d0dd0e43f1
parent 10 0a74be98a8bc
--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesgroupitemdata.cpp	Fri Mar 19 09:29:29 2010 +0200
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesgroupitemdata.cpp	Fri Apr 16 14:59:22 2010 +0300
@@ -18,16 +18,26 @@
 #include <QStringList>
 #include <cpsettingformentryitemdataimpl.h>
 #include <cpbasesettingview.h>
+#include <cpitemdatahelper.h>
+#include <hbmessagebox.h>
 #include "cpprofilesettingform.h"
+#include "cpmastervolumevaluecontroller.h"
+#include "cppersonalizationcustomviewitem.h"
+
 
 CpProfilesGroupItemData::CpProfilesGroupItemData(CpItemDataHelper &itemDataHelper)
-: CpSettingFormItemData(HbDataFormModelItem::GroupItem,tr("Profiles"))
+: CpSettingFormItemData(HbDataFormModelItem::GroupItem,tr("Profiles")),mProfileModel(0)
 {
+    mProfileModel = new CpProfileModel();
     initItems(itemDataHelper);
 }
 
 CpProfilesGroupItemData::~CpProfilesGroupItemData()
 {
+    delete mProfileModel;
+    if (mMasterVolumeValueController != 0) {
+        delete mMasterVolumeValueController;
+    }
 }
 
 namespace 
@@ -39,21 +49,80 @@
         {
         }
     };
-};
+}
 
 void CpProfilesGroupItemData::initItems(CpItemDataHelper &itemDataHelper)
 {
+    itemDataHelper.addItemPrototype(new CpPersonalizationCustomViewItem);
     HbDataFormModelItem *activeProfileItem = new HbDataFormModelItem(
         HbDataFormModelItem::RadioButtonListItem,tr("Profiles"));
-
+    //enable the profile activating
+    // why come into slots twice when select a item?
+    itemDataHelper.addConnection(activeProfileItem,SIGNAL(itemSelected(int)),this,SLOT(activateProfile(int)));
+    
+    mCurrentProfileId = static_cast<ProfileWrapperProfileId>(mProfileModel->activeProfileId());
+   // QString warnningNote = "Profile Id = "+ mCurrentProfileId;
+    //HbMessageBox::information(warnningNote);
     QStringList items;
-    items << tr("Normal") << tr("Meeting") << tr("Silent");
+    items << tr("General") << tr("Meeting") << tr("Silent"); 
     activeProfileItem->setContentWidgetData("items",items);
-    activeProfileItem->setContentWidgetData("selected",0);
+    switch (mCurrentProfileId) {
+    case EProfileWrapperGeneralId:
+        activeProfileItem->setContentWidgetData("selected",0);
+        break;
+    case EProfileWrapperSilentId:
+        activeProfileItem->setContentWidgetData("selected",2);
+        break;
+    case EProfileWrapperMeetingId:
+        activeProfileItem->setContentWidgetData("selected",1);
+        break;
+    default:
+      //  HbMessageBox::information("unknown id of profile");
+        break;
+    };
+    
+    appendChild(activeProfileItem);
+    
+    mMasterVolume = new HbDataFormModelItem(static_cast<HbDataFormModelItem::DataItemType>(MasterVolumeSliderItem));
 
-    appendChild(activeProfileItem);
+    mMasterVolumeValueController = new CpMasterVolumeValueController(mProfileModel, mMasterVolume,
+                                                                        itemDataHelper, activeProfileItem);
+    this->appendChild(mMasterVolume);
 
     HbDataFormModelItem *editProfileItem = new CpSettingFormEntryItemDataImpl<CpProfileSettingView>(
         itemDataHelper,tr("Edit profiles"));
     appendChild(editProfileItem);
 }
+void CpProfilesGroupItemData::activateProfile(int profileIndex)
+{
+    switch (profileIndex) {
+    case 0: // general
+    {
+        mProfileModel->activateProfile(EProfileWrapperGeneralId);
+        int volumeValue = mProfileModel->ringVolume();
+        // update the master volume when profile changed
+        // should be used profileChangedObserver in the future;
+        mMasterVolume->setEnabled(true);
+        mMasterVolume->setContentWidgetData("value", volumeValue);
+        break;
+    }
+    case 1: // meeting
+    {
+        mProfileModel->activateProfile(EProfileWrapperMeetingId);
+        int volumeValue = mProfileModel->ringVolume();
+        mMasterVolume->setEnabled(true);
+        mMasterVolume->setContentWidgetData("value", volumeValue);
+        break;
+    }
+    case 2: // silent
+    {
+        mProfileModel->activateProfile(EProfileWrapperSilentId);
+        mMasterVolume->setContentWidgetData("value", 0);
+        mMasterVolume->setEnabled(false);
+        break;
+    }
+    default:
+        break;
+        
+    }
+}