Removed unnecessary #ifdef guards around an inclusion - the included file has them anyway.
/*
* 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: Implementation for chinese peninput finger hwr
*
*/
#ifndef C_PENINPUTFINGERHWRDATASTORE_H
#define C_PENINPUTFINGERHWRDATASTORE_H
//SYSTEM INCLUDES
#include <e32base.h>
#include <e32def.h>
#include <w32std.h>
#include <eikon.hrh>
#include <AknUtils.h>
//FEP INCLUDES
#include <PtiEngine.h>
#include <peninputpluginutils.h>
//USER INCLUDES
#include "peninputfingerhwrstoreconstants.h"
//CONSTANTS
const TInt KLanguageStringLength = 10;
//FOWWARD CLASS
class CPeninputFingerHwrLayout;
class CAknFepHwrTriggerStr;
class CRepository;
class CAknFepHwrEngine;
class CPtiEngine;
/**
* CPeninputFingerHwrDataStore
*
* @lib peninputfingerhwr.lib
* @since S60 v5.0
*/
class CPeninputFingerHwrDataStore : public CBase
{
public:
/**
* Symbian constructor.
*
* @since S60 v5.0
* @param aPtiEngine The PtiEngine
* @param aLayout The Finger HWR layout
* @return Pointer to created CPeninputFingerHwrDataStore object
*/
static CPeninputFingerHwrDataStore* NewL( CPtiEngine* aPtiEngine,
CPeninputFingerHwrLayout* aLayout );
/**
* destructor
*
* @since S60 v5.0
* @return None
*/
virtual ~CPeninputFingerHwrDataStore();
public:
/**
* Is valid candidate
*
* @since S60 v5.0
* @param aCandidateIndex The index the candidate in list.
* @return ETrue if candidate is not empty; otherwise EFalse
*/
TBool IsValidCandidate( TInt aCandidateIndex ) const;
/**
* Is English letter
*
* @since S60 v5.0
* @param aLetter The recognize character.
* @return ETrue if the character is English letter; otherwise EFalse
*/
TBool IsEnglishLetter( const TDesC& aLetter);
/**
* Do recoginize by engine
*
* @since S60 v5.0
* @param aTraceData The trace data.
* @return None
*/
void DoChineseRecognizeL( const RArray<TPoint>& aTraceData );
/**
* Do recoginize in English range
*
* @since S60 v5.0
* @param aTraceData The trace data.
* @return None
*/
void DoEngRecognizeL( const RArray<TPoint>& aTraceData);
/**
* Do predictive using trigger string
*
* @since S60 v5.0
* @return None
*/
void DoPredictiveL();
/**
* Set Chinese symbol to writing candidate list
*
* @since S60 v5.0
* @return None
*/
void SetChineseSymbolL();
/**
* Set fixed Chinese predictives to predictive list
*
* @since S60 v5.0
* @return None
*/
void SetFixChinesePredictiveL();
/**
* Set fixed English symbol
*
* @since S60 v5.0
* @param aRowCount The flag to confirm which row
* @return None
*/
void SetFixEnglishSymbolL(TRowCount aRowCount = ERowOne);
/**
* Get the predictive count
*
* @since S60 v5.0
* @return The count of predictives
*/
TInt PredictiveCount() const;
/**
* Get the trigger string
*
* @since S60 v5.0
* @return Pointer to CAknFepHwrTriggerStr object
*/
CAknFepHwrTriggerStr* TriggerStr() const;
/**
* Set permitted ranges
*
* @since S60 v5.0
* @param aPermittedRanges The permitted ranges.
* @return None
*/
void SetPermittedRanges( TInt aPermittedRanges );
/**
* Set permitted ranges
*
* @since S60 v5.0
* @param aPermittedRanges The permitted ranges.
* @return None
*/
void SetPermittedCases( TInt aPermittedCases );
/**
* Set Primary range
*
* @since S60 v5.0
* @param aPrimaryRange The Primary range
* @return None
*/
void SetPrimaryRange( TInt aPrimaryRange );
/**
* Get Primary range
*
* @since S60 v5.0
* @return Primary range.
*/
TInt PrimaryRange();
/**
* Get current range
*
* @since S60 v5.0
* @return Current range.
*/
TFingerHwrRange CurrentRange();
/**
* Set case
*
* @since S60 v5.0
* @param aCase The case
* @return None
*/
void SetCase( TInt aCase );
/**
* Set language
*
* @since S60 v5.0
* @param aLanguage The language
* @return None
*/
void SetLanguageL( TInt aLanguage );
/**
* Set the candidate list.
*
* @since S60 v5.0
* @return None
*/
void SetCandidatesL();
/**
* Set auto complete candidate list.
*
* @since S60 v5.0
* @return None
*/
void SetAutoCompleteCandidatesL();
/**
* Set auto complete candidate list.
*
* @since S60 v5.0
* @param aIsFirstStroke The first stroke flag
* @return None
*/
void SetFirstStroke( const TBool aIsFirstStroke);
/**
* Set auto complete candidate list.
*
* @since S60 v5.0
* @return ETrue if it's the first stroke
*/
TBool FirstStroke();
/**
* Get the candidate.
*
* @since S60 v5.0
* @param aIndex The index of candidate
* @param aCharCode The result candidate
* @return Candidate char code
*/
const RPointerArray<HBufC>& Candidate() const;
/**
* Get the predictive.
*
* @since S60 v5.0
* @param aIndex The index of predictive
* @param aCharCode The result predictive
* @return Predictive char code
*/
const RPointerArray<HBufC>& Predictive();
/**
* Set number mode
*
* @since S60 v5.0
* @param aNumberMode Given number mode
* @return None
*/
void SetNumberMode( const TAknEditorNumericKeymap aNumberMode );
/**
* Set number mode
*
* @since S60 v5.0
* @param aCustomMode The customized number key mapping, 0-9
* are not included.
* @return None
*/
void SetCustomNumberModeL( const TDesC& aCustomMode );
/**
* Set the screen mode.
*
* @since S60 v5.0
* @param aRange The range
* @return None
*/
void SaveRange( TInt aRange );
/**
* Get next predictive page
*
* @since S60 v5.0
* @return None
*/
void GetNextPredictivePageL();
/**
* Set stroke end mark to stroke end mark control
*
* @since S60 v5.0
* @return None
*/
void SetStrokeEndMark();
/**
* Get the stroke end mark.
*
* @since S60 v5.0
* @return TPoint
*/
TPoint StrokeEndMark();
/**
* Get stroke end mark from control which handle it
*
* @since S60 v5.0
* @return None
*/
TPoint StrokeEndMarkFromControl();
/**
* Get number keymapping string
*
* @since S60 v5.0
* @param aKeyMappingId Keymapping id
* @return Pointer to keymapping string
*/
HBufC* KeyMappingStringL() const;
/**
* Check if the char is the special display char
*
* @since S60 v5.0
* @param aChar The checked char
* @return TBool Wheater or not the input char is the special display char
*/
TBool IsSpecialDisplayChars( const TDesC& aChar ) const;
/**
* Check if the char is need to be sent to app directly which not need to be shown in candidate window.
*
* @since S60 v5.0
* @param aChar The checked char
* @return TBool Wheater or not the input char is the directly sent char
*/
TBool IsDirectlySentCandidate( const TDesC& aChar ) const;
/**
* Convert the special display char to the keycode.
*
* @since S60 v5.0
* @param aChar The special display char.
* @return HBufC* The converted keycode char.
*/
HBufC* ConvertDisplayChars( const TDesC& aChar ) const;
/**
* Get start writing char flag
*
* @since S60 v5.0
* @return ETrue If begine writing.
*/
TBool StartCharacter();
/**
* Set start writing char flag
*
* @since S60 v5.0
* @param aStartCharacter The start writing flag
* @return ETrue If begine writing.
*/
void SetStartCharacter(const TBool aStartCharacter);
/**
* Set input area size to engine for recognize
*
* @since S60 v5.0
* @param aStartCharacter The start writing flag
* @return ETrue If begine writing.
*/
TInt SetInputAreaSize(TSize& aSize);
/**
* Set screen size to engine for recognize
*
* @since S60 v5.0
* @param aStartCharacter The start writing flag
* @return ETrue If begine writing.
*/
TInt SetScreenSize(TSize& aSize);
/**
* Clear predictive array
*
* @since S60 v5.0
* @return None
*/
void ClearPredictive();
/**
* Set high light flag for candidate list
*
* @since S60 v5.0
* @param aIsHighlight The flag to decide highlight default cell or not
* @return None
*/
void SetHighlight(const TBool aIsHighlight);
/**
* Get high light flag for candidate list
*
* @since S60 v5.0
* @return ETrue If highlight the default cell to candidate list
*/
TBool Highlight();
/**
* Remove duplicate candidate from predictive candidate list
*
* @since S60 v5.0
* @param aSrc The punctuation candidate list
* @param aTgt The predicative candidate list
* @param aSrcStartIdx
* @param aTgtStartIdx
* @return last overlap index
*/
TInt RemoveDuplicateCand(const RPointerArray<HBufC>& aSrc,
RPointerArray<HBufC>& aTgt,
TInt aSrcStartIdx,
TInt aTgtStartIdx);
/**
* Reset key board type
*
* @since S60 v5.0
*/
void ResetKeyboardType();
/**
* Set key board type to qwerty
*
* @since S60 v5.0
*/
void SetKeyboardToQwerty();
/**
* Get key board type
*
* @since S60 v5.0
*/
void GetKeyboardType();
private:
/**
* C++ constructor
*
* @since S60 v5.0
* @return None
*/
CPeninputFingerHwrDataStore(CPeninputFingerHwrLayout* aLayout);
/**
* Second phase constructor
*
* @since S60 v5.0
* @return None
*/
void ConstructL( CPtiEngine* aPtiEngine );
/**
* Initialize the key mapping list
*
* @since S60 v5.0
* @return None
*/
void InitKeyMappingListL();
/**
* Judge if a language is Chinese
*
* @since S60 v5.0
* @param aLanguage Given language code
* @return ETrue if aLanguage is Chinese, otherwise EFalse
*/
TBool LanguageIsChinese( TInt aLanguage );
/**
* Set engine language
*
* @since S60 v5.0
* @param aLanguage Given language code
* @return None
*/
void SetEngineLanguageL( TInt aLanguage );
/**
* Set language show text
*
* @since S60 v5.0
* @param aLanguage language code
* @return None
*/
void SetLanguageShowText( TInt aLanguage );
/**
* Remove accent character
*
* @since S60 v5.0
* @return None
*/
void RemoveAccent();
private:// data
/**
* Trigger string (Own)
*/
CAknFepHwrTriggerStr* iTriggerStr;
/**
* predictive list (Own)
*/
RPointerArray<HBufC> iPredictives;
/**
* candidate list (Own)
*/
RPointerArray<HBufC> iCandidates;
/**
* The candidate range start index
*/
RArray<TInt> iRangeStartPos;
/**
* Permitted ranges
*/
RArray<TInt> iPermittedRanges;
/**
* Current range
*/
TFingerHwrRange iCurrentRange;
/**
* Permitted range in int format
*/
TInt iIntRange;
/**
* Current case
*/
TInt iCase;
/**
* Current language
*/
TInt iLanguage;
/**
* Pen size
*/
TSize iPenSize;
/**
* Pen color
*/
TRgb iPenColor;
/**
* The repository (Own);
*/
CRepository* iRepositoryFep;
/**
* The engine (Own);
*/
CAknFepHwrEngine* iHwrEngine;
/**
* The permited cases
*/
TInt iPermittedCases;
/**
* The current number key map
*/
TAknEditorNumericKeymap iCurrentNumberMode;
/**
* Keymapping id array
*/
RArray<TInt> iKeyMappingIdList;
/**
* Keymapping string array
*/
RPointerArray<HBufC> iKeyMappingStringList;
/**
* Language show text
*/
TBuf<KLanguageStringLength> iLanguageShowText;
/**
* User defined key mapping (Own)
*/
HBufC* iUserDefinedResource;
/**
* Finger hwr layout (not own)
*/
CPeninputFingerHwrLayout* iLayout;
/**
* Start writing flag
*/
TBool iStartCharacter;
/**
* Highlight default writing candidate flag
*/
TBool iIsHighlightCell;
/**
* The first stroke flag
*/
TBool iIsFirstStroke;
/**
* default key mapping for normal editor(not number-only).
* Own
*/
HBufC* iDefaultNumberMapping;
};
#endif //C_PENINPUTFINGERHWRDATASTORE_H