diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-15 18:34:54 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-02-15 18:34:54 +0000 |
commit | 8805e6b17b1460f3316ccb28629e8ad78e4b9c2c (patch) | |
tree | dc9b702962ecf0060cc473397b9f80268c2456c9 /kbarcode/tokenprovider.h | |
download | kbarcode-8805e6b17b1460f3316ccb28629e8ad78e4b9c2c.tar.gz kbarcode-8805e6b17b1460f3316ccb28629e8ad78e4b9c2c.zip |
Added abandoned KDE3 version of kbarcode
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kbarcode@1090667 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kbarcode/tokenprovider.h')
-rw-r--r-- | kbarcode/tokenprovider.h | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/kbarcode/tokenprovider.h b/kbarcode/tokenprovider.h new file mode 100644 index 0000000..ac7e57f --- /dev/null +++ b/kbarcode/tokenprovider.h @@ -0,0 +1,250 @@ +/*************************************************************************** + tokenprovider.h - description + ------------------- + begin : Fre Sep 19 2003 + copyright : (C) 2003 by Dominik Seichter + email : domseichter@web.de + ***************************************************************************/ + +/*************************************************************************** + * * + * This program 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 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef TOKENPROVIDER_H +#define TOKENPROVIDER_H + +// enable JAVASCRIPT interpreter +#define USE_JAVASCRIPT +// use KJS instead of +#define NO_KJS_EMBED + +#include <qstring.h> +#include <qregexp.h> +#include <time.h> + +#include "documentitem.h" + +namespace KABC { + class Addressee; +}; + +class tToken { + public: + tToken() {}; + + tToken( const QString & t, const QString & d, bool a = false ) + { + token = t; + description = d; + appendix = a; + } + + void operator=( const tToken & rhs ) + { + token = rhs.token; + description = rhs.description; + appendix = rhs.appendix; + } + + QString token; + QString description; + bool appendix; +}; + +struct tCategories { + int category; + QValueList<tToken> tokens; +}; + + +#ifndef NO_KJS_EMBED +namespace KJSEmbed { + class KJSEmbedPart; +} +#else +namespace KJS { + class Interpreter; +} +#endif // NO_KJS_EMBED + +class QPaintDevice; + +/** This class handles the replacement of tokens like [date] or [article_no]. + * + *@author Dominik Seichter + */ +class TokenProvider { + public: + enum ECategories { CAT_DATABASE, CAT_LABEL, CAT_CUSTOM, CAT_DATE, CAT_ADDRESS }; + + TokenProvider( QPaintDevice* paintdevice ); + virtual ~TokenProvider(); + + static bool hasJavaScript(); + + static QValueList<tCategories>* getTokens(); + + /** + * Get a caption which can be displayed to the user from + * a ECategory enum. + * + * @param e the category which should be used + * + * @returns a translated caption which can be displayed to the user + */ + static const QString captionForCategory( ECategories e ) { + return s_captions[e]; + } + + inline void updateDone() { m_update = false; } + inline virtual bool update() { + return m_update && m_contains_update; + } + + inline void setIndex( unsigned int index ) { m_index = index; m_update = true; } + inline void setPage( unsigned int page ) { m_page = page; m_update = true; } + inline void setArticleNo( const QString & t ) { article_no = t; m_update = true; } + inline void setBarcodeNo( const QString & t ) { barcode_no = t; m_update = true; } + inline void setCustomerNo( const QString & t ) { customer_no = t; m_update = true; } + inline void setEncodingTypeName( const QString & t ) { encoding_type_name = t; m_update = true; } + inline void setGroup( const QString & t ) { group = t; m_update = true; } + inline void setLabelName( const QString & t ) { label_name = t; m_update = true; } + inline void setCol( unsigned int c ) { col = c; m_update = true; } + inline void setRow( unsigned int r ) { row = r; m_update = true; } + inline void setSerial( const QString &t, unsigned int inc ) { m_serial = t; m_increment = inc; m_update = true; m_contains_update = true;} + inline void setAddressee( KABC::Addressee* pAddressee ) { m_address = pAddressee; } + + inline int index() const { return m_index; } + inline unsigned int page() const { return m_page; } + inline const QString & articleNo() const { return article_no; } + inline const QString & barcodeNo() const { return barcode_no; } + inline const QString & serial() const { return m_serial; } + + inline void setPaintDevice( QPaintDevice* paint ) { m_printer = paint; } + inline QPaintDevice* paintDevice() const { return m_printer; } + + /** + * parse the given java script code and return its result + * @returns either the result of the javascript code + * or an error message + * @p script javascript code to execute + */ + QString jsParse( const QString & script ); + + /** + * parse the given java script code and return its result + * @returns true or false + * @p script javascript code to execute + */ + bool jsParseToBool( const QString & script ); + + /** + * parse the given text for tokens and return a + * string with all tokens replaced correctly. + * @param text QString look in this text for tokens to replace + */ + QString parse( const QString & text ); + + + /** + * set @p list as DocumentItemList which is used for @see listUserVars + */ + inline void setCurrentDocumentItems( const DocumentItemList & list ); + + /** + * parses all DocumentItems in @p list and returns a stringlist + * containing all user defined variables in these DocumentItems. + * A user defined variable is something like [$MyVar1]. Variable + * names are case insensitive. + */ + QStringList listUserVars(); + + + inline void setUserVars( const QMap<QString,QString> & data ); + + private: + static void init(); + + const QString createSerial(); + + QString escapeText( const QString & t ); + QString unescapeText( const QString & t ); + + /** A helper function called from parse + * which returns the value for every known + * token @p text. + */ + QString process( const QString & text ); + + /** A helper function called from parse + * which returns the value for every known + * token @p t. + */ + QString processAddresses( const QString & t ); + + /** a helper function needed by listUserVars. + * which adds all user defined variables to + * m_findUserVars. + */ + QString processUserVars( const QString & t ); + + void findBrackets( QString & text, QString (TokenProvider::*parserfunction)( const QString & ) ); + + /** + * run a SQL Query and return it result + * @param query QString the SQL command to execute + */ + QString query( const QString & query ); + + unsigned int m_index; + unsigned int m_page; + unsigned int m_increment; + + DocumentItemList m_document_items; + + QMap<QString,QString> m_uservardata; + + QString article_no; + QString barcode_no; + QString customer_no; + QString encoding_type_name; + QString group; + QString label_name; + QString m_serial; + unsigned int row; + unsigned int col; + + bool m_update; + bool m_contains_update; + QPaintDevice* m_printer; + QRegExp date_reg_exp ; + + KABC::Addressee* m_address; + + QStringList* m_findUserVarsList; + static QValueList<tCategories> s_categories; + static QMap<ECategories, QString> s_captions; + +#ifdef NO_KJS_EMBED + static KJS::Interpreter* s_interpreter; +#else + static KJSEmbed::KJSEmbedPart* s_interpreter; +#endif // NO_KJS_EMBED +}; + +inline void TokenProvider::setCurrentDocumentItems( const DocumentItemList & list ) +{ + m_document_items = list; +} + +inline void TokenProvider::setUserVars( const QMap<QString,QString> & data ) +{ + m_uservardata = data; +} + +#endif |