/*
* Copyright (c) 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: Manager number entry for state
*
*/
#ifndef CPONENUMBERENTRYMANAGER_H
#define CPONENUMBERENTRYMANAGER_H
//INCLUDES
#include <e32base.h>
#include "cphonestate.h"
#include "tphonecmdparamboolean.h"
#include "tphonecmdparamkeyevent.h"
class CPhoneCbaManager;
class MPhoneViewCommandHandle;
class MPhoneStateMachine;
class MPhoneCustomization;
class CPhoneState;
class CEikonEnv;
/**
* Class contains helper functions for NE content
*
* @lib phoneuicontrol
* @since S60 v9.1
*/
NONSHARABLE_CLASS( CPhoneNumberEntryManager ) : public CBase
{
public:
/**
* Creates new instance of CPhoneNumberEntryManager
* @param aState: Handle to cphonestate.
* @param aStateMachine: a state machine
* @param aViewCommandHandle: Handle to the PhoneUIView.
* @param aCustomization: Handle to customization.
* @param aCbaManager: Handle to cphonecbamanager.
* @return CPhoneNumberEntryManager* object
*/
static CPhoneNumberEntryManager* CPhoneNumberEntryManager::NewL(
CPhoneState* aState,
MPhoneViewCommandHandle& aViewCommandHandle,
MPhoneStateMachine& aStateMachine,
MPhoneCustomization* aCustomization,
CPhoneCbaManager& aCbaManager );
/**
* Destructor.
*/
virtual ~CPhoneNumberEntryManager();
public:
/**
* Stores the number entry content to the cache
*/
void StoreNumberEntryContentL();
/**
* Restores the number entry content from the cache
*/
void RestoreNumberEntryContentL();
/**
* Check if number entry content is stored
* @param None
* @return boolean value indicating that number entry content is stored
*/
TBool IsNumberEntryContentStored();
/**
* Clears the number entry content cache
*/
void ClearNumberEntryContentCache();
/**
* Creates number entry
*/
void CreateNumberEntryL();
/**
* Set Number Entry visibility.
* @param aVisible ETrue if numberentry is wanted to be shown
* (Note ETrue will set NE CBA's)
* EFalse if numberentry isnt wanted to be shown
* (Note EFalse doesnt affect to CBA's)
*/
void SetNumberEntryVisibilityL( TPhoneCmdParamBoolean aVisible );
/**
* Passes create number entry command forward if NE can be created.
*/
void HandleCreateNumberEntryL();
/**
* Check if number entry is used
* @return boolean value indicating that number entry is used
*/
TBool IsNumberEntryUsedL() const;
/**
* Check if number entry is visible
* @return boolean value indicating that number entry is visible
*/
TBool IsNumberEntryVisibleL() const;
/**
* Returns phone number from the phone number entry.
* @return Phone number
*/
HBufC* PhoneNumberFromEntryLC() const;
/**
* Informs phoneengine that phone number has been edited i.e. phonenumber parser is run
*/
void HandleNumberEntryEdited();
/**
* Handles key events in situations when there exists a number entry.
* In this case number entry may be visible or hidden.
* @param aKeyEvent - key event
* @param aEventCode - event code
*/
void KeyEventForExistingNumberEntryL(
const TKeyEvent& aKeyEvent,
TEventCode aEventCode );
/**
* Returns ETrue if alphanumeric characters are supported.
* @param aKeyEvent Key event.
* @return ETrue if alphanumeric chars are supported.
*/
TBool IsAlphanumericSupportedAndCharInput(
const TKeyEvent& aKeyEvent ) const;
/**
* Handle state-specific behaviour when number entry is cleared
*/
void HandleNumberEntryClearedL();
/**
* Internal number entry handling methods.
*/
void NumberEntryClearL() const;
/**
* Returns ETrue if NumberEntry is in numeric mode.
*/
TBool NumberEntryInNumericModeL();
/**
* Toggles alpha numeric mode.
*/
TBool NumberEntryToggleAlphaNumericModeL();
private:
/**
* Checks is given key contains numeric charaters or if customization is used
* alphanumeir letters
*/
TBool IsValidAlphaNumericKey( const TKeyEvent& aKeyEvent,
TEventCode aEventCode );
private:
/**
* C++ default constructor.
*/
CPhoneNumberEntryManager(
CPhoneState* aState,
MPhoneViewCommandHandle& aViewCommandHandle,
MPhoneStateMachine& aStateMachine,
MPhoneCustomization* aCustomization,
CPhoneCbaManager& aCbaManager );
/**
* Symbian constructor
*/
void ConstructL();
private:
CPhoneState* iState;
MPhoneViewCommandHandle& iViewCommandHandle;
MPhoneStateMachine& iStateMachine;
MPhoneCustomization* iCustomization;
CPhoneCbaManager& iCbaManager;
/**
* Cache for the number entry content
*/
HBufC* iNumberEntryContent;
/**
* Internal variable for EikonEnv to avoid
* use of static system calls
*/
CEikonEnv& iEnv;
};
#endif // CPONENUMBERENTRYMANAGER_H