emailuis/nmsettingui/src/nmsettingsviewfactory.cpp
changeset 43 99bcbff212ad
parent 23 2dc6caa42ec3
child 48 10eaf342f539
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    62     const HbDataFormModelItem *parent)
    62     const HbDataFormModelItem *parent)
    63  : CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent),
    63  : CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent),
    64    mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(0),mPrevView(0),
    64    mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(0),mPrevView(0),
    65    mMessageBox(0)
    65    mMessageBox(0)
    66 {
    66 {
       
    67     NM_FUNCTION;
       
    68     
    67     createMessageBox();
    69     createMessageBox();
    68 }
    70 }
    69 
    71 
    70 
    72 
    71 /*!
    73 /*!
    88     const HbDataFormModelItem *parent)
    90     const HbDataFormModelItem *parent)
    89  : CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent),
    91  : CpSettingFormEntryItemData(itemDataHelper, text, description, icon, parent),
    90      mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(viewLauncher),
    92      mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(viewLauncher),
    91      mPrevView(0), mMessageBox(0)
    93      mPrevView(0), mMessageBox(0)
    92 {
    94 {
       
    95     NM_FUNCTION;
       
    96     
    93     createMessageBox();
    97     createMessageBox();
    94 }
    98 }
    95 
    99 
    96 
   100 
    97 /*!
   101 /*!
    98     Destructor of NmSettingsViewFactory.
   102     Destructor of NmSettingsViewFactory.
    99 */
   103 */
   100 NmSettingsViewFactory::~NmSettingsViewFactory()
   104 NmSettingsViewFactory::~NmSettingsViewFactory()
   101 {
   105 {
       
   106     NM_FUNCTION;
       
   107     
   102     delete mSettingsManager;
   108     delete mSettingsManager;
   103     delete mMessageBox;
   109     delete mMessageBox;
   104 }
   110 }
   105 
   111 
   106 
   112 
   111 
   117 
   112     \return A newly constructed setting view instance.
   118     \return A newly constructed setting view instance.
   113 */
   119 */
   114 CpBaseSettingView *NmSettingsViewFactory::createSettingView() const
   120 CpBaseSettingView *NmSettingsViewFactory::createSettingView() const
   115 {
   121 {
   116     NMLOG(QString("NmSettingsViewFactory::createSettingView(): Begin."));
   122     NM_FUNCTION;
   117 
   123     
   118     CpBaseSettingView *view = 0;
   124     CpBaseSettingView *view = 0;
   119     QList<NmMailbox *> mailboxList;
   125     QList<NmMailbox *> mailboxList;
   120     mSettingsManager->listMailboxes(mailboxList);
   126     mSettingsManager->listMailboxes(mailboxList);
   121     const int mailboxCount(mailboxList.count());
   127     const int mailboxCount(mailboxList.count());
   122 
   128 
   123     // Log the number of mailboxes.
   129     // Log the number of mailboxes.
   124     NMLOG(QString("NmSettingsViewFactory::createSettingView(): Mailbox count is ") +
   130     NM_COMMENT(QString("NmSettingsViewFactory::createSettingView(): mailbox count is %1").arg(mailboxCount));
   125           QString::number(mailboxCount));
       
   126 
   131 
   127     switch(mailboxCount) {
   132     switch(mailboxCount) {
   128         case 0: {
   133         case 0: {
   129             // Query the user whether to launch the wizard or not.
   134             // Query the user whether to launch the wizard or not.
   130             mMessageBox->open(const_cast<NmSettingsViewFactory *>(this),
   135             mMessageBox->open(const_cast<NmSettingsViewFactory *>(this),
   154 
   159 
   155         connect(mSettingsManager,
   160         connect(mSettingsManager,
   156                 SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   161                 SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   157                 view, SLOT(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   162                 view, SLOT(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   158     }
   163     }
   159 
   164     
   160     NMLOG(QString("NmSettingsViewFactory::createSettingView(): End."));
       
   161     return view;
   165     return view;
   162 }
   166 }
   163 
   167 
   164 
   168 
   165 /*!
   169 /*!
   169     \param mailboxName The name of the mailbox.
   173     \param mailboxName The name of the mailbox.
   170 */
   174 */
   171 void NmSettingsViewFactory::launchSettingView(const NmId &mailboxId,
   175 void NmSettingsViewFactory::launchSettingView(const NmId &mailboxId,
   172                                               const QString &mailboxName) const
   176                                               const QString &mailboxName) const
   173 {
   177 {
   174     NMLOG(QString("NmSettingsViewFactory::launchSettingView"));
   178     NM_FUNCTION;
   175 
   179     
   176     // There's always at least one valid main window available.
   180     // There's always at least one valid main window available.
   177     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
   181     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
   178 
   182 
   179     CpBaseSettingView *view =
   183     CpBaseSettingView *view =
   180         new NmMailboxSettingView(mailboxId, mailboxName, *mSettingsManager);
   184         new NmMailboxSettingView(mailboxId, mailboxName, *mSettingsManager);
   231     connect(action, SIGNAL(triggered()), this, SLOT(backPress()));
   235     connect(action, SIGNAL(triggered()), this, SLOT(backPress()));
   232     view->setNavigationAction(action);
   236     view->setNavigationAction(action);
   233     mPrevView = mainWindow->currentView();
   237     mPrevView = mainWindow->currentView();
   234     mainWindow->addView(view);
   238     mainWindow->addView(view);
   235     mainWindow->setCurrentView(view);
   239     mainWindow->setCurrentView(view);
   236 
       
   237     NMLOG(QString("NmSettingsViewFactory::launchSettingView - OK"));
       
   238 }
   240 }
   239 
   241 
   240 
   242 
   241 /*!
   243 /*!
   242    Handles back button press.
   244    Handles back button press.
   243    Removes the current view from the main window and activates the previous view.
   245    Removes the current view from the main window and activates the previous view.
   244    Destroys removed view.
   246    Destroys removed view.
   245 */
   247 */
   246 void NmSettingsViewFactory::backPress()
   248 void NmSettingsViewFactory::backPress()
   247 {
   249 {
   248     NMLOG(QString("NmSettingsViewFactory::backPress"));
   250     NM_FUNCTION;
   249 
   251     
   250     emit aboutToClose();
   252     emit aboutToClose();
   251     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
   253     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
   252     QList<HbView *> views = mainWindow->views();
   254     QList<HbView *> views = mainWindow->views();
   253     if (views.count() > 1) {
   255     if (views.count() > 1) {
   254         HbView *currentView = mainWindow->currentView();
   256         HbView *currentView = mainWindow->currentView();
   258             mainWindow->removeView(currentView);
   260             mainWindow->removeView(currentView);
   259             currentView->deleteLater();
   261             currentView->deleteLater();
   260         }
   262         }
   261         mPrevView = 0;
   263         mPrevView = 0;
   262     }
   264     }
   263 
       
   264     NMLOG(QString("NmSettingsViewFactory::backPress - OK"));
       
   265 }
   265 }
   266 
   266 
   267 /*!
   267 /*!
   268     Handles user selection from "No mailboxes defined" dialog. Launches the Mail Wizard if \a action
   268     Handles user selection from "No mailboxes defined" dialog. Launches the Mail Wizard if \a action
   269     is the dialog's primary action ("Yes"). Otherwise does nothing.
   269     is the dialog's primary action ("Yes"). Otherwise does nothing.
   270     \param action. Action selected by the user.
   270     \param action. Action selected by the user.
   271 */
   271 */
   272 void NmSettingsViewFactory::launchWizard(HbAction *action)
   272 void NmSettingsViewFactory::launchWizard(HbAction *action)
   273 {
   273 {
       
   274     NM_FUNCTION;
       
   275     
   274     if (action == mMessageBox->primaryAction()) {
   276     if (action == mMessageBox->primaryAction()) {
   275         // Launch mail wizard.
   277         // Launch mail wizard.
   276         NMLOG(QString("NmSettingsViewFactory::launchWizard(): Launching the mail wizard."));
   278         NM_COMMENT(QString("NmSettingsViewFactory::launchWizard(): launching the mail wizard"));
   277         QStringList args;
   279         QStringList args;
   278         args << mailWizardStartArgs;
   280         args << mailWizardStartArgs;
   279         QProcess::startDetached(mailWizardStartExe, args);
   281         QProcess::startDetached(mailWizardStartExe, args);
   280     }
   282     }
   281 }
   283 }
   283 /*!
   285 /*!
   284     Creates the "No mailboxes defined" dialog. Called from the constructors.
   286     Creates the "No mailboxes defined" dialog. Called from the constructors.
   285 */
   287 */
   286 void NmSettingsViewFactory::createMessageBox()
   288 void NmSettingsViewFactory::createMessageBox()
   287 {
   289 {
       
   290     NM_FUNCTION;
       
   291     
   288     mMessageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
   292     mMessageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
   289     mMessageBox->setText(hbTrId("txt_mail_dialog_no_mailboxes_create_new"));
   293     mMessageBox->setText(hbTrId("txt_mail_dialog_no_mailboxes_create_new"));
   290     mMessageBox->setTimeout(HbMessageBox::NoTimeout);
   294     mMessageBox->setTimeout(HbMessageBox::NoTimeout);
   291 }
   295 }
   292 
   296