#ifndef NETWORKMANAGER_H
#define NETWORKMANAGER_H
#include <QObject>
#include <QTcpSocket>
#include <QTcpServer>
#include <QProcess>
class NetworkManager : public QObject {
Q_OBJECT
public:
enum class Route { USB, WIFI, Bluetooth };
enum class Role { Client, Server };
explicit NetworkManager(QObject *parent = nullptr);
~NetworkManager();
void startConnection(Route route, Role role);
void disconnectFromPeer();
void sendNoteContent(const QString &content, const QString &passKey, qint64 lastModified);
bool isConnected() const;
signals:
void statusChanged(const QString &status, bool isConnected);
void contentReceived(const QString &content);
private slots:
void handleNewConnection();
void handleReadyRead();
void handleSocketError(QAbstractSocket::SocketError socketError);
void handleConnected();
void handleDisconnected();
private:
void runAdbForward();
void setupClient(Route route);
void setupServer();
QTcpSocket *socket;
QTcpServer *server;
Role currentRole;
bool m_connected;
const quint16 PORT = 35690;
};
#endif