diff -r 238255e8b033 -r 84d9eb65b26f messagingapp/msgsettings/settingsview/src/msgsettingsform.cpp --- a/messagingapp/msgsettings/settingsview/src/msgsettingsform.cpp Fri Apr 16 14:56:15 2010 +0300 +++ b/messagingapp/msgsettings/settingsview/src/msgsettingsform.cpp Mon May 03 12:29:07 2010 +0300 @@ -22,27 +22,52 @@ #include #include #include +#include #include "debugtraces.h" //Localized constants -#define LOC_DELIVERY_REPORTS hbTrId("txt_messaging_setlabel_delivery_reports") +#define LOC_MESSAGE_SETTINGS_HEADING hbTrId("txt_messaging_title_messaging_settings") +#define LOC_RECEIVING_SERVICE_MESSAGES hbTrId("txt_messaging_setlabel_receiving_service_messages") #define LOC_ON hbTrId("txt_messaging_setlabel_val_on") #define LOC_OFF hbTrId("txt_messaging_setlabel_val_off") #define LOC_REDUCED_SUPPORT hbTrId("txt_messaging_setlabel_val_reduced_support") #define LOC_FULL_SUPPORT hbTrId("txt_messaging_setlabel_val_full_support") #define LOC_ADVANCED hbTrId("txt_messaging_button_advanced") #define LOC_CHAR_ENCODING hbTrId("txt_messaging_setlabel_character_encoding") - +#define LOC_MMS_SETTINGS hbTrId("txt_messaging_subhead_mms_settings") +#define LOC_SMS_CENTRE_SETTINGS hbTrId("txt_messaging_subhead_sms_message_centre_settings") -MsgSettingsForm::MsgSettingsForm(MsgSettingsViewManager* settingsViewManager, - QGraphicsItem *parent) -:HbDataForm(parent), mSettingsViewManager(settingsViewManager) +#define LOC_MMS_CREATION_MODE hbTrId("txt_messaging_setlabel_mms_creation_mode") +#define LOC_MMS_RETRIEVAL hbTrId("txt_messaging_setlabel_mms_retrieval") +#define LOC_ALLOW_ANONYMOUS_MMS hbTrId("txt_messaging_setlabel_allow_anonymous_mms_message") +#define LOC_RECEIVE_MMS_ADVERTS hbTrId("txt_messaging_setlabel_receive_mms_adverts") +#define LOC_MMS_AP_IN_USE hbTrId("txt_messaging_setlabel_mms_access_point_in_use") +#define LOC_SMS_CENTRE_IN_USE hbTrId("txt_messaging_setlabel_sms_message_centre_in_use") +#define LOC_ADD_NEW hbTrId("txt_messaging_button_add_new") +#define LOC_ALWAYS_AUTOMATIC hbTrId("txt_messaging_setlabel_val_always_automatic") +#define LOC_AUTO_HOME_NETWORK hbTrId("txt_messaging_setlabel_val_auto_home_network") +#define LOC_MANUAL hbTrId("txt_messaging_setlabel_val_mannual") +#define LOC_MMS_YES hbTrId("txt_messaging_setlabel_allow_anonymous_mms_val_yes") +#define LOC_MMS_NO hbTrId("txt_messaging_setlabel_allow_anonymous_mms_val_no") + +MsgSettingsForm::MsgSettingsForm(QGraphicsItem *parent) : + HbDataForm(parent) { - this->setHeading(tr("Application settings: Messaging")); + this->setHeading(LOC_MESSAGE_SETTINGS_HEADING); mSettingEngine = new MsgSettingEngine(); + //custom prototype + MsgSettingsDataFormCustomItem* customPrototype = + new MsgSettingsDataFormCustomItem(this); + + QList protos = this->itemPrototypes(); + protos.append(customPrototype); + this->setItemPrototypes(protos); + + mSmsMCSettingsGroup << LOC_SMS_CENTRE_IN_USE << LOC_ADD_NEW; + //initialize the form model initSettingModel(); } @@ -54,79 +79,349 @@ void MsgSettingsForm::initSettingModel() { - HbDataFormModel *model = new HbDataFormModel(0); - - bool deliveryReoprt = false; - MsgSettingEngine::CharacterEncoding charEncoding = MsgSettingEngine::ReducedSupport; + settingsModel = new HbDataFormModel(0); - mSettingEngine->settingsDeliverReportAndCharEncoding(deliveryReoprt, charEncoding); + MsgSettingEngine::CharacterEncoding charEncoding = + MsgSettingEngine::ReducedSupport; - QStringList deliveryReoprtList; - deliveryReoprtList << LOC_OFF << LOC_ON; - - int index = int(deliveryReoprt); - int otherIndex = (deliveryReoprt + 1) % deliveryReoprtList.count(); + bool receiveServiceMessages = false; - // 1. create the first item delivery reports - HbDataFormModelItem *deliverReports = new HbDataFormModelItem( - HbDataFormModelItem::ToggleValueItem, - LOC_DELIVERY_REPORTS, 0); - deliverReports->setContentWidgetData("text", deliveryReoprtList.at(index)); - deliverReports->setContentWidgetData("additionalText", deliveryReoprtList.at(otherIndex)); + mSettingEngine->settingsServiceMessagesAndCharEncoding( + receiveServiceMessages, + charEncoding); - model->appendDataFormItem(deliverReports, model->invisibleRootItem()); - this->addConnection(deliverReports, SIGNAL(clicked()), - this,SLOT(onPressedDelReports())); - - // 2. Character encoding - HbDataFormModelItem *characterEncoding = new HbDataFormModelItem( - HbDataFormModelItem::ComboBoxItem, - LOC_CHAR_ENCODING, 0); + // 1. Character encoding + HbDataFormModelItem *characterEncoding = + new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, + LOC_CHAR_ENCODING, + 0); QStringList charEncodingList; charEncodingList << LOC_REDUCED_SUPPORT << LOC_FULL_SUPPORT; - index = int(charEncoding); + int index = int (charEncoding); characterEncoding->setContentWidgetData("items", charEncodingList); characterEncoding->setContentWidgetData("currentIndex", index); - model->appendDataFormItem(characterEncoding, model->invisibleRootItem()); - this->addConnection(characterEncoding, SIGNAL(currentIndexChanged(int)), - this,SLOT(changeCharEncoding(int))); - - // 3. CUSTOM SETTING ITEM HbButton - HbDataFormModelItem::DataItemType customItem = - static_cast (HbDataFormModelItem::CustomItemBase + 1); + settingsModel->appendDataFormItem(characterEncoding, + settingsModel->invisibleRootItem()); + this->addConnection(characterEncoding, + SIGNAL(currentIndexChanged(int)), + this, + SLOT(changeCharEncoding(int))); + + //2. receiving service messages + QStringList serviceMessagesList; + serviceMessagesList << LOC_OFF << LOC_ON; + + index = int (receiveServiceMessages); + int otherIndex = (receiveServiceMessages + 1) % serviceMessagesList.count(); + + HbDataFormModelItem *serviceMessagesItem = + new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, + LOC_RECEIVING_SERVICE_MESSAGES, + 0); + + serviceMessagesItem->setContentWidgetData("items", serviceMessagesList); + serviceMessagesItem->setContentWidgetData("currentIndex", index); + + settingsModel->appendDataFormItem(serviceMessagesItem, + settingsModel->invisibleRootItem()); + this->addConnection(serviceMessagesItem, + SIGNAL(clicked()), + this, + SLOT(onPressedServiceMessages())); + + // 3. MMS Settings + HbDataFormModelItem* mmsGroup = + new HbDataFormModelItem(HbDataFormModelItem::GroupItem, + LOC_MMS_SETTINGS, + 0); + + settingsModel->appendDataFormItem(mmsGroup, + settingsModel->invisibleRootItem()); + + addMMSGroupItem(mmsGroup); + + // 4. SMS Settings + mSmsMCGroup = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, + LOC_SMS_CENTRE_SETTINGS, + 0); + + settingsModel->appendDataFormItem(mSmsMCGroup, + settingsModel->invisibleRootItem()); + + addSmsMCGroupItem(mSmsMCGroup); + + this->setModel(settingsModel); +} + +void MsgSettingsForm::refreshViewForm() +{ + updateSmsMCGroupItem(mSmsMCGroup); +} - HbDataFormModelItem *advancedSettings - = model->appendDataFormItem(customItem, QString(), model->invisibleRootItem()); +void MsgSettingsForm::updateSmsMCGroupItem(HbDataFormModelItem* parent) +{ + //1. update the combobox model item + int defaultServiceCenter = -1; + mSmsServiceList.clear(); + mSettingEngine->allSMSMessageCenter(mSmsServiceList, defaultServiceCenter); + + mSmsServiceCenterModel->clear(); + + //recreate all the model items + int itemCount = mSmsServiceList.count(); + for (int i = 0; i < itemCount; ++i) + { + QStandardItem *item = new QStandardItem; + item->setData(mSmsServiceList.at(i), Qt::DisplayRole); + mSmsServiceCenterModel->appendRow(item); + } + //set the content widget data again + if(itemCount > 0) + { + smsMessageCenter->setContentWidgetData("items", mSmsServiceList); + } + + smsMessageCenter->setContentWidgetData("currentIndex", + defaultServiceCenter); - advancedSettings->setContentWidgetData("text", LOC_ADVANCED); - this->addConnection(advancedSettings, SIGNAL(clicked()), - this,SLOT(onPressedAdvanced())); - - this->setModel(model); + //2. refresh all the custom buttons again + int childCount = parent->childCount(); + int totalServices = mSmsServiceList.count(); + + //custom buttons start from index 1 till childCount-2 + int list_index = 0, child_index = 1; + for (; list_index < totalServices && child_index <= childCount - 2; list_index++, child_index++) + { + //get the existing custom item instance + HbDataFormModelItem* customItem = parent->childAt(child_index); + customItem->setContentWidgetData("text", mSmsServiceList.at(list_index)); + } + + //if extra child items are remaining then delete those from parent + for(;child_index <= childCount - 2; + child_index++) + { + parent->removeChild(child_index); + } + + //create all new custom items if new are added in list + //CUSTOM SETTING ITEM HbButton + HbDataFormModelItem::DataItemType + customButtonGeneral = + static_cast (HbDataFormModelItem::CustomItemBase + + 1); + for (; list_index < totalServices; list_index++, child_index++) + { + HbDataFormModelItem* newChild = + new HbDataFormModelItem(customButtonGeneral); + + newChild->setContentWidgetData("text", mSmsServiceList.at(list_index)); + parent->insertChild(child_index, newChild); + + this->addConnection(newChild, + SIGNAL(clicked()), + this, + SLOT(onPressedCustomButton())); + } } -void MsgSettingsForm::onPressedAdvanced() +void MsgSettingsForm::addMMSGroupItem(HbDataFormModelItem* parent) { - //tell view manager to open advanced view - mSettingsViewManager->openAdvancedView(); + //read settings + MsgSettingEngine::MmsRetrieval retrieval = + MsgSettingEngine::AlwaysAutomatic; + bool allowAnonymous = true; + bool allowAdverts = true; + + mSettingEngine->advanceMmsSettings(retrieval, + allowAnonymous, + allowAdverts); + + // add all the mms group item + + HbDataFormModelItem *mmsRetrieval = + new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, + LOC_MMS_RETRIEVAL, + 0); + + QStringList mmsRetrievalList; + mmsRetrievalList << LOC_ALWAYS_AUTOMATIC << LOC_AUTO_HOME_NETWORK + << LOC_MANUAL << LOC_OFF; + + mmsRetrieval->setContentWidgetData("items", mmsRetrievalList); + mmsRetrieval->setContentWidgetData("currentIndex", int (retrieval)); + this->addConnection(mmsRetrieval, + SIGNAL(currentIndexChanged(int)), + this, + SLOT(changeMMSRetrievalMode(int))); + + HbDataFormModelItem *anonymousMMS = + new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem, + LOC_ALLOW_ANONYMOUS_MMS, + 0); + + QStringList anonymousMMSList; + anonymousMMSList << LOC_MMS_NO << LOC_MMS_YES; + + int defaultIndex = int (allowAnonymous); + int alternateIndex = (defaultIndex + 1) % anonymousMMSList.count(); + + anonymousMMS->setContentWidgetData("text", + anonymousMMSList.at(defaultIndex)); + anonymousMMS->setContentWidgetData("additionalText", + anonymousMMSList.at(alternateIndex)); + this->addConnection(anonymousMMS, + SIGNAL(clicked()), + this, + SLOT(allowAnonymousMMS())); + + HbDataFormModelItem *mmsAdverts = + new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem, + LOC_RECEIVE_MMS_ADVERTS, + 0); + + QStringList mmsAdvertsList; + mmsAdvertsList << LOC_MMS_NO << LOC_MMS_YES; + + defaultIndex = int (allowAdverts); + alternateIndex = (defaultIndex + 1) % mmsAdvertsList.count(); + + mmsAdverts->setContentWidgetData("text", mmsAdvertsList.at(defaultIndex)); + mmsAdverts->setContentWidgetData("additionalText", + mmsAdvertsList.at(alternateIndex)); + + this->addConnection(mmsAdverts, + SIGNAL(clicked()), + this, + SLOT(allowMMSAdverts())); + + HbDataFormModelItem *accessPoint = + new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, + LOC_MMS_AP_IN_USE, + 0); + + QStandardItemModel* comboModel = new QStandardItemModel(); + + QStringList mmsList; + int defaultAccessPointIndex = -1; + + mSettingEngine->allMMsAcessPoints(mmsList, defaultAccessPointIndex); + int accessPoints = mmsList.count(); + for (int a = 0; a < accessPoints; ++a) + { + QStandardItem* item = new QStandardItem(); + item->setData(mmsList[a], Qt::DisplayRole); + comboModel->appendRow(item); + } + accessPoint->setModel(comboModel); + accessPoint->setContentWidgetData("items", mmsList); + if (defaultAccessPointIndex >= 0) + { + accessPoint->setContentWidgetData("currentIndex", + defaultAccessPointIndex); + } + QDEBUG_WRITE_FORMAT("Settings: adding accesspoints..", defaultAccessPointIndex); + this->addConnection(accessPoint, + SIGNAL(currentIndexChanged(int)), + this, + SLOT(changeAccessPoint(int))); + + parent->appendChild(mmsRetrieval); + parent->appendChild(anonymousMMS); + parent->appendChild(mmsAdverts); + parent->appendChild(accessPoint); } -void MsgSettingsForm::onPressedDelReports() +void MsgSettingsForm::addSmsMCGroupItem(HbDataFormModelItem* parent) +{ + // add all the sms message center group item + smsMessageCenter + = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem, + mSmsMCSettingsGroup.at(0), + 0); + + int defaultServiceCenter = -1; + mSmsServiceList.clear(); + mSettingEngine->allSMSMessageCenter(mSmsServiceList, defaultServiceCenter); + mSmsServiceCenterModel = new QStandardItemModel(this); + + int itemCount = mSmsServiceList.count(); + for (int i = 0; i < itemCount; ++i) + { + QStandardItem *item = new QStandardItem; + item->setData(mSmsServiceList.at(i), Qt::DisplayRole); + mSmsServiceCenterModel->appendRow(item); + } + + smsMessageCenter->setModel(mSmsServiceCenterModel); + smsMessageCenter->setContentWidgetData("items", mSmsServiceList); + + if (defaultServiceCenter >= 0) + { + smsMessageCenter->setContentWidgetData("currentIndex", + defaultServiceCenter); + } + + this->addConnection(smsMessageCenter, + SIGNAL(currentIndexChanged(int)), + this, + SLOT(onSMSCurrentIndexChanged(int))); + + parent->appendChild(smsMessageCenter); + + //CUSTOM SETTING ITEM HbButton + HbDataFormModelItem::DataItemType + customButtonGeneral = + static_cast (HbDataFormModelItem::CustomItemBase + + 1); + + int totalServices = mSmsServiceList.count(); + for (int index = 0; index < totalServices; index++) + { + HbDataFormModelItem *newMessageCenters = + settingsModel->appendDataFormItem(customButtonGeneral, + QString(""), + parent); + + newMessageCenters->setContentWidgetData("text", + mSmsServiceList.at(index)); + this->addConnection(newMessageCenters, + SIGNAL(clicked()), + this, + SLOT(onPressedCustomButton())); + } + + HbDataFormModelItem *newMessageCenters = + settingsModel->appendDataFormItem(customButtonGeneral, + QString(""), + parent); + + newMessageCenters->setContentWidgetData("text", mSmsMCSettingsGroup.at(1)); + this->addConnection(newMessageCenters, + SIGNAL(clicked()), + this, + SLOT(onPressedCustomButton())); +} + +void MsgSettingsForm::onPressedServiceMessages() { HbPushButton *btn = qobject_cast (sender()); - if (btn) { + if (btn) + { QString btnText = btn->text(); //check if the button pressed was On or Off - if (LOC_OFF == btnText) { - mSettingEngine->setDeliveryReport(false); + if (LOC_OFF == btnText) + { + mSettingEngine->setReceiveSerivceMessages(false); } - else { - mSettingEngine->setDeliveryReport(true); + else + { + mSettingEngine->setReceiveSerivceMessages(true); } } } @@ -137,5 +432,87 @@ mSettingEngine->setCharacterEncoding(MsgSettingEngine::CharacterEncoding(index)); } +void MsgSettingsForm::changeMMSRetrievalMode(int index) +{ + mSettingEngine->setMMSRetrieval(MsgSettingEngine::MmsRetrieval(index)); +} +void MsgSettingsForm::allowAnonymousMMS() +{ + HbPushButton *btn = qobject_cast (sender()); + + if (btn) + { + QString btnText = btn->text(); + + //check if the button pressed was Yes or NO + if (LOC_MMS_YES == btnText) + { + mSettingEngine->setAnonymousMessages(true); + } + else + { + mSettingEngine->setAnonymousMessages(false); + } + } +} + +void MsgSettingsForm::allowMMSAdverts() +{ + HbPushButton *btn = qobject_cast (sender()); + + if (btn) + { + QString btnText = btn->text(); + + //check if the button pressed was Yes or NO + if (LOC_MMS_NO == btnText) + { + mSettingEngine->setReceiveMMSAdverts(true); + } + else + { + mSettingEngine->setReceiveMMSAdverts(false); + } + } +} + +void MsgSettingsForm::changeAccessPoint(int index) +{ + // save to the mms settings + mSettingEngine->setMMSAccesspoint(index); +} + +void MsgSettingsForm::onPressedCustomButton() +{ + HbPushButton *btn = qobject_cast (sender()); + + if (btn) + { + QString btnText = btn->text(); + if (btnText == mSmsMCSettingsGroup.at(1)) + { + // emit the signal to open add view + emit newSMSCCenterClicked(-1); + } + else + { + int index = mSmsServiceList.indexOf(btnText); + emit newSMSCCenterClicked(index); + } + } +} + +void MsgSettingsForm::onSMSCurrentIndexChanged(int index) +{ + //set into msg settings + mSettingEngine->setSMSMessageCenter(index); +} + +void MsgSettingsForm::expandSMSSettings() +{ + QModelIndex index_sms = settingsModel->indexFromItem(mSmsMCGroup); + + this->setExpanded(index_sms, true); +} //EOF