OptionFriends.cpp 6.3 KB

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