#include "watchdogwidgt.h" #include "ui_watchdogwidgt.h" #include "iwatchdog.h" #include #include "messagebox.h" #include #include #include #include WatchDogWidgt::WatchDogWidgt(QWidget *parent) : IWidget(parent), ui(new Ui::WatchDogWidgt), m_wathcdog(Q_NULLPTR) { ui->setupUi(this); ui->checkBox->setEnabled(false); QIntValidator *pIntV = new QIntValidator; pIntV->setRange(1, 10); ui->timeoutEdt->setValidator(pIntV); QDoubleValidator *pDoubleV = new QDoubleValidator; pDoubleV->setRange(0.1, 10.0); ui->feedEdt->setValidator(pDoubleV); } WatchDogWidgt::~WatchDogWidgt() { if(m_wathcdog->isOpen()) { ui->openBtn->click(); } delete ui; } QString WatchDogWidgt::id() { return "watchdog"; } void WatchDogWidgt::loadData(const QDomElement &head, const QDomElement &body) { Q_UNUSED(body) QString devName; QString type; QDomElement e = head.toElement(); devName = e.attribute("devName"); type = e.attribute("type"); m_wathcdog = new IWatchDog(devName, this); connect(m_wathcdog, &IWatchDog::feedCount, this, [=](int count){ ui->widget->setValue(QString::number(count)); }); if(devName.isEmpty()) { ui->widget->setTips("watchdog not config!"); } qDebug() << QString("dveName=%1, type=%2").arg(devName).arg(type); ui->setBtn->setEnabled(false); connect(qApp, &QCoreApplication::aboutToQuit, this, [=](){ if(ui->openBtn->isChecked()) { ui->openBtn->click(); } }); } void WatchDogWidgt::on_openBtn_clicked() { auto setCheck = [=](bool bCheck){ ui->checkBox->setEnabled(bCheck); ui->checkBox->blockSignals(true); ui->checkBox->setChecked(bCheck); ui->checkBox->blockSignals(false); }; int timeoutTime = ui->timeoutEdt->text().toInt(); float feedtime = ui->feedEdt->text().toFloat(); if(!m_wathcdog->isOpen()&& checkoutInput() && m_wathcdog->open(timeoutTime, feedtime)) { setCheck(true); ui->openBtn->setText("stop"); ui->setBtn->setEnabled(true); }else{ ui->setBtn->setEnabled(false); m_wathcdog->close(); ui->openBtn->setText("start"); setCheck(false); ui->widget->setValue("0"); } } void WatchDogWidgt::on_checkBox_clicked() { qDebug() <<"start time wathcgod"; if(m_wathcdog->isOpen()) { if(!ui->checkBox->isChecked()) { ui->widget->startDownTime(ui->timeoutEdt->text().toInt()); }else{ ui->widget->startDownTime(0); } m_wathcdog->setFeed(ui->checkBox->isChecked()); } } void WatchDogWidgt::on_setBtn_clicked() { if(!checkoutInput()) { return; } m_wathcdog->setTimeoutTime(ui->timeoutEdt->text().toInt()); m_wathcdog->setFeedTime(ui->feedEdt->text().toFloat()); } bool WatchDogWidgt::checkoutInput() { QString timeoutSeconds = ui->timeoutEdt->text(); if(timeoutSeconds.isEmpty() || timeoutSeconds.toInt()>10 || timeoutSeconds.toInt()<1) { MessageBox::showMessage(this, "Input Timeount is Invalid!"); return false;; } QString feedSeconds = ui->feedEdt->text(); if(feedSeconds.isEmpty() || timeoutSeconds.toFloat()<0.1 || timeoutSeconds.toFloat()> 10) { MessageBox::showMessage(this, "Input Feed is Invalid!"); return false; } return true; }