uifw/AvKon/src/AknViewAppUi.cpp
branchRCL_3
changeset 55 aecbbf00d063
parent 51 fcdfafb36fe7
child 56 d48ab3b357f1
equal deleted inserted replaced
51:fcdfafb36fe7 55:aecbbf00d063
     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