// #ifndef _PROPITEM_H #define _PROPITEM_H const TCHAR c_szNumAlt[] = TEXT("NumAlt"); const TCHAR c_szMasterLM[] = TEXT("MasterLM"); const TCHAR c_szCtxtFeed[] = TEXT("ContextFeed"); const TCHAR c_szEnableLMA[] = TEXT("EnableLMA"); const TCHAR c_szSerialize[] = TEXT("Serialize"); const TCHAR c_szDictModebias[] = TEXT("DictModebias"); // const TCHAR c_szDocBlockSize[] = TEXT("docblocksize"); // const TCHAR c_szMaxCandChars[] = TEXT("MaxCandChars"); const TCHAR c_szDictCmd[] = TEXT("DictationCommands"); // Enable / Disbale commands in Dictation mode const TCHAR c_szKeyboardCmd[] = TEXT("KeyboardCmd"); const TCHAR c_szSelectCmd[] = TEXT("SelectCmd"); const TCHAR c_szNavigateCmd[] = TEXT("NavigateCmd"); const TCHAR c_szCaseCmd[] = TEXT("CasingCmd"); const TCHAR c_szEditCmd[] = TEXT("EditCmd"); const TCHAR c_szLangBarCmd[] = TEXT("LangBarCmd"); const TCHAR c_szTTSCmd[] = TEXT("TTSCmd"); const TCHAR c_szModeButton[] = TEXT("ModeButton"); const TCHAR c_szDictKey[] = TEXT("DictationKey"); const TCHAR c_szCmdKey[] = TEXT("CommandKey"); const TCHAR c_szHighConf[] = TEXT("HighConfidenceForShortWord"); const TCHAR c_szRemoveSpace[] = TEXT("RemoveSpaceForSymbol"); const TCHAR c_szDisDictTyping[] = TEXT("DisableDictTyping"); const TCHAR c_szPlayBack[] = TEXT("PlayBackCandUI"); const TCHAR c_szDictCandOpen[] = TEXT("DictCandOpen"); #define UNINIT_VALUE 0xffff // // Take use of the below enum type as a common status type to replace // the many previous similar enum types for different individual items, // such as KEYCMD, LMSTAT, GSTAT, DICTCMD, etc. // typedef enum { PROP_UNINITIALIZED = 0x0, PROP_ENABLED = 0x1, PROP_DISABLED = 0x2 } PROP_STATUS; typedef enum { PropId_Min_Item_Id = 0, // Property Items in the top property page. PropId_Min_InPropPage = 0, PropId_Hide_Balloon = 0, // Enable/Disable hiding speech balloon PropId_Support_LMA = 1, // Enable/Disable LMA Support PropId_High_Confidence = 2, // Require High Confidence for short words PropId_Save_Speech_Data = 3, // Enable/Disable Save Speech Data PropId_Remove_Space = 4, // Enable removing whitespace for punctations PropId_DisDict_Typing = 5, // Support disabling dictation while typing PropId_PlayBack = 6, // Enable playback audio while candidate UI is to open. PropId_Dict_CandOpen = 7, // Allow dictation while candidate UI is open. PropId_Cmd_DictMode = 8, // Enable/Disable all commands in dictation mode PropId_Mode_Button = 9, // Enable/Disable Mode Buttons PropId_MaxId_InPropPage = 9, // Property Items in the voice command setting dialog PropId_MinId_InVoiceCmd = 10, PropId_Cmd_Select_Correct = 10, // Enable/Disable Selection commands PropId_Cmd_Navigation = 11, // Enalbe/Disable Navigation commands PropId_Cmd_Casing = 12, // Enable/Disable Casing Commands PropId_Cmd_Editing = 13, // Enable/Disable Editing Commands PropId_Cmd_Keyboard = 14, // Enable/Disable Keyboard simulation commands PropId_Cmd_TTS = 15, // Enable/Disable TTS commands PropId_Cmd_Language_Bar = 16, // Enable/Disalbe Langauge Bar commands PropId_MaxId_InVoiceCmd = 16, // Property Items in the Mode button setting dialog PropId_MinId_InModeButton = 17, PropId_Dictation_Key = 17, // Virtual key for Dictation Key PropId_Command_Key = 18, // Virtual key for Command Key PropId_MaxId_InModeButton = 18, // Property items which are not configurable through property page. PropId_Max_Alternates = 19, // Maximum number of alternates PropId_MaxChar_Cand = 20, // Maximum number of candidate characters PropId_Context_Feeding = 21, // Enable/Disable Context Feeding PropId_Dict_ModeBias = 22, // Enable/Disable Dictation while ModeBias PropId_LM_Master_Cand = 23, // Enable/Disable Master LM for candidates PropId_Max_Item_Id = 24 } PROP_ITEM_ID; typedef struct _Prop_Item { PROP_ITEM_ID idPropItem; const TCHAR *lpszValueName; GUID *pguidComp; DWORD dwMaskBit; BOOL fIsStatus; // TRUE means this is Enable/Disable item // FALSE means this is a value item, DWORD union { DWORD dwDefault; PROP_STATUS psDefault; }; } PROP_ITEM; class _declspec(novtable) CPropItem { public: CPropItem(PROP_ITEM_ID idPropItem, LPCTSTR lpszValueName, PROP_STATUS psDefault); CPropItem(PROP_ITEM_ID idPropItem, LPCTSTR lpszValueName, DWORD dwDefault); CPropItem(PROP_ITEM_ID idPropItem, GUID *pguidComp, DWORD dwMaskBit, PROP_STATUS psDefault); CPropItem(CPropItem *pItem); ~CPropItem( ); BOOL GetPropStatus(BOOL fForceFromReg=FALSE); DWORD GetPropValue(BOOL fForceFromReg=FALSE ); void SetPropStatus(BOOL fEnable); void SetPropValue(DWORD dwValue); void SavePropData( ); void SaveDefaultRegValue( ); BOOL IsStatusPropItem( ) { return m_fIsStatus; } PROP_ITEM_ID GetPropItemId( ) { return m_PropItemId; } BOOL IsGlobalCompartPropItem( ) { return ((m_pguidComp && !m_lpszValueName) ? TRUE : FALSE); } TCHAR *GetRegValue( ) { return m_lpszValueName; } GUID *GetCompGuid( ) { return m_pguidComp; } DWORD GetMaskBit( ) { return m_dwMaskBit; } PROP_STATUS GetPropDefaultStatus( ) { return m_psDefault; } DWORD GetPropDefaultValue( ) { return m_dwDefault; } private: HRESULT _GetRegValue(HKEY hRootKey, DWORD *dwValue); void _SetRegValue(HKEY hRootKey, DWORD dwValue); PROP_ITEM_ID m_PropItemId; TCHAR *m_lpszValueName; GUID *m_pguidComp; DWORD m_dwMaskBit; BOOL m_fIsStatus; // TRUE means this prop keeps bool (Enable/Disable). // FALSE means this prop keeps raw data (ulong). union { DWORD m_dwDefault; PROP_STATUS m_psDefault; }; union { DWORD m_dwValue; PROP_STATUS m_psStatus; }; }; class __declspec(novtable) CSpPropItemsServer { public: CSpPropItemsServer( ); CSpPropItemsServer(CSpPropItemsServer *pItemBaseServer, PROP_ITEM_ID idPropMin, PROP_ITEM_ID idPropMax); ~CSpPropItemsServer( ); CPropItem *_GetPropItem(PROP_ITEM_ID idPropItem); DWORD _GetPropData(PROP_ITEM_ID idPropItem, BOOL fForceFromReg=FALSE ); DWORD _GetPropDefaultData(PROP_ITEM_ID idPropItem); void _SetPropData(PROP_ITEM_ID idPropItem, DWORD dwData); void _SavePropData( ); void _SaveDefaultData( ); DWORD _GetNumPropItems( ) { return m_dwNumOfItems; } HRESULT _MergeDataFromServer(CSpPropItemsServer *pItemBaseServer, PROP_ITEM_ID idPropMin, PROP_ITEM_ID idPropMax); private: HRESULT _Initialize( ); CPropItem **m_PropItems; BOOL m_fInitialized; DWORD m_dwNumOfItems; }; // // This is a server wrap derived by CSapiIMX. // class __declspec(novtable) CSpPropItemsServerWrap : public CSpPropItemsServer { public: CSpPropItemsServerWrap( ) { #if 0 for (DWORD i=0; i<(DWORD)PropId_Max_Item_Id; i++) m_bChanged[i] = FALSE; #else memset(m_bChanged, 0, sizeof(m_bChanged)); #endif }; ~CSpPropItemsServerWrap( ){ }; ULONG _GetMaxAlternates( ); ULONG _GetMaxCandidateChars( ); BOOL _MasterLMEnabled( ) { return (BOOL)_GetPropData(PropId_LM_Master_Cand); } BOOL _ContextFeedEnabled( ) { return (BOOL)_GetPropData(PropId_Context_Feeding); } BOOL _IsModeBiasDictationEnabled( ) { return (BOOL) _GetPropData(PropId_Dict_ModeBias); } BOOL _SerializeEnabled( ) { return (BOOL) _GetPropData(PropId_Save_Speech_Data);} BOOL _LMASupportEnabled( ) { return (BOOL) _GetPropData(PropId_Support_LMA); } BOOL _RequireHighConfidenceForShorWord( ) { return (BOOL) _GetPropData(PropId_High_Confidence); } BOOL _NeedRemovingSpaceForPunctation( ) { return (BOOL) _GetPropData(PropId_Remove_Space);} BOOL _NeedDisableDictationWhileTyping( ) { return (BOOL) _GetPropData(PropId_DisDict_Typing); } BOOL _EnablePlaybackWhileCandUIOpen( ) {return (BOOL) _GetPropData(PropId_PlayBack); } BOOL _AllowDictationWhileCandOpen( ) { return (BOOL) _GetPropData(PropId_Dict_CandOpen); } BOOL _SelectCorrectCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_Select_Correct); } BOOL _NavigationCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_Navigation); } BOOL _CasingCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_Casing); } BOOL _EditingCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_Editing); } BOOL _KeyboardCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_Keyboard); } BOOL _TTSCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_TTS); } BOOL _LanguageBarCmdEnabled( ) { return (BOOL) _GetPropData(PropId_Cmd_Language_Bar); } BOOL _AllDictCmdsDisabled( ) { return !(BOOL) _GetPropData(PropId_Cmd_DictMode); } BOOL _AllCmdsEnabled( ); BOOL _AllCmdsDisabled( ); void _RenewAllPropDataFromReg( ); BOOL _IsModeKeysEnabled( ) { return (BOOL) _GetPropData(PropId_Mode_Button); } DWORD _GetDictationButton( ) { return _GetPropData(PropId_Dictation_Key); } DWORD _GetCommandButton( ) { return _GetPropData(PropId_Command_Key); } BOOL _IsPropItemChangedSinceLastRenew(PROP_ITEM_ID idPropItem) { return m_bChanged[(DWORD)idPropItem]; } private: BOOL m_bChanged[(DWORD)PropId_Max_Item_Id]; // indicates if the items have been changed since last // renew from Registry. }; #endif // _PROPITEM_H