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) void BarcodeBackends::registerBackend( QString& id, QString& name)
{ {
mBackendNameList.append( name ); mBackendNameList.append( name );
+1
View File
@@ -56,6 +56,7 @@ namespace glabels
public: public:
static const QList<BarcodeStyle>& styleList(); static const QList<BarcodeStyle>& styleList();
static const BarcodeStyle& defaultStyle(); static const BarcodeStyle& defaultStyle();
static const BarcodeStyle& style( const QString& backendId, const QString& StyleId );
///////////////////////////////// /////////////////////////////////
+2
View File
@@ -72,6 +72,8 @@ namespace glabels
mBcData = ""; mBcData = "";
mBcColorNode = ColorNode( Qt::black ); mBcColorNode = ColorNode( Qt::black );
mEditorBarcode = nullptr;
update(); // Initialize cached editor layouts update(); // Initialize cached editor layouts
} }
+32 -3
View File
@@ -23,7 +23,7 @@
#include "EnumUtil.h" #include "EnumUtil.h"
#include "LabelModel.h" #include "LabelModel.h"
#include "LabelModelObject.h" #include "LabelModelObject.h"
//#include "LabelModelBarcodeObject.h" #include "LabelModelBarcodeObject.h"
#include "LabelModelBoxObject.h" #include "LabelModelBoxObject.h"
#include "LabelModelEllipseObject.h" #include "LabelModelEllipseObject.h"
#include "LabelModelLineObject.h" #include "LabelModelLineObject.h"
@@ -147,11 +147,14 @@ namespace glabels
{ {
createObjectImageNode( node, imageObject ); createObjectImageNode( node, imageObject );
} }
else if ( LabelModelBarcodeObject* barcodeObject = dynamic_cast<LabelModelBarcodeObject*>(object) )
{
createObjectBarcodeNode( node, barcodeObject );
}
else if ( LabelModelTextObject* textObject = dynamic_cast<LabelModelTextObject*>(object) ) else if ( LabelModelTextObject* textObject = dynamic_cast<LabelModelTextObject*>(object) )
{ {
createObjectTextNode( node, textObject ); createObjectTextNode( node, textObject );
} }
// TODO: other object types
else else
{ {
Q_ASSERT_X( false, "XmlLabelCreator::createObjectsNode", "Invalid object type." ); Q_ASSERT_X( false, "XmlLabelCreator::createObjectsNode", "Invalid object type." );
@@ -273,7 +276,33 @@ namespace glabels
void void
XmlLabelCreator::createObjectBarcodeNode( QDomElement &parent, const LabelModelBarcodeObject* object ) 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 "XmlLabelParser.h"
#include "BarcodeBackends.h"
#include "EnumUtil.h" #include "EnumUtil.h"
#include "LabelModel.h" #include "LabelModel.h"
#include "LabelModelObject.h" #include "LabelModelObject.h"
//#include "LabelModelBarcodeObject.h" #include "LabelModelBarcodeObject.h"
#include "LabelModelBoxObject.h" #include "LabelModelBoxObject.h"
#include "LabelModelEllipseObject.h" #include "LabelModelEllipseObject.h"
#include "LabelModelImageObject.h" #include "LabelModelImageObject.h"
@@ -317,12 +318,10 @@ namespace glabels
{ {
list.append( parseObjectImageNode( child.toElement(), data ) ); list.append( parseObjectImageNode( child.toElement(), data ) );
} }
#if 0
else if ( tagName == "Object-barcode" ) else if ( tagName == "Object-barcode" )
{ {
list.append( parseObjectBarcodeNode( child.toElement() ) ); list.append( parseObjectBarcodeNode( child.toElement() ) );
} }
#endif
else if ( !child.isComment() ) else if ( !child.isComment() )
{ {
qWarning() << "Unexpected" << node.tagName() << "child:" << tagName; qWarning() << "Unexpected" << node.tagName() << "child:" << tagName;
@@ -466,7 +465,33 @@ namespace glabels
LabelModelBarcodeObject* LabelModelBarcodeObject*
XmlLabelParser::parseObjectBarcodeNode( const QDomElement &node ) 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;
} }
+1 -4
View File
@@ -411,11 +411,8 @@
checksum %BOOLEAN_TYPE; #REQUIRED checksum %BOOLEAN_TYPE; #REQUIRED
color %UINT_TYPE; #IMPLIED color %UINT_TYPE; #IMPLIED
color_field %STRING_TYPE; #IMPLIED color_field %STRING_TYPE; #IMPLIED
data %STRING_TYPE; #IMPLIED data %STRING_TYPE; #REQUIRED
field %STRING_TYPE; #IMPLIED
format %UINT_TYPE; #IMPLIED
%affine_attrs; %affine_attrs;
%shadow_attrs;
> >
+2 -2
View File
@@ -1115,12 +1115,12 @@
<context> <context>
<name>glabels::LabelModelBarcodeObject</name> <name>glabels::LabelModelBarcodeObject</name>
<message> <message>
<location filename="../glabels/LabelModelBarcodeObject.cpp" line="366"/> <location filename="../glabels/LabelModelBarcodeObject.cpp" line="368"/>
<source>No barcode data</source> <source>No barcode data</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="../glabels/LabelModelBarcodeObject.cpp" line="374"/> <location filename="../glabels/LabelModelBarcodeObject.cpp" line="376"/>
<source>Invalid barcode data</source> <source>Invalid barcode data</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>