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 { |