deskflow/src/lib/gui/dialogs/ServerConfigDialog.h

109 lines
2.6 KiB
C
Raw Normal View History

2012-06-10 16:50:54 +00:00
/*
* Deskflow -- mouse and keyboard sharing utility
* SPDX-FileCopyrightText: (C) 2025 Chris Rizzitello <sithlord48@gmail.com>
* SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
* SPDX-FileCopyrightText: (C) 2008 Volker Lanz <vl@fidra.de>
* SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
2012-06-10 16:50:54 +00:00
*/
#pragma once
2012-06-10 16:50:54 +00:00
#include "ScreenSetupModel.h"
#include "config/ServerConfig.h"
2012-06-10 16:50:54 +00:00
#include <QDialog>
class QItemSelection;
namespace Ui {
class ServerConfigDialog;
}
class ServerConfigDialog : public QDialog
{
Q_OBJECT
2012-06-10 16:50:54 +00:00
public:
ServerConfigDialog(QWidget *parent, ServerConfig &config);
~ServerConfigDialog() override;
bool addClient(const QString &clientName);
2012-06-10 16:50:54 +00:00
public Q_SLOTS:
Refactored core process management and IPC client (#7425) * Also ignore `command_pre` for Fedora itself * Improve warning message * Fixed layout issues on main window * Restore fusion theme for Windows dark mode * Further correct main window layout * Set CWD for launch on Windows to same dir as .env * Use signals for tray icon instead of callback * Reduce complexity for setting tray icon * Further reduce tray icon complexity * Reduce tray retry time * Fixed tray not showing on macOS * Refactor function names * Move tray icon to lib * Decouple server connection class * Move server connection to lib * Move client config to lib * Remove redundant forward declarations * Fixed some namespaces in the new lib * Move core process code to new class * Improve member names on new process class * Remove copy/pasta code * Move OSX helpers to lib * Add .mm to lib config * Fixed copyright * Improve reliability of log line handling * Fixed TLS certificate generate bugs * Remove client list * Refactor core process handling to fix various problems * Fixed process/connection status bugs * Fixed function signature issue on macOS * Fixed override warnings * Fixed string format warning * Save `wasStarted` state and use that instead * Use only filename in dialog * Use lambda for simple slot * Scroll to bottom if at bottome * Set value based on position before text added and set horizontal scroll too * Add 1px tollerance for Linux * Simplify start/stop mutex * Always stop service on restart * Increase scroll bottom threshold to 2 * Log warning instead of critical * Fixed long-standing dir CD-up hack * Remove include * Remove include * Fixed rogue dumbisense includes * Account for optional distro_like * Add QAction include to solve incomplete type * Remove rogue #pragma * Static cast log value * Solve event queue delete warning * Fixed integ test on Windows 10 * Reduce enum verbosity * Use static instance instead of global * Make function const * Use unique_ptr instead of new and delete, and made some functions const * Fixed smart pointer use * Fixed variable shadowing * Fixed wrong use of using * Fixed missing namespace using * Simplify TLS error handling * Improve UX around certificate errors and success * Decouple app config from core process through interface * First iteration of core process test * Mark dtor as override * Rename attach launch entry * Add TODO * Create proxy for process * Move IPC client to deps * Fixed warnings * Reorganize new GUI lib dir structure * Update includes to reflect new paths * Reorg GUI tests * Abstract IPC client * Refactor about screen * Fixed .ui warnings * Remove redundant include * Fixed typo * Fixed typos and add spelling * Fixed misleading function name * Improve comment * Improve code coverage for core process * Remove noisy log line * Make global const * Use default dtor * Use vector instead of new * Make ctor explicit * Make ctor explicit (2) * Use enum class * Fixed bad enum * Stub out core tool * Stub out dir operation * Extract byte functions * Add missing return path * Simplify byte/int functions * Fix truncation * Use ctor member assignment * Fixed segfault in process proxy * Fixed print warning * Make function const * Cleanup header * Fixed missing name * Update ChangeLog * Make more functions const
2024-08-07 14:05:18 +00:00
void accept() override;
void reject() override;
void message(const QString &message)
{
m_message = message;
}
2012-06-10 16:50:54 +00:00
protected Q_SLOTS:
void onScreenRemoved();
protected:
void addClient();
bool addComputer(const QString &clientName, bool doSilent);
void addHotkey();
void editHotkey();
void removeHotkey();
void listHotkeysSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected [[maybe_unused]]);
void addAction();
void editAction();
void removeAction();
void listActionsSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected [[maybe_unused]]);
void toggleSwitchDoubleTap(bool enable);
void setSwitchDoubleTap(int within);
void toggleSwitchDelay(bool enable);
void setSwitchDelay(int delay);
void toggleDefaultLockToScreenState(bool state);
void toggleLockToScreen(bool disabled);
void toggleWin32Foreground(bool enabled);
void toggleClipboard(bool enabled);
void setClipboardLimit(int limit);
void toggleHeartbeat(bool enabled);
void setHeartbeat(int rate);
void toggleRelativeMouseMoves(bool enabled);
void toggleProtocol();
void setSwitchCornerSize(int size);
void toggleCornerBottomLeft(bool enable);
void toggleCornerTopLeft(bool enable);
void toggleCornerBottomRight(bool enable);
void toggleCornerTopRight(bool enable);
void toggleExternalConfig(bool enable = false);
bool browseConfigFile();
ServerConfig &serverConfig()
{
return m_serverConfig;
}
void setOriginalServerConfig(const ServerConfig &s)
{
m_originalServerConfig = s;
Implement safer memory use, improve dev env, fixed GUI bugs (#7407) * Improve dev script for daemon * Ignore `.user` files created by Qt * Add `FORCE_DESKTOP_PROCESS` option * Catch errors related to getting profile dir * Disable IPC entirely if forced desktop * Use in-class init for AppConfig members * Refactor config to use safer memory management * Improve launch config to make OS-specific debugger usage clearer * Re-enable MainWindowTests on Windows, further refactor for memory safety, fixed some include orders * Remove dead singleton code * Swap order of tests * Use HTTPs for URLs * Fixed compile errors for `SYNERGY_ENABLE_LICENSING` compile path * Restore exec function call * Remove extra link in cancel dialog * Fixed broken link on activation cancel UI * Close dialog if activated * Fixed macOS enum ref to kCurrentProcess * Improve wording on cancel activation dialog * WIP - Test timeout (compile error) * Finished timeout logic (with smart pointer) * Include string_view * Switch to thread from jthread (maybe not supported by macOS compiler?) * Improve comment * Disable test on Windows * Add TODO related to jthread on macOS * Refactor settings and paths on Windows * Launch in desktop mode on Windows * Remove arg quote wraps which break desktop mode * Fixed qFatal on Linux * Remove test value * Follow original `AppConfig` accessor convention * Disable service checkbox if not Windows * Simplify TLS control enable logic * Update command and Git ignore * Fixed code style * Fixed include consistency * Fixed includes in validator * Fixed lint errors * Update ChangeLog * Use smart pointer for core process * Remove unneccesary default operators * Don't halt on stderr
2024-07-22 16:48:02 +00:00
}
ScreenSetupModel &model()
{
return m_screenSetupModel;
}
2012-06-10 16:50:54 +00:00
private:
std::unique_ptr<Ui::ServerConfigDialog> ui;
QString m_message = "";
ServerConfig &m_originalServerConfig;
bool m_originalServerConfigIsExternal;
QString m_originalServerConfigUsesExternalFile;
ServerConfig m_serverConfig;
ScreenSetupModel m_screenSetupModel;
private Q_SLOTS:
void onChange();
2012-06-10 16:50:54 +00:00
};