1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00
LibQQt/src/network/qqtethenetmanager.h

139 lines
3.0 KiB
C
Raw Normal View History

2016-12-29 16:49:18 +08:00
#ifndef QQTETHMANAGER_H
#define QQTETHMANAGER_H
#include <QObject>
#include <QTimer>
#include <QList>
#include <qthread.h>
2017-09-05 18:07:05 +08:00
#include "qqtcore.h"
2017-09-17 21:38:49 +08:00
#include "qqt-local.h"
2016-12-29 16:49:18 +08:00
2017-09-17 08:46:57 +08:00
class QQTSHARED_EXPORT QQTNetworkClearThread : public QThread
2016-12-29 16:49:18 +08:00
{
Q_OBJECT
public:
QQTNetworkClearThread(QObject* parent = 0) : QThread(parent) {
}
signals:
void cleared();
void notcleared();
// QThread interface
protected:
void run();
};
2017-09-17 08:46:57 +08:00
class QQTSHARED_EXPORT QQTDhcpThread : public QThread
2016-12-29 16:49:18 +08:00
{
Q_OBJECT
public:
QQTDhcpThread(QObject* parent = 0) : QThread(parent) {
}
void setnet(QString eth = "eth0") {net=eth;}
signals:
void passed(QString);
// QThread interface
protected:
void run();
private:
QString net;
};
// thread unsafe
2017-09-17 08:46:57 +08:00
class QQTSHARED_EXPORT QQTEthenetManager : public QObject
2016-12-29 16:49:18 +08:00
{
Q_OBJECT
public:
static QQTEthenetManager *Instance(QObject* parent = 0);
QList<TWifi>& wifiList() { return m_wifiList; }
inline TWifi currentWifi(){ return m_curWifi; }
bool setCurrentWifi(QString bssid_mac, QString password = "");
void setRefresh(bool ref = true) { ref ? m_workTimer->start(5000) : m_workTimer->stop(); }
void setDHCP(bool bUse = false) { m_bUseDHCP = bUse; }
void setAddr(QString ip, QString mask, QString gw, QString dns);
void getAddr(QString& ip, QString& mask, QString& gw, QString& dns);
/**
* @brief configIPAddress
* wpa_suplicant.conf
* net.sh
* ipaddr.conf
*/
void ipconfig();
QString currentNetName();
QTimer* workTimer() { return m_workTimer; }
signals:
2017-08-13 11:49:27 +08:00
/*
*
*/
2016-12-29 16:49:18 +08:00
void sigScanning();
2017-08-13 11:49:27 +08:00
/*
*
*/
2016-12-29 16:49:18 +08:00
void sigDisConnected();
2017-08-13 11:49:27 +08:00
/*
*
*/
2016-12-29 16:49:18 +08:00
void sigConnecting();
2017-08-13 11:49:27 +08:00
/*
*
*/
2016-12-29 16:49:18 +08:00
void sigConnected();
2017-08-13 11:49:27 +08:00
/*
* Wifi列表更新 list中wifi的标志位
*/
2016-12-29 16:49:18 +08:00
void sigRefreshed();
2017-08-13 11:49:27 +08:00
/*
* Wifi状态改变
*/
2016-12-29 16:49:18 +08:00
void sigStatusChanged(QString status);
2017-08-13 11:49:27 +08:00
/*
* 线
*/
2016-12-29 16:49:18 +08:00
void sigLanConnected();
2017-08-13 11:49:27 +08:00
/*
* 线
*/
2016-12-29 16:49:18 +08:00
void sigLanDisConnected();
2017-08-13 11:49:27 +08:00
/*
* 线
*/
2016-12-29 16:49:18 +08:00
void sigNetworkClear();
2017-08-13 11:49:27 +08:00
/*
* 线
*/
2016-12-29 16:49:18 +08:00
void sigNetworkNotClear();
private slots:
void refreshWifiList();
void refreshWifiStatus();
void checkLanConnection();
void DhcpPassed(QString netname);
void checkNetworkClear();
private:
explicit QQTEthenetManager(QObject *parent = 0);
void readStatus();
void restoreWifi();
bool restartWifi();
void saveScript();
void config();
signals:
public slots:
private:
static QQTEthenetManager* _instance;
QTimer* m_workTimer;
QList<TWifi> m_wifiList;
TWifi m_curWifi;
bool m_bUseDHCP;
QString m_netName;
QQTDhcpThread* m_thread;
QQTNetworkClearThread* m_clearThread;
QString m_status;
};
#endif // QQTETHMANAGER_H