summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/holiday/christian/chrisholiday.cpp87
-rw-r--r--core/pim/datebook/holiday/christian/chrisholiday.h33
-rw-r--r--core/pim/datebook/holiday/christian/christian-holidays.pro20
-rw-r--r--core/pim/datebook/holiday/christian/config.in4
-rw-r--r--core/pim/datebook/holiday/christian/hlist.cpp18
-rw-r--r--core/pim/datebook/holiday/christian/hlist.h16
-rw-r--r--core/pim/datebook/holiday/dummy/config.in6
-rw-r--r--packages1
8 files changed, 181 insertions, 4 deletions
diff --git a/core/pim/datebook/holiday/christian/chrisholiday.cpp b/core/pim/datebook/holiday/christian/chrisholiday.cpp
new file mode 100644
index 0000000..6ef102a
--- a/dev/null
+++ b/core/pim/datebook/holiday/christian/chrisholiday.cpp
@@ -0,0 +1,87 @@
+#include "chrisholiday.h"
+
+#include <qobject.h>
+
+QString ChrisHoliday::description()
+{
+ return QObject::tr("Christian holidays","holidays");
+}
+
+QStringList ChrisHoliday::entries(const QDate&aDate)
+{
+ QStringList ret;
+ ret+=_internallist.entries(aDate);
+ calcit(aDate.year());
+ tDayMap::Iterator it = _days.find(aDate);
+ if (it!=_days.end()) {
+ ret+=*it;
+ }
+
+ return ret;
+}
+
+QStringList ChrisHoliday::entries(unsigned year, unsigned month, unsigned day)
+{
+ return entries(QDate(year,month,day));
+}
+
+void ChrisHoliday::calcit(int year)
+{
+ if (year==_lastyear) return;
+ _lastyear = year;
+ _days.clear();
+ calc_easter();
+ calc_christmas();
+}
+
+void ChrisHoliday::calc_christmas()
+{
+ QDate cday(_lastyear,12,24);
+ int diff;
+ if ( (diff=cday.dayOfWeek())!=7) {
+ cday=cday.addDays(-diff);
+ _days[cday].append(QObject::tr("4. Advent","holidays"));
+ }
+ _days[cday.addDays(-7)].append(QObject::tr("3. Advent","holidays"));
+ _days[cday.addDays(-14)].append(QObject::tr("2. Advent","holidays"));
+ _days[cday.addDays(-21)].append(QObject::tr("1. Advent","holidays"));
+}
+
+void ChrisHoliday::calc_easter()
+{
+ unsigned long n = 0;
+ unsigned long p = 0;
+
+ if ( _lastyear > 1582 ) {
+ unsigned long a = _lastyear%19;
+ unsigned long b = _lastyear/100;
+ unsigned long c = _lastyear%100;
+ unsigned long d = b/4;
+ unsigned long e = b%4;
+ unsigned long f = (b+8)/25;
+ unsigned long g = (b+f+1)/3;
+ unsigned long h = (19*a+b-d-g+15)%30;
+ unsigned long i = c/4;
+ unsigned long j = c%4;
+ unsigned long k = j%100;
+ unsigned long l = (32+2*e+2*i-h-k)%7;
+ unsigned long m = (a+11*h+22*l)/451;
+ n = (h+l-7*m+114)/31;
+ p = (h+l-7*m+114)%31;
+ } else {
+ unsigned long a = _lastyear%4;
+ unsigned long b = _lastyear%7;
+ unsigned long c = _lastyear%19;
+ unsigned long d = (19*c+15)%30;
+ unsigned long e = (2*a+4*b-d+34)%7;
+ n = (d+e+114)/31;
+ p = (d+e+114)%31;
+ }
+ p++;
+ QDate d(_lastyear,n,p);
+ _days[d].append(QObject::tr("Eastersunday","holidays"));
+ _days[d.addDays(49)].append(QObject::tr("Whitsunday","holidays"));
+ _days[d.addDays(50)].append(QObject::tr("Whitmonday","holidays"));
+ _days[d.addDays(-46)].append(QObject::tr("Ash Wednesday","holidays"));
+ _days[d.addDays(60)].append(QObject::tr("Corpus Christi","holidays"));
+}
diff --git a/core/pim/datebook/holiday/christian/chrisholiday.h b/core/pim/datebook/holiday/christian/chrisholiday.h
new file mode 100644
index 0000000..5f43e85
--- a/dev/null
+++ b/core/pim/datebook/holiday/christian/chrisholiday.h
@@ -0,0 +1,33 @@
+#ifndef __DUMMY_HOLIDAY_H
+#define __DUMMY_HOLIDAY_H
+
+#include "hlist.h"
+
+#include <opie2/oholidayplugin.h>
+#include <opie2/oholidaypluginif.h>
+
+#include <qmap.h>
+
+class ChrisHoliday:public Opie::Datebook::HolidayPlugin
+{
+typedef QMap<QDate,QStringList> tDayMap;
+
+public:
+ ChrisHoliday():Opie::Datebook::HolidayPlugin(){_lastyear=0;}
+ virtual ~ChrisHoliday(){}
+
+ virtual QString description();
+ virtual QStringList entries(const QDate&);
+ virtual QStringList entries(unsigned year, unsigned month, unsigned day);
+protected:
+ HList _internallist;
+ unsigned int _lastyear;
+ tDayMap _days;
+
+ void calcit(int year);
+ void calc_easter();
+ void calc_christmas();
+};
+
+EXPORT_HOLIDAY_PLUGIN(ChrisHoliday);
+#endif
diff --git a/core/pim/datebook/holiday/christian/christian-holidays.pro b/core/pim/datebook/holiday/christian/christian-holidays.pro
new file mode 100644
index 0000000..1dfa8ab
--- a/dev/null
+++ b/core/pim/datebook/holiday/christian/christian-holidays.pro
@@ -0,0 +1,20 @@
+TEMPLATE = lib
+CONFIG -= moc
+CONFIG += qt plugin
+
+# Input
+HEADERS = chrisholiday.h hlist.h
+SOURCES = chrisholiday.cpp hlist.cpp
+INTERFACES=
+
+INCLUDEPATH += $(OPIEDIR)/include \
+ ../ ../library
+DEPENDPATH += $(OPIEDIR)/include \
+ ../ ../library
+
+LIBS+= -lqpe -lopiecore2 -lopieui2
+
+DESTDIR = $(OPIEDIR)/plugins/datebook/holiday
+TARGET = chrisholidayplugin
+
+include( $(OPIEDIR)/include.pro )
diff --git a/core/pim/datebook/holiday/christian/config.in b/core/pim/datebook/holiday/christian/config.in
new file mode 100644
index 0000000..fc26330
--- a/dev/null
+++ b/core/pim/datebook/holiday/christian/config.in
@@ -0,0 +1,4 @@
+ config DATEBOOK_CHRISTIAN_HOLIDAY
+ boolean "opie-datebook-christian-holidays"
+ default "y"
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI && LIBOPIE2PIM
diff --git a/core/pim/datebook/holiday/christian/hlist.cpp b/core/pim/datebook/holiday/christian/hlist.cpp
new file mode 100644
index 0000000..795b075
--- a/dev/null
+++ b/core/pim/datebook/holiday/christian/hlist.cpp
@@ -0,0 +1,18 @@
+#include "hlist.h"
+
+#include <qobject.h>
+
+const QStringList HList::entries(const QDate&aDate)const
+{
+ QStringList ret;
+ if (aDate.month()==12) {
+ if (aDate.day()==24) {
+ ret.append(QObject::tr("Christmas","holidays"));
+ }
+ } else if (aDate.month()==1) {
+ if (aDate.day()==1) {
+ ret.append(QObject::tr("New year","holidays"));
+ }
+ }
+ return ret;
+}
diff --git a/core/pim/datebook/holiday/christian/hlist.h b/core/pim/datebook/holiday/christian/hlist.h
new file mode 100644
index 0000000..5904852
--- a/dev/null
+++ b/core/pim/datebook/holiday/christian/hlist.h
@@ -0,0 +1,16 @@
+#ifndef _HLIST_H
+#define _HLIST_H
+
+#include <qstringlist.h>
+#include <qdatetime.h>
+
+class HList
+{
+public:
+ HList(){};
+ virtual ~HList(){};
+
+ const QStringList entries(const QDate&)const;
+};
+
+#endif
diff --git a/core/pim/datebook/holiday/dummy/config.in b/core/pim/datebook/holiday/dummy/config.in
index 373ff4a..ec85aa0 100644
--- a/core/pim/datebook/holiday/dummy/config.in
+++ b/core/pim/datebook/holiday/dummy/config.in
@@ -1,6 +1,4 @@
config DATEBOOK_DUMMY_HOLIDAY
- boolean "opie-datebook-dummyholidayplugin"
+ boolean "opie-datebook-dummy-holidays"
default "n"
- comment "opie-datebook-dummyholidayplugin requires libopie2core, libopie2pim"
- depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2PIM
-
+ depends ( LIBQPE || LIBQPE-X11 ) && LIBOPIE2CORE && LIBOPIE2UI && LIBOPIE2PIM
diff --git a/packages b/packages
index c582693..228bdb8 100644
--- a/packages
+++ b/packages
@@ -34,2 +34,3 @@ CONFIG_DATEBOOK2 core/pim/datebook2 datebook2.pro
CONFIG_DATEBOOK core/pim/datebook datebook.pro
+CONFIG_DATEBOOK_CHRISTIAN_HOLIDAY core/pim/datebook/holiday/christian christian-holidays.pro
CONFIG_DATEBOOK_DUMMY_HOLIDAY core/pim/datebook/holiday/dummy dummy.pro