00001 #ifndef _NATIONAL_CFG_H
00002 #define _NATIONAL_CFG_H
00003
00004 #include <qxml.h>
00005 #include <qstringlist.h>
00006 #include <qvaluelist.h>
00007 #include <qmap.h>
00008 #include <qdatetime.h>
00009
00010 typedef QMap<QDate,QStringList> tholidaylist;
00011
00012 class NHentry
00013 {
00014 public:
00015 enum entry_type{fix,floating};
00016 NHentry();
00017 virtual ~NHentry();
00018
00019 void setName(const QString&);
00020 const QString&name()const;
00021 void setType(entry_type);
00022 entry_type type()const;
00023 void setDate(const QDate&);
00024 const QDate&date()const;
00025 void setWeekday(const QString&);
00026 const QString&weekday()const;
00027 void setDayofmonth(const QString&);
00028 const QString&dayofmonth()const;
00029 void setDaydep(const QString&);
00030 const QString&daydep()const;
00031 void setMonth(const QString&);
00032 const QString&month()const;
00033 void setOffet(int);
00034 const int offset()const;
00035
00036 protected:
00037 entry_type m_Type;
00038 QString m_Name,m_Weekday,m_Dayofmonth,m_Depth,m_Month;
00039 QDate m_Date;
00040 int m_Offset;
00041 };
00042
00043 typedef QValueList<NHentry> tentrylist;
00044
00045 class NHcfg:public QXmlDefaultHandler
00046 {
00047 public:
00048 NHcfg();
00049 virtual ~NHcfg();
00050
00051 bool load(const QString&);
00052 const tentrylist&fixDates()const;
00053 const tentrylist&floatingDates()const;
00054
00055 virtual bool warning(const QXmlParseException& e);
00056 virtual bool error(const QXmlParseException& e);
00057 virtual bool fatalError(const QXmlParseException& e);
00058 virtual bool startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr);
00059 virtual bool endElement(const QString&, const QString&,const QString& name);
00060 virtual const QString&errorString()const;
00061
00062 protected:
00063 QString err,_contentname;
00064 QString _path;
00065
00066 NHentry m_currentEntry;
00067
00068 bool setName(const QXmlAttributes&);
00069 bool parsevalue(const QString&,const QXmlAttributes&);
00070 bool parseCalc(const QString&,const QXmlAttributes&);
00071 int stage,counter,level;
00072 tentrylist currentFloatList,currentFixList;
00073 };
00074
00075 #endif