diff -r 000000000000 -r e686773b3f54 contacts_plat/cca_launch_api/inc/mccaconnection.h --- /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 + +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