diff -r 459da34cdb45 -r 83cc6bae1de8 ipsservices/nmipssettings/src/nmipssettingsplugin.cpp --- a/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp Fri Sep 03 17:52:02 2010 +0300 +++ b/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp Wed Sep 15 12:09:55 2010 +0300 @@ -15,7 +15,6 @@ * */ -#include #include #include #include @@ -41,10 +40,10 @@ #include "nmipssettingscustomitem.h" #include "nmipssettingslabeledcombobox.h" -const QString NmIpsSettingsComboItems("comboItems"); -const QString NmIpsSettingsLabelTexts("labelTexts"); -const QString NmIpsSettingsItems("items"); -const int NmIpsSettingsReceptionUserDefinedProfileEnabled(1); +static const QString NmIpsSettingsComboItems("comboItems"); +static const QString NmIpsSettingsLabelTexts("labelTexts"); +static const QString NmIpsSettingsItems("items"); +static const int NmIpsSettingsReceptionUserDefinedProfileEnabled(1); /*! \class NmIpsSettingsPlugin @@ -59,22 +58,22 @@ Constructor of NmIpsSettingsPlugin. */ NmIpsSettingsPlugin::NmIpsSettingsPlugin() -: mSettingsHelper(0), - mSettingsManager(0), +: mSettingsHelper(NULL), + mSettingsManager(NULL), mHiddenItem(false), - mCurrentInboxIndex(-1) + mSelectedPopupRadioButtonIndex(-1) { QString lang = QLocale::system().name(); QString path = "Z:/resource/qt/translations/"; QString appName = "mailips_"; QString commonName = "common_"; - + // Load common strings QScopedPointer commonTranslator(new QTranslator(this)); commonTranslator->load(commonName + lang, path); QCoreApplication::installTranslator(commonTranslator.data()); - (void)commonTranslator.take(); - + (void)commonTranslator.take(); + // Load IPS settings specific strings QScopedPointer translator(new QTranslator(this)); translator->load(appName + lang, path); @@ -106,7 +105,7 @@ // SettingsManager and SettingsHelper needs to be deleted. delete mSettingsManager; delete mSettingsHelper; - mSettingsHelper = 0; + mSettingsHelper = NULL; mSettingsManager = NmIpsSettingsManagerFactory::createSettingManager(mailboxId); bool result(false); @@ -116,11 +115,11 @@ if (mSettingsManager) { // Turns AlwaysOnline OFF setAlwaysOnlineState(EServerAPIEmailTurnOff, mailboxId); - + // Store model and form pointers. mModel = &model; mForm = &form; - + // Create settings helper. mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager, form, model); @@ -136,7 +135,7 @@ connect(mSettingsHelper, SIGNAL(createUserDefinedMode()), this, SLOT(createUserDefinedMode())); - + // Get the value if some ui items need to be hidden. QVariant data; mSettingsManager->readSetting(IpsServices::UserNameHidden, data); @@ -155,12 +154,12 @@ { QVariant profileIndex; const NmId mailboxId = mSettingsManager->mailboxId(); - + mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex); if ((mSettingsHelper->isOffline()) && (profileIndex.toInt() != IpsServices::EmailSyncProfileManualFetch)) { emit goOnline(mailboxId); } - + // Turns AlwaysOnline ON setAlwaysOnlineState(EServerAPIEmailTurnOn, mailboxId); } @@ -300,7 +299,7 @@ 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_every_hour") // 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. @@ -330,19 +329,20 @@ << HbStringUtil::convertDigits("100") << HbStringUtil::convertDigits("500") << hbTrId("txt_mailips_setlabel_val_all"); - + showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems); + showMailInInboxItem->setContentWidgetData("displayMode","popup"); 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(finished(HbAction *)), - this, SLOT(showMailInInboxModified(HbAction *))); + this, SLOT(showMailInInboxModified(HbAction *))); mForm->addConnection(showMailInInboxItem, SIGNAL(itemSelected(int)), - this, SLOT(inboxSelectionModified(int))); - + this, SLOT(popupRadioButtonIndexModified(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 @@ -387,8 +387,8 @@ usernameItem->setEnabled(false); } item.appendChild(usernameItem); - - + + // 3. Password QVariant password; mSettingsManager->readSetting(IpsServices::IncomingPassword, password); @@ -419,7 +419,7 @@ Appends the server info items to the group item. \param item Reference to the parent group item. */ -void NmIpsSettingsPlugin::initServerInfoItems(HbDataFormModelItem &item) const +void NmIpsSettingsPlugin::initServerInfoItems(HbDataFormModelItem &item) { // 1. Incoming mail server address QVariant incomingMailServer; @@ -437,28 +437,37 @@ incomingMailServerItem->setEnabled(false); } item.appendChild(incomingMailServerItem); - + // 2. Incoming Secure connection 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 = + incomingSecureConnectionItem->setContentWidgetData("displayMode","popup"); + + int incomingSecureConnectionItemIndex = mSettingsHelper->getCorrectIncomingSecureRadioButtonIndex(); - incomingSecureConnectionItem->setContentWidgetData(QString("selected"), + incomingSecureConnectionItem->setContentWidgetData(QString("selected"), incomingSecureConnectionItemIndex); - mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)), - mSettingsHelper, SLOT(incomingSecureConnectionItemChange(int))); + + mForm->addConnection(incomingSecureConnectionItem, SIGNAL(finished(HbAction *)), + this, SLOT(incomingSecureConnectionModified(HbAction *))); + mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)), + this, SLOT(popupRadioButtonIndexModified(int))); + if (mHiddenItem) { incomingSecureConnectionItem->setEnabled(false); } item.appendChild(incomingSecureConnectionItem); - + // 3. Incoming mail server port CpSettingFormItemData *incomingPortItem = new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId( @@ -467,33 +476,44 @@ 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->getCorrectIncomingPortRadioButtonIndex(); + incomingPortItem->setContentWidgetData("displayMode","popup"); + + int incomingPortItemIndex = mSettingsHelper->getCorrectIncomingPortRadioButtonIndex(); incomingPortItem->setContentWidgetData(QString("selected"), incomingPortItemIndex); + + mForm->addConnection(incomingPortItem, SIGNAL(finished(HbAction *)), + this, SLOT(incomingPortModified(HbAction *))); mForm->addConnection(incomingPortItem, SIGNAL(itemSelected(int)), - mSettingsHelper, SLOT(incomingPortChange(int))); + this, SLOT(popupRadioButtonIndexModified(int))); + if (mHiddenItem) { incomingPortItem->setEnabled(false); } 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))); + if (mHiddenItem) {// Starred and dimmed. outgoingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password); outgoingMailServerItem->setEnabled(false); } item.appendChild(outgoingMailServerItem); - + // 5. Outgoing secure connection CpSettingFormItemData *outgoingSecureConnectionItem = new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId( @@ -503,13 +523,20 @@ 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 = + outgoingSecureConnectionItem->setContentWidgetData("displayMode","popup"); + + int outgoingSecureConnectionItemIndex = mSettingsHelper->getCorrectOutgoingSecureRadioButtonIndex(); - outgoingSecureConnectionItem->setContentWidgetData(QString("selected"), + outgoingSecureConnectionItem->setContentWidgetData(QString("selected"), outgoingSecureConnectionItemIndex); - mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)), - mSettingsHelper, SLOT(outgoingSecureConnectionItemChange(int))); + + mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(finished(HbAction *)), + this, SLOT(outgoingSecureConnectionModified(HbAction *))); + mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)), + this, SLOT(popupRadioButtonIndexModified(int))); + if (mHiddenItem) { outgoingSecureConnectionItem->setEnabled(false); } @@ -523,16 +550,23 @@ 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(); + outgoingPortItem->setContentWidgetData("displayMode","popup"); + + int outgoingPortItemIndex = mSettingsHelper->getCorrectOutgoingPortRadioButtonIndex(); outgoingPortItem->setContentWidgetData(QString("selected"), outgoingPortItemIndex); - mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)), - mSettingsHelper, SLOT(outgoingPortChange(int))); + + mForm->addConnection(outgoingPortItem, SIGNAL(finished(HbAction *)), + this, SLOT(outgoingPortModified(HbAction *))); + mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)), + this, SLOT(popupRadioButtonIndexModified(int))); + if (mHiddenItem) { outgoingPortItem->setEnabled(false); } item.appendChild(outgoingPortItem); - + // 7. Outgoing authentication. CpSettingFormItemData *outgoingAuthenticationItem = new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId( @@ -542,12 +576,19 @@ outgoingAuthenticationItems << hbTrId("txt_mailips_setlabel_outgoing_authentication_none") << hbTrId("txt_mailips_setlabel_outgoing_authentication_same") << hbTrId("txt_mailips_setlabel_outgoing_authentication_user"); + outgoingAuthenticationItem->setContentWidgetData(QString("items"), outgoingAuthenticationItems); - int outgoingAuthenticationIndex = - mSettingsHelper->getCorrectOutgoingAuthenticationRadioButtonIndex(); + outgoingAuthenticationItem->setContentWidgetData("displayMode","popup"); + + int outgoingAuthenticationIndex = + mSettingsHelper->getCorrectOutgoingAuthenticationRadioButtonIndex(); outgoingAuthenticationItem->setContentWidgetData(QString("selected"), outgoingAuthenticationIndex); - mForm->addConnection(outgoingAuthenticationItem, SIGNAL(itemSelected(int)), - mSettingsHelper, SLOT(outgoingAuthenticationChange(int))); + + mForm->addConnection(outgoingAuthenticationItem, SIGNAL(finished(HbAction *)), + this, SLOT(outgoingAuthenticationModified(HbAction *))); + mForm->addConnection(outgoingAuthenticationItem, SIGNAL(itemSelected(int)), + this, SLOT(popupRadioButtonIndexModified(int))); + item.appendChild(outgoingAuthenticationItem); if (mHiddenItem) { outgoingAuthenticationItem->setEnabled(false); @@ -555,22 +596,29 @@ if (outgoingAuthenticationIndex == IpsServices::EMailAuthUserAuthentication) { mSettingsHelper->createServerInfoGroupDynamicItems(mHiddenItem); } - + // 8. Folder path // This item is only shown for IMAP4 account. if (mSettingsManager->accountType() == IpsServices::EMailImap) { CpSettingFormItemData *folderPathItem = new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId( "txt_mailips_setlabel_folder_path")); - mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem); + mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem); QStringList folderPathItems; folderPathItems << hbTrId("txt_mailips_setlabel_folder_path_val_default") << hbTrId("txt_mailips_setlabel_folder_path_user_defined"); + folderPathItem->setContentWidgetData(QString("items"), folderPathItems); + folderPathItem->setContentWidgetData("displayMode","popup"); + int folderPathItemIndex = mSettingsHelper->getCorrectFolderPathRadioButtonIndex(); folderPathItem->setContentWidgetData(QString("selected"), folderPathItemIndex); - mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)), - mSettingsHelper, SLOT(folderPathChange(int))); + + mForm->addConnection(folderPathItem, SIGNAL(finished(HbAction *)), + this, SLOT(folderPathModified(HbAction *))); + mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)), + this, SLOT(popupRadioButtonIndexModified(int))); + item.appendChild(folderPathItem); } } @@ -585,13 +633,13 @@ { RAlwaysOnlineClientSession aosession; TInt err(aosession.Connect()); - + if (err == KErrNone) { TPckgBuf mboxBuf(mailboxId.id32()); - + TRAP_IGNORE(aosession.RelayCommandL(command, mboxBuf)); } - + aosession.Close(); } @@ -639,15 +687,21 @@ /*! Handles mail in inbox modifications. +Index Value +0 50 +1 100 +2 500 +3 All + \param action Action that determines whether user clicked OK or cancel. */ void NmIpsSettingsPlugin::showMailInInboxModified(HbAction *action) { if ((action->text() == hbTrId("txt_common_button_ok")) - && (mCurrentInboxIndex >=0 && mCurrentInboxIndex <=3)) { + && (mSelectedPopupRadioButtonIndex >=0 && mSelectedPopupRadioButtonIndex <=3)) { int conversionTable[] = { 50, 100, 500, 0 }; - int selectedValue(conversionTable[mCurrentInboxIndex]); - + int selectedValue(conversionTable[mSelectedPopupRadioButtonIndex]); + QVariant previouslySelectedValue; mSettingsManager->readSetting(IpsServices::ReceptionInboxSyncWindow, previouslySelectedValue); if (previouslySelectedValue.toInt() != selectedValue) { @@ -655,22 +709,103 @@ IpsServices::ReceptionInboxSyncWindow, selectedValue); } } - mCurrentInboxIndex = -1; + mSelectedPopupRadioButtonIndex = -1; +} + +/*! +Handles incoming secure connection modifications. + +\param action Action that determines whether user clicked OK or cancel. +*/ +void NmIpsSettingsPlugin::incomingSecureConnectionModified(HbAction *action) +{ + if(action->text() == hbTrId("txt_common_button_ok") && + mSelectedPopupRadioButtonIndex >=0) { + mSettingsHelper->incomingSecureConnectionItemChange(mSelectedPopupRadioButtonIndex); + } + mSelectedPopupRadioButtonIndex = -1; } + /*! -Handles mail in inbox modifications. +Handles incoming port modifications. + +\param action Action that determines whether user clicked OK or cancel. +*/ +void NmIpsSettingsPlugin::incomingPortModified(HbAction *action) +{ + if ((action->text() == hbTrId("txt_common_button_ok")) && + (mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsDefault || + mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsUserDefined)) { + mSettingsHelper->incomingPortChange(mSelectedPopupRadioButtonIndex); + } + mSelectedPopupRadioButtonIndex = -1; +} + +/*! +Handles outgoing secure connection modifications. + +\param action Action that determines whether user clicked OK or cancel. +*/ +void NmIpsSettingsPlugin::outgoingSecureConnectionModified(HbAction *action) +{ + if (action->text() == hbTrId("txt_common_button_ok") && + mSelectedPopupRadioButtonIndex >= 0) { + mSettingsHelper->outgoingSecureConnectionItemChange(mSelectedPopupRadioButtonIndex); + } + mSelectedPopupRadioButtonIndex = -1; +} -Index Value -0 50 -1 100 -2 500 -3 All +/*! +Handles outgoing port modifications. + +\param action Action that determines whether user clicked OK or cancel. +*/ +void NmIpsSettingsPlugin::outgoingPortModified(HbAction *action) +{ + if ((action->text() == hbTrId("txt_common_button_ok")) && + (mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsDefault || + mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsUserDefined)) { + mSettingsHelper->outgoingPortChange(mSelectedPopupRadioButtonIndex); + } + mSelectedPopupRadioButtonIndex = -1; +} + +/*! +Handles outgoing authentication modifications. + +\param action Action that determines whether user clicked OK or cancel. +*/ +void NmIpsSettingsPlugin::outgoingAuthenticationModified(HbAction *action) +{ + if (action->text() == hbTrId("txt_common_button_ok") && + mSelectedPopupRadioButtonIndex >= 0) { + mSettingsHelper->outgoingAuthenticationChange(mSelectedPopupRadioButtonIndex); + } + mSelectedPopupRadioButtonIndex = -1; +} + +/*! +Handles folder path modifications. + +\param action Action that determines whether user clicked OK or cancel. +*/ +void NmIpsSettingsPlugin::folderPathModified(HbAction *action) +{ + if ((action->text() == hbTrId("txt_common_button_ok")) && + (mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsDefault || + mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsUserDefined)) { + mSettingsHelper->folderPathChange(mSelectedPopupRadioButtonIndex); + } + mSelectedPopupRadioButtonIndex = -1; +} + +/*! \param index The index value of the selection. */ -void NmIpsSettingsPlugin::inboxSelectionModified(int index) +void NmIpsSettingsPlugin::popupRadioButtonIndexModified(int index) { - mCurrentInboxIndex = index; + mSelectedPopupRadioButtonIndex = index; } Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);