Merge RCL_3 fixes with latest delivery.
/*
* Copyright (c) 2010 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: Ecom interface header
*
*/
#ifndef __CDIALEREXTENSIONINTERFACE_H
#define __CDIALEREXTENSIONINTERFACE_H
#include <ecom/ecom.h>
#include <coecntrl.h>
#include <eikmenup.h>
/** UID of dialing extension ECom interface. */
const TUid KEasyDialingPluginInterfaceUID = { 0x200212A1 };
/** UID of easy dialing plugin. */
const TUid KEasyDialingPluginImplementationUID = { 0x200212A0 };
/**
* Observer class for easy dialing.
*/
class MDialingExtensionObserver
{
public:
/**
* Identifiers for easy dialing events.
*/
typedef enum TEvent_enum
{
/** Contact search has completed. */
ESearchComplete = 1,
/** Easy dialing has gained or given up the focus. */
EFocusChanged,
/** Easy dialing has started communication launcher (a.k.a. contact view) */
ECCALauncherStarted,
/** Communication launcher a.k.a. contact view has been close. */
ECCALauncherExit,
/** Easy dialing feature has been switched on. */
EEasyDialingEnabled,
/** Easy dialing feature has been switched off. */
EEasyDialingDisabled,
/** User has started communication (SMS, IM, E-mail ...). Not used for phone calls. */
ECommunicationStarted,
/** User has cancelled communication once started. */
ECommunicationCancelled
} TEvent;
/**
* Handles event from easy dialing plugin.
*
* @param aEvent Event id.
*
*/
virtual void HandleDialingExtensionEvent( MDialingExtensionObserver::TEvent aEvent ) = 0;
};
/**
* Easy dialing plugin class.
*/
class CDialingExtensionInterface : public CCoeControl
{
public:
/**
* Enumeration for keyboard modes. Keyboardmode affect on how search string is matched
* with contacts.
*/
typedef enum
{
/*
* ENormalKeyboard is used when there is no QWERTY keyboard, or non-hybrid mode
* QWERTY keyboard.
*/
EDefaultKeyboard = 0,
/*
* EHybridQwerty is used with hybrid mode QWERTY keyboard. Hybrid mode means
* that keys where a letter and number share a common key, short press to that key
* produces the number, not the letter.
*/
EHybridQwerty
} TKeyboardMode;
/**
* Creates an instance of plugin.
*/
static CDialingExtensionInterface* NewL();
/**
* Destructor.
*/
virtual ~CDialingExtensionInterface();
/**
* Does the rest of the initialization of the plugin.
* Must be called after NewL before using any other
* functions of the plugin.
*
* @param aParent Parent container of the plugin.
*/
virtual void InitializeL( CCoeControl& aParent ) = 0;
/**
* Resets the previous search results.
*/
virtual void Reset() = 0;
/**
* Adds an observer to the plugin.
*
* @param aObserver Observer to be added.
*/
virtual void AddObserverL( MDialingExtensionObserver* aObserver ) = 0;
/**
* Removes an observer from the plugin.
*
* @param aObserver Observer to be removed.
*/
virtual void RemoveObserver( MDialingExtensionObserver* aObserver ) = 0;
/**
* Sets input string (search string) to plugin.
*
* @param aDesC Input string descriptor.
*/
virtual void SetInputL( const TDesC& aDesC ) = 0;
/**
* Gets the resource id of plugin's control button area resource.
*
* @return Resource id.
*/
virtual TInt CbaResourceId( ) = 0;
/**
* Gets the resource id of plugin's menu bar resource.
*
* @return Resource id.
*/
virtual TInt MenuResourceId() = 0;
/**
* Gets the resource id of plugin's menu bar resource.
*
* @param aMenuPane Menu pane
* @param aMenuResourceId Menu bar resource id.
* @return Resource id.
*/
virtual TBool InitializeMenuPaneL( CEikMenuPane& aMenuPane, TInt aMenuResourceId ) = 0;
/**
* Handle a command. Supported command IDs are defined in header
* easydialingcommands.hrh.
*
* @param aCommand Command id.
* @return ETrue if command was handled, EFalse otherwise.
*/
virtual TBool HandleCommandL( TInt aCommand ) = 0;
/**
* Tells if extension is currently enabled from settings.
* @return ETrue if extension is enabled, EFalse otherwise.
*/
virtual TBool IsEnabled() const = 0;
/**
* Set keyboard mode to be used in matching.
* @param aMode Mode to be used.
*/
virtual void SetKeyboardMode( TKeyboardMode aMode ) = 0;
private: // data
/** ECom instance identifier key. */
TUid iDestructorIDKey;
};
// INLINE FUNCTIONS
// -----------------------------------------------------------------------------
// CDialingExtensionInterface::NewL
//
// -----------------------------------------------------------------------------
//
inline CDialingExtensionInterface* CDialingExtensionInterface::NewL()
{
// TEComResolverParams resolverParams; // data passed to the plugin
// resolverParams.SetDataType(); // no data yet
TAny* ptr = REComSession::CreateImplementationL( KEasyDialingPluginImplementationUID,
_FOFF( CDialingExtensionInterface, iDestructorIDKey )
// resolverParams
);
return STATIC_CAST( CDialingExtensionInterface*, ptr );
}
// -----------------------------------------------------------------------------
// CDialingExtensionInterface::~CDialingExtensionInterface()
//
// -----------------------------------------------------------------------------
//
inline CDialingExtensionInterface::~CDialingExtensionInterface()
{
REComSession::DestroyedImplementation( iDestructorIDKey );
}
#endif //__CDIALEREXTENSIONINTERFACE_H
// End of file