C25STANDARD/C25INTER/C25IATA/C25LOGIC/C25IND: add check digit option (#216)

This commit is contained in:
gitlost
2021-05-17 20:04:00 +01:00
parent 29d761c795
commit f3a94f0c0c
10 changed files with 392 additions and 227 deletions

View File

@ -16,11 +16,11 @@ else()
qt5_wrap_ui(zint-qt_SRCS mainWindow.ui extData.ui extSequence.ui extExport.ui)
qt5_add_resources(zint-qt_SRCS resources.qrc)
endif()
# grpAztec.ui grpC49.ui grpDBExtend.ui grpLOGMARS.ui grpPDF417.ui grpUPCEAN.ui
# grpC11.ui grpChannel.ui grpDM.ui grpMaxicode.ui grpQR.ui grpVIN.ui
# grpC128.ui grpCodabar.ui grpDotCode.ui grpMicroPDF.ui grpRMQR.ui
# grpC16k.ui grpCodablockF.ui grpGrid.ui grpMQR.ui grpUltra.ui
# grpC39.ui grpCodeOne.ui grpHX.ui grpMSICheck.ui grpUPCA.ui
# grpAztec.ui grpC39.ui grpCodeOne.ui grpHX.ui grpMSICheck.ui grpUPCA.ui
# grpC11.ui grpC49.ui grpDBExtend.ui grpLOGMARS.ui grpPDF417.ui grpUPCEAN.ui
# grpC128.ui grpChannel.ui grpDM.ui grpMaxicode.ui grpQR.ui grpVIN.ui
# grpC16k.ui grpCodabar.ui grpDotCode.ui grpMicroPDF.ui grpRMQR.ui
# grpC25.ui grpCodablockF.ui grpGrid.ui grpMQR.ui grpUltra.ui
add_executable(zint-qt ${zint-qt_SRCS})
add_dependencies(zint-qt zint)

View File

@ -65,6 +65,7 @@ FORMS += extData.ui \
grpC11.ui \
grpC128.ui \
grpC16k.ui \
grpC25.ui \
grpC39.ui \
grpC49.ui \
grpChannel.ui \

View File

@ -18,6 +18,7 @@ FORMS += extData.ui \
grpC11.ui \
grpC128.ui \
grpC16k.ui \
grpC25.ui \
grpC39.ui \
grpC49.ui \
grpChannel.ui \

77
frontend_qt/grpC25.ui Normal file
View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>grpC25</class>
<widget class="QWidget" name="grpC25">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>254</width>
<height>131</height>
</rect>
</property>
<property name="maximumSize">
<size>
<width>600</width>
<height>16777215</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QRadioButton" name="radC25Stand">
<property name="text">
<string>&amp;No Check Digit</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="toolTip">
<string>No check digit added</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="radC25Check">
<property name="text">
<string>&amp;Check Digit</string>
</property>
<property name="toolTip">
<string>Add standard GS1 mod-10 weighted check digit</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="radC25CheckHide">
<property name="text">
<string>Check Digit, Not Shown in &amp;Text</string>
</property>
<property name="toolTip">
<string>Add standard GS1 check digit but do not display in Human Readable Text</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -37,7 +37,7 @@
#include <stdio.h>
MainWindow::MainWindow(QWidget* parent, Qt::WindowFlags fl)
: QWidget(parent, fl), m_optionWidget(NULL), m_symbology(0)
: QWidget(parent, fl), m_optionWidget(nullptr), m_symbology(0)
{
m_bc.bc.setDebug(QCoreApplication::arguments().contains("--verbose")); // Undocumented command line debug flag
@ -713,6 +713,21 @@ void MainWindow::change_options()
connect(m_optionWidget->findChild<QObject*>("radC11NoCheckDigits"), SIGNAL(clicked( bool )), SLOT(update_preview()));
}
if (symbology == BARCODE_C25STANDARD || symbology == BARCODE_C25INTER || symbology == BARCODE_C25IATA
|| symbology == BARCODE_C25LOGIC || symbology == BARCODE_C25IND)
{
QFile file(":/grpC25.ui");
if (file.open(QIODevice::ReadOnly)) {
m_optionWidget = uiload.load(&file);
file.close();
static const char *names[] = { "Standard (Matrix)", "Interleaved", "IATA", "", "Data Logic", "Industrial" };
tabMain->insertTab(1, m_optionWidget, tr("Cod&e 2 of 5 %1").arg(names[symbology - BARCODE_C25STANDARD]));
connect(m_optionWidget->findChild<QObject*>("radC25Stand"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radC25Check"), SIGNAL(clicked( bool )), SLOT(update_preview()));
connect(m_optionWidget->findChild<QObject*>("radC25CheckHide"), SIGNAL(clicked( bool )), SLOT(update_preview()));
}
}
if ((symbology == BARCODE_CODE39) || (symbology == BARCODE_EXCODE39))
{
QFile file(":/grpC39.ui");
@ -1334,6 +1349,15 @@ void MainWindow::update_preview()
}
break;
case BARCODE_C25STANDARD:
case BARCODE_C25INTER:
case BARCODE_C25IATA:
case BARCODE_C25LOGIC:
case BARCODE_C25IND:
m_bc.bc.setSymbol(symbology);
m_bc.bc.setOption2(get_button_group_index(QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide"));
break;
case BARCODE_CODE39:
if(m_optionWidget->findChild<QRadioButton*>("radC39HIBC")->isChecked())
m_bc.bc.setSymbol(BARCODE_HIBC_39);
@ -1809,11 +1833,13 @@ const char *MainWindow::get_setting_name(int symbology) {
/* Helper to return index of selected radio button in group, checking for NULL */
int MainWindow::get_button_group_index(const QStringList &children) {
QRadioButton *radioButton;
for (int index = 0; index < children.size(); index++) {
radioButton = m_optionWidget->findChild<QRadioButton*>(children[index]);
if (radioButton && radioButton->isChecked()) {
return index;
if (m_optionWidget) {
QRadioButton *radioButton;
for (int index = 0; index < children.size(); index++) {
radioButton = m_optionWidget->findChild<QRadioButton*>(children[index]);
if (radioButton && radioButton->isChecked()) {
return index;
}
}
}
return 0;
@ -1821,27 +1847,29 @@ int MainWindow::get_button_group_index(const QStringList &children) {
/* Helper to set radio button in group from index in settings, checking for NULL */
void MainWindow::set_radiobutton_from_setting(QSettings &settings, const QString &setting, const QStringList &children, int default_val) {
int index = settings.value(setting, default_val).toInt();
QRadioButton *radioButton;
if (index >= 0 && index < children.size()) {
radioButton = m_optionWidget->findChild<QRadioButton*>(children[index]);
} else {
radioButton = m_optionWidget->findChild<QRadioButton*>(children[0]);
}
if (radioButton) {
radioButton->setChecked(true);
if (m_optionWidget) {
int index = settings.value(setting, default_val).toInt();
QRadioButton *radioButton;
if (index >= 0 && index < children.size()) {
radioButton = m_optionWidget->findChild<QRadioButton*>(children[index]);
} else {
radioButton = m_optionWidget->findChild<QRadioButton*>(children[0]);
}
if (radioButton) {
radioButton->setChecked(true);
}
}
}
/* Helper to return index of selected item in combobox, checking for NULL */
int MainWindow::get_combobox_index(const QString &child) {
QComboBox *comboBox = m_optionWidget->findChild<QComboBox*>(child);
QComboBox *comboBox = m_optionWidget ? m_optionWidget->findChild<QComboBox*>(child) : nullptr;
return comboBox ? comboBox->currentIndex() : 0;
}
/* Helper to set item in combobox from index in settings, checking for NULL */
void MainWindow::set_combobox_from_setting(QSettings &settings, const QString &setting, const QString &child, int default_val) {
QComboBox *comboBox = m_optionWidget->findChild<QComboBox*>(child);
QComboBox *comboBox = m_optionWidget ? m_optionWidget->findChild<QComboBox*>(child) : nullptr;
if (comboBox) {
comboBox->setCurrentIndex(settings.value(setting, default_val).toInt());
}
@ -1849,13 +1877,13 @@ void MainWindow::set_combobox_from_setting(QSettings &settings, const QString &s
/* Helper to return if checkbox checked, checking for NULL */
int MainWindow::get_checkbox_val(const QString &child) {
QCheckBox *checkBox = m_optionWidget->findChild<QCheckBox*>(child);
QCheckBox *checkBox = m_optionWidget ? m_optionWidget->findChild<QCheckBox*>(child) : nullptr;
return checkBox && checkBox->isChecked() ? 1 : 0;
}
/* Helper to set checkbox from settings, checking for NULL */
void MainWindow::set_checkbox_from_setting(QSettings &settings, const QString &setting, const QString &child, int default_val) {
QCheckBox *checkBox = m_optionWidget->findChild<QCheckBox*>(child);
QCheckBox *checkBox = m_optionWidget ? m_optionWidget->findChild<QCheckBox*>(child) : nullptr;
if (checkBox) {
checkBox->setChecked(settings.value(setting, default_val).toInt() ? true : false);
}
@ -1863,13 +1891,13 @@ void MainWindow::set_checkbox_from_setting(QSettings &settings, const QString &s
/* Helper to return text of line edit, checking for NULL */
QString MainWindow::get_lineedit_val(const QString &child) {
QLineEdit *lineEdit = m_optionWidget->findChild<QLineEdit*>(child);
QLineEdit *lineEdit = m_optionWidget ? m_optionWidget->findChild<QLineEdit*>(child) : nullptr;
return lineEdit ? lineEdit->text() : "";
}
/* Helper to set line edit from settings, checking for NULL */
void MainWindow::set_lineedit_from_setting(QSettings &settings, const QString &setting, const QString &child, const char *default_val) {
QLineEdit *lineEdit = m_optionWidget->findChild<QLineEdit*>(child);
QLineEdit *lineEdit = m_optionWidget ? m_optionWidget->findChild<QLineEdit*>(child) : nullptr;
if (lineEdit) {
lineEdit->setText(settings.value(setting, default_val).toString());
}
@ -1877,13 +1905,13 @@ void MainWindow::set_lineedit_from_setting(QSettings &settings, const QString &s
/* Helper to return value of spin box, checking for NULL */
int MainWindow::get_spinbox_val(const QString &child) {
QSpinBox *spinBox = m_optionWidget->findChild<QSpinBox*>(child);
QSpinBox *spinBox = m_optionWidget ? m_optionWidget->findChild<QSpinBox*>(child) : nullptr;
return spinBox ? spinBox->value() : 0;
}
/* Helper to set spin box from settings, checking for NULL */
void MainWindow::set_spinbox_from_setting(QSettings &settings, const QString &setting, const QString &child, int default_val) {
QSpinBox *spinBox = m_optionWidget->findChild<QSpinBox*>(child);
QSpinBox *spinBox = m_optionWidget ? m_optionWidget->findChild<QSpinBox*>(child) : nullptr;
if (spinBox) {
spinBox->setValue(settings.value(setting, default_val).toInt());
}
@ -1982,6 +2010,22 @@ void MainWindow::save_sub_settings(QSettings &settings, int symbology) {
settings.setValue("studio/bc/code11/check_digit", get_button_group_index(QStringList() << "radC11TwoCheckDigits" << "radC11OneCheckDigit" << "radC11NoCheckDigits"));
break;
case BARCODE_C25STANDARD:
settings.setValue("studio/bc/c25standard/check_digit", get_button_group_index(QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide"));
break;
case BARCODE_C25INTER:
settings.setValue("studio/bc/c25inter/check_digit", get_button_group_index(QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide"));
break;
case BARCODE_C25IATA:
settings.setValue("studio/bc/c25iata/check_digit", get_button_group_index(QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide"));
break;
case BARCODE_C25LOGIC:
settings.setValue("studio/bc/c25logic/check_digit", get_button_group_index(QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide"));
break;
case BARCODE_C25IND:
settings.setValue("studio/bc/c25ind/check_digit", get_button_group_index(QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide"));
break;
case BARCODE_CODE39:
case BARCODE_HIBC_39:
settings.setValue("studio/bc/code39/check_digit", get_button_group_index(QStringList() << "radC39Stand" << "radC39Check" << "radC39HIBC"));
@ -2212,6 +2256,22 @@ void MainWindow::load_sub_settings(QSettings &settings, int symbology) {
set_radiobutton_from_setting(settings, "studio/bc/code11/check_digit", QStringList() << "radC11TwoCheckDigits" << "radC11OneCheckDigit" << "radC11NoCheckDigits");
break;
case BARCODE_C25STANDARD:
set_radiobutton_from_setting(settings, "studio/bc/c25standard/check_digit", QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide");
break;
case BARCODE_C25INTER:
set_radiobutton_from_setting(settings, "studio/bc/c25inter/check_digit", QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide");
break;
case BARCODE_C25IATA:
set_radiobutton_from_setting(settings, "studio/bc/c25iata/check_digit", QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide");
break;
case BARCODE_C25LOGIC:
set_radiobutton_from_setting(settings, "studio/bc/c25logic/check_digit", QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide");
break;
case BARCODE_C25IND:
set_radiobutton_from_setting(settings, "studio/bc/c25ind/check_digit", QStringList() << "radC25Stand" << "radC25Check" << "radC25CheckHide");
break;
case BARCODE_CODE39:
case BARCODE_HIBC_39:
set_radiobutton_from_setting(settings, "studio/bc/code39/check_digit", QStringList() << "radC39Stand" << "radC39Check" << "radC39HIBC");

View File

@ -6,6 +6,7 @@
<file>images/zoomin.png</file>
<file>grpAztec.ui</file>
<file>grpC11.ui</file>
<file>grpC25.ui</file>
<file>grpC39.ui</file>
<file>grpDM.ui</file>
<file>grpMSICheck.ui</file>