XTPCalendarEventLabel.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:13k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // XTPCalendarEventLabel.cpp: implementation of the CXTPCalendarEventLabel and
  2. // CXTPCalendarEventLabels classes.
  3. //
  4. // This file is a part of the XTREME CALENDAR MFC class library.
  5. // (c)1998-2008 Codejock Software, All Rights Reserved.
  6. //
  7. // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
  8. // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
  9. // CONSENT OF CODEJOCK SOFTWARE.
  10. //
  11. // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
  12. // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
  13. // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
  14. // SINGLE COMPUTER.
  15. //
  16. // CONTACT INFORMATION:
  17. // support@codejock.com
  18. // http://www.codejock.com
  19. //
  20. /////////////////////////////////////////////////////////////////////////////
  21. #include "stdafx.h"
  22. #include "Resource.h"
  23. #include "Common/Resource.h"
  24. #include "Common/XTPPropExchange.h"
  25. #include "Common/XTPVC50Helpers.h"
  26. #include "Common/XTPVC80Helpers.h"
  27. #include "Common/XTPDrawHelpers.h"
  28. #include "Common/XTPResourceManager.h"
  29. #include "XTPCalendarEventLabel.h"
  30. #include "XTPCalendarUtils.h"
  31. #include "XTPCalendarDefines.h"
  32. #ifdef _DEBUG
  33. #define new DEBUG_NEW
  34. #undef THIS_FILE
  35. static char THIS_FILE[] = __FILE__;
  36. #endif
  37. IMPLEMENT_DYNAMIC(CXTPCalendarEventLabel, CCmdTarget)
  38. IMPLEMENT_DYNAMIC(CXTPCalendarEventLabels, CCmdTarget)
  39. IMPLEMENT_DYNCREATE(CXTPCalendarEventCategory, CCmdTarget)
  40. IMPLEMENT_DYNCREATE(CXTPCalendarEventCategories, CCmdTarget)
  41. IMPLEMENT_DYNAMIC(CXTPCalendarUIntArray,    CCmdTarget)
  42. IMPLEMENT_DYNAMIC(CXTPCalendarIconIDs,          CXTPCalendarUIntArray)
  43. IMPLEMENT_DYNAMIC(CXTPCalendarEventCategoryIDs, CXTPCalendarUIntArray)
  44. ////////////////////////////////////////////////////////////////////////////
  45. CXTPCalendarEventLabel::CXTPCalendarEventLabel(int nID, COLORREF clrColor, LPCTSTR pcszName)
  46. {
  47. m_nLabelID = nID;
  48. m_clrColor = clrColor;
  49. m_strName = pcszName;
  50. }
  51. ////////////////////////////////////////////////////////////////////////////
  52. CXTPCalendarEventLabels::CXTPCalendarEventLabels()
  53. {
  54. }
  55. CXTPCalendarEventLabels::~CXTPCalendarEventLabels()
  56. {
  57. RemoveAll();
  58. }
  59. CXTPCalendarEventLabel* CXTPCalendarEventLabels::Find(int nLabelID) const
  60. {
  61. int nFIdx = FindIndex(nLabelID);
  62. if (nFIdx >= 0)
  63. {
  64. return GetAt(nFIdx);
  65. }
  66. return NULL;
  67. }
  68. int CXTPCalendarEventLabels::FindIndex(int nLabelID) const
  69. {
  70. int nCount = GetCount();
  71. if (nLabelID >= 0 && nLabelID < nCount)
  72. {
  73. CXTPCalendarEventLabel* pLabel = GetAt(nLabelID);
  74. if (pLabel && pLabel->m_nLabelID == nLabelID)
  75. {
  76. return nLabelID;
  77. }
  78. }
  79. for (int i = 0; i < nCount; i++)
  80. {
  81. CXTPCalendarEventLabel* pLabel = GetAt(i);
  82. if (pLabel && pLabel->m_nLabelID == nLabelID)
  83. {
  84. return i;
  85. }
  86. }
  87. return -1;
  88. }
  89. void CXTPCalendarEventLabels::InitDefaultValues()
  90. {
  91. RemoveAll();
  92. //XTP_CALENDAR_NONE_LABEL_ID = 0
  93. CXTPCalendarEventLabel* pLabel;
  94. pLabel = new CXTPCalendarEventLabel(0, RGB(255, 255, 255), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_NONE));
  95. InsertAt(0, pLabel);
  96. pLabel = new CXTPCalendarEventLabel(1, RGB(255, 148, 132), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_IMPORTANT));
  97. InsertAt(1, pLabel);
  98. pLabel = new CXTPCalendarEventLabel(2, RGB(132, 156, 231), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_BUSINESS));
  99. InsertAt(2, pLabel);
  100. pLabel = new CXTPCalendarEventLabel(3, RGB(165, 222, 99), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_PERSONAL));
  101. InsertAt(3, pLabel);
  102. pLabel = new CXTPCalendarEventLabel(4, RGB(231, 231, 214), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_VACATION));
  103. InsertAt(4, pLabel);
  104. pLabel = new CXTPCalendarEventLabel(5, RGB(255, 181, 115), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_MUSTATTEND));
  105. InsertAt(5, pLabel);
  106. pLabel = new CXTPCalendarEventLabel(6, RGB(132, 239, 247), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_TRAVELREQUIRED));
  107. InsertAt(6, pLabel);
  108. pLabel = new CXTPCalendarEventLabel(7, RGB(214, 206, 132), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_NEEDSPREPARATION));
  109. InsertAt(7, pLabel);
  110. pLabel = new CXTPCalendarEventLabel(8, RGB(198, 165, 247), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_BIRTHDAY));
  111. InsertAt(8, pLabel);
  112. pLabel = new CXTPCalendarEventLabel(9, RGB(165, 206, 198), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_ANNIVERSARY));
  113. InsertAt(9, pLabel);
  114. pLabel = new CXTPCalendarEventLabel(10, RGB(255, 231, 115), XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_EVENT_LABEL_PHONECALL));
  115. InsertAt(10, pLabel);
  116. }
  117. //===========================================================================
  118. // CXTPCalendarEventCategory
  119. CXTPCalendarEventCategory::CXTPCalendarEventCategory(UINT nID, LPCTSTR pcszName,
  120. COLORREF clrBorder, COLORREF clrBkBase)
  121. {
  122. m_nID = nID;
  123. m_strName = pcszName;
  124. m_clrBorder = clrBorder;
  125. m_clrBkBase = clrBkBase;
  126. }
  127. CXTPCalendarEventCategory::~CXTPCalendarEventCategory()
  128. {
  129. }
  130. CXTPPaintManagerColorGradient& CXTPCalendarEventCategory::GetBackgroundColor()
  131. {
  132. if (m_grclrBackground.IsNull())
  133. {
  134. m_grclrBackground.clrLight.SetStandardValue(XTPDrawHelpers()->LightenColor(156, m_clrBkBase));// 156 - 242, 178, 179;
  135. m_grclrBackground.clrDark.SetStandardValue(XTPDrawHelpers()->LightenColor(56, m_clrBkBase));  // 56  - 229,100, 107
  136. }
  137. return m_grclrBackground;
  138. }
  139. COLORREF CXTPCalendarEventCategory::GetBkColorAllDayEvents()
  140. {
  141. return m_clrBkBase;
  142. }
  143. COLORREF CXTPCalendarEventCategory::GetBkColorWorkCell()
  144. {
  145. return XTPDrawHelpers()->LightenColor(185, m_clrBkBase); // 185 - 245, 201, 203
  146. }
  147. COLORREF CXTPCalendarEventCategory::GetBkColorNonWorkCell()
  148. {
  149. return XTPDrawHelpers()->LightenColor(115, m_clrBkBase); // 115 - 237, 146, 150
  150. }
  151. COLORREF CXTPCalendarEventCategory::GetColorCellBorder()
  152. {
  153. return XTPDrawHelpers()->LightenColor(45, m_clrBkBase); // 45 - 227, 91, 98
  154. }
  155. //===========================================================================
  156. //CXTPCalendarEventCategories::CXTPCalendarEventCategories(BOOL bDefaultColorsSet)
  157. //{
  158. //  if (bDefaultColorsSet)
  159. //  {
  160. ////        m_pDefaultColorsSet = NULL;
  161. ////        InitDefaultColorsSet();
  162. //  }
  163. //  else
  164. //  {
  165. ////        m_pDefaultColorsSet = new CXTPCalendarEventCategories(TRUE);
  166. //      InitDefaultValues();
  167. //  }
  168. //
  169. //#ifdef _XTP_ACTIVEX
  170. //  EnableAutomation();
  171. //  EnableTypeLib();
  172. //#endif
  173. //}
  174. CXTPCalendarEventCategories::CXTPCalendarEventCategories()
  175. {
  176. //  m_pDefaultColorsSet = new CXTPCalendarEventCategories(TRUE);
  177. InitDefaultValues();
  178. }
  179. CXTPCalendarEventCategories::~CXTPCalendarEventCategories()
  180. {
  181. //CMDTARGET_RELEASE(m_pDefaultColorsSet);
  182. }
  183. CXTPCalendarEventCategory* CXTPCalendarEventCategories::Find(UINT nID) const
  184. {
  185. int nFIdx = FindIndex(nID);
  186. if (nFIdx >= 0)
  187. {
  188. return GetAt(nFIdx);
  189. }
  190. return NULL;
  191. }
  192. int CXTPCalendarEventCategories::FindIndex(UINT nID) const
  193. {
  194. int nCount = GetCount();
  195. //---------------------------------------------------------
  196. int nDirectIdx = (int)(nID - 1);
  197. if (nDirectIdx >= 0 && nDirectIdx < nCount)
  198. {
  199. CXTPCalendarEventCategory* pEvCat = GetAt(nDirectIdx);
  200. if (pEvCat && pEvCat->GetID() == nID)
  201. {
  202. return nDirectIdx;
  203. }
  204. }
  205. //---------------------------------------------------------
  206. for (int i = 0; i < nCount; i++)
  207. {
  208. CXTPCalendarEventCategory* pEvCat = GetAt(i);
  209. if (pEvCat && pEvCat->GetID() == nID)
  210. {
  211. return i;
  212. }
  213. }
  214. return -1;
  215. }
  216. CString CXTPCalendarEventCategories::LoadCategoryName(UINT nIDResource) const
  217. {
  218. return XTPResourceManager()->LoadString(nIDResource) + _T(" ") + XTPResourceManager()->LoadString(XTP_IDS_CALENDAR_CATEGORY);
  219. }
  220. void CXTPCalendarEventCategories::InitDefaultValues()
  221. {
  222. RemoveAll();
  223. CXTPCalendarEventCategory* pEvCat;
  224. //---------------------------------------
  225. pEvCat = new CXTPCalendarEventCategory(xtpCalendarEventCategoryYellow, LoadCategoryName(XTP_IDS_CLR_YELLOW),
  226. RGB(154, 149, 25), RGB(255, 251, 155));//RGB(255, 252, 179), RGB(255,249, 91));
  227. Add(pEvCat);
  228. //---------------------------------------
  229. pEvCat = new CXTPCalendarEventCategory(xtpCalendarEventCategoryGreen, LoadCategoryName(XTP_IDS_CLR_GREEN),
  230. RGB(55, 126, 45), RGB(96, 194, 82)); //RGB(196, 232, 190), RGB(136, 210, 127));
  231. Add(pEvCat);
  232. //---------------------------------------
  233. pEvCat = new CXTPCalendarEventCategory(xtpCalendarEventCategoryRed, LoadCategoryName(XTP_IDS_CLR_RED),
  234. RGB(167, 29, 35), RGB(220, 56, 65)); //RGB(242, 178, 179), RGB(229,100, 107));
  235. Add(pEvCat);
  236. //---------------------------------------
  237. pEvCat = new CXTPCalendarEventCategory(xtpCalendarEventCategoryPink, LoadCategoryName(XTP_IDS_CLR_PINK),
  238. RGB(77, 49, 141), RGB(184, 164, 224)); //RGB(202, 187, 232), RGB(150, 125, 210));
  239. Add(pEvCat);
  240. //---------------------------------------
  241. pEvCat = new CXTPCalendarEventCategory(xtpCalendarEventCategoryOrange, LoadCategoryName(XTP_IDS_CLR_ORANGE),
  242. RGB(173, 77, 13), RGB(247, 187, 137)); //RGB(249, 204, 167), RGB(244, 152, 90));
  243. Add(pEvCat);
  244. //---------------------------------------
  245. pEvCat = new CXTPCalendarEventCategory(xtpCalendarEventCategoryBlue, LoadCategoryName(XTP_IDS_CLR_BLUE),
  246. RGB(40, 81, 142), RGB(159, 183, 232)); // RGB(183, 201, 238), RGB(119, 158, 218));
  247. Add(pEvCat);
  248. //---------------------------------------
  249. //pEvCat = new CXTPCalendarEventCategory(1, _T(" category"),
  250. //  RGB(, , ), RGB(, , ), RGB(, , ));
  251. //Add(pEvCat);
  252. }
  253. //void CXTPCalendarEventCategories::InitDefaultColorsSet()
  254. //{
  255. // TODO:
  256. //}
  257. //===========================================================================
  258. int CXTPCalendarUIntArray::Find(UINT uID) const
  259. {
  260. return TBase::FindElement(uID);
  261. }
  262. BOOL CXTPCalendarUIntArray::RemoveID(UINT uID)
  263. {
  264. return TBase::RemoveElement(uID);
  265. }
  266. CString CXTPCalendarUIntArray::SaveToString() const
  267. {
  268. CString strData;
  269. TCHAR szNumber[34];
  270. int nCount = GetSize();
  271. for (int i = 0; i < nCount; i++)
  272. {
  273. UINT uElement = GetAt(i);
  274. ITOT_S((int)uElement, szNumber, _countof(szNumber));
  275. szNumber[33] = 0;
  276. if (!strData.IsEmpty())
  277. {
  278. strData += _T(",");
  279. }
  280. strData += szNumber;
  281. }
  282. return strData;
  283. }
  284. void CXTPCalendarUIntArray::LoadFromString(LPCTSTR pcszData)
  285. {
  286. RemoveAll();
  287. CString strData = pcszData;
  288. while (!strData.IsEmpty())
  289. {
  290. CString strNumber = strData.SpanExcluding(_T(","));
  291. UINT uElement = (UINT)_ttoi(strNumber);
  292. Add(uElement);
  293. int nDelCount = strNumber.GetLength() + 1;
  294. nDelCount = min(nDelCount, strData.GetLength());
  295. DELETE_S(strData, 0, nDelCount);
  296. }
  297. }
  298. void CXTPCalendarUIntArray::DoPropExchange(CXTPPropExchange* pPX, LPCTSTR pcszSection, LPCTSTR pcszElement)
  299. {
  300. if (!pPX || !pcszSection || !pcszElement)
  301. {
  302. ASSERT(FALSE);
  303. return;
  304. }
  305. long nVersion = 1;
  306. if (pPX->IsStoring())
  307. {
  308. CXTPPropExchangeSection secArray(pPX->GetSection(pcszSection));
  309. secArray->EmptySection();
  310. PX_Long(&secArray, _T("Version"), nVersion, 1);
  311. int nCount = GetSize();
  312. CXTPPropExchangeEnumeratorPtr pEnumerator(secArray->GetEnumerator(pcszElement));
  313. POSITION posStorage = pEnumerator->GetPosition(nCount);
  314. for (int i = 0; i < nCount; i++)
  315. {
  316. ULONG ulElement = (ULONG)GetAt(i);
  317. CXTPPropExchangeSection secElement(pEnumerator->GetNext(posStorage));
  318. PX_ULong(&secElement, _T("Value"), ulElement);
  319. }
  320. }
  321. else if (pPX->IsLoading())
  322. {
  323. RemoveAll();
  324. CXTPPropExchangeSection secArray(pPX->GetSection(pcszSection));
  325. PX_Long(&secArray, _T("Version"), nVersion, 1);
  326. if (nVersion != 1)
  327. {
  328. TRACE(_T("ERROR! CXTPCalendarIconIDs::DoPropExchange: Unsupported data version: %d n"), nVersion);
  329. return;
  330. }
  331. CXTPPropExchangeEnumeratorPtr pEnumerator(secArray->GetEnumerator(pcszElement));
  332. POSITION posStorage = pEnumerator->GetPosition();
  333. while (posStorage)
  334. {
  335. ULONG ulElement = 0;
  336. CXTPPropExchangeSection secElement(pEnumerator->GetNext(posStorage));
  337. PX_ULong(&secElement, _T("Value"), ulElement, 0);
  338. Add((ULONG)ulElement);
  339. }
  340. }
  341. else
  342. {
  343. ASSERT(FALSE);
  344. }
  345. }
  346. //===========================================================================
  347. CXTPCalendarIconIDs::CXTPCalendarIconIDs()
  348. {
  349. }
  350. CXTPCalendarIconIDs::~CXTPCalendarIconIDs()
  351. {
  352. }
  353. //===========================================================================
  354. CXTPCalendarEventCategoryIDs::CXTPCalendarEventCategoryIDs()
  355. {
  356. }
  357. CXTPCalendarEventCategoryIDs::~CXTPCalendarEventCategoryIDs()
  358. {
  359. }
  360. /////////////////////////////////////////////////////////////////////////////