#include "edititemdialog.h" #include #include #include #include "../views/itemdetailmapper.h" EditItemDialog::EditItemDialog(QTableView* tableView, QWidget* parent) : AbstractDialog(QDialogButtonBox::Ok, parent) , m_tableView(tableView) , m_qrCodeDisplay(new QLabel("QR Code")) {} void EditItemDialog::createContent() { if (m_contentContainer) { delete m_contentContainer; } setWindowTitle(tr("Edit item...")); m_contentContainer = new QWidget(this); QHBoxLayout* innerLayout = new QHBoxLayout(); m_contentContainer->setLayout(innerLayout); m_detailMapper = new ItemDetailMapper(this); m_detailMapper->setModelMappings(m_tableView); innerLayout->addWidget(m_detailMapper); updateQRCode(); connect(m_detailMapper, &ItemDetailMapper::contentChanged, this, &EditItemDialog::updateQRCode); innerLayout->addWidget(m_qrCodeDisplay); m_outerLayout->insertWidget(0, m_contentContainer); } void EditItemDialog::accept() { m_detailMapper->submit(); QDialog::accept(); } void EditItemDialog::reject() { m_detailMapper->revert(); QDialog::reject(); } void EditItemDialog::updateQRCode(const QString text) { QImage unscaledImage; if (text.isEmpty()) { unscaledImage = QImage("://no-picture-taking.png"); } else { unscaledImage = m_generator.generateQr(text); } QImage image = unscaledImage.scaled(250, 250); m_qrCodeDisplay->setPixmap(QPixmap::fromImage(image)); m_qrCodeDisplay->setToolTip(text); }