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()->setChecked(
 
  182                m_pParameterPlugin->GetPromptAdministratorPrivilege());
 
  184            if(QMessageBox::Yes == nRet) {
 
  185                RabbitCommon::CTools::Instance()->StartWithAdministratorPrivilege(
true);
 
  187            if(m_pParameterPlugin->GetPromptAdministratorPrivilege()
 
  188                != msg.checkBox()->isChecked()) {
 
  189                m_pParameterPlugin->SetPromptAdministratorPrivilege(
 
  190                    msg.checkBox()->isChecked());
 
  201int COperateWakeOnLan::Stop()
 
  209    m_pParameterPlugin = pPara;
 
 
  215    if(!m_pModel) 
return -1;
 
  216    return m_pModel->Load(set, m_pParameterPlugin);
 
 
  221    if(!m_pModel) 
return -1;
 
  222    return m_pModel->Save(set);
 
 
  225void COperateWakeOnLan::slotAdd()
 
  228    para->SetGlobalParameters(m_pParameterPlugin);
 
  231    int nRet = RC_SHOW_WINDOW(&dlg);
 
  232    if(QDialog::Accepted == nRet)
 
  233        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.