ipsservices/nmipssettings/src/nmipssettingsplugin.cpp
changeset 75 47d84de1c893
parent 65 478bc57ad291
equal deleted inserted replaced
72:64e38f08e49c 75:47d84de1c893
    13 *
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <qplugin.h>
       
    19 #include <QCoreApplication>
    18 #include <QCoreApplication>
    20 #include <QTranslator>
    19 #include <QTranslator>
    21 #include <QScopedPointer>
    20 #include <QScopedPointer>
    22 #include <QLocale>
    21 #include <QLocale>
    23 
    22 
    39 #include "ipssettingkeys.h"
    38 #include "ipssettingkeys.h"
    40 
    39 
    41 #include "nmipssettingscustomitem.h"
    40 #include "nmipssettingscustomitem.h"
    42 #include "nmipssettingslabeledcombobox.h"
    41 #include "nmipssettingslabeledcombobox.h"
    43 
    42 
    44 const QString NmIpsSettingsComboItems("comboItems");
    43 static const QString NmIpsSettingsComboItems("comboItems");
    45 const QString NmIpsSettingsLabelTexts("labelTexts");
    44 static const QString NmIpsSettingsLabelTexts("labelTexts");
    46 const QString NmIpsSettingsItems("items");
    45 static const QString NmIpsSettingsItems("items");
    47 const int NmIpsSettingsReceptionUserDefinedProfileEnabled(1);
    46 static const int NmIpsSettingsReceptionUserDefinedProfileEnabled(1);
    48 
    47 
    49 /*!
    48 /*!
    50     \class NmIpsSettingsPlugin
    49     \class NmIpsSettingsPlugin
    51     \brief The class implements NmSettingsPluginInterface which is an interface
    50     \brief The class implements NmSettingsPluginInterface which is an interface
    52            for NMail settings plug-ins.
    51            for NMail settings plug-ins.
    57 
    56 
    58 /*!
    57 /*!
    59     Constructor of NmIpsSettingsPlugin.
    58     Constructor of NmIpsSettingsPlugin.
    60 */
    59 */
    61 NmIpsSettingsPlugin::NmIpsSettingsPlugin()
    60 NmIpsSettingsPlugin::NmIpsSettingsPlugin()
    62 : mSettingsHelper(0),
    61 : mSettingsHelper(NULL),
    63   mSettingsManager(0),
    62   mSettingsManager(NULL),
    64   mHiddenItem(false),
    63   mHiddenItem(false),
    65   mCurrentInboxIndex(-1)
    64   mSelectedPopupRadioButtonIndex(-1)
    66 {
    65 {
    67     QString lang = QLocale::system().name();
    66     QString lang = QLocale::system().name();
    68     QString path = "Z:/resource/qt/translations/";
    67     QString path = "Z:/resource/qt/translations/";
    69     QString appName = "mailips_";
    68     QString appName = "mailips_";
    70     QString commonName = "common_";
    69     QString commonName = "common_";
    71     
    70 
    72     // Load common strings
    71     // Load common strings
    73 	QScopedPointer<QTranslator> commonTranslator(new QTranslator(this));
    72 	QScopedPointer<QTranslator> commonTranslator(new QTranslator(this));
    74     commonTranslator->load(commonName + lang, path);
    73     commonTranslator->load(commonName + lang, path);
    75     QCoreApplication::installTranslator(commonTranslator.data());
    74     QCoreApplication::installTranslator(commonTranslator.data());
    76     (void)commonTranslator.take();  
    75     (void)commonTranslator.take();
    77     
    76 
    78     // Load IPS settings specific strings
    77     // Load IPS settings specific strings
    79 	QScopedPointer<QTranslator> translator(new QTranslator(this));
    78 	QScopedPointer<QTranslator> translator(new QTranslator(this));
    80     translator->load(appName + lang, path);
    79     translator->load(appName + lang, path);
    81     QCoreApplication::installTranslator(translator.data());
    80     QCoreApplication::installTranslator(translator.data());
    82     (void)translator.take();
    81     (void)translator.take();
   104     // populateModel is called each time when a new settings view is created and this
   103     // populateModel is called each time when a new settings view is created and this
   105     // plugin is destructed only after the mail settings is exited, so
   104     // plugin is destructed only after the mail settings is exited, so
   106     // SettingsManager and SettingsHelper needs to be deleted.
   105     // SettingsManager and SettingsHelper needs to be deleted.
   107     delete mSettingsManager;
   106     delete mSettingsManager;
   108     delete mSettingsHelper;
   107     delete mSettingsHelper;
   109     mSettingsHelper = 0;
   108     mSettingsHelper = NULL;
   110     mSettingsManager = NmIpsSettingsManagerFactory::createSettingManager(mailboxId);
   109     mSettingsManager = NmIpsSettingsManagerFactory::createSettingManager(mailboxId);
   111 
   110 
   112     bool result(false);
   111     bool result(false);
   113 
   112 
   114     // This plugin is only used when the mailbox is a IMAP or POP3 account.
   113     // This plugin is only used when the mailbox is a IMAP or POP3 account.
   115     // Settings manager object is valid if the mailboxId is IMAP or POP3 account.
   114     // Settings manager object is valid if the mailboxId is IMAP or POP3 account.
   116     if (mSettingsManager) {
   115     if (mSettingsManager) {
   117         // Turns AlwaysOnline OFF
   116         // Turns AlwaysOnline OFF
   118         setAlwaysOnlineState(EServerAPIEmailTurnOff, mailboxId);
   117         setAlwaysOnlineState(EServerAPIEmailTurnOff, mailboxId);
   119         
   118 
   120         // Store model and form pointers.
   119         // Store model and form pointers.
   121         mModel = &model;
   120         mModel = &model;
   122         mForm = &form;
   121         mForm = &form;
   123         
   122 
   124         // Create settings helper.
   123         // Create settings helper.
   125         mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager, form, model);
   124         mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager, form, model);
   126 
   125 
   127         connect(mSettingsHelper,
   126         connect(mSettingsHelper,
   128                 SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   127                 SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   134         connect(mSettingsHelper, SIGNAL(goOffline(const NmId &)),
   133         connect(mSettingsHelper, SIGNAL(goOffline(const NmId &)),
   135                 this, SIGNAL(goOffline(const NmId &)));
   134                 this, SIGNAL(goOffline(const NmId &)));
   136 
   135 
   137         connect(mSettingsHelper, SIGNAL(createUserDefinedMode()),
   136         connect(mSettingsHelper, SIGNAL(createUserDefinedMode()),
   138                 this, SLOT(createUserDefinedMode()));
   137                 this, SLOT(createUserDefinedMode()));
   139         
   138 
   140         // Get the value if some ui items need to be hidden.
   139         // Get the value if some ui items need to be hidden.
   141         QVariant data;
   140         QVariant data;
   142         mSettingsManager->readSetting(IpsServices::UserNameHidden, data);
   141         mSettingsManager->readSetting(IpsServices::UserNameHidden, data);
   143         mHiddenItem = data.toBool();
   142         mHiddenItem = data.toBool();
   144         // Add items to the model.
   143         // Add items to the model.
   153 */
   152 */
   154 void NmIpsSettingsPlugin::aboutToClose()
   153 void NmIpsSettingsPlugin::aboutToClose()
   155 {
   154 {
   156     QVariant profileIndex;
   155     QVariant profileIndex;
   157     const NmId mailboxId = mSettingsManager->mailboxId();
   156     const NmId mailboxId = mSettingsManager->mailboxId();
   158     
   157 
   159 	mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex);
   158 	mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex);
   160 	if ((mSettingsHelper->isOffline()) && (profileIndex.toInt() != IpsServices::EmailSyncProfileManualFetch)) {
   159 	if ((mSettingsHelper->isOffline()) && (profileIndex.toInt() != IpsServices::EmailSyncProfileManualFetch)) {
   161 		emit goOnline(mailboxId);
   160 		emit goOnline(mailboxId);
   162 	}
   161 	}
   163 	
   162 
   164 	// Turns AlwaysOnline ON
   163 	// Turns AlwaysOnline ON
   165 	setAlwaysOnlineState(EServerAPIEmailTurnOn, mailboxId);
   164 	setAlwaysOnlineState(EServerAPIEmailTurnOn, mailboxId);
   166 }
   165 }
   167 
   166 
   168 /*!
   167 /*!
   298     }
   297     }
   299     infoItem->setContentWidgetData(NmIpsSettingsComboItems, modeList);
   298     infoItem->setContentWidgetData(NmIpsSettingsComboItems, modeList);
   300 
   299 
   301     QStringList infoList;
   300     QStringList infoList;
   302     infoList << hbTrId("txt_mailips_list_the_mailbox_is_uptodate_during")           // 0
   301     infoList << hbTrId("txt_mailips_list_the_mailbox_is_uptodate_during")           // 0
   303              << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_every_15")        // 1
   302              << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_every_hour")      // 1
   304              << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_only_by");        // 2
   303              << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_only_by");        // 2
   305 
   304 
   306     // If 'user defined' mode is defined then add 'user defined' explanation to label list.
   305     // If 'user defined' mode is defined then add 'user defined' explanation to label list.
   307     if (userDefineMode.toInt()) {
   306     if (userDefineMode.toInt()) {
   308         infoList << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_as_defin");   // 3
   307         infoList << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_as_defin");   // 3
   328     QStringList showMailItems;
   327     QStringList showMailItems;
   329     showMailItems << HbStringUtil::convertDigits("50")
   328     showMailItems << HbStringUtil::convertDigits("50")
   330                   << HbStringUtil::convertDigits("100")
   329                   << HbStringUtil::convertDigits("100")
   331                   << HbStringUtil::convertDigits("500")
   330                   << HbStringUtil::convertDigits("500")
   332                   << hbTrId("txt_mailips_setlabel_val_all");
   331                   << hbTrId("txt_mailips_setlabel_val_all");
   333     
   332 
   334     showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems);
   333     showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems);
       
   334     showMailInInboxItem->setContentWidgetData("displayMode","popup");
   335     showMailInInboxItem->setEnabled(true);
   335     showMailInInboxItem->setEnabled(true);
   336     item.appendChild(showMailInInboxItem);
   336     item.appendChild(showMailInInboxItem);
   337 
   337 
   338     // Active sync profile connection
   338     // Active sync profile connection
   339     mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
   339     mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
   340         mSettingsHelper, SLOT(receivingScheduleChange(int)));
   340 						 mSettingsHelper, SLOT(receivingScheduleChange(int)));
   341     mForm->addConnection(showMailInInboxItem, SIGNAL(finished(HbAction *)),
   341     mForm->addConnection(showMailInInboxItem, SIGNAL(finished(HbAction *)),
   342            this, SLOT(showMailInInboxModified(HbAction *)));
   342 						 this, SLOT(showMailInInboxModified(HbAction *)));
   343     mForm->addConnection(showMailInInboxItem, SIGNAL(itemSelected(int)),
   343     mForm->addConnection(showMailInInboxItem, SIGNAL(itemSelected(int)),
   344            this, SLOT(inboxSelectionModified(int)));
   344 						 this, SLOT(popupRadioButtonIndexModified(int)));
   345     
   345 
   346     // Must be called manually here, because the signal->slot connection set above using
   346     // Must be called manually here, because the signal->slot connection set above using
   347     // HbDataForm::addConnection() is actually established AFTER the properties have first been
   347     // HbDataForm::addConnection() is actually established AFTER the properties have first been
   348     // set to the widget, causing the first currentIndexChanged signal not to reach
   348     // set to the widget, causing the first currentIndexChanged signal not to reach
   349     // NmIpsSettingsHelper::receivingScheduleChange().
   349     // NmIpsSettingsHelper::receivingScheduleChange().
   350     mSettingsHelper->receivingScheduleChange(profileIndex.toInt());
   350     mSettingsHelper->receivingScheduleChange(profileIndex.toInt());
   385     if (mHiddenItem) { // Starred and dimmed.
   385     if (mHiddenItem) { // Starred and dimmed.
   386         usernameItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
   386         usernameItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
   387         usernameItem->setEnabled(false);
   387         usernameItem->setEnabled(false);
   388     }
   388     }
   389     item.appendChild(usernameItem);
   389     item.appendChild(usernameItem);
   390     
   390 
   391     
   391 
   392     // 3. Password
   392     // 3. Password
   393     QVariant password;
   393     QVariant password;
   394     mSettingsManager->readSetting(IpsServices::IncomingPassword, password);
   394     mSettingsManager->readSetting(IpsServices::IncomingPassword, password);
   395     CpSettingFormItemData *passwordItem = new CpSettingFormItemData(
   395     CpSettingFormItemData *passwordItem = new CpSettingFormItemData(
   396         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password"));
   396         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password"));
   417 
   417 
   418 /*!
   418 /*!
   419     Appends the server info items to the group item.
   419     Appends the server info items to the group item.
   420     \param item Reference to the parent group item.
   420     \param item Reference to the parent group item.
   421 */
   421 */
   422 void NmIpsSettingsPlugin::initServerInfoItems(HbDataFormModelItem &item) const
   422 void NmIpsSettingsPlugin::initServerInfoItems(HbDataFormModelItem &item)
   423 {
   423 {
   424     // 1. Incoming mail server address
   424     // 1. Incoming mail server address
   425     QVariant incomingMailServer;
   425     QVariant incomingMailServer;
   426     mSettingsManager->readSetting(IpsServices::IncomingMailServer, incomingMailServer);
   426     mSettingsManager->readSetting(IpsServices::IncomingMailServer, incomingMailServer);
   427     CpSettingFormItemData *incomingMailServerItem = new CpSettingFormItemData(
   427     CpSettingFormItemData *incomingMailServerItem = new CpSettingFormItemData(
   435     if (mHiddenItem) { // Starred and dimmed.
   435     if (mHiddenItem) { // Starred and dimmed.
   436         incomingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
   436         incomingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
   437         incomingMailServerItem->setEnabled(false);
   437         incomingMailServerItem->setEnabled(false);
   438     }
   438     }
   439     item.appendChild(incomingMailServerItem);
   439     item.appendChild(incomingMailServerItem);
   440     
   440 
   441     // 2. Incoming Secure connection
   441     // 2. Incoming Secure connection
   442     CpSettingFormItemData *incomingSecureConnectionItem =
   442     CpSettingFormItemData *incomingSecureConnectionItem =
   443         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   443         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   444             "txt_mailips_setlabel_incoming_security"));
   444             "txt_mailips_setlabel_incoming_security"));
       
   445 
   445     mSettingsHelper->insertContentItem(IpsServices::IncomingSecureSockets, incomingSecureConnectionItem);
   446     mSettingsHelper->insertContentItem(IpsServices::IncomingSecureSockets, incomingSecureConnectionItem);
       
   447 
   446     QStringList showSCItems;
   448     QStringList showSCItems;
   447     showSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   449     showSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   448                 << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   450                 << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   449                 << hbTrId("txt_mailips_setlabel_security_val_off");
   451                 << hbTrId("txt_mailips_setlabel_security_val_off");
       
   452 
   450     incomingSecureConnectionItem->setContentWidgetData(QString("items"), showSCItems);
   453     incomingSecureConnectionItem->setContentWidgetData(QString("items"), showSCItems);
   451     int incomingSecureConnectionItemIndex = 
   454     incomingSecureConnectionItem->setContentWidgetData("displayMode","popup");
       
   455 
       
   456     int incomingSecureConnectionItemIndex =
   452         mSettingsHelper->getCorrectIncomingSecureRadioButtonIndex();
   457         mSettingsHelper->getCorrectIncomingSecureRadioButtonIndex();
   453     incomingSecureConnectionItem->setContentWidgetData(QString("selected"), 
   458     incomingSecureConnectionItem->setContentWidgetData(QString("selected"),
   454                                                        incomingSecureConnectionItemIndex);
   459                                                        incomingSecureConnectionItemIndex);
   455     mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)),             
   460 
   456             mSettingsHelper, SLOT(incomingSecureConnectionItemChange(int)));
   461     mForm->addConnection(incomingSecureConnectionItem, SIGNAL(finished(HbAction *)),
       
   462 						 this, SLOT(incomingSecureConnectionModified(HbAction *)));
       
   463     mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)),
       
   464 						 this, SLOT(popupRadioButtonIndexModified(int)));
       
   465 
   457     if (mHiddenItem) {
   466     if (mHiddenItem) {
   458         incomingSecureConnectionItem->setEnabled(false);
   467         incomingSecureConnectionItem->setEnabled(false);
   459     }
   468     }
   460     item.appendChild(incomingSecureConnectionItem);
   469     item.appendChild(incomingSecureConnectionItem);
   461     
   470 
   462     // 3. Incoming mail server port
   471     // 3. Incoming mail server port
   463     CpSettingFormItemData *incomingPortItem =
   472     CpSettingFormItemData *incomingPortItem =
   464         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   473         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   465             "txt_mailips_setlabel_incoming_port"));
   474             "txt_mailips_setlabel_incoming_port"));
   466     mSettingsHelper->insertContentItem(IpsServices::IncomingPort, incomingPortItem);
   475     mSettingsHelper->insertContentItem(IpsServices::IncomingPort, incomingPortItem);
   467     QStringList incomingPortItems;
   476     QStringList incomingPortItems;
   468     incomingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   477     incomingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   469                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
   478                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
       
   479 
   470     incomingPortItem->setContentWidgetData(QString("items"), incomingPortItems);
   480     incomingPortItem->setContentWidgetData(QString("items"), incomingPortItems);
   471     int incomingPortItemIndex = mSettingsHelper->getCorrectIncomingPortRadioButtonIndex(); 
   481     incomingPortItem->setContentWidgetData("displayMode","popup");
       
   482 
       
   483     int incomingPortItemIndex = mSettingsHelper->getCorrectIncomingPortRadioButtonIndex();
   472     incomingPortItem->setContentWidgetData(QString("selected"), incomingPortItemIndex);
   484     incomingPortItem->setContentWidgetData(QString("selected"), incomingPortItemIndex);
       
   485 
       
   486     mForm->addConnection(incomingPortItem, SIGNAL(finished(HbAction *)),
       
   487    						 this, SLOT(incomingPortModified(HbAction *)));
   473     mForm->addConnection(incomingPortItem, SIGNAL(itemSelected(int)),
   488     mForm->addConnection(incomingPortItem, SIGNAL(itemSelected(int)),
   474         mSettingsHelper, SLOT(incomingPortChange(int)));
   489 					 this, SLOT(popupRadioButtonIndexModified(int)));
       
   490 
   475     if (mHiddenItem) {
   491     if (mHiddenItem) {
   476         incomingPortItem->setEnabled(false);
   492         incomingPortItem->setEnabled(false);
   477     }
   493     }
   478     item.appendChild(incomingPortItem);
   494     item.appendChild(incomingPortItem);
   479     
   495 
   480     // 4. Outgoing mail server address
   496     // 4. Outgoing mail server address
   481     QVariant outgoingMailServer;
   497     QVariant outgoingMailServer;
   482     mSettingsManager->readSetting(IpsServices::OutgoingMailServer, outgoingMailServer);
   498     mSettingsManager->readSetting(IpsServices::OutgoingMailServer, outgoingMailServer);
       
   499 
   483     CpSettingFormItemData *outgoingMailServerItem = new CpSettingFormItemData(
   500     CpSettingFormItemData *outgoingMailServerItem = new CpSettingFormItemData(
   484         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_outgoing_mail_server"));
   501         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_outgoing_mail_server"));
       
   502 
   485     mSettingsHelper->insertContentItem(IpsServices::OutgoingMailServer, outgoingMailServerItem);
   503     mSettingsHelper->insertContentItem(IpsServices::OutgoingMailServer, outgoingMailServerItem);
   486     outgoingMailServerItem->setContentWidgetData(QString("text"), outgoingMailServer);
   504     outgoingMailServerItem->setContentWidgetData(QString("text"), outgoingMailServer);
       
   505 
   487     mForm->addConnection(outgoingMailServerItem, SIGNAL(editingFinished()),
   506     mForm->addConnection(outgoingMailServerItem, SIGNAL(editingFinished()),
   488                          mSettingsHelper, SLOT(saveOutgoingMailServer()));
   507                          mSettingsHelper, SLOT(saveOutgoingMailServer()));
   489     mForm->addConnection(outgoingMailServerItem, SIGNAL(textChanged(QString)),
   508     mForm->addConnection(outgoingMailServerItem, SIGNAL(textChanged(QString)),
   490                          mSettingsHelper, SLOT(outgoingMailServerTextChange(QString)));
   509                          mSettingsHelper, SLOT(outgoingMailServerTextChange(QString)));
       
   510 
   491     if (mHiddenItem) {// Starred and dimmed.
   511     if (mHiddenItem) {// Starred and dimmed.
   492         outgoingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
   512         outgoingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
   493         outgoingMailServerItem->setEnabled(false);
   513         outgoingMailServerItem->setEnabled(false);
   494     }
   514     }
   495     item.appendChild(outgoingMailServerItem);
   515     item.appendChild(outgoingMailServerItem);
   496     
   516 
   497     // 5. Outgoing secure connection
   517     // 5. Outgoing secure connection
   498     CpSettingFormItemData *outgoingSecureConnectionItem =
   518     CpSettingFormItemData *outgoingSecureConnectionItem =
   499         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   519         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   500             "txt_mailips_setlabel_outgoing_security"));
   520             "txt_mailips_setlabel_outgoing_security"));
   501     mSettingsHelper->insertContentItem(IpsServices::OutgoingSecureSockets, outgoingSecureConnectionItem);
   521     mSettingsHelper->insertContentItem(IpsServices::OutgoingSecureSockets, outgoingSecureConnectionItem);
   502     QStringList outgoingShowSCItems;
   522     QStringList outgoingShowSCItems;
   503     outgoingShowSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   523     outgoingShowSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   504                         << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   524                         << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   505                         << hbTrId("txt_mailips_setlabel_security_val_off");
   525                         << hbTrId("txt_mailips_setlabel_security_val_off");
       
   526 
   506     outgoingSecureConnectionItem->setContentWidgetData(QString("items"), outgoingShowSCItems);
   527     outgoingSecureConnectionItem->setContentWidgetData(QString("items"), outgoingShowSCItems);
   507     int outgoingSecureConnectionItemIndex = 
   528     outgoingSecureConnectionItem->setContentWidgetData("displayMode","popup");
       
   529 
       
   530     int outgoingSecureConnectionItemIndex =
   508         mSettingsHelper->getCorrectOutgoingSecureRadioButtonIndex();
   531         mSettingsHelper->getCorrectOutgoingSecureRadioButtonIndex();
   509     outgoingSecureConnectionItem->setContentWidgetData(QString("selected"), 
   532     outgoingSecureConnectionItem->setContentWidgetData(QString("selected"),
   510                                                        outgoingSecureConnectionItemIndex);
   533                                                        outgoingSecureConnectionItemIndex);
   511     mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)),             
   534 
   512             mSettingsHelper, SLOT(outgoingSecureConnectionItemChange(int)));
   535     mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(finished(HbAction *)),
       
   536       				     this, SLOT(outgoingSecureConnectionModified(HbAction *)));
       
   537     mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)),
       
   538 				         this, SLOT(popupRadioButtonIndexModified(int)));
       
   539 
   513     if (mHiddenItem) {
   540     if (mHiddenItem) {
   514         outgoingSecureConnectionItem->setEnabled(false);
   541         outgoingSecureConnectionItem->setEnabled(false);
   515     }
   542     }
   516     item.appendChild(outgoingSecureConnectionItem);
   543     item.appendChild(outgoingSecureConnectionItem);
   517 
   544 
   521             "txt_mailips_setlabel_outgoing_port"));
   548             "txt_mailips_setlabel_outgoing_port"));
   522     mSettingsHelper->insertContentItem(IpsServices::OutgoingPort, outgoingPortItem);
   549     mSettingsHelper->insertContentItem(IpsServices::OutgoingPort, outgoingPortItem);
   523     QStringList outgoingPortItems;
   550     QStringList outgoingPortItems;
   524     outgoingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   551     outgoingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   525                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
   552                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
       
   553 
   526     outgoingPortItem->setContentWidgetData(QString("items"), outgoingPortItems);
   554     outgoingPortItem->setContentWidgetData(QString("items"), outgoingPortItems);
   527     int outgoingPortItemIndex = mSettingsHelper->getCorrectOutgoingPortRadioButtonIndex(); 
   555     outgoingPortItem->setContentWidgetData("displayMode","popup");
       
   556 
       
   557     int outgoingPortItemIndex = mSettingsHelper->getCorrectOutgoingPortRadioButtonIndex();
   528     outgoingPortItem->setContentWidgetData(QString("selected"), outgoingPortItemIndex);
   558     outgoingPortItem->setContentWidgetData(QString("selected"), outgoingPortItemIndex);
   529     mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)),
   559 
   530         mSettingsHelper, SLOT(outgoingPortChange(int)));
   560     mForm->addConnection(outgoingPortItem, SIGNAL(finished(HbAction *)),
       
   561 					     this, SLOT(outgoingPortModified(HbAction *)));
       
   562 	mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)),
       
   563 						 this, SLOT(popupRadioButtonIndexModified(int)));
       
   564 
   531     if (mHiddenItem) {
   565     if (mHiddenItem) {
   532         outgoingPortItem->setEnabled(false);
   566         outgoingPortItem->setEnabled(false);
   533     }
   567     }
   534     item.appendChild(outgoingPortItem);
   568     item.appendChild(outgoingPortItem);
   535     
   569 
   536     // 7. Outgoing authentication.
   570     // 7. Outgoing authentication.
   537     CpSettingFormItemData *outgoingAuthenticationItem =
   571     CpSettingFormItemData *outgoingAuthenticationItem =
   538         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   572         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   539             "txt_mailips_setlabel_outgoing_mail_authentication"));
   573             "txt_mailips_setlabel_outgoing_mail_authentication"));
   540     mSettingsHelper->insertContentItem(IpsServices::SMTPAuthentication, outgoingAuthenticationItem);
   574     mSettingsHelper->insertContentItem(IpsServices::SMTPAuthentication, outgoingAuthenticationItem);
   541     QStringList outgoingAuthenticationItems;
   575     QStringList outgoingAuthenticationItems;
   542     outgoingAuthenticationItems << hbTrId("txt_mailips_setlabel_outgoing_authentication_none")
   576     outgoingAuthenticationItems << hbTrId("txt_mailips_setlabel_outgoing_authentication_none")
   543                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_same")
   577                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_same")
   544                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_user");
   578                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_user");
       
   579 
   545     outgoingAuthenticationItem->setContentWidgetData(QString("items"), outgoingAuthenticationItems);
   580     outgoingAuthenticationItem->setContentWidgetData(QString("items"), outgoingAuthenticationItems);
   546     int outgoingAuthenticationIndex = 
   581     outgoingAuthenticationItem->setContentWidgetData("displayMode","popup");
   547         mSettingsHelper->getCorrectOutgoingAuthenticationRadioButtonIndex(); 
   582 
       
   583     int outgoingAuthenticationIndex =
       
   584         mSettingsHelper->getCorrectOutgoingAuthenticationRadioButtonIndex();
   548     outgoingAuthenticationItem->setContentWidgetData(QString("selected"), outgoingAuthenticationIndex);
   585     outgoingAuthenticationItem->setContentWidgetData(QString("selected"), outgoingAuthenticationIndex);
   549     mForm->addConnection(outgoingAuthenticationItem, SIGNAL(itemSelected(int)),
   586 
   550         mSettingsHelper, SLOT(outgoingAuthenticationChange(int)));
   587     mForm->addConnection(outgoingAuthenticationItem, SIGNAL(finished(HbAction *)),
       
   588     					 this, SLOT(outgoingAuthenticationModified(HbAction *)));
       
   589 	mForm->addConnection(outgoingAuthenticationItem, SIGNAL(itemSelected(int)),
       
   590 						 this, SLOT(popupRadioButtonIndexModified(int)));
       
   591 
   551     item.appendChild(outgoingAuthenticationItem);
   592     item.appendChild(outgoingAuthenticationItem);
   552     if (mHiddenItem) {
   593     if (mHiddenItem) {
   553         outgoingAuthenticationItem->setEnabled(false);
   594         outgoingAuthenticationItem->setEnabled(false);
   554     }
   595     }
   555     if (outgoingAuthenticationIndex == IpsServices::EMailAuthUserAuthentication) {
   596     if (outgoingAuthenticationIndex == IpsServices::EMailAuthUserAuthentication) {
   556         mSettingsHelper->createServerInfoGroupDynamicItems(mHiddenItem);
   597         mSettingsHelper->createServerInfoGroupDynamicItems(mHiddenItem);
   557     }
   598     }
   558     
   599 
   559     // 8. Folder path
   600     // 8. Folder path
   560     // This item is only shown for IMAP4 account.
   601     // This item is only shown for IMAP4 account.
   561     if (mSettingsManager->accountType() == IpsServices::EMailImap) {
   602     if (mSettingsManager->accountType() == IpsServices::EMailImap) {
   562         CpSettingFormItemData *folderPathItem =
   603         CpSettingFormItemData *folderPathItem =
   563             new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   604             new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   564                 "txt_mailips_setlabel_folder_path"));
   605                 "txt_mailips_setlabel_folder_path"));
   565         mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem);    
   606         mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem);
   566         QStringList folderPathItems;
   607         QStringList folderPathItems;
   567         folderPathItems << hbTrId("txt_mailips_setlabel_folder_path_val_default")
   608         folderPathItems << hbTrId("txt_mailips_setlabel_folder_path_val_default")
   568                         << hbTrId("txt_mailips_setlabel_folder_path_user_defined");
   609                         << hbTrId("txt_mailips_setlabel_folder_path_user_defined");
       
   610 
   569         folderPathItem->setContentWidgetData(QString("items"), folderPathItems);
   611         folderPathItem->setContentWidgetData(QString("items"), folderPathItems);
       
   612         folderPathItem->setContentWidgetData("displayMode","popup");
       
   613 
   570         int folderPathItemIndex = mSettingsHelper->getCorrectFolderPathRadioButtonIndex();
   614         int folderPathItemIndex = mSettingsHelper->getCorrectFolderPathRadioButtonIndex();
   571         folderPathItem->setContentWidgetData(QString("selected"), folderPathItemIndex);
   615         folderPathItem->setContentWidgetData(QString("selected"), folderPathItemIndex);
   572         mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)),
   616 
   573             mSettingsHelper, SLOT(folderPathChange(int)));
   617         mForm->addConnection(folderPathItem, SIGNAL(finished(HbAction *)),
       
   618             			     this, SLOT(folderPathModified(HbAction *)));
       
   619 		mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)),
       
   620 							 this, SLOT(popupRadioButtonIndexModified(int)));
       
   621 
   574         item.appendChild(folderPathItem);
   622         item.appendChild(folderPathItem);
   575     }
   623     }
   576 }
   624 }
   577 
   625 
   578 /*!
   626 /*!
   583 void NmIpsSettingsPlugin::setAlwaysOnlineState(TAlwaysOnlineServerAPICommands command,
   631 void NmIpsSettingsPlugin::setAlwaysOnlineState(TAlwaysOnlineServerAPICommands command,
   584                                                NmId mailboxId) const
   632                                                NmId mailboxId) const
   585 {
   633 {
   586     RAlwaysOnlineClientSession aosession;
   634     RAlwaysOnlineClientSession aosession;
   587     TInt err(aosession.Connect());
   635     TInt err(aosession.Connect());
   588     
   636 
   589     if (err == KErrNone) {
   637     if (err == KErrNone) {
   590         TPckgBuf<TMsvId> mboxBuf(mailboxId.id32());
   638         TPckgBuf<TMsvId> mboxBuf(mailboxId.id32());
   591         
   639 
   592         TRAP_IGNORE(aosession.RelayCommandL(command, mboxBuf));
   640         TRAP_IGNORE(aosession.RelayCommandL(command, mboxBuf));
   593     }
   641     }
   594     
   642 
   595     aosession.Close();
   643     aosession.Close();
   596 }
   644 }
   597 
   645 
   598 /*!
   646 /*!
   599     Creates user defined mode if not already exist.
   647     Creates user defined mode if not already exist.
   637 }
   685 }
   638 
   686 
   639 /*!
   687 /*!
   640 Handles mail in inbox modifications.
   688 Handles mail in inbox modifications.
   641 
   689 
       
   690 Index   Value
       
   691 0       50
       
   692 1       100
       
   693 2       500
       
   694 3       All
       
   695 
   642 \param action Action that determines whether user clicked OK or cancel.
   696 \param action Action that determines whether user clicked OK or cancel.
   643 */
   697 */
   644 void NmIpsSettingsPlugin::showMailInInboxModified(HbAction *action)
   698 void NmIpsSettingsPlugin::showMailInInboxModified(HbAction *action)
   645 {
   699 {
   646     if ((action->text() == hbTrId("txt_common_button_ok"))
   700     if ((action->text() == hbTrId("txt_common_button_ok"))
   647             && (mCurrentInboxIndex >=0 && mCurrentInboxIndex <=3)) {
   701             && (mSelectedPopupRadioButtonIndex >=0 && mSelectedPopupRadioButtonIndex <=3)) {
   648         int conversionTable[] = { 50, 100, 500, 0 };
   702         int conversionTable[] = { 50, 100, 500, 0 };
   649         int selectedValue(conversionTable[mCurrentInboxIndex]);
   703         int selectedValue(conversionTable[mSelectedPopupRadioButtonIndex]);
   650         
   704 
   651         QVariant previouslySelectedValue;
   705         QVariant previouslySelectedValue;
   652         mSettingsManager->readSetting(IpsServices::ReceptionInboxSyncWindow, previouslySelectedValue);
   706         mSettingsManager->readSetting(IpsServices::ReceptionInboxSyncWindow, previouslySelectedValue);
   653         if (previouslySelectedValue.toInt() != selectedValue) {
   707         if (previouslySelectedValue.toInt() != selectedValue) {
   654             mSettingsHelper->handleReceivingScheduleSettingChange(
   708             mSettingsHelper->handleReceivingScheduleSettingChange(
   655                 IpsServices::ReceptionInboxSyncWindow, selectedValue);
   709                 IpsServices::ReceptionInboxSyncWindow, selectedValue);
   656         }
   710         }
   657     }
   711     }
   658     mCurrentInboxIndex = -1;
   712     mSelectedPopupRadioButtonIndex = -1;
   659 }
   713 }
   660 /*!
   714 
   661 Handles mail in inbox modifications.
   715 /*!
   662 
   716 Handles incoming secure connection modifications.
   663 Index   Value
   717 
   664 0       50
   718 \param action Action that determines whether user clicked OK or cancel.
   665 1       100
   719 */
   666 2       500
   720 void NmIpsSettingsPlugin::incomingSecureConnectionModified(HbAction *action)
   667 3       All
   721 {
       
   722     if(action->text() == hbTrId("txt_common_button_ok") &&
       
   723        mSelectedPopupRadioButtonIndex >=0) {
       
   724        mSettingsHelper->incomingSecureConnectionItemChange(mSelectedPopupRadioButtonIndex);
       
   725     }
       
   726     mSelectedPopupRadioButtonIndex = -1;
       
   727 }
       
   728 
       
   729 /*!
       
   730 Handles incoming port modifications.
       
   731 
       
   732 \param action Action that determines whether user clicked OK or cancel.
       
   733 */
       
   734 void NmIpsSettingsPlugin::incomingPortModified(HbAction *action)
       
   735 {
       
   736 	if ((action->text() == hbTrId("txt_common_button_ok")) &&
       
   737 		(mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsDefault ||
       
   738 		 mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsUserDefined)) {
       
   739 	       mSettingsHelper->incomingPortChange(mSelectedPopupRadioButtonIndex);
       
   740 	    }
       
   741 	mSelectedPopupRadioButtonIndex = -1;
       
   742 }
       
   743 
       
   744 /*!
       
   745 Handles outgoing secure connection modifications.
       
   746 
       
   747 \param action Action that determines whether user clicked OK or cancel.
       
   748 */
       
   749 void NmIpsSettingsPlugin::outgoingSecureConnectionModified(HbAction *action)
       
   750 {
       
   751 	if (action->text() == hbTrId("txt_common_button_ok") &&
       
   752 		mSelectedPopupRadioButtonIndex >= 0) {
       
   753 		       mSettingsHelper->outgoingSecureConnectionItemChange(mSelectedPopupRadioButtonIndex);
       
   754 		}
       
   755 	mSelectedPopupRadioButtonIndex = -1;
       
   756 }
       
   757 
       
   758 /*!
       
   759 Handles outgoing port modifications.
       
   760 
       
   761 \param action Action that determines whether user clicked OK or cancel.
       
   762 */
       
   763 void NmIpsSettingsPlugin::outgoingPortModified(HbAction *action)
       
   764 {
       
   765 	if ((action->text() == hbTrId("txt_common_button_ok")) &&
       
   766 		(mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsDefault ||
       
   767 		 mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsUserDefined)) {
       
   768 	       mSettingsHelper->outgoingPortChange(mSelectedPopupRadioButtonIndex);
       
   769 	    }
       
   770 	mSelectedPopupRadioButtonIndex = -1;
       
   771 }
       
   772 
       
   773 /*!
       
   774 Handles outgoing authentication modifications.
       
   775 
       
   776 \param action Action that determines whether user clicked OK or cancel.
       
   777 */
       
   778 void NmIpsSettingsPlugin::outgoingAuthenticationModified(HbAction *action)
       
   779 {
       
   780 	if (action->text() == hbTrId("txt_common_button_ok") &&
       
   781 		mSelectedPopupRadioButtonIndex >= 0) {
       
   782 	       mSettingsHelper->outgoingAuthenticationChange(mSelectedPopupRadioButtonIndex);
       
   783 	    }
       
   784 	mSelectedPopupRadioButtonIndex = -1;
       
   785 }
       
   786 
       
   787 /*!
       
   788 Handles folder path modifications.
       
   789 
       
   790 \param action Action that determines whether user clicked OK or cancel.
       
   791 */
       
   792 void NmIpsSettingsPlugin::folderPathModified(HbAction *action)
       
   793 {
       
   794 	if ((action->text() == hbTrId("txt_common_button_ok")) &&
       
   795 		(mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsDefault ||
       
   796 		 mSelectedPopupRadioButtonIndex == IpsServices::NmIpsSettingsUserDefined)) {
       
   797 	       mSettingsHelper->folderPathChange(mSelectedPopupRadioButtonIndex);
       
   798 	    }
       
   799 	mSelectedPopupRadioButtonIndex = -1;
       
   800 }
       
   801 
       
   802 /*!
   668 
   803 
   669 \param index The index value of the selection.
   804 \param index The index value of the selection.
   670 */
   805 */
   671 void NmIpsSettingsPlugin::inboxSelectionModified(int index)
   806 void NmIpsSettingsPlugin::popupRadioButtonIndexModified(int index)
   672 {
   807 {
   673     mCurrentInboxIndex = index;
   808     mSelectedPopupRadioButtonIndex = index;
   674 }
   809 }
   675 
   810 
   676 Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);
   811 Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);