97 lines
2.4 KiB
C++
97 lines
2.4 KiB
C++
#include "piccodeitem.h"
|
|
#include "ItemCommon.h"
|
|
#include <QDebug>
|
|
#include "LogInfo.h"
|
|
|
|
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 = "";
|
|
setTextItemModel(m_vm.generalSettingsVM);
|
|
updateVariants();
|
|
qInfo() << "Barcode model: \r\n" << qPrintable(BarcodeViewModel::toString(vm));
|
|
}
|
|
|
|
BarcodeViewModel PicCodeItem::barcodeViewModel()
|
|
{
|
|
m_vm.generalSettingsVM = textItemModel();
|
|
return m_vm;
|
|
}
|
|
|
|
bool PicCodeItem::updateVariants(const QVector<int> counters)
|
|
{
|
|
if (counters.size() < 2) {
|
|
qWarning() << "PicCodeItem::updateVariants: counters size insufficient:" << counters.size() << ", expected >= 2";
|
|
return false;
|
|
}
|
|
m_currCounterValues = counters;
|
|
auto b = updateVariants();
|
|
|
|
return b;
|
|
}
|
|
|
|
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()
|
|
{
|
|
if (m_currCounterValues.size() < 2) {
|
|
qWarning() << "PicCodeItem::updateVariants: m_currCounterValues size < 2, cannot generate barcode text";
|
|
return false;
|
|
}
|
|
|
|
auto txt = ItemUtils::generateTxtFromBarcodeViewModel(m_vm, {m_currCounterValues[0], m_currCounterValues[1]}, QDateTime::currentDateTime());
|
|
if(txt != m_currCodeTxt || m_currCodeTxt.isEmpty()) {
|
|
m_currCodeTxt = txt;
|
|
m_codeImage = ItemUtils::generateBarcodeImage(txt, m_vm.type, m_vm.format);
|
|
applyModify();
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|