--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/appinstaller/AppMngr2/src/appmngr2pluginholder.cpp Tue Jan 26 12:06:03 2010 +0200
@@ -0,0 +1,129 @@
+/*
+* Copyright (c) 2008 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: Container class to hold Runtime plugin and related data
+*
+*/
+
+
+#include "appmngr2pluginholder.h" // CAppMngr2PluginHolder
+#include <appmngr2runtime.h> // CAppMngr2Runtime
+#include <appmngr2debugutils.h> // FLOG macros
+#include <AknIconArray.h> // CAknIconArray
+
+const TInt KIconGranularity = 8;
+const TInt KDataTypeGranularity = 8;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::CAppMngr2PluginHolder()
+// ---------------------------------------------------------------------------
+//
+CAppMngr2PluginHolder::CAppMngr2PluginHolder( CAppMngr2Runtime* aRuntime )
+ {
+ iRuntime = aRuntime;
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::~CAppMngr2PluginHolder()
+// ---------------------------------------------------------------------------
+//
+CAppMngr2PluginHolder::~CAppMngr2PluginHolder()
+ {
+ delete iRuntime;
+ delete iDataTypes;
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::
+// ---------------------------------------------------------------------------
+//
+CAppMngr2Runtime& CAppMngr2PluginHolder::Runtime()
+ {
+ return *iRuntime;
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::
+// ---------------------------------------------------------------------------
+//
+CDataTypeArray& CAppMngr2PluginHolder::DataTypes()
+ {
+ return *iDataTypes;
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::
+// ---------------------------------------------------------------------------
+//
+void CAppMngr2PluginHolder::LoadIconsL( CAknIconArray& aIconArray )
+ {
+ CAknIconArray* iconArray = new ( ELeave ) CAknIconArray( KIconGranularity );
+ CleanupStack::PushL( iconArray );
+
+ // Use temporary array to load icons from plugin. This prevents
+ // plugin from messing icons that other plugins have loaded.
+ TRAP_IGNORE( iRuntime->LoadIconsL( *iconArray ) );
+ iIconIndexBase = aIconArray.Count();
+ iIconCount = iconArray->Count();
+
+ // Insert icons in reverse order so that they can be removed
+ // from the iconArray while inserting in aIconArray. Icons must
+ // be inserted in the right position to maintain icon indexes
+ // (the same icon order as in iconArray).
+ TInt insertPosition = iIconIndexBase;
+ for( TInt index = iIconCount - 1; index >= 0; index-- )
+ {
+ // copies CGulIcon from iconArray to aIconArray
+ aIconArray.InsertL( insertPosition, iconArray->At( index ) );
+ iconArray->Delete( index );
+ }
+ CleanupStack::PopAndDestroy( iconArray );
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::
+// ---------------------------------------------------------------------------
+//
+void CAppMngr2PluginHolder::FetchDataTypesL()
+ {
+ if( iDataTypes )
+ {
+ delete iDataTypes;
+ iDataTypes = NULL;
+ }
+ iDataTypes = new (ELeave) CDataTypeArray( KDataTypeGranularity );
+ iRuntime->GetSupportedDataTypesL( *iDataTypes );
+ FLOG( "CAppMngr2PluginHolder::FetchDataTypesL: iDataTypes->Count() = %d",
+ iDataTypes->Count() );
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::
+// ---------------------------------------------------------------------------
+//
+TInt CAppMngr2PluginHolder::IconIndexBase()
+ {
+ return iIconIndexBase;
+ }
+
+// ---------------------------------------------------------------------------
+// CAppMngr2PluginHolder::
+// ---------------------------------------------------------------------------
+//
+TInt CAppMngr2PluginHolder::IconIndexMax()
+ {
+ return iIconIndexBase + iIconCount;
+ }