diff -r e7aa27f58ae1 -r 578830873419 ipsservices/nmipssettings/src/nmipssettingshelper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipsservices/nmipssettings/src/nmipssettingshelper.cpp Fri Apr 16 14:51:52 2010 +0300 @@ -0,0 +1,263 @@ +/* +* 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 +#include +#include +#include +#include +#include + +#include "nmipssettingshelper.h" +#include "nmipssettingsmanagerbase.h" + +/*! + \class NmIpsSettingsHelper + \brief Helper class to save data into database when user has made changes. + +*/ + +// ======== MEMBER FUNCTIONS ======== + +/*! + Constructor of NmIpsSettingsHelper. + \param settingsManager Reference used by settingshelper to read and store values +*/ +NmIpsSettingsHelper::NmIpsSettingsHelper(NmIpsSettingsManagerBase &settingsManager) +: mCurrentLineEditChanged(false), + mSettingsManager(settingsManager) +{ +} + +/*! + Destructor of NmIpsSettingsHelper. +*/ +NmIpsSettingsHelper::~NmIpsSettingsHelper() +{ + mContentItems.clear(); +} + +/*! + Inserts content item pointers into map, which then can be used to access the widgets data. + \param IpsServices::SettingItem. Key that can be used to access the value from map. + \param CpSettingFormItemData *. Pointer to the content item. +*/ +void NmIpsSettingsHelper::insertContentItem(IpsServices::SettingItem key, + CpSettingFormItemData *value) +{ + mContentItems.insert(key, value); +} + +/*! + Saves the My Name value into database if user has changed the value. +*/ +void NmIpsSettingsHelper::saveMyName() +{ + if (mCurrentLineEditChanged) { + CpSettingFormItemData *item = mContentItems.value(IpsServices::EmailAlias); + QVariant data = item->contentWidgetData(QString("text")); + mSettingsManager.writeSetting(IpsServices::EmailAlias, data); + } + mCurrentLineEditChanged = false; +} + +/*! + Sets the edit changed flag to indicate that user has edited the field + + \param text Reference to the text value in the line edit box. +*/ +void NmIpsSettingsHelper::myNameTextChange(const QString &text) +{ + Q_UNUSED(text); + mCurrentLineEditChanged = true; +} + +/*! + Saves the Mailbox name value into database if user has changed the value. +*/ +void NmIpsSettingsHelper::saveMailboxName() +{ + if (mCurrentLineEditChanged) { + CpSettingFormItemData *item = mContentItems.value(IpsServices::MailboxName); + QVariant data = item->contentWidgetData(QString("text")); + // Only save mailbox name if it's length is greater than zero. CEmailAccounts does not + // allow zero-length mailbox names. + if (data.toString().length() > 0) { + mSettingsManager.writeSetting(IpsServices::MailboxName, data); + QVariant property(NmSettings::MailboxName); + emit mailboxPropertyChanged(mSettingsManager.mailboxId(), property, data); + } + else { + if (mSettingsManager.readSetting(IpsServices::MailboxName, data)) { + item->setContentWidgetData(QString("text"), data); + } + } + + } + mCurrentLineEditChanged = false; +} + +/*! + Sets the edit changed flag to indicate that user has edited the field + + \param text Reference to the text value in the line edit box. +*/ +void NmIpsSettingsHelper::mailboxNameTextChange(const QString &text) +{ + Q_UNUSED(text); + mCurrentLineEditChanged = true; +} + +/*! + Saves the Mail address value into database if user has changed the value. +*/ +void NmIpsSettingsHelper::saveMailAddress() +{ + if (mCurrentLineEditChanged) { + CpSettingFormItemData *item = mContentItems.value(IpsServices::EmailAddress); + QVariant data = item->contentWidgetData(QString("text")); + mSettingsManager.writeSetting(IpsServices::EmailAddress, data); + } + mCurrentLineEditChanged = false; +} + +/*! + Sets the edit changed flag to indicate that user has edited the field + + \param text Reference to the text value in the line edit box. +*/ +void NmIpsSettingsHelper::mailAddressTextChange(const QString &text) +{ + Q_UNUSED(text); + mCurrentLineEditChanged = true; +} + +/*! + Saves the Username value into database if user has changed the value. +*/ +void NmIpsSettingsHelper::saveUserName() +{ + if (mCurrentLineEditChanged) { + CpSettingFormItemData *item = mContentItems.value(IpsServices::LoginName); + QVariant data = item->contentWidgetData(QString("text")); + mSettingsManager.writeSetting(IpsServices::LoginName, data); + } + mCurrentLineEditChanged = false; +} + +/*! + Sets the edit changed flag to indicate that user has edited the field + + \param text Reference to the text value in the line edit box. +*/ +void NmIpsSettingsHelper::userNameTextChange(const QString &text) +{ + Q_UNUSED(text); + mCurrentLineEditChanged = true; +} + +/*! + Saves the Password value into database +*/ +void NmIpsSettingsHelper::savePassword() +{ + CpSettingFormItemData *item = mContentItems.value(IpsServices::Password); + QVariant data = item->contentWidgetData(QString("text")); + mSettingsManager.writeSetting(IpsServices::Password, data); +} + +/*! + Saves the Reply to value into database if user has changed the value. +*/ +void NmIpsSettingsHelper::saveReplyTo() +{ + if (mCurrentLineEditChanged) { + CpSettingFormItemData *item = mContentItems.value(IpsServices::ReplyAddress); + QVariant data = item->contentWidgetData(QString("text")); + mSettingsManager.writeSetting(IpsServices::ReplyAddress, data); + } + mCurrentLineEditChanged = false; +} + +/*! + Sets the edit changed flag to indicate that user has edited the field + + \param text Reference to the text value in the line edit box. +*/ +void NmIpsSettingsHelper::replyToTextChange(const QString &text) +{ + Q_UNUSED(text); + mCurrentLineEditChanged = true; +} + +/*! + Deletes mailbox and displays the proper notes. +*/ +void NmIpsSettingsHelper::deleteButtonPress() +{ + HbMessageBox confirmationDialog(HbMessageBox::MessageTypeQuestion); + confirmationDialog.setText(hbTrId("txt_mail_dialog_do_you_want_to_delete_the_mailbox")); + confirmationDialog.setModal(true); + confirmationDialog.setTimeout(HbMessageBox::NoTimeout); + + HbAction *action = confirmationDialog.exec(); + + if (action != confirmationDialog.primaryAction()) { + // The user did not confirm the deletion. + return; + } + + QVariant mailboxName; + mSettingsManager.readSetting(IpsServices::MailboxName, mailboxName); + + // Display the progress note. Before display the note, remove the cancel + // button. + HbProgressDialog progressNote(HbProgressDialog::WaitDialog); + progressNote.setText(hbTrId("txt_mail_dpophead _1_deleted")); + action = progressNote.primaryAction(); + progressNote.removeAction(action); + progressNote.delayedShow(); + + if (!mSettingsManager.deleteMailbox()) { + // The mailbox was deleted successfully. Hide the progress note and + // display the "mailbox deleted" dialog. + progressNote.close(); + + HbMessageBox infoDialog(HbMessageBox::MessageTypeInformation); + infoDialog.setText( + hbTrId("txt_mail_dialog_1_deleted").arg(mailboxName.toString())); + infoDialog.setModal(true); + HbAction *action = infoDialog.exec(); + + // Emit the signal to update the UI. + emit mailboxListChanged(mSettingsManager.mailboxId(), + NmSettings::MailboxDeleted); + } else { + // Failed to delete the mailbox! + // TODO: Should an error note be displayed? + progressNote.close(); + } +} + +/*! + Saves the selected receiving schedule setting. + \index Selected receiving schedule. +*/ +void NmIpsSettingsHelper::receivingScheduleChange(int index) +{ + mSettingsManager.writeSetting(IpsServices::ReceptionActiveProfile, QVariant(index)); +}