idlefw/tsrc/framework/mt_aifw/AiFwTestControllerPlugin.cpp
branchRCL_3
changeset 27 2c7f27287390
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/tsrc/framework/mt_aifw/AiFwTestControllerPlugin.cpp	Thu Jul 15 18:59:18 2010 +0300
@@ -0,0 +1,547 @@
+/*
+* 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.