5 #include "ConversionManager.h"
6 #include "ConversionManagerFactory.h"
7 #include "DasherModel.h"
11 #include "IMEConversionHelper.h"
17 #include "PinYinConversionHelper.h"
21 #include "CannaConversionHelper.h"
26 using namespace Dasher
;
28 CConversionManagerFactory::CConversionManagerFactory(Dasher::CEventHandler
*pEventHandler
, CSettingsStore
*pSettingsStore
, CNodeCreationManager
*pNCManager
, int iID
, Dasher::CAlphIO
*pCAlphIO
, CAlphabet
*pAlphabet
) {
29 m_pNCManager
= pNCManager
;
30 m_pAlphabet
= pAlphabet
;
32 // TODO: Need to deal with the case of GetHelper returning NULL
33 m_pHelper
= GetHelper(pEventHandler
, pSettingsStore
, iID
, pCAlphIO
);
35 // TODO: These shouldn't be here - need to figure out exactly how it all works
36 pagecount
= 0; // TODO: Doesn't actually appear to do anything
37 m_iCMCount
= 0; // Unique identifier passed to conversion managers
40 CDasherNode
*CConversionManagerFactory::GetRoot(CDasherNode
*pParent
, int iLower
, int iUpper
, void *pUserData
) {
41 CConversionManager
*pConversionManager(new CConversionManager(m_pNCManager
, m_pHelper
, m_pAlphabet
, m_iCMCount
));
43 if(m_iCMCount
>= MAX_CM_NUM
-1){
50 CDasherNode
*pNewRoot
= pConversionManager
->GetRoot(pParent
, iLower
, iUpper
, pUserData
);
51 pConversionManager
->Unref();
56 // TODO: Japanese/Chinese are currently disabled in Win32 - see 'exclude from build' on individual files' property pages, plus preprocessor defines
58 CConversionHelper
*CConversionManagerFactory::GetHelper(Dasher::CEventHandler
*pEventHandler
, CSettingsStore
*pSettingsStore
, int iID
, Dasher::CAlphIO
*pCAlphIO
) {
60 case 0: // No conversion required (shouldn't really be called)
65 return new CIMEConversionHelper
;
67 return new CCannaConversionHelper
;
77 return new CPinYinConversionHelper(pEventHandler
,pSettingsStore
, pCAlphIO
);
83 // TODO: Error reporting here