Files
VX5_KRO_GearPump/DateVarSet.cpp
T
2026-04-29 14:10:10 +08:00

1032 lines
33 KiB
C++

#include "DateVarSet.h"
#include "ui_datevarset.h"
#include <QDateTime>
#include <QDebug>
#include <QGridLayout>
unsigned char vartypeR = 0x00; //标记需要替换的类型 如:年 月 日
//QMap<int,QStringList> replaceValueMap;
QMap<int,QMap<int,QString>> replaceValueMap;
DateVarSet::DateVarSet(QWidget *parent) :
QWidget(parent),
ui(new Ui::DateVarSet)
{
ui->setupUi(this);
digitWidth = 4;
//connect(ui->radioButtonCurDate,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
//connect(ui->radioButtonExpiry,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonVarRandom,SIGNAL(toggled(bool)),this,SLOT(onRanDomPressed(bool)));
//connect(ui->radioButtonHour,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonMinute,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonWeek,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonMonth,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonSecond,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonDay,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// // connect(ui->radioButtonXDay,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonYear,SIGNAL(toggled(bool)),this,SLOT( slt_handleDigits()));
// connect(ui->radioButtonVar1,SIGNAL(toggled(bool)),this,SLOT( onDigitFourBit(bool)));
// connect(ui->radioButtonVar2,SIGNAL(toggled(bool)),this,SLOT( onDigitFourBit(bool)));
// connect(ui->radioButtonCNT3,SIGNAL(toggled(bool)),this,SLOT( onDigitFourBit(bool)));
//ui->radioButtonXDay->hide();
varTypeSet = 0;
varHtmlStr = "";
currPage = 0;
QGridLayout* layout = new QGridLayout();
layout->setMargin(0);
layout->setContentsMargins(0, 0, 0, 0);
m_generalSettings = new ItemGeneralSettings();
layout->addWidget(m_generalSettings);
ui->generalTab->setLayout(layout);
init();
initReplaceValue();
}
void DateVarSet::init()
{
applyStyleSheet();
// 连接信号槽
connect(ui->checkBtn, &QPushButton::clicked, this, &DateVarSet::buttonClickedSlot);
connect(ui->closeBtn,&QPushButton::clicked, this, &DateVarSet::buttonClickedSlot);
connect(ui->btnPoint,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnColon,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnComma,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnSlash,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnSemicolon,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnUnderline,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnDash,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnBackSpace,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnHour,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnMinute,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnSecond,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnDay,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnMonth,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnYear4,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnYear2,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnWeekOfYear,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnWeek,&QPushButton::clicked,this,&DateVarSet::buttonClickedSlot);
connect(ui->btnSpace, &QPushButton::clicked, this, &DateVarSet::buttonClickedSlot);
connect(ui->lineEdit_Replace1, &QLineEdit::textChanged, std::bind(&DateVarSet::onLineEditReplaceChanged, this, 0, std::placeholders::_1));
connect(ui->lineEdit_Replace2, &QLineEdit::textChanged, std::bind(&DateVarSet::onLineEditReplaceChanged, this, 1, std::placeholders::_1));
connect(ui->lineEdit_Replace3, &QLineEdit::textChanged, std::bind(&DateVarSet::onLineEditReplaceChanged, this, 2, std::placeholders::_1));
connect(ui->lineEdit_Replace4, &QLineEdit::textChanged, std::bind(&DateVarSet::onLineEditReplaceChanged, this, 3, std::placeholders::_1));
}
void DateVarSet::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();
int startYear = QDate::currentDate().year();
for (int i = 0; i < 16; ++i) {
yearList << QString("%1").arg(startYear + i);
}
yearInitList.clear();
startYear = QDate::currentDate().year();
for(int i=0;i<16;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'))); // 补零格式化
}
if(ui->cb_replaceType->currentIndex() == 2) //index 2 --- 月
loadMonthShow();
else if(ui->cb_replaceType->currentIndex() == 0) //index 0 --- 数据
loadDataShow();
else if(ui->cb_replaceType->currentIndex() == 1) //index 1 --- 周几
loadWeekShow();
else if(ui->cb_replaceType->currentIndex() == 3) //index 3 --- 年份
loadYearShow();
else if(ui->cb_replaceType->currentIndex() == 4) //index 4 --- 天数
loadDayShow();
else if(ui->cb_replaceType->currentIndex() == 5) //index 5 --- 小时
loadHourShow();
// currPage = 0;
}
void DateVarSet::bindSysPara(SysPara *sysPara){
this->sysPara = sysPara;
}
void DateVarSet::bindTxTEdit(QTextEdit* textEdit){
m_textEdit = textEdit;
}
void DateVarSet::buttonClickedSlot()
{
QPushButton* btn = qobject_cast<QPushButton*>(sender());
if (btn == ui->checkBtn) {
if(true)
useReplaceInsertVar();
else
on_buttonInsertVari_pressed();
auto item = dynamic_cast<PicDateItem*>(m_generalSettings->currentItem());
if(item)
item->setModel(dateModel());
emit sendButtonClickedSignal(1);
return;
}else if(btn == ui->closeBtn) {
auto item = m_generalSettings->currentItem();
if(item)
item->setAttrs(m_backup);
emit sendButtonClickedSignal(2);
return;
}else if(btn == ui->btnPoint){
ui->lineEdit_DateFormat->insert(".");
}else if(btn == ui->btnColon){
ui->lineEdit_DateFormat->insert(":");
}else if(btn == ui->btnComma){
ui->lineEdit_DateFormat->insert(",");
}else if(btn == ui->btnSlash){
ui->lineEdit_DateFormat->insert("/");
}else if(btn == ui->btnSemicolon){
ui->lineEdit_DateFormat->insert(";");
}else if(btn == ui->btnUnderline){
ui->lineEdit_DateFormat->insert("_");
}else if(btn == ui->btnDash){
ui->lineEdit_DateFormat->insert("-");
}else if(btn == ui->btnBackSpace){
ui->lineEdit_DateFormat->setFocus();
emit backSpaceBtn();
}else if(btn == ui->btnHour){
ui->lineEdit_DateFormat->insert("HH");
}else if(btn == ui->btnMinute){
ui->lineEdit_DateFormat->insert("mm");
}else if(btn == ui->btnSecond){
ui->lineEdit_DateFormat->insert("ss");
}else if(btn == ui->btnDay){
ui->lineEdit_DateFormat->insert("dd");
}else if(btn == ui->btnMonth){
ui->lineEdit_DateFormat->insert("MM");
}else if(btn == ui->btnYear4){
ui->lineEdit_DateFormat->insert("yyyy");
}else if(btn == ui->btnYear2){
ui->lineEdit_DateFormat->insert("YY");
}
else if(btn == ui->btnWeekOfYear){
ui->lineEdit_DateFormat->insert("c");
}
else if(btn == ui->btnWeek){
ui->lineEdit_DateFormat->insert("w");
}
else if(btn == ui->btnSpace)
ui->lineEdit_DateFormat->insert(" ");
}
DateVarSet::~DateVarSet()
{
delete ui;
}
void DateVarSet::getValue(int *varType,int *digitalWidth,unsigned char *splitMode){
int type = 0,width = 0;
// if(ui->radioButtonYear->isChecked())
// type = 0;
// else if(ui->radioButtonMonth->isChecked())
// type = 1;
// else if(ui->radioButtonDay->isChecked())
// type = 2;
// else if(ui->radioButtonWeek->isChecked())
// type = 3;
// else if(ui->radioButtonHour->isChecked())
// type = 4;
// else if(ui->radioButtonMinute->isChecked())
// type = 5;
// else if(ui->radioButtonSecond->isChecked())
// type = 6;
// else if(ui->radioButtonXDay->isChecked())
// type = 14;
// else if(ui->radioButtonExpiry->isChecked())
// {
// type = 80;
// }
// else if(ui->radioButtonCurDate->isChecked())
// {
// type = 81;
// }
// width = ui->cb_digits->currentText().toInt();
if(varType && digitalWidth){
*varType = type;
*digitalWidth = width;
}
}
void DateVarSet::on_buttonInsertVari_pressed()
{
QString s,fontname="";
if(sysPara)
{
s= sysPara->para.qrOption.text;
if(s.length()>120)s="string to long.";
}
int pixelSize = 9;
QFont font;
fontname = "Dinkie9";
if(m_generalSettings->currentItem()) {
fontname = m_generalSettings->font().family();
}
else {
font.setFamily(fontname);
font.setPixelSize(pixelSize);
font.setWeight(false && (pixelSize<=16) ?QFont::Bold:QFont::Normal);
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
}
QFontMetrics fontMetrics(font);
int width = (fontMetrics.width("0123456789"))/10;
int height = fontMetrics.ascent()+ fontMetrics.descent();
int digitalNum;
int varType;
height = font.pixelSize();
unsigned char splitMode=sysPara->para.ExpirySplitMode;
getValue(&varType,&digitalNum,&splitMode);
fmt = m_textEdit->currentCharFormat ();
if((varType<9 || varType==14))
{
int varType1= varType;
if(fontname.contains("SerifL") ||fontname.contains("serifl") )
varType1= 20+varType;
else if(fontname.contains("SerifR") ||fontname.contains("serifr") )
varType1= 20+varType;
else if(fontname.contains("bangla") )
varType1= 30+varType;
else if(fontname.contains("biyangF") )
varType1= 50+varType;
else if(fontname.contains("Roman") )
varType1= 60+varType;
// varType1= 40+varType; // 变量右横时取 40,左横时取 20
m_textEdit->insertHtml(QString("<img src=':/%1/%5/../image/digitalWidth%2.bmp' height='%3' width='%4' style=\"vertical-align: bottom;\" />")
.arg(varType).arg(false && (pixelSize<=16)?(digitalNum*100 + 75):digitalNum)
.arg(height+1).arg(width*digitalNum).arg(varType1)); //插入索引后
qDebug() << m_textEdit->toHtml();
} // 普通变量 VarType<=8
else if(varType ==EXPIRYDATE){ //80 :/80/image/expiryDate8.bmp qrc:/80/image/expiryDate875.bmp
// QImage img;
// img.load("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/digitalWidth8.bmp");
// img.setPixel(0,4,0xffff0Cfc);
// img.setPixel(0,5,0xffff0Cfc);
// img.save("/home/student/mini2440/UP/QtUI/QRUI_SUNV54/80/image/curDate8.bmp");
// 0xff00fc
int varType1 = varType;
if(fontname.contains("bangla") )
{
varType1= 10+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 20+varType;
}
else if(fontname.contains("Roman") )
{
varType1= 30+varType;
}
sysPara->print.ExpiryVar.splitMode=splitMode;
font.setLetterSpacing(QFont::AbsoluteSpacing,sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
QHash<int, QString> dateFormat;
dateFormat.insert(0,"yyyy-MM-dd");
dateFormat.insert(1,"yyyy/MM/dd");
dateFormat.insert(2,"yyyyMMdd");
dateFormat.insert(3,"yyyy年MM月dd日");
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
dateFormat.insert(6,"yyyyMMddhhmm");
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
dateFormat.insert(8,"hh:mm");
dateFormat.insert(9,"ddhhmm");
dateFormat.insert(10,"dd MM yy");
dateFormat.insert(11,"dd/MM/yy");
dateFormat.insert(12,"dd/MM/yyyy");
dateFormat.insert(13,"dd-MM-yy");
dateFormat.insert(14,"dd-MM-yyyy");
//dateFormat.insert(10,"x");
QString DateTime = QDateTime::currentDateTime().toString(dateFormat.value(splitMode));
int dateTimeWidth = fontMetrics.width(DateTime);
if(DateTime == "x")
{
qDebug()<<" x handle";
m_textEdit->insertHtml(QString("<img src=':/%1/image/digitalWidth%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(false && (pixelSize<=16)?(175):1)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
sysPara->print.ExpiryVar.bold = false;
m_textEdit->mergeCurrentCharFormat(fmt);
}else
{
if(splitMode == 3 || splitMode ==7 )
{
height = fontMetrics.ascent();
}
m_textEdit->insertHtml(QString("<img src=':/%1/image/expiryDate%2.bmp' height='%3' width='%4' style=\"vertical-align: bottom;\" />")
.arg(varType1).arg(false && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
sysPara->print.ExpiryVar.bold = false;
m_textEdit->mergeCurrentCharFormat(fmt);
}
}
else if(varType ==CURDATE ){ //81 :/80/image/expiryDate8.bmp qrc:/80/image/curDate8.bmp
int varType1 = varType;
if(fontname.contains("bangla") )
{
varType1= 10+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 20+varType;
}
else if(fontname.contains("biyangF") )
{
varType1= 30+varType;
}
// 0xff00fc
//qDebug()<<"CurDateVar height"<<height;
sysPara->print.CurDateVar.splitMode = splitMode;
font.setLetterSpacing(QFont::AbsoluteSpacing, sysPara->para.textEditCharSpace);
QFontMetrics fontMetrics(font);
QHash<int, QString> dateFormat;
dateFormat.insert(0,"yyyy-MM-dd");
dateFormat.insert(1,"yyyy/MM/dd");
dateFormat.insert(2,"yyyyMMdd");
dateFormat.insert(3,"yyyy年MM月dd日");
dateFormat.insert(4,"yyyy-MM-dd hh:mm");
dateFormat.insert(5,"yyyy/MM/dd hh:mm");
dateFormat.insert(6,"yyyyMMddhhmm");
dateFormat.insert(7,"yyyy年MM月dd日 hh:mm");
dateFormat.insert(8,"hh:mm");
dateFormat.insert(9,"ddhhmm");
dateFormat.insert(10,"dd MM yy");
dateFormat.insert(11,"dd/MM/yy");
dateFormat.insert(12,"dd/MM/yyyy");
dateFormat.insert(13,"dd-MM-yy");
dateFormat.insert(14,"dd-MM-yyyy");
QString DateTime = QDateTime::currentDateTime().toString(dateFormat.value(splitMode));
int dateTimeWidth = fontMetrics.width(DateTime) ;
qDebug()<<"insert splitMode="<<splitMode;
if(DateTime == "x")
{
qDebug()<<" x handle";
m_textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4'/>")
.arg(varType).arg(false && (pixelSize<=16)?(875):1)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
m_textEdit->mergeCurrentCharFormat(fmt);
}else
{
if(splitMode == 3 || splitMode ==7 )
{
height = fontMetrics.ascent();//fontMetrics.ascent()+ fontMetrics.descent();
}
m_textEdit->insertHtml(QString("<img src=':/%1/image/curDate%2.bmp' height='%3' width='%4' style=\"vertical-align: bottom;\"/>")
.arg(varType1).arg(false && (pixelSize<=16)?(875):8)
.arg(height+1).arg(dateTimeWidth+4)); //插入索引后
m_textEdit->mergeCurrentCharFormat(fmt);
}
}
m_textEdit->setFocus();
}
void DateVarSet::edit(PicDateItem*item)
{
m_backup.clear();
if(!item) {
qWarning() << "Invalied arguement: " << item;
return;
}
item->saveAttrs(m_backup);
m_generalSettings->edit(item);
setDateModel(item->model());
}
DateItemModel DateVarSet::dateModel()
{
DateItemModel model;
model.datetimePattern = ui->lineEdit_DateFormat->text();
model.dataMap = dataList;
model.weeksMap = weekList;
model.hoursMap = hourList;
model.monthsMap = monthList;
model.daysMap = dayList;
for(int i = 0; i < yearInitList.size(); ++i) {
model.yearsMap[yearInitList[i]] = yearList[i];
}
if(ui->expirationCBox->currentIndex() == 0) {
model.daysOffset = ui->expirationNumCBox->value();
model.monthsOffset = 0;
}
else if(ui->expirationCBox->currentIndex() >= 1) {
model.monthsOffset = ui->expirationNumCBox->value();
model.daysOffset = 0;
}
else {
model.monthsOffset = 0;
model.daysOffset = 0;
}
return model;
}
void DateVarSet::setDateModel(const DateItemModel &model)
{
ui->lineEdit_DateFormat->setText(model.datetimePattern);
dataList = model.dataMap;
weekList = model.weeksMap;
hourList = model.hoursMap;
monthList = model.monthsMap;
dayList = model.daysMap;
yearInitList = model.yearsMap.keys();
yearList = model.yearsMap.values();
if(model.daysOffset != 0) {
ui->expirationCBox->setCurrentIndex(0);
ui->expirationNumCBox->setValue(model.daysOffset);
}
else if(model.monthsOffset != 0) {
ui->expirationCBox->setCurrentIndex(1);
ui->expirationNumCBox->setValue(model.monthsOffset);
}
else {
ui->expirationCBox->setCurrentIndex(0);
ui->expirationNumCBox->setValue(0);
}
loadMonthShow();
}
void DateVarSet::useReplaceInsertVar(){
QString dateFormat = ui->lineEdit_DateFormat->text();
m_textEdit->setText(dateFormat);
}
QString DateVarSet::getFamilyName(int fontsize){
return "YaHei"+QString::number(fontsize);
}
void DateVarSet::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;
}
)";
this->setStyleSheet(styleSheet);
}
void DateVarSet::on_CBDateFormat1_currentIndexChanged(int index)
{
// sysPara->para.ExpirySplitMode = ui->CBDateFormat1->currentIndex();
sysPara->para.ExpirySplitMode = 0;
}
void DateVarSet::on_cb_replaceType_currentIndexChanged(int index)
{
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 DateVarSet::loadMonthShow(){
if(currPage > 2) //最大显示3页
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 DateVarSet::loadDataShow(){
if(currPage >3) //最大显示4页
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 DateVarSet::loadWeekShow(){
initShowLineEdit();
if(currPage >1) //最大显示4页
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 DateVarSet::loadYearShow(){
if(currPage >3) //最大显示4页
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 DateVarSet::loadDayShow(){
initShowLineEdit();
if(currPage > 7) //最大显示8页
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(false);
}
objectIndex++;
}
}
void DateVarSet::loadHourShow(){
if(currPage > 5) //最大显示6页
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 DateVarSet::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 DateVarSet::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++;
}
// for (int i = 0; i < yearList.size(); ++i) {
// qDebug()<<"i:"<<yearList.at(i);
// }
}
void DateVarSet::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 DateVarSet::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 DateVarSet::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 DateVarSet::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 DateVarSet::on_btnDown_clicked()
{
initShowLineEdit();
int currentIndex = ui->cb_replaceType->currentIndex();
if (currentIndex == 2) { // Month
if (currPage < 2) {
currPage++;
}
loadMonthShow();
return;
}
if (currentIndex == 0) { // Data
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 DateVarSet::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 DateVarSet::on_btnPreSetValue_clicked()
{
if(ui->cb_replaceType->currentIndex() == 2){ //index 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,monthList);
replaceValueMap.insert(2,monthMap);
}
else if(ui->cb_replaceType->currentIndex() == 3){ //index 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){ //index 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){ //index 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 DateVarSet::slt_handleDigits()
{
// ui->cb_digits->clear();
// if (ui->radioButtonCurDate->isChecked() || ui->radioButtonExpiry->isChecked()) {
// for (int i = 1; i <= 15; i++) {
// ui->cb_digits->addItem(QString::number(i));
// }
// }
// else {
// for (int j = 1; j <= 8; j++) {
// ui->cb_digits->addItem(QString::number(j));
// }
// }
}
void DateVarSet::onLineEditReplaceChanged(int i, QString txt)
{
auto mapIdx = currPage * 4 + i;
switch(ui->cb_replaceType->currentIndex()) {
case 0:
dataList[mapIdx] = txt;
break;
case 1:
weekList[mapIdx] = txt;
break;
case 2:
monthList[mapIdx] = txt;
break;
case 3:
yearList[mapIdx] = txt;
break;
case 4:
dayList[mapIdx] = txt;
break;
case 5:
hourList[mapIdx] = txt;
break;
case 6:
default:
break;
}
}