mirror of
https://github.com/iDescriptor/iDescriptor.git
synced 2026-06-22 03:45:51 +08:00
1023777642
- Removed the old NetworkDeviceManager class and replaced it with a new NetworkDeviceProvider class to streamline network device handling. - Updated various widgets (NetworkDevicesToConnectWidget, NetworkDevicesWidget, SSHTerminalTool) to utilize the new NetworkDeviceProvider for device management. - Introduced a new SSHTerminalTool class to manage SSH connections, replacing the OpenSSHTerminalWidget. - Enhanced device selection UI to support both wired and wireless devices, including manual IP connection options. - Improved signal-slot connections for device addition and removal events. - Cleaned up unnecessary includes and code related to the old SSH terminal widget. - Added checks for device jailbreak status during SSH connection attempts.
70 lines
1.9 KiB
C++
70 lines
1.9 KiB
C++
#ifndef NETWORKDEVICEPROVIDER_H
|
|
#define NETWORKDEVICEPROVIDER_H
|
|
#include <QObject>
|
|
#include <QTimer>
|
|
|
|
#ifdef __linux__
|
|
#include "core/services/avahi/avahi_service.h"
|
|
#else
|
|
#include "core/services/dnssd/dnssd_service.h"
|
|
#endif
|
|
|
|
class NetworkDeviceProvider : public QObject
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
static NetworkDeviceProvider *sharedInstance()
|
|
{
|
|
static NetworkDeviceProvider instance;
|
|
return &instance;
|
|
}
|
|
|
|
NetworkDeviceProvider(QObject *parent = nullptr)
|
|
{
|
|
#ifdef __linux__
|
|
m_networkProvider = new AvahiService(this);
|
|
connect(m_networkProvider, &AvahiService::deviceAdded, this,
|
|
&NetworkDeviceProvider::_deviceAdded);
|
|
connect(m_networkProvider, &AvahiService::deviceRemoved, this,
|
|
&NetworkDeviceProvider::_deviceRemoved);
|
|
#else
|
|
m_networkProvider = new DnssdService(this);
|
|
connect(m_networkProvider, &DnssdService::deviceAdded, this,
|
|
&NetworkDeviceProvider::_deviceAdded);
|
|
connect(m_networkProvider, &DnssdService::deviceRemoved, this,
|
|
&NetworkDeviceProvider::_deviceRemoved);
|
|
#endif
|
|
|
|
/* Helps main ui load a litte faster */
|
|
QTimer::singleShot(std::chrono::seconds(1), this,
|
|
[this]() { m_networkProvider->startBrowsing(); });
|
|
}
|
|
|
|
QList<NetworkDevice> getNetworkDevices()
|
|
{
|
|
return m_networkProvider->getNetworkDevices();
|
|
}
|
|
|
|
private:
|
|
#ifdef __linux__
|
|
AvahiService *m_networkProvider = nullptr;
|
|
#else
|
|
DnssdService *m_networkProvider = nullptr;
|
|
#endif
|
|
|
|
void _deviceRemoved(const QString &deviceName)
|
|
{
|
|
emit deviceRemoved(deviceName);
|
|
};
|
|
|
|
void _deviceAdded(const NetworkDevice &device)
|
|
{
|
|
emit deviceAdded(device);
|
|
};
|
|
|
|
signals:
|
|
void deviceAdded(const NetworkDevice &device);
|
|
void deviceRemoved(const QString &deviceName);
|
|
};
|
|
|
|
#endif // NETWORKDEVICEPROVIDER_H
|