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.cpp | 123 |
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 | |||
11 | NationalHoliday::NationalHoliday() | ||
12 | :Opie::Datebook::HolidayPlugin() | ||
13 | { | ||
14 | _lastyear=0; | ||
15 | init_done = false; | ||
16 | init(); | ||
17 | } | ||
18 | |||
19 | QString NationalHoliday::description() | ||
20 | { | ||
21 | return QObject::tr("National holidays","holidays"); | ||
22 | } | ||
23 | |||
24 | void NationalHoliday::init() | ||
25 | { | ||
26 | Config cfg("nationaldays"); | ||
27 | cfg.setGroup("entries"); | ||
28 | files = cfg.readListEntry("files"); | ||
29 | odebug << "Read " << files << oendl; | ||
30 | } | ||
31 | |||
32 | void 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 | |||
50 | QStringList 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 | |||
64 | QStringList NationalHoliday::entries(unsigned year, unsigned month, unsigned day) | ||
65 | { | ||
66 | return entries(QDate(0,month,day)); | ||
67 | } | ||
68 | |||
69 | QMap<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 | |||
96 | QValueList<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 | |||
123 | EXPORT_HOLIDAY_PLUGIN(NationalHoliday); | ||