summaryrefslogtreecommitdiff
path: root/core/pim/datebook/holiday/national/nationalholiday.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/holiday/national/nationalholiday.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/holiday/national/nationalholiday.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/core/pim/datebook/holiday/national/nationalholiday.cpp b/core/pim/datebook/holiday/national/nationalholiday.cpp
new file mode 100644
index 0000000..26cd913
--- a/dev/null
+++ b/core/pim/datebook/holiday/national/nationalholiday.cpp
@@ -0,0 +1,123 @@
1#include "nationalholiday.h"
2#include "nationalcfg.h"
3
4#include <opie2/odebug.h>
5
6#include <qobject.h>
7#include <qpe/event.h>
8#include <qpe/config.h>
9#include <qpe/qpeapplication.h>
10
11NationalHoliday::NationalHoliday()
12 :Opie::Datebook::HolidayPlugin()
13{
14 _lastyear=0;
15 init_done = false;
16 init();
17}
18
19QString NationalHoliday::description()
20{
21 return QObject::tr("National holidays","holidays");
22}
23
24void NationalHoliday::init()
25{
26 Config cfg("nationaldays");
27 cfg.setGroup("entries");
28 files = cfg.readListEntry("files");
29 odebug << "Read " << files << oendl;
30}
31
32void NationalHoliday::load_days()
33{
34 if (init_done) return;
35 QStringList::ConstIterator it;
36 NHcfg readit;
37 for (it=files.begin();it!=files.end();++it) {
38 odebug << QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it) << oendl;
39 if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it)))
40 continue;
41 tholidaylist::ConstIterator it;
42 for (it=readit.days().begin();it!=readit.days().end();++it) {
43 _days[it.key()]+=(it.data());
44 }
45
46 }
47 init_done = true;
48}
49
50QStringList NationalHoliday::entries(const QDate&aDate)
51{
52 load_days();
53 QStringList ret;
54 QDate d(0,aDate.month(),aDate.day());
55
56 tholidaylist::Iterator it = _days.find(d);
57 if (it!=_days.end()) {
58 ret+=*it;
59 }
60
61 return ret;
62}
63
64QStringList NationalHoliday::entries(unsigned year, unsigned month, unsigned day)
65{
66 return entries(QDate(0,month,day));
67}
68
69QMap<QDate,QStringList> NationalHoliday::entries(const QDate&start,const QDate&end)
70{
71 load_days();
72 QMap<QDate,QStringList> ret;
73 if (start==end) {
74 ret[start]=entries(start);
75 return ret;
76 }
77 QDate d;
78 int daysto;
79 if (end < start) {
80 d = end;
81 daysto = end.daysTo(start);
82 } else {
83 d = start;
84 daysto = start.daysTo(end);
85 }
86 QStringList temp;
87 for (int i=0;i<=daysto;++i) {
88 temp = entries(d.addDays(i));
89 if (temp.count()==0) continue;
90 ret[d.addDays(i)]+=temp;
91 temp.clear();
92 }
93 return ret;
94}
95
96QValueList<EffectiveEvent> NationalHoliday::events(const QDate&start,const QDate&end)
97{
98 QValueList<EffectiveEvent> ret;
99 QDate d = (start<end?start:end);
100 int daysto = start.daysTo(end);
101 if (daysto < 0) {
102 daysto = end.daysTo(start);
103 }
104
105 QStringList temp;
106 for (int i =0; i<=daysto;++i) {
107 temp = entries(d.addDays(i));
108 if (temp.count()==0) {
109 continue;
110 }
111 for (unsigned j=0;j<temp.count();++j) {
112 Event ev;
113 ev.setDescription(temp[j]);
114 ev.setStart(d.addDays(i));
115 ev.setAllDay(true);
116 ret.append(EffectiveEvent(ev,d.addDays(i)));
117 }
118 }
119
120 return ret;
121}
122
123EXPORT_HOLIDAY_PLUGIN(NationalHoliday);