psln/PslnFramework/src/PslnFWPluginHandler.cpp
changeset 37 89c890c70182
parent 34 6b5204869ed5
child 45 667edd0b8678
--- a/psln/PslnFramework/src/PslnFWPluginHandler.cpp	Fri Jun 25 18:53:58 2010 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,264 +0,0 @@
-/*
-* Copyright (c) 2005-2007 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 class for plugins containing other plugins.
-*
-*/
-
-
-// INCLUDE FILES
-#include "pslnfwpluginhandler.h"
-#include "PslnDebug.h"
-
-const TInt KPslnFWGeneralThemeViewLocation = 0;
-const TInt KPslnFWWallpaperViewLocation = 3;
-const TInt KPslnFWScreensaverViewLocation = 4;
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CPslnFWPluginHandler::NewL()
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPslnFWPluginHandler* CPslnFWPluginHandler::NewL(
-    CAknViewAppUi* aAppUi, CArrayPtrFlat<CPslnFWPluginInterface>* aPluginArray )
-    {
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::NewL");
-    CPslnFWPluginHandler* self =
-        new ( ELeave) CPslnFWPluginHandler( aAppUi, aPluginArray );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// CPslnFWPluginHandler::CPslnFWPluginHandler()
-// ---------------------------------------------------------------------------
-//
-CPslnFWPluginHandler::CPslnFWPluginHandler(
-    CAknViewAppUi* aAppUi, CArrayPtrFlat<CPslnFWPluginInterface>* aPluginArray )
-    : iAppUi( aAppUi ), iPluginArray( aPluginArray )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPslnFWPluginHandler::~CPslnFWPluginHandler()
-    {
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::destructor");
-    iImplInfoArray.ResetAndDestroy();
-    // iPluginArray is not owned, and thus not deleted.
-    }
-
-// ---------------------------------------------------------------------------
-// Loads all found plugins.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CPslnFWPluginHandler::LoadPluginsL(
-    CArrayPtrFlat<CPslnFWPluginInterface>* aPluginArray )
-    {
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::LoadPluginsL BEGIN");
-    if ( iPluginArray )
-        {
-        iPluginArray = aPluginArray;
-        }
-    else
-        {
-        User::Leave( KErrArgument );
-        }
-
-    REComSession::ListImplementationsL(
-        KPslnFWPluginInterfaceUid,
-        iImplInfoArray );
-
-    // Reset iterator:
-    iImplInfoArrayIterator = 0;
-
-    LoadNextPlugin();
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::LoadPluginsL END");
-    }
-
-// ---------------------------------------------------------------------------
-// Loads one specific plugin.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPslnFWPluginInterface* CPslnFWPluginHandler::LoadPluginL( const TUid aPluginId )
-    {
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::LoadPluginL BEGIN");
-    REComSession::ListImplementationsL(
-        KPslnFWPluginInterfaceUid,
-        iImplInfoArray );
-
-    // Reset iterator:
-    iImplInfoArrayIterator = 0;
-
-    // Iterate through iImplInfoArray.
-    for( ; iImplInfoArrayIterator < iImplInfoArray.Count();  )
-        {
-        CImplementationInformation* info =
-            iImplInfoArray[ iImplInfoArrayIterator ];
-        TUid implUid = info->ImplementationUid();
-
-        if ( implUid.iUid == aPluginId.iUid )
-            {
-            // Create a plugin.
-            CPslnFWPluginInterface* plugin = CPslnFWPluginInterface::NewL(
-                aPluginId,
-                iAppUi );
-            // Ownership transferred.
-            PSLN_TRACE_DEBUG("CPslnFWPluginHandler::LoadPluginL plugin found");
-            return plugin;
-            }
-
-        iImplInfoArrayIterator++;
-        }
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::LoadPluginL END");
-    return NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// Constructor without array.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CPslnFWPluginHandler* CPslnFWPluginHandler::NewL( CAknViewAppUi* aAppUi )
-    {
-    PSLN_TRACE_DEBUG("CPslnFWPluginHandler::NewL 2");
-    CPslnFWPluginHandler* self =
-        new ( ELeave) CPslnFWPluginHandler( aAppUi, NULL );
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// Iterate through iImplInfoArray. Load the plugin if it is eligible for
-// loading. Loaded plugin is added to iPluginArray.
-// ----------------------------------------------------------------------------
-//
-void CPslnFWPluginHandler::LoadNextPlugin()
-    {
-    // Iterate through iImplInfoArray.
-    for( ; iImplInfoArrayIterator < iImplInfoArray.Count();  )
-        {
-        CImplementationInformation* info =
-            iImplInfoArray[ iImplInfoArrayIterator ];
-        TUid implUid = info->ImplementationUid();
-
-        iImplInfoArrayIterator++;
-
-        // Load plugin - if it fails, just go to next one.
-        TRAP_IGNORE( AppendPluginL( implUid ) );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// Inserts plugin to plugin-array.
-// ----------------------------------------------------------------------------
-//
-void CPslnFWPluginHandler::AppendPluginL( const TUid& aImplUid )
-    {
-    // Create a plugin.
-    CPslnFWPluginInterface* plugin = CPslnFWPluginInterface::NewL(
-        aImplUid,
-        iAppUi );
-    CleanupStack::PushL ( plugin );
-
-    CPslnFWPluginInterface::TPslnFWLocationType locType =
-        CPslnFWPluginInterface::EPslnFWNotSpecified;
-    TInt location = KErrNotFound;
-    plugin->GetLocationTypeAndIndex( locType, location );
-
-
-    // If plugin claims invalid location, OR location is not specified,
-    // append to the end.
-    if ( IsInvalidLocation( location ) ||
-        locType == CPslnFWPluginInterface::EPslnFWNotSpecified )
-        {
-        if ( iPluginArray )
-            {
-            iPluginArray->AppendL( plugin );
-            }
-        }
-    else
-        {
-        CPslnFWPluginInterface* arrayPlugin = NULL;
-
-        CPslnFWPluginInterface::TPslnFWLocationType pluginLocType =
-            CPslnFWPluginInterface::EPslnFWNotSpecified;
-        TInt pluginLoc = KErrNotFound;
-        TInt count = iPluginArray->Count();
-
-        // Exception - first item, is always appended
-        if ( count == 0 )
-            {
-            iPluginArray->AppendL( plugin );
-            }
-        else
-            {
-            // Loop through the plugin array, trying to find best location for the plugin.
-            TBool breakLoop = EFalse;
-            for ( TInt i = 0; i < count; i++ )
-                {
-                arrayPlugin = iPluginArray->At( i );
-                arrayPlugin->GetLocationTypeAndIndex( pluginLocType, pluginLoc );
-                if ( pluginLocType == CPslnFWPluginInterface::EPslnFWNotSpecified )
-                    {
-                    // There are no more valid locations, insert here
-                    iPluginArray->InsertL( i, plugin );
-                    breakLoop = ETrue;
-                    }
-                if ( pluginLoc == location )
-                    {
-                    // Mismatch - plugin location already claimed.
-                    // Append plugin to last position in the array.
-                    iPluginArray->AppendL( plugin );
-                    breakLoop = ETrue;
-                    }
-                else if ( pluginLoc < location )
-                    {
-                    // Do nothing go to next inserted plugin
-                    }
-                else
-                    {
-                    // This location is best for the new plugin.
-                    iPluginArray->InsertL( i, plugin );
-                    breakLoop = ETrue;
-                    }
-                // If plugin has been inserted, or appended, break the loop.
-                if ( breakLoop )
-                    {
-                    i = count;
-                    }
-                }
-            }
-        }
-
-    // Transfer ownership to array.
-    CleanupStack::Pop ( plugin );
-    }
-
-// ----------------------------------------------------------------------------
-// Checks if the plugin tries to claim invalid location.
-// ----------------------------------------------------------------------------
-//
-TBool CPslnFWPluginHandler::IsInvalidLocation( const TInt& aLoc ) const
-    {
-    TBool retVal = ETrue;
-    if ( aLoc == KPslnFWGeneralThemeViewLocation ||
-         aLoc == KPslnFWWallpaperViewLocation ||
-         aLoc == KPslnFWScreensaverViewLocation )
-        {
-        retVal = EFalse;
-        }
-    return retVal;
-    }
-
-// End of File