meetingrequest/mrbcplugin/src/cmrbcpluginresourcereader.cpp
branchRCL_3
changeset 33 da5135c61bad
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrbcplugin/src/cmrbcpluginresourcereader.cpp	Wed Mar 31 21:08:33 2010 +0300
@@ -0,0 +1,230 @@
+/*
+* 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: MBUtils ECOM definition
+*
+*/
+
+#include "cmrbcpluginresourcereader.h"
+#include "cmrbceventplugin.h"
+
+#include <coemain.h>
+#include <barsread.h>
+
+#include "emailtrace.h"
+
+namespace { //codescanner::namespace
+
+// BC Plugin resource file offset
+const TInt KMRBCPluginResourceFileOffset( 2 );
+
+} // namespace
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::CMRBCPluginResourceReader
+// Static constructor for this class
+// -----------------------------------------------------------------------------
+//
+CMRBCPluginResourceReader::CMRBCPluginResourceReader(
+        MCalenServices& aCalenServices )
+:   iCalenServices( aCalenServices )
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::~CMRBCPluginResourceReader
+// -----------------------------------------------------------------------------
+//
+CMRBCPluginResourceReader::~CMRBCPluginResourceReader()
+    {
+    FUNC_LOG;
+    
+    iPluginCommands.Close();
+    iBCPluginResourceFile.Close();
+    delete iPlugin;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::NewL
+// -----------------------------------------------------------------------------
+//
+CMRBCPluginResourceReader* CMRBCPluginResourceReader::NewL(
+        MCalenServices& aCalenServices )
+    {
+    FUNC_LOG;
+    
+    CMRBCPluginResourceReader* self = 
+            new (ELeave) CMRBCPluginResourceReader( aCalenServices );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+    
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::ConstructL
+// -----------------------------------------------------------------------------
+//
+void CMRBCPluginResourceReader::ConstructL()
+    {  
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::ReadFromResourceFileL
+// -----------------------------------------------------------------------------
+//
+void CMRBCPluginResourceReader::ReadFromResourceFileL(
+        TUid aUid,
+        const TDesC& aResourceFile )
+    {
+    FUNC_LOG;
+    
+    CCoeEnv* coeEnv( CCoeEnv::Static() );
+    
+    iBCPluginResourceFile.Close();
+    iBCPluginResourceFile.OpenL( coeEnv->FsSession(), aResourceFile );
+    iBCPluginResourceFile.ConfirmSignatureL();
+    
+    iOffset = iBCPluginResourceFile.Offset() + KMRBCPluginResourceFileOffset;
+    
+    iPluginCommands.Reset();
+    iSupportedEventTypes.ClearAll();
+        
+    HBufC8* resourceIdBuffer =
+        iBCPluginResourceFile.AllocReadLC( iOffset );
+    
+    // Construct resource reader
+    TResourceReader reader;
+    reader.SetBuffer(resourceIdBuffer);
+
+    iPluginImplementationUid = aUid;
+    iVersion.iMajor = reader.ReadInt32();
+    iSupportedEventTypes = reader.ReadUint32();
+    
+    TInt commandCount( reader.ReadInt16() );
+    iPluginCommands.ReserveL( commandCount );
+    
+    for (TInt i(0); i < commandCount; ++i )
+        {
+        TMRBCPluginCommand pluginCommand;
+        
+        pluginCommand.iCommand = reader.ReadInt32();
+        pluginCommand.iCheckEntryType = reader.ReadInt32();
+        iPluginCommands.Append( pluginCommand  );
+        }
+
+    iBCPluginResourceFile.Close();
+    CleanupStack::PopAndDestroy( resourceIdBuffer );
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::Version
+// -----------------------------------------------------------------------------
+//
+TVersion CMRBCPluginResourceReader::Version() const
+    {
+    FUNC_LOG;
+    
+    return iVersion;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::ReadFromResourceFileL
+// -----------------------------------------------------------------------------
+//
+TBool CMRBCPluginResourceReader::SupportsType( 
+        TBCPluginEventType aEventType ) const
+    {
+    FUNC_LOG;
+    
+    return iSupportedEventTypes.IsSet( aEventType );
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::ReadFromResourceFileL
+// -----------------------------------------------------------------------------
+//
+TBool CMRBCPluginResourceReader::SupportsCommand( 
+        TInt aCommand ) const
+    {
+    FUNC_LOG;
+    
+    TInt pos( KErrNotFound );
+    TInt commandCount( iPluginCommands.Count() );
+    for ( TInt i(0); i < commandCount && KErrNotFound == pos; ++i )
+        {
+        if ( iPluginCommands[i].Command() == aCommand )
+            {
+            pos = i;
+            }
+        }
+
+    return KErrNotFound != pos;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::CommandL
+// -----------------------------------------------------------------------------
+//
+TInt CMRBCPluginResourceReader::Command( 
+        TInt aCommand, 
+        TMRBCPluginCommand& aPluginCommand ) const
+    {
+    FUNC_LOG;
+    
+    TInt retValue( KErrNotFound );
+    TInt commandCount( iPluginCommands.Count() );
+    for ( TInt i(0); i < commandCount && KErrNotFound == retValue; ++i )
+        {
+        if ( iPluginCommands[i].Command() == aCommand )
+            {
+            retValue = KErrNone;
+            aPluginCommand = iPluginCommands[i];
+            }
+        }    
+    
+    return retValue;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::PluginImplUid
+// -----------------------------------------------------------------------------
+//
+TUid CMRBCPluginResourceReader::PluginImplUid() const
+    {
+    FUNC_LOG;
+    
+    return iPluginImplementationUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CMRBCPluginResourceReader::PluginImplUid
+// -----------------------------------------------------------------------------
+//
+CMRBCEventPlugin& CMRBCPluginResourceReader::PluginL()
+    {
+    FUNC_LOG;
+    
+    if ( !iPlugin )
+        {
+        iPlugin = CMRBCEventPlugin::NewL(
+                        iPluginImplementationUid,
+                        iCalenServices );        
+        }
+    
+    return *iPlugin;
+    }
+
+// EOF