Read and write barcodes in glabels project files.

This commit is contained in:
Jim Evins
2017-05-07 22:21:29 -04:00
parent 56c2930db7
commit 276756a317
7 changed files with 81 additions and 13 deletions
+14
View File
@@ -98,6 +98,20 @@ namespace glabels
}
const BarcodeStyle& BarcodeBackends::style( const QString& backendId, const QString& StyleId )
{
foreach ( const BarcodeStyle& bcStyle, mStyleList )
{
if ( (bcStyle.backendId() == backendId) && (bcStyle.id() == StyleId) )
{
return bcStyle;
}
}
return defaultStyle();
}
void BarcodeBackends::registerBackend( QString& id, QString& name)
{
mBackendNameList.append( name );
+1
View File
@@ -56,6 +56,7 @@ namespace glabels
public:
static const QList<BarcodeStyle>& styleList();
static const BarcodeStyle& defaultStyle();
static const BarcodeStyle& style( const QString& backendId, const QString& StyleId );
/////////////////////////////////
+2
View File
@@ -72,6 +72,8 @@ namespace glabels
mBcData = "";
mBcColorNode = ColorNode( Qt::black );
mEditorBarcode = nullptr;
update(); // Initialize cached editor layouts
}
+32 -3
View File
@@ -23,7 +23,7 @@
#include "EnumUtil.h"
#include "LabelModel.h"
#include "LabelModelObject.h"
//#include "LabelModelBarcodeObject.h"
#include "LabelModelBarcodeObject.h"
#include "LabelModelBoxObject.h"
#include "LabelModelEllipseObject.h"
#include "LabelModelLineObject.h"
@@ -147,11 +147,14 @@ namespace glabels
{
createObjectImageNode( node, imageObject );
}
else if ( LabelModelBarcodeObject* barcodeObject = dynamic_cast<LabelModelBarcodeObject*>(object) )
{
createObjectBarcodeNode( node, barcodeObject );
}
else if ( LabelModelTextObject* textObject = dynamic_cast<LabelModelTextObject*>(object) )
{
createObjectTextNode( node, textObject );
}
// TODO: other object types
else
{
Q_ASSERT_X( false, "XmlLabelCreator::createObjectsNode", "Invalid object type." );
@@ -273,7 +276,33 @@ namespace glabels
void
XmlLabelCreator::createObjectBarcodeNode( QDomElement &parent, const LabelModelBarcodeObject* object )
{
// TODO
QDomDocument doc = parent.ownerDocument();
QDomElement node = doc.createElement( "Object-barcode" );
parent.appendChild( node );
/* position attrs */
createPositionAttrs( node, object );
/* size attrs */
createSizeAttrs( node, object );
/* barcode attrs */
XmlUtil::setStringAttr( node, "backend", object->bcStyle().backendId() );
XmlUtil::setStringAttr( node, "style", object->bcStyle().id() );
XmlUtil::setBoolAttr( node, "text", object->bcTextFlag() );
XmlUtil::setBoolAttr( node, "checksum", object->bcChecksumFlag() );
if ( object->bcColorNode().isField() )
{
XmlUtil::setStringAttr( node, "color_field", object->bcColorNode().key() );
}
else
{
XmlUtil::setUIntAttr( node, "color", object->bcColorNode().rgba() );
}
XmlUtil::setStringAttr( node, "data", object->bcData() );
/* affine attrs */
createAffineAttrs( node, object );
}
+29 -4
View File
@@ -20,10 +20,11 @@
#include "XmlLabelParser.h"
#include "BarcodeBackends.h"
#include "EnumUtil.h"
#include "LabelModel.h"
#include "LabelModelObject.h"
//#include "LabelModelBarcodeObject.h"
#include "LabelModelBarcodeObject.h"
#include "LabelModelBoxObject.h"
#include "LabelModelEllipseObject.h"
#include "LabelModelImageObject.h"
@@ -317,12 +318,10 @@ namespace glabels
{
list.append( parseObjectImageNode( child.toElement(), data ) );
}
#if 0
else if ( tagName == "Object-barcode" )
{
list.append( parseObjectBarcodeNode( child.toElement() ) );
}
#endif
else if ( !child.isComment() )
{
qWarning() << "Unexpected" << node.tagName() << "child:" << tagName;
@@ -466,7 +465,33 @@ namespace glabels
LabelModelBarcodeObject*
XmlLabelParser::parseObjectBarcodeNode( const QDomElement &node )
{
return nullptr;
LabelModelBarcodeObject* object = new LabelModelBarcodeObject();
/* position attrs */
parsePositionAttrs( node, object );
/* size attrs */
parseSizeAttrs( node, object );
/* barcode attrs */
BarcodeStyle bcStyle = BarcodeBackends::style( XmlUtil::getStringAttr( node, "backend", "" ),
XmlUtil::getStringAttr( node, "style", "") );
object->setBcStyle( bcStyle );
object->setBcTextFlag( XmlUtil::getBoolAttr( node, "text", true ) );
object->setBcChecksumFlag( XmlUtil::getBoolAttr( node, "checksum", true ) );
QString key = XmlUtil::getStringAttr( node, "color_field", "" );
bool field_flag = !key.isEmpty();
uint32_t color = XmlUtil::getUIntAttr( node, "color", 0 );
object->setBcColorNode( ColorNode( field_flag, color, key ) );
object->setBcData( XmlUtil::getStringAttr( node, "data", "" ) );
/* affine attrs */
parseAffineAttrs( node, object );
return object;
}