tagging release
[dasher.git] / Src / DasherCore / ConversionManagerFactory.cpp
blob0ecc7d4dab4f138377dc7c5980986f08963edf74
1 #ifndef WIN32
2 #include "config.h"
3 #endif
5 #include "ConversionManager.h"
6 #include "ConversionManagerFactory.h"
7 #include "DasherModel.h"
9 #ifdef WIN32
10 #ifdef JAPANESE
11 #include "IMEConversionHelper.h"
12 #endif
13 #else
15 #ifdef CHINESE
17 #include "PinYinConversionHelper.h"
18 #endif
20 #ifdef JAPANESE
21 #include "CannaConversionHelper.h"
22 #endif
24 #endif
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){
44 pagecount ++;
45 m_iCMCount =0;
47 else
48 m_iCMCount++;
50 CDasherNode *pNewRoot = pConversionManager->GetRoot(pParent, iLower, iUpper, pUserData);
51 pConversionManager->Unref();
53 return pNewRoot;
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) {
59 switch(iID) {
60 case 0: // No conversion required (shouldn't really be called)
61 return NULL;
62 case 1: // Japanese
63 #ifdef JAPANESE
64 #ifdef WIN32
65 return new CIMEConversionHelper;
66 #else
67 return new CCannaConversionHelper;
68 #endif
69 #else
70 return NULL;
71 #endif
72 case 2: // Chinese
73 #ifdef WIN32
74 return NULL;
75 #else
76 #ifdef CHINESE
77 return new CPinYinConversionHelper(pEventHandler,pSettingsStore, pCAlphIO);
78 #else
79 return NULL;
80 #endif
81 #endif
82 default:
83 // TODO: Error reporting here
84 return NULL;