emailuis/nmsettingui/src/nmsettingsviewfactory.cpp
changeset 48 10eaf342f539
parent 43 99bcbff212ad
child 51 d845db10c0d4
equal deleted inserted replaced
47:f83bd4ae1fe3 48:10eaf342f539
   178     NM_FUNCTION;
   178     NM_FUNCTION;
   179     
   179     
   180     // There's always at least one valid main window available.
   180     // There's always at least one valid main window available.
   181     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
   181     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
   182 
   182 
   183     CpBaseSettingView *view =
   183     NmMailboxSettingView *currentSettingsView = 
   184         new NmMailboxSettingView(mailboxId, mailboxName, *mSettingsManager);
   184         qobject_cast<NmMailboxSettingView*>(mainWindow->currentView());
   185 
   185     
   186     connect(mSettingsManager,
   186     // Let's have only one same settings view at a time open, 
   187             SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   187     // but if some other mailboxes settings view want's to open while 
   188             view, SLOT(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
   188     // there is a settings view open let's open it also.
   189 
   189     if (!currentSettingsView || (currentSettingsView->mailboxId().id() != mailboxId.id())) {
   190     connect(mSettingsManager,
   190         CpBaseSettingView *view =
   191             SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   191              new NmMailboxSettingView(mailboxId, mailboxName, *mSettingsManager);
   192             view, SLOT(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   192          
   193 
   193          connect(mSettingsManager,
   194     // Disconnect mSettingsViewLauncher's previous connections to be sure that signals which are
   194                  SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   195     // offered out will be sent last.
   195                  view, SLOT(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
   196     mSettingsManager->disconnect(
   196      
   197         SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   197          connect(mSettingsManager,
   198         mSettingsViewLauncher,
   198                  SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   199         SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
   199                  view, SLOT(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   200 
   200      
   201     mSettingsManager->disconnect(
   201          // Disconnect mSettingsViewLauncher's previous connections to 
   202         SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   202          // be sure that signals which are offered out will be sent last.
   203         mSettingsViewLauncher,
   203          mSettingsManager->disconnect(
   204         SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   204              SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   205 
   205              mSettingsViewLauncher,
   206 
   206              SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
   207     // Reconnect mSettingsViewLauncher.
   207      
   208     connect(mSettingsManager,
   208          mSettingsManager->disconnect(
   209             SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   209              SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   210             mSettingsViewLauncher,
   210              mSettingsViewLauncher,
   211             SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
   211              SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   212 
   212      
   213     connect(mSettingsManager,
   213          // Reconnect mSettingsViewLauncher.
   214             SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   214          connect(mSettingsManager,
   215             mSettingsViewLauncher,
   215                  SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)),
   216             SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   216                  mSettingsViewLauncher,
   217 
   217                  SIGNAL(mailboxListChanged(const NmId &, NmSettings::MailboxEventType)));
   218     connect(mSettingsManager,
   218      
   219             SIGNAL(goOnline(const NmId &)),
   219          connect(mSettingsManager,
   220             mSettingsViewLauncher,
   220                  SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
   221             SIGNAL(goOnline(const NmId &)), Qt::UniqueConnection);
   221                  mSettingsViewLauncher,
   222 
   222                  SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
   223     connect(mSettingsManager,
   223      
   224             SIGNAL(goOffline(const NmId &)),
   224          connect(mSettingsManager,
   225             mSettingsViewLauncher,
   225                  SIGNAL(goOnline(const NmId &)),
   226             SIGNAL(goOffline(const NmId &)), Qt::UniqueConnection);
   226                  mSettingsViewLauncher,
   227 
   227                  SIGNAL(goOnline(const NmId &)), Qt::UniqueConnection);
   228     connect(this,
   228      
   229             SIGNAL(aboutToClose()),
   229          connect(mSettingsManager,
   230             mSettingsManager,
   230                  SIGNAL(goOffline(const NmId &)),
   231             SIGNAL(aboutToClose()), Qt::UniqueConnection);
   231                  mSettingsViewLauncher,
   232 
   232                  SIGNAL(goOffline(const NmId &)), Qt::UniqueConnection);
   233     // Create back navigation action for a view.
   233      
   234     HbAction *action = new HbAction(Hb::BackNaviAction, view);
   234          connect(this,
   235     connect(action, SIGNAL(triggered()), this, SLOT(backPress()));
   235                  SIGNAL(aboutToClose()),
   236     view->setNavigationAction(action);
   236                  mSettingsManager,
   237     mPrevView = mainWindow->currentView();
   237                  SIGNAL(aboutToClose()), Qt::UniqueConnection);
   238     mainWindow->addView(view);
   238      
   239     mainWindow->setCurrentView(view);
   239          // Create back navigation action for a view.
   240 }
   240          HbAction *action = new HbAction(Hb::BackNaviAction, view);
   241 
   241          connect(action, SIGNAL(triggered()), this, SLOT(backPress()));
   242 
   242          view->setNavigationAction(action);
   243 /*!
   243          mPrevView = mainWindow->currentView();
   244    Handles back button press.
   244          mainWindow->addView(view);
       
   245          mainWindow->setCurrentView(view);
       
   246     }    
       
   247 }
       
   248 
       
   249 /*!
       
   250    Handels back button press.
   245    Removes the current view from the main window and activates the previous view.
   251    Removes the current view from the main window and activates the previous view.
   246    Destroys removed view.
   252    Destroys removed view.
   247 */
   253 */
   248 void NmSettingsViewFactory::backPress()
   254 void NmSettingsViewFactory::backPress()
   249 {
   255 {