contacts_plat/cca_launch_api/inc/mccaconnection.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contacts_plat/cca_launch_api/inc/mccaconnection.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,179 @@
+/*
+* Copyright (c) 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:  This is a class for launching CCA application. 
+ *
+*/
+
+
+#ifndef M_MCCACONNECTION_H
+#define M_MCCACONNECTION_H
+
+#include <e32std.h>
+
+class MCCAParameter;
+
+/** @file mccaconnection.h
+ *
+ *  MCCAObserver is used to get notifications from CCA application.
+ *
+ *  @lib ccaclient
+ *  @since S60 v5.0
+ */
+class MCCAObserver
+    {
+public:
+
+    enum TNotifyType
+        {
+        /* EExitEvent is used to indicate that the CCA application has been
+         * closed. Accompanied parameter aReason will either be an error code 
+         * or the command id that was used to close the CCA application.
+         */
+        EExitEvent
+        };
+
+    /**
+     * This callback is to get simple notifications from CCA application.
+     *
+     * @since S60 5.0
+     * @param aType describes the notify type (see TNotifyType)
+     * @param aReason describes the reason (see events in TNotifyType)
+     */
+    virtual void CCASimpleNotifyL( TNotifyType aType, TInt aReason ) = 0;
+
+    /**
+     * Returns an extension point for this interface or NULL.
+     * @param aExtensionUid Uid of extension
+     * @return Extension point or NULL
+     */
+    virtual TAny* CcaObserverExtension( 
+            TUid /*aExtensionUid*/ ) { return NULL; }
+
+protected:  // Destructor
+    /**
+     * Destructor.
+     */
+    virtual ~MCCAObserver() { }
+
+    };
+
+/** @file mccaconnection.h
+ *  MCCAConnection is used to start a actual launching of CCA application over the AppServer framwork. 
+ *  Before starting the launching, the parameter class have to be instantiated and set to ready 
+ *  with the proper contact data. 
+ *  @see MCCAParameter
+ *
+ *  Example usage of the API:  
+ *  @code
+ *  Header file:
+ *   
+ *  // Launching can be done without MCCAObserver-interface,
+ *  // then the iConnection can be closed in destructor etc when
+ *  // CCApplication is already closed
+ *  class CMyClass : public CBase, public MCCAObserver
+ *  {
+ *  ...
+ *  MCCAConnection* iConnection;
+ *  };
+ *
+ *  
+ *  Source file:
+ *  ...
+ *  // Launch the CCApplication  
+ *  MCCAParameter* parameter = TCCAFactory::NewParameterL();
+ *  CleanupClosePushL( *parameter );
+ *  // prepare parameter here (see details from the header)
+ *  if ( !iConnection )
+ *      {// get connection
+ *      iConnection = TCCAFactory::NewConnectionL();
+ *      }
+ *  // note; there can be only one CCApplication instance
+ *  // running simultaneously per iConnection
+ *  iConnection->LaunchAppL( *parameter );
+ *  OR
+ *  iConnection->LaunchAppL( *parameter, this );
+ *  CleanupStack::Pop();// parameter is taken care by iConnection
+ *  ...
+ *  ~CMyClass::CMyClass()
+ *  {
+ *  ...
+ *  if ( iConnection )
+ *      {// close connection
+ *      iConnection->Close();
+ *      }
+ *  } 
+ *  ...
+ *  // If MCCAObserver-interface is used, it could be implemented like this
+ *  void CMyClass::CCASimpleNotifyL( TNotifyType aType, TInt aReason )
+ *  {
+ *  // check the condition of aReason here if needed
+ *  if ( MCCAObserver::EExitEvent == aType )
+ *      {
+ *      // Calling Close() for iConnection will close the running 
+ *      // CCApplication, so be careful when using it
+ *      if ( iConnection )
+ *          {
+ *          iConnection->Close();
+ *          iConnection = NULL;
+ *          }
+ *      }
+ *  }
+ *  ...
+ *
+ *  @endcode
+ *
+ *  @lib ccaclient
+ *  @since S60 v5.0
+ */
+class MCCAConnection
+    {
+
+public:
+
+    /**
+     * Destroy this entity
+     *
+     * @since S60 5.0
+     */
+    virtual void Close() = 0;
+
+    /**
+     * DEPRECATED - USE LaunchAppL() instead!
+     * Ownership of MCCAParameter is NOT transferred.
+     */
+    virtual void LaunchApplicationL( MCCAParameter& aParameter ) = 0;
+
+    /**
+     * Launches CCA application with the given parameter.
+     * See above for example instructions.
+     *
+     * Ownership of MCCAParameter is transferred.
+     *
+     * Leaves KErrArgument if there is no contact data in the
+     *        given parameter. 
+     * Leaves KErrAlreadyExists if there is already CCApplication
+     * running simultaneously.
+     * 
+     * @see MCCAParameter::SetContactDataL      
+     * @since S60 5.0
+     * @param aParameter to launch application
+     * @param aObserver to get notifications (see MCCAObserver)
+     */    
+    virtual void LaunchAppL( 
+        MCCAParameter& aParameter, 
+        MCCAObserver* aObserver = NULL ) = 0;
+    };
+
+#endif //M_MCCACONNECTION_H
+// End of File