#pragma once #include #include #include #include class DeviceScreener final : public QObject { Q_OBJECT public: explicit DeviceScreener(QObject *parent = nullptr); ~DeviceScreener() override; public slots: void start(); void stop(); signals: void finished(); private: bool m_running = true; bool m_firstScan = true; QString m_urlAppUpdate; QString m_token; QString m_apiBase; QNetworkAccessManager *m_manager = nullptr; QMap m_lastApiUpdate; // deviceId → unix timestamp последнего PATCH static QList > readAdbDevices(); static QByteArray takeScreenshot(const QString &deviceId); static DeviceInfo readDeviceInfo(const QString &adbSerial); void postDevicesData(const QList &devices); QJsonValue apiGet(const QString &path); QJsonValue apiPost(const QString &path, const QJsonObject &body); void apiPatch(const QString &path, const QJsonObject &body); QString createDeviceOnApi(const DeviceInfo &device); void updateDeviceOnApi(const DeviceInfo &device); void postScreenshotToApi(const QString &apiId, const QByteArray &image); void toggleBankProfilesOnApi(const QString &deviceId, bool enable); };