idlefw/tsrc/framework/mt_aifw/AiFwTestControllerPlugin.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 18:59:18 +0300
branchRCL_3
changeset 27 2c7f27287390
permissions -rw-r--r--
Revision: 201025 Kit: 2010127

/*
* 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: 
*
*/


// ========== INCLUDE FILES ===================================================

#include "AiFwTestControllerPlugin.h"

#include <e32std.h>

#include "AiFwTestDefines.h"
#include "AiFwTestContentModel.h"

#include <aipluginsettings.h>
#include "aifweventhandler.h"
#include <aicontentmodel.h>
#include <aiutility.h>
#include "aiuiframeworkobserver.h"
using namespace AiTestUiController;


// ========== MEMBER FUNCTIONS ================================================

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
CAiFwTestControllerPlugin::CAiFwTestControllerPlugin()
    {
    }

EXPORT_C CAiFwTestControllerPlugin* CAiFwTestControllerPlugin::Instance()
    {
    TAny* ptr = Dll::Tls();
    
    if ( ptr )
        {
        TAiTestTLSStorage* tlsSet = static_cast<TAiTestTLSStorage*>( ptr );
        return tlsSet->iControllerPlugin;
        }
    return NULL;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
void CAiFwTestControllerPlugin::ConstructL()
    {
       TAiTestTLSStorage* tlsSet = TAiTestTLSStorage::CreateInstanceL();
    tlsSet->iControllerPlugin = this;

    iContent   = AiUtility::CreateContentItemArrayIteratorL(KTestPluginContent);
    iResources = AiUtility::CreateContentItemArrayIteratorL(KTestPluginResources);
    iEvents    = AiUtility::CreateContentItemArrayIteratorL(KTestPluginEvents);
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
CAiFwTestControllerPlugin* CAiFwTestControllerPlugin::NewL()
    {
    CAiFwTestControllerPlugin* self = new (ELeave) CAiFwTestControllerPlugin();
    
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();
    
    return self;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
CAiFwTestControllerPlugin::~CAiFwTestControllerPlugin()
    {
       TAiTestTLSStorage::DestroyInstance();
    Release( iContent );
    Release( iResources );
    Release( iEvents );
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::StartTransaction(TInt /*aTxId*/)
    {
    return 0;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::Commit(TInt /*aTxId*/)
    {
    return 0;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::CancelTransaction(TInt /*aTxId*/)
    {
    return 0;
    }

TBool CAiFwTestControllerPlugin::CanPublish( MAiPropertyExtension& /*aPlugin*/,
                                             TInt /*aContent*/,
                                             TInt /*aIndex*/ )
    {
    return EFalse;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::Publish( MAiPropertyExtension& /*aPlugin*/,
                              TInt /*aContent*/, TInt /*aResource*/, TInt /*aIndex*/ )
    {
    /*  // Read ref value.
        MAiContentItemIterator* i =
            (MAiContentItemIterator*) aPlugin->GetPropertyL( EAiPublisherResources );

        const TAiContentItem& ref = i->ItemL( aResource );
        
        const TDesC8& refType = ContentType( ref );
        const TDesC& refCid = ContentCid( ref );
        
        if ( refType.Match( KDataTypeText ) != KErrNotFound )
            {
            const TDesC* text = GetText( refCid );
            
            if ( text )
                {
                HBufC8* buf8 = HBufC8::NewLC( text->Length() );
                buf8->Des().Copy( *text );
                TPtrC8 ptr = buf8->Des();
                Publish( aPlugin, aContent, ptr );
                CleanupStack::PopAndDestroy(); // buf8
                }
            }
        
        // TODO: Support another types.
        */        

    
    return 0;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::Publish( MAiPropertyExtension& /*aPlugin*/,
                              TInt /*aContent*/, const TDesC16& /*aBuf*/, TInt /*aIndex*/ )
    {
    /*
        MAiContentItemIterator* i =
            (MAiContentItemIterator*) aPlugin->GetPropertyL( EAiPublisherContent );

        const TAiContentItem& item = i->ItemL( aContent );
        
        const TDesC8& type = ContentType( item );
        const TDesC& cid = ContentCid( item );
        
        if ( type.Match( KDataTypeText ) != KErrNotFound )
            {
            SetText( cid, aBuf );
            }
        
        // TODO: Support another types.
        
        */
    
    return 0;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::Publish( MAiPropertyExtension& /*aPlugin*/,
                              TInt /*aContent*/, const TDesC8& /*aBuf*/, TInt /*aIndex */)
    {
    /*
        MAiContentItemIterator* i =
            (MAiContentItemIterator*) aPlugin->GetPropertyL( EAiPublisherContent );

        const TAiContentItem& item = i->ItemL( aContent );
        
        const TDesC8& type = ContentType( item );
        const TDesC& cid = ContentCid( item );
        
        if ( type.Match( KDataTypeText ) != KErrNotFound )
            {
            SetText( cid, aBuf );
            }
        
        // TODO: Support another types.
        
        */
    
    return 0;
    }
    
// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::Publish( MAiPropertyExtension& /*aPlugin*/,
                              TInt /*aContent*/, RFile& /*aFile*/, TInt /*aIndex*/ )
    {
    // TODO: get content from aFile.

    return 0;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TInt CAiFwTestControllerPlugin::Clean( MAiPropertyExtension& /*aPlugin*/,
                                       TInt /*aContent*/, TInt /*aIndex*/ )
    {
        // TODO: clean content.
    
    return 0;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TAny* CAiFwTestControllerPlugin::Extension( TUid /*aUid*/ )
    {
    return NULL;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
TBool CAiFwTestControllerPlugin::RequiresSubscription( 
                                 const TAiPublisherInfo& aPublisherInfo ) const
    {
    return EFalse;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
void CAiFwTestControllerPlugin::LoadUIDefinitionL()
    {
    iDefinitionLoaded = ETrue;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
void CAiFwTestControllerPlugin::GetPluginsL( RAiPublisherInfoArray& aPlugins )
    {
    TAiPublisherInfo info;
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin);
    info.iName = _L( "AiFwTestPlugin" );
    info.iNamespace = _L8( "AiFw" );
    User::LeaveIfError( aPlugins.Append( info ) );
    /*
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin2);
    info.iName = _L( "AiFwTestPlugin2" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin3);
    info.iName = _L( "AiFwTestPlugin3" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin6);
    info.iName = _L( "Plurgin" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin4);
    info.iName = _L( "AiFwTestPlugin4" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin5);
    info.iName = _L( "AiFwTestPlugin5" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin7);
    info.iName = _L( "AiFwTestPlugin7" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin8);
    info.iName = _L( "AiFwTestPlugin8" );
    User::LeaveIfError( aPlugins.Append( info ) );
    info.iUid = TUid::Uid(KImplementationUidAiTestContentPlugin9);
    info.iName = _L( "AiFwTestPlugin9" );
    User::LeaveIfError( aPlugins.Append( info ) );
    */
    }
    
void CAiFwTestControllerPlugin::GetSettingsL(
                                          const TAiPublisherInfo& /*aPubInfo*/,
                                          RAiSettingsItemArray& aSettings)
    {
    MAiPluginSettings* settings = AiUtility::CreatePluginSettingsL();
    CleanupDeletePushL(settings);
    MAiPluginSettingsItem& item = settings->AiPluginSettingsItem();
    item.SetPublisherId( TUid::Uid( 0x10170FFF ) );
    item.SetValueL( _L("DesValue") );
    item.SetKey( 1 );
    
    // This will fail as no cenrep is setup, -> TRAP it.
    //TRAP_IGNORE( item.UpdateFromCenRepL() );
    
    aSettings.AppendL( settings );
    CleanupStack::Pop( settings );
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
void CAiFwTestControllerPlugin::RunApplicationL()
    {
    iRunApplicationCalled = ETrue;
    SendReadyEventL();
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
void CAiFwTestControllerPlugin::ActivateUI()
    {
    iUiActivated = ETrue;
    }
    
// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
MAiContentObserver& CAiFwTestControllerPlugin::GetContentObserver()
    {
    return *this;
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
void CAiFwTestControllerPlugin::SetText( const TDesC8& /*aId*/, TPtrC8& /*aBuf*/ )
    {
    /*TBuf<KMaxLenContentId> id;
    id.Copy( aId );
    HBufC* value = HBufC::NewLC( aBuf.Length() );
    value->Des().Copy( aBuf );
    
    CXnNode* node = UiEngine()->FindNodeByIdL( id );
    
    if ( node )
        {
        node = node->Parent();
        MXnTextInterface* textIntr = CXnText::MakeInterfaceL( *node );
        
        if ( textIntr )
            {
            const TDesC* text = textIntr->Text();
            textIntr->SetTextL( value->Des() );
            CXnComponentNodeImpl* nodeImpl = node->ComponentNodeImpl();
            CXnComponent* component = nodeImpl->Component();
            CXnControlAdapter* adapter = component->ControlAdapter();
            adapter->DrawNow();
            }
        }
    
    CleanupStack::PopAndDestroy(); // value*/
    }

// ----------------------------------------------------------------------------
//
//
//
// ----------------------------------------------------------------------------
//
const TDesC* CAiFwTestControllerPlugin::GetText( const TDesC8& /*aId*/ )
    {
    /*TBuf<KMaxLenContentId> id;
    id.Copy( aId );
    
    CXnNode* node = UiEngine()->FindNodeByIdL( id );
    
    if ( node )
        {
        node = node->Parent();
        MXnTextInterface* textIntr = CXnText::MakeInterfaceL( *node );
        
        if ( textIntr )
            {
            return textIntr->Text();
            }
        }
    */
    return NULL;
    }
    
void CAiFwTestControllerPlugin::HandleLoadedPlugins( 
                                      const RAiPublisherInfoArray& aPlugins ) 
    {
    for ( int i = 0; i < aPlugins.Count(); ++i )
        {
        iFwEventHandler->HandleLoadPluginL( aPlugins[i] );
        }
    }

void CAiFwTestControllerPlugin::SetEventHandler(MAiFwEventHandler& aEventHandler)
    {
    iFwEventHandler = &aEventHandler;
    }

EXPORT_C TBool CAiFwTestControllerPlugin::UiActivated()
    {
    return iUiActivated;  
    }

EXPORT_C TBool CAiFwTestControllerPlugin::RunApplicationCalled()
    {
    return iRunApplicationCalled;
    }

EXPORT_C TBool CAiFwTestControllerPlugin::DefinitionLoaded()
    {
    return iDefinitionLoaded;
    }
    
EXPORT_C void CAiFwTestControllerPlugin::SendReadyEventL()
    {
    if( iFwEventHandler )
        {
        iFwEventHandler->HandleUiReadyEventL(*this);
        }
    }

EXPORT_C void CAiFwTestControllerPlugin::SendTestEventL()
    {
    if( iFwEventHandler )
        {
        iFwEventHandler->HandlePluginEvent(  KTestEvent );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/not_supp") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/not_supp()") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/not_supp(34342fvdsf)") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/test_event(34342fvdsf)") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/test_event)") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/test_event(") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin/test_event()") );
        iFwEventHandler->HandlePluginEvent(  _L("someerrorevent/error") );
        iFwEventHandler->HandlePluginEvent(  KTestEvent );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin4/error") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin3/error") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin7/error") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin7/error") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin7") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin7/test(ehe)") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlugin7/test()") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlu/test(grrraaah)") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlu/test(grrraaah") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlu/test(") );
        iFwEventHandler->HandlePluginEvent(  _L("AiFwTestPlu/test)") );
        iFwEventHandler->HandlePluginEvent(  _L("theme_change_noticed") );
        iFwEventHandler->HandlePluginEvent(  KTestEvent );
        iFwEventHandler->HandlePluginEvent(  KTestEvent );
        }
    }

EXPORT_C void CAiFwTestControllerPlugin::SetResourceChangedL( TInt aRes )
    {
    iFwObserver->HandleResourceChange( aRes );
    }
    
EXPORT_C void CAiFwTestControllerPlugin::SetForegroundL( TBool aFore )
    {
    iFwObserver->HandleForegroundEvent( aFore );
    }
    
EXPORT_C void CAiFwTestControllerPlugin::SetAppEnvReadyL()
    {
    TRAP_IGNORE( iFwEventHandler->AppEnvReadyL() );
    }

// ========== OTHER EXPORTED FUNCTIONS ========================================

// End of File.