equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). |
2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). |
3 * All rights reserved. |
3 * All rights reserved. |
4 * This component and the accompanying materials are made available |
4 * This component and the accompanying materials are made available |
5 * under the terms of "Eclipse Public License v1.0" |
5 * under the terms of "Eclipse Public License v1.0" |
6 * which accompanies this distribution, and is available |
6 * which accompanies this distribution, and is available |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
25 #include <eikcolib.h> |
25 #include <eikcolib.h> |
26 #include <eikapp.h> |
26 #include <eikapp.h> |
27 #include <aknclearer.h> |
27 #include <aknclearer.h> |
28 #include <AknUtils.h> |
28 #include <AknUtils.h> |
29 #include <akntoolbar.h> |
29 #include <akntoolbar.h> |
30 #include <akntranseffect.h> |
|
31 #include <centralrepository.h> |
|
32 |
|
33 |
|
34 #include "aknview.h" |
30 #include "aknview.h" |
35 #include "aknshut.h" |
31 #include "aknshut.h" |
36 #include "aknenv.h" |
32 #include "aknenv.h" |
37 #include "AknPanic.h" |
33 #include "AknPanic.h" |
38 #ifdef RD_SPLIT_VIEW |
34 #ifdef RD_SPLIT_VIEW |
45 #include "aknViewAppUi.h" |
41 #include "aknViewAppUi.h" |
46 |
42 |
47 // CONSTANTS |
43 // CONSTANTS |
48 const TInt KAknAppUiViewsGranularity = 1; |
44 const TInt KAknAppUiViewsGranularity = 1; |
49 const TInt KAknViewAsyncPriority = EActivePriorityRedrawEvents + 10; |
45 const TInt KAknViewAsyncPriority = EActivePriorityRedrawEvents + 10; |
50 |
|
51 |
|
52 #ifdef RD_SPLIT_VIEW |
46 #ifdef RD_SPLIT_VIEW |
53 const TInt KAknSplitViewSize = 2; |
47 const TInt KAknSplitViewSize = 2; |
54 |
48 |
55 // MODULE DATA STRUCTURES |
49 // MODULE DATA STRUCTURES |
56 enum TAknViewAppUiFlags |
50 enum TAknViewAppUiFlags |
232 |
226 |
233 #ifdef RD_SPLIT_VIEW |
227 #ifdef RD_SPLIT_VIEW |
234 iExtension->iNavigator = new ( ELeave ) CAknViewNavigator( this ); |
228 iExtension->iNavigator = new ( ELeave ) CAknViewNavigator( this ); |
235 AddToStackL( iExtension->iNavigator, ECoeStackPriorityDefault - 1, ECoeStackFlagRefusesFocus ); |
229 AddToStackL( iExtension->iNavigator, ECoeStackPriorityDefault - 1, ECoeStackFlagRefusesFocus ); |
236 #endif // RD_SPLIT_VIEW |
230 #endif // RD_SPLIT_VIEW |
237 |
231 |
238 // Only clear the window for foreground apps. |
232 if ( iEikonEnv->RootWin().OrdinalPosition() == 0 && // only clear the window for foreground apps |
239 if ( iEikonEnv->RootWin().OrdinalPosition() == 0 && |
|
240 iExtension->iUseDefaultScreenClearer ) |
233 iExtension->iUseDefaultScreenClearer ) |
241 { |
234 { |
242 if ( !iEikonEnv->StartedAsServerApp() ) |
235 iClearer = CAknLocalScreenClearer::NewL( ETrue ); |
243 { |
236 } |
244 iClearer = CAknLocalScreenClearer::NewL( ETrue ); |
|
245 } |
|
246 else |
|
247 { |
|
248 iClearer = CAknLocalScreenClearer::NewL( ETrue, ETrue ); |
|
249 } |
|
250 } |
|
251 } |
237 } |
252 |
238 |
253 // ----------------------------------------------------------------------------- |
239 // ----------------------------------------------------------------------------- |
254 // CAknViewAppUi::~CAknViewAppUi |
240 // CAknViewAppUi::~CAknViewAppUi |
255 // Destructor. |
241 // Destructor. |
259 { |
245 { |
260 #ifdef RD_SPLIT_VIEW |
246 #ifdef RD_SPLIT_VIEW |
261 if (iExtension && iExtension->iNavigator ) |
247 if (iExtension && iExtension->iNavigator ) |
262 RemoveFromStack( iExtension->iNavigator ); |
248 RemoveFromStack( iExtension->iNavigator ); |
263 #endif // RD_SPLIT_VIEW |
249 #endif // RD_SPLIT_VIEW |
264 |
250 |
265 // Hide application toolbar to prevent it from showing |
251 // Hide application toolbar to prevent it from showing |
266 // after views are deleted |
252 // after views are deleted |
267 if ( CAknAppUi::CurrentFixedToolbar() ) |
253 if ( CAknAppUi::CurrentFixedToolbar() ) |
268 { |
254 { |
269 CAknAppUi::CurrentFixedToolbar()->SetToolbarVisibility( EFalse ); |
255 CAknAppUi::CurrentFixedToolbar()->SetToolbarVisibility( EFalse ); |
270 } |
256 } |
271 |
257 |
272 delete iClearer; |
258 delete iClearer; |
273 delete iShutter; |
259 delete iShutter; |
274 delete iActivationTick; |
260 delete iActivationTick; |
275 |
261 |
276 if ( iActivationQueue ) |
262 if ( iActivationQueue ) |
277 { |
263 { |
278 iActivationQueue->ResetAndDestroy(); |
264 iActivationQueue->ResetAndDestroy(); |
279 delete iActivationQueue; |
265 delete iActivationQueue; |
280 } |
266 } |
324 { |
310 { |
325 const TInt count( iViews->Count() ); |
311 const TInt count( iViews->Count() ); |
326 |
312 |
327 for ( TInt i = 0; i < count; ++i ) |
313 for ( TInt i = 0; i < count; ++i ) |
328 { |
314 { |
329 CAknView* view( iViews->At( i ) ); |
315 CAknView* view( iViews->At( i ) ); |
330 if ( view->Id() == aViewId ) |
316 |
331 { |
317 if ( view->Id() == aViewId ) |
332 // remove the deleted view from iExtensione's list. Or the pointer |
318 { |
333 // is invalid |
319 iViews->Delete( i ); |
334 TInt index = iExtension->iActiveViews.Find(view); |
320 CCoeAppUi::DeregisterView( *view ); |
335 if ( index >= 0 && index < iExtension->iActiveViews.Count() ) |
321 delete view; |
336 { |
322 return; |
337 iExtension->iActiveViews.Remove(index); |
323 } |
338 view->AknViewDeactivated(); |
|
339 } |
|
340 |
|
341 iViews->Delete( i ); |
|
342 CCoeAppUi::DeregisterView( *view ); |
|
343 delete view; |
|
344 return; |
|
345 } |
|
346 } |
324 } |
347 } |
325 } |
348 |
326 |
349 // ----------------------------------------------------------------------------- |
327 // ----------------------------------------------------------------------------- |
350 // CAknViewAppUi::View |
328 // CAknViewAppUi::View |
631 |
609 |
632 // Number of views is always smaller than already reserved array |
610 // Number of views is always smaller than already reserved array |
633 // (default granularity is 8) -> no memory allocation failures. |
611 // (default granularity is 8) -> no memory allocation failures. |
634 if ( splitView ) |
612 if ( splitView ) |
635 { |
613 { |
636 error = iExtension->iActiveViews.Append( View( splitView->iViewIds[0] ) ); |
614 iExtension->iActiveViews.Append( View( splitView->iViewIds[0] ) ); |
637 if (KErrNone == error) |
615 iExtension->iActiveViews.Append( View( splitView->iViewIds[1] ) ); |
638 { |
|
639 error = iExtension->iActiveViews.Append( View( splitView->iViewIds[1] ) ); |
|
640 } |
|
641 } |
616 } |
642 else |
617 else |
643 { |
618 { |
644 error = iExtension->iActiveViews.Append( item->iNewView ); |
619 iExtension->iActiveViews.Append( item->iNewView ); |
645 } |
620 } |
646 |
621 |
647 iView = item->iNewView; |
622 iView = item->iNewView; |
648 } |
623 } |
649 else |
624 else |