first commit

This commit is contained in:
2026-04-29 14:10:10 +08:00
commit b28556d43d
1558 changed files with 241386 additions and 0 deletions
+603
View File
@@ -0,0 +1,603 @@
#include "DateReplaceEditor.h"
#include "ui_DateReplaceEditor.h"
#include <QDate>
#include <QLineEdit>
#include <functional>
#include <QMap>
extern unsigned char vartypeR;
extern QMap<int,QMap<int,QString>> replaceValueMap;
DateReplaceEditor::DateReplaceEditor(QWidget *parent) :
QWidget(parent),
ui(new Ui::DateReplaceEditor)
{
ui->setupUi(this);
init();
initReplaceValue();
applyStyleSheet();
}
DateReplaceEditor::~DateReplaceEditor()
{
delete ui;
}
DateItemModel DateReplaceEditor::dateModel()
{
DateItemModel model;
model.dataMap = dataList;
model.weeksMap = weekList;
model.hoursMap = hourList;
model.monthsMap = monthList;
model.daysMap = dayList;
for (int i = 0; i < yearInitList.size() && i < yearList.size(); ++i) {
model.yearsMap[yearInitList[i]] = yearList[i];
}
return model;
}
void DateReplaceEditor::setDateModel(const DateItemModel &model)
{
dataList = model.dataMap;
weekList = model.weeksMap;
hourList = model.hoursMap;
monthList = model.monthsMap;
dayList = model.daysMap;
yearInitList = model.yearsMap.keys();
yearList = model.yearsMap.values();
switch (ui->cb_replaceType->currentIndex()) {
case 0:
loadDataShow();
break;
case 1:
loadWeekShow();
break;
case 2:
loadMonthShow();
break;
case 3:
loadYearShow();
break;
case 4:
loadDayShow();
break;
case 5:
loadHourShow();
break;
default:
loadMonthShow();
break;
}
}
void DateReplaceEditor::applyStyleSheet()
{
QString styleSheet = R"(
QPushButton#closeBtn, QPushButton#checkBtn{
background-color: #E6F7FF;
border: 1px solid #87CEEB;
border-radius: 4px;
font-size: 24px;
color: #228B22;
}
QPushButton#closeBtn:hover,QPushButton#checkBtn:hover{
background-color: #D1E9FF;
}
QPushButton#closeBtn:pressed,QPushButton#checkBtn:pressed{
background-color: #BAE7FF;
}
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;
}
QComboBox {
border: 1px solid #000000;
border-radius: 3px;
font-size: 14px;
width: 180px;
height: 90px;
padding-left: 10px; /* 文字左边距,避免紧贴边缘 */
}
/* 下拉箭头区域 */
QComboBox::drop-down {
border: 1px solid #333333;
border-radius: 3px;
width: 30px; /* 箭头区域宽度 */
background-color: #5396C1;
}
/* 下拉箭头图标 */
QComboBox::down-arrow {
image: url(image/down_white.png);
width: 16px; /* 图标显示宽度 */
height: 16px; /* 图标显示高度 */
}
/* 悬停状态 */
QComboBox:hover {
background-color: #efefef;
}
// 下拉框
QComboBox QAbstractItemView {
border: 1px solid #000000;
border-radius: 3px;
font-size: 14px;
selection-background-color: #5396C1; /* 选中项背景色(稍深) */
selection-color: #ffffff;
}
)";
setStyleSheet(styleSheet);
}
void DateReplaceEditor::init()
{
connect(ui->lineEdit_Replace1, &QLineEdit::textChanged, std::bind(&DateReplaceEditor::onLineEditReplaceChanged, this, 0, std::placeholders::_1));
connect(ui->lineEdit_Replace2, &QLineEdit::textChanged, std::bind(&DateReplaceEditor::onLineEditReplaceChanged, this, 1, std::placeholders::_1));
connect(ui->lineEdit_Replace3, &QLineEdit::textChanged, std::bind(&DateReplaceEditor::onLineEditReplaceChanged, this, 2, std::placeholders::_1));
connect(ui->lineEdit_Replace4, &QLineEdit::textChanged, std::bind(&DateReplaceEditor::onLineEditReplaceChanged, this, 3, std::placeholders::_1));
}
void DateReplaceEditor::initReplaceValue()
{
monthList.clear();
for (int i = 1; i <= 12; ++i) {
monthList.append(QString("%1").arg(i, 2, 10, QChar('0')));
}
dataList.clear();
dataList << "0" << "1" << "2" << "3" << "4" << "5" << "6" << "7"
<< "8" << "9" << "A" << "B" << "C" << "D" << "E" << "F";
weekList.clear();
weekList << "MON" << "TUE" << "WED" << "THU" << "FRI" << "SAT" << "SUN";
yearList.clear();
yearInitList.clear();
int startYear = QDate::currentDate().year();
for (int i = 0; i < 16; ++i) {
yearList << QString::number(startYear + i);
yearInitList << startYear + i;
}
dayList.clear();
for (int i = 1; i <= 31; ++i) {
dayList.append(QString("%1").arg(i, 2, 10, QChar('0')));
}
hourList.clear();
for (int i = 0; i <= 23; ++i) {
hourList.append(QString("%1").arg(i, 2, 10, QChar('0')));
}
currPage = 0;
if(ui->cb_replaceType->currentIndex() == 2)
loadMonthShow();
else if(ui->cb_replaceType->currentIndex() == 0)
loadDataShow();
else if(ui->cb_replaceType->currentIndex() == 1)
loadWeekShow();
else if(ui->cb_replaceType->currentIndex() == 3)
loadYearShow();
else if(ui->cb_replaceType->currentIndex() == 4)
loadDayShow();
else if(ui->cb_replaceType->currentIndex() == 5)
loadHourShow();
}
void DateReplaceEditor::on_cb_replaceType_currentIndexChanged(int index)
{
currPage = 0;
initShowLineEdit();
if(index == 0){
loadDataShow();
}else if(index == 1){
loadWeekShow();
}else if(index == 2){
loadMonthShow();
}else if(index == 3){
loadYearShow();
}else if(index == 4){
loadDayShow();
}else if(index == 5){
loadHourShow();
}
}
void DateReplaceEditor::loadMonthShow()
{
initShowLineEdit();
if(currPage > 2)
currPage = 2;
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<monthList.size());i++){
QString strObject = QString("lineEditName") + QString::number(objectIndex);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit)
lineEdit->setText(QString::number(i+1));
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText(monthList.at(i));
lineEdit2->blockSignals(b);
}
objectIndex++;
}
}
void DateReplaceEditor::loadDataShow()
{
initShowLineEdit();
if(currPage > 3)
currPage = 3;
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<dataList.size());i++){
QString strObject = QString("lineEditName") + QString::number(objectIndex);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit)
lineEdit->setText(QString::number(i));
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText(dataList.at(i));
lineEdit2->blockSignals(b);
}
objectIndex++;
}
}
void DateReplaceEditor::loadWeekShow()
{
initShowLineEdit();
if(currPage > 1)
currPage = 1;
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<weekList.size());i++){
QString strObject = QString("lineEditName") + QString::number(objectIndex);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit)
lineEdit->setText(QString::number(i+1));
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText(weekList.at(i));
lineEdit2->blockSignals(b);
}
objectIndex++;
}
}
void DateReplaceEditor::loadYearShow()
{
initShowLineEdit();
if(currPage > 3)
currPage = 3;
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<yearList.size());i++){
QString strObject = QString("lineEditName") + QString::number(objectIndex);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit && i<yearInitList.size())
lineEdit->setText(QString::number(yearInitList.at(i)));
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText(yearList.at(i));
lineEdit2->blockSignals(b);
}
objectIndex++;
}
}
void DateReplaceEditor::loadDayShow()
{
initShowLineEdit();
if(currPage > 7)
currPage = 7;
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<dayList.size());i++){
QString strObject = QString("lineEditName") + QString::number(objectIndex);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit)
lineEdit->setText(QString::number(i+1));
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText(dayList.at(i));
lineEdit2->blockSignals(b);
}
objectIndex++;
}
}
void DateReplaceEditor::loadHourShow()
{
initShowLineEdit();
if(currPage > 5)
currPage = 5;
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<hourList.size());i++){
QString strObject = QString("lineEditName") + QString::number(objectIndex);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit)
lineEdit->setText(QString::number(i));
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText(hourList.at(i));
lineEdit2->blockSignals(b);
}
objectIndex++;
}
}
void DateReplaceEditor::getMonthValue()
{
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<monthList.size());i++){
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2)
monthList[i] = lineEdit2->text();
objectIndex++;
}
}
void DateReplaceEditor::getYearValue()
{
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<yearList.size());i++){
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2)
yearList[i] = lineEdit2->text();
objectIndex++;
}
}
void DateReplaceEditor::getDayValue()
{
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<dayList.size());i++){
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2)
dayList[i] = lineEdit2->text();
objectIndex++;
}
}
void DateReplaceEditor::getHourValue()
{
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<hourList.size());i++){
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2)
hourList[i] = lineEdit2->text();
objectIndex++;
}
}
void DateReplaceEditor::getWeekValue()
{
int objectIndex = 1;
for(int i=currPage*4;(i<(currPage+1)*4)&&(i<weekList.size());i++){
QString strObject2 = QString("lineEdit_Replace") + QString::number(objectIndex);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2)
weekList[i] = lineEdit2->text();
objectIndex++;
}
}
void DateReplaceEditor::on_btnUP_clicked()
{
if(currPage < 1)
return;
currPage = currPage - 1;
if(ui->cb_replaceType->currentIndex() == 2){
loadMonthShow();
}else if(ui->cb_replaceType->currentIndex() == 0){
loadDataShow();
}else if(ui->cb_replaceType->currentIndex() == 1){
loadWeekShow();
}else if(ui->cb_replaceType->currentIndex() == 3){
loadYearShow();
}else if(ui->cb_replaceType->currentIndex() == 4){
loadDayShow();
}else if(ui->cb_replaceType->currentIndex() == 5){
loadHourShow();
}
}
void DateReplaceEditor::on_btnDown_clicked()
{
initShowLineEdit();
int currentIndex = ui->cb_replaceType->currentIndex();
if (currentIndex == 2) {
if (currPage < 2) {
currPage++;
}
loadMonthShow();
return;
}
if (currentIndex == 0) {
if (currPage < 3) {
currPage++;
}
loadDataShow();
return;
}
if(currentIndex == 1){
if(currPage < 1){
currPage++;
}
loadWeekShow();
return;
}
if(currentIndex == 3){
if(currPage < 3){
currPage++;
}
loadYearShow();
return;
}
if(currentIndex == 4){
if(currPage < 7){
currPage++;
}
loadDayShow();
return;
}
if(currentIndex == 5){
if(currPage < 5){
currPage++;
}
loadHourShow();
return;
}
}
void DateReplaceEditor::initShowLineEdit()
{
for(int i=1;i<=4;i++){
QString strObject = QString("lineEditName") + QString::number(i);
QLineEdit *lineEdit = this->findChild<QLineEdit*>(strObject);
if(lineEdit)
lineEdit->setText("");
QString strObject2 = QString("lineEdit_Replace") + QString::number(i);
QLineEdit *lineEdit2 = this->findChild<QLineEdit*>(strObject2);
if(lineEdit2) {
auto b = lineEdit2->blockSignals(true);
lineEdit2->setText("");
lineEdit2->blockSignals(b);
}
}
}
void DateReplaceEditor::on_btnPreSetValue_clicked()
{
if(ui->cb_replaceType->currentIndex() == 2){
getMonthValue();
vartypeR = vartypeR | 1<<2;
QMap<int,QString> monthMap;
for(int i=0;i<monthList.size();i++){
monthMap.insert(i+1,monthList.at(i));
}
replaceValueMap.insert(2,monthMap);
}
else if(ui->cb_replaceType->currentIndex() == 3){
getYearValue();
vartypeR = vartypeR | 1<<3;
QMap<int,QString> yearMap;
for(int i=0;i<yearList.size()&&i<yearInitList.size();i++){
yearMap.insert(yearInitList.at(i),yearList.at(i));
}
replaceValueMap.insert(3,yearMap);
}
else if(ui->cb_replaceType->currentIndex() == 4){
getDayValue();
vartypeR = vartypeR | 1<<4;
QMap<int,QString> dayMap;
for(int i=0;i<dayList.size();i++){
dayMap.insert(i+1,dayList.at(i));
}
replaceValueMap.insert(4,dayMap);
}
else if(ui->cb_replaceType->currentIndex() == 5){
getHourValue();
vartypeR = vartypeR | 1<<5;
QMap<int,QString> hourMap;
for(int i=0;i<hourList.size();i++){
hourMap.insert(i,hourList.at(i));
}
replaceValueMap.insert(5,hourMap);
}
else if(ui->cb_replaceType->currentIndex() == 1){
getWeekValue();
vartypeR = vartypeR | 1<<1;
QMap<int,QString> weekMap;
for(int i=0;i<weekList.size();i++){
weekMap.insert(i+1,weekList.at(i));
}
replaceValueMap.insert(1,weekMap);
}
}
void DateReplaceEditor::onLineEditReplaceChanged(int i, QString txt)
{
int mapIdx = currPage * 4 + i;
switch(ui->cb_replaceType->currentIndex()) {
case 0:
if (mapIdx < dataList.size()) dataList[mapIdx] = txt;
break;
case 1:
if (mapIdx < weekList.size()) weekList[mapIdx] = txt;
break;
case 2:
if (mapIdx < monthList.size()) monthList[mapIdx] = txt;
break;
case 3:
if (mapIdx < yearList.size()) yearList[mapIdx] = txt;
break;
case 4:
if (mapIdx < dayList.size()) dayList[mapIdx] = txt;
break;
case 5:
if (mapIdx < hourList.size()) hourList[mapIdx] = txt;
break;
default:
break;
}
}