diff -r 8bda91a87a00 -r 8ee96d21d9bf gssettingsuis/Gs/GSFramework/src/GSBaseDocument.cpp --- a/gssettingsuis/Gs/GSFramework/src/GSBaseDocument.cpp Thu Aug 19 10:12:30 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -/* -* Copyright (c) 2002-2005 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: Base Document for the General Settings Application -* -*/ - -#include "GSBaseDocument.h" - -// User includes -#include "GSPluginWrapper.h" -#include "GSPluginAndViewIdCache.h" -#include "GSWatchDog.h" -#include "gsplugininterface.h" -#include "GsLogger.h" - -// Constants -const TInt KGSPluginWrapperObjectGranularity = 10; - - -// ================= MEMBER FUNCTIONS ======================= - -// ---------------------------------------------------- -// CGSBaseDocument::CGSBaseDocument() -// constructor -// -// ---------------------------------------------------- -// -EXPORT_C CGSBaseDocument::CGSBaseDocument( CEikApplication& aApp ) -: CAknDocument( aApp ), - iUnloadWrapperObjects( KGSPluginWrapperObjectGranularity ), - iWatchDog ( NULL ) - { - } - - -// ---------------------------------------------------- -// CGSBaseDocument::~CGSBaseDocument() -// destructor -// -// ---------------------------------------------------- -// -EXPORT_C CGSBaseDocument::~CGSBaseDocument() - { - // This physically unloads the plugin dlls if their ECOM - // reference count is zero. This must be the last thing to - // occur to any plugin object (i.e. all of its code must have - // finished running by the time this next line takes place). - const TInt count = iUnloadWrapperObjects.Count(); - for( TInt i=count-1; i>=0; i-- ) - { - CGSPluginWrapper* object = iUnloadWrapperObjects[ i ]; - (void) object; - delete object; - } - - iUnloadWrapperObjects.Close(); - delete iPluginViewIdCache; -#ifdef GS_ENABLE_WATCH_DOG - delete iWatchDog; -#endif - - iImplInfoArray.ResetAndDestroy();// This is needed - iImplInfoArray.Close(); - } - - -// ---------------------------------------------------- -// CGSBaseDocument::ConstructL() -// Symbian OS second phase constructor -// -// ---------------------------------------------------- -// -EXPORT_C void CGSBaseDocument::ConstructL() - { -#ifdef GS_ENABLE_WATCH_DOG - iWatchDog = CGSWatchDog::NewL(); -#endif - - REComSession::ListImplementationsL( - KGSPluginInterfaceUid, - iImplInfoArray ); -#ifdef _DEBUG - PrintImplInfoArray( iImplInfoArray ); -#endif //_DEBUG - - __GSLOGSTRING1( - "[CGSBaseDocument::ConstructL] iImplInfoArray count:%d", - iImplInfoArray.Count() ); - } - - -// ---------------------------------------------------- -// CGSBaseDocument::NewPluginUnloadWrapperLC() -// -// -// ---------------------------------------------------- -// -EXPORT_C CGSPluginWrapper* CGSBaseDocument::NewPluginUnloadWrapperLC() - { - CGSPluginWrapper* wrapper = new(ELeave) CGSPluginWrapper( *this ); - TCleanupItem wrapperCleanupItem( CleanupPluginWrapperObject, wrapper ); - CleanupStack::PushL( wrapperCleanupItem ); - iUnloadWrapperObjects.AppendL( wrapper ); - // - return wrapper; - } - - -// ---------------------------------------------------- -// CGSBaseDocument::PreparePluginCacheL() -// -// -// ---------------------------------------------------- -// -EXPORT_C void CGSBaseDocument::PreparePluginCacheL( CEikAppUi& aAppUi ) - { - iPluginViewIdCache = CGSPluginAndViewIdCache::NewL( aAppUi ); - } - - -// ---------------------------------------------------- -// CGSBaseDocument::PrepareForUIDestruction() -// -// -// ---------------------------------------------------- -// -EXPORT_C void CGSBaseDocument::PrepareForUIDestruction() - { - if ( iPluginViewIdCache ) - { - iPluginViewIdCache->PrepareForUIDestruction(); - } - } - - -// ---------------------------------------------------- -// CGSBaseDocument::CleanupPluginWrapperObject() -// Cleanup support -// -// ---------------------------------------------------- -// -void CGSBaseDocument::CleanupPluginWrapperObject( TAny* aWrapper ) - { - CGSPluginWrapper* wrapper = - reinterpret_cast< CGSPluginWrapper* >( aWrapper ); - CGSBaseDocument& document = wrapper->Document(); - document.DoCleanupPluginWrapper( wrapper ); - } - - -// ---------------------------------------------------- -// CGSBaseDocument::DoCleanupPluginWrapper() -// Cleanup support - called when loading a plugin fails -// -// ---------------------------------------------------- -// -void CGSBaseDocument::DoCleanupPluginWrapper( CGSPluginWrapper* aWrapper ) - { - const TInt index = iUnloadWrapperObjects.Find( aWrapper ); - if ( index >= 0 && index < iUnloadWrapperObjects.Count() ) - { - iUnloadWrapperObjects.Remove( index ); - delete aWrapper; - } - } - - -// ---------------------------------------------------- -// CGSBaseDocument::PluginViewIdCache() -// -// -// ---------------------------------------------------- -// -CGSPluginAndViewIdCache& CGSBaseDocument::PluginViewIdCache() - { - ASSERT( iPluginViewIdCache ); - return *iPluginViewIdCache; - } - - -// ---------------------------------------------------- -// CGSBaseDocument::PluginViewIdCache() -// -// -// ---------------------------------------------------- -// -const CGSPluginAndViewIdCache& CGSBaseDocument::PluginViewIdCache() const - { - ASSERT( iPluginViewIdCache ); - return *iPluginViewIdCache; - } - - - -// ---------------------------------------------------- -// CGSBaseDocument::WatchDog() -// -// -// ---------------------------------------------------- -// -EXPORT_C MGSWatchDog* CGSBaseDocument::WatchDog() - { - return iWatchDog; - } - -// ---------------------------------------------------- -// CGSBaseDocument::GetImplInfos() -// -// -// ---------------------------------------------------- -// -EXPORT_C RImplInfoPtrArray CGSBaseDocument::GetImplInfo() - { - return iImplInfoArray; - } - -EXPORT_C void CGSBaseDocument::CreateShimmedViewL(const TUid aViewUid) - { - ASSERT(iPluginViewIdCache); - if ( !iPluginViewIdCache->PluginInstance(aViewUid) ) - { - iPluginViewIdCache->RegisterViewAndImplementationAssociationL(aViewUid, aViewUid, ETrue); - } - } - -void CGSBaseDocument::PrintImplInfoArray( const RImplInfoPtrArray& aImplInfoArray ) - { - for( TInt i = 0; i < aImplInfoArray.Count(); i++ ) - { - PrintImplInfo( *aImplInfoArray[ i ] ); - } - } - - -void CGSBaseDocument::PrintImplInfo( const CImplementationInformation& aInfo ) - { - __GSLOGSTRING1( "[CGSBaseDocument] --Plugin 0x%X info--", &aInfo); - __GSLOGSTRING1( "[CGSBaseDocument] DisplayName:%S", &aInfo.DisplayName() ); - __GSLOGSTRING1( "[CGSBaseDocument] ImplementationUid:0x%X", - aInfo.ImplementationUid() ); - - const TInt KMaxEComDataLength = 256; - - HBufC* dataType = HBufC::New( KMaxEComDataLength ); - HBufC* opaqueData = HBufC::New( KMaxEComDataLength ); - - dataType->Des().Copy( aInfo.DataType() ); - opaqueData->Des().Copy( aInfo.OpaqueData() ); - __GSLOGSTRING1( "[CGSBaseDocument] DataType:%S", dataType ); - __GSLOGSTRING1( "[CGSBaseDocument] OpaqueData:%S", opaqueData ); - - delete opaqueData; - delete dataType; - } - - - -// End of File