summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-10 21:54:49 (UTC)
committer zautrix <zautrix>2004-10-10 21:54:49 (UTC)
commit640874bb21ea348edb33a54690ad225e0efdd1e4 (patch) (unidiff)
treea56ba08e3f091574af76bc0d37bb097eee686827
parent80ecf83fe91a61792576b5538891953cd19c4fec (diff)
downloadkdepimpi-640874bb21ea348edb33a54690ad225e0efdd1e4.zip
kdepimpi-640874bb21ea348edb33a54690ad225e0efdd1e4.tar.gz
kdepimpi-640874bb21ea348edb33a54690ad225e0efdd1e4.tar.bz2
added timer in WN view
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kowhatsnextview.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index 9b53110..0fea9be 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -1,326 +1,326 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qtextbrowser.h> 21#include <qtextbrowser.h>
22#include <qtextcodec.h> 22#include <qtextcodec.h>
23#include <qfileinfo.h> 23#include <qfileinfo.h>
24#include <qlabel.h> 24#include <qlabel.h>
25 25
26#include <qapplication.h> 26#include <qapplication.h>
27 27
28#include <kglobal.h> 28#include <kglobal.h>
29#include <klocale.h> 29#include <klocale.h>
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kiconloader.h> 31#include <kiconloader.h>
32#include <kmessagebox.h> 32#include <kmessagebox.h>
33 33
34#include <libkcal/calendar.h> 34#include <libkcal/calendar.h>
35 35
36#ifndef KORG_NOPRINTER 36#ifndef KORG_NOPRINTER
37#include "calprinter.h" 37#include "calprinter.h"
38#endif 38#endif
39#include "koglobals.h" 39#include "koglobals.h"
40#include "koprefs.h" 40#include "koprefs.h"
41#include "koeventviewerdialog.h" 41#include "koeventviewerdialog.h"
42 42
43#include "kowhatsnextview.h" 43#include "kowhatsnextview.h"
44using namespace KOrg; 44using namespace KOrg;
45 45
46void WhatsNextTextBrowser::setSource(const QString& n) 46void WhatsNextTextBrowser::setSource(const QString& n)
47{ 47{
48 48
49 if (n.startsWith("event:")) { 49 if (n.startsWith("event:")) {
50 emit showIncidence(n); 50 emit showIncidence(n);
51 return; 51 return;
52 } else if (n.startsWith("todo:")) { 52 } else if (n.startsWith("todo:")) {
53 emit showIncidence(n); 53 emit showIncidence(n);
54 return; 54 return;
55 } else { 55 } else {
56 QTextBrowser::setSource(n); 56 QTextBrowser::setSource(n);
57 } 57 }
58} 58}
59 59
60KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent, 60KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent,
61 const char *name) 61 const char *name)
62 : KOrg::BaseView(calendar, parent, name) 62 : KOrg::BaseView(calendar, parent, name)
63{ 63{
64 // mDateLabel = 64 // mDateLabel =
65 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this); 65 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this);
66 // mDateLabel->setMargin(2); 66 // mDateLabel->setMargin(2);
67 // mDateLabel->setAlignment(AlignCenter); 67 // mDateLabel->setAlignment(AlignCenter);
68 setFont( KOPrefs::instance()->mWhatsNextFont ); 68 setFont( KOPrefs::instance()->mWhatsNextFont );
69 mView = new WhatsNextTextBrowser(this); 69 mView = new WhatsNextTextBrowser(this);
70 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &))); 70 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &)));
71 71
72 mEventViewer = 0; 72 mEventViewer = 0;
73 73
74 QBoxLayout *topLayout = new QVBoxLayout(this); 74 QBoxLayout *topLayout = new QVBoxLayout(this);
75 // topLayout->addWidget(mDateLabel); 75 // topLayout->addWidget(mDateLabel);
76 topLayout->addWidget(mView); 76 topLayout->addWidget(mView);
77 mTimer = new QTimer( this ); 77 mTimer = new QTimer( this );
78 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView())); 78 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView()));
79 79
80 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 80 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
81 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 81 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
82} 82}
83 83
84KOWhatsNextView::~KOWhatsNextView() 84KOWhatsNextView::~KOWhatsNextView()
85{ 85{
86} 86}
87 87
88int KOWhatsNextView::maxDatesHint() 88int KOWhatsNextView::maxDatesHint()
89{ 89{
90 return 0; 90 return 0;
91} 91}
92 92
93int KOWhatsNextView::currentDateCount() 93int KOWhatsNextView::currentDateCount()
94{ 94{
95 return 0; 95 return 0;
96} 96}
97 97
98QPtrList<Incidence> KOWhatsNextView::selectedIncidences() 98QPtrList<Incidence> KOWhatsNextView::selectedIncidences()
99{ 99{
100 QPtrList<Incidence> eventList; 100 QPtrList<Incidence> eventList;
101 101
102 return eventList; 102 return eventList;
103} 103}
104 104
105 105
106void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd, 106void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd,
107 const QDate &td) 107 const QDate &td)
108{ 108{
109#ifndef KORG_NOPRINTER 109#ifndef KORG_NOPRINTER
110 calPrinter->preview(CalPrinter::Day, fd, td); 110 calPrinter->preview(CalPrinter::Day, fd, td);
111#endif 111#endif
112} 112}
113void KOWhatsNextView::updateConfig() 113void KOWhatsNextView::updateConfig()
114{ 114{
115 setFont( KOPrefs::instance()->mWhatsNextFont ); 115 setFont( KOPrefs::instance()->mWhatsNextFont );
116 updateView(); 116 updateView();
117 117
118} 118}
119void KOWhatsNextView::showEvent ( QShowEvent * e ) 119void KOWhatsNextView::showEvent ( QShowEvent * e )
120{ 120{
121 //qDebug("KOWhatsNextView::showEvent "); 121 //qDebug("KOWhatsNextView::showEvent ");
122 restartTimer(); 122 restartTimer();
123 QWidget::showEvent ( e ); 123 QWidget::showEvent ( e );
124} 124}
125void KOWhatsNextView::hideEvent ( QHideEvent * e) 125void KOWhatsNextView::hideEvent ( QHideEvent * e)
126{ 126{
127 //qDebug(" KOWhatsNextView::hideEvent"); 127 //qDebug(" KOWhatsNextView::hideEvent");
128 mTimer->stop(); 128 mTimer->stop();
129 QWidget::hideEvent ( e ); 129 QWidget::hideEvent ( e );
130} 130}
131void KOWhatsNextView::restartTimer() 131void KOWhatsNextView::restartTimer()
132{ 132{
133 //qDebug("KOWhatsNextView::restartTimer() "); 133 //qDebug("KOWhatsNextView::restartTimer() ");
134 mTimer->start( 180000 ); 134 mTimer->start( 300000 );
135 //mTimer->start( 5000 ); 135 //mTimer->start( 5000 );
136} 136}
137void KOWhatsNextView::updateView() 137void KOWhatsNextView::updateView()
138{ 138{
139 if ( mTimer->isActive() ) 139 if ( mTimer->isActive() )
140 restartTimer(); 140 restartTimer();
141 //qDebug("KOWhatsNextView::updateView() "); 141 //qDebug("KOWhatsNextView::updateView() ");
142 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate())); 142 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate()));
143 KIconLoader kil("korganizer"); 143 KIconLoader kil("korganizer");
144 QString ipath;// = new QString(); 144 QString ipath;// = new QString();
145 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath); 145 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath);
146 //<big><big><strong>" + date + "</strong></big></big>\n"; 146 //<big><big><strong>" + date + "</strong></big></big>\n";
147 mText = "<table width=\"100%\">\n"; 147 mText = "<table width=\"100%\">\n";
148 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 148 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
149#ifdef DESKTOP_VERSION 149#ifdef DESKTOP_VERSION
150 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>"; 150 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>";
151#else 151#else
152 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 152 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
153#endif 153#endif
154 // mText += "<img src=\""; 154 // mText += "<img src=\"";
155 // mText += ipath; 155 // mText += ipath;
156 // mText += "\">"; 156 // mText += "\">";
157 mEventDate = QDate::currentDate(); 157 mEventDate = QDate::currentDate();
158#ifdef DESKTOP_VERSION 158#ifdef DESKTOP_VERSION
159 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>"; 159 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>";
160#else 160#else
161 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>"; 161 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>";
162#endif 162#endif
163 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 163 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
164 int iii; 164 int iii;
165 mTodos.clear(); 165 mTodos.clear();
166 QPtrList<Event> events; 166 QPtrList<Event> events;
167 QPtrList<Todo> todos = calendar()->todos(); 167 QPtrList<Todo> todos = calendar()->todos();
168 Todo * todo; 168 Todo * todo;
169 //mText += "<h2>" + i18n("Events: ") + "</h2>\n"; 169 //mText += "<h2>" + i18n("Events: ") + "</h2>\n";
170 int daysToShow = KOPrefs::instance()->mWhatsNextDays ; 170 int daysToShow = KOPrefs::instance()->mWhatsNextDays ;
171 bool itemAdded = false; 171 bool itemAdded = false;
172 for ( iii = 0; iii < daysToShow; ++iii ) { 172 for ( iii = 0; iii < daysToShow; ++iii ) {
173 QString date; 173 QString date;
174 itemAdded = false; 174 itemAdded = false;
175 events = calendar()->events( mEventDate, true ); 175 events = calendar()->events( mEventDate, true );
176 176
177 if ( iii == 0 ) { // today !!! 177 if ( iii == 0 ) { // today !!!
178 todo = todos.first(); 178 todo = todos.first();
179 while(todo) { 179 while(todo) {
180 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) { 180 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) {
181 if ( ! itemAdded ) { 181 if ( ! itemAdded ) {
182 appendDay ( iii, mEventDate ); 182 appendDay ( iii, mEventDate );
183 itemAdded = true; 183 itemAdded = true;
184 184
185 } 185 }
186 appendEvent(todo); 186 appendEvent(todo);
187 } 187 }
188 todo = todos.next(); 188 todo = todos.next();
189 } 189 }
190 } 190 }
191 191
192 192
193 if (events.count() > 0) { 193 if (events.count() > 0) {
194 // mText += "<p></p>"; 194 // mText += "<p></p>";
195 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 195 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
196 // mText += "<h2>"; 196 // mText += "<h2>";
197 //mText += " <img src=\""; 197 //mText += " <img src=\"";
198 //mText += ipath; 198 //mText += ipath;
199 //mText += "\">"; 199 //mText += "\">";
200 if ( ! itemAdded ) { 200 if ( ! itemAdded ) {
201 appendDay ( iii, mEventDate ); 201 appendDay ( iii, mEventDate );
202 itemAdded = true; 202 itemAdded = true;
203 203
204 } 204 }
205 Event *ev = events.first(); 205 Event *ev = events.first();
206 while(ev) { 206 while(ev) {
207 //qDebug("+++++event append %s", ev->summary().latin1()); 207 //qDebug("+++++event append %s", ev->summary().latin1());
208 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) { 208 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) {
209 appendEvent(ev, false , iii!= 0 ); 209 appendEvent(ev, false , iii!= 0 );
210 } 210 }
211 ev = events.next(); 211 ev = events.next();
212 } 212 }
213 213
214 //mText += "</table>\n"; 214 //mText += "</table>\n";
215 } 215 }
216 216
217 todo = todos.first(); 217 todo = todos.first();
218 while(todo) { 218 while(todo) {
219 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) { 219 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) {
220 if ( ! itemAdded ) { 220 if ( ! itemAdded ) {
221 appendDay ( iii, mEventDate ); 221 appendDay ( iii, mEventDate );
222 itemAdded = true; 222 itemAdded = true;
223 } 223 }
224 appendEvent(todo); 224 appendEvent(todo);
225 } 225 }
226 todo = todos.next(); 226 todo = todos.next();
227 } 227 }
228 if ( !itemAdded && iii == 0 ) { 228 if ( !itemAdded && iii == 0 ) {
229 // appendDay ( iii, mEventDate ); 229 // appendDay ( iii, mEventDate );
230 //mText += "<table>"; 230 //mText += "<table>";
231 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n"; 231 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n";
232 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do. ") +"</em></font></h3>\n"; 232 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do. ") +"</em></font></h3>\n";
233 //mText +="</table>"; 233 //mText +="</table>";
234 } 234 }
235 if ( itemAdded ) 235 if ( itemAdded )
236 mText += "</table>\n"; 236 mText += "</table>\n";
237 mEventDate = mEventDate.addDays( 1 ); 237 mEventDate = mEventDate.addDays( 1 );
238 } 238 }
239 239
240 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios; 240 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios;
241 if (todos.count() > 0 && topmostPrios > 0 ) { 241 if (todos.count() > 0 && topmostPrios > 0 ) {
242 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 242 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
243 // mText += "<h2>"; 243 // mText += "<h2>";
244 //<img src=\""; 244 //<img src=\"";
245 // mText += ipath; 245 // mText += ipath;
246 // mText += "\">"; 246 // mText += "\">";
247 // mText += i18n("Overdue To-Do:") + "</h2>\n"; 247 // mText += i18n("Overdue To-Do:") + "</h2>\n";
248 248
249 //mText += "<ul>\n"; 249 //mText += "<ul>\n";
250 bool gotone = false; 250 bool gotone = false;
251 int priority = 1; 251 int priority = 1;
252 int priosFound = 0; 252 int priosFound = 0;
253#ifdef DESKTOP_VERSION 253#ifdef DESKTOP_VERSION
254 mText +="<p></p>"; 254 mText +="<p></p>";
255#endif 255#endif
256 256
257 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></strong></big></big>\n"; 257 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></strong></big></big>\n";
258 mText += "<ul>\n"; 258 mText += "<ul>\n";
259 while (!gotone && priority<6) { 259 while (!gotone && priority<6) {
260 todo = todos.first(); 260 todo = todos.first();
261 while(todo) { 261 while(todo) {
262 if (!todo->isCompleted() && (todo->priority() == priority) ) { 262 if (!todo->isCompleted() && (todo->priority() == priority) ) {
263 if ( appendTodo(todo) ) 263 if ( appendTodo(todo) )
264 gotone = true; 264 gotone = true;
265 } 265 }
266 todo = todos.next(); 266 todo = todos.next();
267 } 267 }
268 if ( gotone ) { 268 if ( gotone ) {
269 gotone = false; 269 gotone = false;
270 ++priosFound; 270 ++priosFound;
271 if ( priosFound == topmostPrios ) 271 if ( priosFound == topmostPrios )
272 break; 272 break;
273 } 273 }
274 priority++; 274 priority++;
275 // kdDebug() << "adding the todos..." << endl; 275 // kdDebug() << "adding the todos..." << endl;
276 } 276 }
277 mText += "</ul>\n"; 277 mText += "</ul>\n";
278 } 278 }
279 279
280 int replys = 0; 280 int replys = 0;
281 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6)); 281 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6));
282 if (events.count() > 0) { 282 if (events.count() > 0) {
283 Event *ev = events.first(); 283 Event *ev = events.first();
284 while(ev) { 284 while(ev) {
285 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 285 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
286 if (me!=0) { 286 if (me!=0) {
287 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 287 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
288 if (replys == 0) { 288 if (replys == 0) {
289 mText += "<p></p>"; 289 mText += "<p></p>";
290 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 290 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
291 //mText += "<h2>"; 291 //mText += "<h2>";
292 //<img src=\""; 292 //<img src=\"";
293 // mText += ipath; 293 // mText += ipath;
294 // mText += "\">"; 294 // mText += "\">";
295 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; 295 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n";
296 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></strong></big></big>\n"; 296 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></strong></big></big>\n";
297 mText += "<table>\n"; 297 mText += "<table>\n";
298 } 298 }
299 replys++; 299 replys++;
300 appendEvent(ev,true); 300 appendEvent(ev,true);
301 } 301 }
302 } 302 }
303 ev = events.next(); 303 ev = events.next();
304 } 304 }
305 } 305 }
306 todos = calendar()->todos(); 306 todos = calendar()->todos();
307 if (todos.count() > 0) { 307 if (todos.count() > 0) {
308 Todo *to = todos.first(); 308 Todo *to = todos.first();
309 while(to) { 309 while(to) {
310 if ( !to->isCompleted() ){ 310 if ( !to->isCompleted() ){
311 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 311 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
312 if (me!=0) { 312 if (me!=0) {
313 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 313 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
314 if (replys == 0) { 314 if (replys == 0) {
315 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></strong></big></big>\n"; 315 mText +="<big><big><strong><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></strong></big></big>\n";
316 mText += "<table>\n"; 316 mText += "<table>\n";
317 } 317 }
318 replys++; 318 replys++;
319 appendEvent(to, true); 319 appendEvent(to, true);
320 } 320 }
321 } 321 }
322 } 322 }
323 to = todos.next(); 323 to = todos.next();
324 } 324 }
325 } 325 }
326 if (replys > 0 ) mText += "</table>\n"; 326 if (replys > 0 ) mText += "</table>\n";