--- a/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp Fri Apr 16 14:51:52 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp Mon May 03 12:23:15 2010 +0300
@@ -25,6 +25,7 @@
#include <QTranslator>
#include <QScopedPointer>
#include <QLocale>
+#include <HbStringUtil>
#include "nmipssettingsplugin.h"
#include "nmipssettingshelper.h"
@@ -36,6 +37,10 @@
#include "nmipssettingscustomitem.h"
#include "nmipssettingslabeledcombobox.h"
+const QString NmIpsSettingsComboItems("comboItems");
+const QString NmIpsSettingsLabelTexts("labelTexts");
+const QString NmIpsSettingsItems("items");
+
/*!
\class NmIpsSettingsPlugin
\brief The class implements NmSettingsPluginInterface which is an interface
@@ -110,54 +115,37 @@
// Settings manager object is valid if the mailboxId is IMAP or POP3 account.
if (mSettingsManager) {
// Create settings helper.
- mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager);
+ mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager, form, model);
- connect(mSettingsHelper, SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
+ connect(mSettingsHelper,
+ SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
this, SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
connect(mSettingsHelper, SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
this, SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
+
+ connect(mSettingsHelper, SIGNAL(goOffline(const NmId &)),
+ this, SIGNAL(goOffline(const NmId &)));
+
+ connect(mSettingsHelper, SIGNAL(createUserDefinedMode()),
+ this, SLOT(createUserDefinedMode()));
+
// Add items to the model.
initGroupItems();
result = true;
}
+
return result;
}
/*!
- Slot called when individual setting items are shown.
- \param index. Index of the shown item.
+ This slot can be used in cases when plugin needs to handle stuff before settingsview is closed.
*/
-void NmIpsSettingsPlugin::itemShown(const QModelIndex& index)
+void NmIpsSettingsPlugin::aboutToClose()
{
- HbDataFormViewItem* item = static_cast<HbDataFormViewItem*>(mForm->itemByIndex(index));
- HbDataFormModelItem* modelItem = mModel->itemFromIndex(index);
-
- // Check item type
- if (modelItem == mReceivingScheduleSelectedItem) {
-
- // Populate the custom item's combobox and label data.
- NmIpsSettingsLabeledComboBox* box =
- static_cast<NmIpsSettingsLabeledComboBox*>(item->dataItemContentWidget());
-
- QStringList modeList;
- modeList << hbTrId("txt_mailips_setlabel_selected_mode_val_keep_upto") // 0
- << hbTrId("txt_mailips_setlabel_selected_mode_val_save_energy") // 1
- << hbTrId("txt_mailips_setlabel_selected_mode_val_fetch_manua"); // 2
-
- QStringList infoList;
- infoList << hbTrId("txt_mailips_list_the_mailbox_is_uptodate_during") // 0
- << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_every_15") // 1
- << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_only_by"); // 2
-
- box->setItems(modeList, infoList);
-
- // Read and set the default value for the combobox and label
- QVariant value;
- if (mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, value)) {
- box->setCurrentIndex(value.toInt());
- }
- }
+ if (mSettingsHelper->isOffline()) {
+ emit goOnline(mSettingsManager->mailboxId());
+ }
}
/*!
@@ -179,6 +167,7 @@
mModel->appendDataFormItem(HbDataFormModelItem::GroupItem,
hbTrId("txt_mailips_subhead_receiving_schedule"),
rootItem);
+ mSettingsHelper->setReceivingScheduleGroupItem(receivingScheduleItem);
initReceivingScheduleItems(*receivingScheduleItem);
HbDataFormModelItem *userInfoItem =
@@ -200,9 +189,8 @@
HbDataFormModelItem *deleteMailboxButtonItem =
mModel->appendDataFormItem(buttonItem, QString(), rootItem);
-
- deleteMailboxButtonItem->setData(HbDataFormModelItem::KeyRole,
- hbTrId("txt_mailips_button_delete_mailbox"));
+ deleteMailboxButtonItem->setContentWidgetData(QString("text"),
+ hbTrId("txt_mailips_button_delete_mailbox"));
mForm->addConnection(deleteMailboxButtonItem, SIGNAL(clicked()),
mSettingsHelper, SLOT(deleteButtonPress()));
@@ -256,20 +244,86 @@
protoTypeList.append(prototype);
mForm->setItemPrototypes(protoTypeList);
- // Instantiate the custom item and append it.
+ // 1. Active sync profile
HbDataFormModelItem *infoItem = new HbDataFormModelItem(
static_cast<HbDataFormModelItem::DataItemType>(NmIpsSettingsCustomItem::LabeledComboBox),
hbTrId("txt_mailips_setlabel_selected_mode"));
+
+ mSettingsHelper->insertContentItem(IpsServices::ReceptionActiveProfile, infoItem);
item.appendChild(infoItem);
- // Store the pointer for use in itemShown.
- mReceivingScheduleSelectedItem = infoItem;
+ QStringList modeList;
+ modeList << hbTrId("txt_mailips_setlabel_selected_mode_val_keep_upto") // 0
+ << hbTrId("txt_mailips_setlabel_selected_mode_val_save_energy") // 1
+ << hbTrId("txt_mailips_setlabel_selected_mode_val_fetch_manua"); // 2
+
+ QVariant userDefineMode;
+ mSettingsManager->readSetting(IpsServices::ReceptionUserDefinedProfile, userDefineMode);
+
+
+ // If 'user defined' mode is defined then add it to combo items.
+ if (userDefineMode.toInt()) {
+ modeList << hbTrId("txt_mailips_setlabel_selected_mode_val_user_define"); // 3
+ }
+ infoItem->setContentWidgetData(NmIpsSettingsComboItems, modeList);
+
+ QStringList infoList;
+ infoList << hbTrId("txt_mailips_list_the_mailbox_is_uptodate_during") // 0
+ << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_every_15") // 1
+ << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_only_by"); // 2
+
+ // If 'user defined' mode is defined then add 'user defined' explanation to label list.
+ if (userDefineMode.toInt()) {
+ infoList << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_as_defin"); // 3
+ }
+ infoItem->setContentWidgetData(NmIpsSettingsLabelTexts, infoList);
+
+ QVariant profileIndex;
+ mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex);
+ infoItem->setContentWidgetData(QString("currentIndex"), profileIndex);
+
+ // 2. Show mail in inbox
+ QVariant mailInInbox;
+ mSettingsManager->readSetting(IpsServices::ReceptionInboxSyncWindow, mailInInbox);
- // Connect the signals and slots.
- connect(mForm, SIGNAL(itemShown(const QModelIndex &)),
- this, SLOT(itemShown(const QModelIndex &)));
+ CpSettingFormItemData *showMailInInboxItem =
+ new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
+ "txt_mailips_setlabel_show_mail_in_inbox"));
+
+ mSettingsHelper->insertContentItem(IpsServices::ReceptionInboxSyncWindow, showMailInInboxItem);
+
+ QStringList showMailItems;
+ showMailItems << HbStringUtil::convertDigits("50")
+ << HbStringUtil::convertDigits("100")
+ << HbStringUtil::convertDigits("500")
+ << hbTrId("txt_mailips_setlabel_val_all");
+
+
+ QList<QVariant> showMailItemValues;
+ showMailItemValues << 50
+ << 100
+ << 500
+ << 0;
+
+ QVariant value(showMailItemValues);
+ showMailInInboxItem->setData(HbDataFormModelItem::DescriptionRole + 1, value);
+ showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems);
+ showMailInInboxItem->setEnabled(true);
+ item.appendChild(showMailInInboxItem);
+
+ // Active sync profile connection
mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
- mSettingsHelper, SLOT(receivingScheduleChange(int)));
+ mSettingsHelper, SLOT(receivingScheduleChange(int)));
+
+ mForm->addConnection(showMailInInboxItem, SIGNAL(itemSelected(int)),
+ this, SLOT(showMailInInboxModified(int)));
+
+ // Must be called manually here, because the signal->slot connection set above using
+ // HbDataForm::addConnection() is actually established AFTER the properties have first been
+ // set to the widget, causing the first currentIndexChanged signal not to reach
+ // NmIpsSettingsHelper::receivingScheduleChange().
+ mSettingsHelper->receivingScheduleChange(profileIndex.toInt());
+
}
@@ -294,10 +348,10 @@
// Username (Never visible in Yahoo!)
QVariant username;
- mSettingsManager->readSetting(IpsServices::LoginName, username);
+ mSettingsManager->readSetting(IpsServices::IncomingLoginName, username);
CpSettingFormItemData *usernameItem = new CpSettingFormItemData(
HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_username"));
- mSettingsHelper->insertContentItem(IpsServices::LoginName, usernameItem);
+ mSettingsHelper->insertContentItem(IpsServices::IncomingLoginName, usernameItem);
usernameItem->setContentWidgetData(QString("text"), username);
mForm->addConnection(usernameItem, SIGNAL(editingFinished()),
mSettingsHelper, SLOT(saveUserName()));
@@ -307,10 +361,10 @@
// Password
QVariant password;
- mSettingsManager->readSetting(IpsServices::Password, password);
+ mSettingsManager->readSetting(IpsServices::IncomingPassword, password);
CpSettingFormItemData *passwordItem = new CpSettingFormItemData(
HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password"));
- mSettingsHelper->insertContentItem(IpsServices::Password, passwordItem);
+ mSettingsHelper->insertContentItem(IpsServices::IncomingPassword, passwordItem);
passwordItem->setContentWidgetData(QString("text"), password);
passwordItem->setContentWidgetData(QString("echoMode"), HbLineEdit::PasswordEchoOnEdit);
mForm->addConnection(passwordItem, SIGNAL(editingFinished()),
@@ -337,7 +391,196 @@
*/
void NmIpsSettingsPlugin::initServerInfoItems(HbDataFormModelItem &item) const
{
- Q_UNUSED(item);
+ // 1. Incoming mail server address
+ QVariant incomingMailServer;
+ mSettingsManager->readSetting(IpsServices::IncomingMailServer, incomingMailServer);
+ CpSettingFormItemData *incomingMailServerItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_incoming_mail_server"));
+ mSettingsHelper->insertContentItem(IpsServices::IncomingMailServer, incomingMailServerItem);
+ incomingMailServerItem->setContentWidgetData(QString("text"), incomingMailServer);
+ mForm->addConnection(incomingMailServerItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveIncomingMailServer()));
+ mForm->addConnection(incomingMailServerItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(incomingMailServerTextChange(QString)));
+ item.appendChild(incomingMailServerItem);
+
+ // 2. Incoming Secure connection
+ QVariant secureSockets;
+ QVariant secureSSLWrapper;
+ mSettingsManager->readSetting(IpsServices::IncomingSecureSockets, secureSockets);
+ mSettingsManager->readSetting(IpsServices::IncomingSSLWrapper, secureSSLWrapper);
+ CpSettingFormItemData *incomingSecureConnectionItem =
+ new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
+ "txt_mailips_setlabel_incoming_security"));
+ mSettingsHelper->insertContentItem(IpsServices::IncomingSecureSockets, incomingSecureConnectionItem);
+ QStringList showSCItems;
+ showSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
+ << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
+ << hbTrId("txt_mailips_setlabel_security_val_off");
+
+ incomingSecureConnectionItem->setContentWidgetData(QString("items"), showSCItems);
+ int incomingSecureConnectionItemIndex =
+ mSettingsHelper->getCorrectSecureRadioButtonIndex(secureSockets, secureSSLWrapper);
+ incomingSecureConnectionItem->setContentWidgetData(QString("selected"),
+ incomingSecureConnectionItemIndex);
+ mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)),
+ mSettingsHelper, SLOT(incomingSecureConnectionItemChange(int)));
+ mForm->addConnection(incomingSecureConnectionItem, SIGNAL(pressed(const QModelIndex &)),
+ mSettingsHelper, SLOT(incomingSecureConnectionPressed(const QModelIndex &)));
+ item.appendChild(incomingSecureConnectionItem);
+
+ // 3. Incoming mail server port
+ QVariant incomingPort;
+ mSettingsManager->readSetting(IpsServices::IncomingPort, incomingPort);
+ CpSettingFormItemData *incomingPortItem =
+ new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
+ "txt_mailips_setlabel_incoming_port"));
+ mSettingsHelper->insertContentItem(IpsServices::IncomingPort, incomingPortItem);
+ mForm->addConnection(incomingPortItem, SIGNAL(itemSelected(int)),
+ mSettingsHelper, SLOT(incomingPortChange(int)));
+ mForm->addConnection(incomingPortItem, SIGNAL(pressed(const QModelIndex &)),
+ mSettingsHelper, SLOT(incomingPortPressed(const QModelIndex &)));
+ QStringList incomingPortItems;
+ incomingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
+ << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
+ incomingPortItem->setContentWidgetData(QString("items"), incomingPortItems);
+ int incomingPortItemIndex =
+ mSettingsHelper->getCorrectPortRadioButtonIndex(incomingPort.toInt());
+ incomingPortItem->setContentWidgetData(QString("selected"), incomingPortItemIndex);
+ item.appendChild(incomingPortItem);
+
+ // 4. Outgoing mail server address
+ QVariant outgoingMailServer;
+ mSettingsManager->readSetting(IpsServices::OutgoingMailServer, outgoingMailServer);
+ CpSettingFormItemData *outgoingMailServerItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_outgoing_mail_server"));
+ mSettingsHelper->insertContentItem(IpsServices::OutgoingMailServer, outgoingMailServerItem);
+ outgoingMailServerItem->setContentWidgetData(QString("text"), outgoingMailServer);
+ mForm->addConnection(outgoingMailServerItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveOutgoingMailServer()));
+ mForm->addConnection(outgoingMailServerItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(outgoingMailServerTextChange(QString)));
+ item.appendChild(outgoingMailServerItem);
+
+ // 5. Outgoing Secure connection
+ QVariant outgoingSecureSockets;
+ QVariant outgoingSSLWrapper;
+ mSettingsManager->readSetting(IpsServices::OutgoingSecureSockets, outgoingSecureSockets);
+ mSettingsManager->readSetting(IpsServices::OutgoingSSLWrapper, outgoingSSLWrapper);
+ CpSettingFormItemData *outgoingSecureConnectionItem =
+ new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
+ "txt_mailips_setlabel_outgoing_security"));
+ mSettingsHelper->insertContentItem(IpsServices::OutgoingSecureSockets, outgoingSecureConnectionItem);
+ QStringList outgoingShowSCItems;
+ outgoingShowSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
+ << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
+ << hbTrId("txt_mailips_setlabel_security_val_off");
+
+ outgoingSecureConnectionItem->setContentWidgetData(QString("items"), outgoingShowSCItems);
+ int outgoingSecureConnectionItemIndex =
+ mSettingsHelper->getCorrectSecureRadioButtonIndex(outgoingSecureSockets,
+ outgoingSSLWrapper);
+ outgoingSecureConnectionItem->setContentWidgetData(QString("selected"),
+ outgoingSecureConnectionItemIndex);
+ mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)),
+ mSettingsHelper, SLOT(outgoingSecureConnectionItemChange(int)));
+ mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(pressed(const QModelIndex &)),
+ mSettingsHelper, SLOT(outgoingSecureConnectionPressed(const QModelIndex &)));
+ item.appendChild(outgoingSecureConnectionItem);
+
+ // 6. Outgoing mail server port
+ QVariant outgoingPort;
+ mSettingsManager->readSetting(IpsServices::OutgoingPort, outgoingPort);
+ CpSettingFormItemData *outgoingPortItem =
+ new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
+ "txt_mailips_setlabel_outgoing_port"));
+ mSettingsHelper->insertContentItem(IpsServices::OutgoingPort, outgoingPortItem);
+ mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)),
+ mSettingsHelper, SLOT(outgoingPortChange(int)));
+ mForm->addConnection(outgoingPortItem, SIGNAL(pressed(const QModelIndex &)),
+ mSettingsHelper, SLOT(outgoingPortPressed(const QModelIndex &)));
+ QStringList outgoingPortItems;
+ outgoingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
+ << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
+ outgoingPortItem->setContentWidgetData(QString("items"), outgoingPortItems);
+ int outgoingPortItemIndex =
+ mSettingsHelper->getCorrectOutgoingPortRadioButtonIndex(outgoingPort.toInt());
+ outgoingPortItem->setContentWidgetData(QString("selected"), outgoingPortItemIndex);
+ item.appendChild(outgoingPortItem);
+
+ // 8. Folder path
+ // This item is only shown for IMAP4 account.
+ if (mSettingsManager->accountType() == IpsServices::EMailImap) {
+ QVariant folderPath;
+ mSettingsManager->readSetting(IpsServices::FolderPath, folderPath);
+ CpSettingFormItemData *folderPathItem =
+ new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
+ "txt_mailips_setlabel_folder_path"));
+ mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem);
+ mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)),
+ mSettingsHelper, SLOT(inboxPathChange(int)));
+ mForm->addConnection(folderPathItem, SIGNAL(pressed(const QModelIndex &)),
+ mSettingsHelper, SLOT(inboxPathPressed(const QModelIndex &)));
+ QStringList folderPathItems;
+ folderPathItems << hbTrId("txt_mailips_setlabel_folder_path_val_default")
+ << hbTrId("txt_mailips_setlabel_folder_path_user_defined");
+ folderPathItem->setContentWidgetData(QString("items"), folderPathItems);
+ int folderPathItemIndex = mSettingsHelper->getCorrectInboxPathRadioButtonIndex(folderPath);
+ folderPathItem->setContentWidgetData(QString("selected"), folderPathItemIndex);
+ item.appendChild(folderPathItem);
+ }
+}
+
+/*!
+ Creates user defined mode if not already exist.
+*/
+void NmIpsSettingsPlugin::createUserDefinedMode()
+{
+ QVariant userDefineMode;
+ mSettingsManager->readSetting(IpsServices::ReceptionUserDefinedProfile, userDefineMode);
+
+ // If user defined mode do not already exist, create it
+ if (!userDefineMode.toInt()) {
+ // Add 'user defined' mode to combobox
+ HbDataFormModelItem *syncProfile =
+ mSettingsHelper->contentItem(IpsServices::ReceptionActiveProfile);
+
+ QVariant contentWidgetData = syncProfile->contentWidgetData(NmIpsSettingsComboItems);
+ QStringList modeList = contentWidgetData.value<QStringList>();
+ modeList << hbTrId("txt_mailips_setlabel_selected_mode_val_user_define");
+
+ // Add 'user defined' explanation text to label text
+ contentWidgetData = syncProfile->contentWidgetData(NmIpsSettingsLabelTexts);
+ QStringList infoList = contentWidgetData.value<QStringList>();
+ infoList << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_as_defin");
+
+ // disconnect
+ mForm->removeConnection(syncProfile, SIGNAL(currentIndexChanged(int)),
+ mSettingsHelper, SLOT(receivingScheduleChange(int)));
+
+ syncProfile->setContentWidgetData(NmIpsSettingsComboItems, modeList);
+ syncProfile->setContentWidgetData(NmIpsSettingsLabelTexts, infoList);
+
+ // reconnect
+ mForm->addConnection(syncProfile, SIGNAL(currentIndexChanged(int)),
+ mSettingsHelper, SLOT(receivingScheduleChange(int)));
+
+ // Mark that user defined mode exists
+ userDefineMode.setValue(1);
+ mSettingsManager->writeSetting(IpsServices::ReceptionUserDefinedProfile, userDefineMode);
+ }
+}
+
+/*!
+
+*/
+void NmIpsSettingsPlugin::showMailInInboxModified(int index)
+{
+ HbDataFormModelItem* item = mSettingsHelper->contentItem(IpsServices::ReceptionInboxSyncWindow);
+ QVariant itemData = item->data(HbDataFormModelItem::HbDataFormModelItem::DescriptionRole + 1);
+ int selectedValue = itemData.value< QList< QVariant > >().at(index).toInt();
+ mSettingsHelper->handleReceivingScheduleSettingChange(
+ IpsServices::ReceptionInboxSyncWindow, selectedValue);
}
Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);