You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			161 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
			
		
		
	
	
			161 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
// ControlPanel.cxx: implementation of the ControlPanel class.
 | 
						|
//
 | 
						|
//////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#include "ControlPanel.h"
 | 
						|
 | 
						|
//////////////////////////////////////////////////////////////////////
 | 
						|
// Construction/Destruction
 | 
						|
//////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
using namespace winvnc;
 | 
						|
 | 
						|
bool ControlPanel::showDialog()
 | 
						|
{
 | 
						|
  return Dialog::showDialog(MAKEINTRESOURCE(IDD_CONTROL_PANEL), NULL);
 | 
						|
}
 | 
						|
 | 
						|
void ControlPanel::initDialog()
 | 
						|
{
 | 
						|
  TCHAR *ColumnsStrings[] = {
 | 
						|
    (TCHAR *) "IP address",
 | 
						|
    (TCHAR *) "Time connected",
 | 
						|
    (TCHAR *) "Status"
 | 
						|
  };
 | 
						|
  InitLVColumns(IDC_LIST_CONNECTIONS, handle, 120, 3, ColumnsStrings,
 | 
						|
                LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM,
 | 
						|
                LVS_EX_FULLROWSELECT, LVCFMT_LEFT);
 | 
						|
  SendCommand(4, -1);
 | 
						|
}
 | 
						|
 | 
						|
bool ControlPanel::onCommand(int cmd)
 | 
						|
{
 | 
						|
  switch (cmd) {
 | 
						|
  case IDC_PROPERTIES:
 | 
						|
    SendMessage(m_hSTIcon, WM_COMMAND, ID_OPTIONS, 0);
 | 
						|
    return false;
 | 
						|
  case IDC_ADD_CLIENT:
 | 
						|
    SendMessage(m_hSTIcon, WM_COMMAND, ID_CONNECT, 0);
 | 
						|
    return false;
 | 
						|
  case IDC_KILL_ALL:
 | 
						|
    {
 | 
						|
      SendCommand(2, -1);
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  case IDC_KILL_SEL_CLIENT:
 | 
						|
    {     
 | 
						|
      SendCommand(3, 3);
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  case IDC_VIEW_ONLY:
 | 
						|
    {     
 | 
						|
      SendCommand(3, 1);
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  case IDC_FULL_CONTROL:
 | 
						|
    {     
 | 
						|
      SendCommand(3, 0);
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  case IDC_STOP_UPDATE:
 | 
						|
    {     
 | 
						|
      stop_updating = true;
 | 
						|
      EndDialog(handle, 0);
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  case IDC_DISABLE_CLIENTS:
 | 
						|
    {   
 | 
						|
      ListConnStatus.setDisable(isItemChecked(IDC_DISABLE_CLIENTS));
 | 
						|
      SendCommand(3, -1);
 | 
						|
      return false;
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return false;
 | 
						|
  
 | 
						|
}
 | 
						|
 | 
						|
void ControlPanel::UpdateListView(rfb::ListConnInfo* LCInfo)
 | 
						|
{
 | 
						|
  getSelConnInfo();
 | 
						|
  DeleteAllLVItem(IDC_LIST_CONNECTIONS, handle);
 | 
						|
  setItemChecked(IDC_DISABLE_CLIENTS, LCInfo->getDisable());
 | 
						|
 | 
						|
  if(LCInfo->Empty()) 
 | 
						|
    return;
 | 
						|
 | 
						|
  ListConn.Copy(LCInfo);
 | 
						|
 | 
						|
  char* ItemString[3];
 | 
						|
  int i = 0;
 | 
						|
 | 
						|
  for (ListConn.iBegin(); !ListConn.iEnd(); ListConn.iNext()) {
 | 
						|
    ListConn.iGetCharInfo(ItemString);
 | 
						|
    InsertLVItem(IDC_LIST_CONNECTIONS, handle, i, (TCHAR **) ItemString, 3);
 | 
						|
    for (ListSelConn.iBegin(); !ListSelConn.iEnd(); ListSelConn.iNext()) {
 | 
						|
      if (ListSelConn.iGetConn() == ListConn.iGetConn())
 | 
						|
        SelectLVItem(IDC_LIST_CONNECTIONS, handle, i);
 | 
						|
    }
 | 
						|
    i++;
 | 
						|
  } 
 | 
						|
}
 | 
						|
 | 
						|
BOOL ControlPanel::dialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 | 
						|
{
 | 
						|
  switch (msg) {
 | 
						|
  case WM_INITDIALOG:
 | 
						|
    handle = hwnd;
 | 
						|
    initDialog();
 | 
						|
    return TRUE;
 | 
						|
  case WM_DESTROY:
 | 
						|
    if (stop_updating) {
 | 
						|
      stop_updating = false;
 | 
						|
      SendCommand(3, 2);
 | 
						|
    }
 | 
						|
    return TRUE;
 | 
						|
  case WM_COMMAND:
 | 
						|
    switch (LOWORD(wParam)) {
 | 
						|
    case IDCANCEL:
 | 
						|
      handle = NULL;
 | 
						|
      EndDialog(hwnd, 0);
 | 
						|
      return TRUE;
 | 
						|
    default:
 | 
						|
      return onCommand(LOWORD(wParam));
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
void ControlPanel::getSelConnInfo()
 | 
						|
{
 | 
						|
  int i = 0;
 | 
						|
  ListSelConn.Clear();
 | 
						|
  if(ListConn.Empty()) return;
 | 
						|
  for (ListConn.iBegin(); !ListConn.iEnd(); ListConn.iNext()) {
 | 
						|
    if (IsSelectedLVItem(IDC_LIST_CONNECTIONS, handle, i))
 | 
						|
      ListSelConn.iAdd(&ListConn);
 | 
						|
    i++;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
void ControlPanel::SendCommand(DWORD command, int data)
 | 
						|
{
 | 
						|
  COPYDATASTRUCT copyData;
 | 
						|
  copyData.dwData = command;
 | 
						|
  getSelConnInfo();
 | 
						|
  if (data != -1) {
 | 
						|
    ListConnStatus.Copy(&ListSelConn);
 | 
						|
    ListConnStatus.setAllStatus(data);
 | 
						|
    ListConnStatus.setDisable(isItemChecked(IDC_DISABLE_CLIENTS));
 | 
						|
  } else {
 | 
						|
    ListConnStatus.Clear();
 | 
						|
  }
 | 
						|
  copyData.cbData = 0;
 | 
						|
  copyData.lpData = &ListConnStatus;
 | 
						|
  SendMessage(m_hSTIcon, WM_COPYDATA, 0, (LPARAM)©Data);
 | 
						|
}
 | 
						|
 | 
						|
ControlPanel::~ControlPanel()
 | 
						|
{
 | 
						|
  
 | 
						|
}
 |