ipsservices/nmipssettings/src/nmipssettingsplugin.cpp
branchGCC_SURGE
changeset 55 cdd802add233
parent 54 997a02608b3a
child 51 d845db10c0d4
child 65 478bc57ad291
equal deleted inserted replaced
28:011f79704660 55:cdd802add233
    13 *
    13 *
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <hbdataform.h>
       
    19 #include <hbdataformmodel.h>
       
    20 #include <hbdataformmodelitem.h>
       
    21 #include <hblineedit.h>
       
    22 #include <cpsettingformitemdata.h>
       
    23 #include <qplugin.h>
    18 #include <qplugin.h>
    24 #include <QCoreApplication>
    19 #include <QCoreApplication>
    25 #include <QTranslator>
    20 #include <QTranslator>
    26 #include <QScopedPointer>
    21 #include <QScopedPointer>
    27 #include <QLocale>
    22 #include <QLocale>
       
    23 
    28 #include <HbStringUtil>
    24 #include <HbStringUtil>
       
    25 #include <HbDataForm>
       
    26 #include <HbDataFormModel>
       
    27 #include <HbDataFormModelItem>
       
    28 #include <HbLineEdit>
       
    29 
       
    30 #include <cpsettingformitemdata.h>
    29 
    31 
    30 #include "nmipssettingsplugin.h"
    32 #include "nmipssettingsplugin.h"
    31 #include "nmipssettingshelper.h"
    33 #include "nmipssettingshelper.h"
    32 #include "nmipssettingsmanagerbase.h"
    34 #include "nmipssettingsmanagerbase.h"
    33 #include "nmipssettingsmanagerfactory.h"
    35 #include "nmipssettingsmanagerfactory.h"
    39 #include "nmipssettingslabeledcombobox.h"
    41 #include "nmipssettingslabeledcombobox.h"
    40 
    42 
    41 const QString NmIpsSettingsComboItems("comboItems");
    43 const QString NmIpsSettingsComboItems("comboItems");
    42 const QString NmIpsSettingsLabelTexts("labelTexts");
    44 const QString NmIpsSettingsLabelTexts("labelTexts");
    43 const QString NmIpsSettingsItems("items");
    45 const QString NmIpsSettingsItems("items");
       
    46 const int NmIpsSettingsReceptionUserDefinedProfileEnabled(1);
    44 
    47 
    45 /*!
    48 /*!
    46     \class NmIpsSettingsPlugin
    49     \class NmIpsSettingsPlugin
    47     \brief The class implements NmSettingsPluginInterface which is an interface
    50     \brief The class implements NmSettingsPluginInterface which is an interface
    48            for NMail settings plug-ins.
    51            for NMail settings plug-ins.
    54 /*!
    57 /*!
    55     Constructor of NmIpsSettingsPlugin.
    58     Constructor of NmIpsSettingsPlugin.
    56 */
    59 */
    57 NmIpsSettingsPlugin::NmIpsSettingsPlugin()
    60 NmIpsSettingsPlugin::NmIpsSettingsPlugin()
    58 : mSettingsHelper(0),
    61 : mSettingsHelper(0),
    59   mSettingsManager(0)
    62   mSettingsManager(0),
       
    63   mHiddenItem(false)
    60 {
    64 {
    61     QString lang = QLocale::system().name();
    65     QString lang = QLocale::system().name();
    62     QString path = "Z:/resource/qt/translations/";
    66     QString path = "Z:/resource/qt/translations/";
    63     QString appName = "mailips_";
    67     QString appName = "mailips_";
    64     QString commonName = "common_";
    68     QString commonName = "common_";
    65     
    69     
    66 
       
    67     // Load common strings
    70     // Load common strings
    68 	QScopedPointer<QTranslator> commonTranslator(new QTranslator(this));
    71 	QScopedPointer<QTranslator> commonTranslator(new QTranslator(this));
    69     commonTranslator->load(commonName + lang, path);
    72     commonTranslator->load(commonName + lang, path);
    70     QCoreApplication::installTranslator(commonTranslator.data());
    73     QCoreApplication::installTranslator(commonTranslator.data());
    71     (void)commonTranslator.take();  
    74     (void)commonTranslator.take();  
    94     \return <code>true</code> if plug-in contains certain mailbox otherwise <code>false</code>
    97     \return <code>true</code> if plug-in contains certain mailbox otherwise <code>false</code>
    95 */
    98 */
    96 bool NmIpsSettingsPlugin::populateModel(HbDataFormModel &model,
    99 bool NmIpsSettingsPlugin::populateModel(HbDataFormModel &model,
    97     HbDataForm &form, const NmId &mailboxId)
   100     HbDataForm &form, const NmId &mailboxId)
    98 {
   101 {
    99     // Store model and form pointers.
       
   100     mModel = &model;
       
   101     mForm = &form;
       
   102 
       
   103     // populateModel is called each time when a new settings view is created and this
   102     // populateModel is called each time when a new settings view is created and this
   104     // plugin is destructed only after the mail settings is exited, so
   103     // plugin is destructed only after the mail settings is exited, so
   105     // SettingsManager and SettingsHelper needs to be deleted.
   104     // SettingsManager and SettingsHelper needs to be deleted.
   106     delete mSettingsManager;
   105     delete mSettingsManager;
   107     delete mSettingsHelper;
   106     delete mSettingsHelper;
   111     bool result(false);
   110     bool result(false);
   112 
   111 
   113     // This plugin is only used when the mailbox is a IMAP or POP3 account.
   112     // This plugin is only used when the mailbox is a IMAP or POP3 account.
   114     // Settings manager object is valid if the mailboxId is IMAP or POP3 account.
   113     // Settings manager object is valid if the mailboxId is IMAP or POP3 account.
   115     if (mSettingsManager) {
   114     if (mSettingsManager) {
       
   115         // Turns AlwaysOnline OFF
       
   116         setAlwaysOnlineState(EServerAPIEmailTurnOff, mailboxId);
       
   117         
       
   118         // Store model and form pointers.
       
   119         mModel = &model;
       
   120         mForm = &form;
       
   121         
   116         // Create settings helper.
   122         // Create settings helper.
   117         mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager, form, model);
   123         mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager, form, model);
   118 
   124 
   119         connect(mSettingsHelper,
   125         connect(mSettingsHelper,
   120                 SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   126                 SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   126         connect(mSettingsHelper, SIGNAL(goOffline(const NmId &)),
   132         connect(mSettingsHelper, SIGNAL(goOffline(const NmId &)),
   127                 this, SIGNAL(goOffline(const NmId &)));
   133                 this, SIGNAL(goOffline(const NmId &)));
   128 
   134 
   129         connect(mSettingsHelper, SIGNAL(createUserDefinedMode()),
   135         connect(mSettingsHelper, SIGNAL(createUserDefinedMode()),
   130                 this, SLOT(createUserDefinedMode()));
   136                 this, SLOT(createUserDefinedMode()));
   131 
   137         
       
   138         // Get the value if some ui items need to be hidden.
       
   139         QVariant data;
       
   140         mSettingsManager->readSetting(IpsServices::UserNameHidden, data);
       
   141         mHiddenItem = data.toBool();
   132         // Add items to the model.
   142         // Add items to the model.
   133         initGroupItems();
   143         initGroupItems();
   134         result = true;
   144         result = true;
   135     }
   145     }
   136     
       
   137     return result;
   146     return result;
   138 }
   147 }
   139 
   148 
   140 /*!
   149 /*!
   141     This slot can be used in cases when plugin needs to handle stuff before settingsview is closed.
   150     This slot can be used in cases when plugin needs to handle stuff before settingsview is closed.
   142 */
   151 */
   143 void NmIpsSettingsPlugin::aboutToClose()
   152 void NmIpsSettingsPlugin::aboutToClose()
   144 {
   153 {
   145     QVariant profileIndex;
   154     QVariant profileIndex;
       
   155     const NmId mailboxId = mSettingsManager->mailboxId();
       
   156     
   146 	mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex);
   157 	mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex);
   147 	if ((mSettingsHelper->isOffline()) && (profileIndex.toInt() != IpsServices::EmailSyncProfileManualFetch)) {
   158 	if ((mSettingsHelper->isOffline()) && (profileIndex.toInt() != IpsServices::EmailSyncProfileManualFetch)) {
   148 		emit goOnline(mSettingsManager->mailboxId());
   159 		emit goOnline(mailboxId);
   149 	}
   160 	}
       
   161 	
       
   162 	// Turns AlwaysOnline ON
       
   163 	setAlwaysOnlineState(EServerAPIEmailTurnOn, mailboxId);
   150 }
   164 }
   151 
   165 
   152 /*!
   166 /*!
   153     Appends the group items to the model.
   167     Appends the group items to the model.
   154 */
   168 */
   201     Appends the preferences items to the group item.
   215     Appends the preferences items to the group item.
   202     \param item Reference to the parent group item.
   216     \param item Reference to the parent group item.
   203 */
   217 */
   204 void NmIpsSettingsPlugin::initPreferenceItems(HbDataFormModelItem &item) const
   218 void NmIpsSettingsPlugin::initPreferenceItems(HbDataFormModelItem &item) const
   205 {
   219 {
   206     // 1. My Name
   220     // 1. Connection
       
   221     QVariant destId;
       
   222     mSettingsManager->readSetting(IpsServices::Connection, destId);
       
   223     QString destName(mSettingsHelper->destinationNameFromIdentifier(destId.toUInt()));
       
   224     HbDataFormModelItem::DataItemType buttonItem =
       
   225         static_cast<HbDataFormModelItem::DataItemType>(
       
   226             HbDataFormModelItem::CustomItemBase + 2);
       
   227     CpSettingFormItemData *connectionButtonItem = new CpSettingFormItemData(buttonItem,
       
   228         hbTrId("txt_mailips_setlabel_connection"));
       
   229     connectionButtonItem->setContentWidgetData(QString("text"), destName);
       
   230     mSettingsHelper->insertContentItem(IpsServices::Connection, connectionButtonItem);
       
   231     mForm->addConnection(connectionButtonItem, SIGNAL(clicked()),
       
   232                          mSettingsHelper, SLOT(connectionButtonPress()));
       
   233     item.appendChild(connectionButtonItem);
       
   234 
       
   235     // 2. My Name
   207     QVariant myName;
   236     QVariant myName;
   208     mSettingsManager->readSetting(IpsServices::EmailAlias, myName);
   237     mSettingsManager->readSetting(IpsServices::EmailAlias, myName);
   209     CpSettingFormItemData *myNameItem = new CpSettingFormItemData(
   238     CpSettingFormItemData *myNameItem = new CpSettingFormItemData(
   210         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_my_name"));
   239         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_my_name"));
   211     mSettingsHelper->insertContentItem(IpsServices::EmailAlias, myNameItem);
   240     mSettingsHelper->insertContentItem(IpsServices::EmailAlias, myNameItem);
   214                          mSettingsHelper, SLOT(saveMyName()));
   243                          mSettingsHelper, SLOT(saveMyName()));
   215     mForm->addConnection(myNameItem, SIGNAL(textChanged(QString)),
   244     mForm->addConnection(myNameItem, SIGNAL(textChanged(QString)),
   216                          mSettingsHelper, SLOT(myNameTextChange(QString)));
   245                          mSettingsHelper, SLOT(myNameTextChange(QString)));
   217     item.appendChild(myNameItem);
   246     item.appendChild(myNameItem);
   218 
   247 
   219     // 2. Mailbox Name
   248     // 3. Mailbox Name
   220     QVariant mailboxName;
   249     QVariant mailboxName;
   221     mSettingsManager->readSetting(IpsServices::MailboxName, mailboxName);
   250     mSettingsManager->readSetting(IpsServices::MailboxName, mailboxName);
   222     CpSettingFormItemData *mailboxNameItem = new CpSettingFormItemData(
   251     CpSettingFormItemData *mailboxNameItem = new CpSettingFormItemData(
   223         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_mailbox_name"));
   252         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_mailbox_name"));
   224     mSettingsHelper->insertContentItem(IpsServices::MailboxName, mailboxNameItem);
   253     mSettingsHelper->insertContentItem(IpsServices::MailboxName, mailboxNameItem);
   290         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   319         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   291             "txt_mailips_setlabel_show_mail_in_inbox"));
   320             "txt_mailips_setlabel_show_mail_in_inbox"));
   292 
   321 
   293     mSettingsHelper->insertContentItem(IpsServices::ReceptionInboxSyncWindow, showMailInInboxItem);
   322     mSettingsHelper->insertContentItem(IpsServices::ReceptionInboxSyncWindow, showMailInInboxItem);
   294 
   323 
       
   324     // If changes are made to showMailItems, conversion table in
       
   325     // showMailInInboxModified method needs to be updated also.
   295     QStringList showMailItems;
   326     QStringList showMailItems;
   296     showMailItems << HbStringUtil::convertDigits("50")
   327     showMailItems << HbStringUtil::convertDigits("50")
   297                   << HbStringUtil::convertDigits("100")
   328                   << HbStringUtil::convertDigits("100")
   298                   << HbStringUtil::convertDigits("500")
   329                   << HbStringUtil::convertDigits("500")
   299                   << hbTrId("txt_mailips_setlabel_val_all");
   330                   << hbTrId("txt_mailips_setlabel_val_all");
   300     
   331     
   301 
       
   302     QList<QVariant> showMailItemValues;
       
   303     showMailItemValues << 50
       
   304                        << 100
       
   305                        << 500
       
   306                        << 0;
       
   307     
       
   308     QVariant value(showMailItemValues);
       
   309     showMailInInboxItem->setData(HbDataFormModelItem::DescriptionRole + 1, value);
       
   310     showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems);
   332     showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems);
   311     showMailInInboxItem->setEnabled(true);
   333     showMailInInboxItem->setEnabled(true);
   312     item.appendChild(showMailInInboxItem);
   334     item.appendChild(showMailInInboxItem);
   313 
   335 
   314     // Active sync profile connection
   336     // Active sync profile connection
   315     mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
   337     mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
   316         mSettingsHelper, SLOT(receivingScheduleChange(int)));
   338         mSettingsHelper, SLOT(receivingScheduleChange(int)));
   317 
   339 
   318     mForm->addConnection(showMailInInboxItem, SIGNAL(itemSelected(int)),
   340     mForm->addConnection(showMailInInboxItem, SIGNAL(valueChanged(QPersistentModelIndex, QVariant)),
   319         this, SLOT(showMailInInboxModified(int)));
   341         this, SLOT(showMailInInboxModified(QPersistentModelIndex, QVariant)));
   320 
   342 
   321     // Must be called manually here, because the signal->slot connection set above using
   343     // Must be called manually here, because the signal->slot connection set above using
   322     // HbDataForm::addConnection() is actually established AFTER the properties have first been
   344     // HbDataForm::addConnection() is actually established AFTER the properties have first been
   323     // set to the widget, causing the first currentIndexChanged signal not to reach
   345     // set to the widget, causing the first currentIndexChanged signal not to reach
   324     // NmIpsSettingsHelper::receivingScheduleChange().
   346     // NmIpsSettingsHelper::receivingScheduleChange().
   355     usernameItem->setContentWidgetData(QString("text"), username);
   377     usernameItem->setContentWidgetData(QString("text"), username);
   356     mForm->addConnection(usernameItem, SIGNAL(editingFinished()),
   378     mForm->addConnection(usernameItem, SIGNAL(editingFinished()),
   357                          mSettingsHelper, SLOT(saveIncomingUserName()));
   379                          mSettingsHelper, SLOT(saveIncomingUserName()));
   358     mForm->addConnection(usernameItem, SIGNAL(textChanged(QString)),
   380     mForm->addConnection(usernameItem, SIGNAL(textChanged(QString)),
   359                          mSettingsHelper, SLOT(incomingUserNameTextChange(QString)));
   381                          mSettingsHelper, SLOT(incomingUserNameTextChange(QString)));
       
   382     if (mHiddenItem) { // Starred and dimmed.
       
   383         usernameItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
       
   384         usernameItem->setEnabled(false);
       
   385     }
   360     item.appendChild(usernameItem);
   386     item.appendChild(usernameItem);
   361 
   387     
       
   388     
   362     // 3. Password
   389     // 3. Password
   363     QVariant password;
   390     QVariant password;
   364     mSettingsManager->readSetting(IpsServices::IncomingPassword, password);
   391     mSettingsManager->readSetting(IpsServices::IncomingPassword, password);
   365     CpSettingFormItemData *passwordItem = new CpSettingFormItemData(
   392     CpSettingFormItemData *passwordItem = new CpSettingFormItemData(
   366         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password"));
   393         HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password"));
   369     passwordItem->setContentWidgetData(QString("echoMode"), HbLineEdit::PasswordEchoOnEdit);
   396     passwordItem->setContentWidgetData(QString("echoMode"), HbLineEdit::PasswordEchoOnEdit);
   370     mForm->addConnection(passwordItem, SIGNAL(editingFinished()),
   397     mForm->addConnection(passwordItem, SIGNAL(editingFinished()),
   371                          mSettingsHelper, SLOT(saveIncomingPassword()));
   398                          mSettingsHelper, SLOT(saveIncomingPassword()));
   372     item.appendChild(passwordItem);
   399     item.appendChild(passwordItem);
   373 
   400 
   374     // Reply to address
   401     // 4. Reply to address
   375     QVariant replyToAddress;
   402     QVariant replyToAddress;
   376     mSettingsManager->readSetting(IpsServices::ReplyAddress, replyToAddress);
   403     mSettingsManager->readSetting(IpsServices::ReplyAddress, replyToAddress);
   377     CpSettingFormItemData *replyToItem = new CpSettingFormItemData(
   404     CpSettingFormItemData *replyToItem = new CpSettingFormItemData(
   378        HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_reply_to_address"));
   405        HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_reply_to_address"));
   379     mSettingsHelper->insertContentItem(IpsServices::ReplyAddress, replyToItem);
   406     mSettingsHelper->insertContentItem(IpsServices::ReplyAddress, replyToItem);
   400     incomingMailServerItem->setContentWidgetData(QString("text"), incomingMailServer);
   427     incomingMailServerItem->setContentWidgetData(QString("text"), incomingMailServer);
   401     mForm->addConnection(incomingMailServerItem, SIGNAL(editingFinished()),
   428     mForm->addConnection(incomingMailServerItem, SIGNAL(editingFinished()),
   402                          mSettingsHelper, SLOT(saveIncomingMailServer()));
   429                          mSettingsHelper, SLOT(saveIncomingMailServer()));
   403     mForm->addConnection(incomingMailServerItem, SIGNAL(textChanged(QString)),
   430     mForm->addConnection(incomingMailServerItem, SIGNAL(textChanged(QString)),
   404                          mSettingsHelper, SLOT(incomingMailServerTextChange(QString)));
   431                          mSettingsHelper, SLOT(incomingMailServerTextChange(QString)));
       
   432     if (mHiddenItem) { // Starred and dimmed.
       
   433         incomingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
       
   434         incomingMailServerItem->setEnabled(false);
       
   435     }
   405     item.appendChild(incomingMailServerItem);
   436     item.appendChild(incomingMailServerItem);
   406     
   437     
   407     // 2. Incoming Secure connection
   438     // 2. Incoming Secure connection
   408     QVariant secureSockets;
       
   409     QVariant secureSSLWrapper;
       
   410     mSettingsManager->readSetting(IpsServices::IncomingSecureSockets, secureSockets);
       
   411     mSettingsManager->readSetting(IpsServices::IncomingSSLWrapper, secureSSLWrapper);
       
   412     CpSettingFormItemData *incomingSecureConnectionItem =
   439     CpSettingFormItemData *incomingSecureConnectionItem =
   413         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   440         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   414             "txt_mailips_setlabel_incoming_security"));
   441             "txt_mailips_setlabel_incoming_security"));
   415     mSettingsHelper->insertContentItem(IpsServices::IncomingSecureSockets, incomingSecureConnectionItem);
   442     mSettingsHelper->insertContentItem(IpsServices::IncomingSecureSockets, incomingSecureConnectionItem);
   416     QStringList showSCItems;
   443     QStringList showSCItems;
   417     showSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   444     showSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   418                 << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   445                 << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   419                 << hbTrId("txt_mailips_setlabel_security_val_off");
   446                 << hbTrId("txt_mailips_setlabel_security_val_off");
   420 
       
   421     incomingSecureConnectionItem->setContentWidgetData(QString("items"), showSCItems);
   447     incomingSecureConnectionItem->setContentWidgetData(QString("items"), showSCItems);
   422     int incomingSecureConnectionItemIndex = 
   448     int incomingSecureConnectionItemIndex = 
   423         mSettingsHelper->getCorrectSecureRadioButtonIndex(secureSockets, secureSSLWrapper);
   449         mSettingsHelper->getCorrectIncomingSecureRadioButtonIndex();
   424     incomingSecureConnectionItem->setContentWidgetData(QString("selected"), 
   450     incomingSecureConnectionItem->setContentWidgetData(QString("selected"), 
   425                                                        incomingSecureConnectionItemIndex);
   451                                                        incomingSecureConnectionItemIndex);
   426     mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)),    		  
   452     mForm->addConnection(incomingSecureConnectionItem, SIGNAL(itemSelected(int)),             
   427     		mSettingsHelper, SLOT(incomingSecureConnectionItemChange(int)));
   453             mSettingsHelper, SLOT(incomingSecureConnectionItemChange(int)));
   428     mForm->addConnection(incomingSecureConnectionItem, SIGNAL(pressed(const QModelIndex &)),    		  
   454     if (mHiddenItem) {
   429     		mSettingsHelper, SLOT(incomingSecureConnectionPress(const QModelIndex &)));
   455         incomingSecureConnectionItem->setEnabled(false);
       
   456     }
   430     item.appendChild(incomingSecureConnectionItem);
   457     item.appendChild(incomingSecureConnectionItem);
   431     
   458     
   432     // 3. Incoming mail server port
   459     // 3. Incoming mail server port
   433     QVariant incomingPort;
       
   434     mSettingsManager->readSetting(IpsServices::IncomingPort, incomingPort);
       
   435     CpSettingFormItemData *incomingPortItem =
   460     CpSettingFormItemData *incomingPortItem =
   436         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   461         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   437             "txt_mailips_setlabel_incoming_port"));
   462             "txt_mailips_setlabel_incoming_port"));
   438     mSettingsHelper->insertContentItem(IpsServices::IncomingPort, incomingPortItem);    
   463     mSettingsHelper->insertContentItem(IpsServices::IncomingPort, incomingPortItem);
   439     mForm->addConnection(incomingPortItem, SIGNAL(itemSelected(int)),
       
   440                          mSettingsHelper, SLOT(incomingPortChange(int)));
       
   441     mForm->addConnection(incomingPortItem, SIGNAL(pressed(const QModelIndex &)),              
       
   442                          mSettingsHelper, SLOT(incomingPortPress(const QModelIndex &)));
       
   443     QStringList incomingPortItems;
   464     QStringList incomingPortItems;
   444     incomingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   465     incomingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   445                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
   466                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
   446     incomingPortItem->setContentWidgetData(QString("items"), incomingPortItems);
   467     incomingPortItem->setContentWidgetData(QString("items"), incomingPortItems);
   447     int incomingPortItemIndex = 
   468     int incomingPortItemIndex = mSettingsHelper->getCorrectIncomingPortRadioButtonIndex(); 
   448         mSettingsHelper->getCorrectPortRadioButtonIndex(incomingPort.toInt()); 
       
   449     incomingPortItem->setContentWidgetData(QString("selected"), incomingPortItemIndex);
   469     incomingPortItem->setContentWidgetData(QString("selected"), incomingPortItemIndex);
   450     item.appendChild(incomingPortItem);    
   470     mForm->addConnection(incomingPortItem, SIGNAL(itemSelected(int)),
       
   471         mSettingsHelper, SLOT(incomingPortChange(int)));
       
   472     if (mHiddenItem) {
       
   473         incomingPortItem->setEnabled(false);
       
   474     }
       
   475     item.appendChild(incomingPortItem);
   451     
   476     
   452     // 4. Outgoing mail server address
   477     // 4. Outgoing mail server address
   453     QVariant outgoingMailServer;
   478     QVariant outgoingMailServer;
   454     mSettingsManager->readSetting(IpsServices::OutgoingMailServer, outgoingMailServer);
   479     mSettingsManager->readSetting(IpsServices::OutgoingMailServer, outgoingMailServer);
   455     CpSettingFormItemData *outgoingMailServerItem = new CpSettingFormItemData(
   480     CpSettingFormItemData *outgoingMailServerItem = new CpSettingFormItemData(
   458     outgoingMailServerItem->setContentWidgetData(QString("text"), outgoingMailServer);
   483     outgoingMailServerItem->setContentWidgetData(QString("text"), outgoingMailServer);
   459     mForm->addConnection(outgoingMailServerItem, SIGNAL(editingFinished()),
   484     mForm->addConnection(outgoingMailServerItem, SIGNAL(editingFinished()),
   460                          mSettingsHelper, SLOT(saveOutgoingMailServer()));
   485                          mSettingsHelper, SLOT(saveOutgoingMailServer()));
   461     mForm->addConnection(outgoingMailServerItem, SIGNAL(textChanged(QString)),
   486     mForm->addConnection(outgoingMailServerItem, SIGNAL(textChanged(QString)),
   462                          mSettingsHelper, SLOT(outgoingMailServerTextChange(QString)));
   487                          mSettingsHelper, SLOT(outgoingMailServerTextChange(QString)));
       
   488     if (mHiddenItem) {// Starred and dimmed.
       
   489         outgoingMailServerItem->setContentWidgetData(QString("echoMode"), HbLineEdit::Password);
       
   490         outgoingMailServerItem->setEnabled(false);
       
   491     }
   463     item.appendChild(outgoingMailServerItem);
   492     item.appendChild(outgoingMailServerItem);
   464     
   493     
   465     // 5. Outgoing secure connection
   494     // 5. Outgoing secure connection
   466     QVariant outgoingSecureSockets;
       
   467     QVariant outgoingSSLWrapper;
       
   468     mSettingsManager->readSetting(IpsServices::OutgoingSecureSockets, outgoingSecureSockets);
       
   469     mSettingsManager->readSetting(IpsServices::OutgoingSSLWrapper, outgoingSSLWrapper);
       
   470     CpSettingFormItemData *outgoingSecureConnectionItem =
   495     CpSettingFormItemData *outgoingSecureConnectionItem =
   471         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   496         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   472             "txt_mailips_setlabel_outgoing_security"));
   497             "txt_mailips_setlabel_outgoing_security"));
   473     mSettingsHelper->insertContentItem(IpsServices::OutgoingSecureSockets, outgoingSecureConnectionItem);
   498     mSettingsHelper->insertContentItem(IpsServices::OutgoingSecureSockets, outgoingSecureConnectionItem);
   474     QStringList outgoingShowSCItems;
   499     QStringList outgoingShowSCItems;
   475     outgoingShowSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   500     outgoingShowSCItems << hbTrId("txt_mailips_setlabel_security_val_on_starttls")
   476                 << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   501                         << hbTrId("txt_mailips_setlabel_security_val_on_ssltls")
   477                 << hbTrId("txt_mailips_setlabel_security_val_off");
   502                         << hbTrId("txt_mailips_setlabel_security_val_off");
   478 
       
   479     outgoingSecureConnectionItem->setContentWidgetData(QString("items"), outgoingShowSCItems);
   503     outgoingSecureConnectionItem->setContentWidgetData(QString("items"), outgoingShowSCItems);
   480     int outgoingSecureConnectionItemIndex = 
   504     int outgoingSecureConnectionItemIndex = 
   481         mSettingsHelper->getCorrectSecureRadioButtonIndex(outgoingSecureSockets, 
   505         mSettingsHelper->getCorrectOutgoingSecureRadioButtonIndex();
   482 														  outgoingSSLWrapper);
       
   483     outgoingSecureConnectionItem->setContentWidgetData(QString("selected"), 
   506     outgoingSecureConnectionItem->setContentWidgetData(QString("selected"), 
   484                                                        outgoingSecureConnectionItemIndex);
   507                                                        outgoingSecureConnectionItemIndex);
   485     mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)),    		  
   508     mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(itemSelected(int)),             
   486     		mSettingsHelper, SLOT(outgoingSecureConnectionItemChange(int)));
   509             mSettingsHelper, SLOT(outgoingSecureConnectionItemChange(int)));
   487     mForm->addConnection(outgoingSecureConnectionItem, SIGNAL(pressed(const QModelIndex &)),    		  
   510     if (mHiddenItem) {
   488     		mSettingsHelper, SLOT(outgoingSecureConnectionPress(const QModelIndex &)));
   511         outgoingSecureConnectionItem->setEnabled(false);
       
   512     }
   489     item.appendChild(outgoingSecureConnectionItem);
   513     item.appendChild(outgoingSecureConnectionItem);
   490 
   514 
   491     // 6. Outgoing mail server port
   515     // 6. Outgoing mail server port
   492     QVariant outgoingPort;
       
   493     mSettingsManager->readSetting(IpsServices::OutgoingPort, outgoingPort);
       
   494     CpSettingFormItemData *outgoingPortItem =
   516     CpSettingFormItemData *outgoingPortItem =
   495         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   517         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   496             "txt_mailips_setlabel_outgoing_port"));
   518             "txt_mailips_setlabel_outgoing_port"));
   497     mSettingsHelper->insertContentItem(IpsServices::OutgoingPort, outgoingPortItem);    
   519     mSettingsHelper->insertContentItem(IpsServices::OutgoingPort, outgoingPortItem);
   498     mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)),
       
   499                          mSettingsHelper, SLOT(outgoingPortChange(int)));
       
   500     mForm->addConnection(outgoingPortItem, SIGNAL(pressed(const QModelIndex &)),              
       
   501                          mSettingsHelper, SLOT(outgoingPortPress(const QModelIndex &)));
       
   502     QStringList outgoingPortItems;
   520     QStringList outgoingPortItems;
   503     outgoingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   521     outgoingPortItems << hbTrId("txt_mailips_setlabel_incoming_port_default")
   504                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
   522                       << hbTrId("txt_mailips_setlabel_incoming_port_user_defined");
   505     outgoingPortItem->setContentWidgetData(QString("items"), outgoingPortItems);
   523     outgoingPortItem->setContentWidgetData(QString("items"), outgoingPortItems);
   506     int outgoingPortItemIndex = 
   524     int outgoingPortItemIndex = mSettingsHelper->getCorrectOutgoingPortRadioButtonIndex(); 
   507         mSettingsHelper->getCorrectOutgoingPortRadioButtonIndex(outgoingPort.toInt()); 
       
   508     outgoingPortItem->setContentWidgetData(QString("selected"), outgoingPortItemIndex);
   525     outgoingPortItem->setContentWidgetData(QString("selected"), outgoingPortItemIndex);
       
   526     mForm->addConnection(outgoingPortItem, SIGNAL(itemSelected(int)),
       
   527         mSettingsHelper, SLOT(outgoingPortChange(int)));
       
   528     if (mHiddenItem) {
       
   529         outgoingPortItem->setEnabled(false);
       
   530     }
   509     item.appendChild(outgoingPortItem);
   531     item.appendChild(outgoingPortItem);
   510     
   532     
   511     // 7. Outgoing authentication.
   533     // 7. Outgoing authentication.
   512     CpSettingFormItemData *outgoingAuthenticationItem =
   534     CpSettingFormItemData *outgoingAuthenticationItem =
   513         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   535         new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   514             "txt_mailips_setlabel_outgoing_mail_authentication"));
   536             "txt_mailips_setlabel_outgoing_mail_authentication"));
   515     mSettingsHelper->insertContentItem(IpsServices::SMTPAuthentication, outgoingAuthenticationItem);
   537     mSettingsHelper->insertContentItem(IpsServices::SMTPAuthentication, outgoingAuthenticationItem);
   516     mForm->addConnection(outgoingAuthenticationItem, SIGNAL(itemSelected(int)),
       
   517                          mSettingsHelper, SLOT(outgoingAuthenticationChange(int)));
       
   518     mForm->addConnection(outgoingAuthenticationItem, SIGNAL(pressed(const QModelIndex &)),              
       
   519                          mSettingsHelper, SLOT(outgoingAuthenticationPress(const QModelIndex &)));
       
   520     QStringList outgoingAuthenticationItems;
   538     QStringList outgoingAuthenticationItems;
   521     outgoingAuthenticationItems << hbTrId("txt_mailips_setlabel_outgoing_authentication_none")
   539     outgoingAuthenticationItems << hbTrId("txt_mailips_setlabel_outgoing_authentication_none")
   522                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_same")
   540                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_same")
   523                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_user");
   541                                 << hbTrId("txt_mailips_setlabel_outgoing_authentication_user");
   524     outgoingAuthenticationItem->setContentWidgetData(QString("items"), outgoingAuthenticationItems);
   542     outgoingAuthenticationItem->setContentWidgetData(QString("items"), outgoingAuthenticationItems);
   525     int outgoingAuthenticationIndex = 
   543     int outgoingAuthenticationIndex = 
   526         mSettingsHelper->getCorrectOutgoingAuthenticationRadioButtonIndex(); 
   544         mSettingsHelper->getCorrectOutgoingAuthenticationRadioButtonIndex(); 
   527     outgoingAuthenticationItem->setContentWidgetData(QString("selected"), outgoingAuthenticationIndex);
   545     outgoingAuthenticationItem->setContentWidgetData(QString("selected"), outgoingAuthenticationIndex);
       
   546     mForm->addConnection(outgoingAuthenticationItem, SIGNAL(itemSelected(int)),
       
   547         mSettingsHelper, SLOT(outgoingAuthenticationChange(int)));
   528     item.appendChild(outgoingAuthenticationItem);
   548     item.appendChild(outgoingAuthenticationItem);
       
   549     if (mHiddenItem) {
       
   550         outgoingAuthenticationItem->setEnabled(false);
       
   551     }
   529     if (outgoingAuthenticationIndex == IpsServices::EMailAuthUserAuthentication) {
   552     if (outgoingAuthenticationIndex == IpsServices::EMailAuthUserAuthentication) {
   530         mSettingsHelper->createServerInfoGroupDynamicItems();
   553         mSettingsHelper->createServerInfoGroupDynamicItems(mHiddenItem);
   531     }
   554     }
   532     
   555     
   533     // 8. Folder path
   556     // 8. Folder path
   534     // This item is only shown for IMAP4 account.
   557     // This item is only shown for IMAP4 account.
   535     if (mSettingsManager->accountType() == IpsServices::EMailImap) {
   558     if (mSettingsManager->accountType() == IpsServices::EMailImap) {
   536         QVariant folderPath;
       
   537         mSettingsManager->readSetting(IpsServices::FolderPath, folderPath);
       
   538         CpSettingFormItemData *folderPathItem =
   559         CpSettingFormItemData *folderPathItem =
   539             new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   560             new CpSettingFormItemData(HbDataFormModelItem::RadioButtonListItem, hbTrId(
   540                 "txt_mailips_setlabel_folder_path"));
   561                 "txt_mailips_setlabel_folder_path"));
   541         mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem);    
   562         mSettingsHelper->insertContentItem(IpsServices::FolderPath, folderPathItem);    
   542         mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)),
       
   543                              mSettingsHelper, SLOT(folderPathChange(int)));
       
   544         mForm->addConnection(folderPathItem, SIGNAL(pressed(const QModelIndex &)),              
       
   545                              mSettingsHelper, SLOT(folderPathPress(const QModelIndex &)));
       
   546         QStringList folderPathItems;
   563         QStringList folderPathItems;
   547         folderPathItems << hbTrId("txt_mailips_setlabel_folder_path_val_default")
   564         folderPathItems << hbTrId("txt_mailips_setlabel_folder_path_val_default")
   548                        << hbTrId("txt_mailips_setlabel_folder_path_user_defined");
   565                         << hbTrId("txt_mailips_setlabel_folder_path_user_defined");
   549         folderPathItem->setContentWidgetData(QString("items"), folderPathItems);
   566         folderPathItem->setContentWidgetData(QString("items"), folderPathItems);
   550         int folderPathItemIndex = mSettingsHelper->getCorrectInboxPathRadioButtonIndex(folderPath);
   567         int folderPathItemIndex = mSettingsHelper->getCorrectFolderPathRadioButtonIndex();
   551         folderPathItem->setContentWidgetData(QString("selected"), folderPathItemIndex);
   568         folderPathItem->setContentWidgetData(QString("selected"), folderPathItemIndex);
       
   569         mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)),
       
   570             mSettingsHelper, SLOT(folderPathChange(int)));
   552         item.appendChild(folderPathItem);
   571         item.appendChild(folderPathItem);
   553     }
   572     }
       
   573 }
       
   574 
       
   575 /*!
       
   576     Sets the state of the AlwaysOnline.
       
   577     \param command Command for the state of the AlwaysOnline.
       
   578     \param mailboxId Mailbox id.
       
   579 */
       
   580 void NmIpsSettingsPlugin::setAlwaysOnlineState(TAlwaysOnlineServerAPICommands command,
       
   581                                                NmId mailboxId) const
       
   582 {
       
   583     RAlwaysOnlineClientSession aosession;
       
   584     TInt err(aosession.Connect());
       
   585     
       
   586     if (err == KErrNone) {
       
   587         TPckgBuf<TMsvId> mboxBuf(mailboxId.id32());
       
   588         
       
   589         TRAP_IGNORE(aosession.RelayCommandL(command, mboxBuf));
       
   590     }
       
   591     
       
   592     aosession.Close();
   554 }
   593 }
   555 
   594 
   556 /*!
   595 /*!
   557     Creates user defined mode if not already exist.
   596     Creates user defined mode if not already exist.
   558 */
   597 */
   586 
   625 
   587         // Reconnect signal, so that helper is aware of data modifications.
   626         // Reconnect signal, so that helper is aware of data modifications.
   588         mForm->addConnection(syncProfile, SIGNAL(currentIndexChanged(int)),
   627         mForm->addConnection(syncProfile, SIGNAL(currentIndexChanged(int)),
   589             mSettingsHelper, SLOT(receivingScheduleChange(int)));
   628             mSettingsHelper, SLOT(receivingScheduleChange(int)));
   590 
   629 
   591         // Mark that user defined mode exists.
   630         // Set reception user defined profile enabled.
   592         userDefineMode.setValue(1);
   631         userDefineMode.setValue(NmIpsSettingsReceptionUserDefinedProfileEnabled);
   593         mSettingsManager->writeSetting(IpsServices::ReceptionUserDefinedProfile, userDefineMode);
   632         mSettingsManager->writeSetting(IpsServices::ReceptionUserDefinedProfile, userDefineMode);
   594     }
   633     }
   595 }
   634 }
   596 
   635 
   597 /*!
   636 /*!
   598     Handles mail in inbox modifications.
   637     Handles mail in inbox modifications.
   599 
   638 
   600     \param index Selected value index.
   639     \param value Selected value as a text.
   601 */
   640 */
   602 void NmIpsSettingsPlugin::showMailInInboxModified(int index)
   641 void NmIpsSettingsPlugin::showMailInInboxModified(QPersistentModelIndex, QVariant value)
   603 {
   642 {
   604     HbDataFormModelItem* item = mSettingsHelper->contentItem(IpsServices::ReceptionInboxSyncWindow);
   643     QMap<QString, int> conversionTable;
   605     QVariant itemData = item->data(HbDataFormModelItem::HbDataFormModelItem::DescriptionRole + 1);
   644     conversionTable[HbStringUtil::convertDigits("50")] = 50;
   606     int selectedValue = itemData.value< QList< QVariant > >().at(index).toInt();
   645     conversionTable[HbStringUtil::convertDigits("100")] = 100;
   607     mSettingsHelper->handleReceivingScheduleSettingChange(
   646     conversionTable[HbStringUtil::convertDigits("500")] = 500;
   608         IpsServices::ReceptionInboxSyncWindow, selectedValue);
   647     conversionTable[hbTrId("txt_mailips_setlabel_val_all")] = 0;
       
   648 
       
   649     int selectedValue(conversionTable.value(value.toString()));
       
   650     QVariant previouslySelectedValue;
       
   651     mSettingsManager->readSetting(IpsServices::ReceptionInboxSyncWindow, previouslySelectedValue);
       
   652     if (previouslySelectedValue.toInt() != selectedValue) {
       
   653         mSettingsHelper->handleReceivingScheduleSettingChange(
       
   654             IpsServices::ReceptionInboxSyncWindow, selectedValue);
       
   655     }
   609 }
   656 }
   610 
   657 
   611 Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);
   658 Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);