summaryrefslogtreecommitdiff
path: root/core/pim/datebook/holiday/christian/chrisholiday.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/holiday/christian/chrisholiday.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/holiday/christian/chrisholiday.cpp50
1 files changed, 49 insertions, 1 deletions
diff --git a/core/pim/datebook/holiday/christian/chrisholiday.cpp b/core/pim/datebook/holiday/christian/chrisholiday.cpp
index ef6516e..f8e310f 100644
--- a/core/pim/datebook/holiday/christian/chrisholiday.cpp
+++ b/core/pim/datebook/holiday/christian/chrisholiday.cpp
@@ -1,27 +1,28 @@
1#include "chrisholiday.h" 1#include "chrisholiday.h"
2 2
3#include <qobject.h> 3#include <qobject.h>
4#include <qpe/event.h>
4 5
5QString ChrisHoliday::description() 6QString ChrisHoliday::description()
6{ 7{
7 return QObject::tr("Christian holidays","holidays"); 8 return QObject::tr("Christian holidays","holidays");
8} 9}
9 10
10QStringList ChrisHoliday::entries(const QDate&aDate) 11QStringList ChrisHoliday::entries(const QDate&aDate)
11{ 12{
12 QStringList ret; 13 QStringList ret;
13 ret+=_internallist.entries(aDate); 14 ret+=_internallist.entries(aDate);
14 calcit(aDate.year()); 15 calcit(aDate.year());
15 tDayMap::Iterator it = _days.find(aDate); 16 tDayMap::Iterator it = _days.find(aDate);
16 if (it!=_days.end()) { 17 if (it!=_days.end()) {
17 ret+=*it; 18 ret+=*it;
18 } 19 }
19 20
20 return ret; 21 return ret;
21} 22}
22 23
23QStringList ChrisHoliday::entries(unsigned year, unsigned month, unsigned day) 24QStringList ChrisHoliday::entries(unsigned year, unsigned month, unsigned day)
24{ 25{
25 return entries(QDate(year,month,day)); 26 return entries(QDate(year,month,day));
26} 27}
27 28
@@ -66,31 +67,78 @@ void ChrisHoliday::calc_easter()
66 unsigned long k = j%100; 67 unsigned long k = j%100;
67 unsigned long l = (32+2*e+2*i-h-k)%7; 68 unsigned long l = (32+2*e+2*i-h-k)%7;
68 unsigned long m = (a+11*h+22*l)/451; 69 unsigned long m = (a+11*h+22*l)/451;
69 n = (h+l-7*m+114)/31; 70 n = (h+l-7*m+114)/31;
70 p = (h+l-7*m+114)%31; 71 p = (h+l-7*m+114)%31;
71 } else { 72 } else {
72 unsigned long a = _lastyear%4; 73 unsigned long a = _lastyear%4;
73 unsigned long b = _lastyear%7; 74 unsigned long b = _lastyear%7;
74 unsigned long c = _lastyear%19; 75 unsigned long c = _lastyear%19;
75 unsigned long d = (19*c+15)%30; 76 unsigned long d = (19*c+15)%30;
76 unsigned long e = (2*a+4*b-d+34)%7; 77 unsigned long e = (2*a+4*b-d+34)%7;
77 n = (d+e+114)/31; 78 n = (d+e+114)/31;
78 p = (d+e+114)%31; 79 p = (d+e+114)%31;
79 } 80 }
80 p++; 81 p++;
81 QDate d(_lastyear,n,p); 82 QDate d(_lastyear,n,p);
82 _days[d].append(QObject::tr("Eastersunday","holidays")); 83 _days[d].append(QObject::tr("Eastersunday","holidays"));
83 _days[d.addDays(49)].append(QObject::tr("Whitsunday","holidays")); 84 _days[d.addDays(49)].append(QObject::tr("Whitsunday","holidays"));
84 _days[d.addDays(50)].append(QObject::tr("Whitmonday","holidays")); 85 _days[d.addDays(50)].append(QObject::tr("Whitmonday","holidays"));
85 _days[d.addDays(39)].append(QObject::tr("Ascension Day","holidays")); 86 _days[d.addDays(39)].append(QObject::tr("Ascension Day","holidays"));
86 _days[d.addDays(-46)].append(QObject::tr("Ash Wednesday","holidays")); 87 _days[d.addDays(-46)].append(QObject::tr("Ash Wednesday","holidays"));
87 _days[d.addDays(60)].append(QObject::tr("Corpus Christi","holidays")); 88 _days[d.addDays(60)].append(QObject::tr("Corpus Christi","holidays"));
88} 89}
89 90
90QMap<QDate,QStringList> ChrisHoliday::entries(const QDate&,const QDate&) 91QMap<QDate,QStringList> ChrisHoliday::entries(const QDate&start,const QDate&end)
91{ 92{
92 QMap<QDate,QStringList> ret; 93 QMap<QDate,QStringList> ret;
94 if (start==end) {
95 ret[start]=entries(start);
96 return ret;
97 }
98 QDate d;
99 int daysto;
100 if (end < start) {
101 d = end;
102 daysto = end.daysTo(start);
103 } else {
104 d = start;
105 daysto = start.daysTo(end);
106 }
107 QStringList temp;
108 for (int i=0;i<daysto;++i) {
109 temp = entries(d.addDays(i));
110 if (temp.count()==0) continue;
111 ret[d.addDays(i)]+=temp;
112 temp.clear();
113 }
114 return ret;
115}
116
117QValueList<EffectiveEvent> ChrisHoliday::events(const QDate&start,const QDate&end)
118{
119 QValueList<EffectiveEvent> ret;
120 QDate d = (start<end?start:end);
121 int daysto = start.daysTo(end);
122 if (daysto < 0) {
123 daysto = end.daysTo(start);
124 }
125
126 QStringList temp;
127 for (int i =0; i<daysto;++i) {
128 temp = entries(d.addDays(i));
129 if (temp.count()==0) {
130 continue;
131 }
132 for (unsigned j=0;j<temp.count();++j) {
133 Event ev;
134 ev.setDescription(temp[j]);
135 ev.setStart(d.addDays(i));
136 ev.setAllDay(true);
137 ret.append(EffectiveEvent(ev,d.addDays(i)));
138 }
139 }
140
93 return ret; 141 return ret;
94} 142}
95 143
96EXPORT_HOLIDAY_PLUGIN(ChrisHoliday); 144EXPORT_HOLIDAY_PLUGIN(ChrisHoliday);