1 #include "TCAlert.h"
2 #include "TCStringArray.h"
3 #include "mystring.h"
4 
5 #if defined(_MSC_VER) && _MSC_VER >= 1400 && defined(_DEBUG)
6 #define new DEBUG_CLIENTBLOCK
7 #endif // _DEBUG
8 
TCAlert(const char * alertClass,const char * message,TCStringArray * extraInfo)9 TCAlert::TCAlert(
10 		const char *alertClass,
11 		const char *message,
12 		TCStringArray *extraInfo):
13 	m_alertClass(copyString(alertClass)),
14 	m_message(copyString(message)),
15 	m_extraInfo(TCObject::retain(extraInfo)),
16 	m_sender(NULL)
17 {
18 }
19 
TCAlert(const char * alertClass,const wchar_t * message,const ucstringVector & extraInfo)20 TCAlert::TCAlert(
21 		const char *alertClass,
22 		const wchar_t *message,
23 		const ucstringVector &extraInfo /*= WStringList()*/):
24 	m_alertClass(copyString(alertClass)),
25 	m_message(NULL),
26 	m_wMessage(message),
27 	m_extraInfo(NULL),
28 	m_ucExtraInfo(extraInfo),
29 	m_sender(NULL)
30 {
31 }
32 
~TCAlert(void)33 TCAlert::~TCAlert(void)
34 {
35 }
36 
dealloc(void)37 void TCAlert::dealloc(void)
38 {
39 	delete[] m_alertClass;
40 	delete[] m_message;
41 	TCObject::release(m_extraInfo);
42 	TCObject::dealloc();
43 }
44 
getMessage(void)45 const char *TCAlert::getMessage(void)
46 {
47 	if (!m_message)
48 	{
49 		std::string temp;
50 
51 		wstringtostring(temp, m_wMessage);
52 		m_message = copyString(temp.c_str());
53 	}
54 	return m_message;
55 }
56 
getWMessage(void)57 const wchar_t *TCAlert::getWMessage(void)
58 {
59 	if (!m_wMessage.size() && m_message && m_message[0])
60 	{
61 		mbstowstring(m_wMessage, m_message);
62 	}
63 #ifdef NO_WSTRING
64         return NULL;
65 #else // NO_WSTRING
66 	return m_wMessage.c_str();
67 #endif // NO_WSTRING
68 }
69 
getMessageUC(void)70 CUCSTR TCAlert::getMessageUC(void)
71 {
72 #ifdef TC_NO_UNICODE
73 	return getMessage();
74 #else // TC_NO_UNICODE
75 	return getWMessage();
76 #endif // TC_NO_UNICODE
77 }
78 
getExtraInfo(void)79 TCStringArray *TCAlert::getExtraInfo(void)
80 {
81 	if (!m_extraInfo && m_ucExtraInfo.size() > 0)
82 	{
83 		m_extraInfo = new TCStringArray;
84 		std::string temp;
85 
86 		for (ucstringVector::iterator it = m_ucExtraInfo.begin();
87 			it != m_ucExtraInfo.end(); ++it)
88 		{
89 #ifdef TC_NO_UNICODE
90 			temp = *it;
91 #else // TC_NO_UNICODE
92 			wstringtostring(temp, *it);
93 #endif // TC_NO_UNICODE
94 			m_extraInfo->addString(temp.c_str());
95 		}
96 	}
97 	return m_extraInfo;
98 }
99 
getUCExtraInfo(void)100 const ucstringVector &TCAlert::getUCExtraInfo(void)
101 {
102 	if (!m_ucExtraInfo.size() && m_extraInfo && m_extraInfo->getCount() > 0)
103 	{
104 		int i;
105 		int count = m_extraInfo->getCount();
106 
107 		m_ucExtraInfo.resize(count);
108 		for (i = 0; i < count; i++)
109 		{
110 			ucstring &temp = m_ucExtraInfo[i];
111 #ifdef TC_NO_UNICODE
112 			temp = m_extraInfo->stringAtIndex(i);
113 #else // TC_NO_UNICODE
114 			mbstowstring(temp, m_extraInfo->stringAtIndex(i));
115 #endif // TC_NO_UNICODE
116 		}
117 	}
118 	return m_ucExtraInfo;
119 }
120