3#include <QLoggingCategory>
6#include <QRegularExpression>
10#include <QCoreApplication>
12#include <QApplication>
13#include "RabbitCommonTools.h"
16#include "ParameterWakeOnLanUI.h"
17#include "OperateWakeOnLan.h"
19static Q_LOGGING_CATEGORY(log,
"WakeOnLan")
24 , m_pParameterPlugin(
nullptr)
26 qDebug(log) << Q_FUNC_INFO;
29COperateWakeOnLan::~COperateWakeOnLan()
31 qDebug(log) << Q_FUNC_INFO;
43 qDebug(log) << Q_FUNC_INFO;
50 if(!m_pView)
return -2;
51 m_pView->setWindowTitle(plugin->
Name());
55 check = connect(m_pView, &CFrmWakeOnLan::customContextMenuRequested,
56 this, [&](
const QPoint &pos){
57 m_Menu.exec(m_pView->mapToGlobal(pos));
61 m_Menu.addAction(QIcon::fromTheme(
"edit-copy"), tr(
"Copy ip address to clipbord"),
63 if(!m_pModel || !m_pView)
65 foreach(
auto index, m_pView->GetSelect()) {
66 QSharedPointer<CParameterWakeOnLan> p = m_pModel->GetData(index);
68 QString szIp = p->m_Net.GetHost();
69 if(szIp.isEmpty()) continue;
70 QApplication::clipboard()->setText(szIp);
73 m_Menu.addSeparator();
75 m_Menu.addAction(QIcon::fromTheme(
"view-refresh"), tr(
"Refresh"),
77 foreach(
auto p, m_pModel->m_Data)
81 QIcon::fromTheme(
"mac"), tr(
"Get mac address"),
83 if(!m_pModel || !m_pView)
85 foreach(
auto index, m_pView->GetSelect()) {
86 QSharedPointer<CParameterWakeOnLan> p = m_pModel->GetData(index);
89 p->SetHostState(CParameterWakeOnLan::HostState::GetMac);
93 QIcon::fromTheme(
"lan"), tr(
"Wake on lan"),
95 if(!m_pModel || !m_pView)
97 foreach(
auto index, m_pView->GetSelect()) {
98 QSharedPointer<CParameterWakeOnLan> p = m_pModel->GetData(index);
100 if(!m_Arp.WakeOnLan(p))
101 p->SetHostState(CParameterWakeOnLan::HostState::WakeOnLan);
104 m_Menu.addSeparator();
106 m_Menu.addAction(QIcon::fromTheme(
"list-add"), tr(
"Add"),
107 this, SLOT(slotAdd()));
108 m_Menu.addAction(QIcon::fromTheme(
"document-edit"), tr(
"Edit"),
110 QSharedPointer<CParameterWakeOnLan> para
111 = m_pModel->GetData(m_pView->GetCurrentIndex());
113 QMessageBox::information(
116 tr(
"Please select a item"));
121 RC_SHOW_WINDOW(&dlg);
123 m_Menu.addAction(QIcon::fromTheme(
"list-remove"), tr(
"Remove"),
124 m_pView, SLOT(slotRemoveRow()));
131 qDebug(log) << Q_FUNC_INFO;
158 if(m_pParameterPlugin && m_pParameterPlugin->GetShowProtocolPrefix())
164int COperateWakeOnLan::Start()
166#if defined(Q_OS_UNIX)
167 if(!RabbitCommon::CTools::HasAdministratorPrivilege()
168 && m_pParameterPlugin->GetPromptAdministratorPrivilege())
170 static bool bShow =
false;
175 QMessageBox::Warning, tr(
"Warning"),
176 tr(
"There are no administrator privileges, "
177 "and some functions(Get mac address) are restricted. "
178 "Please restart the program with administrative privileges."),
179 QMessageBox::Yes | QMessageBox::No);
180 msg.setCheckBox(
new QCheckBox(tr(
"Always shown"), &msg));
181 msg.checkBox()->setCheckable(
true);
183 msg.checkBox()->setChecked(
184 m_pParameterPlugin->GetPromptAdministratorPrivilege());
185 if(QMessageBox::Yes == nRet) {
186 RabbitCommon::CTools::Instance()->StartWithAdministratorPrivilege(
true);
188 if(m_pParameterPlugin->GetPromptAdministratorPrivilege()
189 != msg.checkBox()->isChecked()) {
190 m_pParameterPlugin->SetPromptAdministratorPrivilege(
191 msg.checkBox()->isChecked());
202int COperateWakeOnLan::Stop()
210 m_pParameterPlugin = pPara;
216 if(!m_pModel)
return -1;
217 return m_pModel->Load(set, m_pParameterPlugin);
222 if(!m_pModel)
return -1;
223 return m_pModel->Save(set);
226void COperateWakeOnLan::slotAdd()
229 para->SetGlobalParameters(m_pParameterPlugin);
232 int nRet = RC_SHOW_WINDOW(&dlg);
233 if(QDialog::Accepted == nRet)
234 m_pModel->AddItem(para);
Wake on lan operate interface.
virtual int SetGlobalParameters(CParameterPlugin *pPara) override
Apply the global parameters of the plug-in.
virtual int Load(QSettings &set) override
Load parameters.
virtual int Clean() override
Clean parameters and resource.
virtual const QString Id() override
Identity.
virtual const qint16 Version() const override
Version.
virtual QWidget * GetViewer() override
Get Viewer.
virtual const QString Name() override
Name.
virtual int Save(QSettings &set) override
Save parameters.
virtual int Initial() override
Initial parameters and resource.
virtual QDialog * OnOpenDialogSettings(QWidget *parent) override
Open settgins dialog.
void sigFinished()
Successful disconnection signal.
void sigRunning()
Start success signal.
virtual Q_INVOKABLE int Initial()
Initial parameters and resource.
virtual const QString Protocol() const
Protocol.
void sigViewerFocusIn(QWidget *pView)
The view is focus.
Q_INVOKABLE CPlugin * GetPlugin() const
Get plugin.
Global parameters of plugins.
The wake on lan parameters UI.
int SetParameter(CParameter *pParameter)
Set the parameters and initialize the user interface.
The wake on lan parameters.
virtual const QString Name() const =0
This name must be the same as the project name (${PROJECT_NAME}). The translation file (${PROJECT_NAM...
virtual const QString DisplayName() const
The plugin display name.