mobilemessaging/smum/src/simdlgplugininterface.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/smum/src/simdlgplugininterface.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,148 @@
+/*
+* Copyright (c) 2002-2009 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:  
+*     Sim Dialog plugin interface
+*
+*/
+
+
+// INCLUDE FILES
+#include "simdlgplugin.h"
+#include "SMSU.H"
+#include "simdlgplugininterface.h"
+
+// ============================== MEMBER FUNCTIONS ============================
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::NewL
+// Two Phase Construction
+// ----------------------------------------------------------------------------
+CSimDlgPluginInterface* CSimDlgPluginInterface::NewL(
+        CSmsMtmUi&  aSmsMtmUi, 
+        CMsvSession& aSession)
+    {
+    CSimDlgPluginInterface* self = CSimDlgPluginInterface::NewLC(aSmsMtmUi,aSession);
+    CleanupStack::Pop( self );
+
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::NewLC
+// Two Phase Construction
+// ----------------------------------------------------------------------------
+CSimDlgPluginInterface* CSimDlgPluginInterface::NewLC(
+        CSmsMtmUi&  aSmsMtmUi, 
+        CMsvSession& aSession)
+    {
+    CSimDlgPluginInterface* self = new( ELeave ) CSimDlgPluginInterface();
+    CleanupStack::PushL( self );
+    self->ConstructL(aSmsMtmUi,aSession);
+
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::CSimDlgPluginInterface
+// Constructor
+// ----------------------------------------------------------------------------
+CSimDlgPluginInterface::CSimDlgPluginInterface()
+    {
+    }
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::ConstructL
+// 2nd phase constructor
+// ----------------------------------------------------------------------------
+void CSimDlgPluginInterface::ConstructL(
+        CSmsMtmUi&  aSmsMtmUi, 
+        CMsvSession& aSession)
+    {
+    InstantiatePluginL(aSmsMtmUi,aSession);
+    }
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::~CSimDlgPluginInterface
+// Constructor
+// ----------------------------------------------------------------------------
+CSimDlgPluginInterface::~CSimDlgPluginInterface( )
+    {
+    UnloadPlugIn();
+    if(iSimDlgPlugin)
+        {
+        delete iSimDlgPlugin;
+        iSimDlgPlugin = NULL;
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::InstantiateAllPlugInsL
+// Instantiates all plugins
+// ----------------------------------------------------------------------------
+void CSimDlgPluginInterface::InstantiatePluginL(
+        CSmsMtmUi&  aSmsMtmUi, 
+        CMsvSession& aSession)
+    {
+    RImplInfoPtrArray infoArray;
+
+    // Get list of all implementations
+    ListAllImplementationsL( infoArray );
+
+    //other sim dialogs available, instantiate other than default
+    for ( TInt iloop=0; iloop<infoArray.Count(); iloop++ )
+        {
+        // Get imp info
+        CImplementationInformation& info( *infoArray[iloop] );
+        // Get imp UID
+        TUid impUid ( info.ImplementationUid() );
+
+        if(infoArray.Count() > 1 && 
+                !(info.DisplayName().Compare(_L("_default_"))))
+            {
+            continue;
+            }
+        else
+            {
+            //instantiate plugin for impUid
+            iSimDlgPlugin = CSimDlgPlugin::NewL(impUid, aSmsMtmUi , aSession);
+            break;
+            }
+        }
+    infoArray.ResetAndDestroy();
+    }
+
+// -----------------------------------------------------------------------------
+// CSimDlgPluginInterface::UnloadPlugIn
+// Unloads plugin
+// -----------------------------------------------------------------------------
+void CSimDlgPluginInterface::UnloadPlugIn()
+    {
+    REComSession::FinalClose();    
+    }
+
+// ----------------------------------------------------------------------------
+// CSimDlgPluginInterface::LaunchL
+// Forwards the request to the plugin instance ,
+// Launch the sim dialog
+// ----------------------------------------------------------------------------
+void CSimDlgPluginInterface::LaunchL()
+    {
+    if( iSimDlgPlugin)
+        {
+        //launch default sim dialog
+        iSimDlgPlugin->LaunchL();
+        }
+    }
+
+//EOF