3#ifdef HAVE_PCAPPLUSPLUS
4 #include "PcapPlusPlusVersion.h"
5 #include "PcapDevice.h"
7 #include <QLoggingCategory>
8 static Q_LOGGING_CATEGORY(logPcpp,
"WOL.PCPP")
9 void Pcpp_Logger(pcpp::Logger::LogLevel logLevel,
10 const std::
string& logMessage,
11 const std::
string& file,
12 const std::
string& method,
17 case pcpp::Logger::LogLevel::Debug:
18 qDebug(logPcpp) << logMessage.c_str();
20 case pcpp::Logger::LogLevel::Info:
21 qInfo(logPcpp) << logMessage.c_str();
23 case pcpp::Logger::LogLevel::Error:
24 qCritical(logPcpp) << logMessage.c_str();
32#include <QLoggingCategory>
35#include "RabbitCommonTools.h"
36#include "PluginWakeOnLan.h"
37#include "OperateWakeOnLan.h"
39static Q_LOGGING_CATEGORY(log,
"WakeOnLan.Plugin")
44#ifdef HAVE_PCAPPLUSPLUS
45 pcpp::Logger::getInstance().setLogPrinter(Pcpp_Logger);
46 pcpp::Logger::getInstance().setAllModulesToLogLevel(
47 pcpp::Logger::LogLevel::Debug);
49 pcpp::Logger::getInstance().enableLogs();
50 pcpp::Logger::getInstance().setLogLevel(
51 pcpp::LogModule::PcapLogModuleLiveDevice, pcpp::Logger::LogLevel::Info);
55CPluginWakeOnLan::~CPluginWakeOnLan()
57 qDebug(log) <<
"CPluginWakeOnLan::~CPluginWakeOnLan()";
60const CPlugin::TYPE CPluginWakeOnLan::Type()
const
62 return TYPE::NetworkTools;
72 return tr(
"Wake on lan");
77 return tr(
"Wake on lan");
80const QIcon CPluginWakeOnLan::Icon()
const
82 return QIcon::fromTheme(
"lan");
87 return PluginWakeOnLan_VERSION;
93 szDetails +=
"- " + tr(
"Dependency libraries") +
"\n";
94#ifdef HAVE_PCAPPLUSPLUS
95 szDetails +=
" - PcapPlusPlus";
97 szDetails +=
" - " + tr(
"version: ")
98 + pcpp::getPcapPlusPlusVersionFull().c_str();
100 szDetails +=
" - " + tr(
"Pcap lib version info: ")
101 + pcpp::PcapLiveDevice::getPcapLibVersionInfo().c_str();
109 QStringList permissions;
110 permissions <<
"android.permission.CHANGE_WIFI_STATE"
111 <<
"android.permission.ACCESS_WIFI_STATE"
112 <<
"android.permission.ACCESS_NETWORK_STATE"
113 <<
"android.permission.CHANGE_NETWORK_STATE";
114 RabbitCommon::CTools::AndroidRequestPermission(permissions);
117 if(!m_pOperate)
return m_pOperate;
119 QString szFile = m_pOperate->GetSettingsFile();
121 if(!d.exists(szFile))
return m_pOperate;
124 bool bRet = QMetaObject::invokeMethod(
127 Qt::DirectConnection,
128 Q_RETURN_ARG(
int, nRet),
129 Q_ARG(QString, szFile));
131 qCritical(log) <<
"Call" << m_pOperate->metaObject()->className()
132 + QString(
"::") +
"Load(QString szFile) fail." << szFile;
136 qCritical(log) <<
"Load parameter fail" << nRet;
144COperate* CPluginWakeOnLan::OnCreateOperate(
const QString &szId)
146 qDebug(log) << Q_FUNC_INFO;
156 qDebug(log) << Q_FUNC_INFO;
157 Q_ASSERT(m_pOperate == p);
158 m_pOperate =
nullptr;
virtual const QString Details() const override
显示更多细节。 例如: 在关于对话框或日志中显示。 包括插件的依赖库的版本信息和描述等
virtual const QString Protocol() const override
协议
virtual int DeleteOperate(COperate *p) override
Delete COperate
virtual const QString DisplayName() const override
在界面上显示的名称
virtual const QString Name() const override
插件名,这个名一定要与工程名(${PROJECT_NAME})相同。 翻译文件(${PROJECT_NAME}_*.ts))名与其相关。
virtual const QString Version() const override
Version
virtual const QString Description() const override
描述
virtual COperate * CreateOperate(const QString &szId, CParameterPlugin *para) override
新建 COperate 实例。仅由 CManager 调用
virtual Q_INVOKABLE int DeleteOperate(COperate *p)
Delete COperate
virtual const QString Id() const
标识。默认: Type() + ":" + Protocol() + ":" + Name()
virtual Q_INVOKABLE COperate * CreateOperate(const QString &szId, CParameterPlugin *para)
新建 COperate 实例。仅由 CManager 调用