Initial implementation of barcode backends db and barcode menu item.

This commit is contained in:
Jim Evins
2014-07-05 21:31:43 -04:00
parent e1e666fa3d
commit 8c781ee1d4
7 changed files with 423 additions and 0 deletions
+186
View File
@@ -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 );
}
}
+101
View File
@@ -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
+54
View File
@@ -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;
}
}
+64
View File
@@ -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
+12
View File
@@ -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
/// ///
+4
View File
@@ -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;
+2
View File
@@ -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