Files
VX5_KRO_GearPump/MainInstruction.cpp
T

359 lines
12 KiB
C++

#include "MainInstruction.h"
#include "ui_MainInstruction.h"
#include <QMessageBox>
#include <QDebug>
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);
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: "<<sysPara->RFIDPara.maintenanceDate;
qDebug()<<"mtInterval2: "<<sysPara->RFIDPara.maintenanceInterval;
qDebug()<<"mtEndDate2: "<<sysPara->RFIDPara.maintenanceEndDate;
memset(&sysPara->RFIDPara,0,sizeof(sysPara->RFIDPara));
sysPara->RFIDPara.maintenanceDate = mtDate;
sysPara->RFIDPara.maintenanceInterval = mtInterval;
sysPara->RFIDPara.maintenanceEndDate = mtEndDate;
qDebug()<<"mtDate3: "<<sysPara->RFIDPara.maintenanceDate;
qDebug()<<"mtInterval3: "<<sysPara->RFIDPara.maintenanceInterval;
qDebug()<<"mtEndDate3: "<<sysPara->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 <time.h>
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::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);
}