Initial implementation of barcode backends db and barcode menu item.
This commit is contained in:
@@ -0,0 +1,186 @@
|
|||||||
|
/* BarcodeBackends.cpp
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Jim Evins <evins@snaught.com>
|
||||||
|
*
|
||||||
|
* This file is part of gLabels-qt.
|
||||||
|
*
|
||||||
|
* gLabels-qt is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* gLabels-qt is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "BarcodeBackends.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace glabels
|
||||||
|
{
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
const std::string default_id = "code39";
|
||||||
|
}
|
||||||
|
|
||||||
|
BarcodeBackends::BackendMap BarcodeBackends::mBackendIdMap;
|
||||||
|
BarcodeBackends::BackendMap BarcodeBackends::mBackendNameMap;
|
||||||
|
|
||||||
|
BarcodeBackends::StyleMap BarcodeBackends::mStyleIdMap;
|
||||||
|
BarcodeBackends::StyleMap BarcodeBackends::mStyleNameMap;
|
||||||
|
|
||||||
|
QList<QString> BarcodeBackends::mBackendNameList;
|
||||||
|
QList<QString> BarcodeBackends::mNameList;
|
||||||
|
|
||||||
|
|
||||||
|
BarcodeBackends::BarcodeBackends()
|
||||||
|
{
|
||||||
|
registerStyle( "postnet", "", tr("POSTNET (any)"),
|
||||||
|
false, false, true, false, "12345-6789-12", false, 11 );
|
||||||
|
|
||||||
|
registerStyle( "postnet-5", "", tr("POSTNET-5 (ZIP only)"),
|
||||||
|
false, false, true, false, "12345", false, 5 );
|
||||||
|
|
||||||
|
registerStyle( "postnet-9", "", tr("POSTNET-9 (ZIP+4)"),
|
||||||
|
false, false, true, false, "12345-6789", false, 9 );
|
||||||
|
|
||||||
|
registerStyle( "postnet-11", "", tr("POSTNET-11 (DPBC)"),
|
||||||
|
false, false, true, false, "12345-6789-12", false, 11 );
|
||||||
|
|
||||||
|
registerStyle( "cepnet", "", tr("CEPNET"),
|
||||||
|
false, false, true, false, "12345-678", false, 8 );
|
||||||
|
|
||||||
|
registerStyle( "onecode", "", tr("USPS Intelligent Mail"),
|
||||||
|
false, false, true, false, "12345678901234567890", false, 20 );
|
||||||
|
|
||||||
|
registerStyle( "code39", "", tr("Code 39"),
|
||||||
|
true, true, true, true, "1234567890", true, 10 );
|
||||||
|
|
||||||
|
registerStyle( "code39ext", "", tr("Code 39 Extended"),
|
||||||
|
true, true, true, true, "1234567890", true, 10 );
|
||||||
|
|
||||||
|
registerStyle( "upc-A", "", tr("UPC-A"),
|
||||||
|
true, false, true, false, "12345678901", false, 11 );
|
||||||
|
|
||||||
|
registerStyle( "ean-13", "", tr("EAN-13"),
|
||||||
|
true, false, true, false, "123456789012", false, 12 );
|
||||||
|
|
||||||
|
registerStyle( "datamatrix", "", tr("DataMatrix"),
|
||||||
|
false, false, true, false, "1234567890AB", false, 12 );
|
||||||
|
|
||||||
|
registerStyle( "qrcode", "", tr("QRCode"),
|
||||||
|
false, false, true, false, "1234567890AB", false, 12 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void BarcodeBackends::init( void )
|
||||||
|
{
|
||||||
|
static BarcodeBackends* singletonInstance = NULL;
|
||||||
|
|
||||||
|
if ( singletonInstance == NULL )
|
||||||
|
{
|
||||||
|
singletonInstance = new BarcodeBackends();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString BarcodeBackends::BackendIdToName( const QString& backendId )
|
||||||
|
{
|
||||||
|
BackendMap::iterator i = mBackendIdMap.find( backendId );
|
||||||
|
if ( i != mBackendIdMap.end() )
|
||||||
|
{
|
||||||
|
return i.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString BarcodeBackends::BackendNameToId( const QString& backendName )
|
||||||
|
{
|
||||||
|
BackendMap::iterator i = mBackendNameMap.find( backendName );
|
||||||
|
if ( i != mBackendNameMap.end() )
|
||||||
|
{
|
||||||
|
return i.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const QList<QString>& BarcodeBackends::getBackendNameList()
|
||||||
|
{
|
||||||
|
return mBackendNameList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const QList<QString>& BarcodeBackends::getNameList()
|
||||||
|
{
|
||||||
|
return mNameList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const BarcodeStyle* BarcodeBackends::lookupStyleFromId( const QString& id )
|
||||||
|
{
|
||||||
|
StyleMap::iterator i = mStyleIdMap.find( id );
|
||||||
|
if ( i != mStyleIdMap.end() )
|
||||||
|
{
|
||||||
|
return i.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const BarcodeStyle* BarcodeBackends::lookupStyleFromName( const QString& name )
|
||||||
|
{
|
||||||
|
StyleMap::iterator i = mStyleNameMap.find( name );
|
||||||
|
if ( i != mStyleNameMap.end() )
|
||||||
|
{
|
||||||
|
return i.value();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void BarcodeBackends::registerBackend( QString& id, QString& name)
|
||||||
|
{
|
||||||
|
mBackendNameList.append( name );
|
||||||
|
mBackendIdMap.insert( id, name );
|
||||||
|
mBackendNameMap.insert( name, id );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void BarcodeBackends::registerStyle( const char* id,
|
||||||
|
const char* backendId,
|
||||||
|
const QString& name,
|
||||||
|
bool canText,
|
||||||
|
bool textOptional,
|
||||||
|
bool canChecksum,
|
||||||
|
bool checksumOptional,
|
||||||
|
const char* defaultDigits,
|
||||||
|
bool canFreeForm,
|
||||||
|
int preferedN )
|
||||||
|
{
|
||||||
|
BarcodeStyle* style = new BarcodeStyle( QString(id), QString(backendId), name,
|
||||||
|
canText, textOptional,
|
||||||
|
canChecksum, checksumOptional,
|
||||||
|
QString(defaultDigits), canFreeForm, preferedN );
|
||||||
|
|
||||||
|
QString fqName = QString(backendId) + QString(".") + name; // Name may not be unique
|
||||||
|
|
||||||
|
mNameList.append( name );
|
||||||
|
mStyleIdMap.insert( id, style );
|
||||||
|
mStyleNameMap.insert( fqName, style );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
/* BarcodeBackends.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Jim Evins <evins@snaught.com>
|
||||||
|
*
|
||||||
|
* This file is part of gLabels-qt.
|
||||||
|
*
|
||||||
|
* gLabels-qt is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* gLabels-qt is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef glabels_BarcodeBackends_h
|
||||||
|
#define glabels_BarcodeBackends_h
|
||||||
|
|
||||||
|
#include "BarcodeStyle.h"
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QString>
|
||||||
|
#include <QMap>
|
||||||
|
#include <QList>
|
||||||
|
|
||||||
|
|
||||||
|
namespace glabels
|
||||||
|
{
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Barcode Backends Database
|
||||||
|
///
|
||||||
|
class BarcodeBackends : public QObject
|
||||||
|
{
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Life Cycle
|
||||||
|
/////////////////////////////////
|
||||||
|
private:
|
||||||
|
BarcodeBackends();
|
||||||
|
|
||||||
|
public:
|
||||||
|
static void init( void );
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Public Methods
|
||||||
|
/////////////////////////////////
|
||||||
|
public:
|
||||||
|
static QString BackendIdToName( const QString& backendId );
|
||||||
|
static QString BackendNameToId( const QString& backendName );
|
||||||
|
|
||||||
|
static const QList<QString>& getBackendNameList();
|
||||||
|
static const QList<QString>& getNameList();
|
||||||
|
|
||||||
|
static const BarcodeStyle* lookupStyleFromId( const QString& id );
|
||||||
|
static const BarcodeStyle* lookupStyleFromName( const QString& name );
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Private Methods
|
||||||
|
/////////////////////////////////
|
||||||
|
private:
|
||||||
|
static void registerBackend( QString &id, QString &name);
|
||||||
|
|
||||||
|
static void registerStyle( const char* id,
|
||||||
|
const char* backendId,
|
||||||
|
const QString& name,
|
||||||
|
bool canText,
|
||||||
|
bool textOptional,
|
||||||
|
bool canChecksum,
|
||||||
|
bool checksumOptional,
|
||||||
|
const char* defaultDigits,
|
||||||
|
bool canFreeForm,
|
||||||
|
int preferedN );
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Private Members
|
||||||
|
/////////////////////////////////
|
||||||
|
typedef QMap<QString,QString> BackendMap;
|
||||||
|
static BackendMap mBackendIdMap;
|
||||||
|
static BackendMap mBackendNameMap;
|
||||||
|
|
||||||
|
typedef QMap<QString,BarcodeStyle*> StyleMap;
|
||||||
|
static StyleMap mStyleIdMap;
|
||||||
|
static StyleMap mStyleNameMap;
|
||||||
|
|
||||||
|
static QList<QString> mBackendNameList;
|
||||||
|
static QList<QString> mNameList;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif // glabels_BarcodeBackends_h
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
/* BarcodeMenuItem.cpp
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Jim Evins <evins@snaught.com>
|
||||||
|
*
|
||||||
|
* This file is part of gLabels-qt.
|
||||||
|
*
|
||||||
|
* gLabels-qt is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* gLabels-qt is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "BarcodeMenuItem.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace glabels
|
||||||
|
{
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Constructor From Data
|
||||||
|
///
|
||||||
|
BarcodeMenuItem::BarcodeMenuItem( BarcodeStyle* bcStyle, QObject* parent )
|
||||||
|
: QAction(parent), mBcStyle(bcStyle)
|
||||||
|
{
|
||||||
|
setText( bcStyle->name() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Destructor
|
||||||
|
///
|
||||||
|
BarcodeMenuItem::~BarcodeMenuItem()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// bcStyle Property Getter
|
||||||
|
///
|
||||||
|
const BarcodeStyle* BarcodeMenuItem::bcStyle() const
|
||||||
|
{
|
||||||
|
return mBcStyle;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/* BarcodeMenuItem.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2014 Jim Evins <evins@snaught.com>
|
||||||
|
*
|
||||||
|
* This file is part of gLabels-qt.
|
||||||
|
*
|
||||||
|
* gLabels-qt is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* gLabels-qt is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with gLabels-qt. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef glabels_BarcodeMenuItem_h
|
||||||
|
#define glabels_BarcodeMenuItem_h
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include "BarcodeStyle.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace glabels
|
||||||
|
{
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Barcode Menu Item
|
||||||
|
///
|
||||||
|
class BarcodeMenuItem : public QAction
|
||||||
|
{
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Life Cycle
|
||||||
|
/////////////////////////////////
|
||||||
|
public:
|
||||||
|
BarcodeMenuItem( BarcodeStyle* bcStyle, QObject* parent );
|
||||||
|
|
||||||
|
virtual ~BarcodeMenuItem();
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Properties
|
||||||
|
/////////////////////////////////
|
||||||
|
|
||||||
|
const BarcodeStyle* bcStyle() const;
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////
|
||||||
|
// Private Data
|
||||||
|
/////////////////////////////////
|
||||||
|
private:
|
||||||
|
BarcodeStyle* mBcStyle;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // glabels_BarcodeMenuItem_h
|
||||||
@@ -31,6 +31,7 @@ namespace glabels
|
|||||||
///
|
///
|
||||||
BarcodeStyle::BarcodeStyle ()
|
BarcodeStyle::BarcodeStyle ()
|
||||||
: mId( "" ),
|
: mId( "" ),
|
||||||
|
mBackendId( "" ),
|
||||||
mName( "" ),
|
mName( "" ),
|
||||||
mCanText( false ),
|
mCanText( false ),
|
||||||
mTextOptional( false ),
|
mTextOptional( false ),
|
||||||
@@ -47,6 +48,7 @@ namespace glabels
|
|||||||
/// Constructor From Data
|
/// Constructor From Data
|
||||||
///
|
///
|
||||||
BarcodeStyle::BarcodeStyle ( const QString& id,
|
BarcodeStyle::BarcodeStyle ( const QString& id,
|
||||||
|
const QString& backendId,
|
||||||
const QString& name,
|
const QString& name,
|
||||||
bool canText,
|
bool canText,
|
||||||
bool textOptional,
|
bool textOptional,
|
||||||
@@ -56,6 +58,7 @@ namespace glabels
|
|||||||
bool canFreeform,
|
bool canFreeform,
|
||||||
int preferedN )
|
int preferedN )
|
||||||
: mId( id ),
|
: mId( id ),
|
||||||
|
mBackendId( backendId ),
|
||||||
mName( name ),
|
mName( name ),
|
||||||
mCanText( canText ),
|
mCanText( canText ),
|
||||||
mTextOptional( textOptional ),
|
mTextOptional( textOptional ),
|
||||||
@@ -77,6 +80,15 @@ namespace glabels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Backend ID Property Getter
|
||||||
|
///
|
||||||
|
const QString& BarcodeStyle::backendId() const
|
||||||
|
{
|
||||||
|
return mBackendId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Name Property Getter
|
/// Name Property Getter
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace glabels
|
|||||||
BarcodeStyle ();
|
BarcodeStyle ();
|
||||||
|
|
||||||
BarcodeStyle ( const QString& id,
|
BarcodeStyle ( const QString& id,
|
||||||
|
const QString& backendId,
|
||||||
const QString& name,
|
const QString& name,
|
||||||
bool canText,
|
bool canText,
|
||||||
bool textOptional,
|
bool textOptional,
|
||||||
@@ -55,6 +56,8 @@ namespace glabels
|
|||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
const QString& id() const;
|
const QString& id() const;
|
||||||
|
|
||||||
|
const QString& backendId() const;
|
||||||
|
|
||||||
const QString& name() const;
|
const QString& name() const;
|
||||||
|
|
||||||
bool canText() const;
|
bool canText() const;
|
||||||
@@ -84,6 +87,7 @@ namespace glabels
|
|||||||
/////////////////////////////////
|
/////////////////////////////////
|
||||||
private:
|
private:
|
||||||
QString mId;
|
QString mId;
|
||||||
|
QString mBackendId;
|
||||||
QString mName;
|
QString mName;
|
||||||
bool mCanText;
|
bool mCanText;
|
||||||
bool mTextOptional;
|
bool mTextOptional;
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ project (app CXX)
|
|||||||
|
|
||||||
set (glabels_sources
|
set (glabels_sources
|
||||||
glabels_main.cpp
|
glabels_main.cpp
|
||||||
|
BarcodeBackends.cpp
|
||||||
|
BarcodeMenuItem.cpp
|
||||||
BarcodeStyle.cpp
|
BarcodeStyle.cpp
|
||||||
ColorNode.cpp
|
ColorNode.cpp
|
||||||
File.cpp
|
File.cpp
|
||||||
|
|||||||
Reference in New Issue
Block a user