621 lines
17 KiB
C++
621 lines
17 KiB
C++
#include <qwidget.h>
|
|||
|
|
#include <qpushbutton.h>
|
||
|
|
#include <qlabel.h>
|
||
|
|
#include <qlayout.h>
|
||
|
|
#include <qlineedit.h>
|
||
|
|
#include <qspinbox.h>
|
||
|
|
#include <qcheckbox.h>
|
||
|
|
#include <qlistwidget.h>
|
||
|
|
#include <chrono>
|
||
|
|
#include <qlist>
|
||
|
|
static QString convertSecondsToDateTime(unsigned long long seconds) {
|
||
|
|
// 将秒数转换为时间点
|
||
|
|
std::chrono::seconds sec(seconds);
|
||
|
|
std::chrono::time_point<std::chrono::system_clock> timePoint(sec);
|
||
|
|
|
||
|
|
// 转换为时间戳
|
||
|
|
auto time = std::chrono::system_clock::to_time_t(timePoint);
|
||
|
|
|
||
|
|
// 使用 QDateTime 来格式化时间
|
||
|
|
QDateTime dateTime = QDateTime::fromTime_t(static_cast<uint>(time));
|
||
|
|
|
||
|
|
// 将时间转换为指定格式的 QString
|
||
|
|
QString formattedDateTime = dateTime.toString("yyyy-MM-dd hh:mm:ss");
|
||
|
|
|
||
|
|
return formattedDateTime;
|
||
|
|
}
|
||
|
|
struct kaKongData
|
||
|
|
{
|
||
|
|
QString Name;
|
||
|
|
int type = 0;
|
||
|
|
unsigned long long startTimeM = 0;
|
||
|
|
unsigned long long keepTime = 0;
|
||
|
|
bool banBie = false;
|
||
|
|
bool baiBan = false;
|
||
|
|
bool yeBan = false;
|
||
|
|
|
||
|
|
bool louDong = false;
|
||
|
|
int louDongMin = 0;
|
||
|
|
int louDongMax = 0;
|
||
|
|
|
||
|
|
bool louCeng = false;
|
||
|
|
int louCengMin = 0;
|
||
|
|
int louCengMax = 0;
|
||
|
|
|
||
|
|
bool xianTi = false;
|
||
|
|
int xianTiMin = 0;
|
||
|
|
int xianTiMax = 0;
|
||
|
|
|
||
|
|
bool jiTai = false;
|
||
|
|
int jiTaiHaoMin = 0;
|
||
|
|
int jiTaiHaoMax = 0;
|
||
|
|
|
||
|
|
bool riQi = false;
|
||
|
|
int riQiMin = 0;
|
||
|
|
int riQiMax = 0;
|
||
|
|
};
|
||
|
|
class CustomWidget : public QWidget {
|
||
|
|
public:
|
||
|
|
CustomWidget(QWidget* parent = nullptr) : QWidget(parent) {}
|
||
|
|
|
||
|
|
protected:
|
||
|
|
void paintEvent(QPaintEvent* event) override {
|
||
|
|
Q_UNUSED(event);
|
||
|
|
|
||
|
|
QPainter painter(this);
|
||
|
|
painter.setPen(Qt::black); // 设置画笔颜色为黑色
|
||
|
|
painter.drawRect(rect().adjusted(0, 0, -1, -1)); // 绘制边框
|
||
|
|
}
|
||
|
|
};
|
||
|
|
class kakongSonWidget
|
||
|
|
{
|
||
|
|
|
||
|
|
public:
|
||
|
|
QWidget* widget;
|
||
|
|
QCheckBox* checkBox;
|
||
|
|
QCheckBox* baiBan;
|
||
|
|
QCheckBox* yeBanBan;
|
||
|
|
kakongSonWidget(QString title)
|
||
|
|
{
|
||
|
|
widget = new CustomWidget();
|
||
|
|
QVBoxLayout* layout = new QVBoxLayout();
|
||
|
|
widget->setLayout(layout);
|
||
|
|
{
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
QLabel* label = new QLabel(title);
|
||
|
|
checkBox = new QCheckBox();
|
||
|
|
QLabel* label2 = new QLabel(u8"启用");
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
hLayout->addWidget(checkBox);
|
||
|
|
hLayout->addWidget(label2);
|
||
|
|
layout->addLayout(hLayout);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
baiBan = new QCheckBox();
|
||
|
|
QLabel* label = new QLabel(u8"白班");
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
hLayout->addWidget(baiBan);
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
layout->addLayout(hLayout);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
yeBanBan = new QCheckBox();
|
||
|
|
QLabel* label = new QLabel(u8"夜班");
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
hLayout->addWidget(yeBanBan);
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
layout->addLayout(hLayout);
|
||
|
|
}
|
||
|
|
QLineEdit* lineEdit = new QLineEdit();
|
||
|
|
}
|
||
|
|
};
|
||
|
|
class kakongSonWidget2
|
||
|
|
{
|
||
|
|
|
||
|
|
public:
|
||
|
|
QWidget* widget;
|
||
|
|
QCheckBox* checkBox;
|
||
|
|
QLineEdit* minLineEdit;
|
||
|
|
QLineEdit* maxLineEdit;
|
||
|
|
kakongSonWidget2(QString title)
|
||
|
|
{
|
||
|
|
widget = new CustomWidget();
|
||
|
|
QVBoxLayout* layout = new QVBoxLayout();
|
||
|
|
widget->setLayout(layout);
|
||
|
|
{
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
QLabel* label = new QLabel(title);
|
||
|
|
checkBox = new QCheckBox();
|
||
|
|
QLabel* label2 = new QLabel(u8"启用");
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
hLayout->addWidget(checkBox);
|
||
|
|
hLayout->addWidget(label2);
|
||
|
|
layout->addLayout(hLayout);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
QLabel* label = new QLabel(u8"最小");
|
||
|
|
minLineEdit = new QLineEdit();
|
||
|
|
minLineEdit->setFixedWidth(60);
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
hLayout->addWidget(minLineEdit);
|
||
|
|
layout->addLayout(hLayout);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
QLabel* label = new QLabel(u8"最大");
|
||
|
|
maxLineEdit =new QLineEdit();
|
||
|
|
maxLineEdit->setFixedWidth(60);
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
hLayout->addWidget(maxLineEdit);
|
||
|
|
layout->addLayout(hLayout);
|
||
|
|
}
|
||
|
|
QLineEdit* lineEdit = new QLineEdit();
|
||
|
|
}
|
||
|
|
};
|
||
|
|
class kakong
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
|
||
|
|
QWidget *widget;
|
||
|
|
QHBoxLayout* layout;
|
||
|
|
QLineEdit* lineEdit;
|
||
|
|
QSpinBox* spinBox;
|
||
|
|
QLabel* icon;
|
||
|
|
|
||
|
|
QLabel* restTimeH;
|
||
|
|
QLabel* restTimeM;
|
||
|
|
QLabel* restTimeS;
|
||
|
|
|
||
|
|
QLabel* startTime;
|
||
|
|
QListWidget* listWidget;
|
||
|
|
QPushButton* saveBtn;
|
||
|
|
QPushButton* cancelBtn;
|
||
|
|
bool tikTok = false;
|
||
|
|
QList< kaKongData>datas;
|
||
|
|
kakongSonWidget* banBieWidget;
|
||
|
|
kakongSonWidget2* louDongWidget;
|
||
|
|
kakongSonWidget2* louCengWidget;
|
||
|
|
kakongSonWidget2* xianTiWidget;
|
||
|
|
kakongSonWidget2* jiTaiWidget;
|
||
|
|
kakongSonWidget2* riQiWidget;
|
||
|
|
|
||
|
|
unsigned long long nowStartTimeM = 0;
|
||
|
|
unsigned long long nowKeepTime = 0;
|
||
|
|
|
||
|
|
QPushButton* clearBtn;
|
||
|
|
QPushButton* delBtn;
|
||
|
|
QPushButton* cancelBtn2;
|
||
|
|
int currentIndex = -1;
|
||
|
|
|
||
|
|
QPushButton* cnc3btn;
|
||
|
|
QPushButton* cnc5btn;
|
||
|
|
QPushButton* cnc6btn;
|
||
|
|
void loadDataFromJson()
|
||
|
|
{
|
||
|
|
QList<kaKongData> dataList;
|
||
|
|
|
||
|
|
// 打开 JSON 文件并读取数据
|
||
|
|
QFile file(".\\config\\kakong.json");
|
||
|
|
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||
|
|
QByteArray jsonData = file.readAll();
|
||
|
|
file.close();
|
||
|
|
|
||
|
|
// 解析 JSON 数据
|
||
|
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
|
||
|
|
if (jsonDoc.isArray()) {
|
||
|
|
QJsonArray dataArray = jsonDoc.array();
|
||
|
|
|
||
|
|
// 逐个读取 JSON 数组中的对象,并添加到 dataList 中
|
||
|
|
for (const QJsonValue& value : dataArray) {
|
||
|
|
if (value.isObject()) {
|
||
|
|
QJsonObject obj = value.toObject();
|
||
|
|
kaKongData data;
|
||
|
|
data.Name = obj["Name"].toString();
|
||
|
|
data.type = obj["type"].toInt();
|
||
|
|
data.startTimeM = obj["startTimeM"].toVariant().toULongLong();
|
||
|
|
data.keepTime = obj["keepTime"].toVariant().toULongLong();
|
||
|
|
data.banBie = obj["banBie"].toBool();
|
||
|
|
data.baiBan = obj["baiBan"].toBool();
|
||
|
|
data.yeBan = obj["yeBan"].toBool();
|
||
|
|
data.louDong = obj["louDong"].toBool();
|
||
|
|
data.louDongMin = obj["louDongMin"].toInt();
|
||
|
|
data.louDongMax = obj["louDongMax"].toInt();
|
||
|
|
data.louCeng = obj["louCeng"].toBool();
|
||
|
|
data.louCengMin = obj["louCengMin"].toInt();
|
||
|
|
data.louCengMax = obj["louCengMax"].toInt();
|
||
|
|
data.xianTi = obj["xianTi"].toBool();
|
||
|
|
data.xianTiMin = obj["xianTiMin"].toInt();
|
||
|
|
data.xianTiMax = obj["xianTiMax"].toInt();
|
||
|
|
data.jiTai = obj["jiTai"].toBool();
|
||
|
|
data.jiTaiHaoMin = obj["jiTaiHaoMin"].toInt();
|
||
|
|
data.jiTaiHaoMax = obj["jiTaiHaoMax"].toInt();
|
||
|
|
data.riQi = obj["riQi"].toBool();
|
||
|
|
data.riQiMin = obj["riQiMin"].toInt();
|
||
|
|
data.riQiMax = obj["riQiMax"].toInt();
|
||
|
|
|
||
|
|
dataList.append(data);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qDebug() << "JSON 文件不是一个数组。";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qDebug() << "无法打开文件:" ;
|
||
|
|
}
|
||
|
|
|
||
|
|
datas = dataList;
|
||
|
|
reFreshList();
|
||
|
|
}
|
||
|
|
|
||
|
|
void saveToJson()
|
||
|
|
{
|
||
|
|
QJsonArray dataArray;
|
||
|
|
|
||
|
|
// 将数据列表转换为 JSON 数组
|
||
|
|
for (const kaKongData& data : datas) {
|
||
|
|
QJsonObject obj;
|
||
|
|
obj["Name"] = data.Name;
|
||
|
|
obj["type"] = data.type;
|
||
|
|
obj["startTimeM"] = static_cast<qint64>(data.startTimeM);
|
||
|
|
obj["keepTime"] = static_cast<qint64>(data.keepTime);
|
||
|
|
obj["banBie"] = data.banBie;
|
||
|
|
obj["baiBan"] = data.baiBan;
|
||
|
|
obj["yeBan"] = data.yeBan;
|
||
|
|
obj["louDong"] = data.louDong;
|
||
|
|
obj["louDongMin"] = data.louDongMin;
|
||
|
|
obj["louDongMax"] = data.louDongMax;
|
||
|
|
obj["louCeng"] = data.louCeng;
|
||
|
|
obj["louCengMin"] = data.louCengMin;
|
||
|
|
obj["louCengMax"] = data.louCengMax;
|
||
|
|
obj["xianTi"] = data.xianTi;
|
||
|
|
obj["xianTiMin"] = data.xianTiMin;
|
||
|
|
obj["xianTiMax"] = data.xianTiMax;
|
||
|
|
obj["jiTai"] = data.jiTai;
|
||
|
|
obj["jiTaiHaoMin"] = data.jiTaiHaoMin;
|
||
|
|
obj["jiTaiHaoMax"] = data.jiTaiHaoMax;
|
||
|
|
obj["riQi"] = data.riQi;
|
||
|
|
obj["riQiMin"] = data.riQiMin;
|
||
|
|
obj["riQiMax"] = data.riQiMax;
|
||
|
|
|
||
|
|
dataArray.append(obj);
|
||
|
|
}
|
||
|
|
|
||
|
|
// 创建 JSON 文档
|
||
|
|
QJsonDocument doc(dataArray);
|
||
|
|
|
||
|
|
// 将 JSON 数据保存到文件
|
||
|
|
QFile file(".\\config\\kakong.json");
|
||
|
|
if (file.open(QIODevice::WriteOnly)) {
|
||
|
|
file.write(doc.toJson());
|
||
|
|
file.close();
|
||
|
|
qDebug() << "数据已保存到文件:" << ".\\config\\kakong.json";
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
qDebug() << "无法打开文件进行保存:" << ".\\config\\kakong.json";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
kakong()
|
||
|
|
{
|
||
|
|
|
||
|
|
widget = new QWidget();
|
||
|
|
QVBoxLayout* Vlayout = new QVBoxLayout();
|
||
|
|
layout = new QHBoxLayout();
|
||
|
|
widget->setLayout(layout);
|
||
|
|
layout->addLayout(Vlayout);
|
||
|
|
///
|
||
|
|
QHBoxLayout* hLayout = new QHBoxLayout();
|
||
|
|
QLabel* label = new QLabel(u8"配方");
|
||
|
|
lineEdit=new QLineEdit();
|
||
|
|
QLabel* label2 = new QLabel(u8"卡控时间");
|
||
|
|
spinBox = new QSpinBox();
|
||
|
|
QLabel* label3 = new QLabel(u8"小时|有效时间");
|
||
|
|
restTimeH =new QLabel(u8"0");
|
||
|
|
QLabel* label4 = new QLabel(u8"小时");
|
||
|
|
restTimeM = new QLabel(u8"0");
|
||
|
|
QLabel* label6 = new QLabel(u8"分钟");
|
||
|
|
restTimeS = new QLabel(u8"0");
|
||
|
|
QLabel* label7 = new QLabel(u8"秒");
|
||
|
|
icon= new QLabel();
|
||
|
|
icon->setFixedHeight(20);
|
||
|
|
icon->setFixedWidth(20);
|
||
|
|
setIconColor(true);
|
||
|
|
QLabel* label5 = new QLabel(u8"开始时间");
|
||
|
|
startTime = new QLabel(u8"0");
|
||
|
|
hLayout->addWidget(label);
|
||
|
|
hLayout->addWidget(lineEdit);
|
||
|
|
hLayout->addWidget(label2);
|
||
|
|
hLayout->addWidget(spinBox);
|
||
|
|
hLayout->addWidget(label3);
|
||
|
|
hLayout->addWidget(restTimeH);
|
||
|
|
hLayout->addWidget(label4);
|
||
|
|
hLayout->addWidget(restTimeM);
|
||
|
|
hLayout->addWidget(label6);
|
||
|
|
hLayout->addWidget(restTimeS);
|
||
|
|
hLayout->addWidget(label7);
|
||
|
|
hLayout->addWidget(icon);
|
||
|
|
hLayout->addWidget(label5);
|
||
|
|
hLayout->addWidget(startTime);
|
||
|
|
Vlayout->addLayout(hLayout);
|
||
|
|
{
|
||
|
|
QHBoxLayout* hLayout2 = new QHBoxLayout();
|
||
|
|
cnc3btn = new QPushButton(u8"cnc3");
|
||
|
|
cnc3btn->setDisabled(true);
|
||
|
|
cnc5btn = new QPushButton(u8"cnc5");
|
||
|
|
cnc6btn = new QPushButton(u8"cnc6");
|
||
|
|
cnc3btn->setFixedWidth(120);
|
||
|
|
cnc5btn->setFixedWidth(120);
|
||
|
|
cnc6btn->setFixedWidth(120);
|
||
|
|
hLayout2->addWidget(cnc3btn);
|
||
|
|
hLayout2->addWidget(cnc5btn);
|
||
|
|
hLayout2->addWidget(cnc6btn);
|
||
|
|
hLayout2->setAlignment(Qt::AlignLeft);
|
||
|
|
Vlayout->addLayout(hLayout2);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
QHBoxLayout* hLayout2 = new QHBoxLayout();
|
||
|
|
banBieWidget = new kakongSonWidget(u8"班别");
|
||
|
|
hLayout2->addWidget(banBieWidget->widget);
|
||
|
|
louDongWidget = new kakongSonWidget2(u8"楼栋");
|
||
|
|
hLayout2->addWidget(louDongWidget->widget);
|
||
|
|
louCengWidget = new kakongSonWidget2(u8"楼层");
|
||
|
|
hLayout2->addWidget(louCengWidget->widget);
|
||
|
|
xianTiWidget = new kakongSonWidget2(u8"线体");
|
||
|
|
hLayout2->addWidget(xianTiWidget->widget);
|
||
|
|
jiTaiWidget = new kakongSonWidget2(u8"机台号");
|
||
|
|
hLayout2->addWidget(jiTaiWidget->widget);
|
||
|
|
riQiWidget = new kakongSonWidget2(u8"日期");
|
||
|
|
hLayout2->addWidget(riQiWidget->widget);
|
||
|
|
Vlayout->addLayout(hLayout2);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
QHBoxLayout* hLayout2 = new QHBoxLayout();
|
||
|
|
saveBtn = new QPushButton(u8"保存");
|
||
|
|
cancelBtn = new QPushButton(u8"取消");
|
||
|
|
saveBtn->setFixedWidth(120);
|
||
|
|
cancelBtn->setFixedWidth(120);
|
||
|
|
hLayout2->addWidget(saveBtn);
|
||
|
|
|
||
|
|
hLayout2->addWidget(cancelBtn);
|
||
|
|
Vlayout->addLayout(hLayout2);
|
||
|
|
}
|
||
|
|
////////////
|
||
|
|
{
|
||
|
|
QVBoxLayout*vlayout2 = new QVBoxLayout();
|
||
|
|
QLabel* label = new QLabel(u8"配方管理");
|
||
|
|
listWidget= new QListWidget();
|
||
|
|
clearBtn = new QPushButton(u8"清空");
|
||
|
|
delBtn = new QPushButton(u8"删除");
|
||
|
|
cancelBtn2 = new QPushButton(u8"取消配方");
|
||
|
|
vlayout2->addWidget(label);
|
||
|
|
vlayout2->addWidget(listWidget);
|
||
|
|
QHBoxLayout* hLayout2 = new QHBoxLayout();
|
||
|
|
hLayout2->addWidget(clearBtn);
|
||
|
|
hLayout2->addWidget(delBtn);
|
||
|
|
vlayout2->addLayout(hLayout2);
|
||
|
|
vlayout2->addWidget(cancelBtn);
|
||
|
|
layout->addLayout(vlayout2);
|
||
|
|
}
|
||
|
|
loadDataFromJson();
|
||
|
|
}
|
||
|
|
~kakong()
|
||
|
|
{
|
||
|
|
saveToJson();
|
||
|
|
}
|
||
|
|
void timerTask()
|
||
|
|
{
|
||
|
|
auto currentTime = std::chrono::system_clock::now();
|
||
|
|
auto currentTimeStamp = std::chrono::time_point_cast<std::chrono::seconds>(currentTime).time_since_epoch().count();
|
||
|
|
unsigned long long nowTime = static_cast<unsigned long long>(currentTimeStamp);
|
||
|
|
int time = (nowKeepTime + nowStartTimeM) - nowTime;
|
||
|
|
if (time > 0)
|
||
|
|
{
|
||
|
|
int resH = time / 3600;
|
||
|
|
int resM = (time - resH * 3600) / 60;
|
||
|
|
int resS = (time - resH * 3600 - resM * 60) % 3600;
|
||
|
|
restTimeH->setText(QString::number(resH));
|
||
|
|
restTimeM->setText(QString::number(resM));
|
||
|
|
restTimeS->setText(QString::number(resS));
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
setIconColor(true);
|
||
|
|
restTimeH->setText("0");
|
||
|
|
restTimeM->setText("0");
|
||
|
|
restTimeS->setText("0");
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void setIconColor(bool setRed)
|
||
|
|
{
|
||
|
|
if(setRed ==true)
|
||
|
|
icon->setStyleSheet("background-color: red;");
|
||
|
|
else
|
||
|
|
icon->setStyleSheet("background-color: green;");
|
||
|
|
}
|
||
|
|
void reFreshList()
|
||
|
|
{
|
||
|
|
listWidget->clear();
|
||
|
|
for (auto data : datas)
|
||
|
|
{
|
||
|
|
listWidget->addItem(data.Name);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void listSelect(int row)
|
||
|
|
{
|
||
|
|
currentIndex = row;
|
||
|
|
auto currentTime = std::chrono::system_clock::now();
|
||
|
|
auto currentTimeStamp = std::chrono::time_point_cast<std::chrono::seconds>(currentTime).time_since_epoch().count();
|
||
|
|
unsigned long long nowTime = static_cast<unsigned long long>(currentTimeStamp);
|
||
|
|
{
|
||
|
|
int time = datas[row].startTimeM;
|
||
|
|
startTime->setText(convertSecondsToDateTime(time));
|
||
|
|
}
|
||
|
|
nowStartTimeM = datas[row].startTimeM;
|
||
|
|
nowKeepTime = datas[row].keepTime;
|
||
|
|
switch (datas[row].type)
|
||
|
|
{
|
||
|
|
case 1:
|
||
|
|
cnc3btn->setDisabled(true);
|
||
|
|
break;
|
||
|
|
case 2:
|
||
|
|
cnc5btn->setDisabled(true);
|
||
|
|
break;
|
||
|
|
case 3:
|
||
|
|
cnc6btn->setDisabled(true);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
if (datas[row].keepTime + datas[row].startTimeM < nowTime)//超过时间
|
||
|
|
setIconColor(true);
|
||
|
|
else//有效
|
||
|
|
{
|
||
|
|
setIconColor(false);
|
||
|
|
int time = (datas[row].keepTime + datas[row].startTimeM) - nowTime;
|
||
|
|
int resH = time / 3600;
|
||
|
|
int resM = (time- resH*3600) / 60;
|
||
|
|
int resS = (time - resH * 3600- resM*60) % 3600;
|
||
|
|
restTimeH->setText(QString::number(resH));
|
||
|
|
restTimeM->setText(QString::number(resM));
|
||
|
|
restTimeS->setText(QString::number(resS));
|
||
|
|
}
|
||
|
|
lineEdit->setText(datas[row].Name);
|
||
|
|
|
||
|
|
if (datas[row].banBie == true)
|
||
|
|
{
|
||
|
|
banBieWidget->checkBox->setChecked(true);
|
||
|
|
if (datas[row].baiBan == true)
|
||
|
|
banBieWidget->baiBan->setChecked(true);
|
||
|
|
if (datas[row].yeBan == true)
|
||
|
|
banBieWidget->yeBanBan->setChecked(true);
|
||
|
|
}
|
||
|
|
if (datas[row].louDong == true)
|
||
|
|
{
|
||
|
|
louDongWidget->checkBox->setChecked(true);
|
||
|
|
louDongWidget->minLineEdit->setText(QString::number(datas[row].louDongMin));
|
||
|
|
louDongWidget->maxLineEdit->setText(QString::number(datas[row].louDongMax));
|
||
|
|
}
|
||
|
|
if (datas[row].louCeng == true)
|
||
|
|
{
|
||
|
|
louCengWidget->checkBox->setChecked(true);
|
||
|
|
louCengWidget->minLineEdit->setText(QString::number(datas[row].louCengMin));
|
||
|
|
louCengWidget->maxLineEdit->setText(QString::number(datas[row].louCengMax));
|
||
|
|
}
|
||
|
|
if (datas[row].xianTi == true)
|
||
|
|
{
|
||
|
|
xianTiWidget->checkBox->setChecked(true);
|
||
|
|
xianTiWidget->minLineEdit->setText(QString::number(datas[row].xianTiMin));
|
||
|
|
xianTiWidget->maxLineEdit->setText(QString::number(datas[row].xianTiMax));
|
||
|
|
}
|
||
|
|
if (datas[row].jiTai == true)
|
||
|
|
{
|
||
|
|
jiTaiWidget->checkBox->setChecked(true);
|
||
|
|
jiTaiWidget->minLineEdit->setText(QString::number(datas[row].jiTaiHaoMin));
|
||
|
|
jiTaiWidget->maxLineEdit->setText(QString::number(datas[row].jiTaiHaoMax));
|
||
|
|
}
|
||
|
|
if (datas[row].riQi == true)
|
||
|
|
{
|
||
|
|
riQiWidget->checkBox->setChecked(true);
|
||
|
|
riQiWidget->minLineEdit->setText(QString::number(datas[row].riQiMin));
|
||
|
|
riQiWidget->maxLineEdit->setText(QString::number(datas[row].riQiMax));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void saveFunc()
|
||
|
|
{
|
||
|
|
auto currentTime = std::chrono::system_clock::now();
|
||
|
|
auto currentTimeStamp = std::chrono::time_point_cast<std::chrono::seconds>(currentTime).time_since_epoch().count();
|
||
|
|
kaKongData newData;
|
||
|
|
newData.startTimeM = static_cast<unsigned long long>(currentTimeStamp);
|
||
|
|
newData.Name = lineEdit->text();
|
||
|
|
newData.keepTime = spinBox->value() * 60 * 60;
|
||
|
|
if (cnc3btn->isEnabled() == false)
|
||
|
|
newData.type = 1;
|
||
|
|
else if (cnc5btn->isEnabled() == false)
|
||
|
|
newData.type = 2;
|
||
|
|
else if (cnc6btn->isEnabled() == false)
|
||
|
|
newData.type = 3;
|
||
|
|
if (banBieWidget->checkBox->isChecked() == true)
|
||
|
|
{
|
||
|
|
newData.banBie = true;
|
||
|
|
if (banBieWidget->baiBan->isChecked() == true)
|
||
|
|
newData.baiBan = true;
|
||
|
|
if (banBieWidget->yeBanBan->isChecked() == true)
|
||
|
|
newData.yeBan = true;
|
||
|
|
}
|
||
|
|
if (louDongWidget->checkBox->isChecked() == true)
|
||
|
|
{
|
||
|
|
newData.louDong = true;
|
||
|
|
newData.louDongMin = louDongWidget->minLineEdit->text().toInt();
|
||
|
|
newData.louDongMax = louDongWidget->maxLineEdit->text().toInt();
|
||
|
|
}
|
||
|
|
if (louCengWidget->checkBox->isChecked() == true)
|
||
|
|
{
|
||
|
|
newData.louCeng = true;
|
||
|
|
newData.louCengMin = louCengWidget->minLineEdit->text().toInt();
|
||
|
|
newData.louCengMax = louCengWidget->maxLineEdit->text().toInt();
|
||
|
|
}
|
||
|
|
if (xianTiWidget->checkBox->isChecked() == true)
|
||
|
|
{
|
||
|
|
newData.xianTi = true;
|
||
|
|
newData.xianTiMin = xianTiWidget->minLineEdit->text().toInt();
|
||
|
|
newData.xianTiMax = xianTiWidget->maxLineEdit->text().toInt();
|
||
|
|
}
|
||
|
|
if (jiTaiWidget->checkBox->isChecked() == true)
|
||
|
|
{
|
||
|
|
newData.jiTai = true;
|
||
|
|
newData.jiTaiHaoMin = jiTaiWidget->minLineEdit->text().toInt();
|
||
|
|
newData.jiTaiHaoMax = jiTaiWidget->maxLineEdit->text().toInt();
|
||
|
|
}
|
||
|
|
if (riQiWidget->checkBox->isChecked() == true)
|
||
|
|
{
|
||
|
|
newData.riQi = true;
|
||
|
|
newData.riQiMin = riQiWidget->minLineEdit->text().toInt();
|
||
|
|
newData.riQiMax = riQiWidget->maxLineEdit->text().toInt();
|
||
|
|
}
|
||
|
|
setIconColor(false);
|
||
|
|
datas.push_back(newData);
|
||
|
|
reFreshList();
|
||
|
|
}
|
||
|
|
void delData()
|
||
|
|
{
|
||
|
|
if (currentIndex > 0)
|
||
|
|
{
|
||
|
|
nowStartTimeM = 0;
|
||
|
|
nowKeepTime = 0;
|
||
|
|
datas.removeAt(currentIndex);
|
||
|
|
reFreshList();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
void clearData()
|
||
|
|
{
|
||
|
|
listWidget->clear();
|
||
|
|
currentIndex = -1;
|
||
|
|
datas.clear();
|
||
|
|
nowStartTimeM = 0;
|
||
|
|
nowKeepTime = 0;
|
||
|
|
}
|
||
|
|
void cancelData()
|
||
|
|
{
|
||
|
|
nowStartTimeM = 0;
|
||
|
|
nowKeepTime = 0;
|
||
|
|
}
|
||
|
|
void cncSwitchTo3()
|
||
|
|
{
|
||
|
|
cnc3btn->setDisabled(true);
|
||
|
|
cnc5btn->setEnabled(true);
|
||
|
|
cnc6btn->setEnabled(true);
|
||
|
|
}
|
||
|
|
void cncSwitchTo5()
|
||
|
|
{
|
||
|
|
cnc5btn->setDisabled(true);
|
||
|
|
cnc3btn->setEnabled(true);
|
||
|
|
cnc6btn->setEnabled(true);
|
||
|
|
}
|
||
|
|
void cncSwitchTo6()
|
||
|
|
{
|
||
|
|
cnc6btn->setDisabled(true);
|
||
|
|
cnc5btn->setEnabled(true);
|
||
|
|
cnc3btn->setEnabled(true);
|
||
|
|
}
|
||
|
|
};
|