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.cpp | 50 |
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 | ||
5 | QString ChrisHoliday::description() | 6 | QString ChrisHoliday::description() |
6 | { | 7 | { |
7 | return QObject::tr("Christian holidays","holidays"); | 8 | return QObject::tr("Christian holidays","holidays"); |
8 | } | 9 | } |
9 | 10 | ||
10 | QStringList ChrisHoliday::entries(const QDate&aDate) | 11 | QStringList 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 | ||
23 | QStringList ChrisHoliday::entries(unsigned year, unsigned month, unsigned day) | 24 | QStringList 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 | ||
90 | QMap<QDate,QStringList> ChrisHoliday::entries(const QDate&,const QDate&) | 91 | QMap<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 | |||
117 | QValueList<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 | ||
96 | EXPORT_HOLIDAY_PLUGIN(ChrisHoliday); | 144 | EXPORT_HOLIDAY_PLUGIN(ChrisHoliday); |