summaryrefslogtreecommitdiff
path: root/core/pim/datebook/holiday/national/nationalcfg.h
blob: 28e1fdd0cdba88066aff1e042c49eee227e401ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#ifndef _NATIONAL_CFG_H
#define _NATIONAL_CFG_H

#include <qxml.h>
#include <qstringlist.h>
#include <qvaluelist.h>
#include <qmap.h>
#include <qdatetime.h>

typedef QMap<QDate,QStringList> tholidaylist;

class NHentry
{
public:
    enum entry_type{fix,floating};
    NHentry();
    virtual ~NHentry();

    void setName(const QString&);
    const QString&name()const;
    void setType(entry_type);
    entry_type type()const;
    void setDate(const QDate&);
    const QDate&date()const;
    void setWeekday(const QString&);
    const QString&weekday()const;
    void setDayofmonth(const QString&);
    const QString&dayofmonth()const;
    void setDaydep(const QString&);
    const QString&daydep()const;
    void setMonth(const QString&);
    const QString&month()const;
    void setOffet(int);
    const int offset()const;

protected:
    entry_type m_Type;
    QString m_Name,m_Weekday,m_Dayofmonth,m_Depth,m_Month;
    QDate m_Date;
    int m_Offset;
};

typedef QValueList<NHentry> tentrylist;

class NHcfg:public QXmlDefaultHandler
{
public:
    NHcfg();
    virtual ~NHcfg();

    bool load(const QString&);
    const tentrylist&fixDates()const;
    const tentrylist&floatingDates()const;

    virtual bool warning(const QXmlParseException& e);
    virtual bool error(const QXmlParseException& e);
    virtual bool fatalError(const QXmlParseException& e);
    virtual bool startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr);
    virtual bool endElement(const QString&, const QString&,const QString& name);
    virtual QString errorString();

protected:
    QString err,_contentname;
    QString _path;

    NHentry m_currentEntry;

    bool setName(const QXmlAttributes&);
    bool parsevalue(const QString&,const QXmlAttributes&);
    bool parseCalc(const QString&,const QXmlAttributes&);
    int stage,counter,level;
    tentrylist currentFloatList,currentFixList;
};

#endif