diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index ab19d54..a7533fb 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -35,19 +36,33 @@ SettingsDialog::SettingsDialog(QWidget* parent, Qt::WindowFlags f) : QDialog(par PosPrinter printer; printer.printTest(); } else { - - } - /* if (printer.isValid()) - this->ui_.posPrinterDeviceEdit->setText(""); - else - this->ui_.posPrinterDeviceEdit->setText(""); */ + std::string posPrinterDeviceString = ui_.posPrinterDeviceEdit->text().toStdString(); + std::string delimiter = ":"; + PrinterDevice printerDevice; + try { + printerDevice.idVendor = std::stoi( + posPrinterDeviceString.substr(0, posPrinterDeviceString.find(delimiter)), 0, + 16); + printerDevice.idProduct = std::stoi( + posPrinterDeviceString.substr(posPrinterDeviceString.find(delimiter) + 1), + 0, 16); + } catch (std::exception&) { + QMessageBox(QMessageBox::Icon::Warning, "Falsche Eingabe", + QString("Eingabeformat für den Bondrucker (hexadezimale IDs): " + ":\nBeispiel: 0416:5011"), + QMessageBox::StandardButton::Ok, this) + .exec(); + return; + } + PosPrinter printer(printerDevice); + printer.printTest(); + } } catch (std::runtime_error& err) { QMessageBox(QMessageBox::Icon::Warning, "Bondrucker Fehler", QString("Test schlug fehl: ") + err.what(), QMessageBox::StandardButton::Ok, this) .exec(); - // this->ui_.posPrinterDeviceEdit->setText(""); return; } }); diff --git a/src/printer/posprinter.cpp b/src/printer/posprinter.cpp index f81ade3..0fc1961 100644 --- a/src/printer/posprinter.cpp +++ b/src/printer/posprinter.cpp @@ -20,7 +20,13 @@ const std::string PosPrinter::Command::FONT_SIZE_BIG = {'\x1b', '\x21', '\x10'}; const std::string PosPrinter::Command::FONT_SIZE_NORMAL = {'\x1b', '\x21', '\x00'}; const std::string PosPrinter::Command::FEED = {0x1b, 0x64, 0x03}; -PosPrinter::PosPrinter() +PosPrinter::PosPrinter() : PosPrinter(PrinterDevice()) +{ + +} + +PosPrinter::PosPrinter(const PrinterDevice& printerDevice) + : printerDevice_(printerDevice) { int retValue; @@ -53,6 +59,7 @@ PosPrinter::PosPrinter() if (desc.idVendor == printerDevice_.idVendor && desc.idProduct == printerDevice_.idProduct) { numDevice = i; + break; } } } @@ -85,11 +92,6 @@ PosPrinter::PosPrinter() libusb_free_device_list(devList, 1); } -PosPrinter::PosPrinter(const PrinterDevice& printerDevice) : printerDevice_{printerDevice} -{ - PosPrinter(); -} - PosPrinter::~PosPrinter() { if (devicePtr_) { diff --git a/src/printer/posprinter.h b/src/printer/posprinter.h index f3b9f65..04db2f1 100644 --- a/src/printer/posprinter.h +++ b/src/printer/posprinter.h @@ -49,7 +49,7 @@ class PosPrinter libusb_context* contextPtr_{}; libusb_device_handle* devicePtr_{}; SupportedPrinters supportedPrinters_; - PrinterDevice printerDevice_; + PrinterDevice printerDevice_{}; }; #endif \ No newline at end of file