--- a/emailuis/nmsettingui/src/nmsettingsviewfactory.cpp Mon May 03 12:23:15 2010 +0300
+++ b/emailuis/nmsettingui/src/nmsettingsviewfactory.cpp Fri May 14 15:41:10 2010 +0300
@@ -61,8 +61,10 @@
const HbIcon &icon,
const HbDataFormModelItem *parent)
: CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent),
- mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(0),mPrevView(0)
+ mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(0),mPrevView(0),
+ mMessageBox(0)
{
+ createMessageBox();
}
@@ -85,8 +87,10 @@
const HbIcon &icon,
const HbDataFormModelItem *parent)
: CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent),
- mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(viewLauncher), mPrevView(0)
+ mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(viewLauncher),
+ mPrevView(0), mMessageBox(0)
{
+ createMessageBox();
}
@@ -96,6 +100,7 @@
NmSettingsViewFactory::~NmSettingsViewFactory()
{
delete mSettingsManager;
+ delete mMessageBox;
}
@@ -119,33 +124,27 @@
NMLOG(QString("NmSettingsViewFactory::createSettingView(): Mailbox count is ") +
QString::number(mailboxCount));
- if (mailboxCount == 0) {
- // Query the user whether to launch the wizard or not.
- HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
- messageBox->setText(hbTrId("txt_mail_dialog_no_mailboxes_create_new"));
- messageBox->setTimeout(HbMessageBox::NoTimeout);
-
- // Read the user selection.
- HbAction *action = messageBox->exec();
+ switch(mailboxCount) {
+ case 0: {
+ // Query the user whether to launch the wizard or not.
+ mMessageBox->open(const_cast<NmSettingsViewFactory *>(this),
+ SLOT(launchWizard(HbAction *)));
+ break;
+ }
+ case 1: {
+ // Construct setting view for the only available mailbox
+ NmMailbox *mailbox = mailboxList.at(0);
+ view = new NmMailboxSettingView(mailbox->id(),
+ mailbox->name(),
+ *mSettingsManager);
+ break;
+ }
+ default: {
+ // Construct mailbox selection view
+ view = new NmMailboxSelectionView(*this, *mSettingsManager, mailboxList);
+ break;
+ }
- if (action == messageBox->primaryAction()) {
- // Launch mail wizard.
- NMLOG(QString("NmSettingsViewFactory::createSettingView(): Launching the mail wizard."));
- QStringList args;
- args << mailWizardStartArgs;
- QProcess::startDetached(mailWizardStartExe, args);
- }
- }
- else if (mailboxCount == 1) {
- // Construct setting view for the only available mailbox
- NmMailbox *mailbox = mailboxList.at(0);
- view = new NmMailboxSettingView(mailbox->id(),
- mailbox->name(),
- *mSettingsManager);
- }
- else if (mailboxCount > 1) {
- // Construct mailbox selection view
- view = new NmMailboxSelectionView(*this, *mSettingsManager, mailboxList);
}
if (view) {
@@ -215,17 +214,17 @@
connect(mSettingsManager,
SIGNAL(goOnline(const NmId &)),
mSettingsViewLauncher,
- SIGNAL(goOnline(const NmId &)));
+ SIGNAL(goOnline(const NmId &)), Qt::UniqueConnection);
connect(mSettingsManager,
SIGNAL(goOffline(const NmId &)),
mSettingsViewLauncher,
- SIGNAL(goOffline(const NmId &)));
+ SIGNAL(goOffline(const NmId &)), Qt::UniqueConnection);
connect(this,
SIGNAL(aboutToClose()),
mSettingsManager,
- SIGNAL(aboutToClose()));
+ SIGNAL(aboutToClose()), Qt::UniqueConnection);
// Create back navigation action for a view.
HbAction *action = new HbAction(Hb::BackNaviAction, view);
@@ -265,4 +264,31 @@
NMLOG(QString("NmSettingsViewFactory::backPress - OK"));
}
+/*!
+ Handles user selection from "No mailboxes defined" dialog. Launches the Mail Wizard if \a action
+ is the dialog's primary action ("Yes"). Otherwise does nothing.
+ \param action. Action selected by the user.
+*/
+void NmSettingsViewFactory::launchWizard(HbAction *action)
+{
+ if (action == mMessageBox->primaryAction()) {
+ // Launch mail wizard.
+ NMLOG(QString("NmSettingsViewFactory::launchWizard(): Launching the mail wizard."));
+ QStringList args;
+ args << mailWizardStartArgs;
+ QProcess::startDetached(mailWizardStartExe, args);
+ }
+}
+
+/*!
+ Creates the "No mailboxes defined" dialog. Called from the constructors.
+*/
+void NmSettingsViewFactory::createMessageBox()
+{
+ mMessageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
+ mMessageBox->setText(hbTrId("txt_mail_dialog_no_mailboxes_create_new"));
+ mMessageBox->setTimeout(HbMessageBox::NoTimeout);
+}
+
+
// End of file.