summaryrefslogtreecommitdiff
path: root/core/pim/datebook/holiday/national/nationalholiday.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/holiday/national/nationalholiday.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/holiday/national/nationalholiday.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/core/pim/datebook/holiday/national/nationalholiday.cpp b/core/pim/datebook/holiday/national/nationalholiday.cpp
index 26cd913..52f3489 100644
--- a/core/pim/datebook/holiday/national/nationalholiday.cpp
+++ b/core/pim/datebook/holiday/national/nationalholiday.cpp
@@ -1,123 +1,130 @@
1#include "nationalholiday.h" 1#include "nationalholiday.h"
2#include "nationalcfg.h" 2#include "nationalcfg.h"
3#include "nationalcfgwidget.h"
3 4
4#include <opie2/odebug.h> 5#include <opie2/odebug.h>
5 6
6#include <qobject.h> 7#include <qobject.h>
7#include <qpe/event.h> 8#include <qpe/event.h>
8#include <qpe/config.h> 9#include <qpe/config.h>
9#include <qpe/qpeapplication.h> 10#include <qpe/qpeapplication.h>
10 11
11NationalHoliday::NationalHoliday() 12NationalHoliday::NationalHoliday()
12 :Opie::Datebook::HolidayPlugin() 13 :Opie::Datebook::HolidayPlugin()
13{ 14{
14 _lastyear=0; 15 _lastyear=0;
15 init_done = false; 16 init_done = false;
16 init(); 17 init();
17} 18}
18 19
19QString NationalHoliday::description() 20QString NationalHoliday::description()
20{ 21{
21 return QObject::tr("National holidays","holidays"); 22 return QObject::tr("National holidays","holidays");
22} 23}
23 24
24void NationalHoliday::init() 25void NationalHoliday::init()
25{ 26{
26 Config cfg("nationaldays"); 27 Config cfg("nationaldays");
27 cfg.setGroup("entries"); 28 cfg.setGroup("entries");
28 files = cfg.readListEntry("files"); 29 files = cfg.readListEntry("files");
29 odebug << "Read " << files << oendl;
30} 30}
31 31
32void NationalHoliday::load_days() 32void NationalHoliday::load_days()
33{ 33{
34 if (init_done) return; 34 if (init_done) return;
35 Config cfg("nationaldays");
36 cfg.setGroup("entries");
35 QStringList::ConstIterator it; 37 QStringList::ConstIterator it;
36 NHcfg readit; 38 NHcfg readit;
37 for (it=files.begin();it!=files.end();++it) { 39 for (it=files.begin();it!=files.end();++it) {
38 odebug << QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it) << oendl; 40 if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it))) {
39 if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it)))
40 continue; 41 continue;
42 }
41 tholidaylist::ConstIterator it; 43 tholidaylist::ConstIterator it;
42 for (it=readit.days().begin();it!=readit.days().end();++it) { 44 for (it=readit.days().begin();it!=readit.days().end();++it) {
43 _days[it.key()]+=(it.data()); 45 _days[it.key()]+=(it.data());
44 } 46 }
45 47
46 } 48 }
47 init_done = true; 49 init_done = true;
48} 50}
49 51
50QStringList NationalHoliday::entries(const QDate&aDate) 52QStringList NationalHoliday::entries(const QDate&aDate)
51{ 53{
52 load_days(); 54 load_days();
53 QStringList ret; 55 QStringList ret;
54 QDate d(0,aDate.month(),aDate.day()); 56 QDate d(0,aDate.month(),aDate.day());
55 57
56 tholidaylist::Iterator it = _days.find(d); 58 tholidaylist::Iterator it = _days.find(d);
57 if (it!=_days.end()) { 59 if (it!=_days.end()) {
58 ret+=*it; 60 ret+=*it;
59 } 61 }
60 62
61 return ret; 63 return ret;
62} 64}
63 65
64QStringList NationalHoliday::entries(unsigned year, unsigned month, unsigned day) 66QStringList NationalHoliday::entries(unsigned year, unsigned month, unsigned day)
65{ 67{
66 return entries(QDate(0,month,day)); 68 return entries(QDate(0,month,day));
67} 69}
68 70
69QMap<QDate,QStringList> NationalHoliday::entries(const QDate&start,const QDate&end) 71QMap<QDate,QStringList> NationalHoliday::entries(const QDate&start,const QDate&end)
70{ 72{
71 load_days(); 73 load_days();
72 QMap<QDate,QStringList> ret; 74 QMap<QDate,QStringList> ret;
73 if (start==end) { 75 if (start==end) {
74 ret[start]=entries(start); 76 ret[start]=entries(start);
75 return ret; 77 return ret;
76 } 78 }
77 QDate d; 79 QDate d;
78 int daysto; 80 int daysto;
79 if (end < start) { 81 if (end < start) {
80 d = end; 82 d = end;
81 daysto = end.daysTo(start); 83 daysto = end.daysTo(start);
82 } else { 84 } else {
83 d = start; 85 d = start;
84 daysto = start.daysTo(end); 86 daysto = start.daysTo(end);
85 } 87 }
86 QStringList temp; 88 QStringList temp;
87 for (int i=0;i<=daysto;++i) { 89 for (int i=0;i<=daysto;++i) {
88 temp = entries(d.addDays(i)); 90 temp = entries(d.addDays(i));
89 if (temp.count()==0) continue; 91 if (temp.count()==0) continue;
90 ret[d.addDays(i)]+=temp; 92 ret[d.addDays(i)]+=temp;
91 temp.clear(); 93 temp.clear();
92 } 94 }
93 return ret; 95 return ret;
94} 96}
95 97
96QValueList<EffectiveEvent> NationalHoliday::events(const QDate&start,const QDate&end) 98QValueList<EffectiveEvent> NationalHoliday::events(const QDate&start,const QDate&end)
97{ 99{
98 QValueList<EffectiveEvent> ret; 100 QValueList<EffectiveEvent> ret;
99 QDate d = (start<end?start:end); 101 QDate d = (start<end?start:end);
100 int daysto = start.daysTo(end); 102 int daysto = start.daysTo(end);
101 if (daysto < 0) { 103 if (daysto < 0) {
102 daysto = end.daysTo(start); 104 daysto = end.daysTo(start);
103 } 105 }
104 106
105 QStringList temp; 107 QStringList temp;
106 for (int i =0; i<=daysto;++i) { 108 for (int i =0; i<=daysto;++i) {
107 temp = entries(d.addDays(i)); 109 temp = entries(d.addDays(i));
108 if (temp.count()==0) { 110 if (temp.count()==0) {
109 continue; 111 continue;
110 } 112 }
111 for (unsigned j=0;j<temp.count();++j) { 113 for (unsigned j=0;j<temp.count();++j) {
112 Event ev; 114 Event ev;
113 ev.setDescription(temp[j]); 115 ev.setDescription(temp[j]);
114 ev.setStart(d.addDays(i)); 116 ev.setStart(d.addDays(i));
115 ev.setAllDay(true); 117 ev.setAllDay(true);
116 ret.append(EffectiveEvent(ev,d.addDays(i))); 118 ret.append(EffectiveEvent(ev,d.addDays(i)));
117 } 119 }
118 } 120 }
119 121
120 return ret; 122 return ret;
121} 123}
122 124
125Opie::Datebook::HolidayPluginConfigWidget*NationalHoliday::configWidget(QWidget *parent, const char *name, QWidget::WFlags fl)
126{
127 return new NationalHolidayConfigWidget(parent,name,fl);
128}
129
123EXPORT_HOLIDAY_PLUGIN(NationalHoliday); 130EXPORT_HOLIDAY_PLUGIN(NationalHoliday);