From d119025a69177c373d75d3fe5936e2319bb4455b Mon Sep 17 00:00:00 2001 From: alwin Date: Wed, 16 Mar 2005 15:04:15 +0000 Subject: added (base) christian holidays --- (limited to 'core/pim/datebook') 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 + +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 +#include + +#include + +class ChrisHoliday:public Opie::Datebook::HolidayPlugin +{ +typedef QMap 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 + +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 +#include + +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 -- cgit v0.9.0.2