00001 #include "birthday.h"
00002
00003 #include <opie2/ocontactaccess.h>
00004 #include <qpe/event.h>
00005
00006 #include <qobject.h>
00007
00008 Birthday::Birthday()
00009 :Opie::Datebook::HolidayPlugin()
00010 {
00011 m_contactdb = new Opie::OPimContactAccess("addressplugin");
00012
00013
00014
00015
00016 }
00017
00018 QString Birthday::description()
00019 {
00020 return QObject::tr("Birthdays","holidays");
00021 }
00022
00023 QStringList Birthday::entries(const QDate&aDate)
00024 {
00025 QStringList ret;
00026 if ( m_contactdb->hasQuerySettings( Opie::OPimContactAccess::DateDay ) ){
00027 Opie::OPimContact querybirthdays,queryanniversary;
00028 QString pre;
00029 querybirthdays.setBirthday(aDate);
00030 queryanniversary.setAnniversary(aDate);
00031 m_list = m_contactdb->queryByExample( querybirthdays,Opie::OPimContactAccess::DateDay| Opie::OPimContactAccess::DateMonth);
00032 if ( m_list.count() > 0 ){
00033 pre = QObject::tr("Birthday","holidays")+" ";
00034 int z = 0;
00035 for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) {
00036 if (z) {
00037 pre+=", ";
00038 }
00039 pre+=((*m_it).fullName());
00040 ++z;
00041 }
00042 ret.append(pre);
00043 }
00044 m_list = m_contactdb->queryByExample( queryanniversary,Opie::OPimContactAccess::DateDay| Opie::OPimContactAccess::DateMonth);
00045 if ( m_list.count() > 0 ){
00046 pre = QObject::tr("Anniversary","holidays")+" ";
00047 int z = 0;
00048 for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) {
00049 if (z) {
00050 pre+=", ";
00051 }
00052 pre+=((*m_it).fullName());
00053 ++z;
00054 }
00055 ret.append(pre);
00056 }
00057 }
00058 return ret;
00059 }
00060
00061 QStringList Birthday::entries(unsigned year, unsigned month, unsigned day)
00062 {
00063 return entries(QDate(year,month,day));
00064 }
00065
00066 QMap<QDate,QString> Birthday::_entries(const QDate&start,const QDate&end,bool anniversary)
00067 {
00068 QMap<QDate,QString> ret;
00069 QDate s = (start<end?start:end);
00070 QDate e = (start<end?end:start);
00071
00072 int daysto = start.daysTo(end);
00073 if (daysto < 0) {
00074 daysto = end.daysTo(start);
00075 }
00076 if ( m_contactdb->hasQuerySettings(Opie::OPimContactAccess::DateDiff ) ){
00077 Opie::OPimContact querybirthdays;
00078 QString pre;
00079 if (anniversary) {
00080 querybirthdays.setAnniversary(e);
00081 } else {
00082 querybirthdays.setBirthday(e);
00083 }
00084 QMap<QDate,QString> collector;
00085 QMap<QDate,QString>::ConstIterator sit;
00086 m_list = m_contactdb->queryByExample( querybirthdays,Opie::OPimContactAccess::DateDiff,s);
00087 QDate t;
00088 if ( m_list.count() > 0 ){
00089 if (anniversary) {
00090 pre = QObject::tr("Anniversary","holidays");
00091 } else {
00092 pre = QObject::tr("Birthday","holidays");
00093 }
00094 for ( m_it = m_list.begin(); m_it != m_list.end(); ++m_it ) {
00095 if (!anniversary) {
00096 t.setYMD(e.year(),(*m_it).birthday().month(),(*m_it).birthday().day());
00097 } else {
00098 t.setYMD(e.year(),(*m_it).anniversary().month(),(*m_it).anniversary().day());
00099 }
00100 if (ret[t].isEmpty()) {
00101 ret[t]=pre;
00102 }
00103 ret[t]+=" "+(*m_it).fullName();
00104 }
00105 }
00106 }
00107 return ret;
00108 }
00109
00110 QMap<QDate,QStringList> Birthday::entries(const QDate&start,const QDate&end)
00111 {
00112 QMap<QDate,QStringList> ret;
00113 QMap<QDate,QString> collector;
00114 QMap<QDate,QString>::ConstIterator sit;
00115
00116 collector = _entries(start,end,false);
00117 for (sit=collector.begin();sit!=collector.end();++sit) {
00118 ret[sit.key()].append(sit.data());
00119 }
00120 collector = _entries(start,end,true);
00121 for (sit=collector.begin();sit!=collector.end();++sit) {
00122 ret[sit.key()].append(sit.data());
00123 }
00124 return ret;
00125 }
00126
00127 QValueList<EffectiveEvent> Birthday::events(const QDate&start,const QDate&end)
00128 {
00129 QValueList<EffectiveEvent> ret;
00130 QMap<QDate,QString> collector;
00131 QMap<QDate,QString>::ConstIterator sit;
00132
00133 collector = _entries(start,end,false);
00134
00135 for (sit=collector.begin();sit!=collector.end();++sit) {
00136 Event ev;
00137 ev.setAllDay(true);
00138 ev.setStart(sit.key());
00139 ev.setEnd(sit.key());
00140 ev.setDescription(sit.data());
00141 odebug << sit.key() << oendl;
00142 ret.append(EffectiveEvent(ev,sit.key()));
00143 }
00144
00145 collector = _entries(start,end,true);
00146
00147 for (sit=collector.begin();sit!=collector.end();++sit) {
00148 Event ev;
00149 ev.setAllDay(true);
00150 ev.setStart(sit.key());
00151 ev.setEnd(sit.key());
00152 ev.setDescription(sit.data());
00153 odebug << sit.key() << oendl;
00154 ret.append(EffectiveEvent(ev,sit.key()));
00155 }
00156 return ret;
00157 }
00158
00159 EXPORT_HOLIDAY_PLUGIN(Birthday);