Files
VX5_KRO_GearPump/scene/piccodeitem.cpp
T

83 lines
1.9 KiB
C++

#include "piccodeitem.h"
#include "ItemCommon.h"
#include <QDebug>
PicCodeItem::PicCodeItem(QGraphicsItem *parent, QGraphicsScene *scene, const SourceType type)
:PicTextItem(parent, scene, type),
m_currCounterValues({0, 0})
{
setFlag(QGraphicsItem::ItemIsMovable);
setFlag(QGraphicsItem::ItemIsSelectable);
setFlag(QGraphicsItem::ItemIsFocusable);
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
connect(&m_dateVarTimer, &QTimer::timeout, this, [this](){
updateVariants();
});
// m_dateVarTimer.start(50);
}
PicCodeItem::~PicCodeItem()
{
m_dateVarTimer.stop();
}
QVariant PicCodeItem::source()
{
return m_currCodeTxt;
}
void PicCodeItem::setSource(QVariant var)
{
applyModify();
}
void PicCodeItem::setBarcodeViewModel(const BarcodeViewModel &vm)
{
m_vm = vm;
m_currCodeTxt = "";
updateVariants();
qInfo() << "Barcode model: \r\n" << qPrintable(BarcodeViewModel::toString(vm));
}
BarcodeViewModel PicCodeItem::barcodeViewModel()
{
return m_vm;
}
bool PicCodeItem::updateVariants(const QVector<int> counters)
{
m_currCounterValues = counters;
return updateVariants();
}
QImage PicCodeItem::itemImage()
{
return m_codeImage;
}
void PicCodeItem::setCustomAttrs(const QXmlStreamAttributes &attrs)
{
auto vm = BarcodeViewModel::loadFromXml(attrs);
setBarcodeViewModel(vm);
}
void PicCodeItem::saveCustomAttrs(QXmlStreamAttributes &attrs)
{
BarcodeViewModel::saveToXml(m_vm, attrs);
}
bool PicCodeItem::updateVariants()
{
auto txt = generateTxtFromBarcodeViewModel(m_vm, {m_currCounterValues[0], m_currCounterValues[1]}, QDateTime::currentDateTime());
if(txt != m_currCodeTxt || m_currCodeTxt.isEmpty()) {
m_currCodeTxt = txt;
m_codeImage = generateBarcodeImage(txt, m_vm.type, m_vm.format);
applyModify();
return true;
}
return false;
}