OptionFriends.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. // OptionFriends.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "cp_main.h"
  5. #include "OptionFriends.h"
  6. #include "FriendDetails.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. #define EMPTRY_STRING "----"
  13. /////////////////////////////////////////////////////////////////////////////
  14. // COptionFriends property page
  15. IMPLEMENT_DYNCREATE(COptionFriends, CPropertyPage)
  16. COptionFriends::COptionFriends() : CPropertyPage(COptionFriends::IDD)
  17. {
  18. //{{AFX_DATA_INIT(COptionFriends)
  19. m_PlaceOnClipboard = _T("");
  20. //}}AFX_DATA_INIT
  21. }
  22. COptionFriends::~COptionFriends()
  23. {
  24. }
  25. void COptionFriends::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CPropertyPage::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(COptionFriends)
  29. DDX_Control(pDX, IDC_CHECK_DISABLE_FRIENDS, m_bDisableRecieve);
  30. DDX_Control(pDX, IDC_CHECK_LOG_SEND_RECIEVE, m_SendRecieve);
  31. DDX_Control(pDX, IDC_LIST, m_List);
  32. DDX_Text(pDX, IDC_EDIT_PLACE_ON_CLIPBOARD, m_PlaceOnClipboard);
  33. //}}AFX_DATA_MAP
  34. }
  35. BEGIN_MESSAGE_MAP(COptionFriends, CPropertyPage)
  36. //{{AFX_MSG_MAP(COptionFriends)
  37. ON_NOTIFY(NM_DBLCLK, IDC_LIST, OnDblclkList)
  38. ON_NOTIFY(LVN_KEYDOWN, IDC_LIST, OnKeydownList)
  39. ON_BN_CLICKED(IDC_CHECK_DISABLE_FRIENDS, OnCheckDisableFriends)
  40. //}}AFX_MSG_MAP
  41. END_MESSAGE_MAP()
  42. /////////////////////////////////////////////////////////////////////////////
  43. // COptionFriends message handlers
  44. BOOL COptionFriends::OnInitDialog()
  45. {
  46. CPropertyPage::OnInitDialog();
  47. m_pParent = (COptionsSheet *)GetParent();
  48. m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT);
  49. InitListCtrlCols();
  50. InsertItems();
  51. m_SendRecieve.SetCheck(CGetSetOptions::GetLogSendReceiveErrors());
  52. m_bDisableRecieve.SetCheck(CGetSetOptions::GetDisableRecieve());
  53. m_PlaceOnClipboard = g_Opt.m_csIPListToPutOnClipboard;
  54. UpdateData(FALSE);
  55. return FALSE;
  56. }
  57. BOOL COptionFriends::OnApply()
  58. {
  59. CSendClients client;
  60. for (int i = 0; i < MAX_SEND_CLIENTS; i++)
  61. {
  62. if(m_List.GetItemText(i, 1) == "X")
  63. client.bSendAll = TRUE;
  64. else
  65. client.bSendAll = FALSE;
  66. client.csIP = m_List.GetItemText(i, 2);
  67. if(client.csIP == EMPTRY_STRING)
  68. client.csIP = "";
  69. client.csDescription = m_List.GetItemText(i, 3);
  70. if(client.csDescription == EMPTRY_STRING)
  71. client.csDescription = "";
  72. g_Opt.SetSendClients(client, i);
  73. }
  74. CGetSetOptions::SetLogSendReceiveErrors(m_SendRecieve.GetCheck());
  75. CGetSetOptions::SetDisableRecieve(m_bDisableRecieve.GetCheck());
  76. theApp.StartStopServerThread();
  77. UpdateData();
  78. g_Opt.SetListToPutOnClipboard(m_PlaceOnClipboard);
  79. g_Opt.GetClientSendCount();
  80. return CPropertyPage::OnApply();
  81. }
  82. void COptionFriends::InitListCtrlCols()
  83. {
  84. // Insert some columns
  85. m_List.InsertColumn(0, _T(""), LVCFMT_LEFT, 25);
  86. m_List.InsertColumn(1, _T("Send All Copies"), LVCFMT_LEFT, 90);
  87. m_List.InsertColumn(2, _T("IP/Name"), LVCFMT_LEFT, 135);
  88. m_List.InsertColumn(3, _T("Descriptions"), LVCFMT_LEFT, 157);
  89. }
  90. void COptionFriends::InsertItems()
  91. {
  92. // Delete the current contents
  93. m_List.DeleteAllItems();
  94. // Use the LV_ITEM structure to insert the items
  95. LVITEM lvi;
  96. CString strItem;
  97. for (int i = 0; i < MAX_SEND_CLIENTS; i++)
  98. {
  99. // Insert the first item
  100. lvi.mask = LVIF_TEXT;
  101. lvi.iItem = i;
  102. //-------------------------------------------------------------------
  103. strItem.Format("%d", i+1);
  104. lvi.iSubItem = 0;
  105. lvi.pszText = (LPTSTR)(LPCTSTR)(strItem);
  106. m_List.InsertItem(&lvi);
  107. //-------------------------------------------------------------------
  108. if(g_Opt.m_SendClients[i].bSendAll)
  109. strItem = "X";
  110. else
  111. strItem = EMPTRY_STRING;
  112. m_List.SetItemText(i, 1, strItem);
  113. //-------------------------------------------------------------------
  114. strItem = g_Opt.m_SendClients[i].csIP;
  115. if(g_Opt.m_SendClients[i].csIP.GetLength() <= 0)
  116. {
  117. strItem = EMPTRY_STRING;
  118. }
  119. m_List.SetItemText(i, 2, strItem);
  120. //-------------------------------------------------------------------
  121. strItem = g_Opt.m_SendClients[i].csDescription;
  122. if(g_Opt.m_SendClients[i].csDescription.GetLength() <= 0)
  123. {
  124. strItem = EMPTRY_STRING;
  125. }
  126. m_List.SetItemText(i, 3, strItem);
  127. }
  128. }
  129. void COptionFriends::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult)
  130. {
  131. POSITION pos = m_List.GetFirstSelectedItemPosition();
  132. if(pos)
  133. {
  134. int nItem = m_List.GetNextSelectedItem(pos);
  135. EditItem(nItem);
  136. }
  137. *pResult = 0;
  138. }
  139. BOOL COptionFriends::EditItem(int nItem)
  140. {
  141. CFriendDetails dlg;
  142. if(m_List.GetItemText(nItem, 1) == "X")
  143. dlg.m_checkSendAll = TRUE;
  144. else
  145. dlg.m_checkSendAll = FALSE;
  146. dlg.m_csIP = m_List.GetItemText(nItem, 2);
  147. if(dlg.m_csIP == EMPTRY_STRING)
  148. dlg.m_csIP = "";
  149. dlg.m_csDescription = m_List.GetItemText(nItem, 3);
  150. if(dlg.m_csDescription == EMPTRY_STRING)
  151. dlg.m_csDescription = "";
  152. if(dlg.DoModal() == IDOK)
  153. {
  154. if(dlg.m_checkSendAll)
  155. {
  156. m_List.SetItemText(nItem, 1, "X");
  157. }
  158. else
  159. m_List.SetItemText(nItem, 1, "");
  160. m_List.SetItemText(nItem, 2, dlg.m_csIP);
  161. m_List.SetItemText(nItem, 3, dlg.m_csDescription);
  162. return TRUE;
  163. }
  164. return FALSE;
  165. }
  166. void COptionFriends::OnKeydownList(NMHDR* pNMHDR, LRESULT* pResult)
  167. {
  168. LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;
  169. switch (pLVKeyDow->wVKey)
  170. {
  171. case VK_DELETE:
  172. {
  173. POSITION pos = m_List.GetFirstSelectedItemPosition();
  174. if(pos)
  175. {
  176. int nItem = m_List.GetNextSelectedItem(pos);
  177. m_List.SetItemText(nItem, 1, EMPTRY_STRING);
  178. m_List.SetItemText(nItem, 2, EMPTRY_STRING);
  179. m_List.SetItemText(nItem, 3, EMPTRY_STRING);
  180. }
  181. }
  182. break;
  183. case VK_RETURN:
  184. {
  185. POSITION pos = m_List.GetFirstSelectedItemPosition();
  186. if(pos)
  187. {
  188. int nItem = m_List.GetNextSelectedItem(pos);
  189. EditItem(nItem);
  190. }
  191. }
  192. break;
  193. }
  194. *pResult = 0;
  195. }
  196. void COptionFriends::OnCheckDisableFriends()
  197. {
  198. if(m_bDisableRecieve.GetCheck() == BST_CHECKED)
  199. GetDlgItem(IDC_EDIT_PLACE_ON_CLIPBOARD)->EnableWindow(FALSE);
  200. else
  201. GetDlgItem(IDC_EDIT_PLACE_ON_CLIPBOARD)->EnableWindow(TRUE);
  202. }