--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp Fri Apr 16 14:51:52 2010 +0300
@@ -0,0 +1,343 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <hbdataform.h>
+#include <hbdataformmodel.h>
+#include <hbdataformmodelitem.h>
+#include <hblineedit.h>
+#include <cpsettingformitemdata.h>
+#include <qplugin.h>
+#include <QCoreApplication>
+#include <QTranslator>
+#include <QScopedPointer>
+#include <QLocale>
+
+#include "nmipssettingsplugin.h"
+#include "nmipssettingshelper.h"
+#include "nmipssettingsmanagerbase.h"
+#include "nmipssettingsmanagerfactory.h"
+#include "nmipssettingitems.h"
+#include "nmcommon.h"
+
+#include "nmipssettingscustomitem.h"
+#include "nmipssettingslabeledcombobox.h"
+
+/*!
+ \class NmIpsSettingsPlugin
+ \brief The class implements NmSettingsPluginInterface which is an interface
+ for NMail settings plug-ins.
+
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+ Constructor of NmIpsSettingsPlugin.
+*/
+NmIpsSettingsPlugin::NmIpsSettingsPlugin()
+: mSettingsHelper(0),
+ mSettingsManager(0),
+ mTranslator(0)
+{
+ QScopedPointer<QTranslator> translator(new QTranslator());
+
+#ifdef Q_OS_SYMBIAN
+ QString lang = QLocale::system().name();
+ QString appName = "mailips_";
+ QString path = "Z:/resource/qt/translations/";
+#else
+ QString lang;
+ QString appName = "mailips";
+ QString path = ":/translations";
+#endif
+
+ translator->load(appName + lang, path);
+
+ QCoreApplication::installTranslator(translator.data());
+ mTranslator = translator.take();
+
+}
+
+/*!
+ Destructor of NmIpsSettingsPlugin.
+*/
+NmIpsSettingsPlugin::~NmIpsSettingsPlugin()
+{
+ delete mSettingsManager;
+ delete mSettingsHelper;
+ delete mTranslator;
+}
+
+/*!
+ Populates the form items into model.
+ \param model Reference to the model.
+ \param form Reference to the form.
+ \param mailboxId Id of the mailbox.
+ \return <code>true</code> if plug-in contains certain mailbox otherwise <code>false</code>
+*/
+bool NmIpsSettingsPlugin::populateModel(HbDataFormModel &model,
+ HbDataForm &form, const NmId &mailboxId)
+{
+ // Store model and form pointers.
+ mModel = &model;
+ mForm = &form;
+
+ // populateModel is called each time when a new settings view is created and this
+ // plugin is destructed only after the mail settings is exited, so
+ // SettingsManager and SettingsHelper needs to be deleted.
+ delete mSettingsManager;
+ delete mSettingsHelper;
+ mSettingsHelper = 0;
+ mSettingsManager = NmIpsSettingsManagerFactory::createSettingManager(mailboxId);
+
+ bool result(false);
+
+ // This plugin is only used when the mailbox is a IMAP or POP3 account.
+ // Settings manager object is valid if the mailboxId is IMAP or POP3 account.
+ if (mSettingsManager) {
+ // Create settings helper.
+ mSettingsHelper = new NmIpsSettingsHelper(*mSettingsManager);
+
+ connect(mSettingsHelper, SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
+ this, SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
+
+ connect(mSettingsHelper, SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
+ this, SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
+ // Add items to the model.
+ initGroupItems();
+ result = true;
+ }
+ return result;
+}
+
+/*!
+ Slot called when individual setting items are shown.
+ \param index. Index of the shown item.
+*/
+void NmIpsSettingsPlugin::itemShown(const QModelIndex& index)
+{
+ HbDataFormViewItem* item = static_cast<HbDataFormViewItem*>(mForm->itemByIndex(index));
+ HbDataFormModelItem* modelItem = mModel->itemFromIndex(index);
+
+ // Check item type
+ if (modelItem == mReceivingScheduleSelectedItem) {
+
+ // Populate the custom item's combobox and label data.
+ NmIpsSettingsLabeledComboBox* box =
+ static_cast<NmIpsSettingsLabeledComboBox*>(item->dataItemContentWidget());
+
+ QStringList modeList;
+ modeList << hbTrId("txt_mailips_setlabel_selected_mode_val_keep_upto") // 0
+ << hbTrId("txt_mailips_setlabel_selected_mode_val_save_energy") // 1
+ << hbTrId("txt_mailips_setlabel_selected_mode_val_fetch_manua"); // 2
+
+ QStringList infoList;
+ infoList << hbTrId("txt_mailips_list_the_mailbox_is_uptodate_during") // 0
+ << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_every_15") // 1
+ << hbTrId("txt_mailips_list_the_mailbox_is_refreshed_only_by"); // 2
+
+ box->setItems(modeList, infoList);
+
+ // Read and set the default value for the combobox and label
+ QVariant value;
+ if (mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, value)) {
+ box->setCurrentIndex(value.toInt());
+ }
+ }
+}
+
+/*!
+ Appends the group items to the group item.
+ \param model Reference to the model.
+ \param form Reference to the form.
+*/
+void NmIpsSettingsPlugin::initGroupItems()
+{
+ HbDataFormModelItem *rootItem = mModel->invisibleRootItem();
+
+ HbDataFormModelItem *preferencesItem =
+ mModel->appendDataFormItem(HbDataFormModelItem::GroupItem,
+ hbTrId("txt_mailips_subhead_preferences"),
+ rootItem);
+ initPreferenceItems(*preferencesItem);
+
+ HbDataFormModelItem *receivingScheduleItem =
+ mModel->appendDataFormItem(HbDataFormModelItem::GroupItem,
+ hbTrId("txt_mailips_subhead_receiving_schedule"),
+ rootItem);
+ initReceivingScheduleItems(*receivingScheduleItem);
+
+ HbDataFormModelItem *userInfoItem =
+ mModel->appendDataFormItem(HbDataFormModelItem::GroupItem,
+ hbTrId("txt_mailips_subhead_user_info"),
+ rootItem);
+ initUserInfoItems(*userInfoItem);
+
+ HbDataFormModelItem *serverInfoItem =
+ mModel->appendDataFormItem(HbDataFormModelItem::GroupItem,
+ hbTrId("txt_mailips_subhead_server_info"),
+ rootItem);
+ initServerInfoItems(*serverInfoItem);
+
+ // Create the delete mailbox button.
+ HbDataFormModelItem::DataItemType buttonItem =
+ static_cast<HbDataFormModelItem::DataItemType>(
+ HbDataFormModelItem::CustomItemBase + 2);
+
+ HbDataFormModelItem *deleteMailboxButtonItem =
+ mModel->appendDataFormItem(buttonItem, QString(), rootItem);
+
+ deleteMailboxButtonItem->setData(HbDataFormModelItem::KeyRole,
+ hbTrId("txt_mailips_button_delete_mailbox"));
+
+ mForm->addConnection(deleteMailboxButtonItem, SIGNAL(clicked()),
+ mSettingsHelper, SLOT(deleteButtonPress()));
+
+}
+
+/*!
+ Appends the preferences items to the group item.
+ \param item Reference to the parent group item.
+*/
+void NmIpsSettingsPlugin::initPreferenceItems(HbDataFormModelItem &item) const
+{
+ // My Name
+ QVariant myName;
+ mSettingsManager->readSetting(IpsServices::EmailAlias, myName);
+ CpSettingFormItemData *myNameItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_my_name"));
+ mSettingsHelper->insertContentItem(IpsServices::EmailAlias, myNameItem);
+ myNameItem->setContentWidgetData(QString("text"), myName);
+ mForm->addConnection(myNameItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveMyName()));
+ mForm->addConnection(myNameItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(myNameTextChange(QString)));
+ item.appendChild(myNameItem);
+
+ // Mailbox Name
+ QVariant mailboxName;
+ mSettingsManager->readSetting(IpsServices::MailboxName, mailboxName);
+ CpSettingFormItemData *mailboxNameItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_mailbox_name"));
+ mSettingsHelper->insertContentItem(IpsServices::MailboxName, mailboxNameItem);
+ mailboxNameItem->setContentWidgetData(QString("text"), mailboxName);
+ mForm->addConnection(mailboxNameItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveMailboxName()));
+ mForm->addConnection(mailboxNameItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(mailboxNameTextChange(QString)));
+ item.appendChild(mailboxNameItem);
+}
+
+/*!
+ Appends the receiving schedule items to the group item.
+ \param item Reference to the parent group item.
+*/
+void NmIpsSettingsPlugin::initReceivingScheduleItems(HbDataFormModelItem &item)
+{
+ // Active sync profile
+
+ // Append custom item to the prototype list.
+ NmIpsSettingsCustomItem *prototype = new NmIpsSettingsCustomItem();
+ QList<HbAbstractViewItem *> protoTypeList = mForm->itemPrototypes();
+ protoTypeList.append(prototype);
+ mForm->setItemPrototypes(protoTypeList);
+
+ // Instantiate the custom item and append it.
+ HbDataFormModelItem *infoItem = new HbDataFormModelItem(
+ static_cast<HbDataFormModelItem::DataItemType>(NmIpsSettingsCustomItem::LabeledComboBox),
+ hbTrId("txt_mailips_setlabel_selected_mode"));
+ item.appendChild(infoItem);
+
+ // Store the pointer for use in itemShown.
+ mReceivingScheduleSelectedItem = infoItem;
+
+ // Connect the signals and slots.
+ connect(mForm, SIGNAL(itemShown(const QModelIndex &)),
+ this, SLOT(itemShown(const QModelIndex &)));
+ mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
+ mSettingsHelper, SLOT(receivingScheduleChange(int)));
+}
+
+
+/*!
+ Appends the user info items to the group item.
+ \param item Reference to the parent group item.
+*/
+void NmIpsSettingsPlugin::initUserInfoItems(HbDataFormModelItem &item) const
+{
+ // Mail address
+ QVariant mailAddress;
+ mSettingsManager->readSetting(IpsServices::EmailAddress, mailAddress);
+ CpSettingFormItemData *mailAddressItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_mail_address"));
+ mSettingsHelper->insertContentItem(IpsServices::EmailAddress, mailAddressItem);
+ mailAddressItem->setContentWidgetData(QString("text"), mailAddress);
+ mForm->addConnection(mailAddressItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveMailAddress()));
+ mForm->addConnection(mailAddressItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(mailAddressTextChange(QString)));
+ item.appendChild(mailAddressItem);
+
+ // Username (Never visible in Yahoo!)
+ QVariant username;
+ mSettingsManager->readSetting(IpsServices::LoginName, username);
+ CpSettingFormItemData *usernameItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_username"));
+ mSettingsHelper->insertContentItem(IpsServices::LoginName, usernameItem);
+ usernameItem->setContentWidgetData(QString("text"), username);
+ mForm->addConnection(usernameItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveUserName()));
+ mForm->addConnection(usernameItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(userNameTextChange(QString)));
+ item.appendChild(usernameItem);
+
+ // Password
+ QVariant password;
+ mSettingsManager->readSetting(IpsServices::Password, password);
+ CpSettingFormItemData *passwordItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_password"));
+ mSettingsHelper->insertContentItem(IpsServices::Password, passwordItem);
+ passwordItem->setContentWidgetData(QString("text"), password);
+ passwordItem->setContentWidgetData(QString("echoMode"), HbLineEdit::PasswordEchoOnEdit);
+ mForm->addConnection(passwordItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(savePassword()));
+ item.appendChild(passwordItem);
+
+ // Reply to address
+ QVariant replyToAddress;
+ mSettingsManager->readSetting(IpsServices::ReplyAddress, replyToAddress);
+ CpSettingFormItemData *replyToItem = new CpSettingFormItemData(
+ HbDataFormModelItem::TextItem, hbTrId("txt_mailips_setlabel_reply_to_address"));
+ mSettingsHelper->insertContentItem(IpsServices::ReplyAddress, replyToItem);
+ replyToItem->setContentWidgetData(QString("text"), replyToAddress);
+ mForm->addConnection(replyToItem, SIGNAL(editingFinished()),
+ mSettingsHelper, SLOT(saveReplyTo()));
+ mForm->addConnection(replyToItem, SIGNAL(textChanged(QString)),
+ mSettingsHelper, SLOT(replyToTextChange(QString)));
+ item.appendChild(replyToItem);
+}
+
+/*!
+ Appends the server info items to the group item.
+ \param item Reference to the parent group item.
+*/
+void NmIpsSettingsPlugin::initServerInfoItems(HbDataFormModelItem &item) const
+{
+ Q_UNUSED(item);
+}
+
+Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);