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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#include "nationalholiday.h"
#include "nationalcfg.h"
#include <opie2/odebug.h>
#include <qobject.h>
#include <qpe/event.h>
#include <qpe/config.h>
#include <qpe/qpeapplication.h>
NationalHoliday::NationalHoliday()
:Opie::Datebook::HolidayPlugin()
{
_lastyear=0;
init_done = false;
init();
}
QString NationalHoliday::description()
{
return QObject::tr("National holidays","holidays");
}
void NationalHoliday::init()
{
Config cfg("nationaldays");
cfg.setGroup("entries");
files = cfg.readListEntry("files");
odebug << "Read " << files << oendl;
}
void NationalHoliday::load_days()
{
if (init_done) return;
QStringList::ConstIterator it;
NHcfg readit;
for (it=files.begin();it!=files.end();++it) {
odebug << QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it) << oendl;
if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it)))
continue;
tholidaylist::ConstIterator it;
for (it=readit.days().begin();it!=readit.days().end();++it) {
_days[it.key()]+=(it.data());
}
}
init_done = true;
}
QStringList NationalHoliday::entries(const QDate&aDate)
{
load_days();
QStringList ret;
QDate d(0,aDate.month(),aDate.day());
tholidaylist::Iterator it = _days.find(d);
if (it!=_days.end()) {
ret+=*it;
}
return ret;
}
QStringList NationalHoliday::entries(unsigned year, unsigned month, unsigned day)
{
return entries(QDate(0,month,day));
}
QMap<QDate,QStringList> NationalHoliday::entries(const QDate&start,const QDate&end)
{
load_days();
QMap<QDate,QStringList> ret;
if (start==end) {
ret[start]=entries(start);
return ret;
}
QDate d;
int daysto;
if (end < start) {
d = end;
daysto = end.daysTo(start);
} else {
d = start;
daysto = start.daysTo(end);
}
QStringList temp;
for (int i=0;i<=daysto;++i) {
temp = entries(d.addDays(i));
if (temp.count()==0) continue;
ret[d.addDays(i)]+=temp;
temp.clear();
}
return ret;
}
QValueList<EffectiveEvent> NationalHoliday::events(const QDate&start,const QDate&end)
{
QValueList<EffectiveEvent> ret;
QDate d = (start<end?start:end);
int daysto = start.daysTo(end);
if (daysto < 0) {
daysto = end.daysTo(start);
}
QStringList temp;
for (int i =0; i<=daysto;++i) {
temp = entries(d.addDays(i));
if (temp.count()==0) {
continue;
}
for (unsigned j=0;j<temp.count();++j) {
Event ev;
ev.setDescription(temp[j]);
ev.setStart(d.addDays(i));
ev.setAllDay(true);
ret.append(EffectiveEvent(ev,d.addDays(i)));
}
}
return ret;
}
EXPORT_HOLIDAY_PLUGIN(NationalHoliday);
|