Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

birthday.cpp

Go to the documentation of this file.
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     connect( m_contactdb, SIGNAL( signalChanged(const Opie::OPimContactAccess*) ),
00014          this, SLOT( refresh(const Opie::OPimContactAccess*) ) );
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);

Generated on Sat Nov 5 16:15:48 2005 for OPIE by  doxygen 1.4.2