diff --git a/CounterVarSet.cpp b/CounterVarSet.cpp index acc850c..7c92447 100644 --- a/CounterVarSet.cpp +++ b/CounterVarSet.cpp @@ -91,7 +91,7 @@ void CounterVarSet::onDigitsChanged(int digits) endValueBox->setValue(maxValue); } -void CounterVarSet::setCounterConfig(CounterViewModel viewModel) +void CounterVarSet::setCounterConfig(CounterViewModel viewModel, bool isChange) { m_vm = viewModel; @@ -101,7 +101,7 @@ void CounterVarSet::setCounterConfig(CounterViewModel viewModel) ui->tabWidget->setCurrentIndex(viewModel.counterType == COUNTER_TYPE_1 ? 1 : 2); ui->letterSpaceSpinBox->setValue(viewModel.letterSpace); - updateSysParaToUI(); + updateSysParaToUI(isChange); } void CounterVarSet::getValue(int *varType,int *digitalWidth,unsigned char *splitMode){ @@ -139,8 +139,10 @@ void CounterVarSet::applyUIPara() m_vm.cnt2Settings.currValue = ui->spinBoxCnt2CurrValue->value(); } -void CounterVarSet::updateSysParaToUI() +void CounterVarSet::updateSysParaToUI(bool isChange) { + handleChange(isChange); + ui->spinBoxCnt1EndValue->setValue(m_vm.cnt1Settings.endValue); ui->spinBoxCnt1RepeateCnt->setValue(m_vm.cnt1Settings.repeatValue); ui->spinBoxCnt1StartValue->setValue(m_vm.cnt1Settings.startValue); @@ -154,6 +156,36 @@ void CounterVarSet::updateSysParaToUI() ui->spinBoxCnt2CurrValue->setValue(m_vm.cnt2Settings.currValue); } +void CounterVarSet::handleChange(bool isChange) +{ + if (isChange) { + const bool useCnt1 = ui->radioButtonVar1->isChecked(); + if (useCnt1) { + // 只显示 cnt1Tab + if (ui->tabWidget->indexOf(ui->cnt2Tab) >= 0) + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->cnt2Tab)); + if (ui->tabWidget->indexOf(ui->cnt1Tab) < 0) + ui->tabWidget->insertTab(1, ui->cnt1Tab, tr("计数器1")); + + ui->tabWidget->setCurrentWidget(ui->cnt1Tab); + } else { + // 只显示 cnt2Tab + if (ui->tabWidget->indexOf(ui->cnt1Tab) >= 0) + ui->tabWidget->removeTab(ui->tabWidget->indexOf(ui->cnt1Tab)); + if (ui->tabWidget->indexOf(ui->cnt2Tab) < 0) + ui->tabWidget->insertTab(1, ui->cnt2Tab, tr("计数器2")); + + ui->tabWidget->setCurrentWidget(ui->cnt2Tab); + } + } else { + // 两个都显示 + if (ui->tabWidget->indexOf(ui->cnt1Tab) < 0) + ui->tabWidget->insertTab(1, ui->cnt1Tab, tr("计数器1")); + if (ui->tabWidget->indexOf(ui->cnt2Tab) < 0) + ui->tabWidget->insertTab(2, ui->cnt2Tab, tr("计数器2")); + } +} + void CounterVarSet::applyStyleSheet() { QString styleSheet = @@ -353,4 +385,4 @@ void CounterVarSet::applyStyleSheet() )"; this->setStyleSheet(styleSheet); -} \ No newline at end of file +} diff --git a/CounterVarSet.h b/CounterVarSet.h index 1dfc910..44a4da4 100644 --- a/CounterVarSet.h +++ b/CounterVarSet.h @@ -25,14 +25,15 @@ public: void applyStyleSheet(); void getValue(int *varType,int *digitalWidth,unsigned char *splitMode); - void updateSysParaToUI(); //重载 + void updateSysParaToUI(bool isChange); //重载 + void handleChange(bool isChange); void applyUIPara(); //重载 // 获取当前计数器配置:varType(7或8) 和 digitalNum(位数) CounterViewModel getCounterConfig(); // 设置ui,用户编辑计数器item时,会调用此函数显示计数器的配置 - void setCounterConfig(CounterViewModel viewModel); + void setCounterConfig(CounterViewModel viewModel, bool isChange); signals: void sendButtonClickedSignal(int); diff --git a/InkJetPrinter.cpp b/InkJetPrinter.cpp index 249ef8b..9ec5a4f 100644 --- a/InkJetPrinter.cpp +++ b/InkJetPrinter.cpp @@ -187,7 +187,7 @@ void InkJetPrinter::init() m_PrintSetting->updateModelToUI(); m_SystemSetting->updateSysParaToUI(); m_OtherInfo->updateSysParaToUI(); - m_CounterVarSet->updateSysParaToUI(); + m_CounterVarSet->updateSysParaToUI(false); m_SystemManage->loadKeyBoardType(); @@ -256,11 +256,11 @@ void InkJetPrinter::init() } // type 1,2: 分别显示计数器1或2的界面 -void InkJetPrinter::slt_editCounter(CounterViewModel vm) +void InkJetPrinter::slt_editCounter(CounterViewModel vm, bool isChange) { if (m_CounterVarSet) { - m_CounterVarSet->updateSysParaToUI(); - m_CounterVarSet->setCounterConfig(vm); +// m_CounterVarSet->updateSysParaToUI(isChange); + m_CounterVarSet->setCounterConfig(vm,isChange); m_StackedWidget->setCurrentWidget(m_CounterVarSet); } } diff --git a/InkJetPrinter.h b/InkJetPrinter.h index 6c6fc91..42f58c4 100644 --- a/InkJetPrinter.h +++ b/InkJetPrinter.h @@ -234,7 +234,7 @@ private slots: void OnFinished(int event); - void slt_editCounter(CounterViewModel vm); + void slt_editCounter(CounterViewModel vm, bool isChange); // 保养警告 void slt_warningMaintenance(); diff --git a/PrintTextDisplay.cpp b/PrintTextDisplay.cpp index 9e8be6c..8b268a4 100644 --- a/PrintTextDisplay.cpp +++ b/PrintTextDisplay.cpp @@ -296,7 +296,8 @@ void PrintTextDisplay::paintEvent(QPaintEvent *event){ if(val>base-1)jmin=Num-j-1; base *= 10; } - str= QString("%1").arg(val%base,Num,10,QLatin1Char('0'))+str; + int r = (base != 0) ? (val % base) : 0; + str= QString("%1").arg(r,Num,10,QLatin1Char('0'))+str; } diff --git a/chinese.ts b/chinese.ts index 6df7879..d8267d9 100644 --- a/chinese.ts +++ b/chinese.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog diff --git a/english.ts b/english.ts index 6df7879..d8267d9 100644 --- a/english.ts +++ b/english.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog diff --git a/farsi.ts b/farsi.ts index 6df7879..d8267d9 100644 --- a/farsi.ts +++ b/farsi.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog diff --git a/korean.ts b/korean.ts index 260e27c..b960d80 100644 --- a/korean.ts +++ b/korean.ts @@ -201,12 +201,16 @@ + + 计数器1 카운터1 + + 计数器2 카운터2 @@ -11351,6 +11355,16 @@ configuration. 是否保存文件? 파일을 저장하시겠습니까? + + + 警告 + 경고 + + + + 无法创建更多计数器 + 더 이상 카운터를 생성할 수 없습니다 + TextEditOption diff --git a/scene/PicCounterItem.cpp b/scene/PicCounterItem.cpp index 4017e52..7278555 100644 --- a/scene/PicCounterItem.cpp +++ b/scene/PicCounterItem.cpp @@ -125,7 +125,7 @@ void PicCounterItem::setCustomAttrs(const QXmlStreamAttributes &attrs) ok = false; int displayNum = displayNumRef.toInt(&ok); - if(!ok || displayNum <= 0) { + if(!ok /*|| displayNum <= 0*/) { qWarning() << "Invalied counter display number: " << displayNum; return; } diff --git a/spanish.ts b/spanish.ts index 6df7879..d8267d9 100644 --- a/spanish.ts +++ b/spanish.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog diff --git a/testprintwidget.cpp b/testprintwidget.cpp index b247db6..e3c9d1d 100644 --- a/testprintwidget.cpp +++ b/testprintwidget.cpp @@ -146,7 +146,7 @@ TestPrintWidget::TestPrintWidget(QWidget* parent) vm.letterSpace = 1; vm.cnt1Settings = m_printSettingModel.cnt1Settings; vm.cnt2Settings = m_printSettingModel.cnt2Settings; - emit sig_showEditCounter(vm); + emit sig_showEditCounter(vm, false); }); connect(ui.btnBarcode, &QPushButton::clicked, [this](){ @@ -715,7 +715,7 @@ void TestPrintWidget::onBtnItemConfigClicked() vm.charWidth = counterItem->charWidth(); vm.cnt1Settings = m_printSettingModel.cnt1Settings; vm.cnt2Settings = m_printSettingModel.cnt2Settings; - emit sig_showEditCounter(vm); + emit sig_showEditCounter(vm, true); } return; } @@ -1050,6 +1050,12 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer } } + // 最多两个计数器 + if (getCounterNum() >= 2 && !flag) { + QMessageBox::warning(this, tr("警告"),tr("无法创建更多计数器")); + return; + } + QVector currVals{vm.cnt1Settings.currValue, vm.cnt2Settings.currValue}; QFont font; @@ -1100,6 +1106,19 @@ void TestPrintWidget::addCounterItem(CounterViewModel vm, QSharedPointer updateCountersCurrVal(currVals); } +int TestPrintWidget::getCounterNum() +{ + int count = 0; + const QList items = pPicScene->items(); + for (QGraphicsItem *it : items) { + if (auto *counter = dynamic_cast(it)) { + Q_UNUSED(counter); + ++count; + } + } + return count; +} + QString TestPrintWidget::currentFile() { return xmlfileName; diff --git a/testprintwidget.h b/testprintwidget.h index f1163d0..9cbbbe0 100644 --- a/testprintwidget.h +++ b/testprintwidget.h @@ -58,6 +58,8 @@ public: void addCounterItem(CounterViewModel vm, QSharedPointer font = nullptr); + int getCounterNum(); + QString currentFile(); // 更新编辑界面内所有计数器的当前值 @@ -176,7 +178,7 @@ signals: void sendButtonClickedSignal(int index); - void sig_showEditCounter(CounterViewModel viewModel); + void sig_showEditCounter(CounterViewModel viewModel, bool isChange); // 用户请求打开日期类型图元编辑窗口时发送此信号 void sig_showEditDateTime(DateItemModel dateModel, TextItemModel textModel); diff --git a/thai.ts b/thai.ts index 6df7879..d8267d9 100644 --- a/thai.ts +++ b/thai.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog diff --git a/turkey.ts b/turkey.ts index 6df7879..d8267d9 100644 --- a/turkey.ts +++ b/turkey.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog diff --git a/vena.ts b/vena.ts index 6df7879..d8267d9 100644 --- a/vena.ts +++ b/vena.ts @@ -193,12 +193,16 @@ + + 计数器1 + + 计数器2 @@ -5958,6 +5962,16 @@ p, li { white-space: pre-wrap; } 是否保存文件? + + + 警告 + + + + + 无法创建更多计数器 + + TimeSettingDialog