blob: fb379d6c27512c6ec9b380b723af9af0e3663378 [file] [log] [blame]
Oleg Sheikinf5049ad2005-07-01 12:41:15 +00001// ControlPanel.cxx: implementation of the ControlPanel class.
2//
3//////////////////////////////////////////////////////////////////////
4
5#include "ControlPanel.h"
6
7//////////////////////////////////////////////////////////////////////
8// Construction/Destruction
9//////////////////////////////////////////////////////////////////////
10
11//using namespace rfb_win32;
12using namespace winvnc;
13
14bool ControlPanel::showDialog()
15{
Oleg Sheikin14757372005-07-01 13:31:14 +000016 return Dialog::showDialog(MAKEINTRESOURCE(IDD_CONTROL_PANEL), NULL);
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000017}
18
19void ControlPanel::initDialog()
20{
Oleg Sheikin14757372005-07-01 13:31:14 +000021 TCHAR *ColumnsStrings[] = {
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000022 "IP address",
23 "Time connected",
24 "Status"
25 };
Oleg Sheikin14757372005-07-01 13:31:14 +000026 InitLVColumns(IDC_LIST_CONNECTIONS, handle, 120, 3, ColumnsStrings,
27 LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM,
28 LVS_EX_FULLROWSELECT, LVCFMT_LEFT);
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000029}
30
31bool ControlPanel::onCommand(int cmd)
32{
Oleg Sheikin14757372005-07-01 13:31:14 +000033 switch (cmd) {
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000034 case IDC_PROPERTIES:
35 SendMessage(m_hSTIcon, WM_COMMAND, ID_OPTIONS, 0);
36 return false;
37 case IDC_ADD_CLIENT:
38 SendMessage(m_hSTIcon, WM_COMMAND, ID_CONNECT, 0);
39 return false;
40 case IDC_KILL_SEL_CLIENT:
41 {
42
43 return false;
44 }
45 case IDC_KILL_ALL:
46 {
Oleg Sheikin641f7e52005-11-22 18:04:10 +000047 COPYDATASTRUCT copyData;
48 copyData.dwData = 2;
49 copyData.lpData = 0;
50 copyData.cbData = 0;
51 SendMessage(m_hSTIcon, WM_COPYDATA, 0, (LPARAM)&copyData);
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000052 return false;
53 }
54 case IDC_DISABLE_CLIENTS:
55 {
56
57 return false;
58 }
59 }
60 return false;
Oleg Sheikin14757372005-07-01 13:31:14 +000061
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000062}
63
Oleg Sheikin641f7e52005-11-22 18:04:10 +000064void ControlPanel::UpdateListView(rfb::ListConnInfo* LCInfo)
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000065{
Oleg Sheikinff43bfd2005-12-07 08:02:52 +000066 getSelConnInfo();
Oleg Sheikin641f7e52005-11-22 18:04:10 +000067 DeleteAllLVItem(IDC_LIST_CONNECTIONS, handle);
Oleg Sheikinff43bfd2005-12-07 08:02:52 +000068
69 if(LCInfo->Empty())
70 return;
71
72 ListConn.Copy(LCInfo);
Oleg Sheikin641f7e52005-11-22 18:04:10 +000073
74 char* ItemString[3];
75 int i = 0;
76
Oleg Sheikinff43bfd2005-12-07 08:02:52 +000077 for (ListConn.iBegin(); !ListConn.iEnd(); ListConn.iNext()) {
78 ListConn.iGetCharInfo(ItemString);
Oleg Sheikin641f7e52005-11-22 18:04:10 +000079 InsertLVItem(IDC_LIST_CONNECTIONS, handle, i, ItemString, 3);
Oleg Sheikinff43bfd2005-12-07 08:02:52 +000080 for (ListSelConn.iBegin(); !ListSelConn.iEnd(); ListSelConn.iNext()) {
81 if (ListSelConn.iGetConn() == ListConn.iGetConn())
82 SelectLVItem(IDC_LIST_CONNECTIONS, handle, i);
83 }
Oleg Sheikin641f7e52005-11-22 18:04:10 +000084 i++;
85 }
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000086}
87
88BOOL ControlPanel::dialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
89{
Oleg Sheikin14757372005-07-01 13:31:14 +000090 switch (msg) {
Oleg Sheikinf5049ad2005-07-01 12:41:15 +000091 case WM_INITDIALOG:
92 handle = hwnd;
93 initDialog();
94 return TRUE;
95 case WM_COMMAND:
96 switch (LOWORD(wParam)) {
97 case IDCANCEL:
98 handle = NULL;
99 EndDialog(hwnd, 0);
100 return TRUE;
101 default:
102 return onCommand(LOWORD(wParam));
103 }
104 }
105 return FALSE;
106}
107
Oleg Sheikinff43bfd2005-12-07 08:02:52 +0000108void ControlPanel::getSelConnInfo()
Oleg Sheikinf5049ad2005-07-01 12:41:15 +0000109{
Oleg Sheikinff43bfd2005-12-07 08:02:52 +0000110 int i = 0;
111 ListSelConn.Clear();
112 if(ListConn.Empty()) return;
113 for (ListConn.iBegin(); !ListConn.iEnd(); ListConn.iNext()) {
114 if (IsSelectedLVItem(IDC_LIST_CONNECTIONS, handle, i))
115 ListSelConn.iAdd(&ListConn);
116 i++;
117 }
Oleg Sheikinf5049ad2005-07-01 12:41:15 +0000118}
119
120ControlPanel::~ControlPanel()
121{
Oleg Sheikin14757372005-07-01 13:31:14 +0000122
Oleg Sheikinf5049ad2005-07-01 12:41:15 +0000123}