/* * Deskflow -- mouse and keyboard sharing utility * SPDX-FileCopyrightText: (C) 2021 Symless Ltd. * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception */ #pragma once #include #include #include "gui/config/IServerConfig.h" #include "gui/config/ServerConfigDialogState.h" #include "gui/messages.h" namespace deskflow::gui { class ServerConnection : public QObject { Q_OBJECT using IServerConfig = deskflow::gui::IServerConfig; public: struct Deps { virtual ~Deps() = default; virtual messages::NewClientPromptResult showNewClientPrompt(QWidget *parent, const QString &clientName, bool serverRequiresPeerAuth = false) const; }; explicit ServerConnection( QWidget *parent, IServerConfig &serverConfig, const config::ServerConfigDialogState &serverConfigDialogState, std::shared_ptr deps = std::make_shared() ); void handleLogLine(const QString &logLine); signals: void messageShowing(); void configureClient(const QString &clientName); private: void handleNewClient(const QString &clientName); QWidget *m_pParent; IServerConfig &m_serverConfig; const config::ServerConfigDialogState &m_serverConfigDialogState; std::shared_ptr m_pDeps; QStringList m_receivedClients; bool m_messageShowing = false; }; } // namespace deskflow::gui