#include "MainInstruction.h" #include "ui_MainInstruction.h" #include #include #include "DlgRFIDConfig.h" MainInstruction::MainInstruction(QWidget *parent) : QWidget(parent), ui(new Ui::MainInstruction) { ui->setupUi(this); m_graphicsEditor = new ZkEdit(); // 连接几个特殊按钮,这些按钮将由外部处理 connect(ui->closeBtn, &QPushButton::clicked, this, std::bind(&MainInstruction::onSpecialButtonClicked, this, 1)); connect(ui->sysMgtBtn, &QPushButton::clicked, this, std::bind(&MainInstruction::onSpecialButtonClicked, this, 2)); connect(ui->sysSetBtn, &QPushButton::clicked, this, std::bind(&MainInstruction::onSpecialButtonClicked, this, 3)); connect(ui->otherSetBtn, &QPushButton::clicked, this, std::bind(&MainInstruction::onSpecialButtonClicked, this, 4)); connect(ui->sysUpdateBtn,&QPushButton::clicked, this, std::bind(&MainInstruction::onSpecialButtonClicked, this, 5)); // 其他信号槽连接在ui文件中 dlgInputAddr = new DlgInputAddr(parent); dialogAuthorization = new DialogAuthorization(parent); dlgRfidConfig = new DlgRFIDConfig(this); connect(dlgRfidConfig, &DlgRFIDConfig::accepted, this, &MainInstruction::onRFIDAutoConfirmTimeoutChanged); dlgInputAddr->GetAddr(); dlgInputAddr->vpnConnect(); dlgInputAddr->hide(); dialogMaintenanceTimeSettingAuth = new DialogAuthorization; connect(dialogMaintenanceTimeSettingAuth,SIGNAL(accepted()),this,SLOT(onDlgAuthMaintenanceTimeAccepted())); connect(dialogAuthorization,SIGNAL(accepted()),this,SLOT(ondialogAuthorizationAccepted())); MTimeSetting = new DialogMaintenanceTimeSetting(this); connect(MTimeSetting,SIGNAL(accepted()),this,SLOT(onMTimeSettingAccepted())); applyStyleSheet(); } MainInstruction::~MainInstruction() { delete ui; delete m_graphicsEditor; } void MainInstruction::bindSysPara(SysPara *sysPara){ this->sysPara = sysPara; } void MainInstruction::onGraphicsEditBtnClicked() { // 在arm主机上以全屏模式显示,而在x86上无所谓 #if defined(ARCH_AARCH64_GNU) m_graphicsEditor->showFullScreen(); #else m_graphicsEditor->show(); #endif } void MainInstruction::onSpecialButtonClicked(int btnID) { emit sendButtonClickedSignal(btnID); } void MainInstruction::on_createNewFileBtn_clicked() { emit newFileBtnClick(); } void MainInstruction::on_maintenanceIntervalBtn_clicked() { // dialogMaintenanceTimeSettingAuth->clearAuth(); // dialogMaintenanceTimeSettingAuth->show(); onDlgAuthMaintenanceTimeAccepted(); } void MainInstruction::onDlgAuthMaintenanceTimeAccepted(){ // QString authString= dialogMaintenanceTimeSettingAuth->getAuth(); // if(dlgInputAddr->checWhJmDate(authString)) // 0xa001 // { QDate curDate = QDate::currentDate(); QString mtEndDatestr = "20" + QString::number(sysPara->RFIDPara.maintenanceEndDate); QDate mtEndDate = QDate::fromString(mtEndDatestr,"yyyyMMdd"); int timeoutDay = curDate.daysTo(mtEndDate); MTimeSetting->updateMaintenanceTime(QString("%1 Days").arg(timeoutDay)); MTimeSetting->updateMaintenanceIntervalToUI(sysPara->RFIDPara.maintenanceInterval); MTimeSetting->disableMaintenanceTimeSet(false); MTimeSetting->show(); // }else // { // QMessageBox::about(this, tr("提示"), tr("密码不正确!")); // return; // } } void MainInstruction::maintenanceDialogShow(){ QDate curDate = QDate::currentDate(); QString mtEndDatestr = "20" + QString::number(sysPara->RFIDPara.maintenanceEndDate); QDate mtEndDate = QDate::fromString(mtEndDatestr,"yyyyMMdd"); int timeoutDay = curDate.daysTo(mtEndDate); MTimeSetting->updateMaintenanceTime(QString("%1 Days").arg(timeoutDay)); MTimeSetting->updateMaintenanceIntervalToUI(sysPara->RFIDPara.maintenanceInterval); MTimeSetting->disableMaintenanceTimeSet(true); MTimeSetting->show(); } void MainInstruction::onMTimeSettingAccepted(){ sysPara->RFIDPara.maintenanceInterval = MTimeSetting->getInterval(); if(MTimeSetting->getResetSchedule()){ QDate curDate = QDate::currentDate(); int curdate = curDate.toString("yyMMdd").toInt(); sysPara->RFIDPara.maintenanceDate = curdate; } QString mtDatestr = QString::number(sysPara->RFIDPara.maintenanceDate); QDate mtDate = QDate::fromString(mtDatestr,"yyMMdd"); QDate mtEndDate = mtDate.addMonths(sysPara->RFIDPara.maintenanceInterval); sysPara->RFIDPara.maintenanceEndDate = mtEndDate.toString("yyMMdd").toInt(); LogInfo::setRunStatusText(tr("mtDate1: %1").arg(sysPara->RFIDPara.maintenanceDate)); LogInfo::setRunStatusText(tr("mtInterval1: %1").arg(sysPara->RFIDPara.maintenanceInterval)); LogInfo::setRunStatusText(tr("mtEndDate1: %1").arg(sysPara->RFIDPara.maintenanceEndDate)); LogInfo::setRunStatusText(tr("mtFlog1: %1").arg(sysPara->RFIDPara.needMaintenance)); sysPara->saveRFIDPara(); } void MainInstruction::ondialogAuthorizationAccepted(){ QString authString = dialogAuthorization->getAuth(); if((authString.left(4) == "nnyp") && ( dlgInputAddr->checkSupperJm(authString.mid(4)))) { #ifdef __RFID_CARD /**********超级密码,除了维护时间的3个参数,其他参数清零*****************/ unsigned int mtDate = sysPara->RFIDPara.maintenanceDate; unsigned int mtInterval = sysPara->RFIDPara.maintenanceInterval; unsigned int mtEndDate = sysPara->RFIDPara.maintenanceEndDate; qDebug()<<"mtDate2: "<RFIDPara.maintenanceDate; qDebug()<<"mtInterval2: "<RFIDPara.maintenanceInterval; qDebug()<<"mtEndDate2: "<RFIDPara.maintenanceEndDate; memset(&sysPara->RFIDPara,0,sizeof(sysPara->RFIDPara)); sysPara->RFIDPara.maintenanceDate = mtDate; sysPara->RFIDPara.maintenanceInterval = mtInterval; sysPara->RFIDPara.maintenanceEndDate = mtEndDate; qDebug()<<"mtDate3: "<RFIDPara.maintenanceDate; qDebug()<<"mtInterval3: "<RFIDPara.maintenanceInterval; qDebug()<<"mtEndDate3: "<RFIDPara.maintenanceEndDate; sysPara->saveRFIDPara(); QMessageBox::warning(0,tr("提示"),tr("RFID卡清零!") ); sysPara->para.flagOfInkWarning = false; sysPara->para.flagOfSolventWarning = false; sysPara->status.needMaintenanceRemind = false; sysPara->para.inkWarnDate = 0; sysPara->para.inkWarnTime = 0; sysPara->para.solventWarnDate = 0; sysPara->para.solventWarnTime = 0; sysPara->saveParaToFile(); #endif } else if( dlgInputAddr->checkSupperJm(authString)) { sysPara->status.WorkTimeOut=0; dlgInputAddr->ReadJm(); dlgInputAddr->show(); // ui->labMac->setText(QString("Mac:%1").arg(dlgInputAddr->jd.addr)); } } void MainInstruction::on_pushButtonAuth_clicked() { dialogAuthorization->clearAuth(); dialogAuthorization->show(); } void MainInstruction::on_btn_time_clicked() { QTime tm = QTime::currentTime(); QDate date = QDate::currentDate(); timeDia.setYear(date.year()); timeDia.setMonth(date.month()); timeDia.setDay(date.day()); timeDia.setHour(tm.hour()); timeDia.setMinute(tm.minute()); timeDia.setSecond(tm.second()); timeDia.hide(); timeDia.show(); connect(&timeDia,SIGNAL(accepted()),this,SLOT(slt_timeSetting())); } #include void m_adjustdate(int year, int mon, int mday, int hour, int min, int sec) { time_t t; struct tm nowtime; nowtime.tm_sec = sec; // Seconds.[0-60] (1 leap second) nowtime.tm_min = min; // Minutes.[0-59] nowtime.tm_hour = hour; // Hours. [0-23] nowtime.tm_mday = mday; // Day.[1-31] nowtime.tm_mon = mon - 1; // Month. [0-11] nowtime.tm_year = year - 1900; // Year- 1900. nowtime.tm_isdst = -1; // DST.[-1/0/1] t = mktime(&nowtime); #if __GLIBC_MINOR__ >= 31 struct timespec res; res.tv_sec = t; clock_settime(CLOCK_REALTIME, &res); #else stime(&t); #endif } uint8_t m_datatime[8] = {}; void MainInstruction::slt_timeSetting() { m_adjustdate(timeDia.getYear(), timeDia.getMonth(), timeDia.getDay(), timeDia.getHour(), timeDia.getMinute(), timeDia.getSecond()); QDate date(timeDia.getYear(), timeDia.getMonth(), timeDia.getDay()); int dayOfWeek = date.dayOfWeek(); QString YearStr = QString::number(timeDia.getYear()); int Year1 = YearStr.mid(0,2).toInt(); int Year2 = YearStr.mid(2,2).toInt(); uint8_t year1 = Year1; m_datatime[0] = year1; uint8_t year2 = Year2; m_datatime[1] = year2; uint8_t month = timeDia.getMonth(); m_datatime[2] = month; uint8_t day = timeDia.getDay(); m_datatime[3] = day; uint8_t week= dayOfWeek; m_datatime[4] = week; uint8_t hour = timeDia.getHour(); m_datatime[5] = hour; uint8_t minute= timeDia.getMinute(); m_datatime[6] = minute; uint8_t second= timeDia.getSecond(); m_datatime[7] = second; sysPara->devOp->stm32Wr(0xA1,(unsigned char *)m_datatime,8); } void MainInstruction::onRfidCfgBtnClicked() { dlgRfidConfig->setAutoConfirmTimeout(sysPara->para.rfidCountDown); dlgRfidConfig->show(); } void MainInstruction::onRFIDAutoConfirmTimeoutChanged() { sysPara->para.rfidCountDown = dlgRfidConfig->autoConfirmTimeout(); qInfo() << "RFID auto confirm timeout: " << sysPara->para.rfidCountDown; sysPara->saveRFIDPara(); } void MainInstruction::applyStyleSheet() { QString styleSheet = R"( QWidget#buttonWidget { background-color: #95989D; } QPushButton#closeBtn { background-color: #E6F7FF; border: 1px solid #87CEEB; border-radius: 4px; font-size: 24px; color: #228B22; } QPushButton#closeBtn:hover { background-color: #D1E9FF; } QPushButton#closeBtn:pressed { background-color: #BAE7FF; } QLabel { font-size: 18px; color: #000000; font-weight: 500; } QCheckBox { font-size: 18px; color: #000000; font-weight:500; } QCheckBox::indicator { width: 18px; height: 18px; border: 1px solid #96A0A9; border-radius: 10px; background-color: #ffffff; } QCheckBox::indicator:checked { background-color: #95B2D4; border-color: #95B2D4; image: url(:/Demo/image/select.png); } QPushButton { background-color: #5396C1; color: #ffffff; border: 1px solid #000000; border-radius: 3px; font-size: 18px; font-weight:500; width: 180px; height: 90px; } QPushButton:hover { background-color: #5396C1; } QPushButton:disabled { background-color: #7C828E; color: #606060; border-color: #808080; } QWidget#fileTab, QWidget#extraTab, QWidget#settingsTab, QWidget#serviceTab { background-color: #E3E7EC; } QTabWidget::pane { border: 1px solid #dddddd; background-color: #ffffff; } QTabWidget::tab-bar { top: -3px; left: 10px; } QTabBar::tab { min-width: 90px; min-height: 45px; padding: 4px 10px; margin-right: 4px; border: 1px solid #dddddd; border-bottom: none; border-top-left-radius: 4px; border-top-right-radius: 4px; background-color: #5396C1; color: #ffffff; } QTabBar::tab:selected { background-color: #6bb1e0; color: #ffffff; box-shadow: 0 -3px 8px rgba(44, 125, 232, 0.25); } QTabBar::tab:focus { outline: none; } )"; this->setStyleSheet(styleSheet); }