--- a/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.cpp Mon May 03 12:32:06 2010 +0300
+++ b/controlpanelui/src/cpplugins/personalizationplugin/src/cpprofilesettingform.cpp Fri May 14 13:21:08 2010 +0800
@@ -22,6 +22,7 @@
#include <hbabstractviewitem.h>
#include <cpitemdatahelper.h>
#include <cpprofilemodel.h>
+#include <hbslider.h>
#include <QFileInfo>
#include <QFileIconProvider>
@@ -29,10 +30,13 @@
#include <QModelIndex>
#include <QMap>
+#include <xqsettingsmanager.h>
+#include <ProfileEngineInternalCRKeys.h>
+
CpProfileSettingForm::CpProfileSettingForm()
: mModel(0), mItemDataHelper(new CpItemDataHelper( this )),
mProfileModel(new CpProfileModel()), mFileIconProvider(new QFileIconProvider),
- mGeneralPage(0),mMeetingPage(0),mCurrentPage( 0 )
+ mGeneralPage(0),mMeetingPage(0),mCurrentPage( 0 ), mSettingManager(0)
{
this->setHeading(hbTrId("txt_cp_button_advanced_settings"));
this->setDescription(hbTrId("txt_cp_info_select_tones_that_play_when_you_select"));
@@ -45,6 +49,7 @@
delete mModel;
delete mProfileModel;
delete mFileIconProvider;
+ delete mSettingManager;
}
void CpProfileSettingForm::initModel()
@@ -62,24 +67,152 @@
meetingString = hbTrId("txt_cp_list_meeting");
}
+ mSettingManager = new XQSettingsManager();
+
+ XQCentralRepositorySettingsKey key(KCRUidProfileEngine.iUid,KProEngSilenceMode);
+
+ QVariant silenceMode = mSettingManager->readItemValue(key,XQSettingsManager::TypeInt);
+
+ mSettingManager->startMonitoring(key,XQSettingsManager::TypeInt);
+ connect(mSettingManager, SIGNAL(valueChanged (XQSettingsKey, QVariant)),
+ this, SLOT(settingValueChanged(XQSettingsKey, QVariant)));
+
mGeneralPage = mModel->appendDataFormPage( generalString );
- initGeneralTonesGroup();
+ initProfileItems(EProfileWrapperGeneralId,mGeneralPage);
+
+ //initGeneralTonesGroup();
+
//initGeneralVibraGroup();
mMeetingPage = mModel->appendDataFormPage( meetingString );
- initMeetingTonesGroup();
+ initProfileItems(EProfileWrapperMeetingId,mMeetingPage);
+ //initMeetingTonesGroup();
//initMeetingVibraGroup();
-
setModel(mModel);
+ settingValueChanged(key,silenceMode);
}
+void CpProfileSettingForm::initProfileItems(int profileId,HbDataFormModelItem *parent)
+{
+ CpProfileSettings profileSettings;
+ mProfileModel->profileSettings( profileId, profileSettings );
+
+ QHash<int,HbDataFormModelItem*> modelItems;
+
+ //ring tone item
+ QFileInfo ringToneFileInfo( profileSettings.mRingTone );
+ HbDataFormModelItem *modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+ hbTrId("txt_cp_dblist_ringtone"), ringToneFileInfo.fileName(), mFileIconProvider->icon( ringToneFileInfo ),
+ CpPersonalizationEntryItemData::TONE_Ring, profileId );
+ mModel->appendDataFormItem(modelItem, parent);
+ modelItems.insert(ProfileItemRingTone,modelItem);
+
+ //message tone item
+ QFileInfo messageToneFileInfo( profileSettings.mMessageTone );
+ modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+ hbTrId("txt_cp_dblist_message_tone"), messageToneFileInfo.fileName(), mFileIconProvider->icon( messageToneFileInfo ),
+ CpPersonalizationEntryItemData::TONE_Message,
+ profileId );
+ mModel->appendDataFormItem(modelItem , parent);
+ modelItems.insert(ProfileItemMessageTone,modelItem);
+
+ //email tone item
+ QFileInfo emailToneFileInfo( profileSettings.mEmailTone );
+ modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+ hbTrId("txt_cp_dblist_email_tone"), emailToneFileInfo.fileName(), mFileIconProvider->icon( emailToneFileInfo ),
+ CpPersonalizationEntryItemData::TONE_Email,
+ profileId );
+ mModel->appendDataFormItem(modelItem , parent);
+ modelItems.insert(ProfileItemEmailTone,modelItem);
+
+ //reminder tone item
+ QFileInfo reminderToneFileInfo( profileSettings.mReminderTone );
+ modelItem = new CpPersonalizationEntryItemData( *mItemDataHelper,
+ hbTrId("txt_cp_dblist_reminder_tone"), reminderToneFileInfo.fileName(), mFileIconProvider->icon( reminderToneFileInfo ),
+ CpPersonalizationEntryItemData::TONE_Reminder,
+ profileId );
+ mModel->appendDataFormItem(modelItem , parent);
+ modelItems.insert(ProfileItemReminderTone,modelItem);
+
+ //notification tones item
+ modelItem= mModel->appendDataFormItem(HbDataFormModelItem::CheckBoxItem,QString(),parent);
+ modelItem->setContentWidgetData("text", hbTrId("txt_cp_list_notification_tones"));
+ modelItem->setContentWidgetData( "checkState", profileSettings.mNotificationTone ? 2 : 0 );
+ if (profileId == EProfileWrapperGeneralId) {
+ addConnection( modelItem, SIGNAL( stateChanged( int )), this, SLOT( on_general_notificationTones_stateChanged( int )));
+ }
+ else if (profileId == EProfileWrapperMeetingId) {
+ addConnection( modelItem, SIGNAL( stateChanged( int )), this, SLOT( on_meeting_notificationTones_stateChanged( int )));
+ }
+ modelItems.insert(ProfileItemNotificationTones,modelItem);
+
+
+ //Key and Touch Screen Tones item
+ modelItem =
+ mModel->appendDataFormItem(HbDataFormModelItem::SliderItem ,QString(hbTrId("txt_cp_setlabel_key_and_touchscreen_tones")),parent);
+
+ QList<QVariant> sliderElements;
+ sliderElements << QVariant(HbSlider::IncreaseElement) << QVariant(HbSlider::TrackElement)
+ << QVariant(HbSlider::DecreaseElement) << QVariant(HbSlider::IconElement)
+ << QVariant(HbSlider::TextElement);
+ modelItem->setContentWidgetData("sliderElements",sliderElements);
+
+
+
+ //TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
+ modelItem->setContentWidgetData( QString( "minimum" ), 0 );
+ modelItem->setContentWidgetData( QString( "maximum" ), 5 );
+ modelItem->setContentWidgetData( QString("value"), profileSettings.mKeyTouchScreenTone );
+ QMap< QString, QVariant > elements;
+ elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
+ elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
+ if (profileSettings.mKeyTouchScreenTone != 0) {
+ elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg") );
+ }
+ else {
+ elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+ }
+
+ modelItem->setContentWidgetData( QString( "elementIcons" ), elements );
+
+ if (profileId == EProfileWrapperGeneralId) {
+ addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_general_keysAndScreenToneSlider_ValueChanged( int )));
+ }
+ else if (profileId == EProfileWrapperMeetingId) {
+ addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_keysAndScreenToneSlider_ValueChanged( int )));
+ }
+
+ modelItems.insert(ProfileItemKeyandTouchScreenTones,modelItem);
+
+
+ //Touch Screen Vibra item
+ modelItem = mModel->appendDataFormItem( HbDataFormModelItem::SliderItem, QString( hbTrId( "txt_cp_setlabel_touch_screen_vibra" ) ), parent );
+ //TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
+ modelItem->setContentWidgetData( QString( "minimum" ), 0 );
+ modelItem->setContentWidgetData( QString( "maximum" ), 5 );
+ modelItem->setContentWidgetData( QString("value"), profileSettings.mKeyTouchScreenVibra );
+
+ if (profileId == EProfileWrapperGeneralId) {
+ addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_general_screenVibra_ValueChanged( int )));
+ }
+ else if (profileId == EProfileWrapperMeetingId) {
+ addConnection( modelItem, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_screenVibra_ValueChanged( int )));
+ }
+
+ modelItems.insert(ProfileItemTouchScreenVibra,modelItem);
+
+ mProfileModelItems.insert(profileId,modelItems);
+
+}
+
+/*
void CpProfileSettingForm::initGeneralTonesGroup()
{
CpProfileSettings profileSettings;
mProfileModel->profileSettings( EProfileWrapperGeneralId, profileSettings );
- /*HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
- hbTrId("txt_cp_subhead_tones"),mGeneralPage);*/
+ //HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
+ // hbTrId("txt_cp_subhead_tones"),mGeneralPage);
QFileInfo ringToneFileInfo( profileSettings.mRingTone );
mModel->appendDataFormItem( new CpPersonalizationEntryItemData( *mItemDataHelper,
hbTrId("txt_cp_dblist_ringtone"), ringToneFileInfo.fileName(), mFileIconProvider->icon( ringToneFileInfo ) ), mGeneralPage);
@@ -102,13 +235,13 @@
mGeneralKeysAndScreenToneSlider =
mModel->appendDataFormItem(HbDataFormModelItem::SliderItem ,QString(hbTrId("txt_cp_setlabel_key_and_touchscreen_tones")),mGeneralPage);
- /*
- QMap< QString, QVariant > elements;
- elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
- elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
- elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
- mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "elementIcons" ), elements );
- */
+
+ //QMap< QString, QVariant > elements;
+ //elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
+ //elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
+ //elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+ //mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "elementIcons" ), elements );
+
//TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "minimum" ), 0 );
mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString( "maximum" ), 5 );
@@ -125,6 +258,7 @@
addConnection( mGeneralKeysAndScreenToneSlider, SIGNAL( valueChanged( int )), this, SLOT( on_general_keysAndScreenToneSlider_ValueChanged( int )));
addConnection( mGeneralSreenVibra, SIGNAL( valueChanged( int )), this, SLOT( on_general_screenVibra_ValueChanged( int )));
}
+*/
/*void CpProfileSettingForm::initGeneralVibraGroup()
{
@@ -169,13 +303,13 @@
}*/
////////////////////////////////////////////////////////////
-void CpProfileSettingForm::initMeetingTonesGroup()
+/*void CpProfileSettingForm::initMeetingTonesGroup()
{
CpProfileSettings profileSettings;
mProfileModel->profileSettings( EProfileWrapperMeetingId, profileSettings );
- /* HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
- hbTrId("txt_cp_subhead_tones"),mMeetingPage);*/
+ //HbDataFormModelItem *tonesGroup = mModel->appendDataFormGroup(
+ // hbTrId("txt_cp_subhead_tones"),mMeetingPage);
QFileInfo ringToneFileInfo( profileSettings.mRingTone );
mModel->appendDataFormItem( new CpPersonalizationEntryItemData( *mItemDataHelper,
hbTrId("txt_cp_dblist_ringtone"), ringToneFileInfo.fileName(), mFileIconProvider->icon( ringToneFileInfo ) ), mMeetingPage);
@@ -198,13 +332,13 @@
mMeetingKeysAndScreenToneSlider =
mModel->appendDataFormItem(HbDataFormModelItem::SliderItem ,QString(hbTrId("txt_cp_setlabel_key_and_touchscreen_tones")),mMeetingPage);
- /*
- QMap< QString, QVariant > elements;
- elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
- elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
- elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
- mMeetingkeysAndScreenSlider->setContentWidgetData( QString( "elementIcons" ), elements );
- */
+
+ //QMap< QString, QVariant > elements;
+ //elements.insert(QString("IncreaseElement") , QVariant(":/icon/hb_vol_slider_increment.svg"));
+ //elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg") );
+ //elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+ //mMeetingkeysAndScreenSlider->setContentWidgetData( QString( "elementIcons" ), elements );
+
//TODO: profileModel need provide Max and Min value( 0-5 ), current max value from profileModel is 3
mMeetingKeysAndScreenToneSlider->setContentWidgetData( QString( "minimum" ), 0 );
mMeetingKeysAndScreenToneSlider->setContentWidgetData( QString( "maximum" ), 5 );
@@ -220,7 +354,7 @@
addConnection( mMeetingKeysAndScreenToneSlider, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_keysAndScreenSlider_ValueChanged( int )));
addConnection( mMeetingSreenVibra, SIGNAL( valueChanged( int )), this, SLOT( on_meeting_screenVibra_ValueChanged( int )));
}
-
+*/
/*void CpProfileSettingForm::initMeetingVibraGroup()
{
CpProfileSettings profileSettings;
@@ -273,7 +407,22 @@
void CpProfileSettingForm::on_general_keysAndScreenToneSlider_ValueChanged( int value )
{
mProfileModel->setKeyTouchScreenTone( EProfileWrapperGeneralId, value );
- mGeneralKeysAndScreenToneSlider->setContentWidgetData( QString("value"), value );
+ HbDataFormModelItem *modelItem = profileItem(EProfileWrapperGeneralId,ProfileItemKeyandTouchScreenTones);
+ if (modelItem) {
+ modelItem->setContentWidgetData( QString("value"), value );
+ QMap< QString, QVariant > elements;
+ if (value != 0) {
+ elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+ elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+ elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg") );
+ }
+ else {
+ elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+ elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+ elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+ }
+ modelItem->setContentWidgetData( QString( "elementIcons" ), elements );
+ }
}
@@ -301,7 +450,11 @@
void CpProfileSettingForm::on_general_screenVibra_ValueChanged( int value )
{
mProfileModel->setKeyTouchScreenVibra( EProfileWrapperGeneralId, value );
- mGeneralSreenVibra->setContentWidgetData( QString("value"), value );
+
+ HbDataFormModelItem *modelItem = profileItem(EProfileWrapperGeneralId,ProfileItemTouchScreenVibra);
+ if (modelItem) {
+ modelItem->setContentWidgetData( QString("value"), value );
+ }
}
@@ -312,10 +465,26 @@
mProfileModel->setNotificationTone( EProfileWrapperMeetingId, checkBoxStateToBool( state ) );
}
-void CpProfileSettingForm::on_meeting_keysAndScreenSlider_ValueChanged( int value )
+void CpProfileSettingForm::on_meeting_keysAndScreenToneSlider_ValueChanged( int value )
{
mProfileModel->setKeyTouchScreenTone( EProfileWrapperMeetingId, value );
- mMeetingKeysAndScreenToneSlider->setContentWidgetData( QString("value"), value );
+
+ HbDataFormModelItem *modelItem = profileItem(EProfileWrapperMeetingId,ProfileItemKeyandTouchScreenTones);
+ if (modelItem) {
+ modelItem->setContentWidgetData( QString("value"), value );
+ QMap< QString, QVariant > elements;
+ if (value != 0) {
+ elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+ elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+ elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_unmuted.svg") );
+ }
+ else {
+ elements.insert(QString("DecreaseElement"), QVariant(":/icon/hb_vol_slider_decrement.svg"));
+ elements.insert(QString("IncreaseElement"), QVariant(":/icon/hb_vol_slider_increment.svg"));
+ elements.insert(QString("IconElement"), QVariant(":/icon/hb_vol_slider_muted.svg") );
+ }
+ modelItem->setContentWidgetData( QString( "elementIcons" ), elements );
+ }
}
@@ -343,7 +512,11 @@
void CpProfileSettingForm::on_meeting_screenVibra_ValueChanged( int value )
{
mProfileModel->setKeyTouchScreenVibra( EProfileWrapperMeetingId, value );
- mMeetingSreenVibra->setContentWidgetData( QString("value"), value );
+
+ HbDataFormModelItem *modelItem = profileItem(EProfileWrapperMeetingId,ProfileItemTouchScreenVibra);
+ if (modelItem) {
+ modelItem->setContentWidgetData( QString("value"), value );
+ }
}
bool CpProfileSettingForm::checkBoxStateToBool( int state )
@@ -354,3 +527,37 @@
return false;
}
}
+
+
+void CpProfileSettingForm::settingValueChanged(const XQSettingsKey &key, const QVariant &value)
+{
+ if (key.uid() == KCRUidProfileEngine.iUid && key.key() == KProEngSilenceMode && value.isValid()) {
+
+ static const int silenceSensitiveModelItemIds[] =
+ {
+ CpProfileSettingForm::ProfileItemRingTone,
+ CpProfileSettingForm::ProfileItemMessageTone,
+ CpProfileSettingForm::ProfileItemEmailTone,
+ CpProfileSettingForm::ProfileItemReminderTone,
+ CpProfileSettingForm::ProfileItemNotificationTones,
+ CpProfileSettingForm::ProfileItemKeyandTouchScreenTones
+ };
+
+ QHash< int,QHash<int,HbDataFormModelItem*> >::const_iterator it (mProfileModelItems.begin());
+ for(; it != mProfileModelItems.end(); ++it ) {
+ for (int i = 0; i < sizeof(silenceSensitiveModelItemIds)/sizeof(silenceSensitiveModelItemIds[0]);++i) {
+ QHash<int,HbDataFormModelItem*>::const_iterator found = it.value().find(silenceSensitiveModelItemIds[i]);
+ if (found != it.value().end()) {
+ found.value()->setEnabled(!value.toBool());
+ }
+ }
+ }
+ }
+}
+
+HbDataFormModelItem *CpProfileSettingForm::profileItem(int profileId,int profileItemId)
+{
+ return mProfileModelItems.value(profileId).value(profileItemId);
+}
+
+//End of File