111 } |
111 } |
112 |
112 |
113 CNT_EXIT |
113 CNT_EXIT |
114 } |
114 } |
115 |
115 |
116 void CntDefaultViewManager::back(const CntViewParameters aArgs) |
116 void CntDefaultViewManager::back(const CntViewParameters aArgs, bool toRoot) |
117 { |
117 { |
118 CNT_ENTRY |
118 CNT_ENTRY |
119 |
119 |
120 mArgs.clear(); |
120 mArgs.clear(); |
121 |
121 |
122 QFlags<Hb::ViewSwitchFlag> flags; |
122 QFlags<Hb::ViewSwitchFlag> flags; |
123 int back = mNavigator->back( flags ); |
123 int back = mNavigator->back( flags, toRoot ); |
124 |
124 |
125 foreach( int k, aArgs.keys() ) |
125 foreach( int k, aArgs.keys() ) |
126 { |
126 { |
127 mArgs.insert( k, aArgs.value(k) ); |
127 mArgs.insert( k, aArgs.value(k) ); |
128 } |
128 } |
207 disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(deleteOldView())); |
204 disconnect(mMainWindow, SIGNAL(viewReady()), this, SLOT(deleteOldView())); |
208 |
205 |
209 if (mOldView) |
206 if (mOldView) |
210 { |
207 { |
211 mOldView->deactivate(); |
208 mOldView->deactivate(); |
212 |
209 |
213 // Due to something strange in wk16, this check will fail occationally and cause |
210 HbView* oldView = mOldView->view(); |
214 // a memory leak... most likely when opening edit view for the first time |
211 mMainWindow->removeView( oldView ); |
215 if (mCurrent == NULL || !mOldView->view()->isVisible()) |
212 |
216 { |
213 if (!mOldView->isDefault()) |
217 mMainWindow->removeView(mOldView->view()); |
214 { |
218 |
215 delete mOldView; |
219 if (!mOldView->isDefault()) |
216 mOldView = NULL; |
220 { |
217 } |
221 delete mOldView; |
218 // If view id is not in defaults list, it means that view has changed |
222 mOldView = NULL; |
219 // its opinnion about preserving state to true. |
223 } |
220 else if ( !mDefaults.contains(mOldView->viewId()) ) |
224 // If view id is not in defaults list, it means that view has changed |
221 { |
225 // its opinnion about preserving state to true. |
222 mDefaults.insert( mOldView->viewId(), mOldView ); |
226 else if ( !mDefaults.contains(mOldView->viewId()) ) |
223 } |
227 { |
224 } |
228 mDefaults.insert( mOldView->viewId(), mOldView ); |
|
229 } |
|
230 } |
|
231 } |
|
232 |
|
233 mMainWindow->setInteractive(true); |
|
234 |
225 |
235 CNT_EXIT |
226 CNT_EXIT |
236 } |
227 } |
237 |
228 |
238 void CntDefaultViewManager::switchView(const CntViewParameters aArgs, QFlags<Hb::ViewSwitchFlag> flags) |
229 void CntDefaultViewManager::switchView(const CntViewParameters aArgs, QFlags<Hb::ViewSwitchFlag> flags) |
239 { |
230 { |
240 CNT_ENTRY |
231 CNT_ENTRY |
241 |
232 |
242 mMainWindow->setInteractive(false); |
|
243 int id = aArgs.value(EViewId).toInt(); |
233 int id = aArgs.value(EViewId).toInt(); |
244 if ( id != noView ) |
234 if ( id != noView ) |
245 { |
235 { |
246 CntAbstractView* nextView(NULL); |
236 CntAbstractView* nextView(NULL); |
247 if (mDefaults.contains(id)) |
237 if (mDefaults.contains(id)) |