diff -r 8bda91a87a00 -r 8ee96d21d9bf gssettingsuis/Gs/GSFramework/src/GSShimmedView.cpp --- a/gssettingsuis/Gs/GSFramework/src/GSShimmedView.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,318 +0,0 @@ -/* -* Copyright (c) 2006-1008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Shim view -* -*/ - -#include "GSShimmedView.h" - -// System includes -#include -#include - -// User includes -#include "GSPluginAndViewIdCache.h" -#include -#include -#include - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------------------------------- -// CGSShimmedView::CGSShimmedView -// -// -// ---------------------------------------------------------------------------- -// -CGSShimmedView::CGSShimmedView( TUid aViewId, - CGSPluginAndViewIdCache& aCache, - CCoeAppUi& aAppUi ) -: CActive( KMaxTInt ), iViewId( aViewId ), iCache( aCache ), iAppUi( aAppUi ) - { - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::~CGSShimmedView -// -// -// ---------------------------------------------------------------------------- -// -CGSShimmedView::~CGSShimmedView() - { - Cancel(); - DeregisterView(); - iCache.HandleShimDestruction( iViewId ); - delete iCustomMessage; - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::ConstructL -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::ConstructL() - { - RegisterViewL(); - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::NewLC -// -// -// ---------------------------------------------------------------------------- -// -CGSShimmedView* CGSShimmedView::NewLC( TUid aViewId, - CGSPluginAndViewIdCache& aCache, - CCoeAppUi& aAppUi ) - { - CGSShimmedView* self = new(ELeave) CGSShimmedView( aViewId, aCache, aAppUi ); - CleanupStack::PushL( self ); - self->ConstructL(); - return self; - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::ViewId -// -// -// ---------------------------------------------------------------------------- -// -TVwsViewId CGSShimmedView::ViewId() const - { - const TVwsViewId ret( KUidGS, iViewId ); - return ret; - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::ViewActivatedL -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::ViewActivatedL( const TVwsViewId& aPrevViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - const TBool isLoaded = iCache.IsPluginLoaded( iViewId ); - if ( isLoaded == EFalse ) - { - HBufC8* customMessage = aCustomMessage.AllocL(); - delete iCustomMessage; - iCustomMessage = customMessage; - - iCustomMessageId = aCustomMessageId; - - iCache.SetPriorToPlaceholderActiveViewId( aPrevViewId ); - SetState( EStateActivatingPlaceholderView ); - } - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::ViewDeactivated -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::ViewDeactivated() - { - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::RunL -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::RunL() - { - // NB: At this point, we are the active view. - - switch( iState ) - { - default: - case EStateInactive: - break; - - case EStateActivatingPlaceholderView: - StateActivatePlaceholderViewL(); - break; - - case EStateLoadingPlugin: - StateLoadPluginL(); - break; - - case EStateDeletingSelf: - SetState( EStateInactive, EFalse ); - delete this; - break; - } - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::RegisterViewL -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::RegisterViewL() - { - iAppUi.RegisterViewL( *this ); - iIsRegistered = ETrue; - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::DeregisterView -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::DeregisterView() - { - if ( iIsRegistered ) - { - iAppUi.DeregisterView( *this ); - } - iIsRegistered = EFalse; - } - - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::DoCancel -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::DoCancel() - { - // Nothing to do here - requests already completed - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::SetState -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::SetState( TState aState, TBool aCompleteRequest ) - { - Cancel(); - // - iState = aState; - // - if ( aCompleteRequest ) - { - if ( !IsAdded() ) - { - // Add only on-demand to avoid cluttering the scheduler - CActiveScheduler::Add( this ); - } - - // Complete ourselves to continue activation process asynchronously - // via RunL(). - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); - SetActive(); - } - } - - -// ---------------------------------------------------------------------------- -// CGSShimmedView::StateActivatePlaceholderViewL -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::StateActivatePlaceholderViewL() - { - iCache.ActivatePlaceholderViewL(); - SetState( EStateLoadingPlugin ); - } - - -//Disabling warning caused by err variable used inside macros -#pragma diag_suppress 550 -// ---------------------------------------------------------------------------- -// CGSShimmedView::StateLoadPluginL -// -// -// ---------------------------------------------------------------------------- -// -void CGSShimmedView::StateLoadPluginL() - { - CAknViewAppUi& appUi = static_cast< CAknViewAppUi& >( iAppUi ); - - // As a fall back, we'll try to activate the view that was being - // displayed prior to us attempting to load a plugin. - TUid viewIdToActivate = iCache.PriorToPlaceholderActiveViewId().iViewUid; - - // Get the implementation uid that contains this view. - const TUid impUid = iCache.PluginImplementationUidForView( iViewId ); - - if ( impUid != KNullUid ) - { - CGSPluginLoader* loader = CGSPluginLoader::NewL( &appUi ); - CleanupStack::PushL( loader ); - - // Now try to load the specific instance of the GS plugin that - // implements the real view's concrete implementation. - // - // Since the act of loading a plugin will also attempt to register - // that plugin with the app ui (since a GS plugin "is a" view) we - // must first unregister the shim view. If there was an error - // loading the plugin, then we'll re-register the shim. - DeregisterView(); - - CGSPluginInterface* plugin = NULL; - TRAPD( loadError, plugin = &loader->LoadSyncL( KGSPluginInterfaceUid, impUid ) ); - CleanupStack::PopAndDestroy( loader ); - - if ( loadError == KErrNone ) - { - // .. and set us up to activate the newly loaded plugin view. - viewIdToActivate = iViewId; - - // Set ourselves up to be destroyed in the next RunL callback - SetState( EStateDeletingSelf ); - } - else - { - // Didn't manage to load plugin. Re-register the view - // and bail out. - SetState( EStateInactive, EFalse ); - RegisterViewL(); - } - } - - appUi.ActivateLocalViewL( viewIdToActivate, iCustomMessageId, *iCustomMessage ); - } -//Enabling warnings -#pragma diag_default 550 - - - - - -// End of File