CustomFriendsHelper.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. #include "stdafx.h"
  2. #include "CustomFriendsHelper.h"
  3. #include "CP_Main.h"
  4. #include "Shared\Tokenizer.h"
  5. #include "Shared\TextConvert.h"
  6. CCustomFriendsHelper::CCustomFriendsHelper()
  7. {
  8. }
  9. CCustomFriendsHelper::~CCustomFriendsHelper()
  10. {
  11. }
  12. void CCustomFriendsHelper::Load()
  13. {
  14. m_list.clear();
  15. CString oldValues = CGetSetOptions::GetCustomSendToList();
  16. TiXmlDocument doc;
  17. CStringA xmlA;
  18. CTextConvert::ConvertToUTF8(oldValues, xmlA);
  19. doc.Parse(xmlA);
  20. TiXmlElement *ItemHeader = doc.FirstChildElement("CustomFriends");
  21. if (ItemHeader != NULL)
  22. {
  23. TiXmlElement *ItemElement = ItemHeader->FirstChildElement();
  24. while (ItemElement)
  25. {
  26. Name_Desc array_item;
  27. array_item.m_name = ItemElement->Attribute("name");
  28. array_item.m_desc = ItemElement->Attribute("desc");
  29. m_list.push_back(array_item);
  30. ItemElement = ItemElement->NextSiblingElement();
  31. }
  32. }
  33. }
  34. void CCustomFriendsHelper::Save()
  35. {
  36. /*CString values = _T("");
  37. int count = m_list.size();
  38. for (int i = 0; i < count; i++)
  39. {
  40. CString lineValue = m_list[i];
  41. values += _T(",");
  42. values += lineValue;
  43. }*/
  44. TiXmlDocument doc;
  45. TiXmlElement* friendOuter = new TiXmlElement("CustomFriends");
  46. doc.LinkEndChild(friendOuter);
  47. for (auto & listItem : m_list)
  48. {
  49. TiXmlElement* friendElement = new TiXmlElement("Friend");
  50. CStringA nameA;
  51. CTextConvert::ConvertToUTF8(listItem.m_name, nameA);
  52. friendElement->SetAttribute("name", nameA);
  53. CStringA descA;
  54. CTextConvert::ConvertToUTF8(listItem.m_desc, descA);
  55. friendElement->SetAttribute("desc", descA);
  56. friendOuter->LinkEndChild(friendElement);
  57. }
  58. TiXmlPrinter printer;
  59. doc.Accept(&printer);
  60. CString cs = printer.CStr();
  61. CGetSetOptions::SetCustomSendToList(cs);
  62. }
  63. void CCustomFriendsHelper::AddToMenu(CMenu *pMenu)
  64. {
  65. bool addedItem = false;
  66. int id = 0;
  67. for (auto & element : m_list)
  68. {
  69. if (addedItem == false)
  70. {
  71. addedItem = true;
  72. }
  73. CString cs;
  74. if (element.m_desc != _T(""))
  75. {
  76. cs.Format(_T("(%s) - %s"), element.m_name, element.m_desc);
  77. }
  78. else
  79. {
  80. cs.Format(_T("%s"), element.m_name);
  81. }
  82. pMenu->AppendMenuW(MF_STRING, (CustomFriendStartId + id), cs);
  83. id++;
  84. }
  85. if (addedItem)
  86. {
  87. pMenu->AppendMenu(MF_SEPARATOR);
  88. }
  89. pMenu->AppendMenuW(MF_STRING, (CustomFriendStartId + PromptForCustom), _T("Prompt For Name"));
  90. }
  91. void CCustomFriendsHelper::Add(CString item, CString desc)
  92. {
  93. int count = m_list.size();
  94. if (count < MaxCustomFriends)
  95. {
  96. Name_Desc array_item;
  97. array_item.m_name = item;
  98. array_item.m_desc = desc;
  99. m_list.push_back(array_item);
  100. Save();
  101. }
  102. }
  103. CString CCustomFriendsHelper::GetSendTo(int id, bool &showDlg)
  104. {
  105. int index = id - CustomFriendStartId;
  106. if (index >= 0 && index < m_list.size())
  107. {
  108. return m_list[index].m_name;
  109. }
  110. if (index == PromptForCustom)
  111. {
  112. showDlg = true;
  113. }
  114. return _T("");
  115. }
  116. void CCustomFriendsHelper::ClearList()
  117. {
  118. m_list.clear();
  119. this->Save();
  120. }