mirror of
https://github.com/debauchee/barrier.git
synced 2025-06-19 11:11:39 +02:00
Initial commit of the synergy trunk sources from sf.net
This commit is contained in:
commit
958fa80d1d
429 changed files with 96848 additions and 0 deletions
281
cmd/launcher/CGlobalOptions.cpp
Normal file
281
cmd/launcher/CGlobalOptions.cpp
Normal file
|
@ -0,0 +1,281 @@
|
|||
/*
|
||||
* synergy -- mouse and keyboard sharing utility
|
||||
* Copyright (C) 2002 Chris Schoeneman
|
||||
*
|
||||
* This package is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* found in the file COPYING that should have accompanied this file.
|
||||
*
|
||||
* This package is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "CConfig.h"
|
||||
#include "ProtocolTypes.h"
|
||||
#include "CStringUtil.h"
|
||||
#include "CArch.h"
|
||||
#include "CGlobalOptions.h"
|
||||
#include "LaunchUtil.h"
|
||||
#include "resource.h"
|
||||
|
||||
static const int s_defaultDelay = 250;
|
||||
static const int s_defaultHeartbeat = 5000;
|
||||
|
||||
//
|
||||
// CGlobalOptions
|
||||
//
|
||||
|
||||
CGlobalOptions* CGlobalOptions::s_singleton = NULL;
|
||||
|
||||
CGlobalOptions::CGlobalOptions(HWND parent, CConfig* config) :
|
||||
m_parent(parent),
|
||||
m_config(config),
|
||||
m_delayTime(s_defaultDelay),
|
||||
m_twoTapTime(s_defaultDelay),
|
||||
m_heartbeatTime(s_defaultHeartbeat)
|
||||
{
|
||||
assert(s_singleton == NULL);
|
||||
s_singleton = this;
|
||||
}
|
||||
|
||||
CGlobalOptions::~CGlobalOptions()
|
||||
{
|
||||
s_singleton = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
CGlobalOptions::doModal()
|
||||
{
|
||||
// do dialog
|
||||
DialogBoxParam(s_instance, MAKEINTRESOURCE(IDD_GLOBAL_OPTIONS),
|
||||
m_parent, (DLGPROC)dlgProc, (LPARAM)this);
|
||||
}
|
||||
|
||||
void
|
||||
CGlobalOptions::init(HWND hwnd)
|
||||
{
|
||||
HWND child;
|
||||
char buffer[30];
|
||||
|
||||
// reset options
|
||||
sprintf(buffer, "%d", m_delayTime);
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_CHECK);
|
||||
setItemChecked(child, false);
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_TIME);
|
||||
setWindowText(child, buffer);
|
||||
sprintf(buffer, "%d", m_twoTapTime);
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_CHECK);
|
||||
setItemChecked(child, false);
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_TIME);
|
||||
setWindowText(child, buffer);
|
||||
sprintf(buffer, "%d", m_heartbeatTime);
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_CHECK);
|
||||
setItemChecked(child, false);
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_TIME);
|
||||
setWindowText(child, buffer);
|
||||
child = getItem(hwnd, IDC_GLOBAL_SCREENSAVER_SYNC);
|
||||
setItemChecked(child, true);
|
||||
child = getItem(hwnd, IDC_GLOBAL_RELATIVE_MOVES);
|
||||
setItemChecked(child, false);
|
||||
child = getItem(hwnd, IDC_GLOBAL_LEAVE_FOREGROUND);
|
||||
setItemChecked(child, false);
|
||||
|
||||
// get the global options
|
||||
const CConfig::CScreenOptions* options = m_config->getOptions("");
|
||||
if (options != NULL) {
|
||||
for (CConfig::CScreenOptions::const_iterator index = options->begin();
|
||||
index != options->end(); ++index) {
|
||||
const OptionID id = index->first;
|
||||
const OptionValue value = index->second;
|
||||
if (id == kOptionScreenSwitchDelay) {
|
||||
if (value > 0) {
|
||||
sprintf(buffer, "%d", value);
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_CHECK);
|
||||
setItemChecked(child, true);
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_TIME);
|
||||
setWindowText(child, buffer);
|
||||
}
|
||||
}
|
||||
else if (id == kOptionScreenSwitchTwoTap) {
|
||||
if (value > 0) {
|
||||
sprintf(buffer, "%d", value);
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_CHECK);
|
||||
setItemChecked(child, true);
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_TIME);
|
||||
setWindowText(child, buffer);
|
||||
}
|
||||
}
|
||||
else if (id == kOptionHeartbeat) {
|
||||
if (value > 0) {
|
||||
sprintf(buffer, "%d", value);
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_CHECK);
|
||||
setItemChecked(child, true);
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_TIME);
|
||||
setWindowText(child, buffer);
|
||||
}
|
||||
}
|
||||
else if (id == kOptionScreenSaverSync) {
|
||||
child = getItem(hwnd, IDC_GLOBAL_SCREENSAVER_SYNC);
|
||||
setItemChecked(child, (value != 0));
|
||||
}
|
||||
else if (id == kOptionRelativeMouseMoves) {
|
||||
child = getItem(hwnd, IDC_GLOBAL_RELATIVE_MOVES);
|
||||
setItemChecked(child, (value != 0));
|
||||
}
|
||||
else if (id == kOptionWin32KeepForeground) {
|
||||
child = getItem(hwnd, IDC_GLOBAL_LEAVE_FOREGROUND);
|
||||
setItemChecked(child, (value != 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
CGlobalOptions::save(HWND hwnd)
|
||||
{
|
||||
HWND child;
|
||||
int newDelayTime = 0;
|
||||
int newTwoTapTime = 0;
|
||||
int newHeartbeatTime = 0;
|
||||
|
||||
// get requested options
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_CHECK);
|
||||
if (isItemChecked(child)) {
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_TIME);
|
||||
newDelayTime = getTime(hwnd, child, true);
|
||||
if (newDelayTime == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_TIME);
|
||||
newDelayTime = getTime(hwnd, child, false);
|
||||
if (newDelayTime == 0) {
|
||||
newDelayTime = s_defaultDelay;
|
||||
}
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_CHECK);
|
||||
if (isItemChecked(child)) {
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_TIME);
|
||||
newTwoTapTime = getTime(hwnd, child, true);
|
||||
if (newTwoTapTime == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_TIME);
|
||||
newTwoTapTime = getTime(hwnd, child, false);
|
||||
if (newTwoTapTime == 0) {
|
||||
newTwoTapTime = s_defaultDelay;
|
||||
}
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_CHECK);
|
||||
if (isItemChecked(child)) {
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_TIME);
|
||||
newHeartbeatTime = getTime(hwnd, child, true);
|
||||
if (newHeartbeatTime == 0) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else {
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_TIME);
|
||||
newHeartbeatTime = getTime(hwnd, child, false);
|
||||
if (newHeartbeatTime == 0) {
|
||||
newHeartbeatTime = s_defaultHeartbeat;
|
||||
}
|
||||
}
|
||||
|
||||
// remove existing config options
|
||||
m_config->removeOption("", kOptionScreenSwitchDelay);
|
||||
m_config->removeOption("", kOptionScreenSwitchTwoTap);
|
||||
m_config->removeOption("", kOptionHeartbeat);
|
||||
m_config->removeOption("", kOptionScreenSaverSync);
|
||||
m_config->removeOption("", kOptionRelativeMouseMoves);
|
||||
m_config->removeOption("", kOptionWin32KeepForeground);
|
||||
|
||||
// add requested options
|
||||
child = getItem(hwnd, IDC_GLOBAL_DELAY_CHECK);
|
||||
if (isItemChecked(child)) {
|
||||
m_config->addOption("", kOptionScreenSwitchDelay, newDelayTime);
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_TWO_TAP_CHECK);
|
||||
if (isItemChecked(child)) {
|
||||
m_config->addOption("", kOptionScreenSwitchTwoTap, newTwoTapTime);
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_HEARTBEAT_CHECK);
|
||||
if (isItemChecked(child)) {
|
||||
m_config->addOption("", kOptionHeartbeat, newHeartbeatTime);
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_SCREENSAVER_SYNC);
|
||||
if (!isItemChecked(child)) {
|
||||
m_config->addOption("", kOptionScreenSaverSync, 0);
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_RELATIVE_MOVES);
|
||||
if (isItemChecked(child)) {
|
||||
m_config->addOption("", kOptionRelativeMouseMoves, 1);
|
||||
}
|
||||
child = getItem(hwnd, IDC_GLOBAL_LEAVE_FOREGROUND);
|
||||
if (isItemChecked(child)) {
|
||||
m_config->addOption("", kOptionWin32KeepForeground, 1);
|
||||
}
|
||||
|
||||
// save last values
|
||||
m_delayTime = newDelayTime;
|
||||
m_twoTapTime = newTwoTapTime;
|
||||
m_heartbeatTime = newHeartbeatTime;
|
||||
return true;
|
||||
}
|
||||
|
||||
int
|
||||
CGlobalOptions::getTime(HWND hwnd, HWND child, bool reportError)
|
||||
{
|
||||
CString valueString = getWindowText(child);
|
||||
int value = atoi(valueString.c_str());
|
||||
if (value < 1) {
|
||||
if (reportError) {
|
||||
showError(hwnd, CStringUtil::format(
|
||||
getString(IDS_INVALID_TIME).c_str(),
|
||||
valueString.c_str()));
|
||||
SetFocus(child);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
BOOL
|
||||
CGlobalOptions::doDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM)
|
||||
{
|
||||
switch (message) {
|
||||
case WM_INITDIALOG:
|
||||
init(hwnd);
|
||||
return TRUE;
|
||||
|
||||
case WM_COMMAND:
|
||||
switch (LOWORD(wParam)) {
|
||||
case IDOK:
|
||||
if (save(hwnd)) {
|
||||
EndDialog(hwnd, 0);
|
||||
}
|
||||
return TRUE;
|
||||
|
||||
case IDCANCEL:
|
||||
EndDialog(hwnd, 0);
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CALLBACK
|
||||
CGlobalOptions::dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
return s_singleton->doDlgProc(hwnd, message, wParam, lParam);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue