summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-11-25 20:49:16 (UTC)
committer zautrix <zautrix>2005-11-25 20:49:16 (UTC)
commit2468bddcb380d8621d5bb49b69b3492d90562d93 (patch) (unidiff)
treec310f4fff5e476087e8406614e57a7f258f1b14f /korganizer
parent7a439999b9fa2bd7ad76e195cdf95bf5211952cb (diff)
downloadkdepimpi-2468bddcb380d8621d5bb49b69b3492d90562d93.zip
kdepimpi-2468bddcb380d8621d5bb49b69b3492d90562d93.tar.gz
kdepimpi-2468bddcb380d8621d5bb49b69b3492d90562d93.tar.bz2
sync
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 307027a..e45240a 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,5244 +1,5244 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) 1997, 1998, 1999
8 Preston Brown (preton.brown@yale.edu) 8 Preston Brown (preton.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "koagenda.h" 107#include "koagenda.h"
108#include "kodialogmanager.h" 108#include "kodialogmanager.h"
109#include "outgoingdialog.h" 109#include "outgoingdialog.h"
110#include "incomingdialog.h" 110#include "incomingdialog.h"
111#include "datenavigatorcontainer.h" 111#include "datenavigatorcontainer.h"
112#include "statusdialog.h" 112#include "statusdialog.h"
113#include "kdatenavigator.h" 113#include "kdatenavigator.h"
114#include "kotodoview.h" 114#include "kotodoview.h"
115#include "datenavigator.h" 115#include "datenavigator.h"
116#include "resourceview.h" 116#include "resourceview.h"
117#include "navigatorbar.h" 117#include "navigatorbar.h"
118#include "searchdialog.h" 118#include "searchdialog.h"
119#include "mainwindow.h" 119#include "mainwindow.h"
120#include "categoryeditdialog.h" 120#include "categoryeditdialog.h"
121 121
122#include "calendarview.h" 122#include "calendarview.h"
123#ifndef DESKTOP_VERSION 123#ifndef DESKTOP_VERSION
124#include <qtopia/alarmserver.h> 124#include <qtopia/alarmserver.h>
125#endif 125#endif
126#ifndef _WIN32_ 126#ifndef _WIN32_
127#include <stdlib.h> 127#include <stdlib.h>
128#include <stdio.h> 128#include <stdio.h>
129#include <unistd.h> 129#include <unistd.h>
130#else 130#else
131#include <qprocess.h> 131#include <qprocess.h>
132#endif 132#endif
133 133
134#ifdef DESKTOP_VERSION 134#ifdef DESKTOP_VERSION
135#include <kabc/stdaddressbook.h> 135#include <kabc/stdaddressbook.h>
136#endif 136#endif
137using namespace KOrg; 137using namespace KOrg;
138using namespace KCal; 138using namespace KCal;
139extern int globalFlagBlockAgenda; 139extern int globalFlagBlockAgenda;
140extern int globalFlagBlockStartup; 140extern int globalFlagBlockStartup;
141 141
142 142
143MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent) 143MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent)
144 144
145{ 145{
146 mAlarms = alarms; 146 mAlarms = alarms;
147 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) ); 147 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) );
148 QString mText = "<table width=\"100%\">\n"; 148 QString mText = "<table width=\"100%\">\n";
149 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 149 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
150#ifdef DESKTOP_VERSION 150#ifdef DESKTOP_VERSION
151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
152#else 152#else
153 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>"; 153 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>";
154#endif 154#endif
155 // mText += "<img src=\""; 155 // mText += "<img src=\"";
156 // mText += ipath; 156 // mText += ipath;
157 // mText += "\">"; 157 // mText += "\">";
158 //mEventDate = QDate::currentDate(); 158 //mEventDate = QDate::currentDate();
159#ifdef DESKTOP_VERSION 159#ifdef DESKTOP_VERSION
160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>"; 160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>";
161#else 161#else
162 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>"; 162 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>";
163#endif 163#endif
164 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 164 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
165 165
166 Incidence * inc = getNextInc( start ); 166 Incidence * inc = getNextInc( start );
167 int time = 0; 167 int time = 0;
168 //mText += "<table>"; 168 //mText += "<table>";
169 while ( inc ) { 169 while ( inc ) {
170 QDateTime dt ; 170 QDateTime dt ;
171 QString tempText = "<a "; 171 QString tempText = "<a ";
172 bool ok; 172 bool ok;
173 dt = inc->getNextOccurence( start, &ok ); 173 dt = inc->getNextOccurence( start, &ok );
174 if ( !ok ) continue; 174 if ( !ok ) continue;
175 if ( inc->typeID() == eventID ) { 175 if ( inc->typeID() == eventID ) {
176 tempText += "href=\"event:"; 176 tempText += "href=\"event:";
177 } else if ( inc->typeID() == todoID ) { 177 } else if ( inc->typeID() == todoID ) {
178 tempText += "href=\"todo:"; 178 tempText += "href=\"todo:";
179 } 179 }
180 tempText += inc->uid() + "\">"; 180 tempText += inc->uid() + "\">";
181 if ( inc->typeID() == todoID ) 181 if ( inc->typeID() == todoID )
182 tempText += i18n("Todo: "); 182 tempText += i18n("Todo: ");
183 if ( inc->summary().length() > 0 ) 183 if ( inc->summary().length() > 0 )
184 tempText += inc->summary(); 184 tempText += inc->summary();
185 else 185 else
186 tempText += i18n("-no summary-"); 186 tempText += i18n("-no summary-");
187 QString timestr; 187 QString timestr;
188 if (!inc->doesFloat()) 188 if (!inc->doesFloat())
189 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": "; 189 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": ";
190 else 190 else
191 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 191 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
192 if ( dt.date() < QDate::currentDate() && time == 0 ) { 192 if ( dt.date() < QDate::currentDate() && time == 0 ) {
193 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 193 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
194 mText += "<table>"; 194 mText += "<table>";
195 time = 1; 195 time = 1;
196 } 196 }
197 if ( dt.date() == QDate::currentDate() && time <= 1 ) { 197 if ( dt.date() == QDate::currentDate() && time <= 1 ) {
198 if ( time > 0 ) 198 if ( time > 0 )
199 mText +="</table>"; 199 mText +="</table>";
200 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>"; 200 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>";
201 mText += "<table>"; 201 mText += "<table>";
202 time = 2; 202 time = 2;
203 203
204 } 204 }
205 if ( dt.date() > QDate::currentDate() && time <= 2 ) { 205 if ( dt.date() > QDate::currentDate() && time <= 2 ) {
206 if ( time > 0 ) 206 if ( time > 0 )
207 mText +="</table>"; 207 mText +="</table>";
208 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>"; 208 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>";
209 mText += "<table>"; 209 mText += "<table>";
210 time = 3; 210 time = 3;
211 } 211 }
212 mText +="<tr><td><b>"; 212 mText +="<tr><td><b>";
213 mText += timestr; 213 mText += timestr;
214 mText += "</b></td><td>"; 214 mText += "</b></td><td>";
215 mText += tempText; 215 mText += tempText;
216 mText += "</td></tr>\n"; 216 mText += "</td></tr>\n";
217 inc = getNextInc( start ); 217 inc = getNextInc( start );
218 } 218 }
219 mText +="</table>"; 219 mText +="</table>";
220 setText( mText ); 220 setText( mText );
221} 221}
222 222
223MissedAlarmTextBrowser::~MissedAlarmTextBrowser() 223MissedAlarmTextBrowser::~MissedAlarmTextBrowser()
224{ 224{
225 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() "); 225 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() ");
226} 226}
227Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start ) 227Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start )
228{ 228{
229 QDateTime dt ; 229 QDateTime dt ;
230 Incidence * retInc; 230 Incidence * retInc;
231 Incidence * inc = mAlarms.first(); 231 Incidence * inc = mAlarms.first();
232 if ( inc == 0 ) 232 if ( inc == 0 )
233 return 0; 233 return 0;
234 bool ok; 234 bool ok;
235 dt = inc->getNextOccurence( start, &ok ); 235 dt = inc->getNextOccurence( start, &ok );
236 if ( ! ok ) return 0; 236 if ( ! ok ) return 0;
237 QDateTime dtn ; 237 QDateTime dtn ;
238 retInc = inc; 238 retInc = inc;
239 inc = mAlarms.next(); 239 inc = mAlarms.next();
240 while ( inc ) { 240 while ( inc ) {
241 dtn = inc->getNextOccurence( start, &ok ); 241 dtn = inc->getNextOccurence( start, &ok );
242 if ( ! ok ) return 0; 242 if ( ! ok ) return 0;
243 if ( dtn < dt ) { 243 if ( dtn < dt ) {
244 dt = dtn; 244 dt = dtn;
245 retInc = inc; 245 retInc = inc;
246 } 246 }
247 inc = mAlarms.next(); 247 inc = mAlarms.next();
248 } 248 }
249 mAlarms.remove( retInc ); 249 mAlarms.remove( retInc );
250 return retInc; 250 return retInc;
251 251
252} 252}
253void MissedAlarmTextBrowser::setSource(const QString & n) 253void MissedAlarmTextBrowser::setSource(const QString & n)
254{ 254{
255 if (n.startsWith("event:")) { 255 if (n.startsWith("event:")) {
256#ifdef DESKTOP_VERSION 256#ifdef DESKTOP_VERSION
257 emit showIncidence(n.mid(8)); 257 emit showIncidence(n.mid(8));
258#else 258#else
259 emit showIncidence(n.mid(6)); 259 emit showIncidence(n.mid(6));
260#endif 260#endif
261 return; 261 return;
262 } else if (n.startsWith("todo:")) { 262 } else if (n.startsWith("todo:")) {
263#ifdef DESKTOP_VERSION 263#ifdef DESKTOP_VERSION
264 emit showIncidence(n.mid(7)); 264 emit showIncidence(n.mid(7));
265#else 265#else
266 emit showIncidence(n.mid(5)); 266 emit showIncidence(n.mid(5));
267#endif 267#endif
268 return; 268 return;
269 } 269 }
270} 270}
271 271
272 272
273class KOBeamPrefs : public QDialog 273class KOBeamPrefs : public QDialog
274{ 274{
275 public: 275 public:
276 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 276 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
277 QDialog( parent, name, true ) 277 QDialog( parent, name, true )
278 { 278 {
279 setCaption( i18n("Beam Options") ); 279 setCaption( i18n("Beam Options") );
280 QVBoxLayout* lay = new QVBoxLayout( this ); 280 QVBoxLayout* lay = new QVBoxLayout( this );
281 lay->setSpacing( 3 ); 281 lay->setSpacing( 3 );
282 lay->setMargin( 3 ); 282 lay->setMargin( 3 );
283 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 283 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
284 lay->addWidget( format ); 284 lay->addWidget( format );
285 format->setExclusive ( true ) ; 285 format->setExclusive ( true ) ;
286 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 286 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
287 lay->addWidget( time ); time->setExclusive ( true ) ; 287 lay->addWidget( time ); time->setExclusive ( true ) ;
288 vcal = new QRadioButton(" vCalendar ", format ); 288 vcal = new QRadioButton(" vCalendar ", format );
289 ical = new QRadioButton(" iCalendar ", format ); 289 ical = new QRadioButton(" iCalendar ", format );
290 vcal->setChecked( true ); 290 vcal->setChecked( true );
291 tz = new QRadioButton(i18n(" With timezone "), time ); 291 tz = new QRadioButton(i18n(" With timezone "), time );
292 local = new QRadioButton(i18n(" Local time "), time ); 292 local = new QRadioButton(i18n(" Local time "), time );
293 tz->setChecked( true ); 293 tz->setChecked( true );
294 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 294 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
295 lay->addWidget( ok ); 295 lay->addWidget( ok );
296 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 296 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
297 lay->addWidget( cancel ); 297 lay->addWidget( cancel );
298 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 298 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
299 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 299 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
300 resize( 200, 200 ); 300 resize( 200, 200 );
301 } 301 }
302 302
303 bool beamVcal() { return vcal->isChecked(); } 303 bool beamVcal() { return vcal->isChecked(); }
304 bool beamLocal() { return local->isChecked(); } 304 bool beamLocal() { return local->isChecked(); }
305private: 305private:
306 QRadioButton* vcal, *ical, *local, *tz; 306 QRadioButton* vcal, *ical, *local, *tz;
307}; 307};
308class KOCatPrefs : public QDialog 308class KOCatPrefs : public QDialog
309{ 309{
310 public: 310 public:
311 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 311 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
312 QDialog( parent, name, true ) 312 QDialog( parent, name, true )
313 { 313 {
314 setCaption( i18n("Manage new Categories") ); 314 setCaption( i18n("Manage new Categories") );
315 QVBoxLayout* lay = new QVBoxLayout( this ); 315 QVBoxLayout* lay = new QVBoxLayout( this );
316 lay->setSpacing( 3 ); 316 lay->setSpacing( 3 );
317 lay->setMargin( 3 ); 317 lay->setMargin( 3 );
318 QLabel * lab = new QLabel( i18n("After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:"), this ); 318 QLabel * lab = new QLabel( i18n("After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:"), this );
319 lay->addWidget( lab ); 319 lay->addWidget( lab );
320 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 320 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
321 lay->addWidget( format ); 321 lay->addWidget( format );
322 format->setExclusive ( true ) ; 322 format->setExclusive ( true ) ;
323 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 323 addCatBut = new QRadioButton(i18n("Add to category list"), format );
324 new QRadioButton(i18n("Remove from Events/Todos"), format ); 324 new QRadioButton(i18n("Remove from Events/Todos"), format );
325 addCatBut->setChecked( true ); 325 addCatBut->setChecked( true );
326 QPushButton * ok = new QPushButton( i18n("Change category list now!"), this ); 326 QPushButton * ok = new QPushButton( i18n("Change category list now!"), this );
327 lay->addWidget( ok ); 327 lay->addWidget( ok );
328 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 328 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
329 lay->addWidget( cancel ); 329 lay->addWidget( cancel );
330 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 330 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
331 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 331 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
332 resize( 200, 200 ); 332 resize( 200, 200 );
333 } 333 }
334 334
335 bool addCat() { return addCatBut->isChecked(); } 335 bool addCat() { return addCatBut->isChecked(); }
336private: 336private:
337 QRadioButton* addCatBut; 337 QRadioButton* addCatBut;
338}; 338};
339 339
340 340
341 341
342CalendarView::CalendarView( CalendarResources *calendar, 342CalendarView::CalendarView( CalendarResources *calendar,
343 QWidget *parent, const char *name ) 343 QWidget *parent, const char *name )
344 : CalendarViewBase( parent, name ), 344 : CalendarViewBase( parent, name ),
345 mCalendar( calendar ), 345 mCalendar( calendar ),
346 mResourceManager( calendar->resourceManager() ) 346 mResourceManager( calendar->resourceManager() )
347{ 347{
348 348
349 mEventEditor = 0; 349 mEventEditor = 0;
350 mTodoEditor = 0; 350 mTodoEditor = 0;
351 351
352 init(); 352 init();
353} 353}
354 354
355CalendarView::CalendarView( Calendar *calendar, 355CalendarView::CalendarView( Calendar *calendar,
356 QWidget *parent, const char *name ) 356 QWidget *parent, const char *name )
357 : CalendarViewBase( parent, name ), 357 : CalendarViewBase( parent, name ),
358 mCalendar( calendar ), 358 mCalendar( calendar ),
359 mResourceManager( 0 ) 359 mResourceManager( 0 )
360{ 360{
361 361
362 mEventEditor = 0; 362 mEventEditor = 0;
363 mTodoEditor = 0; 363 mTodoEditor = 0;
364 init(); 364 init();
365} 365}
366 366
367void CalendarView::init() 367void CalendarView::init()
368{ 368{
369 mMultiResourceSync = false; 369 mMultiResourceSync = false;
370 flag_blockConflict = false; 370 flag_blockConflict = false;
371 flag_blockScrollBar = false; 371 flag_blockScrollBar = false;
372 flag_checkFileFirsttime = true; 372 flag_checkFileFirsttime = true;
373 flag_clearallviewsEventDisplay = false; 373 flag_clearallviewsEventDisplay = false;
374 flag_clearallviewsupdateView = false; 374 flag_clearallviewsupdateView = false;
375 mNextAlarmDateTime = QDateTime::currentDateTime(); 375 mNextAlarmDateTime = QDateTime::currentDateTime();
376 setFocusPolicy (NoFocus ); 376 setFocusPolicy (NoFocus );
377 mViewerCallerIsSearchDialog = false; 377 mViewerCallerIsSearchDialog = false;
378 mBlockShowDates = false; 378 mBlockShowDates = false;
379 mConflictingEvent = 0; 379 mConflictingEvent = 0;
380 mDatePickerMode = 0; 380 mDatePickerMode = 0;
381 mCurrentSyncDevice = ""; 381 mCurrentSyncDevice = "";
382 mViewManager = new KOViewManager( this ); 382 mViewManager = new KOViewManager( this );
383 mDialogManager = new KODialogManager( this ); 383 mDialogManager = new KODialogManager( this );
384 mEventViewerDialog = 0; 384 mEventViewerDialog = 0;
385 mModified = false; 385 mModified = false;
386 mReadOnly = false; 386 mReadOnly = false;
387 mSelectedIncidence = 0; 387 mSelectedIncidence = 0;
388 mCalPrinter = 0; 388 mCalPrinter = 0;
389 mFilters.setAutoDelete(true); 389 mFilters.setAutoDelete(true);
390 390
391 mCalendar->registerObserver( this ); 391 mCalendar->registerObserver( this );
392 // TODO: Make sure that view is updated, when calendar is changed. 392 // TODO: Make sure that view is updated, when calendar is changed.
393 393
394 mStorage = new FileStorage( mCalendar ); 394 mStorage = new FileStorage( mCalendar );
395 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 395 mNavigator = new DateNavigator( this, "datevav", mViewManager );
396 396
397 QBoxLayout *topLayout = (QBoxLayout*)layout(); 397 QBoxLayout *topLayout = (QBoxLayout*)layout();
398#ifndef KORG_NOSPLITTER 398#ifndef KORG_NOSPLITTER
399 // create the main layout frames. 399 // create the main layout frames.
400 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 400 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
401 topLayout->addWidget(mPanner); 401 topLayout->addWidget(mPanner);
402 402
403 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 403 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
404 "CalendarView::LeftFrame"); 404 "CalendarView::LeftFrame");
405 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 405 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
406 406
407 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 407 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
408 "CalendarView::DateNavigator" ); 408 "CalendarView::DateNavigator" );
409 409
410 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 410 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
411 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 411 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
412 mTodoList->setNavigator( mNavigator ); 412 mTodoList->setNavigator( mNavigator );
413 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 413 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
414 414
415#ifdef KORG_NORESOURCEVIEW 415#ifdef KORG_NORESOURCEVIEW
416 mResourceView = 0; 416 mResourceView = 0;
417#else 417#else
418 if ( mResourceManager ) { 418 if ( mResourceManager ) {
419 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 419 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
420 mResourceView->updateView(); 420 mResourceView->updateView();
421 connect( mResourceView, SIGNAL( resourcesChanged() ), 421 connect( mResourceView, SIGNAL( resourcesChanged() ),
422 SLOT( updateView() ) ); 422 SLOT( updateView() ) );
423 } else { 423 } else {
424 mResourceView = 0; 424 mResourceView = 0;
425 } 425 }
426#endif 426#endif
427 QWidget *rightBox = new QWidget( mPanner ); 427 QWidget *rightBox = new QWidget( mPanner );
428 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 428 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
429 429
430 mRightFrame = new QWidgetStack( rightBox ); 430 mRightFrame = new QWidgetStack( rightBox );
431 rightLayout->addWidget( mRightFrame, 1 ); 431 rightLayout->addWidget( mRightFrame, 1 );
432 432
433 mLeftFrame = mLeftSplitter; 433 mLeftFrame = mLeftSplitter;
434#else 434#else
435 //QWidget *mainBox = new QWidget( this ); 435 //QWidget *mainBox = new QWidget( this );
436 //QWidget *leftFrame = new QWidget( mainBox ); 436 //QWidget *leftFrame = new QWidget( mainBox );
437 //QBoxLayout * mainBoxLayout; 437 //QBoxLayout * mainBoxLayout;
438 if ( KOPrefs::instance()->mVerticalScreen ) { 438 if ( KOPrefs::instance()->mVerticalScreen ) {
439 //mainBoxLayout = new QVBoxLayout(mainBox); 439 //mainBoxLayout = new QVBoxLayout(mainBox);
440 //leftFrameLayout = new QHBoxLayout(leftFrame ); 440 //leftFrameLayout = new QHBoxLayout(leftFrame );
441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
445 } else { 445 } else {
446 //mainBoxLayout = new QHBoxLayout(mainBox); 446 //mainBoxLayout = new QHBoxLayout(mainBox);
447 //leftFrameLayout = new QVBoxLayout(leftFrame ); 447 //leftFrameLayout = new QVBoxLayout(leftFrame );
448 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 448 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
449 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 449 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
450 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 450 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
451 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 451 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
452 } 452 }
453 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 453 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
454 //QBoxLayout * leftFrameLayout; 454 //QBoxLayout * leftFrameLayout;
455 topLayout->addWidget( mMainFrame ); 455 topLayout->addWidget( mMainFrame );
456#ifdef DESKTOP_VERSION 456#ifdef DESKTOP_VERSION
457 mDateScrollBar = new QScrollBar ( 1, 365, 1,30, 200,QScrollBar::Horizontal, this ); 457 mDateScrollBar = new QScrollBar ( 1, 365, 1,30, 200,QScrollBar::Horizontal, this );
458 topLayout->addWidget( mDateScrollBar ); 458 topLayout->addWidget( mDateScrollBar );
459 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) ); 459 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) );
460 if ( QApplication::desktop()->width() < 800 ) 460 if ( QApplication::desktop()->width() < 800 )
461 mDateScrollBar->hide(); 461 mDateScrollBar->hide();
462#endif 462#endif
463 //mainBoxLayout->addWidget (mLeftFrame); 463 //mainBoxLayout->addWidget (mLeftFrame);
464 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 464 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
465 "CalendarView::DateNavigator" ); 465 "CalendarView::DateNavigator" );
466#if 0 466#if 0
467 // FIXME 467 // FIXME
468 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 468 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
469 "CalendarView::DateNavigator", QDate::currentDate()); 469 "CalendarView::DateNavigator", QDate::currentDate());
470#endif 470#endif
471 // mDateNavigator->blockSignals( true ); 471 // mDateNavigator->blockSignals( true );
472 //leftFrameLayout->addWidget( mDateNavigator ); 472 //leftFrameLayout->addWidget( mDateNavigator );
473 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 473 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
474 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 474 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
475 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 475 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
476 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 476 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
477 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 477 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
478 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) ); 478 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) );
479 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 479 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
480 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) ); 480 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) );
481 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) ); 481 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
482 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) ); 482 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
483 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) ); 483 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
484 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() )); 484 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() ));
485 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) ); 485 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) );
486 connect( mCalEditView, SIGNAL( requestCalendarInfo( int ) ),this, SLOT( displayCalendarInfo( int ) ) ); 486 connect( mCalEditView, SIGNAL( requestCalendarInfo( int ) ),this, SLOT( displayCalendarInfo( int ) ) );
487 487
488 488
489 mTodoList->setNavigator( mNavigator ); 489 mTodoList->setNavigator( mNavigator );
490#if 0 490#if 0
491 if ( QApplication::desktop()->width() < 480 ) { 491 if ( QApplication::desktop()->width() < 480 ) {
492 leftFrameLayout->addWidget(mFilterView); 492 leftFrameLayout->addWidget(mFilterView);
493 leftFrameLayout->addWidget(mTodoList, 2 ); 493 leftFrameLayout->addWidget(mTodoList, 2 );
494 494
495 } else { 495 } else {
496 leftFrameLayout->addWidget(mTodoList,2 ); 496 leftFrameLayout->addWidget(mTodoList,2 );
497 leftFrameLayout->addWidget(mFilterView ); 497 leftFrameLayout->addWidget(mFilterView );
498 } 498 }
499#endif 499#endif
500 mFilterView->hide(); 500 mFilterView->hide();
501 mCalEditView->hide(); 501 mCalEditView->hide();
502 QWidget *rightBox = new QWidget( mMainFrame ); 502 QWidget *rightBox = new QWidget( mMainFrame );
503 //mainBoxLayout->addWidget ( rightBox, 10 ); 503 //mainBoxLayout->addWidget ( rightBox, 10 );
504 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 504 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
505 mRightFrame = new QWidgetStack( rightBox ); 505 mRightFrame = new QWidgetStack( rightBox );
506 rightLayout->addWidget( mRightFrame, 10 ); 506 rightLayout->addWidget( mRightFrame, 10 );
507 507
508 //mLeftFrame = (QWidget *)leftFrame; 508 //mLeftFrame = (QWidget *)leftFrame;
509 if ( KOPrefs::instance()->mVerticalScreen ) { 509 if ( KOPrefs::instance()->mVerticalScreen ) {
510 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 510 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
511 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 511 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
512 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 512 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
513 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 513 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
514 } else { 514 } else {
515 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 515 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
516 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 516 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
517 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 517 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
518 } 518 }
519 if ( !KOPrefs::instance()->mShowDateNavigator) 519 if ( !KOPrefs::instance()->mShowDateNavigator)
520 mDateNavigator->hide(); 520 mDateNavigator->hide();
521 //qDebug("Calendarview Size %d %d ", width(), height()); 521 //qDebug("Calendarview Size %d %d ", width(), height());
522#endif 522#endif
523 523
524 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 524 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
525 SLOT( showDates( const KCal::DateList & ) ) ); 525 SLOT( showDates( const KCal::DateList & ) ) );
526 526
527 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 527 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
528 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 528 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
529 529
530 530
531 531
532 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 532 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
533 mViewManager, SLOT( showMonth( const QDate & ) ) ); 533 mViewManager, SLOT( showMonth( const QDate & ) ) );
534 534
535 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 535 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
536 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 536 mNavigator, SLOT( selectWeek( const QDate & ) ) );
537 537
538 connect( mDateNavigator, SIGNAL( goPrevYear() ), 538 connect( mDateNavigator, SIGNAL( goPrevYear() ),
539 mNavigator, SLOT( selectPreviousYear() ) ); 539 mNavigator, SLOT( selectPreviousYear() ) );
540 connect( mDateNavigator, SIGNAL( goNextYear() ), 540 connect( mDateNavigator, SIGNAL( goNextYear() ),
541 mNavigator, SLOT( selectNextYear() ) ); 541 mNavigator, SLOT( selectNextYear() ) );
542 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 542 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
543 mNavigator, SLOT( selectPreviousMonth() ) ); 543 mNavigator, SLOT( selectPreviousMonth() ) );
544 connect( mDateNavigator, SIGNAL( goNextMonth() ), 544 connect( mDateNavigator, SIGNAL( goNextMonth() ),
545 mNavigator, SLOT( selectNextMonth() ) ); 545 mNavigator, SLOT( selectNextMonth() ) );
546 546
547 connect( mDateNavigator, SIGNAL( goPrevious() ), 547 connect( mDateNavigator, SIGNAL( goPrevious() ),
548 mNavigator, SLOT( selectPrevious() ) ); 548 mNavigator, SLOT( selectPrevious() ) );
549 connect( mDateNavigator, SIGNAL( goNext() ), 549 connect( mDateNavigator, SIGNAL( goNext() ),
550 mNavigator, SLOT( selectNext() ) ); 550 mNavigator, SLOT( selectNext() ) );
551 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 551 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
552 mNavigator, SLOT( slotMonthSelect( int ) ) ); 552 mNavigator, SLOT( slotMonthSelect( int ) ) );
553 553
554 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 554 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
555 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 555 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
556#if 0 556#if 0
557 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 557 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
558 SLOT( incidenceAdded( Incidence *) ) ); 558 SLOT( incidenceAdded( Incidence *) ) );
559#endif 559#endif
560 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 560 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
561 561
562 connect( this, SIGNAL( configChanged() ), 562 connect( this, SIGNAL( configChanged() ),
563 mDateNavigator, SLOT( updateConfig() ) ); 563 mDateNavigator, SLOT( updateConfig() ) );
564 564
565 connect( mTodoList, SIGNAL( newTodoSignal() ), 565 connect( mTodoList, SIGNAL( newTodoSignal() ),
566 SLOT( newTodo() ) ); 566 SLOT( newTodo() ) );
567 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 567 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
568 SLOT( newSubTodo( Todo * ) ) ); 568 SLOT( newSubTodo( Todo * ) ) );
569 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 569 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
570 SLOT( editTodo( Todo * ) ) ); 570 SLOT( editTodo( Todo * ) ) );
571 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 571 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
572 SLOT( showTodo( Todo *) ) ); 572 SLOT( showTodo( Todo *) ) );
573 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 573 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
574 SLOT( deleteTodo( Todo *) ) ); 574 SLOT( deleteTodo( Todo *) ) );
575 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 575 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
576 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 576 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
577 SLOT( purgeCompleted() ) ); 577 SLOT( purgeCompleted() ) );
578 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 578 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
579 SIGNAL( todoModified( Todo *, int ) ) ); 579 SIGNAL( todoModified( Todo *, int ) ) );
580 580
581 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 581 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
582 this, SLOT ( cloneIncidence( Incidence * ) ) ); 582 this, SLOT ( cloneIncidence( Incidence * ) ) );
583 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 583 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
584 this, SLOT (cancelIncidence( Incidence * ) ) ); 584 this, SLOT (cancelIncidence( Incidence * ) ) );
585 585
586 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 586 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
587 this, SLOT ( moveIncidence( Incidence * ) ) ); 587 this, SLOT ( moveIncidence( Incidence * ) ) );
588 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 588 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
589 this, SLOT ( beamIncidence( Incidence * ) ) ); 589 this, SLOT ( beamIncidence( Incidence * ) ) );
590 590
591 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 591 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
592 this, SLOT ( todo_unsub( Todo * ) ) ); 592 this, SLOT ( todo_unsub( Todo * ) ) );
593 593
594 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 594 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
595 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 595 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
596 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 596 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
597 SLOT( updateTodo( Todo *, int ) ) ); 597 SLOT( updateTodo( Todo *, int ) ) );
598 connect( this, SIGNAL( todoModified( Todo *, int )), this, 598 connect( this, SIGNAL( todoModified( Todo *, int )), this,
599 SLOT( changeTodoDisplay( Todo *, int ) ) ); 599 SLOT( changeTodoDisplay( Todo *, int ) ) );
600 600
601 601
602 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 602 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
603 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 603 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
604 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 604 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
605 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 605 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
606 606
607 607
608 608
609 609
610 610
611 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 611 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
612 SLOT(checkClipboard())); 612 SLOT(checkClipboard()));
613 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 613 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
614 SLOT( processTodoListSelection( Incidence * ) ) ); 614 SLOT( processTodoListSelection( Incidence * ) ) );
615 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 615 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
616 616
617 // kdDebug() << "CalendarView::CalendarView() done" << endl; 617 // kdDebug() << "CalendarView::CalendarView() done" << endl;
618 618
619 mDateFrame = new QVBox(0,0,WType_Popup); 619 mDateFrame = new QVBox(0,0,WType_Popup);
620 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 620 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
621 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 621 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
622 mDateFrame->setLineWidth(3); 622 mDateFrame->setLineWidth(3);
623 mDateFrame->hide(); 623 mDateFrame->hide();
624 mDateFrame->setCaption( i18n( "Pick a date to display")); 624 mDateFrame->setCaption( i18n( "Pick a date to display"));
625 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 625 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
626 626
627 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 627 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
628 628
629 mEventEditor = mDialogManager->getEventEditor(); 629 mEventEditor = mDialogManager->getEventEditor();
630 mTodoEditor = mDialogManager->getTodoEditor(); 630 mTodoEditor = mDialogManager->getTodoEditor();
631 631
632 mFlagEditDescription = false; 632 mFlagEditDescription = false;
633 633
634 mSuspendTimer = new QTimer( this ); 634 mSuspendTimer = new QTimer( this );
635 mAlarmTimer = new QTimer( this ); 635 mAlarmTimer = new QTimer( this );
636 mRecheckAlarmTimer = new QTimer( this ); 636 mRecheckAlarmTimer = new QTimer( this );
637 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 637 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
638 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 638 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
639 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 639 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
640 mAlarmDialog = new AlarmDialog( this ); 640 mAlarmDialog = new AlarmDialog( this );
641 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 641 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
642 mAlarmDialog->setServerNotification( false ); 642 mAlarmDialog->setServerNotification( false );
643 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 643 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
644 644
645 645
646#ifndef DESKTOP_VERSION 646#ifndef DESKTOP_VERSION
647//US listen for arriving address resultsets 647//US listen for arriving address resultsets
648 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 648 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
649 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 649 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
650#endif 650#endif
651 mDateNavigator->setCalendar( mCalendar ); 651 mDateNavigator->setCalendar( mCalendar );
652} 652}
653 653
654 654
655CalendarView::~CalendarView() 655CalendarView::~CalendarView()
656{ 656{
657 // kdDebug() << "~CalendarView()" << endl; 657 // kdDebug() << "~CalendarView()" << endl;
658 //qDebug("CalendarView::~CalendarView() "); 658 //qDebug("CalendarView::~CalendarView() ");
659 delete mDialogManager; 659 delete mDialogManager;
660 delete mViewManager; 660 delete mViewManager;
661 delete mStorage; 661 delete mStorage;
662 delete mDateFrame ; 662 delete mDateFrame ;
663 delete mEventViewerDialog; 663 delete mEventViewerDialog;
664 //kdDebug() << "~CalendarView() done" << endl; 664 //kdDebug() << "~CalendarView() done" << endl;
665} 665}
666 666
667 667
668void CalendarView::nextConflict( bool all, bool allday ) 668void CalendarView::nextConflict( bool all, bool allday )
669{ 669{
670 if ( flag_blockConflict ) return; 670 if ( flag_blockConflict ) return;
671 flag_blockConflict = true; 671 flag_blockConflict = true;
672 QPtrList<Event> testlist = mCalendar->events(); 672 QPtrList<Event> testlist = mCalendar->events();
673 Event * test = testlist.first(); 673 Event * test = testlist.first();
674 while ( test ) { 674 while ( test ) {
675 test->setTagged( false ); 675 test->setTagged( false );
676 test = testlist.next(); 676 test = testlist.next();
677 } 677 }
678 QTime st ( 0,0,0); 678 QTime st ( 0,0,0);
679 if ( mViewManager->currentView() == mViewManager->agendaView() ) 679 if ( mViewManager->currentView() == mViewManager->agendaView() )
680 st = mViewManager->agendaView()->agenda()->getEndTime(); 680 st = mViewManager->agendaView()->agenda()->getEndTime();
681 //qDebug("time %s ", st.toString().latin1()); 681 //qDebug("time %s ", st.toString().latin1());
682 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st); 682 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st);
683 QDateTime conflict; 683 QDateTime conflict;
684 QDateTime retVal; 684 QDateTime retVal;
685 bool found = false; 685 bool found = false;
686 Event * cE = 0; 686 Event * cE = 0;
687 Event * cE2 = 0; 687 Event * cE2 = 0;
688 QPtrList<Event> testlist2 = testlist; 688 QPtrList<Event> testlist2 = testlist;
689 test = testlist.first(); 689 test = testlist.first();
690 bool skip = false; 690 bool skip = false;
691 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 691 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
692 //QTime tm; 692 //QTime tm;
693 //tm.start(); 693 //tm.start();
694 while ( test ) { 694 while ( test ) {
695 qApp->processEvents(); 695 qApp->processEvents();
696 skip = false; 696 skip = false;
697 if ( !all ) skip = ( allday != test->doesFloat() ); 697 if ( !all ) skip = ( allday != test->doesFloat() );
698 if ( !skip ) { 698 if ( !skip ) {
699 if ( found ) 699 if ( found )
700 skip = !test->matchTime( &startDT, &conflict ); 700 skip = !test->matchTime( &startDT, &conflict );
701 else 701 else
702 skip = !test->matchTime( &startDT, 0 ); 702 skip = !test->matchTime( &startDT, 0 );
703 } 703 }
704 if ( !skip ) { 704 if ( !skip ) {
705 Event * test2 = testlist2.first(); 705 Event * test2 = testlist2.first();
706 while ( test2 ) { 706 while ( test2 ) {
707 skip = test2->isTagged(); 707 skip = test2->isTagged();
708 if ( !skip && !all ) skip = ( allday != test2->doesFloat() ); 708 if ( !skip && !all ) skip = ( allday != test2->doesFloat() );
709 if ( !skip ) { 709 if ( !skip ) {
710 if ( found ) 710 if ( found )
711 skip = !test2->matchTime( &startDT, &conflict ); 711 skip = !test2->matchTime( &startDT, &conflict );
712 else 712 else
713 skip = !test2->matchTime( &startDT, 0 ); 713 skip = !test2->matchTime( &startDT, 0 );
714 } 714 }
715 if ( !skip ) { 715 if ( !skip ) {
716 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) { 716 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
717 //qDebug("overlap "); 717 //qDebug("overlap ");
718 if ( ! found ) { 718 if ( ! found ) {
719 if ( retVal >= startDT ) { 719 if ( retVal >= startDT ) {
720 conflict = retVal; 720 conflict = retVal;
721 cE = test; 721 cE = test;
722 cE2 = test2; 722 cE2 = test2;
723 found = true; 723 found = true;
724 } 724 }
725 } else { 725 } else {
726 if ( retVal >= startDT && retVal < conflict ) { 726 if ( retVal >= startDT && retVal < conflict ) {
727 conflict = retVal; 727 conflict = retVal;
728 cE = test; 728 cE = test;
729 cE2 = test2; 729 cE2 = test2;
730 } 730 }
731 } 731 }
732 } 732 }
733 } 733 }
734 test2 = testlist2.next(); 734 test2 = testlist2.next();
735 } 735 }
736 } 736 }
737 test->setTagged( true ); 737 test->setTagged( true );
738 test = testlist.next(); 738 test = testlist.next();
739 } 739 }
740 //qDebug("Search time : %d", tm.elapsed()); 740 //qDebug("Search time : %d", tm.elapsed());
741 if ( found ) { 741 if ( found ) {
742 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 742 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
743 mViewManager->showDayView(); 743 mViewManager->showDayView();
744 mNavigator->slotDaySelect( conflict.date() ); 744 mNavigator->slotDaySelect( conflict.date() );
745 int hour = conflict.time().hour(); 745 int hour = conflict.time().hour();
746 mViewManager->agendaView()->setStartHour( hour ); 746 mViewManager->agendaView()->setStartHour( hour );
747 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) ); 747 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
748 flag_blockConflict = false; 748 flag_blockConflict = false;
749 return; 749 return;
750 } 750 }
751 751
752 topLevelWidget()->setCaption( i18n("No conflict found") ); 752 topLevelWidget()->setCaption( i18n("No conflict found") );
753 //qDebug("No conflict found "); 753 //qDebug("No conflict found ");
754 flag_blockConflict = false; 754 flag_blockConflict = false;
755 return; 755 return;
756} 756}
757 757
758void CalendarView::conflictAll() 758void CalendarView::conflictAll()
759{ 759{
760 nextConflict ( true, true ); 760 nextConflict ( true, true );
761} 761}
762void CalendarView::conflictAllday() 762void CalendarView::conflictAllday()
763{ 763{
764 nextConflict ( false, true ); 764 nextConflict ( false, true );
765} 765}
766void CalendarView::conflictNotAll() 766void CalendarView::conflictNotAll()
767{ 767{
768 nextConflict ( false, false ); 768 nextConflict ( false, false );
769} 769}
770 770
771void CalendarView::setCalReadOnly( int id, bool readO ) 771void CalendarView::setCalReadOnly( int id, bool readO )
772{ 772{
773 if ( readO ) { 773 if ( readO ) {
774 emit save(); 774 emit save();
775 } 775 }
776 mCalendar->setReadOnly( id, readO ); 776 mCalendar->setReadOnly( id, readO );
777} 777}
778void CalendarView::setScrollBarStep(int val ) 778void CalendarView::setScrollBarStep(int val )
779{ 779{
780#ifdef DESKTOP_VERSION 780#ifdef DESKTOP_VERSION
781 mDateScrollBar->setLineStep ( val ); 781 mDateScrollBar->setLineStep ( val );
782#endif 782#endif
783} 783}
784void CalendarView::scrollBarValue(int val ) 784void CalendarView::scrollBarValue(int val )
785{ 785{
786#ifdef DESKTOP_VERSION 786#ifdef DESKTOP_VERSION
787 if ( QApplication::desktop()->width() < 800 ) return; 787 if ( QApplication::desktop()->width() < 800 ) return;
788 if ( flag_blockScrollBar ) return; 788 if ( flag_blockScrollBar ) return;
789 flag_blockScrollBar = true; 789 flag_blockScrollBar = true;
790 int count = mNavigator->selectedDates().count(); 790 int count = mNavigator->selectedDates().count();
791 int day = mNavigator->selectedDates().first().dayOfYear(); 791 int day = mNavigator->selectedDates().first().dayOfYear();
792 int stepdays = val; 792 int stepdays = val;
793 if ( mDateScrollBar->lineStep () <= count ) { 793 if ( mDateScrollBar->lineStep () <= count ) {
794 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 794 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
795 //qDebug("VAL %d ",val ); 795 //qDebug("VAL %d ",val );
796 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 796 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
797 stepdays = day+stepdays; 797 stepdays = day+stepdays;
798 if ( stepdays < 0 ) stepdays = 0; 798 if ( stepdays < 0 ) stepdays = 0;
799 } 799 }
800 if ( stepdays == day ) { 800 if ( stepdays == day ) {
801 flag_blockScrollBar = false; 801 flag_blockScrollBar = false;
802 return; 802 return;
803 } 803 }
804 int year = mNavigator->selectedDates().first().year(); 804 int year = mNavigator->selectedDates().first().year();
805 QDate d ( year,1,1 ); 805 QDate d ( year,1,1 );
806 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 806 mNavigator->selectDates( d.addDays( stepdays-1) , count );
807 flag_blockScrollBar = false; 807 flag_blockScrollBar = false;
808#endif 808#endif
809 809
810} 810}
811void CalendarView::updateView(const QDate &start, const QDate &end) 811void CalendarView::updateView(const QDate &start, const QDate &end)
812{ 812{
813#ifdef DESKTOP_VERSION 813#ifdef DESKTOP_VERSION
814 if ( ! mDateScrollBar->draggingSlider () ) { 814 if ( ! mDateScrollBar->draggingSlider () ) {
815 int dof = start.dayOfYear(); 815 int dof = start.dayOfYear();
816 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 816 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
817 if ( dof != mDateScrollBar->value() ) { 817 if ( dof != mDateScrollBar->value() ) {
818 mDateScrollBar->blockSignals( true ); 818 mDateScrollBar->blockSignals( true );
819 mDateScrollBar->setValue( start.dayOfYear()); 819 mDateScrollBar->setValue( start.dayOfYear());
820 mDateScrollBar->blockSignals( false ); 820 mDateScrollBar->blockSignals( false );
821 } 821 }
822 } 822 }
823#endif 823#endif
824 mTodoList->updateView(); 824 mTodoList->updateView();
825 mViewManager->updateView(start, end); 825 mViewManager->updateView(start, end);
826 //mDateNavigator->updateView(); 826 //mDateNavigator->updateView();
827} 827}
828 828
829 829
830 830
831void CalendarView::checkFiles() 831void CalendarView::checkFiles()
832{ 832{
833 QString message; 833 QString message;
834 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 834 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
835 KopiCalendarFile * cal = calendars.first(); 835 KopiCalendarFile * cal = calendars.first();
836 while ( cal ) { 836 while ( cal ) {
837 if ( cal->mErrorOnLoad ) { 837 if ( cal->mErrorOnLoad ) {
838 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 838 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
839 } 839 }
840 cal = calendars.next(); 840 cal = calendars.next();
841 } 841 }
842 if ( !message.isEmpty() ) { 842 if ( !message.isEmpty() ) {
843 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 843 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
844 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed")); 844 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed"));
845 } 845 }
846 if ( flag_checkFileFirsttime ) { 846 if ( flag_checkFileFirsttime ) {
847 flag_checkFileFirsttime = false; 847 flag_checkFileFirsttime = false;
848 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 848 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
849 } 849 }
850} 850}
851void CalendarView::checkAlarms() 851void CalendarView::checkAlarms()
852{ 852{
853 KConfig *config = KOGlobals::config(); 853 KConfig *config = KOGlobals::config();
854 config->setGroup( "AppRun" ); 854 config->setGroup( "AppRun" );
855 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 855 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
856 int daysto = dt.daysTo( QDate::currentDate() ); 856 int daysto = dt.daysTo( QDate::currentDate() );
857 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 857 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
858 dt = dt.addDays( days ); 858 dt = dt.addDays( days );
859 int secto = dt.secsTo( QDateTime::currentDateTime() ); 859 int secto = dt.secsTo( QDateTime::currentDateTime() );
860 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 860 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
861 //qDebug("KO: Reading program stop %d ", secs); 861 //qDebug("KO: Reading program stop %d ", secs);
862 //secs -= ( 3600 * 24*3 ); // debug only 862 //secs -= ( 3600 * 24*3 ); // debug only
863 QDateTime latest = dt.addSecs ( secs ); 863 QDateTime latest = dt.addSecs ( secs );
864 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 864 qDebug("KO: Last termination on %s ", latest.toString().latin1());
865 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 865 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
866 QPtrList<Incidence> el = mCalendar->rawIncidences(); 866 QPtrList<Incidence> el = mCalendar->rawIncidences();
867 QPtrList<Incidence> al; 867 QPtrList<Incidence> al;
868 Incidence* inL = el.first(); 868 Incidence* inL = el.first();
869 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 869 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
870 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 870 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
871 while ( inL ) { 871 while ( inL ) {
872 bool ok = false; 872 bool ok = false;
873 int offset = 0; 873 int offset = 0;
874 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 874 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
875 if ( ok ) { 875 if ( ok ) {
876 //qDebug("OK %s",next.toString().latin1()); 876 //qDebug("OK %s",next.toString().latin1());
877 if ( next < cur ) { 877 if ( next < cur ) {
878 al.append( inL ); 878 al.append( inL );
879 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 879 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
880 } 880 }
881 } 881 }
882 inL = el.next(); 882 inL = el.next();
883 } 883 }
884 if ( al.count() ) { 884 if ( al.count() ) {
885 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 885 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
886 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 886 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
887 QVBoxLayout* lay = new QVBoxLayout( dia ); 887 QVBoxLayout* lay = new QVBoxLayout( dia );
888 lay->setSpacing( 0 ); 888 lay->setSpacing( 0 );
889 lay->setMargin( 0 ); 889 lay->setMargin( 0 );
890 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 890 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
891 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 891 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
892 lay->addWidget( matb ); 892 lay->addWidget( matb );
893 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 893 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
894 int wid = 210; 894 int wid = 210;
895 int x = QApplication::desktop()->width() - wid - 7; 895 int x = QApplication::desktop()->width() - wid - 7;
896 int y = QApplication::desktop()->height() - wid - 70; 896 int y = QApplication::desktop()->height() - wid - 70;
897 dia->setGeometry ( x,y,wid,wid); 897 dia->setGeometry ( x,y,wid,wid);
898 } else { 898 } else {
899 int si = 220; 899 int si = 220;
900 if ( QApplication::desktop()->width() > 470 ) 900 if ( QApplication::desktop()->width() > 470 )
901 si = 400; 901 si = 400;
902 dia->resize(si,si/2); 902 dia->resize(si,si/2);
903 } 903 }
904 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 904 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
905 dia->show(); 905 dia->show();
906 906
907 } 907 }
908#if 0 908#if 0
909 // for creating timetracker test data 909 // for creating timetracker test data
910 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc "); 910 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc ");
911 Todo * nt; 911 Todo * nt;
912 mCalendar->close(); 912 mCalendar->close();
913 { 913 {
914 Todo * root1 = new Todo; 914 Todo * root1 = new Todo;
915 mCalendar->addTodo( root1 ); 915 mCalendar->addTodo( root1 );
916 root1->setSummary( "Project1"); 916 root1->setSummary( "Project1");
917 root1->setPriority( 1 ); 917 root1->setPriority( 1 );
918 root1->setCategories( QString( "Cat_Pro1") ); 918 root1->setCategories( QString( "Cat_Pro1") );
919 root1->setDescription( "This is a test description of a root Project" ); 919 root1->setDescription( "This is a test description of a root Project" );
920 root1->setPercentComplete( 20 ); 920 root1->setPercentComplete( 20 );
921 updateView(); 921 updateView();
922 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 922 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
923 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) ); 923 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
924 924
925 nt = new Todo; 925 nt = new Todo;
926 mCalendar->addTodo( nt ); 926 mCalendar->addTodo( nt );
927 nt->setSummary( "Planning Project1"); 927 nt->setSummary( "Planning Project1");
928 nt->setPriority( 1 ); 928 nt->setPriority( 1 );
929 nt->setDescription( "This is a test description of Planning Project1" ); 929 nt->setDescription( "This is a test description of Planning Project1" );
930 nt->setPercentComplete( 20 ); 930 nt->setPercentComplete( 20 );
931 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") ); 931 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") );
932 932
933 933
934 Todo * sub1 = nt; 934 Todo * sub1 = nt;
935 sub1->setRelatedTo( root1 ); 935 sub1->setRelatedTo( root1 );
936 936
937 nt = new Todo; 937 nt = new Todo;
938 mCalendar->addTodo( nt ); 938 mCalendar->addTodo( nt );
939 nt->setSummary( "Planning Project1: Lutz"); 939 nt->setSummary( "Planning Project1: Lutz");
940 nt->setPriority( 1 ); 940 nt->setPriority( 1 );
941 nt->setDescription( "This todo counts the actual work of a person on a project" ); 941 nt->setDescription( "This todo counts the actual work of a person on a project" );
942 nt->setPercentComplete( 20 ); 942 nt->setPercentComplete( 20 );
943 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") ); 943 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") );
944 Todo * workLutz11 = nt; 944 Todo * workLutz11 = nt;
945 workLutz11->setRelatedTo( sub1 ); 945 workLutz11->setRelatedTo( sub1 );
946 946
947 nt = new Todo; 947 nt = new Todo;
948 mCalendar->addTodo( nt ); 948 mCalendar->addTodo( nt );
949 nt->setSummary( "Planning Project1: Norbert"); 949 nt->setSummary( "Planning Project1: Norbert");
950 nt->setPriority( 1 ); 950 nt->setPriority( 1 );
951 nt->setDescription( "This todo counts the actual work of a person on a project" ); 951 nt->setDescription( "This todo counts the actual work of a person on a project" );
952 nt->setPercentComplete( 20 ); 952 nt->setPercentComplete( 20 );
953 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") ); 953 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") );
954 Todo * workNorbert11 = nt; 954 Todo * workNorbert11 = nt;
955 workNorbert11->setRelatedTo( sub1 ); 955 workNorbert11->setRelatedTo( sub1 );
956 956
957 nt = new Todo; 957 nt = new Todo;
958 mCalendar->addTodo( nt ); 958 mCalendar->addTodo( nt );
959 nt->setSummary( "Work on 1"); 959 nt->setSummary( "Work on 1");
960 nt->setPriority( 1 ); 960 nt->setPriority( 1 );
961 nt->setDescription( "This is a test description of Work Project_1" ); 961 nt->setDescription( "This is a test description of Work Project_1" );
962 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") ); 962 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") );
963 nt->setPercentComplete( 20 ); 963 nt->setPercentComplete( 20 );
964 964
965 Todo * sub2 = nt; 965 Todo * sub2 = nt;
966 sub2->setRelatedTo( root1 ); 966 sub2->setRelatedTo( root1 );
967 967
968 968
969 nt = new Todo; 969 nt = new Todo;
970 mCalendar->addTodo( nt ); 970 mCalendar->addTodo( nt );
971 nt->setSummary( "Work on 1: Lutz"); 971 nt->setSummary( "Work on 1: Lutz");
972 nt->setPriority( 1 ); 972 nt->setPriority( 1 );
973 nt->setDescription( "This todo counts the actual work of a person on a project" ); 973 nt->setDescription( "This todo counts the actual work of a person on a project" );
974 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") ); 974 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") );
975 nt->setPercentComplete( 20 ); 975 nt->setPercentComplete( 20 );
976 Todo * workLutz12 = nt; 976 Todo * workLutz12 = nt;
977 workLutz12->setRelatedTo( sub2 ); 977 workLutz12->setRelatedTo( sub2 );
978 978
979 nt = new Todo; 979 nt = new Todo;
980 mCalendar->addTodo( nt ); 980 mCalendar->addTodo( nt );
981 nt->setSummary( "Work on 1: Norbert"); 981 nt->setSummary( "Work on 1: Norbert");
982 nt->setPriority( 1 ); 982 nt->setPriority( 1 );
983 nt->setDescription( "This todo counts the actual work of a person on a project" ); 983 nt->setDescription( "This todo counts the actual work of a person on a project" );
984 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") ); 984 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") );
985 nt->setPercentComplete( 20 ); 985 nt->setPercentComplete( 20 );
986 Todo * workNorbert12 = nt; 986 Todo * workNorbert12 = nt;
987 workNorbert12->setRelatedTo( sub2 ); 987 workNorbert12->setRelatedTo( sub2 );
988 988
989 int secLenRunning = 7200; 989 int secLenRunning = 7200;
990 int secLenPausing = 3600 * 3; 990 int secLenPausing = 3600 * 3;
991 int dayInterval = 1; 991 int dayInterval = 1;
992 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval ); 992 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval );
993 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 ); 993 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 );
994 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1); 994 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1);
995 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3); 995 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3);
996 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0); 996 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0);
997 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1); 997 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1);
998 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3); 998 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3);
999 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0); 999 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0);
1000 1000
1001 } 1001 }
1002 1002
1003 { 1003 {
1004 Todo * root1 = new Todo; 1004 Todo * root1 = new Todo;
1005 mCalendar->addTodo( root1 ); 1005 mCalendar->addTodo( root1 );
1006 root1->setSummary( "Project2"); 1006 root1->setSummary( "Project2");
1007 root1->setPriority( 1 ); 1007 root1->setPriority( 1 );
1008 root1->setDescription( "This is a test description of a root Project 2" ); 1008 root1->setDescription( "This is a test description of a root Project 2" );
1009 root1->setPercentComplete( 20 ); 1009 root1->setPercentComplete( 20 );
1010 root1->setCategories( QString( "Cat_Pro2") ); 1010 root1->setCategories( QString( "Cat_Pro2") );
1011 updateView(); 1011 updateView();
1012 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 1012 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
1013 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) ); 1013 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
1014 int secLenRunning = 7200; 1014 int secLenRunning = 7200;
1015 int secLenPausing = 3600 * 3; 1015 int secLenPausing = 3600 * 3;
1016 int dayInterval = 1; 1016 int dayInterval = 1;
1017 1017
1018 nt = new Todo; 1018 nt = new Todo;
1019 mCalendar->addTodo( nt ); 1019 mCalendar->addTodo( nt );
1020 nt->setSummary( "Planning Project2"); 1020 nt->setSummary( "Planning Project2");
1021 nt->setPriority( 1 ); 1021 nt->setPriority( 1 );
1022 nt->setDescription( "This is a test description of Planning_Project_2" ); 1022 nt->setDescription( "This is a test description of Planning_Project_2" );
1023 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2") ); 1023 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2") );
1024 nt->setPercentComplete( 20 ); 1024 nt->setPercentComplete( 20 );
1025 1025
1026 1026
1027 Todo * sub1 = nt; 1027 Todo * sub1 = nt;
1028 sub1->setRelatedTo( root1 ); 1028 sub1->setRelatedTo( root1 );
1029 1029
1030 nt = new Todo; 1030 nt = new Todo;
1031 mCalendar->addTodo( nt ); 1031 mCalendar->addTodo( nt );
1032 nt->setSummary( "Planning Project2: Lutz"); 1032 nt->setSummary( "Planning Project2: Lutz");
1033 nt->setPriority( 1 ); 1033 nt->setPriority( 1 );
1034 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1034 nt->setDescription( "This todo counts the actual work of a person on a project" );
1035 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Lutz") ); 1035 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Lutz") );
1036 nt->setPercentComplete( 20 ); 1036 nt->setPercentComplete( 20 );
1037 Todo * workLutz11 = nt; 1037 Todo * workLutz11 = nt;
1038 workLutz11->setRelatedTo( sub1 ); 1038 workLutz11->setRelatedTo( sub1 );
1039 1039
1040 nt = new Todo; 1040 nt = new Todo;
1041 mCalendar->addTodo( nt ); 1041 mCalendar->addTodo( nt );
1042 nt->setSummary( "Planning Project2: Norbert"); 1042 nt->setSummary( "Planning Project2: Norbert");
1043 nt->setPriority( 1 ); 1043 nt->setPriority( 1 );
1044 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1044 nt->setDescription( "This todo counts the actual work of a person on a project" );
1045 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Norbert") ); 1045 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Norbert") );
1046 nt->setPercentComplete( 20 ); 1046 nt->setPercentComplete( 20 );
1047 Todo * workNorbert11 = nt; 1047 Todo * workNorbert11 = nt;
1048 workNorbert11->setRelatedTo( sub1 ); 1048 workNorbert11->setRelatedTo( sub1 );
1049 1049
1050 nt = new Todo; 1050 nt = new Todo;
1051 mCalendar->addTodo( nt ); 1051 mCalendar->addTodo( nt );
1052 nt->setSummary( "Work on 2"); 1052 nt->setSummary( "Work on 2");
1053 nt->setPriority( 1 ); 1053 nt->setPriority( 1 );
1054 nt->setDescription( "This is a test description of Work Project_2" ); 1054 nt->setDescription( "This is a test description of Work Project_2" );
1055 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2") ); 1055 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2") );
1056 nt->setPercentComplete( 20 ); 1056 nt->setPercentComplete( 20 );
1057 1057
1058 Todo * sub2 = nt; 1058 Todo * sub2 = nt;
1059 sub2->setRelatedTo( root1 ); 1059 sub2->setRelatedTo( root1 );
1060 1060
1061 1061
1062 nt = new Todo; 1062 nt = new Todo;
1063 mCalendar->addTodo( nt ); 1063 mCalendar->addTodo( nt );
1064 nt->setSummary( "Work on 2: Lutz"); 1064 nt->setSummary( "Work on 2: Lutz");
1065 nt->setPriority( 1 ); 1065 nt->setPriority( 1 );
1066 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1066 nt->setDescription( "This todo counts the actual work of a person on a project" );
1067 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Lutz") ); 1067 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Lutz") );
1068 nt->setPercentComplete( 20 ); 1068 nt->setPercentComplete( 20 );
1069 Todo * workLutz12 = nt; 1069 Todo * workLutz12 = nt;
1070 workLutz12->setRelatedTo( sub2 ); 1070 workLutz12->setRelatedTo( sub2 );
1071 1071
1072 nt = new Todo; 1072 nt = new Todo;
1073 mCalendar->addTodo( nt ); 1073 mCalendar->addTodo( nt );
1074 nt->setSummary( "Work on 2: Norbert"); 1074 nt->setSummary( "Work on 2: Norbert");
1075 nt->setPriority( 1 ); 1075 nt->setPriority( 1 );
1076 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1076 nt->setDescription( "This todo counts the actual work of a person on a project" );
1077 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Norbert") ); 1077 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Norbert") );
1078 nt->setPercentComplete( 20 ); 1078 nt->setPercentComplete( 20 );
1079 Todo * workNorbert12 = nt; 1079 Todo * workNorbert12 = nt;
1080 workNorbert12->setRelatedTo( sub2 ); 1080 workNorbert12->setRelatedTo( sub2 );
1081 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 ); 1081 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 );
1082 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2); 1082 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2);
1083 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7); 1083 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7);
1084 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0); 1084 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0);
1085 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1); 1085 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1);
1086 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0); 1086 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0);
1087 createRunningDate4Todo( workNorbert12, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0); 1087 createRunningDate4Todo( workNorbert12, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0);
1088 } 1088 }
1089 updateView(); 1089 updateView();
1090#endif 1090#endif
1091 1091
1092} 1092}
1093void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval ) 1093void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval )
1094{ 1094{
1095 static int ccc = 0; 1095 static int ccc = 0;
1096 ++ccc; 1096 ++ccc;
1097 QDateTime t_start = start; 1097 QDateTime t_start = start;
1098 runT->setPriority( 5 ); 1098 runT->setPriority( 5 );
1099 runT->setPercentComplete( 0 ); 1099 runT->setPercentComplete( 0 );
1100 int count = 0; 1100 int count = 0;
1101 int prio = 5; 1101 int prio = 5;
1102 int complete = 0; 1102 int complete = 0;
1103 while ( t_start < end ) { 1103 while ( t_start < end ) {
1104 ++count; 1104 ++count;
1105 if ( count > ccc ) { 1105 if ( count > ccc ) {
1106 count = 0; 1106 count = 0;
1107 --prio; 1107 --prio;
1108 if ( prio == 0 ) prio = 5; 1108 if ( prio == 0 ) prio = 5;
1109 complete += 20; 1109 complete += 20;
1110 if ( complete > 100 ) complete = 0; 1110 if ( complete > 100 ) complete = 0;
1111 runT->setPriority( prio ); 1111 runT->setPriority( prio );
1112 runT->setPercentComplete( complete ); 1112 runT->setPercentComplete( complete );
1113 } 1113 }
1114 runT->setRunning( true ); 1114 runT->setRunning( true );
1115 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) ); 1115 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) );
1116 if ( dayInterval ) 1116 if ( dayInterval )
1117 t_start = t_start.addDays( dayInterval ); 1117 t_start = t_start.addDays( dayInterval );
1118 else { 1118 else {
1119 t_start = t_start.addSecs( secLenRunning + secLenPausing ); 1119 t_start = t_start.addSecs( secLenRunning + secLenPausing );
1120 } 1120 }
1121 } 1121 }
1122} 1122}
1123 1123
1124void CalendarView::showDay( QDate d ) 1124void CalendarView::showDay( QDate d )
1125{ 1125{
1126 dateNavigator()->blockSignals( true ); 1126 dateNavigator()->blockSignals( true );
1127 dateNavigator()->selectDate( d ); 1127 dateNavigator()->selectDate( d );
1128 dateNavigator()->blockSignals( false ); 1128 dateNavigator()->blockSignals( false );
1129 mViewManager->showDayView(); 1129 mViewManager->showDayView();
1130 //dateNavigator()->selectDate( d ); 1130 //dateNavigator()->selectDate( d );
1131} 1131}
1132void CalendarView::timerAlarm() 1132void CalendarView::timerAlarm()
1133{ 1133{
1134 //qDebug("CalendarView::timerAlarm() "); 1134 //qDebug("CalendarView::timerAlarm() ");
1135 computeAlarm(mAlarmNotification ); 1135 computeAlarm(mAlarmNotification );
1136} 1136}
1137 1137
1138void CalendarView::suspendAlarm() 1138void CalendarView::suspendAlarm()
1139{ 1139{
1140 //qDebug(" CalendarView::suspendAlarm() "); 1140 //qDebug(" CalendarView::suspendAlarm() ");
1141 computeAlarm(mSuspendAlarmNotification ); 1141 computeAlarm(mSuspendAlarmNotification );
1142 1142
1143} 1143}
1144 1144
1145void CalendarView::startAlarm( QString mess , QString filename) 1145void CalendarView::startAlarm( QString mess , QString filename)
1146{ 1146{
1147 1147
1148 topLevelWidget()->showNormal(); 1148 topLevelWidget()->showNormal();
1149 topLevelWidget()->setActiveWindow(); 1149 topLevelWidget()->setActiveWindow();
1150 topLevelWidget()->raise(); 1150 topLevelWidget()->raise();
1151 1151
1152 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 1152 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
1153 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) ); 1153 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) );
1154 1154
1155} 1155}
1156 1156
1157void CalendarView::checkNextTimerAlarm() 1157void CalendarView::checkNextTimerAlarm()
1158{ 1158{
1159 mCalendar->checkAlarmForIncidence( 0, true ); 1159 mCalendar->checkAlarmForIncidence( 0, true );
1160} 1160}
1161 1161
1162void CalendarView::computeAlarm( QString msg ) 1162void CalendarView::computeAlarm( QString msg )
1163{ 1163{
1164 1164
1165 QString mess = msg; 1165 QString mess = msg;
1166 QString mAlarmMessage = mess.mid( 9 ); 1166 QString mAlarmMessage = mess.mid( 9 );
1167 QString filename = MainWindow::resourcePath(); 1167 QString filename = MainWindow::resourcePath();
1168 filename += "koalarm.wav"; 1168 filename += "koalarm.wav";
1169 QString tempfilename; 1169 QString tempfilename;
1170 if ( mess.left( 13 ) == "suspend_alarm") { 1170 if ( mess.left( 13 ) == "suspend_alarm") {
1171 bool error = false; 1171 bool error = false;
1172 int len = mess.mid( 13 ).find("+++"); 1172 int len = mess.mid( 13 ).find("+++");
1173 if ( len < 2 ) 1173 if ( len < 2 )
1174 error = true; 1174 error = true;
1175 else { 1175 else {
1176 tempfilename = mess.mid( 13, len ); 1176 tempfilename = mess.mid( 13, len );
1177 if ( !QFile::exists( tempfilename ) ) 1177 if ( !QFile::exists( tempfilename ) )
1178 error = true; 1178 error = true;
1179 } 1179 }
1180 if ( ! error ) { 1180 if ( ! error ) {
1181 filename = tempfilename; 1181 filename = tempfilename;
1182 } 1182 }
1183 mAlarmMessage = mess.mid( 13+len+3 ); 1183 mAlarmMessage = mess.mid( 13+len+3 );
1184 //qDebug("suspend file %s ",tempfilename.latin1() ); 1184 //qDebug("suspend file %s ",tempfilename.latin1() );
1185 startAlarm( mAlarmMessage, filename); 1185 startAlarm( mAlarmMessage, filename);
1186 return; 1186 return;
1187 } 1187 }
1188 if ( mess.left( 11 ) == "timer_alarm") { 1188 if ( mess.left( 11 ) == "timer_alarm") {
1189 //mTimerTime = 0; 1189 //mTimerTime = 0;
1190 startAlarm( mess.mid( 11 ), filename ); 1190 startAlarm( mess.mid( 11 ), filename );
1191 return; 1191 return;
1192 } 1192 }
1193 if ( mess.left( 10 ) == "proc_alarm") { 1193 if ( mess.left( 10 ) == "proc_alarm") {
1194 bool error = false; 1194 bool error = false;
1195 int len = mess.mid( 10 ).find("+++"); 1195 int len = mess.mid( 10 ).find("+++");
1196 if ( len < 2 ) 1196 if ( len < 2 )
1197 error = true; 1197 error = true;
1198 else { 1198 else {
1199 tempfilename = mess.mid( 10, len ); 1199 tempfilename = mess.mid( 10, len );
1200 if ( !QFile::exists( tempfilename ) ) 1200 if ( !QFile::exists( tempfilename ) )
1201 error = true; 1201 error = true;
1202 } 1202 }
1203 if ( error ) { 1203 if ( error ) {
1204 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 1204 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
1205 mAlarmMessage += mess.mid( 10+len+3+9 ); 1205 mAlarmMessage += mess.mid( 10+len+3+9 );
1206 } else { 1206 } else {
1207 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 1207 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
1208 //qDebug("-----system command %s ",tempfilename.latin1() ); 1208 //qDebug("-----system command %s ",tempfilename.latin1() );
1209#ifndef _WIN32_ 1209#ifndef _WIN32_
1210 if ( vfork () == 0 ) { 1210 if ( vfork () == 0 ) {
1211 execl ( tempfilename.latin1(), 0 ); 1211 execl ( tempfilename.latin1(), 0 );
1212 return; 1212 return;
1213 } 1213 }
1214#else 1214#else
1215 QProcess* p = new QProcess(); 1215 QProcess* p = new QProcess();
1216 p->addArgument( tempfilename.latin1() ); 1216 p->addArgument( tempfilename.latin1() );
1217 p->start(); 1217 p->start();
1218 return; 1218 return;
1219#endif 1219#endif
1220 1220
1221 return; 1221 return;
1222 } 1222 }
1223 1223
1224 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 1224 //qDebug("+++++++system command %s ",tempfilename.latin1() );
1225 } 1225 }
1226 if ( mess.left( 11 ) == "audio_alarm") { 1226 if ( mess.left( 11 ) == "audio_alarm") {
1227 bool error = false; 1227 bool error = false;
1228 int len = mess.mid( 11 ).find("+++"); 1228 int len = mess.mid( 11 ).find("+++");
1229 if ( len < 2 ) 1229 if ( len < 2 )
1230 error = true; 1230 error = true;
1231 else { 1231 else {
1232 tempfilename = mess.mid( 11, len ); 1232 tempfilename = mess.mid( 11, len );
1233 if ( !QFile::exists( tempfilename ) ) 1233 if ( !QFile::exists( tempfilename ) )
1234 error = true; 1234 error = true;
1235 } 1235 }
1236 if ( ! error ) { 1236 if ( ! error ) {
1237 filename = tempfilename; 1237 filename = tempfilename;
1238 } 1238 }
1239 mAlarmMessage = mess.mid( 11+len+3+9 ); 1239 mAlarmMessage = mess.mid( 11+len+3+9 );
1240 //qDebug("audio file command %s ",tempfilename.latin1() ); 1240 //qDebug("audio file command %s ",tempfilename.latin1() );
1241 } 1241 }
1242 if ( mess.left( 9 ) == "cal_alarm") { 1242 if ( mess.left( 9 ) == "cal_alarm") {
1243 mAlarmMessage = mess.mid( 9 ) ; 1243 mAlarmMessage = mess.mid( 9 ) ;
1244 } 1244 }
1245 1245
1246 startAlarm( mAlarmMessage, filename ); 1246 startAlarm( mAlarmMessage, filename );
1247 1247
1248 1248
1249} 1249}
1250 1250
1251void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 1251void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
1252{ 1252{
1253 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1253 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1254 1254
1255 mSuspendAlarmNotification = noti; 1255 mSuspendAlarmNotification = noti;
1256 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 1256 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
1257 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 1257 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
1258 mSuspendTimer->start( ms , true ); 1258 mSuspendTimer->start( ms , true );
1259#ifdef DESKTOP_VERSION 1259#ifdef DESKTOP_VERSION
1260 if ( QApplication::desktop()->width() < 1024 ) { 1260 if ( QApplication::desktop()->width() < 1024 ) {
1261 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti; 1261 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti;
1262 //qDebug("nextsuspendalarm = \n%s ",mess.latin1() ); 1262 //qDebug("nextsuspendalarm = \n%s ",mess.latin1() );
1263 QString fn = QDir::homeDirPath() + "/.kopi_suspend_alarm"; 1263 QString fn = QDir::homeDirPath() + "/.kopi_suspend_alarm";
1264 QFile file( fn ); 1264 QFile file( fn );
1265 if (!file.open( IO_WriteOnly ) ) { 1265 if (!file.open( IO_WriteOnly ) ) {
1266 qDebug("KO: Error writing next suspend alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1()); 1266 qDebug("KO: Error writing next suspend alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1());
1267 } else { 1267 } else {
1268 QTextStream ts( &file ); 1268 QTextStream ts( &file );
1269 ts << mess; 1269 ts << mess;
1270 file.close(); 1270 file.close();
1271 } 1271 }
1272 } 1272 }
1273#endif 1273#endif
1274 1274
1275} 1275}
1276 1276
1277void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 1277void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
1278{ 1278{
1279 mNextAlarmDateTime = qdt; 1279 mNextAlarmDateTime = qdt;
1280 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1280 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1281 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1281 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1282#ifndef DESKTOP_VERSION 1282#ifndef DESKTOP_VERSION
1283 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() ); 1283 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() );
1284#endif 1284#endif
1285 return; 1285 return;
1286 } 1286 }
1287#ifdef DESKTOP_VERSION 1287#ifdef DESKTOP_VERSION
1288 if ( QApplication::desktop()->width() < 1024 ) { 1288 if ( QApplication::desktop()->width() < 1024 ) {
1289 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti; 1289 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti;
1290 //qDebug("nextalarm = \n%s ",mess.latin1() ); 1290 //qDebug("nextalarm = \n%s ",mess.latin1() );
1291 QString fn = QDir::homeDirPath() + "/.kopi_next_alarm"; 1291 QString fn = QDir::homeDirPath() + "/.kopi_next_alarm";
1292 QFile file( fn ); 1292 QFile file( fn );
1293 if (!file.open( IO_WriteOnly ) ) { 1293 if (!file.open( IO_WriteOnly ) ) {
1294 qDebug("KO: Error writing next alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1()); 1294 qDebug("KO: Error writing next alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1());
1295 } else { 1295 } else {
1296 QTextStream ts( &file ); 1296 QTextStream ts( &file );
1297 ts << mess; 1297 ts << mess;
1298 file.close(); 1298 file.close();
1299 } 1299 }
1300 } 1300 }
1301#endif 1301#endif
1302 int maxSec; 1302 int maxSec;
1303 //maxSec = 5; //testing only 1303 //maxSec = 5; //testing only
1304 maxSec = 86400+3600; // one day+1hour 1304 maxSec = 86400+3600; // one day+1hour
1305 mAlarmNotification = noti; 1305 mAlarmNotification = noti;
1306 int sec = QDateTime::currentDateTime().secsTo( qdt ); 1306 int sec = QDateTime::currentDateTime().secsTo( qdt );
1307 if ( sec > maxSec ) { 1307 if ( sec > maxSec ) {
1308 mRecheckAlarmTimer->start( maxSec * 1000 ); 1308 mRecheckAlarmTimer->start( maxSec * 1000 );
1309 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 1309 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
1310 return; 1310 return;
1311 } else { 1311 } else {
1312 mRecheckAlarmTimer->stop(); 1312 mRecheckAlarmTimer->stop();
1313 } 1313 }
1314 //qDebug("Alarm timer started with secs: %d ", sec); 1314 //qDebug("Alarm timer started with secs: %d ", sec);
1315 mAlarmTimer->start( sec * 1000 , true ); 1315 mAlarmTimer->start( sec * 1000 , true );
1316 1316
1317} 1317}
1318// called by mRecheckAlarmTimer to get next alarm 1318// called by mRecheckAlarmTimer to get next alarm
1319// we need this, because a QTimer has only a max range of 25 days 1319// we need this, because a QTimer has only a max range of 25 days
1320void CalendarView::recheckTimerAlarm() 1320void CalendarView::recheckTimerAlarm()
1321{ 1321{
1322 mAlarmTimer->stop(); 1322 mAlarmTimer->stop();
1323 mRecheckAlarmTimer->stop(); 1323 mRecheckAlarmTimer->stop();
1324 mCalendar->checkAlarmForIncidence( 0, true ); 1324 mCalendar->checkAlarmForIncidence( 0, true );
1325} 1325}
1326#ifndef DESKTOP_VERSION 1326#ifndef DESKTOP_VERSION
1327void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 1327void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
1328#else 1328#else
1329void CalendarView::removeAlarm(const QDateTime &, const QString & ) 1329void CalendarView::removeAlarm(const QDateTime &, const QString & )
1330#endif 1330#endif
1331{ 1331{
1332 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1332 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1333 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1333 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1334#ifndef DESKTOP_VERSION 1334#ifndef DESKTOP_VERSION
1335 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() ); 1335 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() );
1336#endif 1336#endif
1337 return; 1337 return;
1338 } 1338 }
1339 mAlarmTimer->stop(); 1339 mAlarmTimer->stop();
1340} 1340}
1341void CalendarView::selectWeekNum ( int num ) 1341void CalendarView::selectWeekNum ( int num )
1342{ 1342{
1343 dateNavigator()->blockSignals( true ); 1343 dateNavigator()->blockSignals( true );
1344 dateNavigator()->selectWeek( num ); 1344 dateNavigator()->selectWeek( num );
1345 dateNavigator()->blockSignals( false ); 1345 dateNavigator()->blockSignals( false );
1346 mViewManager->showWeekView(); 1346 mViewManager->showWeekView();
1347} 1347}
1348KOViewManager *CalendarView::viewManager() 1348KOViewManager *CalendarView::viewManager()
1349{ 1349{
1350 return mViewManager; 1350 return mViewManager;
1351} 1351}
1352 1352
1353KODialogManager *CalendarView::dialogManager() 1353KODialogManager *CalendarView::dialogManager()
1354{ 1354{
1355 return mDialogManager; 1355 return mDialogManager;
1356} 1356}
1357 1357
1358QDate CalendarView::startDate() 1358QDate CalendarView::startDate()
1359{ 1359{
1360 DateList dates = mNavigator->selectedDates(); 1360 DateList dates = mNavigator->selectedDates();
1361 1361
1362 return dates.first(); 1362 return dates.first();
1363} 1363}
1364 1364
1365QDate CalendarView::endDate() 1365QDate CalendarView::endDate()
1366{ 1366{
1367 DateList dates = mNavigator->selectedDates(); 1367 DateList dates = mNavigator->selectedDates();
1368 1368
1369 return dates.last(); 1369 return dates.last();
1370} 1370}
1371 1371
1372 1372
1373void CalendarView::createPrinter() 1373void CalendarView::createPrinter()
1374{ 1374{
1375#ifndef KORG_NOPRINTER 1375#ifndef KORG_NOPRINTER
1376 if (!mCalPrinter) { 1376 if (!mCalPrinter) {
1377 mCalPrinter = new CalPrinter(this, mCalendar); 1377 mCalPrinter = new CalPrinter(this, mCalendar);
1378 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 1378 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
1379 } 1379 }
1380#endif 1380#endif
1381} 1381}
1382 1382
1383 1383
1384//KOPrefs::instance()->mWriteBackFile 1384//KOPrefs::instance()->mWriteBackFile
1385//KOPrefs::instance()->mWriteBackExistingOnly 1385//KOPrefs::instance()->mWriteBackExistingOnly
1386 1386
1387// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 1387// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
1388// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 1388// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
1389// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 1389// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
1390// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 1390// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
1391// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 1391// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
1392// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 1392// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
1393 1393
1394int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 1394int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
1395{ 1395{
1396 1396
1397 // 0 equal 1397 // 0 equal
1398 // 1 take local 1398 // 1 take local
1399 // 2 take remote 1399 // 2 take remote
1400 // 3 cancel 1400 // 3 cancel
1401 QDateTime lastSync = mLastCalendarSync; 1401 QDateTime lastSync = mLastCalendarSync;
1402 QDateTime localMod = local->lastModified(); 1402 QDateTime localMod = local->lastModified();
1403 QDateTime remoteMod = remote->lastModified(); 1403 QDateTime remoteMod = remote->lastModified();
1404 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1404 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1405 bool remCh, locCh; 1405 bool remCh, locCh;
1406 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 1406 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
1407 //if ( remCh ) 1407 //if ( remCh )
1408 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 1408 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
1409 locCh = ( localMod > mLastCalendarSync ); 1409 locCh = ( localMod > mLastCalendarSync );
1410 if ( !remCh && ! locCh ) { 1410 if ( !remCh && ! locCh ) {
1411 //qDebug("both not changed "); 1411 //qDebug("both not changed ");
1412 lastSync = localMod.addDays(1); 1412 lastSync = localMod.addDays(1);
1413 if ( mode <= SYNC_PREF_ASK ) 1413 if ( mode <= SYNC_PREF_ASK )
1414 return 0; 1414 return 0;
1415 } else { 1415 } else {
1416 if ( locCh ) { 1416 if ( locCh ) {
1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
1418 lastSync = localMod.addDays( -1 ); 1418 lastSync = localMod.addDays( -1 );
1419 if ( !remCh ) 1419 if ( !remCh )
1420 remoteMod = ( lastSync.addDays( -1 ) ); 1420 remoteMod = ( lastSync.addDays( -1 ) );
1421 } else { 1421 } else {
1422 //qDebug(" not loc changed "); 1422 //qDebug(" not loc changed ");
1423 lastSync = localMod.addDays( 1 ); 1423 lastSync = localMod.addDays( 1 );
1424 if ( remCh ) 1424 if ( remCh )
1425 remoteMod =( lastSync.addDays( 1 ) ); 1425 remoteMod =( lastSync.addDays( 1 ) );
1426 1426
1427 } 1427 }
1428 } 1428 }
1429 full = true; 1429 full = true;
1430 if ( mode < SYNC_PREF_ASK ) 1430 if ( mode < SYNC_PREF_ASK )
1431 mode = SYNC_PREF_ASK; 1431 mode = SYNC_PREF_ASK;
1432 } else { 1432 } else {
1433 if ( localMod == remoteMod ) 1433 if ( localMod == remoteMod )
1434 // if ( local->revision() == remote->revision() ) 1434 // if ( local->revision() == remote->revision() )
1435 return 0; 1435 return 0;
1436 1436
1437 } 1437 }
1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
1439 1439
1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
1442 //full = true; //debug only 1442 //full = true; //debug only
1443 if ( full ) { 1443 if ( full ) {
1444 bool equ = false; 1444 bool equ = false;
1445 if ( local->typeID() == eventID ) { 1445 if ( local->typeID() == eventID ) {
1446 equ = (*((Event*) local) == *((Event*) remote)); 1446 equ = (*((Event*) local) == *((Event*) remote));
1447 } 1447 }
1448 else if ( local->typeID() == todoID ) 1448 else if ( local->typeID() == todoID )
1449 equ = (*((Todo*) local) == (*(Todo*) remote)); 1449 equ = (*((Todo*) local) == (*(Todo*) remote));
1450 else if ( local->typeID() == journalID ) 1450 else if ( local->typeID() == journalID )
1451 equ = (*((Journal*) local) == *((Journal*) remote)); 1451 equ = (*((Journal*) local) == *((Journal*) remote));
1452 if ( equ ) { 1452 if ( equ ) {
1453 //qDebug("equal "); 1453 //qDebug("equal ");
1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
1456 } 1456 }
1457 if ( mode < SYNC_PREF_FORCE_LOCAL ) 1457 if ( mode < SYNC_PREF_FORCE_LOCAL )
1458 return 0; 1458 return 0;
1459 1459
1460 }//else //debug only 1460 }//else //debug only
1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
1462 } 1462 }
1463 int result; 1463 int result;
1464 bool localIsNew; 1464 bool localIsNew;
1465 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 1465 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
1466 1466
1467 1467
1468 // ************************************************ 1468 // ************************************************
1469 // ************************************************ 1469 // ************************************************
1470 // ************************************************ 1470 // ************************************************
1471 // We may have that lastSync > remoteMod AND lastSync > localMod 1471 // We may have that lastSync > remoteMod AND lastSync > localMod
1472 // BUT remoteMod != localMod 1472 // BUT remoteMod != localMod
1473 1473
1474 1474
1475 if ( full && mode < SYNC_PREF_NEWEST ) 1475 if ( full && mode < SYNC_PREF_NEWEST )
1476 mode = SYNC_PREF_ASK; 1476 mode = SYNC_PREF_ASK;
1477 1477
1478 switch( mode ) { 1478 switch( mode ) {
1479 case SYNC_PREF_LOCAL: 1479 case SYNC_PREF_LOCAL:
1480 if ( lastSync > remoteMod ) 1480 if ( lastSync > remoteMod )
1481 return 1; 1481 return 1;
1482 if ( lastSync > localMod ) 1482 if ( lastSync > localMod )
1483 return 2; 1483 return 2;
1484 return 1; 1484 return 1;
1485 break; 1485 break;
1486 case SYNC_PREF_REMOTE: 1486 case SYNC_PREF_REMOTE:
1487 if ( lastSync > localMod ) 1487 if ( lastSync > localMod )
1488 return 2; 1488 return 2;
1489 if ( lastSync > remoteMod ) 1489 if ( lastSync > remoteMod )
1490 return 1; 1490 return 1;
1491 return 2; 1491 return 2;
1492 break; 1492 break;
1493 case SYNC_PREF_NEWEST: 1493 case SYNC_PREF_NEWEST:
1494 if ( localMod >= remoteMod ) 1494 if ( localMod >= remoteMod )
1495 return 1; 1495 return 1;
1496 else 1496 else
1497 return 2; 1497 return 2;
1498 break; 1498 break;
1499 case SYNC_PREF_ASK: 1499 case SYNC_PREF_ASK:
1500 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1500 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1501 if ( lastSync > remoteMod && lastSync > localMod) 1501 if ( lastSync > remoteMod && lastSync > localMod)
1502 return 0; 1502 return 0;
1503 if ( lastSync > remoteMod ) 1503 if ( lastSync > remoteMod )
1504 return 1; 1504 return 1;
1505 if ( lastSync > localMod ) 1505 if ( lastSync > localMod )
1506 return 2; 1506 return 2;
1507 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1507 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1508 localIsNew = localMod >= remoteMod; 1508 localIsNew = localMod >= remoteMod;
1509 if ( localIsNew ) 1509 if ( localIsNew )
1510 getEventViewerDialog()->setColorMode( 1 ); 1510 getEventViewerDialog()->setColorMode( 1 );
1511 else 1511 else
1512 getEventViewerDialog()->setColorMode( 2 ); 1512 getEventViewerDialog()->setColorMode( 2 );
1513 getEventViewerDialog()->setIncidence(local); 1513 getEventViewerDialog()->setIncidence(local);
1514 if ( localIsNew ) 1514 if ( localIsNew )
1515 getEventViewerDialog()->setColorMode( 2 ); 1515 getEventViewerDialog()->setColorMode( 2 );
1516 else 1516 else
1517 getEventViewerDialog()->setColorMode( 1 ); 1517 getEventViewerDialog()->setColorMode( 1 );
1518 getEventViewerDialog()->addIncidence(remote); 1518 getEventViewerDialog()->addIncidence(remote);
1519 getEventViewerDialog()->setColorMode( 0 ); 1519 getEventViewerDialog()->setColorMode( 0 );
1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1522 getEventViewerDialog()->showMe(); 1522 getEventViewerDialog()->showMe();
1523 result = getEventViewerDialog()->executeS( localIsNew ); 1523 result = getEventViewerDialog()->executeS( localIsNew );
1524 return result; 1524 return result;
1525 1525
1526 break; 1526 break;
1527 case SYNC_PREF_FORCE_LOCAL: 1527 case SYNC_PREF_FORCE_LOCAL:
1528 return 1; 1528 return 1;
1529 break; 1529 break;
1530 case SYNC_PREF_FORCE_REMOTE: 1530 case SYNC_PREF_FORCE_REMOTE:
1531 return 2; 1531 return 2;
1532 break; 1532 break;
1533 1533
1534 default: 1534 default:
1535 // SYNC_PREF_TAKE_BOTH not implemented 1535 // SYNC_PREF_TAKE_BOTH not implemented
1536 break; 1536 break;
1537 } 1537 }
1538 return 0; 1538 return 0;
1539} 1539}
1540Event* CalendarView::getLastSyncEvent() 1540Event* CalendarView::getLastSyncEvent()
1541{ 1541{
1542 Event* lse; 1542 Event* lse;
1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1544 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1544 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1545 if (!lse) { 1545 if (!lse) {
1546 lse = new Event(); 1546 lse = new Event();
1547 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1547 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1548 QString sum = ""; 1548 QString sum = "";
1549 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1549 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1550 sum = "E: "; 1550 sum = "E: ";
1551 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1551 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1552 lse->setDtStart( mLastCalendarSync ); 1552 lse->setDtStart( mLastCalendarSync );
1553 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1553 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1554 lse->setCategories( i18n("SyncEvent") ); 1554 lse->setCategories( i18n("SyncEvent") );
1555 lse->setReadOnly( true ); 1555 lse->setReadOnly( true );
1556 lse->setCalID( 1 ); 1556 lse->setCalID( 1 );
1557 mCalendar->addEvent( lse ); 1557 mCalendar->addEvent( lse );
1558 } 1558 }
1559 1559
1560 return lse; 1560 return lse;
1561 1561
1562} 1562}
1563 1563
1564// we check, if the to delete event has a id for a profile 1564// we check, if the to delete event has a id for a profile
1565// if yes, we set this id in the profile to delete 1565// if yes, we set this id in the profile to delete
1566void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1566void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1567{ 1567{
1568 if ( lastSync.count() == 0 ) { 1568 if ( lastSync.count() == 0 ) {
1569 //qDebug(" lastSync.count() == 0"); 1569 //qDebug(" lastSync.count() == 0");
1570 return; 1570 return;
1571 } 1571 }
1572 if ( toDelete->typeID() == journalID ) 1572 if ( toDelete->typeID() == journalID )
1573 return; 1573 return;
1574 1574
1575 Event* eve = lastSync.first(); 1575 Event* eve = lastSync.first();
1576 1576
1577 while ( eve ) { 1577 while ( eve ) {
1578 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1578 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1579 if ( !id.isEmpty() ) { 1579 if ( !id.isEmpty() ) {
1580 QString des = eve->description(); 1580 QString des = eve->description();
1581 QString pref = "e"; 1581 QString pref = "e";
1582 if ( toDelete->typeID() == todoID ) 1582 if ( toDelete->typeID() == todoID )
1583 pref = "t"; 1583 pref = "t";
1584 des += pref+ id + ","; 1584 des += pref+ id + ",";
1585 eve->setReadOnly( false ); 1585 eve->setReadOnly( false );
1586 eve->setDescription( des ); 1586 eve->setDescription( des );
1587 //qDebug("setdes %s ", des.latin1()); 1587 //qDebug("setdes %s ", des.latin1());
1588 eve->setReadOnly( true ); 1588 eve->setReadOnly( true );
1589 } 1589 }
1590 eve = lastSync.next(); 1590 eve = lastSync.next();
1591 } 1591 }
1592 1592
1593} 1593}
1594void CalendarView::checkExternalId( Incidence * inc ) 1594void CalendarView::checkExternalId( Incidence * inc )
1595{ 1595{
1596 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1596 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1597 checkExternSyncEvent( lastSync, inc ); 1597 checkExternSyncEvent( lastSync, inc );
1598 1598
1599} 1599}
1600bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1600bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1601{ 1601{
1602 bool syncOK = true; 1602 bool syncOK = true;
1603 int addedEvent = 0; 1603 int addedEvent = 0;
1604 int addedEventR = 0; 1604 int addedEventR = 0;
1605 int deletedEventR = 0; 1605 int deletedEventR = 0;
1606 int deletedEventL = 0; 1606 int deletedEventL = 0;
1607 int changedLocal = 0; 1607 int changedLocal = 0;
1608 int changedRemote = 0; 1608 int changedRemote = 0;
1609 int filteredIN = 0; 1609 int filteredIN = 0;
1610 int filteredOUT = 0; 1610 int filteredOUT = 0;
1611 //QPtrList<Event> el = local->rawEvents(); 1611 //QPtrList<Event> el = local->rawEvents();
1612 Event* eventR; 1612 Event* eventR;
1613 QString uid; 1613 QString uid;
1614 int take; 1614 int take;
1615 Event* eventRSync; 1615 Event* eventRSync;
1616 Event* eventLSync; 1616 Event* eventLSync;
1617 clearAllViews(); 1617 clearAllViews();
1618 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1618 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1619 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1619 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1620 bool fullDateRange = false; 1620 bool fullDateRange = false;
1621 local->resetTempSyncStat(); 1621 local->resetTempSyncStat();
1622 mLastCalendarSync = QDateTime::currentDateTime(); 1622 mLastCalendarSync = QDateTime::currentDateTime();
1623 if ( mSyncManager->syncWithDesktop() ) { 1623 if ( mSyncManager->syncWithDesktop() ) {
1624 remote->resetPilotStat(1); 1624 remote->resetPilotStat(1);
1625 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1625 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1626 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1626 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1627 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1627 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1628 } else { 1628 } else {
1629 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1629 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1630 } 1630 }
1631 } 1631 }
1632 QDateTime modifiedCalendar = mLastCalendarSync; 1632 QDateTime modifiedCalendar = mLastCalendarSync;
1633 eventLSync = getLastSyncEvent(); 1633 eventLSync = getLastSyncEvent();
1634 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1634 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1635 if ( eventR ) { 1635 if ( eventR ) {
1636 qDebug("last-syncEvent on remote found "); 1636 qDebug("last-syncEvent on remote found ");
1637 eventRSync = (Event*) eventR->clone(); 1637 eventRSync = (Event*) eventR->clone();
1638 remote->deleteEvent(eventR ); 1638 remote->deleteEvent(eventR );
1639 1639
1640 } else { 1640 } else {
1641 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1641 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1642 eventRSync = (Event*)eventLSync->clone(); 1642 eventRSync = (Event*)eventLSync->clone();
1643 } else { 1643 } else {
1644 fullDateRange = true; 1644 fullDateRange = true;
1645 eventRSync = new Event(); 1645 eventRSync = new Event();
1646 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1646 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1647 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1647 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1648 eventRSync->setDtStart( mLastCalendarSync ); 1648 eventRSync->setDtStart( mLastCalendarSync );
1649 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1649 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1650 eventRSync->setCategories( i18n("SyncEvent") ); 1650 eventRSync->setCategories( i18n("SyncEvent") );
1651 } 1651 }
1652 } 1652 }
1653 if ( eventLSync->dtStart() == mLastCalendarSync ) 1653 if ( eventLSync->dtStart() == mLastCalendarSync )
1654 fullDateRange = true; 1654 fullDateRange = true;
1655 1655
1656 if ( ! fullDateRange ) { 1656 if ( ! fullDateRange ) {
1657 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1657 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1658 1658
1659 qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1659 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1660 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1660 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1661 fullDateRange = true; 1661 fullDateRange = true;
1662 } 1662 }
1663 } 1663 }
1664 if ( mSyncManager->syncWithDesktop() ) { 1664 if ( mSyncManager->syncWithDesktop() ) {
1665 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1665 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1666 } 1666 }
1667 if ( fullDateRange ) 1667 if ( fullDateRange )
1668 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1668 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1669 else 1669 else
1670 mLastCalendarSync = eventLSync->dtStart(); 1670 mLastCalendarSync = eventLSync->dtStart();
1671 // for resyncing if own file has changed 1671 // for resyncing if own file has changed
1672 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1672 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1673 mLastCalendarSync = loadedFileVersion; 1673 mLastCalendarSync = loadedFileVersion;
1674 //qDebug("setting mLastCalendarSync "); 1674 //qDebug("setting mLastCalendarSync ");
1675 } 1675 }
1676 //qDebug("*************************** "); 1676 //qDebug("*************************** ");
1677 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1677 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1678 QPtrList<Incidence> er = remote->rawIncidences(); 1678 QPtrList<Incidence> er = remote->rawIncidences();
1679 Incidence* inR = er.first(); 1679 Incidence* inR = er.first();
1680 Incidence* inL; 1680 Incidence* inL;
1681 QProgressBar bar( er.count(),0 ); 1681 QProgressBar bar( er.count(),0 );
1682 bar.setCaption (i18n("Syncing - close to abort!") ); 1682 bar.setCaption (i18n("Syncing - close to abort!") );
1683 1683
1684 // ************** setting up filter ************* 1684 // ************** setting up filter *************
1685 CalFilter *filterIN = 0; 1685 CalFilter *filterIN = 0;
1686 CalFilter *filterOUT = 0; 1686 CalFilter *filterOUT = 0;
1687 CalFilter *filter = mFilters.first(); 1687 CalFilter *filter = mFilters.first();
1688 while(filter) { 1688 while(filter) {
1689 if ( filter->name() == mSyncManager->mFilterInCal ) 1689 if ( filter->name() == mSyncManager->mFilterInCal )
1690 filterIN = filter; 1690 filterIN = filter;
1691 if ( filter->name() == mSyncManager->mFilterOutCal ) 1691 if ( filter->name() == mSyncManager->mFilterOutCal )
1692 filterOUT = filter; 1692 filterOUT = filter;
1693 filter = mFilters.next(); 1693 filter = mFilters.next();
1694 } 1694 }
1695 int w = 300; 1695 int w = 300;
1696 if ( QApplication::desktop()->width() < 320 ) 1696 if ( QApplication::desktop()->width() < 320 )
1697 w = 220; 1697 w = 220;
1698 int h = bar.sizeHint().height() ; 1698 int h = bar.sizeHint().height() ;
1699 int dw = QApplication::desktop()->width(); 1699 int dw = QApplication::desktop()->width();
1700 int dh = QApplication::desktop()->height(); 1700 int dh = QApplication::desktop()->height();
1701 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1701 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1702 bar.show(); 1702 bar.show();
1703 int modulo = (er.count()/10)+1; 1703 int modulo = (er.count()/10)+1;
1704 int incCounter = 0; 1704 int incCounter = 0;
1705 while ( inR ) { 1705 while ( inR ) {
1706 if ( ! bar.isVisible() ) 1706 if ( ! bar.isVisible() )
1707 return false; 1707 return false;
1708 if ( incCounter % modulo == 0 ) 1708 if ( incCounter % modulo == 0 )
1709 bar.setProgress( incCounter ); 1709 bar.setProgress( incCounter );
1710 ++incCounter; 1710 ++incCounter;
1711 uid = inR->uid(); 1711 uid = inR->uid();
1712 bool skipIncidence = false; 1712 bool skipIncidence = false;
1713 if ( uid.left(15) == QString("last-syncEvent-") ) 1713 if ( uid.left(15) == QString("last-syncEvent-") )
1714 skipIncidence = true; 1714 skipIncidence = true;
1715 QString idS; 1715 QString idS;
1716 qApp->processEvents(); 1716 qApp->processEvents();
1717 if ( !skipIncidence ) { 1717 if ( !skipIncidence ) {
1718 inL = local->incidenceForUid( uid , false ); 1718 inL = local->incidenceForUid( uid , false );
1719 if ( inL ) { // maybe conflict - same uid in both calendars 1719 if ( inL ) { // maybe conflict - same uid in both calendars
1720 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1720 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1721 //qDebug("take %d %s ", take, inL->summary().latin1()); 1721 //qDebug("take %d %s ", take, inL->summary().latin1());
1722 if ( take == 3 ) 1722 if ( take == 3 )
1723 return false; 1723 return false;
1724 if ( take == 1 ) {// take local ********************** 1724 if ( take == 1 ) {// take local **********************
1725 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1725 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1726 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1726 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1727 else 1727 else
1728 idS = inR->IDStr(); 1728 idS = inR->IDStr();
1729 int calID = inR->calID(); 1729 int calID = inR->calID();
1730 remote->deleteIncidence( inR ); 1730 remote->deleteIncidence( inR );
1731 inR = inL->clone(); 1731 inR = inL->clone();
1732 inR->setCalID( calID ); 1732 inR->setCalID( calID );
1733 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1733 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1734 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1734 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1735 inR->setIDStr( idS ); 1735 inR->setIDStr( idS );
1736 remote->addIncidence( inR ); 1736 remote->addIncidence( inR );
1737 if ( mSyncManager->syncWithDesktop() ) 1737 if ( mSyncManager->syncWithDesktop() )
1738 inR->setPilotId( 2 ); 1738 inR->setPilotId( 2 );
1739 ++changedRemote; 1739 ++changedRemote;
1740 } else {// take remote ********************** 1740 } else {// take remote **********************
1741 if ( !inL->isReadOnly() ) { 1741 if ( !inL->isReadOnly() ) {
1742 idS = inL->IDStr(); 1742 idS = inL->IDStr();
1743 int pid = inL->pilotId(); 1743 int pid = inL->pilotId();
1744 int calID = inL->calID(); 1744 int calID = inL->calID();
1745 local->deleteIncidence( inL ); 1745 local->deleteIncidence( inL );
1746 inL = inR->clone(); 1746 inL = inR->clone();
1747 inL->setCalID( calID ); 1747 inL->setCalID( calID );
1748 if ( mSyncManager->syncWithDesktop() ) 1748 if ( mSyncManager->syncWithDesktop() )
1749 inL->setPilotId( pid ); 1749 inL->setPilotId( pid );
1750 inL->setIDStr( idS ); 1750 inL->setIDStr( idS );
1751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1752 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1752 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1753 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1753 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1754 } 1754 }
1755 local->addIncidence( inL ); 1755 local->addIncidence( inL );
1756 ++changedLocal; 1756 ++changedLocal;
1757 } 1757 }
1758 } 1758 }
1759 } 1759 }
1760 } else { // no conflict ********** add or delete remote 1760 } else { // no conflict ********** add or delete remote
1761 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1761 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1762 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1762 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1763 QString des = eventLSync->description(); 1763 QString des = eventLSync->description();
1764 QString pref = "e"; 1764 QString pref = "e";
1765 if ( inR->typeID() == todoID ) 1765 if ( inR->typeID() == todoID )
1766 pref = "t"; 1766 pref = "t";
1767 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1767 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1768 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1768 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1769 //remote->deleteIncidence( inR ); 1769 //remote->deleteIncidence( inR );
1770 ++deletedEventR; 1770 ++deletedEventR;
1771 } else { 1771 } else {
1772 inR->setLastModified( modifiedCalendar ); 1772 inR->setLastModified( modifiedCalendar );
1773 inL = inR->clone(); 1773 inL = inR->clone();
1774 inL->setIDStr( ":" ); 1774 inL->setIDStr( ":" );
1775 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1775 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1776 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1776 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1777 1777
1778 inL->setCalID( 0 );// add to default cal 1778 inL->setCalID( 0 );// add to default cal
1779 local->addIncidence( inL ); 1779 local->addIncidence( inL );
1780 ++addedEvent; 1780 ++addedEvent;
1781 1781
1782 } 1782 }
1783 } else { 1783 } else {
1784 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1784 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1785 inR->setLastModified( modifiedCalendar ); 1785 inR->setLastModified( modifiedCalendar );
1786 inL = inR->clone(); 1786 inL = inR->clone();
1787 inL->setIDStr( ":" ); 1787 inL->setIDStr( ":" );
1788 inL->setCalID( 0 );// add to default cal 1788 inL->setCalID( 0 );// add to default cal
1789 local->addIncidence( inL ); 1789 local->addIncidence( inL );
1790 ++addedEvent; 1790 ++addedEvent;
1791 1791
1792 } else { 1792 } else {
1793 checkExternSyncEvent(eventRSyncSharp, inR); 1793 checkExternSyncEvent(eventRSyncSharp, inR);
1794 remote->deleteIncidence( inR ); 1794 remote->deleteIncidence( inR );
1795 ++deletedEventR; 1795 ++deletedEventR;
1796 } 1796 }
1797 } 1797 }
1798 } else { 1798 } else {
1799 ++filteredIN; 1799 ++filteredIN;
1800 } 1800 }
1801 } 1801 }
1802 } 1802 }
1803 inR = er.next(); 1803 inR = er.next();
1804 } 1804 }
1805 QPtrList<Incidence> el = local->rawIncidences(); 1805 QPtrList<Incidence> el = local->rawIncidences();
1806 inL = el.first(); 1806 inL = el.first();
1807 modulo = (el.count()/10)+1; 1807 modulo = (el.count()/10)+1;
1808 bar.setCaption (i18n("Add / remove events") ); 1808 bar.setCaption (i18n("Add / remove events") );
1809 bar.setTotalSteps ( el.count() ) ; 1809 bar.setTotalSteps ( el.count() ) ;
1810 bar.show(); 1810 bar.show();
1811 incCounter = 0; 1811 incCounter = 0;
1812 1812
1813 while ( inL ) { 1813 while ( inL ) {
1814 1814
1815 qApp->processEvents(); 1815 qApp->processEvents();
1816 if ( ! bar.isVisible() ) 1816 if ( ! bar.isVisible() )
1817 return false; 1817 return false;
1818 if ( incCounter % modulo == 0 ) 1818 if ( incCounter % modulo == 0 )
1819 bar.setProgress( incCounter ); 1819 bar.setProgress( incCounter );
1820 ++incCounter; 1820 ++incCounter;
1821 uid = inL->uid(); 1821 uid = inL->uid();
1822 bool skipIncidence = false; 1822 bool skipIncidence = false;
1823 if ( uid.left(15) == QString("last-syncEvent-") ) 1823 if ( uid.left(15) == QString("last-syncEvent-") )
1824 skipIncidence = true; 1824 skipIncidence = true;
1825 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1825 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1826 skipIncidence = true; 1826 skipIncidence = true;
1827 if ( !skipIncidence ) { 1827 if ( !skipIncidence ) {
1828 inR = remote->incidenceForUid( uid , true ); 1828 inR = remote->incidenceForUid( uid , true );
1829 if ( ! inR ) { 1829 if ( ! inR ) {
1830 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1830 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1831 // no conflict ********** add or delete local 1831 // no conflict ********** add or delete local
1832 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1832 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1833 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1833 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1834 checkExternSyncEvent(eventLSyncSharp, inL); 1834 checkExternSyncEvent(eventLSyncSharp, inL);
1835 local->deleteIncidence( inL ); 1835 local->deleteIncidence( inL );
1836 ++deletedEventL; 1836 ++deletedEventL;
1837 } else { 1837 } else {
1838 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1838 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1839 inL->removeID(mCurrentSyncDevice ); 1839 inL->removeID(mCurrentSyncDevice );
1840 ++addedEventR; 1840 ++addedEventR;
1841 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1841 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1842 inL->setLastModified( modifiedCalendar ); 1842 inL->setLastModified( modifiedCalendar );
1843 inR = inL->clone(); 1843 inR = inL->clone();
1844 inR->setIDStr( ":" ); 1844 inR->setIDStr( ":" );
1845 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1845 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1846 inR->setCalID( 0 );// add to default cal 1846 inR->setCalID( 0 );// add to default cal
1847 remote->addIncidence( inR ); 1847 remote->addIncidence( inR );
1848 } 1848 }
1849 } 1849 }
1850 } else { 1850 } else {
1851 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1851 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1852 checkExternSyncEvent(eventLSyncSharp, inL); 1852 checkExternSyncEvent(eventLSyncSharp, inL);
1853 local->deleteIncidence( inL ); 1853 local->deleteIncidence( inL );
1854 ++deletedEventL; 1854 ++deletedEventL;
1855 } else { 1855 } else {
1856 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1856 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1857 ++addedEventR; 1857 ++addedEventR;
1858 inL->setLastModified( modifiedCalendar ); 1858 inL->setLastModified( modifiedCalendar );
1859 inR = inL->clone(); 1859 inR = inL->clone();
1860 inR->setIDStr( ":" ); 1860 inR->setIDStr( ":" );
1861 inR->setCalID( 0 );// add to default cal 1861 inR->setCalID( 0 );// add to default cal
1862 remote->addIncidence( inR ); 1862 remote->addIncidence( inR );
1863 } 1863 }
1864 } 1864 }
1865 } 1865 }
1866 } else { 1866 } else {
1867 ++filteredOUT; 1867 ++filteredOUT;
1868 } 1868 }
1869 } 1869 }
1870 } 1870 }
1871 inL = el.next(); 1871 inL = el.next();
1872 } 1872 }
1873 int delFut = 0; 1873 int delFut = 0;
1874 int remRem = 0; 1874 int remRem = 0;
1875 if ( mSyncManager->mWriteBackInFuture ) { 1875 if ( mSyncManager->mWriteBackInFuture ) {
1876 er = remote->rawIncidences(); 1876 er = remote->rawIncidences();
1877 remRem = er.count(); 1877 remRem = er.count();
1878 inR = er.first(); 1878 inR = er.first();
1879 QDateTime dt; 1879 QDateTime dt;
1880 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1880 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1881 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1881 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1882 while ( inR ) { 1882 while ( inR ) {
1883 if ( inR->typeID() == todoID ) { 1883 if ( inR->typeID() == todoID ) {
1884 Todo * t = (Todo*)inR; 1884 Todo * t = (Todo*)inR;
1885 if ( t->hasDueDate() ) 1885 if ( t->hasDueDate() )
1886 dt = t->dtDue(); 1886 dt = t->dtDue();
1887 else 1887 else
1888 dt = cur.addSecs( 62 ); 1888 dt = cur.addSecs( 62 );
1889 } 1889 }
1890 else if (inR->typeID() == eventID ) { 1890 else if (inR->typeID() == eventID ) {
1891 bool ok; 1891 bool ok;
1892 dt = inR->getNextOccurence( cur, &ok ); 1892 dt = inR->getNextOccurence( cur, &ok );
1893 if ( !ok ) 1893 if ( !ok )
1894 dt = cur.addSecs( -62 ); 1894 dt = cur.addSecs( -62 );
1895 } 1895 }
1896 else 1896 else
1897 dt = inR->dtStart(); 1897 dt = inR->dtStart();
1898 if ( dt < cur || dt > end ) { 1898 if ( dt < cur || dt > end ) {
1899 remote->deleteIncidence( inR ); 1899 remote->deleteIncidence( inR );
1900 ++delFut; 1900 ++delFut;
1901 } 1901 }
1902 inR = er.next(); 1902 inR = er.next();
1903 } 1903 }
1904 } 1904 }
1905 bar.hide(); 1905 bar.hide();
1906 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1906 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1907 if ( mMultiResourceSync ) { 1907 if ( mMultiResourceSync ) {
1908 remote->removeSyncInfo( "" ); //all 1908 remote->removeSyncInfo( "" ); //all
1909 1909
1910 } else { 1910 } else {
1911 eventLSync->setReadOnly( false ); 1911 eventLSync->setReadOnly( false );
1912 eventLSync->setDtStart( mLastCalendarSync ); 1912 eventLSync->setDtStart( mLastCalendarSync );
1913 eventRSync->setDtStart( mLastCalendarSync ); 1913 eventRSync->setDtStart( mLastCalendarSync );
1914 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1914 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1915 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1915 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1916 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1916 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1917 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1917 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1918 eventLSync->setReadOnly( true ); 1918 eventLSync->setReadOnly( true );
1919 } 1919 }
1920 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1920 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1921 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal... 1921 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal...
1922 remote->addEvent( eventRSync ); 1922 remote->addEvent( eventRSync );
1923 else 1923 else
1924 delete eventRSync; 1924 delete eventRSync;
1925 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1925 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1926 QString mes; 1926 QString mes;
1927 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1927 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1928 QString delmess; 1928 QString delmess;
1929 if ( delFut ) { 1929 if ( delFut ) {
1930 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1930 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1931 mes += delmess; 1931 mes += delmess;
1932 } 1932 }
1933 mes = i18n("Local calendar changed!\n") +mes; 1933 mes = i18n("Local calendar changed!\n") +mes;
1934 mCalendar->checkAlarmForIncidence( 0, true ); 1934 mCalendar->checkAlarmForIncidence( 0, true );
1935 qDebug( mes ); 1935 qDebug( mes );
1936 if ( mSyncManager->mShowSyncSummary ) { 1936 if ( mSyncManager->mShowSyncSummary ) {
1937 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1937 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1938 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1938 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1939 qDebug("KO: WB cancelled "); 1939 qDebug("KO: WB cancelled ");
1940 mSyncManager->mWriteBackFile = false; 1940 mSyncManager->mWriteBackFile = false;
1941 return syncOK; 1941 return syncOK;
1942 } 1942 }
1943 } 1943 }
1944 return syncOK; 1944 return syncOK;
1945} 1945}
1946 1946
1947void CalendarView::setSyncDevice( QString s ) 1947void CalendarView::setSyncDevice( QString s )
1948{ 1948{
1949 mCurrentSyncDevice= s; 1949 mCurrentSyncDevice= s;
1950} 1950}
1951void CalendarView::setSyncName( QString s ) 1951void CalendarView::setSyncName( QString s )
1952{ 1952{
1953 mCurrentSyncName= s; 1953 mCurrentSyncName= s;
1954} 1954}
1955bool CalendarView::syncCalendar(QString filename, int mode) 1955bool CalendarView::syncCalendar(QString filename, int mode)
1956{ 1956{
1957 //qDebug("syncCalendar %s ", filename.latin1()); 1957 //qDebug("syncCalendar %s ", filename.latin1());
1958 mGlobalSyncMode = SYNC_MODE_NORMAL; 1958 mGlobalSyncMode = SYNC_MODE_NORMAL;
1959 CalendarLocal* calendar = new CalendarLocal(); 1959 CalendarLocal* calendar = new CalendarLocal();
1960 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1960 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1961 FileStorage* storage = new FileStorage( calendar ); 1961 FileStorage* storage = new FileStorage( calendar );
1962 bool syncOK = false; 1962 bool syncOK = false;
1963 storage->setFileName( filename ); 1963 storage->setFileName( filename );
1964 // qDebug("loading ... "); 1964 // qDebug("loading ... ");
1965 if ( storage->load() ) { 1965 if ( storage->load() ) {
1966 getEventViewerDialog()->setSyncMode( true ); 1966 getEventViewerDialog()->setSyncMode( true );
1967 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1967 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1968 getEventViewerDialog()->setSyncMode( false ); 1968 getEventViewerDialog()->setSyncMode( false );
1969 if ( syncOK ) { 1969 if ( syncOK ) {
1970 if ( mSyncManager->mWriteBackFile ) 1970 if ( mSyncManager->mWriteBackFile )
1971 { 1971 {
1972 storage->setSaveFormat( new ICalFormat() ); 1972 storage->setSaveFormat( new ICalFormat() );
1973 storage->save(); 1973 storage->save();
1974 } 1974 }
1975 } 1975 }
1976 setModified( true ); 1976 setModified( true );
1977 } 1977 }
1978 delete storage; 1978 delete storage;
1979 delete calendar; 1979 delete calendar;
1980 if ( syncOK ) 1980 if ( syncOK )
1981 updateView(); 1981 updateView();
1982 return syncOK; 1982 return syncOK;
1983} 1983}
1984 1984
1985void CalendarView::syncExternal( int mode ) 1985void CalendarView::syncExternal( int mode )
1986{ 1986{
1987 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1987 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1988 qApp->processEvents(); 1988 qApp->processEvents();
1989 CalendarLocal* calendar = new CalendarLocal(); 1989 CalendarLocal* calendar = new CalendarLocal();
1990 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1990 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1991 bool syncOK = false; 1991 bool syncOK = false;
1992 bool loadSuccess = false; 1992 bool loadSuccess = false;
1993 PhoneFormat* phoneFormat = 0; 1993 PhoneFormat* phoneFormat = 0;
1994 emit tempDisableBR(true); 1994 emit tempDisableBR(true);
1995#ifndef DESKTOP_VERSION 1995#ifndef DESKTOP_VERSION
1996 SharpFormat* sharpFormat = 0; 1996 SharpFormat* sharpFormat = 0;
1997 if ( mode == 0 ) { // sharp 1997 if ( mode == 0 ) { // sharp
1998 sharpFormat = new SharpFormat () ; 1998 sharpFormat = new SharpFormat () ;
1999 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1999 loadSuccess = sharpFormat->load( calendar, mCalendar );
2000 2000
2001 } else 2001 } else
2002#endif 2002#endif
2003 if ( mode == 1 ) { // phone 2003 if ( mode == 1 ) { // phone
2004 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 2004 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
2005 mSyncManager->mPhoneDevice, 2005 mSyncManager->mPhoneDevice,
2006 mSyncManager->mPhoneConnection, 2006 mSyncManager->mPhoneConnection,
2007 mSyncManager->mPhoneModel); 2007 mSyncManager->mPhoneModel);
2008 loadSuccess = phoneFormat->load( calendar,mCalendar); 2008 loadSuccess = phoneFormat->load( calendar,mCalendar);
2009 2009
2010 } else { 2010 } else {
2011 emit tempDisableBR(false); 2011 emit tempDisableBR(false);
2012 return; 2012 return;
2013 } 2013 }
2014 if ( loadSuccess ) { 2014 if ( loadSuccess ) {
2015 getEventViewerDialog()->setSyncMode( true ); 2015 getEventViewerDialog()->setSyncMode( true );
2016 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2016 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2017 getEventViewerDialog()->setSyncMode( false ); 2017 getEventViewerDialog()->setSyncMode( false );
2018 qApp->processEvents(); 2018 qApp->processEvents();
2019 if ( syncOK ) { 2019 if ( syncOK ) {
2020 if ( mSyncManager->mWriteBackFile ) 2020 if ( mSyncManager->mWriteBackFile )
2021 { 2021 {
2022 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 2022 QPtrList<Incidence> iL = mCalendar->rawIncidences();
2023 Incidence* inc = iL.first(); 2023 Incidence* inc = iL.first();
2024 if ( phoneFormat ) { 2024 if ( phoneFormat ) {
2025 while ( inc ) { 2025 while ( inc ) {
2026 inc->removeID(mCurrentSyncDevice); 2026 inc->removeID(mCurrentSyncDevice);
2027 inc = iL.next(); 2027 inc = iL.next();
2028 } 2028 }
2029 } 2029 }
2030#ifndef DESKTOP_VERSION 2030#ifndef DESKTOP_VERSION
2031 if ( sharpFormat ) 2031 if ( sharpFormat )
2032 sharpFormat->save(calendar); 2032 sharpFormat->save(calendar);
2033#endif 2033#endif
2034 if ( phoneFormat ) 2034 if ( phoneFormat )
2035 phoneFormat->save(calendar); 2035 phoneFormat->save(calendar);
2036 iL = calendar->rawIncidences(); 2036 iL = calendar->rawIncidences();
2037 inc = iL.first(); 2037 inc = iL.first();
2038 Incidence* loc; 2038 Incidence* loc;
2039 while ( inc ) { 2039 while ( inc ) {
2040 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 2040 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
2041 loc = mCalendar->incidence(inc->uid() ); 2041 loc = mCalendar->incidence(inc->uid() );
2042 if ( loc ) { 2042 if ( loc ) {
2043 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 2043 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
2044 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 2044 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
2045 } 2045 }
2046 } 2046 }
2047 inc = iL.next(); 2047 inc = iL.next();
2048 } 2048 }
2049 Incidence* lse = getLastSyncEvent(); 2049 Incidence* lse = getLastSyncEvent();
2050 if ( lse ) { 2050 if ( lse ) {
2051 lse->setReadOnly( false ); 2051 lse->setReadOnly( false );
2052 lse->setDescription( "" ); 2052 lse->setDescription( "" );
2053 lse->setReadOnly( true ); 2053 lse->setReadOnly( true );
2054 } 2054 }
2055 } 2055 }
2056 } else { 2056 } else {
2057 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 2057 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
2058 } 2058 }
2059 setModified( true ); 2059 setModified( true );
2060 } else { 2060 } else {
2061 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 2061 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
2062 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 2062 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
2063 question, i18n("Ok")) ; 2063 question, i18n("Ok")) ;
2064 2064
2065 } 2065 }
2066 delete calendar; 2066 delete calendar;
2067 updateView(); 2067 updateView();
2068 emit tempDisableBR(false); 2068 emit tempDisableBR(false);
2069 return ;//syncOK; 2069 return ;//syncOK;
2070 2070
2071} 2071}
2072 2072
2073bool CalendarView::importBday() 2073bool CalendarView::importBday()
2074{ 2074{
2075#ifndef KORG_NOKABC 2075#ifndef KORG_NOKABC
2076 2076
2077#ifdef DESKTOP_VERSION 2077#ifdef DESKTOP_VERSION
2078 int curCal = mCalendar->defaultCalendar(); 2078 int curCal = mCalendar->defaultCalendar();
2079 int bd = mCalEditView->getBirtdayID(); 2079 int bd = mCalEditView->getBirtdayID();
2080 if ( bd == 0 ) 2080 if ( bd == 0 )
2081 return false; 2081 return false;
2082 mCalendar->setDefaultCalendar( bd ); 2082 mCalendar->setDefaultCalendar( bd );
2083 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 2083 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
2084 KABC::AddressBook::Iterator it; 2084 KABC::AddressBook::Iterator it;
2085 int count = 0; 2085 int count = 0;
2086 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2086 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2087 ++count; 2087 ++count;
2088 } 2088 }
2089 QProgressBar bar(count,0 ); 2089 QProgressBar bar(count,0 );
2090 int w = 300; 2090 int w = 300;
2091 if ( QApplication::desktop()->width() < 320 ) 2091 if ( QApplication::desktop()->width() < 320 )
2092 w = 220; 2092 w = 220;
2093 int h = bar.sizeHint().height() ; 2093 int h = bar.sizeHint().height() ;
2094 int dw = QApplication::desktop()->width(); 2094 int dw = QApplication::desktop()->width();
2095 int dh = QApplication::desktop()->height(); 2095 int dh = QApplication::desktop()->height();
2096 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2096 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2097 bar.show(); 2097 bar.show();
2098 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 2098 bar.setCaption (i18n("Reading addressbook - close to abort!") );
2099 qApp->processEvents(); 2099 qApp->processEvents();
2100 count = 0; 2100 count = 0;
2101 int addCount = 0; 2101 int addCount = 0;
2102 KCal::Attendee* a = 0; 2102 KCal::Attendee* a = 0;
2103 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2103 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2104 if ( ! bar.isVisible() ) 2104 if ( ! bar.isVisible() )
2105 return false; 2105 return false;
2106 bar.setProgress( count++ ); 2106 bar.setProgress( count++ );
2107 qApp->processEvents(); 2107 qApp->processEvents();
2108 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 2108 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
2109 if ( (*it).birthday().date().isValid() ){ 2109 if ( (*it).birthday().date().isValid() ){
2110 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2110 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2111 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 2111 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
2112 ++addCount; 2112 ++addCount;
2113 } 2113 }
2114 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 2114 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
2115 if ( anni.isValid() ){ 2115 if ( anni.isValid() ){
2116 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2116 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2117 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 2117 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
2118 ++addCount; 2118 ++addCount;
2119 } 2119 }
2120 } 2120 }
2121 mCalendar->setDefaultCalendar( curCal ); 2121 mCalendar->setDefaultCalendar( curCal );
2122 updateView(); 2122 updateView();
2123 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2123 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2124#else //DESKTOP_VERSION 2124#else //DESKTOP_VERSION
2125 2125
2126 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 2126 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
2127 // the result should now arrive through method insertBirthdays 2127 // the result should now arrive through method insertBirthdays
2128 2128
2129#endif //DESKTOP_VERSION 2129#endif //DESKTOP_VERSION
2130 2130
2131#endif //KORG_NOKABC 2131#endif //KORG_NOKABC
2132 2132
2133 2133
2134 return true; 2134 return true;
2135} 2135}
2136 2136
2137// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 2137// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
2138void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 2138void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
2139 const QStringList& anniversaryList, const QStringList& realNameList, 2139 const QStringList& anniversaryList, const QStringList& realNameList,
2140 const QStringList& emailList, const QStringList& assembledNameList, 2140 const QStringList& emailList, const QStringList& assembledNameList,
2141 const QStringList& uidList) 2141 const QStringList& uidList)
2142{ 2142{
2143 2143
2144 //qDebug("KO::CalendarView::insertBirthdays"); 2144 //qDebug("KO::CalendarView::insertBirthdays");
2145 if (uid == this->name()) 2145 if (uid == this->name())
2146 { 2146 {
2147 int curCal = mCalendar->defaultCalendar(); 2147 int curCal = mCalendar->defaultCalendar();
2148 int bd = mCalEditView->getBirtdayID(); 2148 int bd = mCalEditView->getBirtdayID();
2149 if ( bd == 0 ) 2149 if ( bd == 0 )
2150 return; 2150 return;
2151 mCalendar->setDefaultCalendar( bd ); 2151 mCalendar->setDefaultCalendar( bd );
2152 2152
2153 2153
2154 int count = birthdayList.count(); 2154 int count = birthdayList.count();
2155 int addCount = 0; 2155 int addCount = 0;
2156 KCal::Attendee* a = 0; 2156 KCal::Attendee* a = 0;
2157 2157
2158 //qDebug("CalView 1 %i", count); 2158 //qDebug("CalView 1 %i", count);
2159 2159
2160 QProgressBar bar(count,0 ); 2160 QProgressBar bar(count,0 );
2161 int w = 300; 2161 int w = 300;
2162 if ( QApplication::desktop()->width() < 320 ) 2162 if ( QApplication::desktop()->width() < 320 )
2163 w = 220; 2163 w = 220;
2164 int h = bar.sizeHint().height() ; 2164 int h = bar.sizeHint().height() ;
2165 int dw = QApplication::desktop()->width(); 2165 int dw = QApplication::desktop()->width();
2166 int dh = QApplication::desktop()->height(); 2166 int dh = QApplication::desktop()->height();
2167 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2167 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2168 bar.show(); 2168 bar.show();
2169 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 2169 bar.setCaption (i18n("inserting birthdays - close to abort!") );
2170 qApp->processEvents(); 2170 qApp->processEvents();
2171 2171
2172 QDate birthday; 2172 QDate birthday;
2173 QDate anniversary; 2173 QDate anniversary;
2174 QString realName; 2174 QString realName;
2175 QString email; 2175 QString email;
2176 QString assembledName; 2176 QString assembledName;
2177 QString uid; 2177 QString uid;
2178 bool ok = true; 2178 bool ok = true;
2179 for ( int i = 0; i < count; i++) 2179 for ( int i = 0; i < count; i++)
2180 { 2180 {
2181 if ( ! bar.isVisible() ) 2181 if ( ! bar.isVisible() )
2182 return; 2182 return;
2183 bar.setProgress( i ); 2183 bar.setProgress( i );
2184 qApp->processEvents(); 2184 qApp->processEvents();
2185 2185
2186 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 2186 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
2187 if (!ok) { 2187 if (!ok) {
2188 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 2188 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
2189 } 2189 }
2190 2190
2191 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 2191 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
2192 if (!ok) { 2192 if (!ok) {
2193 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 2193 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
2194 } 2194 }
2195 realName = realNameList[i]; 2195 realName = realNameList[i];
2196 email = emailList[i]; 2196 email = emailList[i];
2197 assembledName = assembledNameList[i]; 2197 assembledName = assembledNameList[i];
2198 uid = uidList[i]; 2198 uid = uidList[i];
2199 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 2199 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
2200 2200
2201 if ( birthday.isValid() ){ 2201 if ( birthday.isValid() ){
2202 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2202 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2203 KCal::Attendee::ReqParticipant,uid) ; 2203 KCal::Attendee::ReqParticipant,uid) ;
2204 if ( addAnniversary( birthday, assembledName, a, true ) ) 2204 if ( addAnniversary( birthday, assembledName, a, true ) )
2205 ++addCount; 2205 ++addCount;
2206 } 2206 }
2207 2207
2208 if ( anniversary.isValid() ){ 2208 if ( anniversary.isValid() ){
2209 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2209 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2210 KCal::Attendee::ReqParticipant,uid) ; 2210 KCal::Attendee::ReqParticipant,uid) ;
2211 if ( addAnniversary( anniversary, assembledName, a, false ) ) 2211 if ( addAnniversary( anniversary, assembledName, a, false ) )
2212 ++addCount; 2212 ++addCount;
2213 } 2213 }
2214 } 2214 }
2215 2215
2216 mCalendar->setDefaultCalendar( curCal ); 2216 mCalendar->setDefaultCalendar( curCal );
2217 updateView(); 2217 updateView();
2218 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2218 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2219 2219
2220 } 2220 }
2221 2221
2222} 2222}
2223 2223
2224 2224
2225 2225
2226bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 2226bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
2227{ 2227{
2228 //qDebug("addAnni "); 2228 //qDebug("addAnni ");
2229 Event * ev = new Event(); 2229 Event * ev = new Event();
2230 ev->setOrganizer(KOPrefs::instance()->email()); 2230 ev->setOrganizer(KOPrefs::instance()->email());
2231 if ( a ) { 2231 if ( a ) {
2232 ev->addAttendee( a ); 2232 ev->addAttendee( a );
2233 } 2233 }
2234 QString kind; 2234 QString kind;
2235 if ( birthday ) { 2235 if ( birthday ) {
2236 kind = i18n( "Birthday" ); 2236 kind = i18n( "Birthday" );
2237 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 2237 ev->setSummary( name + " (" + QString::number(date.year()) +")");
2238 } 2238 }
2239 else { 2239 else {
2240 kind = i18n( "Anniversary" ); 2240 kind = i18n( "Anniversary" );
2241 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 2241 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
2242 } 2242 }
2243 ev->setCategories( kind ); 2243 ev->setCategories( kind );
2244 ev->setDtStart( QDateTime(date) ); 2244 ev->setDtStart( QDateTime(date) );
2245 ev->setDtEnd( QDateTime(date) ); 2245 ev->setDtEnd( QDateTime(date) );
2246 ev->setFloats( true ); 2246 ev->setFloats( true );
2247 Recurrence * rec = ev->recurrence(); 2247 Recurrence * rec = ev->recurrence();
2248 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 2248 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
2249 rec->addYearlyNum( date.month() ); 2249 rec->addYearlyNum( date.month() );
2250 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 2250 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
2251 delete ev; 2251 delete ev;
2252 return false; 2252 return false;
2253 } 2253 }
2254 return true; 2254 return true;
2255 2255
2256} 2256}
2257bool CalendarView::importQtopia( const QString &categories, 2257bool CalendarView::importQtopia( const QString &categories,
2258 const QString &datebook, 2258 const QString &datebook,
2259 const QString &todolist ) 2259 const QString &todolist )
2260{ 2260{
2261 2261
2262 QtopiaFormat qtopiaFormat; 2262 QtopiaFormat qtopiaFormat;
2263 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2263 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2264 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 2264 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
2265 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 2265 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
2266 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 2266 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
2267 2267
2268 updateView(); 2268 updateView();
2269 return true; 2269 return true;
2270 2270
2271#if 0 2271#if 0
2272 mGlobalSyncMode = SYNC_MODE_QTOPIA; 2272 mGlobalSyncMode = SYNC_MODE_QTOPIA;
2273 mCurrentSyncDevice = "qtopia-XML"; 2273 mCurrentSyncDevice = "qtopia-XML";
2274 if ( mSyncManager->mAskForPreferences ) 2274 if ( mSyncManager->mAskForPreferences )
2275 edit_sync_options(); 2275 edit_sync_options();
2276 qApp->processEvents(); 2276 qApp->processEvents();
2277 CalendarLocal* calendar = new CalendarLocal(); 2277 CalendarLocal* calendar = new CalendarLocal();
2278 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2278 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2279 bool syncOK = false; 2279 bool syncOK = false;
2280 QtopiaFormat qtopiaFormat; 2280 QtopiaFormat qtopiaFormat;
2281 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2281 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2282 bool loadOk = true; 2282 bool loadOk = true;
2283 if ( !categories.isEmpty() ) 2283 if ( !categories.isEmpty() )
2284 loadOk = qtopiaFormat.load( calendar, categories ); 2284 loadOk = qtopiaFormat.load( calendar, categories );
2285 if ( loadOk && !datebook.isEmpty() ) 2285 if ( loadOk && !datebook.isEmpty() )
2286 loadOk = qtopiaFormat.load( calendar, datebook ); 2286 loadOk = qtopiaFormat.load( calendar, datebook );
2287 if ( loadOk && !todolist.isEmpty() ) 2287 if ( loadOk && !todolist.isEmpty() )
2288 loadOk = qtopiaFormat.load( calendar, todolist ); 2288 loadOk = qtopiaFormat.load( calendar, todolist );
2289 2289
2290 if ( loadOk ) { 2290 if ( loadOk ) {
2291 getEventViewerDialog()->setSyncMode( true ); 2291 getEventViewerDialog()->setSyncMode( true );
2292 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2292 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2293 getEventViewerDialog()->setSyncMode( false ); 2293 getEventViewerDialog()->setSyncMode( false );
2294 qApp->processEvents(); 2294 qApp->processEvents();
2295 if ( syncOK ) { 2295 if ( syncOK ) {
2296 if ( mSyncManager->mWriteBackFile ) 2296 if ( mSyncManager->mWriteBackFile )
2297 { 2297 {
2298 // write back XML file 2298 // write back XML file
2299 2299
2300 } 2300 }
2301 setModified( true ); 2301 setModified( true );
2302 } 2302 }
2303 } else { 2303 } else {
2304 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 2304 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
2305 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 2305 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
2306 question, i18n("Ok")) ; 2306 question, i18n("Ok")) ;
2307 } 2307 }
2308 delete calendar; 2308 delete calendar;
2309 updateView(); 2309 updateView();
2310 return syncOK; 2310 return syncOK;
2311 2311
2312 2312
2313#endif 2313#endif
2314 2314
2315} 2315}
2316 2316
2317void CalendarView::setSyncEventsReadOnly() 2317void CalendarView::setSyncEventsReadOnly()
2318{ 2318{
2319 mCalendar->setSyncEventsReadOnly(); 2319 mCalendar->setSyncEventsReadOnly();
2320} 2320}
2321 2321
2322bool CalendarView::loadCalendars() 2322bool CalendarView::loadCalendars()
2323{ 2323{
2324 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2324 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2325 KopiCalendarFile * cal = calendars.first(); 2325 KopiCalendarFile * cal = calendars.first();
2326 mCalendar->setDefaultCalendar( 1 ); 2326 mCalendar->setDefaultCalendar( 1 );
2327 openCalendar( MainWindow::defaultFileName(), false ); 2327 openCalendar( MainWindow::defaultFileName(), false );
2328 cal = calendars.next(); 2328 cal = calendars.next();
2329 while ( cal ) { 2329 while ( cal ) {
2330 addCalendar( cal ); 2330 addCalendar( cal );
2331 cal = calendars.next(); 2331 cal = calendars.next();
2332 } 2332 }
2333 restoreCalendarSettings(); 2333 restoreCalendarSettings();
2334 return true; 2334 return true;
2335} 2335}
2336bool CalendarView::restoreCalendarSettings() 2336bool CalendarView::restoreCalendarSettings()
2337{ 2337{
2338 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2338 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2339 KopiCalendarFile * cal = calendars.first(); 2339 KopiCalendarFile * cal = calendars.first();
2340 while ( cal ) { 2340 while ( cal ) {
2341 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 2341 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
2342 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 2342 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
2343 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 2343 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
2344 if ( cal->isStandard ) 2344 if ( cal->isStandard )
2345 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2345 mCalendar->setDefaultCalendar( cal->mCalNumber );
2346 cal = calendars.next(); 2346 cal = calendars.next();
2347 } 2347 }
2348 setSyncEventsReadOnly(); 2348 setSyncEventsReadOnly();
2349 mCalendar->reInitAlarmSettings(); 2349 mCalendar->reInitAlarmSettings();
2350 updateUnmanagedViews(); 2350 updateUnmanagedViews();
2351 updateView(); 2351 updateView();
2352 return true; 2352 return true;
2353} 2353}
2354void CalendarView::addCalendarId( int id ) 2354void CalendarView::addCalendarId( int id )
2355{ 2355{
2356 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 2356 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
2357 if ( cal ) 2357 if ( cal )
2358 addCalendar( cal ); 2358 addCalendar( cal );
2359} 2359}
2360bool CalendarView::addCalendar( KopiCalendarFile * cal ) 2360bool CalendarView::addCalendar( KopiCalendarFile * cal )
2361{ 2361{
2362 cal->mErrorOnLoad = false; 2362 cal->mErrorOnLoad = false;
2363 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 2363 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
2364 cal->mLoadDt = QDateTime::currentDateTime(); 2364 cal->mLoadDt = QDateTime::currentDateTime();
2365 return true; 2365 return true;
2366 } 2366 }
2367 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 2367 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
2368 cal->mErrorOnLoad = true; 2368 cal->mErrorOnLoad = true;
2369 return false; 2369 return false;
2370} 2370}
2371bool CalendarView::openCalendar(QString filename, bool merge) 2371bool CalendarView::openCalendar(QString filename, bool merge)
2372{ 2372{
2373 2373
2374 if (filename.isEmpty()) { 2374 if (filename.isEmpty()) {
2375 return false; 2375 return false;
2376 } 2376 }
2377 2377
2378 if (!QFile::exists(filename)) { 2378 if (!QFile::exists(filename)) {
2379 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 2379 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
2380 return false; 2380 return false;
2381 } 2381 }
2382 2382
2383 globalFlagBlockAgenda = 1; 2383 globalFlagBlockAgenda = 1;
2384 clearAllViews(); 2384 clearAllViews();
2385 if (!merge) { 2385 if (!merge) {
2386 mViewManager->setDocumentId( filename ); 2386 mViewManager->setDocumentId( filename );
2387 mCalendar->close(); 2387 mCalendar->close();
2388 } 2388 }
2389 mStorage->setFileName( filename ); 2389 mStorage->setFileName( filename );
2390 2390
2391 if ( mStorage->load() ) { 2391 if ( mStorage->load() ) {
2392 if ( merge ) ;//setModified( true ); 2392 if ( merge ) ;//setModified( true );
2393 else { 2393 else {
2394 //setModified( true ); 2394 //setModified( true );
2395 mViewManager->setDocumentId( filename ); 2395 mViewManager->setDocumentId( filename );
2396 mDialogManager->setDocumentId( filename ); 2396 mDialogManager->setDocumentId( filename );
2397 mTodoList->setDocumentId( filename ); 2397 mTodoList->setDocumentId( filename );
2398 } 2398 }
2399 globalFlagBlockAgenda = 2; 2399 globalFlagBlockAgenda = 2;
2400 // if ( getLastSyncEvent() ) 2400 // if ( getLastSyncEvent() )
2401 // getLastSyncEvent()->setReadOnly( true ); 2401 // getLastSyncEvent()->setReadOnly( true );
2402 mCalendar->reInitAlarmSettings(); 2402 mCalendar->reInitAlarmSettings();
2403 setSyncEventsReadOnly(); 2403 setSyncEventsReadOnly();
2404 //updateUnmanagedViews(); 2404 //updateUnmanagedViews();
2405 //updateView(); 2405 //updateView();
2406 if ( filename != MainWindow::defaultFileName() ) { 2406 if ( filename != MainWindow::defaultFileName() ) {
2407 saveCalendar( MainWindow::defaultFileName() ); 2407 saveCalendar( MainWindow::defaultFileName() );
2408 } else { 2408 } else {
2409 QFileInfo finf ( MainWindow::defaultFileName()); 2409 QFileInfo finf ( MainWindow::defaultFileName());
2410 if ( finf.exists() ) { 2410 if ( finf.exists() ) {
2411 setLoadedFileVersion( finf.lastModified () ); 2411 setLoadedFileVersion( finf.lastModified () );
2412 } 2412 }
2413 } 2413 }
2414 return true; 2414 return true;
2415 } else { 2415 } else {
2416 // while failing to load, the calendar object could 2416 // while failing to load, the calendar object could
2417 // have become partially populated. Clear it out. 2417 // have become partially populated. Clear it out.
2418 if ( !merge ) { 2418 if ( !merge ) {
2419 mCalendar->close(); 2419 mCalendar->close();
2420 mViewManager->setDocumentId( filename ); 2420 mViewManager->setDocumentId( filename );
2421 mDialogManager->setDocumentId( filename ); 2421 mDialogManager->setDocumentId( filename );
2422 mTodoList->setDocumentId( filename ); 2422 mTodoList->setDocumentId( filename );
2423 } 2423 }
2424 2424
2425 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2425 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2426 2426
2427 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2427 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2428 globalFlagBlockAgenda = 2; 2428 globalFlagBlockAgenda = 2;
2429 mCalendar->reInitAlarmSettings(); 2429 mCalendar->reInitAlarmSettings();
2430 setSyncEventsReadOnly(); 2430 setSyncEventsReadOnly();
2431 updateUnmanagedViews(); 2431 updateUnmanagedViews();
2432 updateView(); 2432 updateView();
2433 } 2433 }
2434 return false; 2434 return false;
2435} 2435}
2436void CalendarView::mergeFile( QString fn ) 2436void CalendarView::mergeFile( QString fn )
2437{ 2437{
2438 clearAllViews(); 2438 clearAllViews();
2439 mCalendar->mergeCalendarFile( fn ); 2439 mCalendar->mergeCalendarFile( fn );
2440 mCalendar->reInitAlarmSettings(); 2440 mCalendar->reInitAlarmSettings();
2441 setSyncEventsReadOnly(); 2441 setSyncEventsReadOnly();
2442 updateUnmanagedViews(); 2442 updateUnmanagedViews();
2443 updateView(); 2443 updateView();
2444} 2444}
2445void CalendarView::mergeFileResource( QString fn ,QString resource ) 2445void CalendarView::mergeFileResource( QString fn ,QString resource )
2446{ 2446{
2447 2447
2448 if ( resource == "ALL" ) { 2448 if ( resource == "ALL" ) {
2449 mergeFile( fn ); 2449 mergeFile( fn );
2450 return; 2450 return;
2451 } 2451 }
2452 2452
2453 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2453 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2454 if ( !exclusiveResource ) { 2454 if ( !exclusiveResource ) {
2455 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() ); 2455 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() );
2456 return; 2456 return;
2457 } 2457 }
2458 clearAllViews(); 2458 clearAllViews();
2459 mCalendar->setCalendarRemove( exclusiveResource ); 2459 mCalendar->setCalendarRemove( exclusiveResource );
2460 int def = mCalendar->defaultCalendar(); 2460 int def = mCalendar->defaultCalendar();
2461 mCalendar->setDefaultCalendar(exclusiveResource); 2461 mCalendar->setDefaultCalendar(exclusiveResource);
2462 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) { 2462 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) {
2463 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() ); 2463 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() );
2464 } 2464 }
2465 mCalendar->setDefaultCalendar( def ); 2465 mCalendar->setDefaultCalendar( def );
2466 mCalendar->reInitAlarmSettings(); 2466 mCalendar->reInitAlarmSettings();
2467 setSyncEventsReadOnly(); 2467 setSyncEventsReadOnly();
2468 updateUnmanagedViews(); 2468 updateUnmanagedViews();
2469 updateView(); 2469 updateView();
2470} 2470}
2471void CalendarView::showOpenError() 2471void CalendarView::showOpenError()
2472{ 2472{
2473 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2473 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2474} 2474}
2475void CalendarView::setLoadedFileVersion(QDateTime dt) 2475void CalendarView::setLoadedFileVersion(QDateTime dt)
2476{ 2476{
2477 loadedFileVersion = dt; 2477 loadedFileVersion = dt;
2478} 2478}
2479bool CalendarView::checkFileChanged(QString fn) 2479bool CalendarView::checkFileChanged(QString fn)
2480{ 2480{
2481 QFileInfo finf ( fn ); 2481 QFileInfo finf ( fn );
2482 if ( !finf.exists() ) 2482 if ( !finf.exists() )
2483 return true; 2483 return true;
2484 QDateTime dt = finf.lastModified (); 2484 QDateTime dt = finf.lastModified ();
2485 if ( dt <= loadedFileVersion ) 2485 if ( dt <= loadedFileVersion )
2486 return false; 2486 return false;
2487 return true; 2487 return true;
2488 2488
2489} 2489}
2490void CalendarView::watchSavedFile() 2490void CalendarView::watchSavedFile()
2491{ 2491{
2492 QFileInfo finf ( MainWindow::defaultFileName()); 2492 QFileInfo finf ( MainWindow::defaultFileName());
2493 if ( !finf.exists() ) 2493 if ( !finf.exists() )
2494 return; 2494 return;
2495 QDateTime dt = finf.lastModified (); 2495 QDateTime dt = finf.lastModified ();
2496 if ( dt < loadedFileVersion ) { 2496 if ( dt < loadedFileVersion ) {
2497 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2497 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2498 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2498 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2499 return; 2499 return;
2500 } 2500 }
2501 loadedFileVersion = dt; 2501 loadedFileVersion = dt;
2502} 2502}
2503bool CalendarView::checkAllFileVersions() 2503bool CalendarView::checkAllFileVersions()
2504{ 2504{
2505 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2505 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2506 KopiCalendarFile * cal = calendars.first(); 2506 KopiCalendarFile * cal = calendars.first();
2507 mCalendar->setDefaultCalendar( 1 ); 2507 mCalendar->setDefaultCalendar( 1 );
2508 mCalendar->setDefaultCalendarEnabledOnly(); 2508 mCalendar->setDefaultCalendarEnabledOnly();
2509 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2509 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2510 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2510 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2511 restoreCalendarSettings(); 2511 restoreCalendarSettings();
2512 return false; 2512 return false;
2513 } 2513 }
2514 } 2514 }
2515 cal = calendars.next(); 2515 cal = calendars.next();
2516 QDateTime storeTemp = loadedFileVersion; 2516 QDateTime storeTemp = loadedFileVersion;
2517 while ( cal ) { 2517 while ( cal ) {
2518 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2518 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2519 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2519 mCalendar->setDefaultCalendar( cal->mCalNumber );
2520 mCalendar->setDefaultCalendarEnabledOnly(); 2520 mCalendar->setDefaultCalendarEnabledOnly();
2521 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2521 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2522 if ( !checkFileVersion(cal->mFileName )) { 2522 if ( !checkFileVersion(cal->mFileName )) {
2523 loadedFileVersion = storeTemp; 2523 loadedFileVersion = storeTemp;
2524 restoreCalendarSettings(); 2524 restoreCalendarSettings();
2525 return false; 2525 return false;
2526 } 2526 }
2527 } 2527 }
2528 cal = calendars.next(); 2528 cal = calendars.next();
2529 } 2529 }
2530 loadedFileVersion = storeTemp; 2530 loadedFileVersion = storeTemp;
2531 return true; 2531 return true;
2532} 2532}
2533bool CalendarView::checkFileVersion(QString fn) 2533bool CalendarView::checkFileVersion(QString fn)
2534{ 2534{
2535 QFileInfo finf ( fn ); 2535 QFileInfo finf ( fn );
2536 if ( !finf.exists() ) 2536 if ( !finf.exists() )
2537 return true; 2537 return true;
2538 QDateTime dt = finf.lastModified (); 2538 QDateTime dt = finf.lastModified ();
2539 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2539 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2540 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2540 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2541 if ( dt <= loadedFileVersion ) 2541 if ( dt <= loadedFileVersion )
2542 return true; 2542 return true;
2543 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2543 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2544 i18n("KO/Pi Warning"),i18n("Overwrite"), 2544 i18n("KO/Pi Warning"),i18n("Overwrite"),
2545 i18n("Sync+save")); 2545 i18n("Sync+save"));
2546 2546
2547 if ( km == KMessageBox::Cancel ) 2547 if ( km == KMessageBox::Cancel )
2548 return false; 2548 return false;
2549 if ( km == KMessageBox::Yes ) 2549 if ( km == KMessageBox::Yes )
2550 return true; 2550 return true;
2551 2551
2552 setSyncDevice("deleteaftersync" ); 2552 setSyncDevice("deleteaftersync" );
2553 mSyncManager->mAskForPreferences = true; 2553 mSyncManager->mAskForPreferences = true;
2554 mSyncManager->mSyncAlgoPrefs = 3; 2554 mSyncManager->mSyncAlgoPrefs = 3;
2555 mSyncManager->mWriteBackFile = false; 2555 mSyncManager->mWriteBackFile = false;
2556 mSyncManager->mWriteBackExistingOnly = false; 2556 mSyncManager->mWriteBackExistingOnly = false;
2557 mSyncManager->mShowSyncSummary = false; 2557 mSyncManager->mShowSyncSummary = false;
2558 mMultiResourceSync = false; 2558 mMultiResourceSync = false;
2559 syncCalendar( fn, 3 ); 2559 syncCalendar( fn, 3 );
2560 Event * e = getLastSyncEvent(); 2560 Event * e = getLastSyncEvent();
2561 if ( e ) 2561 if ( e )
2562 mCalendar->deleteEvent( e ); 2562 mCalendar->deleteEvent( e );
2563 return true; 2563 return true;
2564} 2564}
2565bool CalendarView::saveCalendars() 2565bool CalendarView::saveCalendars()
2566{ 2566{
2567 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2567 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2568 KopiCalendarFile * cal = calendars.first(); 2568 KopiCalendarFile * cal = calendars.first();
2569 mCalendar->setDefaultCalendar( 1 ); 2569 mCalendar->setDefaultCalendar( 1 );
2570 mCalendar->setDefaultCalendarEnabledOnly(); 2570 mCalendar->setDefaultCalendarEnabledOnly();
2571 QString saveError; 2571 QString saveError;
2572 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2572 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2573 saveError = cal->mName +"\n"; 2573 saveError = cal->mName +"\n";
2574 cal = calendars.next(); 2574 cal = calendars.next();
2575 while ( cal ) { 2575 while ( cal ) {
2576 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2576 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2577 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2577 mCalendar->setDefaultCalendar( cal->mCalNumber );
2578 mCalendar->setDefaultCalendarEnabledOnly(); 2578 mCalendar->setDefaultCalendarEnabledOnly();
2579 if ( saveCalendar( cal->mFileName ) ) 2579 if ( saveCalendar( cal->mFileName ) )
2580 cal->mLoadDt = QDateTime::currentDateTime(); 2580 cal->mLoadDt = QDateTime::currentDateTime();
2581 else 2581 else
2582 saveError += cal->mName + "\n"; 2582 saveError += cal->mName + "\n";
2583 } 2583 }
2584 cal = calendars.next(); 2584 cal = calendars.next();
2585 } 2585 }
2586 restoreCalendarSettings(); 2586 restoreCalendarSettings();
2587 //saveError = "test error"; 2587 //saveError = "test error";
2588 if ( !saveError.isEmpty() ) { 2588 if ( !saveError.isEmpty() ) {
2589 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2589 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2590 KMessageBox::error(this, saveError, i18n("Error saving data")); 2590 KMessageBox::error(this, saveError, i18n("Error saving data"));
2591 return false; 2591 return false;
2592 } 2592 }
2593 return true; 2593 return true;
2594} 2594}
2595bool CalendarView::saveCalendarResource(QString filename, QString resource) 2595bool CalendarView::saveCalendarResource(QString filename, QString resource)
2596{ 2596{
2597 if ( resource == "ALL" ) 2597 if ( resource == "ALL" )
2598 return saveCalendar( filename ); 2598 return saveCalendar( filename );
2599 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2599 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2600 if ( !exclusiveResource ) { 2600 if ( !exclusiveResource ) {
2601 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() ); 2601 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() );
2602 return false; 2602 return false;
2603 } 2603 }
2604 mCalendar->setDefaultCalendar( exclusiveResource ); 2604 mCalendar->setDefaultCalendar( exclusiveResource );
2605 mCalendar->setDefaultCalendarEnabledOnly(); 2605 mCalendar->setDefaultCalendarEnabledOnly();
2606 mCalendar->setSyncEventsEnabled(); 2606 mCalendar->setSyncEventsEnabled();
2607 bool res = saveCalendar( filename ); 2607 bool res = saveCalendar( filename );
2608 restoreCalendarSettings(); 2608 restoreCalendarSettings();
2609 return res; 2609 return res;
2610 2610
2611} 2611}
2612bool CalendarView::saveCalendar( QString filename ) 2612bool CalendarView::saveCalendar( QString filename )
2613{ 2613{
2614 2614
2615 // Store back all unsaved data into calendar object 2615 // Store back all unsaved data into calendar object
2616 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2616 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2617 if ( mViewManager->currentView() ) 2617 if ( mViewManager->currentView() )
2618 mViewManager->currentView()->flushView(); 2618 mViewManager->currentView()->flushView();
2619 2619
2620 2620
2621 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2621 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2622 mStorage->setSaveFormat( new ICalFormat() ); 2622 mStorage->setSaveFormat( new ICalFormat() );
2623 mStorage->setFileName( filename ); 2623 mStorage->setFileName( filename );
2624 bool success; 2624 bool success;
2625 success = mStorage->save(); 2625 success = mStorage->save();
2626 if ( !success ) { 2626 if ( !success ) {
2627 return false; 2627 return false;
2628 } 2628 }
2629 if ( filename == MainWindow::defaultFileName() ) { 2629 if ( filename == MainWindow::defaultFileName() ) {
2630 setLoadedFileVersion( lfv ); 2630 setLoadedFileVersion( lfv );
2631 watchSavedFile(); 2631 watchSavedFile();
2632 } 2632 }
2633 return true; 2633 return true;
2634} 2634}
2635 2635
2636void CalendarView::closeCalendar() 2636void CalendarView::closeCalendar()
2637{ 2637{
2638 2638
2639 // child windows no longer valid 2639 // child windows no longer valid
2640 clearAllViews(); 2640 clearAllViews();
2641 emit closingDown(); 2641 emit closingDown();
2642 2642
2643 mCalendar->close(); 2643 mCalendar->close();
2644 setModified(false); 2644 setModified(false);
2645 updateView(); 2645 updateView();
2646} 2646}
2647 2647
2648void CalendarView::archiveCalendar() 2648void CalendarView::archiveCalendar()
2649{ 2649{
2650 mDialogManager->showArchiveDialog(); 2650 mDialogManager->showArchiveDialog();
2651} 2651}
2652 2652
2653 2653
2654void CalendarView::readSettings() 2654void CalendarView::readSettings()
2655{ 2655{
2656 2656
2657 2657
2658 // mViewManager->showAgendaView(); 2658 // mViewManager->showAgendaView();
2659 QString str; 2659 QString str;
2660 //qDebug("CalendarView::readSettings() "); 2660 //qDebug("CalendarView::readSettings() ");
2661 // read settings from the KConfig, supplying reasonable 2661 // read settings from the KConfig, supplying reasonable
2662 // defaults where none are to be found 2662 // defaults where none are to be found
2663 KConfig *config = KOGlobals::config(); 2663 KConfig *config = KOGlobals::config();
2664#ifndef KORG_NOSPLITTER 2664#ifndef KORG_NOSPLITTER
2665 config->setGroup("KOrganizer Geometry"); 2665 config->setGroup("KOrganizer Geometry");
2666 2666
2667 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2667 QValueList<int> sizes = config->readIntListEntry("Separator1");
2668 if (sizes.count() != 2) { 2668 if (sizes.count() != 2) {
2669 sizes << mDateNavigator->minimumSizeHint().width(); 2669 sizes << mDateNavigator->minimumSizeHint().width();
2670 sizes << 300; 2670 sizes << 300;
2671 } 2671 }
2672 mPanner->setSizes(sizes); 2672 mPanner->setSizes(sizes);
2673 2673
2674 sizes = config->readIntListEntry("Separator2"); 2674 sizes = config->readIntListEntry("Separator2");
2675 if ( ( mResourceView && sizes.count() == 4 ) || 2675 if ( ( mResourceView && sizes.count() == 4 ) ||
2676 ( !mResourceView && sizes.count() == 3 ) ) { 2676 ( !mResourceView && sizes.count() == 3 ) ) {
2677 mLeftSplitter->setSizes(sizes); 2677 mLeftSplitter->setSizes(sizes);
2678 } 2678 }
2679#endif 2679#endif
2680 globalFlagBlockAgenda = 1; 2680 globalFlagBlockAgenda = 1;
2681 mViewManager->showAgendaView(); 2681 mViewManager->showAgendaView();
2682 //mViewManager->readSettings( config ); 2682 //mViewManager->readSettings( config );
2683 mTodoList->restoreLayout(config,QString("Todo Layout")); 2683 mTodoList->restoreLayout(config,QString("Todo Layout"));
2684 readFilterSettings(config); 2684 readFilterSettings(config);
2685 2685
2686#ifdef DESKTOP_VERSION 2686#ifdef DESKTOP_VERSION
2687 config->setGroup("WidgetLayout"); 2687 config->setGroup("WidgetLayout");
2688 QStringList list; 2688 QStringList list;
2689 list = config->readListEntry("MainLayout"); 2689 list = config->readListEntry("MainLayout");
2690 int x,y,w,h; 2690 int x,y,w,h;
2691 if ( ! list.isEmpty() ) { 2691 if ( ! list.isEmpty() ) {
2692 x = list[0].toInt(); 2692 x = list[0].toInt();
2693 y = list[1].toInt(); 2693 y = list[1].toInt();
2694 w = list[2].toInt(); 2694 w = list[2].toInt();
2695 h = list[3].toInt(); 2695 h = list[3].toInt();
2696 KApplication::testCoords( &x,&y,&w,&h ); 2696 KApplication::testCoords( &x,&y,&w,&h );
2697 topLevelWidget()->setGeometry(x,y,w,h); 2697 topLevelWidget()->setGeometry(x,y,w,h);
2698 2698
2699 } else { 2699 } else {
2700 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2700 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2701 } 2701 }
2702 list = config->readListEntry("EditEventLayout"); 2702 list = config->readListEntry("EditEventLayout");
2703 if ( ! list.isEmpty() ) { 2703 if ( ! list.isEmpty() ) {
2704 x = list[0].toInt(); 2704 x = list[0].toInt();
2705 y = list[1].toInt(); 2705 y = list[1].toInt();
2706 w = list[2].toInt(); 2706 w = list[2].toInt();
2707 h = list[3].toInt(); 2707 h = list[3].toInt();
2708 KApplication::testCoords( &x,&y,&w,&h ); 2708 KApplication::testCoords( &x,&y,&w,&h );
2709 mEventEditor->setGeometry(x,y,w,h); 2709 mEventEditor->setGeometry(x,y,w,h);
2710 2710
2711 } 2711 }
2712 list = config->readListEntry("EditTodoLayout"); 2712 list = config->readListEntry("EditTodoLayout");
2713 if ( ! list.isEmpty() ) { 2713 if ( ! list.isEmpty() ) {
2714 x = list[0].toInt(); 2714 x = list[0].toInt();
2715 y = list[1].toInt(); 2715 y = list[1].toInt();
2716 w = list[2].toInt(); 2716 w = list[2].toInt();
2717 h = list[3].toInt(); 2717 h = list[3].toInt();
2718 KApplication::testCoords( &x,&y,&w,&h ); 2718 KApplication::testCoords( &x,&y,&w,&h );
2719 mTodoEditor->setGeometry(x,y,w,h); 2719 mTodoEditor->setGeometry(x,y,w,h);
2720 2720
2721 } 2721 }
2722 list = config->readListEntry("ViewerLayout"); 2722 list = config->readListEntry("ViewerLayout");
2723 if ( ! list.isEmpty() ) { 2723 if ( ! list.isEmpty() ) {
2724 x = list[0].toInt(); 2724 x = list[0].toInt();
2725 y = list[1].toInt(); 2725 y = list[1].toInt();
2726 w = list[2].toInt(); 2726 w = list[2].toInt();
2727 h = list[3].toInt(); 2727 h = list[3].toInt();
2728 KApplication::testCoords( &x,&y,&w,&h ); 2728 KApplication::testCoords( &x,&y,&w,&h );
2729 getEventViewerDialog()->setGeometry(x,y,w,h); 2729 getEventViewerDialog()->setGeometry(x,y,w,h);
2730 } 2730 }
2731#endif 2731#endif
2732 config->setGroup( "Views" ); 2732 config->setGroup( "Views" );
2733 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2733 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2734 2734
2735 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2735 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2736 2736
2737 int resetval = 0; 2737 int resetval = 0;
2738 int maxVal = 0; 2738 int maxVal = 0;
2739 if (sizes.count() != 3) { 2739 if (sizes.count() != 3) {
2740 if ( KOPrefs::instance()->mVerticalScreen ) { 2740 if ( KOPrefs::instance()->mVerticalScreen ) {
2741 resetval = mDateNavigator->sizeHint().width()+2; 2741 resetval = mDateNavigator->sizeHint().width()+2;
2742 } else { 2742 } else {
2743 resetval = mDateNavigator->sizeHint().height()+2; 2743 resetval = mDateNavigator->sizeHint().height()+2;
2744 } 2744 }
2745 } 2745 }
2746 if ( resetval ) { 2746 if ( resetval ) {
2747 sizes.clear(); 2747 sizes.clear();
2748 if ( KOPrefs::instance()->mVerticalScreen ) { 2748 if ( KOPrefs::instance()->mVerticalScreen ) {
2749 maxVal = QApplication::desktop()->width() -10; 2749 maxVal = QApplication::desktop()->width() -10;
2750 } else { 2750 } else {
2751 maxVal = QApplication::desktop()->height()-10; 2751 maxVal = QApplication::desktop()->height()-10;
2752 } 2752 }
2753 sizes << resetval; 2753 sizes << resetval;
2754 if ( maxVal < resetval + resetval) 2754 if ( maxVal < resetval + resetval)
2755 resetval = maxVal - resetval; 2755 resetval = maxVal - resetval;
2756 sizes << resetval; 2756 sizes << resetval;
2757 sizes << 100; 2757 sizes << 100;
2758 } 2758 }
2759 mLeftFrame->setSizes(sizes); 2759 mLeftFrame->setSizes(sizes);
2760 sizes = config->readIntListEntry("Main Splitter Frame"); 2760 sizes = config->readIntListEntry("Main Splitter Frame");
2761 resetval = 0; 2761 resetval = 0;
2762 maxVal = 0; 2762 maxVal = 0;
2763 if (sizes.count() != 2) { 2763 if (sizes.count() != 2) {
2764 if ( !KOPrefs::instance()->mVerticalScreen ) { 2764 if ( !KOPrefs::instance()->mVerticalScreen ) {
2765 resetval = mDateNavigator->sizeHint().width()+2; 2765 resetval = mDateNavigator->sizeHint().width()+2;
2766 } else { 2766 } else {
2767 resetval = mDateNavigator->sizeHint().height()+2; 2767 resetval = mDateNavigator->sizeHint().height()+2;
2768 } 2768 }
2769 } 2769 }
2770 if ( resetval ) { 2770 if ( resetval ) {
2771 sizes.clear(); 2771 sizes.clear();
2772 if ( !KOPrefs::instance()->mVerticalScreen ) { 2772 if ( !KOPrefs::instance()->mVerticalScreen ) {
2773 maxVal = QApplication::desktop()->width() -10; 2773 maxVal = QApplication::desktop()->width() -10;
2774 } else { 2774 } else {
2775 maxVal = QApplication::desktop()->height()-10; 2775 maxVal = QApplication::desktop()->height()-10;
2776 } 2776 }
2777 sizes << resetval; 2777 sizes << resetval;
2778 if ( maxVal < resetval + resetval) 2778 if ( maxVal < resetval + resetval)
2779 resetval = maxVal - resetval; 2779 resetval = maxVal - resetval;
2780 sizes << resetval; 2780 sizes << resetval;
2781 } 2781 }
2782 mMainFrame->setSizes(sizes); 2782 mMainFrame->setSizes(sizes);
2783 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 2783 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
2784 else if ( dateCount == 7 ) mNavigator->selectWeek(); 2784 else if ( dateCount == 7 ) mNavigator->selectWeek();
2785 else mNavigator->selectDates( dateCount ); 2785 else mNavigator->selectDates( dateCount );
2786 // mViewManager->readSettings( config ); 2786 // mViewManager->readSettings( config );
2787 updateConfig(); 2787 updateConfig();
2788 globalFlagBlockAgenda = 2; 2788 globalFlagBlockAgenda = 2;
2789 mViewManager->readSettings( config ); 2789 mViewManager->readSettings( config );
2790 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 2790 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
2791} 2791}
2792 2792
2793void CalendarView::checkSuspendAlarm() 2793void CalendarView::checkSuspendAlarm()
2794{ 2794{
2795 if ( mSuspendTimer->isActive() ) { 2795 if ( mSuspendTimer->isActive() ) {
2796 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm")); 2796 KMessageBox::information( this, i18n("<b>WARNING:</b> There is a pending suspended alarm!"), i18n("Pending Suspend Alarm"));
2797 } 2797 }
2798} 2798}
2799void CalendarView::writeSettings() 2799void CalendarView::writeSettings()
2800{ 2800{
2801 // kdDebug() << "CalendarView::writeSettings" << endl; 2801 // kdDebug() << "CalendarView::writeSettings" << endl;
2802 2802
2803 KConfig *config = KOGlobals::config(); 2803 KConfig *config = KOGlobals::config();
2804 2804
2805 mViewManager->writeSettings( config ); 2805 mViewManager->writeSettings( config );
2806 mTodoList->saveLayout(config,QString("Todo Layout")); 2806 mTodoList->saveLayout(config,QString("Todo Layout"));
2807 mDialogManager->writeSettings( config ); 2807 mDialogManager->writeSettings( config );
2808 //KOPrefs::instance()->usrWriteConfig(); 2808 //KOPrefs::instance()->usrWriteConfig();
2809 KOPrefs::instance()->writeConfig(); 2809 KOPrefs::instance()->writeConfig();
2810 2810
2811 writeFilterSettings(config); 2811 writeFilterSettings(config);
2812 config->setGroup( "AppRun" ); 2812 config->setGroup( "AppRun" );
2813 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 2813 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
2814 int days = dt.daysTo( QDate::currentDate() ); 2814 int days = dt.daysTo( QDate::currentDate() );
2815 dt = dt.addDays( days ); 2815 dt = dt.addDays( days );
2816 int secs = dt.secsTo( QDateTime::currentDateTime() ); 2816 int secs = dt.secsTo( QDateTime::currentDateTime() );
2817 config->writeEntry( "LatestProgramStopDays", days ); 2817 config->writeEntry( "LatestProgramStopDays", days );
2818 config->writeEntry( "LatestProgramStopSecs", secs ); 2818 config->writeEntry( "LatestProgramStopSecs", secs );
2819 //qDebug("KO: Writing stop time: %d ", secs); 2819 //qDebug("KO: Writing stop time: %d ", secs);
2820 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 2820 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
2821 //QDateTime latest = dt.addSecs ( secs ); 2821 //QDateTime latest = dt.addSecs ( secs );
2822 //qDebug("KO: Termination on %s ", latest.toString().latin1()); 2822 //qDebug("KO: Termination on %s ", latest.toString().latin1());
2823 config->setGroup( "Views" ); 2823 config->setGroup( "Views" );
2824 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 2824 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
2825 2825
2826#if 0 2826#if 0
2827 qDebug("********************* "); 2827 qDebug("********************* ");
2828 qDebug("Testcode secsto "); 2828 qDebug("Testcode secsto ");
2829 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) ); 2829 QDateTime dt_nodaylight ( QDate (2005,3,26), QTime( 0,0,0 ) );
2830 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) ); 2830 QDateTime dt_daylight ( QDate (2005,3,29), QTime( 0,0,0 ) );
2831 int secsto = dt_nodaylight.secsTo( dt_daylight ); 2831 int secsto = dt_nodaylight.secsTo( dt_daylight );
2832 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto ); 2832 QDateTime dt_daylight_wrong = dt_nodaylight.addSecs( secsto );
2833 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() ); 2833 qDebug("dt nodaylight %s ",dt_nodaylight.toString().latin1() );
2834 qDebug("dt daylight %s ",dt_daylight.toString().latin1() ); 2834 qDebug("dt daylight %s ",dt_daylight.toString().latin1() );
2835 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() ); 2835 qDebug("dt daylight_wrong %s ",dt_daylight_wrong.toString().latin1() );
2836 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600); 2836 qDebug("Computed secsTo %d . in minutes: %d . in hours: %d ", secsto, secsto/60, secsto/3600);
2837 qDebug("********************* testcode end"); 2837 qDebug("********************* testcode end");
2838 2838
2839#endif 2839#endif
2840 2840
2841 QValueList<int> listINT = mLeftFrame->sizes(); 2841 QValueList<int> listINT = mLeftFrame->sizes();
2842 config->writeEntry("Left Splitter Frame",listINT); 2842 config->writeEntry("Left Splitter Frame",listINT);
2843 QValueList<int> listINT2 = mMainFrame->sizes(); 2843 QValueList<int> listINT2 = mMainFrame->sizes();
2844 config->writeEntry("Main Splitter Frame",listINT2); 2844 config->writeEntry("Main Splitter Frame",listINT2);
2845#ifdef DESKTOP_VERSION 2845#ifdef DESKTOP_VERSION
2846 config->setGroup("WidgetLayout"); 2846 config->setGroup("WidgetLayout");
2847 QStringList list ;//= config->readListEntry("MainLayout"); 2847 QStringList list ;//= config->readListEntry("MainLayout");
2848 int x,y,w,h; 2848 int x,y,w,h;
2849 QWidget* wid; 2849 QWidget* wid;
2850 wid = topLevelWidget(); 2850 wid = topLevelWidget();
2851 x = wid->geometry().x(); 2851 x = wid->geometry().x();
2852 y = wid->geometry().y(); 2852 y = wid->geometry().y();
2853 w = wid->width(); 2853 w = wid->width();
2854 h = wid->height(); 2854 h = wid->height();
2855 list.clear(); 2855 list.clear();
2856 list << QString::number( x ); 2856 list << QString::number( x );
2857 list << QString::number( y ); 2857 list << QString::number( y );
2858 list << QString::number( w ); 2858 list << QString::number( w );
2859 list << QString::number( h ); 2859 list << QString::number( h );
2860 config->writeEntry("MainLayout",list ); 2860 config->writeEntry("MainLayout",list );
2861 2861
2862 wid = mEventEditor; 2862 wid = mEventEditor;
2863 x = wid->geometry().x(); 2863 x = wid->geometry().x();
2864 y = wid->geometry().y(); 2864 y = wid->geometry().y();
2865 w = wid->width(); 2865 w = wid->width();
2866 h = wid->height(); 2866 h = wid->height();
2867 list.clear(); 2867 list.clear();
2868 list << QString::number( x ); 2868 list << QString::number( x );
2869 list << QString::number( y ); 2869 list << QString::number( y );
2870 list << QString::number( w ); 2870 list << QString::number( w );
2871 list << QString::number( h ); 2871 list << QString::number( h );
2872 config->writeEntry("EditEventLayout",list ); 2872 config->writeEntry("EditEventLayout",list );
2873 2873
2874 wid = mTodoEditor; 2874 wid = mTodoEditor;
2875 x = wid->geometry().x(); 2875 x = wid->geometry().x();
2876 y = wid->geometry().y(); 2876 y = wid->geometry().y();
2877 w = wid->width(); 2877 w = wid->width();
2878 h = wid->height(); 2878 h = wid->height();
2879 list.clear(); 2879 list.clear();
2880 list << QString::number( x ); 2880 list << QString::number( x );
2881 list << QString::number( y ); 2881 list << QString::number( y );
2882 list << QString::number( w ); 2882 list << QString::number( w );
2883 list << QString::number( h ); 2883 list << QString::number( h );
2884 config->writeEntry("EditTodoLayout",list ); 2884 config->writeEntry("EditTodoLayout",list );
2885 wid = getEventViewerDialog(); 2885 wid = getEventViewerDialog();
2886 x = wid->geometry().x(); 2886 x = wid->geometry().x();
2887 y = wid->geometry().y(); 2887 y = wid->geometry().y();
2888 w = wid->width(); 2888 w = wid->width();
2889 h = wid->height(); 2889 h = wid->height();
2890 list.clear(); 2890 list.clear();
2891 list << QString::number( x ); 2891 list << QString::number( x );
2892 list << QString::number( y ); 2892 list << QString::number( y );
2893 list << QString::number( w ); 2893 list << QString::number( w );
2894 list << QString::number( h ); 2894 list << QString::number( h );
2895 config->writeEntry("ViewerLayout",list ); 2895 config->writeEntry("ViewerLayout",list );
2896 wid = mDialogManager->getSearchDialog(); 2896 wid = mDialogManager->getSearchDialog();
2897 if ( wid ) { 2897 if ( wid ) {
2898 x = wid->geometry().x(); 2898 x = wid->geometry().x();
2899 y = wid->geometry().y(); 2899 y = wid->geometry().y();
2900 w = wid->width(); 2900 w = wid->width();
2901 h = wid->height(); 2901 h = wid->height();
2902 list.clear(); 2902 list.clear();
2903 list << QString::number( x ); 2903 list << QString::number( x );
2904 list << QString::number( y ); 2904 list << QString::number( y );
2905 list << QString::number( w ); 2905 list << QString::number( w );
2906 list << QString::number( h ); 2906 list << QString::number( h );
2907 config->writeEntry("SearchLayout",list ); 2907 config->writeEntry("SearchLayout",list );
2908 } 2908 }
2909#endif 2909#endif
2910 2910
2911 2911
2912 config->sync(); 2912 config->sync();
2913} 2913}
2914 2914
2915void CalendarView::readFilterSettings(KConfig *config) 2915void CalendarView::readFilterSettings(KConfig *config)
2916{ 2916{
2917 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2917 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2918 2918
2919 mFilters.clear(); 2919 mFilters.clear();
2920 2920
2921 config->setGroup("General"); 2921 config->setGroup("General");
2922 QStringList filterList = config->readListEntry("CalendarFilters"); 2922 QStringList filterList = config->readListEntry("CalendarFilters");
2923 2923
2924 QStringList::ConstIterator it = filterList.begin(); 2924 QStringList::ConstIterator it = filterList.begin();
2925 QStringList::ConstIterator end = filterList.end(); 2925 QStringList::ConstIterator end = filterList.end();
2926 while(it != end) { 2926 while(it != end) {
2927 // kdDebug() << " filter: " << (*it) << endl; 2927 // kdDebug() << " filter: " << (*it) << endl;
2928 2928
2929 CalFilter *filter; 2929 CalFilter *filter;
2930 filter = new CalFilter(*it); 2930 filter = new CalFilter(*it);
2931 config->setGroup("Filter_" + (*it).utf8()); 2931 config->setGroup("Filter_" + (*it).utf8());
2932 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2932 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2933 filter->setCriteria(config->readNumEntry("Criteria",0)); 2933 filter->setCriteria(config->readNumEntry("Criteria",0));
2934 filter->setCategoryList(config->readListEntry("CategoryList")); 2934 filter->setCategoryList(config->readListEntry("CategoryList"));
2935 mFilters.append(filter); 2935 mFilters.append(filter);
2936 2936
2937 ++it; 2937 ++it;
2938 } 2938 }
2939 2939
2940 if (mFilters.count() == 0) { 2940 if (mFilters.count() == 0) {
2941 CalFilter *filter = new CalFilter(i18n("Default")); 2941 CalFilter *filter = new CalFilter(i18n("Default"));
2942 mFilters.append(filter); 2942 mFilters.append(filter);
2943 } 2943 }
2944 mFilterView->updateFilters(); 2944 mFilterView->updateFilters();
2945 config->setGroup("FilterView"); 2945 config->setGroup("FilterView");
2946 2946
2947 mFilterView->blockSignals(true); 2947 mFilterView->blockSignals(true);
2948 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2948 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2949 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2949 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2950 mFilterView->blockSignals(false); 2950 mFilterView->blockSignals(false);
2951 // We do it manually to avoid it being done twice by the above calls 2951 // We do it manually to avoid it being done twice by the above calls
2952 updateFilter(); 2952 updateFilter();
2953} 2953}
2954 2954
2955void CalendarView::writeFilterSettings(KConfig *config) 2955void CalendarView::writeFilterSettings(KConfig *config)
2956{ 2956{
2957 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2957 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2958 2958
2959 QStringList filterList; 2959 QStringList filterList;
2960 2960
2961 CalFilter *filter = mFilters.first(); 2961 CalFilter *filter = mFilters.first();
2962 while(filter) { 2962 while(filter) {
2963 // kdDebug() << " fn: " << filter->name() << endl; 2963 // kdDebug() << " fn: " << filter->name() << endl;
2964 filterList << filter->name(); 2964 filterList << filter->name();
2965 config->setGroup("Filter_" + filter->name().utf8()); 2965 config->setGroup("Filter_" + filter->name().utf8());
2966 config->writeEntry("Criteria",filter->criteria()); 2966 config->writeEntry("Criteria",filter->criteria());
2967 config->writeEntry("CategoryList",filter->categoryList()); 2967 config->writeEntry("CategoryList",filter->categoryList());
2968 filter = mFilters.next(); 2968 filter = mFilters.next();
2969 } 2969 }
2970 config->setGroup("General"); 2970 config->setGroup("General");
2971 config->writeEntry("CalendarFilters",filterList); 2971 config->writeEntry("CalendarFilters",filterList);
2972 2972
2973 config->setGroup("FilterView"); 2973 config->setGroup("FilterView");
2974 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2974 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2975 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2975 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2976} 2976}
2977 2977
2978 2978
2979void CalendarView::goToday() 2979void CalendarView::goToday()
2980{ 2980{
2981 if ( mViewManager->currentView()->isMonthView() ) 2981 if ( mViewManager->currentView()->isMonthView() )
2982 mNavigator->selectTodayMonth(); 2982 mNavigator->selectTodayMonth();
2983 else 2983 else
2984 mNavigator->selectToday(); 2984 mNavigator->selectToday();
2985} 2985}
2986 2986
2987void CalendarView::goNext() 2987void CalendarView::goNext()
2988{ 2988{
2989 mNavigator->selectNext(); 2989 mNavigator->selectNext();
2990} 2990}
2991 2991
2992void CalendarView::goPrevious() 2992void CalendarView::goPrevious()
2993{ 2993{
2994 mNavigator->selectPrevious(); 2994 mNavigator->selectPrevious();
2995} 2995}
2996void CalendarView::goNextMonth() 2996void CalendarView::goNextMonth()
2997{ 2997{
2998 mNavigator->selectNextMonth(); 2998 mNavigator->selectNextMonth();
2999} 2999}
3000 3000
3001void CalendarView::goPreviousMonth() 3001void CalendarView::goPreviousMonth()
3002{ 3002{
3003 mNavigator->selectPreviousMonth(); 3003 mNavigator->selectPreviousMonth();
3004} 3004}
3005 3005
3006void CalendarView::updateConfig() 3006void CalendarView::updateConfig()
3007{ 3007{
3008 if ( KOPrefs::instance()->mUseAppColors ) 3008 if ( KOPrefs::instance()->mUseAppColors )
3009 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 3009 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
3010 emit configChanged(); 3010 emit configChanged();
3011 mTodoList->updateConfig(); 3011 mTodoList->updateConfig();
3012 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 3012 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
3013 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3013 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3014 // To make the "fill window" configurations work 3014 // To make the "fill window" configurations work
3015 //mViewManager->raiseCurrentView(); 3015 //mViewManager->raiseCurrentView();
3016} 3016}
3017 3017
3018 3018
3019void CalendarView::eventChanged(Event *event) 3019void CalendarView::eventChanged(Event *event)
3020{ 3020{
3021 changeEventDisplay(event,KOGlobals::EVENTEDITED); 3021 changeEventDisplay(event,KOGlobals::EVENTEDITED);
3022 //updateUnmanagedViews(); 3022 //updateUnmanagedViews();
3023} 3023}
3024 3024
3025void CalendarView::eventAdded(Event *event) 3025void CalendarView::eventAdded(Event *event)
3026{ 3026{
3027 changeEventDisplay(event,KOGlobals::EVENTADDED); 3027 changeEventDisplay(event,KOGlobals::EVENTADDED);
3028} 3028}
3029 3029
3030void CalendarView::eventToBeDeleted(Event *) 3030void CalendarView::eventToBeDeleted(Event *)
3031{ 3031{
3032 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 3032 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
3033} 3033}
3034 3034
3035void CalendarView::eventDeleted() 3035void CalendarView::eventDeleted()
3036{ 3036{
3037 changeEventDisplay(0,KOGlobals::EVENTDELETED); 3037 changeEventDisplay(0,KOGlobals::EVENTDELETED);
3038} 3038}
3039void CalendarView::changeTodoDisplay(Todo *which, int action) 3039void CalendarView::changeTodoDisplay(Todo *which, int action)
3040{ 3040{
3041 changeIncidenceDisplay((Incidence *)which, action); 3041 changeIncidenceDisplay((Incidence *)which, action);
3042 mDateNavigator->updateView(); //LR 3042 mDateNavigator->updateView(); //LR
3043 //mDialogManager->updateSearchDialog(); 3043 //mDialogManager->updateSearchDialog();
3044 3044
3045 if (which) { 3045 if (which) {
3046 mViewManager->updateWNview(); 3046 mViewManager->updateWNview();
3047 //mTodoList->updateView(); 3047 //mTodoList->updateView();
3048 } 3048 }
3049 3049
3050} 3050}
3051 3051
3052void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 3052void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
3053{ 3053{
3054 updateUnmanagedViews(); 3054 updateUnmanagedViews();
3055 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 3055 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
3056 if ( action == KOGlobals::EVENTDELETED ) { //delete 3056 if ( action == KOGlobals::EVENTDELETED ) { //delete
3057 mCalendar->checkAlarmForIncidence( 0, true ); 3057 mCalendar->checkAlarmForIncidence( 0, true );
3058 if ( mEventViewerDialog ) 3058 if ( mEventViewerDialog )
3059 mEventViewerDialog->hide(); 3059 mEventViewerDialog->hide();
3060 } 3060 }
3061 else 3061 else
3062 mCalendar->checkAlarmForIncidence( which , false ); 3062 mCalendar->checkAlarmForIncidence( which , false );
3063} 3063}
3064 3064
3065// most of the changeEventDisplays() right now just call the view's 3065// most of the changeEventDisplays() right now just call the view's
3066// total update mode, but they SHOULD be recoded to be more refresh-efficient. 3066// total update mode, but they SHOULD be recoded to be more refresh-efficient.
3067void CalendarView::changeEventDisplay(Event *which, int action) 3067void CalendarView::changeEventDisplay(Event *which, int action)
3068{ 3068{
3069 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 3069 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
3070 changeIncidenceDisplay((Incidence *)which, action); 3070 changeIncidenceDisplay((Incidence *)which, action);
3071 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3071 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3072 if ( flag_clearallviewsEventDisplay ) { 3072 if ( flag_clearallviewsEventDisplay ) {
3073 clearAllViews(); 3073 clearAllViews();
3074 flag_clearallviewsEventDisplay = false; 3074 flag_clearallviewsEventDisplay = false;
3075 } 3075 }
3076 return; 3076 return;
3077 } 3077 }
3078 flag_clearallviewsEventDisplay = true; 3078 flag_clearallviewsEventDisplay = true;
3079 mDateNavigator->updateView(); 3079 mDateNavigator->updateView();
3080 //mDialogManager->updateSearchDialog(); 3080 //mDialogManager->updateSearchDialog();
3081 if (which) { 3081 if (which) {
3082 // If there is an event view visible update the display 3082 // If there is an event view visible update the display
3083 mViewManager->currentView()->changeEventDisplay(which,action); 3083 mViewManager->currentView()->changeEventDisplay(which,action);
3084 // TODO: check, if update needed 3084 // TODO: check, if update needed
3085 // if (which->getTodoStatus()) { 3085 // if (which->getTodoStatus()) {
3086 mTodoList->updateView(); 3086 mTodoList->updateView();
3087 if ( action != KOGlobals::EVENTDELETED && KOPrefs::instance()->mDetectConflicts ) { 3087 if ( action != KOGlobals::EVENTDELETED && KOPrefs::instance()->mDetectConflicts ) {
3088 mConflictingEvent = which ; 3088 mConflictingEvent = which ;
3089 int time = 1000; 3089 int time = 1000;
3090#ifdef DESKTOP_VERSION 3090#ifdef DESKTOP_VERSION
3091 time = 500; 3091 time = 500;
3092#endif 3092#endif
3093 bool checkC = false; 3093 bool checkC = false;
3094 if ( mConflictingEvent->doesFloat() ) { 3094 if ( mConflictingEvent->doesFloat() ) {
3095 checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay 3095 checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay
3096 || KOPrefs::instance()->mCheckConflictsAllDayNonAD; 3096 || KOPrefs::instance()->mCheckConflictsAllDayNonAD;
3097 } else { 3097 } else {
3098 checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay 3098 checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay
3099 || KOPrefs::instance()->mCheckConflictsNonADNonAD; 3099 || KOPrefs::instance()->mCheckConflictsNonADNonAD;
3100 } 3100 }
3101 if ( !KOPrefs::instance()->mIncludeFree && mConflictingEvent->transparency() == KCal::Event::Transparent ) 3101 if ( !KOPrefs::instance()->mIncludeFree && mConflictingEvent->transparency() == KCal::Event::Transparent )
3102 checkC = false; 3102 checkC = false;
3103 if ( checkC ) 3103 if ( checkC )
3104 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); 3104 QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) );
3105 } 3105 }
3106 // } 3106 // }
3107 } else { 3107 } else {
3108 mViewManager->currentView()->updateView(); 3108 mViewManager->currentView()->updateView();
3109 } 3109 }
3110} 3110}
3111void CalendarView::checkConflictForEvent() 3111void CalendarView::checkConflictForEvent()
3112{ 3112{
3113 3113
3114 if (!KOPrefs::instance()->mConfirm) 3114 if (!KOPrefs::instance()->mConfirm)
3115 return; 3115 return;
3116 if ( ! mConflictingEvent ) return; 3116 if ( ! mConflictingEvent ) return;
3117 Event * conflictingEvent = mConflictingEvent; 3117 Event * conflictingEvent = mConflictingEvent;
3118 mConflictingEvent = 0; 3118 mConflictingEvent = 0;
3119 QDateTime current = QDateTime::currentDateTime(); 3119 QDateTime current = QDateTime::currentDateTime();
3120 if ( ! conflictingEvent->matchTime( &current, 0 ) ) { 3120 if ( ! conflictingEvent->matchTime( &current, 0 ) ) {
3121 return; 3121 return;
3122 } 3122 }
3123 CalFilter *filterIN = 0; 3123 CalFilter *filterIN = 0;
3124 CalFilter *filterALL = 0; 3124 CalFilter *filterALL = 0;
3125 CalFilter *filter = mFilters.first(); 3125 CalFilter *filter = mFilters.first();
3126 while(filter) { 3126 while(filter) {
3127 if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem) 3127 if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem)
3128 filterIN = filter; 3128 filterIN = filter;
3129 if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem ) 3129 if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem )
3130 filterALL = filter; 3130 filterALL = filter;
3131 filter = mFilters.next(); 3131 filter = mFilters.next();
3132 } 3132 }
3133 if ( filterIN ) { 3133 if ( filterIN ) {
3134 if ( !filterIN->filterCalendarItem( conflictingEvent ) ) { 3134 if ( !filterIN->filterCalendarItem( conflictingEvent ) ) {
3135 return; 3135 return;
3136 } 3136 }
3137 } 3137 }
3138 QPtrList<Event> testlist = mCalendar->events(); 3138 QPtrList<Event> testlist = mCalendar->events();
3139 Event * test = testlist.first(); 3139 Event * test = testlist.first();
3140 QDateTime conflict; 3140 QDateTime conflict;
3141 QDateTime retVal; 3141 QDateTime retVal;
3142 bool found = false; 3142 bool found = false;
3143 Event * cE = 0; 3143 Event * cE = 0;
3144 bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay; 3144 bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay;
3145 bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD; 3145 bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD;
3146 if ( !conflictingEvent->doesFloat() ) { 3146 if ( !conflictingEvent->doesFloat() ) {
3147 chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay; 3147 chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay;
3148 chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD; 3148 chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD;
3149 } 3149 }
3150 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 3150 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
3151 while ( test ) { 3151 while ( test ) {
3152 qApp->processEvents(); 3152 qApp->processEvents();
3153 bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad ); 3153 bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad );
3154 3154
3155 if ( !skip ) { 3155 if ( !skip ) {
3156 if ( !KOPrefs::instance()->mIncludeFree && test->transparency() == KCal::Event::Transparent ) 3156 if ( !KOPrefs::instance()->mIncludeFree && test->transparency() == KCal::Event::Transparent )
3157 skip = true; 3157 skip = true;
3158 } 3158 }
3159 if ( !skip ) { 3159 if ( !skip ) {
3160 if ( filterALL ) { 3160 if ( filterALL ) {
3161 if ( !filterALL->filterCalendarItem( test ) ) { 3161 if ( !filterALL->filterCalendarItem( test ) ) {
3162 skip = true; 3162 skip = true;
3163 } 3163 }
3164 } 3164 }
3165 if ( !skip ) { 3165 if ( !skip ) {
3166 if ( found ) 3166 if ( found )
3167 skip = !test->matchTime( &current, &conflict ); 3167 skip = !test->matchTime( &current, &conflict );
3168 else 3168 else
3169 skip = !test->matchTime( &current, 0 ); 3169 skip = !test->matchTime( &current, 0 );
3170 if ( !skip ) { 3170 if ( !skip ) {
3171 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) { 3171 if ( conflictingEvent->isOverlapping ( test, &retVal, &current ) ) {
3172 if ( ! found ) { 3172 if ( ! found ) {
3173 conflict = retVal; 3173 conflict = retVal;
3174 cE = test; 3174 cE = test;
3175 } else { 3175 } else {
3176 if ( retVal < conflict ) { 3176 if ( retVal < conflict ) {
3177 conflict = retVal; 3177 conflict = retVal;
3178 cE = test; 3178 cE = test;
3179 } 3179 }
3180 } 3180 }
3181 found = true; 3181 found = true;
3182 } 3182 }
3183 } 3183 }
3184 } 3184 }
3185 } 3185 }
3186 test = testlist.next(); 3186 test = testlist.next();
3187 } 3187 }
3188 topLevelWidget()->setCaption( i18n("KO/Pi") ); 3188 topLevelWidget()->setCaption( i18n("KO/Pi") );
3189 if ( found ) { 3189 if ( found ) {
3190 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ; 3190 QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ;
3191 qApp->processEvents(); 3191 qApp->processEvents();
3192 int km = KMessageBox::warningContinueCancel(this,mess, 3192 int km = KMessageBox::warningContinueCancel(this,mess,
3193 i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!")); 3193 i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!"));
3194 if ( km != KMessageBox::Continue ) { 3194 if ( km != KMessageBox::Continue ) {
3195 return; 3195 return;
3196 } 3196 }
3197 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 3197 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
3198 mViewManager->showDayView(); 3198 mViewManager->showDayView();
3199 mNavigator->slotDaySelect( conflict.date() ); 3199 mNavigator->slotDaySelect( conflict.date() );
3200 int hour = conflict.time().hour(); 3200 int hour = conflict.time().hour();
3201 mViewManager->agendaView()->setStartHour( hour ); 3201 mViewManager->agendaView()->setStartHour( hour );
3202 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) ); 3202 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( conflictingEvent->summary().left( 20 ) ).arg( cE->summary().left( 20 ) ) );
3203 } else 3203 } else
3204 topLevelWidget()->setCaption( i18n("No conflict found") ); 3204 topLevelWidget()->setCaption( i18n("No conflict found") );
3205 return; 3205 return;
3206 3206
3207} 3207}
3208 3208
3209void CalendarView::updateTodoViews() 3209void CalendarView::updateTodoViews()
3210{ 3210{
3211 mTodoList->updateView(); 3211 mTodoList->updateView();
3212 mViewManager->currentView()->updateView(); 3212 mViewManager->currentView()->updateView();
3213 3213
3214} 3214}
3215 3215
3216 3216
3217 3217
3218void CalendarView::clearAllViews() 3218void CalendarView::clearAllViews()
3219{ 3219{
3220 mTodoList->clearList(); 3220 mTodoList->clearList();
3221 mViewManager->clearAllViews(); 3221 mViewManager->clearAllViews();
3222 SearchDialog * sd = mDialogManager->getSearchDialog(); 3222 SearchDialog * sd = mDialogManager->getSearchDialog();
3223 if ( sd ) { 3223 if ( sd ) {
3224 KOListView* kol = sd->listview(); 3224 KOListView* kol = sd->listview();
3225 if ( kol ) 3225 if ( kol )
3226 kol->clearList(); 3226 kol->clearList();
3227 } 3227 }
3228} 3228}
3229void CalendarView::updateView() 3229void CalendarView::updateView()
3230{ 3230{
3231 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) { 3231 if ( KOPrefs::instance()->mGlobalUpdateDisabled ) {
3232 if ( flag_clearallviewsupdateView ) { 3232 if ( flag_clearallviewsupdateView ) {
3233 clearAllViews(); 3233 clearAllViews();
3234 flag_clearallviewsupdateView = false; 3234 flag_clearallviewsupdateView = false;
3235 } 3235 }
3236 return; 3236 return;
3237 } 3237 }
3238 flag_clearallviewsupdateView = true; 3238 flag_clearallviewsupdateView = true;
3239 DateList tmpList = mNavigator->selectedDates(); 3239 DateList tmpList = mNavigator->selectedDates();
3240 3240
3241 if ( KOPrefs::instance()->mHideNonStartedTodos ) 3241 if ( KOPrefs::instance()->mHideNonStartedTodos )
3242 mTodoList->updateView(); 3242 mTodoList->updateView();
3243 // We assume that the navigator only selects consecutive days. 3243 // We assume that the navigator only selects consecutive days.
3244 updateView( tmpList.first(), tmpList.last() ); 3244 updateView( tmpList.first(), tmpList.last() );
3245} 3245}
3246 3246
3247void CalendarView::updateUnmanagedViews() 3247void CalendarView::updateUnmanagedViews()
3248{ 3248{
3249 mDateNavigator->updateDayMatrix(); 3249 mDateNavigator->updateDayMatrix();
3250} 3250}
3251 3251
3252int CalendarView::msgItemDelete(const QString name) 3252int CalendarView::msgItemDelete(const QString name)
3253{ 3253{
3254 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 3254 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
3255 i18n("This item will be\npermanently deleted."), 3255 i18n("This item will be\npermanently deleted."),
3256 i18n("KO/Pi Confirmation"),i18n("Delete")); 3256 i18n("KO/Pi Confirmation"),i18n("Delete"));
3257} 3257}
3258 3258
3259 3259
3260void CalendarView::edit_cut() 3260void CalendarView::edit_cut()
3261{ 3261{
3262 Event *anEvent=0; 3262 Event *anEvent=0;
3263 3263
3264 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3264 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3265 3265
3266 if (mViewManager->currentView()->isEventView()) { 3266 if (mViewManager->currentView()->isEventView()) {
3267 if ( incidence && incidence->typeID() == eventID ) { 3267 if ( incidence && incidence->typeID() == eventID ) {
3268 anEvent = static_cast<Event *>(incidence); 3268 anEvent = static_cast<Event *>(incidence);
3269 } 3269 }
3270 } 3270 }
3271 3271
3272 if (!anEvent) { 3272 if (!anEvent) {
3273 KNotifyClient::beep(); 3273 KNotifyClient::beep();
3274 return; 3274 return;
3275 } 3275 }
3276 DndFactory factory( mCalendar ); 3276 DndFactory factory( mCalendar );
3277 factory.cutIncidence(anEvent); 3277 factory.cutIncidence(anEvent);
3278 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3278 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3279} 3279}
3280 3280
3281void CalendarView::edit_copy() 3281void CalendarView::edit_copy()
3282{ 3282{
3283 Event *anEvent=0; 3283 Event *anEvent=0;
3284 3284
3285 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3285 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3286 3286
3287 if (mViewManager->currentView()->isEventView()) { 3287 if (mViewManager->currentView()->isEventView()) {
3288 if ( incidence && incidence->typeID() == eventID ) { 3288 if ( incidence && incidence->typeID() == eventID ) {
3289 anEvent = static_cast<Event *>(incidence); 3289 anEvent = static_cast<Event *>(incidence);
3290 } 3290 }
3291 } 3291 }
3292 3292
3293 if (!anEvent) { 3293 if (!anEvent) {
3294 KNotifyClient::beep(); 3294 KNotifyClient::beep();
3295 return; 3295 return;
3296 } 3296 }
3297 DndFactory factory( mCalendar ); 3297 DndFactory factory( mCalendar );
3298 factory.copyIncidence(anEvent); 3298 factory.copyIncidence(anEvent);
3299} 3299}
3300 3300
3301void CalendarView::edit_paste() 3301void CalendarView::edit_paste()
3302{ 3302{
3303 QDate date = mNavigator->selectedDates().first(); 3303 QDate date = mNavigator->selectedDates().first();
3304 3304
3305 DndFactory factory( mCalendar ); 3305 DndFactory factory( mCalendar );
3306 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 3306 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
3307 3307
3308 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 3308 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
3309} 3309}
3310void CalendarView::edit_global_options() 3310void CalendarView::edit_global_options()
3311{ 3311{
3312 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 3312 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
3313 emit save(); 3313 emit save();
3314 emit saveStopTimer(); 3314 emit saveStopTimer();
3315 mDialogManager->showGlobalOptionsDialog(); 3315 mDialogManager->showGlobalOptionsDialog();
3316 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 3316 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
3317 emit saveStopTimer(); 3317 emit saveStopTimer();
3318 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 3318 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
3319 i18n("Timezone settings"),i18n("Reload"))) { 3319 i18n("Timezone settings"),i18n("Reload"))) {
3320 qDebug("KO: TZ reload cancelled "); 3320 qDebug("KO: TZ reload cancelled ");
3321 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3321 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3322 return; 3322 return;
3323 } 3323 }
3324 qDebug("KO: Timezone change "); 3324 qDebug("KO: Timezone change ");
3325 loadCalendars(); 3325 loadCalendars();
3326 setModified(true); 3326 setModified(true);
3327 } 3327 }
3328 else 3328 else
3329 qDebug("KO: No tz change "); 3329 qDebug("KO: No tz change ");
3330} 3330}
3331void CalendarView::edit_options() 3331void CalendarView::edit_options()
3332{ 3332{
3333 mDialogManager->showOptionsDialog(); 3333 mDialogManager->showOptionsDialog();
3334} 3334}
3335 3335
3336 3336
3337void CalendarView::slotSelectPickerDate( QDate d) 3337void CalendarView::slotSelectPickerDate( QDate d)
3338{ 3338{
3339 mDateFrame->hide(); 3339 mDateFrame->hide();
3340 if ( mDatePickerMode == 1 ) { 3340 if ( mDatePickerMode == 1 ) {
3341 mNavigator->slotDaySelect( d ); 3341 mNavigator->slotDaySelect( d );
3342 } else if ( mDatePickerMode == 2 ) { 3342 } else if ( mDatePickerMode == 2 ) {
3343 if ( mMoveIncidence->typeID() == todoID ) { 3343 if ( mMoveIncidence->typeID() == todoID ) {
3344 Todo * to = (Todo *) mMoveIncidence; 3344 Todo * to = (Todo *) mMoveIncidence;
3345 QTime tim; 3345 QTime tim;
3346 int len = 0; 3346 int len = 0;
3347 if ( to->hasStartDate() && to->hasDueDate() ) 3347 if ( to->hasStartDate() && to->hasDueDate() )
3348 len = to->dtStart().secsTo( to->dtDue()); 3348 len = to->dtStart().secsTo( to->dtDue());
3349 if ( to->hasDueDate() ) 3349 if ( to->hasDueDate() )
3350 tim = to->dtDue().time(); 3350 tim = to->dtDue().time();
3351 else { 3351 else {
3352 tim = QTime ( 0,0,0 ); 3352 tim = QTime ( 0,0,0 );
3353 to->setFloats( true ); 3353 to->setFloats( true );
3354 to->setHasDueDate( true ); 3354 to->setHasDueDate( true );
3355 } 3355 }
3356 QDateTime dt ( d,tim ); 3356 QDateTime dt ( d,tim );
3357 to->setDtDue( dt ); 3357 to->setDtDue( dt );
3358 3358
3359 if ( to->hasStartDate() ) { 3359 if ( to->hasStartDate() ) {
3360 if ( len>0 ) 3360 if ( len>0 )
3361 to->setDtStart(to->dtDue().addSecs( -len )); 3361 to->setDtStart(to->dtDue().addSecs( -len ));
3362 else 3362 else
3363 if (to->dtStart() > to->dtDue() ) 3363 if (to->dtStart() > to->dtDue() )
3364 to->setDtStart(to->dtDue().addDays( -3 )); 3364 to->setDtStart(to->dtDue().addDays( -3 ));
3365 } 3365 }
3366 3366
3367 todoChanged( to ); 3367 todoChanged( to );
3368 } else if ( mMoveIncidence->typeID() == eventID ) { 3368 } else if ( mMoveIncidence->typeID() == eventID ) {
3369 if ( mMoveIncidence->doesRecur() ) { 3369 if ( mMoveIncidence->doesRecur() ) {
3370#if 0 3370#if 0
3371 // PENDING implement this 3371 // PENDING implement this
3372 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 3372 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
3373 mCalendar()->addIncidence( newInc ); 3373 mCalendar()->addIncidence( newInc );
3374 if ( mMoveIncidence->typeID() == todoID ) 3374 if ( mMoveIncidence->typeID() == todoID )
3375 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 3375 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
3376 else 3376 else
3377 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 3377 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
3378 mMoveIncidence = newInc; 3378 mMoveIncidence = newInc;
3379 3379
3380#endif 3380#endif
3381 } 3381 }
3382 QTime tim = mMoveIncidence->dtStart().time(); 3382 QTime tim = mMoveIncidence->dtStart().time();
3383 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 3383 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
3384 QDateTime dt ( d,tim ); 3384 QDateTime dt ( d,tim );
3385 mMoveIncidence->setDtStart( dt ); 3385 mMoveIncidence->setDtStart( dt );
3386 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 3386 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
3387 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 3387 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
3388 } else if ( mMoveIncidence->typeID() == journalID ) { 3388 } else if ( mMoveIncidence->typeID() == journalID ) {
3389 QTime tim = mMoveIncidence->dtStart().time(); 3389 QTime tim = mMoveIncidence->dtStart().time();
3390 QDateTime dt ( d,tim ); 3390 QDateTime dt ( d,tim );
3391 mMoveIncidence->setDtStart( dt ); 3391 mMoveIncidence->setDtStart( dt );
3392 updateView(); 3392 updateView();
3393 } 3393 }
3394 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 3394 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
3395 } 3395 }
3396} 3396}
3397 3397
3398void CalendarView::removeCategories() 3398void CalendarView::removeCategories()
3399{ 3399{
3400 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3400 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3401 QStringList catList = KOPrefs::instance()->mCustomCategories; 3401 QStringList catList = KOPrefs::instance()->mCustomCategories;
3402 QStringList catIncList; 3402 QStringList catIncList;
3403 QStringList newCatList; 3403 QStringList newCatList;
3404 Incidence* inc = incList.first(); 3404 Incidence* inc = incList.first();
3405 uint i; 3405 uint i;
3406 while ( inc ) { 3406 while ( inc ) {
3407 newCatList.clear(); 3407 newCatList.clear();
3408 catIncList = inc->categories() ; 3408 catIncList = inc->categories() ;
3409 for( i = 0; i< catIncList.count(); ++i ) { 3409 for( i = 0; i< catIncList.count(); ++i ) {
3410 if ( catList.contains (catIncList[i])) 3410 if ( catList.contains (catIncList[i]))
3411 newCatList.append( catIncList[i] ); 3411 newCatList.append( catIncList[i] );
3412 } 3412 }
3413 newCatList.sort(); 3413 newCatList.sort();
3414 inc->setCategories( newCatList.join(",") ); 3414 inc->setCategories( newCatList.join(",") );
3415 inc = incList.next(); 3415 inc = incList.next();
3416 } 3416 }
3417} 3417}
3418 3418
3419int CalendarView::addCategories() 3419int CalendarView::addCategories()
3420{ 3420{
3421 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 3421 QPtrList<Incidence> incList = mCalendar->rawIncidences();
3422 QStringList catList = KOPrefs::instance()->mCustomCategories; 3422 QStringList catList = KOPrefs::instance()->mCustomCategories;
3423 QStringList catIncList; 3423 QStringList catIncList;
3424 Incidence* inc = incList.first(); 3424 Incidence* inc = incList.first();
3425 uint i; 3425 uint i;
3426 int count = 0; 3426 int count = 0;
3427 while ( inc ) { 3427 while ( inc ) {
3428 catIncList = inc->categories() ; 3428 catIncList = inc->categories() ;
3429 for( i = 0; i< catIncList.count(); ++i ) { 3429 for( i = 0; i< catIncList.count(); ++i ) {
3430 if ( !catList.contains (catIncList[i])) { 3430 if ( !catList.contains (catIncList[i])) {
3431 catList.append( catIncList[i] ); 3431 catList.append( catIncList[i] );
3432 //qDebug("add cat %s ", catIncList[i].latin1()); 3432 //qDebug("add cat %s ", catIncList[i].latin1());
3433 ++count; 3433 ++count;
3434 } 3434 }
3435 } 3435 }
3436 inc = incList.next(); 3436 inc = incList.next();
3437 } 3437 }
3438 catList.sort(); 3438 catList.sort();
3439 KOPrefs::instance()->mCustomCategories = catList; 3439 KOPrefs::instance()->mCustomCategories = catList;
3440 return count; 3440 return count;
3441} 3441}
3442 3442
3443void CalendarView::editCategories() 3443void CalendarView::editCategories()
3444{ 3444{
3445 qDebug("CalendarView::editCategories() "); 3445 qDebug("CalendarView::editCategories() ");
3446 KPIM::CategoryEditDialog ced (KOPrefs::instance(),this ); 3446 KPIM::CategoryEditDialog ced (KOPrefs::instance(),this );
3447 ced.exec(); 3447 ced.exec();
3448} 3448}
3449void CalendarView::manageCategories() 3449void CalendarView::manageCategories()
3450{ 3450{
3451 KOCatPrefs* cp = new KOCatPrefs(); 3451 KOCatPrefs* cp = new KOCatPrefs();
3452 cp->show(); 3452 cp->show();
3453 int w =cp->sizeHint().width() ; 3453 int w =cp->sizeHint().width() ;
3454 int h = cp->sizeHint().height() ; 3454 int h = cp->sizeHint().height() ;
3455 int dw = QApplication::desktop()->width(); 3455 int dw = QApplication::desktop()->width();
3456 int dh = QApplication::desktop()->height(); 3456 int dh = QApplication::desktop()->height();
3457 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 3457 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
3458 if ( !cp->exec() ) { 3458 if ( !cp->exec() ) {
3459 delete cp; 3459 delete cp;
3460 return; 3460 return;
3461 } 3461 }
3462 int count = 0; 3462 int count = 0;
3463 if ( cp->addCat() ) { 3463 if ( cp->addCat() ) {
3464 count = addCategories(); 3464 count = addCategories();
3465 if ( count ) { 3465 if ( count ) {
3466 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 3466 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
3467 writeSettings(); 3467 writeSettings();
3468 } else 3468 } else
3469 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 3469 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
3470 } else { 3470 } else {
3471 removeCategories(); 3471 removeCategories();
3472 updateView(); 3472 updateView();
3473 } 3473 }
3474 delete cp; 3474 delete cp;
3475} 3475}
3476 3476
3477void CalendarView::beamIncidence(Incidence * Inc) 3477void CalendarView::beamIncidence(Incidence * Inc)
3478{ 3478{
3479 QPtrList<Incidence> delSel ; 3479 QPtrList<Incidence> delSel ;
3480 delSel.append(Inc); 3480 delSel.append(Inc);
3481 beamIncidenceList( delSel ); 3481 beamIncidenceList( delSel );
3482} 3482}
3483void CalendarView::beamCalendar() 3483void CalendarView::beamCalendar()
3484{ 3484{
3485 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 3485 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
3486 //qDebug("beamCalendar() "); 3486 //qDebug("beamCalendar() ");
3487 beamIncidenceList( delSel ); 3487 beamIncidenceList( delSel );
3488} 3488}
3489void CalendarView::beamFilteredCalendar() 3489void CalendarView::beamFilteredCalendar()
3490{ 3490{
3491 QPtrList<Incidence> delSel = mCalendar->incidences(); 3491 QPtrList<Incidence> delSel = mCalendar->incidences();
3492 //qDebug("beamFilteredCalendar() "); 3492 //qDebug("beamFilteredCalendar() ");
3493 beamIncidenceList( delSel ); 3493 beamIncidenceList( delSel );
3494} 3494}
3495void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 3495void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
3496{ 3496{
3497 3497
3498 KOBeamPrefs beamDialog; 3498 KOBeamPrefs beamDialog;
3499 if ( beamDialog.exec () == QDialog::Rejected ) 3499 if ( beamDialog.exec () == QDialog::Rejected )
3500 return; 3500 return;
3501#ifdef DESKTOP_VERSION 3501#ifdef DESKTOP_VERSION
3502 QString fn = locateLocal( "tmp", "kopibeamfile" ); 3502 QString fn = locateLocal( "tmp", "kopibeamfile" );
3503#else 3503#else
3504 QString fn = "/tmp/kopibeamfile"; 3504 QString fn = "/tmp/kopibeamfile";
3505#endif 3505#endif
3506 QString mes; 3506 QString mes;
3507 bool createbup = true; 3507 bool createbup = true;
3508 if ( createbup ) { 3508 if ( createbup ) {
3509 QString description = "\n"; 3509 QString description = "\n";
3510 CalendarLocal* cal = new CalendarLocal(); 3510 CalendarLocal* cal = new CalendarLocal();
3511 if ( beamDialog.beamLocal() ) 3511 if ( beamDialog.beamLocal() )
3512 cal->setLocalTime(); 3512 cal->setLocalTime();
3513 else 3513 else
3514 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 3514 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
3515 Incidence *incidence = delSel.first(); 3515 Incidence *incidence = delSel.first();
3516 bool addText = false; 3516 bool addText = false;
3517 if ( delSel.count() < 10 ) 3517 if ( delSel.count() < 10 )
3518 addText = true; 3518 addText = true;
3519 else { 3519 else {
3520 description.sprintf(i18n(" %d items?"),delSel.count() ); 3520 description.sprintf(i18n(" %d items?"),delSel.count() );
3521 } 3521 }
3522 while ( incidence ) { 3522 while ( incidence ) {
3523 Incidence *in = incidence->clone(); 3523 Incidence *in = incidence->clone();
3524 if ( ! in->summary().isEmpty() ) { 3524 if ( ! in->summary().isEmpty() ) {
3525 in->setDescription(""); 3525 in->setDescription("");
3526 } else { 3526 } else {
3527 in->setSummary( in->description().left(20)); 3527 in->setSummary( in->description().left(20));
3528 in->setDescription(""); 3528 in->setDescription("");
3529 } 3529 }
3530 if ( addText ) 3530 if ( addText )
3531 description += in->summary() + "\n"; 3531 description += in->summary() + "\n";
3532 cal->addIncidence( in ); 3532 cal->addIncidence( in );
3533 incidence = delSel.next(); 3533 incidence = delSel.next();
3534 } 3534 }
3535 if ( beamDialog.beamVcal() ) { 3535 if ( beamDialog.beamVcal() ) {
3536 fn += ".vcs"; 3536 fn += ".vcs";
3537 FileStorage storage( cal, fn, new VCalFormat ); 3537 FileStorage storage( cal, fn, new VCalFormat );
3538 storage.save(); 3538 storage.save();
3539 } else { 3539 } else {
3540 fn += ".ics"; 3540 fn += ".ics";
3541 FileStorage storage( cal, fn, new ICalFormat( ) ); 3541 FileStorage storage( cal, fn, new ICalFormat( ) );
3542 storage.save(); 3542 storage.save();
3543 } 3543 }
3544 delete cal; 3544 delete cal;
3545 mes = i18n("KO/Pi: Ready for beaming"); 3545 mes = i18n("KO/Pi: Ready for beaming");
3546 topLevelWidget()->setCaption(mes); 3546 topLevelWidget()->setCaption(mes);
3547 KApplication::convert2latin1( fn ); 3547 KApplication::convert2latin1( fn );
3548#ifndef DESKTOP_VERSION 3548#ifndef DESKTOP_VERSION
3549 Ir *ir = new Ir( this ); 3549 Ir *ir = new Ir( this );
3550 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 3550 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
3551 ir->send( fn, description, "text/x-vCalendar" ); 3551 ir->send( fn, description, "text/x-vCalendar" );
3552#endif 3552#endif
3553 } 3553 }
3554} 3554}
3555 3555
3556#ifndef DESKTOP_VERSION 3556#ifndef DESKTOP_VERSION
3557void CalendarView::beamDone( Ir *ir ) 3557void CalendarView::beamDone( Ir *ir )
3558{ 3558{
3559 delete ir; 3559 delete ir;
3560 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 3560 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
3561 topLevelWidget()->raise(); 3561 topLevelWidget()->raise();
3562} 3562}
3563#else 3563#else
3564void CalendarView::beamDone( Ir *){;} 3564void CalendarView::beamDone( Ir *){;}
3565#endif 3565#endif
3566void CalendarView::moveIncidence(Incidence * inc ) 3566void CalendarView::moveIncidence(Incidence * inc )
3567{ 3567{
3568 if ( !inc ) return; 3568 if ( !inc ) return;
3569 showDatePickerPopup(); 3569 showDatePickerPopup();
3570 mDatePickerMode = 2; 3570 mDatePickerMode = 2;
3571 mMoveIncidence = inc ; 3571 mMoveIncidence = inc ;
3572 QDate da; 3572 QDate da;
3573 if ( mMoveIncidence->typeID() == todoID ) { 3573 if ( mMoveIncidence->typeID() == todoID ) {
3574 Todo * to = (Todo *) mMoveIncidence; 3574 Todo * to = (Todo *) mMoveIncidence;
3575 if ( to->hasDueDate() ) 3575 if ( to->hasDueDate() )
3576 da = to->dtDue().date(); 3576 da = to->dtDue().date();
3577 else 3577 else
3578 da = QDate::currentDate(); 3578 da = QDate::currentDate();
3579 } else { 3579 } else {
3580 da = mMoveIncidence->dtStart().date(); 3580 da = mMoveIncidence->dtStart().date();
3581 } 3581 }
3582 //PENDING set date for recurring incidence to date of recurrence 3582 //PENDING set date for recurring incidence to date of recurrence
3583 //mMoveIncidenceOldDate; 3583 //mMoveIncidenceOldDate;
3584 mDatePicker->setDate( da ); 3584 mDatePicker->setDate( da );
3585} 3585}
3586void CalendarView::showDatePickerPopup() 3586void CalendarView::showDatePickerPopup()
3587{ 3587{
3588 if ( mDateFrame->isVisible() ) 3588 if ( mDateFrame->isVisible() )
3589 mDateFrame->hide(); 3589 mDateFrame->hide();
3590 else { 3590 else {
3591 int offX = 0, offY = 0; 3591 int offX = 0, offY = 0;
3592#ifdef DESKTOP_VERSION 3592#ifdef DESKTOP_VERSION
3593 int w =mDatePicker->sizeHint().width() ; 3593 int w =mDatePicker->sizeHint().width() ;
3594 int h = mDatePicker->sizeHint().height() ; 3594 int h = mDatePicker->sizeHint().height() ;
3595 int dw = topLevelWidget()->width(); 3595 int dw = topLevelWidget()->width();
3596 int dh = topLevelWidget()->height(); 3596 int dh = topLevelWidget()->height();
3597 offX = topLevelWidget()->x(); 3597 offX = topLevelWidget()->x();
3598 offY = topLevelWidget()->y(); 3598 offY = topLevelWidget()->y();
3599#else 3599#else
3600 int w =mDatePicker->sizeHint().width() ; 3600 int w =mDatePicker->sizeHint().width() ;
3601 int h = mDatePicker->sizeHint().height() ; 3601 int h = mDatePicker->sizeHint().height() ;
3602 int dw = QApplication::desktop()->width(); 3602 int dw = QApplication::desktop()->width();
3603 int dh = QApplication::desktop()->height(); 3603 int dh = QApplication::desktop()->height();
3604#endif 3604#endif
3605 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 3605 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
3606 mDateFrame->show(); 3606 mDateFrame->show();
3607 } 3607 }
3608} 3608}
3609void CalendarView::showDatePicker( ) 3609void CalendarView::showDatePicker( )
3610{ 3610{
3611 showDatePickerPopup(); 3611 showDatePickerPopup();
3612 mDatePickerMode = 1; 3612 mDatePickerMode = 1;
3613 mDatePicker->setDate( mNavigator->selectedDates().first() ); 3613 mDatePicker->setDate( mNavigator->selectedDates().first() );
3614} 3614}
3615 3615
3616void CalendarView::showEventEditor() 3616void CalendarView::showEventEditor()
3617{ 3617{
3618#ifdef DESKTOP_VERSION 3618#ifdef DESKTOP_VERSION
3619 int x,y,w,h; 3619 int x,y,w,h;
3620 x = mEventEditor->geometry().x(); 3620 x = mEventEditor->geometry().x();
3621 y = mEventEditor->geometry().y(); 3621 y = mEventEditor->geometry().y();
3622 w = mEventEditor->width(); 3622 w = mEventEditor->width();
3623 h = mEventEditor->height(); 3623 h = mEventEditor->height();
3624 mEventEditor->show(); 3624 mEventEditor->show();
3625 mEventEditor->setGeometry(x,y,w,h); 3625 mEventEditor->setGeometry(x,y,w,h);
3626#else 3626#else
3627 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 3627 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
3628 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3628 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3629 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 3629 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
3630 qApp->processEvents(); 3630 qApp->processEvents();
3631 delete mEventEditor; 3631 delete mEventEditor;
3632 mEventEditor = mDialogManager->getEventEditor(); 3632 mEventEditor = mDialogManager->getEventEditor();
3633 topLevelWidget()->setCaption( i18n("") ); 3633 topLevelWidget()->setCaption( i18n("") );
3634 } 3634 }
3635 mEventEditor->showMaximized(); 3635 mEventEditor->showMaximized();
3636#endif 3636#endif
3637} 3637}
3638void CalendarView::showTodoEditor() 3638void CalendarView::showTodoEditor()
3639{ 3639{
3640#ifdef DESKTOP_VERSION 3640#ifdef DESKTOP_VERSION
3641 int x,y,w,h; 3641 int x,y,w,h;
3642 x = mTodoEditor->geometry().x(); 3642 x = mTodoEditor->geometry().x();
3643 y = mTodoEditor->geometry().y(); 3643 y = mTodoEditor->geometry().y();
3644 w = mTodoEditor->width(); 3644 w = mTodoEditor->width();
3645 h = mTodoEditor->height(); 3645 h = mTodoEditor->height();
3646 mTodoEditor->show(); 3646 mTodoEditor->show();
3647 mTodoEditor->setGeometry(x,y,w,h); 3647 mTodoEditor->setGeometry(x,y,w,h);
3648#else 3648#else
3649 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 3649 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
3650 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 3650 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
3651 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 3651 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
3652 qApp->processEvents(); 3652 qApp->processEvents();
3653 delete mTodoEditor; 3653 delete mTodoEditor;
3654 mTodoEditor = mDialogManager->getTodoEditor(); 3654 mTodoEditor = mDialogManager->getTodoEditor();
3655 topLevelWidget()->setCaption( i18n("") ); 3655 topLevelWidget()->setCaption( i18n("") );
3656 } 3656 }
3657 mTodoEditor->showMaximized(); 3657 mTodoEditor->showMaximized();
3658#endif 3658#endif
3659} 3659}
3660 3660
3661void CalendarView::cloneIncidence() 3661void CalendarView::cloneIncidence()
3662{ 3662{
3663 Incidence *incidence = currentSelection(); 3663 Incidence *incidence = currentSelection();
3664 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3664 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3665 if ( incidence ) { 3665 if ( incidence ) {
3666 cloneIncidence(incidence); 3666 cloneIncidence(incidence);
3667 } 3667 }
3668} 3668}
3669void CalendarView::moveIncidence() 3669void CalendarView::moveIncidence()
3670{ 3670{
3671 Incidence *incidence = currentSelection(); 3671 Incidence *incidence = currentSelection();
3672 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3672 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3673 if ( incidence ) { 3673 if ( incidence ) {
3674 moveIncidence(incidence); 3674 moveIncidence(incidence);
3675 } 3675 }
3676} 3676}
3677void CalendarView::beamIncidence() 3677void CalendarView::beamIncidence()
3678{ 3678{
3679 Incidence *incidence = currentSelection(); 3679 Incidence *incidence = currentSelection();
3680 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3680 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3681 if ( incidence ) { 3681 if ( incidence ) {
3682 beamIncidence(incidence); 3682 beamIncidence(incidence);
3683 } 3683 }
3684} 3684}
3685void CalendarView::toggleCancelIncidence() 3685void CalendarView::toggleCancelIncidence()
3686{ 3686{
3687 Incidence *incidence = currentSelection(); 3687 Incidence *incidence = currentSelection();
3688 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3688 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3689 if ( incidence ) { 3689 if ( incidence ) {
3690 cancelIncidence(incidence); 3690 cancelIncidence(incidence);
3691 } 3691 }
3692} 3692}
3693 3693
3694 3694
3695void CalendarView::cancelIncidence(Incidence * inc ) 3695void CalendarView::cancelIncidence(Incidence * inc )
3696{ 3696{
3697 inc->setCancelled( ! inc->cancelled() ); 3697 inc->setCancelled( ! inc->cancelled() );
3698 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 3698 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
3699 updateView(); 3699 updateView();
3700} 3700}
3701void CalendarView::cloneIncidence(Incidence * orgInc ) 3701void CalendarView::cloneIncidence(Incidence * orgInc )
3702{ 3702{
3703 Incidence * newInc = orgInc->clone(); 3703 Incidence * newInc = orgInc->clone();
3704 newInc->recreate(); 3704 newInc->recreate();
3705 3705
3706 if ( newInc->typeID() == todoID ) { 3706 if ( newInc->typeID() == todoID ) {
3707 Todo* t = (Todo*) newInc; 3707 Todo* t = (Todo*) newInc;
3708 bool cloneSub = false; 3708 bool cloneSub = false;
3709 if ( orgInc->relations().count() ) { 3709 if ( orgInc->relations().count() ) {
3710 int result = KMessageBox::warningYesNoCancel(this, 3710 int result = KMessageBox::warningYesNoCancel(this,
3711 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ), 3711 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( KGlobal::formatMessage ( newInc->summary(),0 ) ),
3712 i18n("Todo has subtodos"), 3712 i18n("Todo has subtodos"),
3713 i18n("Yes"), 3713 i18n("Yes"),
3714 i18n("No")); 3714 i18n("No"));
3715 3715
3716 if ( result == KMessageBox::Cancel ) { 3716 if ( result == KMessageBox::Cancel ) {
3717 delete t; 3717 delete t;
3718 return; 3718 return;
3719 } 3719 }
3720 if (result == KMessageBox::Yes) cloneSub = true; 3720 if (result == KMessageBox::Yes) cloneSub = true;
3721 } 3721 }
3722 showTodoEditor(); 3722 showTodoEditor();
3723 mTodoEditor->editTodo( t ); 3723 mTodoEditor->editTodo( t );
3724 if ( mTodoEditor->exec() ) { 3724 if ( mTodoEditor->exec() ) {
3725 if ( cloneSub ) { 3725 if ( cloneSub ) {
3726 orgInc->cloneRelations( t ); 3726 orgInc->cloneRelations( t );
3727 mCalendar->addIncidenceBranch( t ); 3727 mCalendar->addIncidenceBranch( t );
3728 updateView(); 3728 updateView();
3729 3729
3730 } else { 3730 } else {
3731 mCalendar->addTodo( t ); 3731 mCalendar->addTodo( t );
3732 updateView(); 3732 updateView();
3733 } 3733 }
3734 } else { 3734 } else {
3735 delete t; 3735 delete t;
3736 } 3736 }
3737 } 3737 }
3738 else if ( newInc->typeID() == eventID ) { 3738 else if ( newInc->typeID() == eventID ) {
3739 Event* e = (Event*) newInc; 3739 Event* e = (Event*) newInc;
3740 showEventEditor(); 3740 showEventEditor();
3741 mEventEditor->editEvent( e ); 3741 mEventEditor->editEvent( e );
3742 if ( mEventEditor->exec() ) { 3742 if ( mEventEditor->exec() ) {
3743 mCalendar->addEvent( e ); 3743 mCalendar->addEvent( e );
3744 updateView(); 3744 updateView();
3745 } else { 3745 } else {
3746 delete e; 3746 delete e;
3747 } 3747 }
3748 } else if ( newInc->typeID() == journalID ) { 3748 } else if ( newInc->typeID() == journalID ) {
3749 mCalendar->addJournal( (Journal*) newInc ); 3749 mCalendar->addJournal( (Journal*) newInc );
3750 editJournal( (Journal*) newInc ); 3750 editJournal( (Journal*) newInc );
3751 } 3751 }
3752 setActiveWindow(); 3752 setActiveWindow();
3753} 3753}
3754 3754
3755void CalendarView::newEvent() 3755void CalendarView::newEvent()
3756{ 3756{
3757 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 3757 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
3758 KOAgendaView *aView = mViewManager->agendaView(); 3758 KOAgendaView *aView = mViewManager->agendaView();
3759 if (aView) { 3759 if (aView) {
3760 if (aView->selectionStart().isValid()) { 3760 if (aView->selectionStart().isValid()) {
3761 if (aView->selectedIsAllDay()) { 3761 if (aView->selectedIsAllDay()) {
3762 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 3762 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
3763 } else { 3763 } else {
3764 newEvent(aView->selectionStart(),aView->selectionEnd()); 3764 newEvent(aView->selectionStart(),aView->selectionEnd());
3765 } 3765 }
3766 return; 3766 return;
3767 } 3767 }
3768 } 3768 }
3769 3769
3770 QDate date = mNavigator->selectedDates().first(); 3770 QDate date = mNavigator->selectedDates().first();
3771#if 0 3771#if 0
3772 QDateTime current = QDateTime::currentDateTime(); 3772 QDateTime current = QDateTime::currentDateTime();
3773 if ( date <= current.date() ) { 3773 if ( date <= current.date() ) {
3774 int hour = current.time().hour() +1; 3774 int hour = current.time().hour() +1;
3775 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 3775 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
3776 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3776 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3777 } else 3777 } else
3778#endif 3778#endif
3779 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 3779 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
3780 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 3780 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
3781 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 3781 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
3782} 3782}
3783 3783
3784void CalendarView::newEvent(QDateTime fh) 3784void CalendarView::newEvent(QDateTime fh)
3785{ 3785{
3786 newEvent(fh, 3786 newEvent(fh,
3787 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 3787 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
3788} 3788}
3789 3789
3790void CalendarView::newEvent(QDate dt) 3790void CalendarView::newEvent(QDate dt)
3791{ 3791{
3792 newEvent(QDateTime(dt, QTime(0,0,0)), 3792 newEvent(QDateTime(dt, QTime(0,0,0)),
3793 QDateTime(dt, QTime(0,0,0)), true); 3793 QDateTime(dt, QTime(0,0,0)), true);
3794} 3794}
3795void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 3795void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
3796{ 3796{
3797 newEvent(fromHint, toHint, false); 3797 newEvent(fromHint, toHint, false);
3798} 3798}
3799void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 3799void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
3800{ 3800{
3801 3801
3802 showEventEditor(); 3802 showEventEditor();
3803 mEventEditor->newEvent(fromHint,toHint,allDay); 3803 mEventEditor->newEvent(fromHint,toHint,allDay);
3804 if ( mFilterView->filtersEnabled() ) { 3804 if ( mFilterView->filtersEnabled() ) {
3805 CalFilter *filter = mFilterView->selectedFilter(); 3805 CalFilter *filter = mFilterView->selectedFilter();
3806 if (filter && filter->showCategories()) { 3806 if (filter && filter->showCategories()) {
3807 mEventEditor->setCategories(filter->categoryList().join(",") ); 3807 mEventEditor->setCategories(filter->categoryList().join(",") );
3808 } 3808 }
3809 if ( filter ) 3809 if ( filter )
3810 mEventEditor->setSecrecy( filter->getSecrecy() ); 3810 mEventEditor->setSecrecy( filter->getSecrecy() );
3811 } 3811 }
3812 mEventEditor->exec(); 3812 mEventEditor->exec();
3813 setActiveWindow(); 3813 setActiveWindow();
3814} 3814}
3815void CalendarView::todoAdded(Todo * t) 3815void CalendarView::todoAdded(Todo * t)
3816{ 3816{
3817 3817
3818 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 3818 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
3819 updateTodoViews(); 3819 updateTodoViews();
3820} 3820}
3821void CalendarView::todoChanged(Todo * t) 3821void CalendarView::todoChanged(Todo * t)
3822{ 3822{
3823 emit todoModified( t, 4 ); 3823 emit todoModified( t, 4 );
3824 // updateTodoViews(); 3824 // updateTodoViews();
3825} 3825}
3826void CalendarView::todoToBeDeleted(Todo *) 3826void CalendarView::todoToBeDeleted(Todo *)
3827{ 3827{
3828 //qDebug("todoToBeDeleted(Todo *) "); 3828 //qDebug("todoToBeDeleted(Todo *) ");
3829 updateTodoViews(); 3829 updateTodoViews();
3830} 3830}
3831void CalendarView::todoDeleted() 3831void CalendarView::todoDeleted()
3832{ 3832{
3833 //qDebug(" todoDeleted()"); 3833 //qDebug(" todoDeleted()");
3834 updateTodoViews(); 3834 updateTodoViews();
3835} 3835}
3836 3836
3837 3837
3838void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 3838void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
3839{ 3839{
3840 showTodoEditor(); 3840 showTodoEditor();
3841 mTodoEditor->newTodo(dt,0,allday); 3841 mTodoEditor->newTodo(dt,0,allday);
3842 if ( mFilterView->filtersEnabled() ) { 3842 if ( mFilterView->filtersEnabled() ) {
3843 CalFilter *filter = mFilterView->selectedFilter(); 3843 CalFilter *filter = mFilterView->selectedFilter();
3844 if (filter && filter->showCategories()) { 3844 if (filter && filter->showCategories()) {
3845 mTodoEditor->setCategories(filter->categoryList().join(",") ); 3845 mTodoEditor->setCategories(filter->categoryList().join(",") );
3846 } 3846 }
3847 if ( filter ) 3847 if ( filter )
3848 mTodoEditor->setSecrecy( filter->getSecrecy() ); 3848 mTodoEditor->setSecrecy( filter->getSecrecy() );
3849 } 3849 }
3850 mTodoEditor->exec(); 3850 mTodoEditor->exec();
3851 setActiveWindow(); 3851 setActiveWindow();
3852} 3852}
3853 3853
3854void CalendarView::newTodo() 3854void CalendarView::newTodo()
3855{ 3855{
3856 newTodoDateTime( QDateTime(),true ); 3856 newTodoDateTime( QDateTime(),true );
3857} 3857}
3858 3858
3859void CalendarView::newSubTodo() 3859void CalendarView::newSubTodo()
3860{ 3860{
3861 Todo *todo = selectedTodo(); 3861 Todo *todo = selectedTodo();
3862 if ( todo ) newSubTodo( todo ); 3862 if ( todo ) newSubTodo( todo );
3863} 3863}
3864 3864
3865void CalendarView::newSubTodo(Todo *parentEvent) 3865void CalendarView::newSubTodo(Todo *parentEvent)
3866{ 3866{
3867 3867
3868 showTodoEditor(); 3868 showTodoEditor();
3869 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 3869 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
3870 mTodoEditor->exec(); 3870 mTodoEditor->exec();
3871 setActiveWindow(); 3871 setActiveWindow();
3872} 3872}
3873 3873
3874void CalendarView::newFloatingEvent() 3874void CalendarView::newFloatingEvent()
3875{ 3875{
3876 DateList tmpList = mNavigator->selectedDates(); 3876 DateList tmpList = mNavigator->selectedDates();
3877 QDate date = tmpList.first(); 3877 QDate date = tmpList.first();
3878 3878
3879 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 3879 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
3880 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 3880 QDateTime( date, QTime( 12, 0, 0 ) ), true );
3881} 3881}
3882 3882
3883 3883
3884void CalendarView::editEvent( Event *event ) 3884void CalendarView::editEvent( Event *event )
3885{ 3885{
3886 3886
3887 if ( !event ) return; 3887 if ( !event ) return;
3888 if ( event->isReadOnly() ) { 3888 if ( event->isReadOnly() ) {
3889 showEvent( event ); 3889 showEvent( event );
3890 return; 3890 return;
3891 } 3891 }
3892 showEventEditor(); 3892 showEventEditor();
3893 mEventEditor->editEvent( event , mFlagEditDescription); 3893 mEventEditor->editEvent( event , mFlagEditDescription);
3894 mEventEditor->exec(); 3894 mEventEditor->exec();
3895 setActiveWindow(); 3895 setActiveWindow();
3896 3896
3897} 3897}
3898void CalendarView::editJournal( Journal *jour ) 3898void CalendarView::editJournal( Journal *jour )
3899{ 3899{
3900 if ( !jour ) return; 3900 if ( !jour ) return;
3901 mDialogManager->hideSearchDialog(); 3901 mDialogManager->hideSearchDialog();
3902 mViewManager->showJournalView(); 3902 mViewManager->showJournalView();
3903 mNavigator->slotDaySelect( jour->dtStart().date() ); 3903 mNavigator->slotDaySelect( jour->dtStart().date() );
3904} 3904}
3905void CalendarView::editTodo( Todo *todo ) 3905void CalendarView::editTodo( Todo *todo )
3906{ 3906{
3907 if ( !todo ) return; 3907 if ( !todo ) return;
3908 3908
3909 if ( todo->isReadOnly() ) { 3909 if ( todo->isReadOnly() ) {
3910 showTodo( todo ); 3910 showTodo( todo );
3911 return; 3911 return;
3912 } 3912 }
3913 showTodoEditor(); 3913 showTodoEditor();
3914 mTodoEditor->editTodo( todo ,mFlagEditDescription); 3914 mTodoEditor->editTodo( todo ,mFlagEditDescription);
3915 mTodoEditor->exec(); 3915 mTodoEditor->exec();
3916 setActiveWindow(); 3916 setActiveWindow();
3917 3917
3918} 3918}
3919 3919
3920KOEventViewerDialog* CalendarView::getEventViewerDialog() 3920KOEventViewerDialog* CalendarView::getEventViewerDialog()
3921{ 3921{
3922 if ( !mEventViewerDialog ) { 3922 if ( !mEventViewerDialog ) {
3923 mEventViewerDialog = new KOEventViewerDialog(0); 3923 mEventViewerDialog = new KOEventViewerDialog(0);
3924 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 3924 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
3925 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 3925 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
3926 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 3926 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
3927 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 3927 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
3928 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 3928 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
3929 viewManager(), SLOT( showAgendaView( bool ) ) ); 3929 viewManager(), SLOT( showAgendaView( bool ) ) );
3930 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 3930 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
3931 this, SLOT( slotViewerClosed() ) ); 3931 this, SLOT( slotViewerClosed() ) );
3932 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 3932 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
3933 this, SLOT( todoChanged(Todo *) ) ); 3933 this, SLOT( todoChanged(Todo *) ) );
3934 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 3934 connect( mEventViewerDialog, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
3935 mEventViewerDialog->resize( 640, 480 ); 3935 mEventViewerDialog->resize( 640, 480 );
3936 3936
3937 } 3937 }
3938 return mEventViewerDialog; 3938 return mEventViewerDialog;
3939} 3939}
3940void CalendarView::showEvent(Event *event) 3940void CalendarView::showEvent(Event *event)
3941{ 3941{
3942 getEventViewerDialog()->setEvent(event); 3942 getEventViewerDialog()->setEvent(event);
3943 getEventViewerDialog()->showMe(); 3943 getEventViewerDialog()->showMe();
3944} 3944}
3945 3945
3946void CalendarView::showTodo(Todo *event) 3946void CalendarView::showTodo(Todo *event)
3947{ 3947{
3948 getEventViewerDialog()->setTodo(event); 3948 getEventViewerDialog()->setTodo(event);
3949 getEventViewerDialog()->showMe(); 3949 getEventViewerDialog()->showMe();
3950} 3950}
3951void CalendarView::showJournal( Journal *jour ) 3951void CalendarView::showJournal( Journal *jour )
3952{ 3952{
3953 getEventViewerDialog()->setJournal(jour); 3953 getEventViewerDialog()->setJournal(jour);
3954 getEventViewerDialog()->showMe(); 3954 getEventViewerDialog()->showMe();
3955 3955
3956} 3956}
3957// void CalendarView::todoModified (Todo *event, int changed) 3957// void CalendarView::todoModified (Todo *event, int changed)
3958// { 3958// {
3959// // if (mDialogList.find (event) != mDialogList.end ()) { 3959// // if (mDialogList.find (event) != mDialogList.end ()) {
3960// // kdDebug() << "Todo modified and open" << endl; 3960// // kdDebug() << "Todo modified and open" << endl;
3961// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3961// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3962// // temp->modified (changed); 3962// // temp->modified (changed);
3963 3963
3964// // } 3964// // }
3965 3965
3966// mViewManager->updateView(); 3966// mViewManager->updateView();
3967// } 3967// }
3968 3968
3969void CalendarView::appointment_show() 3969void CalendarView::appointment_show()
3970{ 3970{
3971 Event *anEvent = 0; 3971 Event *anEvent = 0;
3972 3972
3973 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3973 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3974 3974
3975 if (mViewManager->currentView()->isEventView()) { 3975 if (mViewManager->currentView()->isEventView()) {
3976 if ( incidence && incidence->typeID() == eventID ) { 3976 if ( incidence && incidence->typeID() == eventID ) {
3977 anEvent = static_cast<Event *>(incidence); 3977 anEvent = static_cast<Event *>(incidence);
3978 } 3978 }
3979 } 3979 }
3980 3980
3981 if (!anEvent) { 3981 if (!anEvent) {
3982 KNotifyClient::beep(); 3982 KNotifyClient::beep();
3983 return; 3983 return;
3984 } 3984 }
3985 3985
3986 showEvent(anEvent); 3986 showEvent(anEvent);
3987} 3987}
3988 3988
3989void CalendarView::appointment_edit() 3989void CalendarView::appointment_edit()
3990{ 3990{
3991 Event *anEvent = 0; 3991 Event *anEvent = 0;
3992 3992
3993 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3993 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3994 3994
3995 if (mViewManager->currentView()->isEventView()) { 3995 if (mViewManager->currentView()->isEventView()) {
3996 if ( incidence && incidence->typeID() == eventID ) { 3996 if ( incidence && incidence->typeID() == eventID ) {
3997 anEvent = static_cast<Event *>(incidence); 3997 anEvent = static_cast<Event *>(incidence);
3998 } 3998 }
3999 } 3999 }
4000 4000
4001 if (!anEvent) { 4001 if (!anEvent) {
4002 KNotifyClient::beep(); 4002 KNotifyClient::beep();
4003 return; 4003 return;
4004 } 4004 }
4005 4005
4006 editEvent(anEvent); 4006 editEvent(anEvent);
4007} 4007}
4008 4008
4009void CalendarView::appointment_delete() 4009void CalendarView::appointment_delete()
4010{ 4010{
4011 Event *anEvent = 0; 4011 Event *anEvent = 0;
4012 4012
4013 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 4013 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
4014 4014
4015 if (mViewManager->currentView()->isEventView()) { 4015 if (mViewManager->currentView()->isEventView()) {
4016 if ( incidence && incidence->typeID() == eventID ) { 4016 if ( incidence && incidence->typeID() == eventID ) {
4017 anEvent = static_cast<Event *>(incidence); 4017 anEvent = static_cast<Event *>(incidence);
4018 } 4018 }
4019 } 4019 }
4020 4020
4021 if (!anEvent) { 4021 if (!anEvent) {
4022 KNotifyClient::beep(); 4022 KNotifyClient::beep();
4023 return; 4023 return;
4024 } 4024 }
4025 4025
4026 deleteEvent(anEvent); 4026 deleteEvent(anEvent);
4027} 4027}
4028 4028
4029void CalendarView::todo_resub( Todo * parent, Todo * sub ) 4029void CalendarView::todo_resub( Todo * parent, Todo * sub )
4030{ 4030{
4031 if (!sub) return; 4031 if (!sub) return;
4032 if ( sub->relatedTo() == parent ) 4032 if ( sub->relatedTo() == parent )
4033 return; 4033 return;
4034 sub->setRelatedTo(parent); 4034 sub->setRelatedTo(parent);
4035 sub->updated(); 4035 sub->updated();
4036 setModified(true); 4036 setModified(true);
4037 updateView(); 4037 updateView();
4038} 4038}
4039void CalendarView::todo_unsub(Todo *anTodo ) 4039void CalendarView::todo_unsub(Todo *anTodo )
4040{ 4040{
4041 todo_resub( 0, anTodo ); 4041 todo_resub( 0, anTodo );
4042} 4042}
4043 4043
4044void CalendarView::deleteTodo(Todo *todo) 4044void CalendarView::deleteTodo(Todo *todo)
4045{ 4045{
4046 if (!todo) { 4046 if (!todo) {
4047 KNotifyClient::beep(); 4047 KNotifyClient::beep();
4048 return; 4048 return;
4049 } 4049 }
4050 if (KOPrefs::instance()->mConfirm) { 4050 if (KOPrefs::instance()->mConfirm) {
4051 QString text = KGlobal::formatMessage ( todo->summary(),0 ); 4051 QString text = KGlobal::formatMessage ( todo->summary(),0 );
4052 if (!todo->relations().isEmpty()) { 4052 if (!todo->relations().isEmpty()) {
4053 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 4053 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
4054 4054
4055 } 4055 }
4056 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) { 4056 switch (msgItemDelete(i18n("Todo:") +"\n"+text)) {
4057 case KMessageBox::Continue: // OK 4057 case KMessageBox::Continue: // OK
4058 bool deleteT = false; 4058 bool deleteT = false;
4059 if (!todo->relations().isEmpty()) { 4059 if (!todo->relations().isEmpty()) {
4060 deleteT = removeCompletedSubTodos( todo ); 4060 deleteT = removeCompletedSubTodos( todo );
4061 } 4061 }
4062 // deleteT == true: todo already deleted in removeCompletedSubTodos 4062 // deleteT == true: todo already deleted in removeCompletedSubTodos
4063 if ( !deleteT ) { 4063 if ( !deleteT ) {
4064 checkExternalId( todo ); 4064 checkExternalId( todo );
4065 calendar()->deleteTodo(todo); 4065 calendar()->deleteTodo(todo);
4066 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 4066 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
4067 } 4067 }
4068 updateView(); 4068 updateView();
4069 break; 4069 break;
4070 } // switch 4070 } // switch
4071 } else { 4071 } else {
4072 checkExternalId( todo ); 4072 checkExternalId( todo );
4073 mCalendar->deleteTodo(todo); 4073 mCalendar->deleteTodo(todo);
4074 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 4074 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
4075 updateView(); 4075 updateView();
4076 } 4076 }
4077 4077
4078 emit updateSearchDialog(); 4078 emit updateSearchDialog();
4079} 4079}
4080void CalendarView::deleteJournal(Journal *jour) 4080void CalendarView::deleteJournal(Journal *jour)
4081{ 4081{
4082 if (!jour) { 4082 if (!jour) {
4083 KNotifyClient::beep(); 4083 KNotifyClient::beep();
4084 return; 4084 return;
4085 } 4085 }
4086 if (KOPrefs::instance()->mConfirm) { 4086 if (KOPrefs::instance()->mConfirm) {
4087 4087
4088 QString des; 4088 QString des;
4089 if ( !jour->summary().isEmpty() ) { 4089 if ( !jour->summary().isEmpty() ) {
4090 des = jour->summary(); 4090 des = jour->summary();
4091 } else { 4091 } else {
4092 des = jour->description().left(30); 4092 des = jour->description().left(30);
4093 des = des.simplifyWhiteSpace (); 4093 des = des.simplifyWhiteSpace ();
4094 des.replace (QRegExp ("\\n"),"" ); 4094 des.replace (QRegExp ("\\n"),"" );
4095 des.replace (QRegExp ("\\r"),"" ); 4095 des.replace (QRegExp ("\\r"),"" );
4096 } 4096 }
4097 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) { 4097 switch (msgItemDelete( i18n("Journal:") +"\n"+KGlobal::formatMessage ( des,0 ))) {
4098 case KMessageBox::Continue: // OK 4098 case KMessageBox::Continue: // OK
4099 calendar()->deleteJournal(jour); 4099 calendar()->deleteJournal(jour);
4100 updateView(); 4100 updateView();
4101 break; 4101 break;
4102 } // switch 4102 } // switch
4103 } else { 4103 } else {
4104 calendar()->deleteJournal(jour);; 4104 calendar()->deleteJournal(jour);;
4105 updateView(); 4105 updateView();
4106 } 4106 }
4107 emit updateSearchDialog(); 4107 emit updateSearchDialog();
4108} 4108}
4109 4109
4110void CalendarView::deleteEvent(Event *anEvent) 4110void CalendarView::deleteEvent(Event *anEvent)
4111{ 4111{
4112 if (!anEvent) { 4112 if (!anEvent) {
4113 KNotifyClient::beep(); 4113 KNotifyClient::beep();
4114 return; 4114 return;
4115 } 4115 }
4116 4116
4117 if (anEvent->doesRecur()) { 4117 if (anEvent->doesRecur()) {
4118 QDate itemDate = mViewManager->currentSelectionDate(); 4118 QDate itemDate = mViewManager->currentSelectionDate();
4119 int km; 4119 int km;
4120 if (!itemDate.isValid()) { 4120 if (!itemDate.isValid()) {
4121 //kdDebug() << "Date Not Valid" << endl; 4121 //kdDebug() << "Date Not Valid" << endl;
4122 if (KOPrefs::instance()->mConfirm) { 4122 if (KOPrefs::instance()->mConfirm) {
4123 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 4123 km = KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
4124 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 4124 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
4125 i18n("KO/Pi Confirmation"),i18n("Delete All")); 4125 i18n("KO/Pi Confirmation"),i18n("Delete All"));
4126 if ( km == KMessageBox::Continue ) 4126 if ( km == KMessageBox::Continue )
4127 km = KMessageBox::No; // No = all below 4127 km = KMessageBox::No; // No = all below
4128 } else 4128 } else
4129 km = KMessageBox::No; 4129 km = KMessageBox::No;
4130 } else { 4130 } else {
4131 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 4131 km = KMessageBox::warningYesNoCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
4132 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 4132 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
4133 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 4133 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
4134 i18n("KO/Pi Confirmation"),i18n("Current"), 4134 i18n("KO/Pi Confirmation"),i18n("Current"),
4135 i18n("All")); 4135 i18n("All"));
4136 } 4136 }
4137 switch(km) { 4137 switch(km) {
4138 4138
4139 case KMessageBox::No: // Continue // all 4139 case KMessageBox::No: // Continue // all
4140 //qDebug("KMessageBox::No "); 4140 //qDebug("KMessageBox::No ");
4141 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 4141 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
4142 schedule(Scheduler::Cancel,anEvent); 4142 schedule(Scheduler::Cancel,anEvent);
4143 4143
4144 checkExternalId( anEvent); 4144 checkExternalId( anEvent);
4145 mCalendar->deleteEvent(anEvent); 4145 mCalendar->deleteEvent(anEvent);
4146 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 4146 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
4147 break; 4147 break;
4148 4148
4149 // Disabled because it does not work 4149 // Disabled because it does not work
4150 //#if 0 4150 //#if 0
4151 case KMessageBox::Yes: // just this one 4151 case KMessageBox::Yes: // just this one
4152 //QDate qd = mNavigator->selectedDates().first(); 4152 //QDate qd = mNavigator->selectedDates().first();
4153 //if (!qd.isValid()) { 4153 //if (!qd.isValid()) {
4154 // kdDebug() << "no date selected, or invalid date" << endl; 4154 // kdDebug() << "no date selected, or invalid date" << endl;
4155 // KNotifyClient::beep(); 4155 // KNotifyClient::beep();
4156 // return; 4156 // return;
4157 //} 4157 //}
4158 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 4158 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
4159 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 4159 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
4160 anEvent->addExDate(itemDate); 4160 anEvent->addExDate(itemDate);
4161 int duration = anEvent->recurrence()->duration(); 4161 int duration = anEvent->recurrence()->duration();
4162 if ( duration > 0 ) { 4162 if ( duration > 0 ) {
4163 anEvent->recurrence()->setDuration( duration - 1 ); 4163 anEvent->recurrence()->setDuration( duration - 1 );
4164 } 4164 }
4165 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 4165 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
4166 } 4166 }
4167 break; 4167 break;
4168 //#endif 4168 //#endif
4169 } // switch 4169 } // switch
4170 } else { 4170 } else {
4171 if (KOPrefs::instance()->mConfirm) { 4171 if (KOPrefs::instance()->mConfirm) {
4172 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) + 4172 switch (KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( anEvent->summary(),0 ) +
4173 i18n("\nAre you sure you want\nto delete this event?"), 4173 i18n("\nAre you sure you want\nto delete this event?"),
4174 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 4174 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
4175 case KMessageBox::Continue: // OK 4175 case KMessageBox::Continue: // OK
4176 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 4176 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
4177 schedule(Scheduler::Cancel,anEvent); 4177 schedule(Scheduler::Cancel,anEvent);
4178 checkExternalId( anEvent); 4178 checkExternalId( anEvent);
4179 mCalendar->deleteEvent(anEvent); 4179 mCalendar->deleteEvent(anEvent);
4180 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 4180 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
4181 break; 4181 break;
4182 } // switch 4182 } // switch
4183 } else { 4183 } else {
4184 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 4184 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
4185 schedule(Scheduler::Cancel,anEvent); 4185 schedule(Scheduler::Cancel,anEvent);
4186 checkExternalId( anEvent); 4186 checkExternalId( anEvent);
4187 mCalendar->deleteEvent(anEvent); 4187 mCalendar->deleteEvent(anEvent);
4188 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 4188 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
4189 } 4189 }
4190 } // if-else 4190 } // if-else
4191 emit updateSearchDialog(); 4191 emit updateSearchDialog();
4192} 4192}
4193 4193
4194bool CalendarView::deleteEvent(const QString &uid) 4194bool CalendarView::deleteEvent(const QString &uid)
4195{ 4195{
4196 Event *ev = mCalendar->event(uid); 4196 Event *ev = mCalendar->event(uid);
4197 if (ev) { 4197 if (ev) {
4198 deleteEvent(ev); 4198 deleteEvent(ev);
4199 return true; 4199 return true;
4200 } else { 4200 } else {
4201 return false; 4201 return false;
4202 } 4202 }
4203} 4203}
4204 4204
4205/*****************************************************************************/ 4205/*****************************************************************************/
4206 4206
4207void CalendarView::action_mail() 4207void CalendarView::action_mail()
4208{ 4208{
4209#ifndef KORG_NOMAIL 4209#ifndef KORG_NOMAIL
4210 KOMailClient mailClient; 4210 KOMailClient mailClient;
4211 4211
4212 Incidence *incidence = currentSelection(); 4212 Incidence *incidence = currentSelection();
4213 4213
4214 if (!incidence) { 4214 if (!incidence) {
4215 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 4215 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
4216 return; 4216 return;
4217 } 4217 }
4218 if(incidence->attendeeCount() == 0 ) { 4218 if(incidence->attendeeCount() == 0 ) {
4219 KMessageBox::sorry(this, 4219 KMessageBox::sorry(this,
4220 i18n("Can't generate mail:\nNo attendees defined.\n")); 4220 i18n("Can't generate mail:\nNo attendees defined.\n"));
4221 return; 4221 return;
4222 } 4222 }
4223 4223
4224 CalendarLocal cal_tmp; 4224 CalendarLocal cal_tmp;
4225 Event *event = 0; 4225 Event *event = 0;
4226 Event *ev = 0; 4226 Event *ev = 0;
4227 if ( incidence && incidence->typeID() == eventID ) { 4227 if ( incidence && incidence->typeID() == eventID ) {
4228 event = static_cast<Event *>(incidence); 4228 event = static_cast<Event *>(incidence);
4229 ev = new Event(*event); 4229 ev = new Event(*event);
4230 cal_tmp.addEvent(ev); 4230 cal_tmp.addEvent(ev);
4231 } 4231 }
4232 ICalFormat mForm(); 4232 ICalFormat mForm();
4233 QString attachment = mForm.toString( &cal_tmp ); 4233 QString attachment = mForm.toString( &cal_tmp );
4234 if (ev) delete(ev); 4234 if (ev) delete(ev);
4235 4235
4236 mailClient.mailAttendees(currentSelection(), attachment); 4236 mailClient.mailAttendees(currentSelection(), attachment);
4237 4237
4238#endif 4238#endif
4239 4239
4240#if 0 4240#if 0
4241 Event *anEvent = 0; 4241 Event *anEvent = 0;
4242 if (mViewManager->currentView()->isEventView()) { 4242 if (mViewManager->currentView()->isEventView()) {
4243 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 4243 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
4244 } 4244 }
4245 4245
4246 if (!anEvent) { 4246 if (!anEvent) {
4247 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 4247 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
4248 return; 4248 return;
4249 } 4249 }
4250 if(anEvent->attendeeCount() == 0 ) { 4250 if(anEvent->attendeeCount() == 0 ) {
4251 KMessageBox::sorry(this, 4251 KMessageBox::sorry(this,
4252 i18n("Can't generate mail:\nNo attendees defined.\n")); 4252 i18n("Can't generate mail:\nNo attendees defined.\n"));
4253 return; 4253 return;
4254 } 4254 }
4255 4255
4256 mailobject.emailEvent(anEvent); 4256 mailobject.emailEvent(anEvent);
4257#endif 4257#endif
4258} 4258}
4259 4259
4260 4260
4261void CalendarView::schedule_publish(Incidence *incidence) 4261void CalendarView::schedule_publish(Incidence *incidence)
4262{ 4262{
4263 Event *event = 0; 4263 Event *event = 0;
4264 Todo *todo = 0; 4264 Todo *todo = 0;
4265 4265
4266 if (incidence == 0) { 4266 if (incidence == 0) {
4267 incidence = mViewManager->currentView()->selectedIncidences().first(); 4267 incidence = mViewManager->currentView()->selectedIncidences().first();
4268 if (incidence == 0) { 4268 if (incidence == 0) {
4269 incidence = mTodoList->selectedIncidences().first(); 4269 incidence = mTodoList->selectedIncidences().first();
4270 } 4270 }
4271 } 4271 }
4272 if ( incidence && incidence->typeID() == eventID ) { 4272 if ( incidence && incidence->typeID() == eventID ) {
4273 event = static_cast<Event *>(incidence); 4273 event = static_cast<Event *>(incidence);
4274 } else { 4274 } else {
4275 if ( incidence && incidence->typeID() == todoID ) { 4275 if ( incidence && incidence->typeID() == todoID ) {
4276 todo = static_cast<Todo *>(incidence); 4276 todo = static_cast<Todo *>(incidence);
4277 } 4277 }
4278 } 4278 }
4279 4279
4280 if (!event && !todo) { 4280 if (!event && !todo) {
4281 KMessageBox::sorry(this,i18n("No event selected.")); 4281 KMessageBox::sorry(this,i18n("No event selected."));
4282 return; 4282 return;
4283 } 4283 }
4284 4284
4285 PublishDialog *publishdlg = new PublishDialog(); 4285 PublishDialog *publishdlg = new PublishDialog();
4286 if (incidence->attendeeCount()>0) { 4286 if (incidence->attendeeCount()>0) {
4287 QPtrList<Attendee> attendees = incidence->attendees(); 4287 QPtrList<Attendee> attendees = incidence->attendees();
4288 attendees.first(); 4288 attendees.first();
4289 while ( attendees.current()!=0 ) { 4289 while ( attendees.current()!=0 ) {
4290 publishdlg->addAttendee(attendees.current()); 4290 publishdlg->addAttendee(attendees.current());
4291 attendees.next(); 4291 attendees.next();
4292 } 4292 }
4293 } 4293 }
4294 bool send = true; 4294 bool send = true;
4295 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 4295 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
4296 if ( publishdlg->exec() != QDialog::Accepted ) 4296 if ( publishdlg->exec() != QDialog::Accepted )
4297 send = false; 4297 send = false;
4298 } 4298 }
4299 if ( send ) { 4299 if ( send ) {
4300 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4300 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4301 if ( event ) { 4301 if ( event ) {
4302 Event *ev = new Event(*event); 4302 Event *ev = new Event(*event);
4303 ev->registerObserver(0); 4303 ev->registerObserver(0);
4304 ev->clearAttendees(); 4304 ev->clearAttendees();
4305 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 4305 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
4306 delete(ev); 4306 delete(ev);
4307 } 4307 }
4308 } else { 4308 } else {
4309 if ( todo ) { 4309 if ( todo ) {
4310 Todo *ev = new Todo(*todo); 4310 Todo *ev = new Todo(*todo);
4311 ev->registerObserver(0); 4311 ev->registerObserver(0);
4312 ev->clearAttendees(); 4312 ev->clearAttendees();
4313 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 4313 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
4314 delete(ev); 4314 delete(ev);
4315 } 4315 }
4316 } 4316 }
4317 } 4317 }
4318 } 4318 }
4319 delete publishdlg; 4319 delete publishdlg;
4320} 4320}
4321 4321
4322void CalendarView::schedule_request(Incidence *incidence) 4322void CalendarView::schedule_request(Incidence *incidence)
4323{ 4323{
4324 schedule(Scheduler::Request,incidence); 4324 schedule(Scheduler::Request,incidence);
4325} 4325}
4326 4326
4327void CalendarView::schedule_refresh(Incidence *incidence) 4327void CalendarView::schedule_refresh(Incidence *incidence)
4328{ 4328{
4329 schedule(Scheduler::Refresh,incidence); 4329 schedule(Scheduler::Refresh,incidence);
4330} 4330}
4331 4331
4332void CalendarView::schedule_cancel(Incidence *incidence) 4332void CalendarView::schedule_cancel(Incidence *incidence)
4333{ 4333{
4334 schedule(Scheduler::Cancel,incidence); 4334 schedule(Scheduler::Cancel,incidence);
4335} 4335}
4336 4336
4337void CalendarView::schedule_add(Incidence *incidence) 4337void CalendarView::schedule_add(Incidence *incidence)
4338{ 4338{
4339 schedule(Scheduler::Add,incidence); 4339 schedule(Scheduler::Add,incidence);
4340} 4340}
4341 4341
4342void CalendarView::schedule_reply(Incidence *incidence) 4342void CalendarView::schedule_reply(Incidence *incidence)
4343{ 4343{
4344 schedule(Scheduler::Reply,incidence); 4344 schedule(Scheduler::Reply,incidence);
4345} 4345}
4346 4346
4347void CalendarView::schedule_counter(Incidence *incidence) 4347void CalendarView::schedule_counter(Incidence *incidence)
4348{ 4348{
4349 schedule(Scheduler::Counter,incidence); 4349 schedule(Scheduler::Counter,incidence);
4350} 4350}
4351 4351
4352void CalendarView::schedule_declinecounter(Incidence *incidence) 4352void CalendarView::schedule_declinecounter(Incidence *incidence)
4353{ 4353{
4354 schedule(Scheduler::Declinecounter,incidence); 4354 schedule(Scheduler::Declinecounter,incidence);
4355} 4355}
4356 4356
4357void CalendarView::schedule_publish_freebusy(int daysToPublish) 4357void CalendarView::schedule_publish_freebusy(int daysToPublish)
4358{ 4358{
4359 QDateTime start = QDateTime::currentDateTime(); 4359 QDateTime start = QDateTime::currentDateTime();
4360 QDateTime end = start.addDays(daysToPublish); 4360 QDateTime end = start.addDays(daysToPublish);
4361 4361
4362 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 4362 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
4363 freebusy->setOrganizer(KOPrefs::instance()->email()); 4363 freebusy->setOrganizer(KOPrefs::instance()->email());
4364 4364
4365 4365
4366 PublishDialog *publishdlg = new PublishDialog(); 4366 PublishDialog *publishdlg = new PublishDialog();
4367 if ( publishdlg->exec() == QDialog::Accepted ) { 4367 if ( publishdlg->exec() == QDialog::Accepted ) {
4368 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4368 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4369 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 4369 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
4370 delete(freebusy); 4370 delete(freebusy);
4371 } 4371 }
4372 } 4372 }
4373 delete publishdlg; 4373 delete publishdlg;
4374} 4374}
4375 4375
4376void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 4376void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
4377{ 4377{
4378 Event *event = 0; 4378 Event *event = 0;
4379 Todo *todo = 0; 4379 Todo *todo = 0;
4380 4380
4381 if (incidence == 0) { 4381 if (incidence == 0) {
4382 incidence = mViewManager->currentView()->selectedIncidences().first(); 4382 incidence = mViewManager->currentView()->selectedIncidences().first();
4383 if (incidence == 0) { 4383 if (incidence == 0) {
4384 incidence = mTodoList->selectedIncidences().first(); 4384 incidence = mTodoList->selectedIncidences().first();
4385 } 4385 }
4386 } 4386 }
4387 if ( incidence && incidence->typeID() == eventID ) { 4387 if ( incidence && incidence->typeID() == eventID ) {
4388 event = static_cast<Event *>(incidence); 4388 event = static_cast<Event *>(incidence);
4389 } 4389 }
4390 if ( incidence && incidence->typeID() == todoID ) { 4390 if ( incidence && incidence->typeID() == todoID ) {
4391 todo = static_cast<Todo *>(incidence); 4391 todo = static_cast<Todo *>(incidence);
4392 } 4392 }
4393 4393
4394 if (!event && !todo) { 4394 if (!event && !todo) {
4395 KMessageBox::sorry(this,i18n("No event selected.")); 4395 KMessageBox::sorry(this,i18n("No event selected."));
4396 return; 4396 return;
4397 } 4397 }
4398 4398
4399 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 4399 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
4400 KMessageBox::sorry(this,i18n("The event has no attendees.")); 4400 KMessageBox::sorry(this,i18n("The event has no attendees."));
4401 return; 4401 return;
4402 } 4402 }
4403 4403
4404 Event *ev = 0; 4404 Event *ev = 0;
4405 if (event) ev = new Event(*event); 4405 if (event) ev = new Event(*event);
4406 Todo *to = 0; 4406 Todo *to = 0;
4407 if (todo) to = new Todo(*todo); 4407 if (todo) to = new Todo(*todo);
4408 4408
4409 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 4409 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
4410 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 4410 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
4411 if (!me) { 4411 if (!me) {
4412 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 4412 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
4413 return; 4413 return;
4414 } 4414 }
4415 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 4415 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
4416 StatusDialog *statdlg = new StatusDialog(this); 4416 StatusDialog *statdlg = new StatusDialog(this);
4417 if (!statdlg->exec()==QDialog::Accepted) return; 4417 if (!statdlg->exec()==QDialog::Accepted) return;
4418 me->setStatus( statdlg->status() ); 4418 me->setStatus( statdlg->status() );
4419 delete(statdlg); 4419 delete(statdlg);
4420 } 4420 }
4421 Attendee *menew = new Attendee(*me); 4421 Attendee *menew = new Attendee(*me);
4422 if (ev) { 4422 if (ev) {
4423 ev->clearAttendees(); 4423 ev->clearAttendees();
4424 ev->addAttendee(menew,false); 4424 ev->addAttendee(menew,false);
4425 } else { 4425 } else {
4426 if (to) { 4426 if (to) {
4427 todo->clearAttendees(); 4427 todo->clearAttendees();
4428 todo->addAttendee(menew,false); 4428 todo->addAttendee(menew,false);
4429 } 4429 }
4430 } 4430 }
4431 } 4431 }
4432 4432
4433 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 4433 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
4434 if (ev) { 4434 if (ev) {
4435 if ( !dlg->addMessage(ev,method) ) delete(ev); 4435 if ( !dlg->addMessage(ev,method) ) delete(ev);
4436 } else { 4436 } else {
4437 if (to) { 4437 if (to) {
4438 if ( !dlg->addMessage(to,method) ) delete(to); 4438 if ( !dlg->addMessage(to,method) ) delete(to);
4439 } 4439 }
4440 } 4440 }
4441} 4441}
4442 4442
4443void CalendarView::openAddressbook() 4443void CalendarView::openAddressbook()
4444{ 4444{
4445 KRun::runCommand("kaddressbook"); 4445 KRun::runCommand("kaddressbook");
4446} 4446}
4447 4447
4448void CalendarView::setModified(bool modified) 4448void CalendarView::setModified(bool modified)
4449{ 4449{
4450 //qDebug("CalendarView::setModified %d ", modified); 4450 //qDebug("CalendarView::setModified %d ", modified);
4451 if ( modified ) 4451 if ( modified )
4452 emit signalmodified(); 4452 emit signalmodified();
4453 mModified = modified; 4453 mModified = modified;
4454 if ( mModified ) 4454 if ( mModified )
4455 emit modifiedChanged(mModified); 4455 emit modifiedChanged(mModified);
4456 4456
4457} 4457}
4458 4458
4459bool CalendarView::isReadOnly() 4459bool CalendarView::isReadOnly()
4460{ 4460{
4461 return mReadOnly; 4461 return mReadOnly;
4462} 4462}
4463 4463
4464void CalendarView::setReadOnly(bool readOnly) 4464void CalendarView::setReadOnly(bool readOnly)
4465{ 4465{
4466 if (mReadOnly != readOnly) { 4466 if (mReadOnly != readOnly) {
4467 mReadOnly = readOnly; 4467 mReadOnly = readOnly;
4468 emit readOnlyChanged(mReadOnly); 4468 emit readOnlyChanged(mReadOnly);
4469 } 4469 }
4470} 4470}
4471 4471
4472bool CalendarView::isModified() 4472bool CalendarView::isModified()
4473{ 4473{
4474 return mModified; 4474 return mModified;
4475} 4475}
4476void CalendarView::slotprintSelInc() 4476void CalendarView::slotprintSelInc()
4477{ 4477{
4478 if ( currentSelection() == 0 ) { 4478 if ( currentSelection() == 0 ) {
4479 KMessageBox::sorry(this,i18n("There is nothing selected!")); 4479 KMessageBox::sorry(this,i18n("There is nothing selected!"));
4480 return; 4480 return;
4481 } 4481 }
4482 showIncidence(); 4482 showIncidence();
4483 getEventViewerDialog()->print(); 4483 getEventViewerDialog()->print();
4484 4484
4485} 4485}
4486void CalendarView::printSetup() 4486void CalendarView::printSetup()
4487{ 4487{
4488#ifndef KORG_NOPRINTER 4488#ifndef KORG_NOPRINTER
4489 createPrinter(); 4489 createPrinter();
4490 4490
4491 mCalPrinter->setupPrinter(); 4491 mCalPrinter->setupPrinter();
4492#endif 4492#endif
4493} 4493}
4494 4494
4495void CalendarView::print() 4495void CalendarView::print()
4496{ 4496{
4497#ifndef KORG_NOPRINTER 4497#ifndef KORG_NOPRINTER
4498 createPrinter(); 4498 createPrinter();
4499 4499
4500 DateList tmpDateList = mNavigator->selectedDates(); 4500 DateList tmpDateList = mNavigator->selectedDates();
4501 mCalPrinter->print(CalPrinter::Month, 4501 mCalPrinter->print(CalPrinter::Month,
4502 tmpDateList.first(), tmpDateList.last()); 4502 tmpDateList.first(), tmpDateList.last());
4503#endif 4503#endif
4504} 4504}
4505 4505
4506void CalendarView::printPreview() 4506void CalendarView::printPreview()
4507{ 4507{
4508#ifndef KORG_NOPRINTER 4508#ifndef KORG_NOPRINTER
4509 kdDebug() << "CalendarView::printPreview()" << endl; 4509 kdDebug() << "CalendarView::printPreview()" << endl;
4510 4510
4511 createPrinter(); 4511 createPrinter();
4512 4512
4513 DateList tmpDateList = mNavigator->selectedDates(); 4513 DateList tmpDateList = mNavigator->selectedDates();
4514 4514
4515 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 4515 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
4516 tmpDateList.last()); 4516 tmpDateList.last());
4517#endif 4517#endif
4518} 4518}
4519bool CalendarView::exportICalendar( QString filename ) 4519bool CalendarView::exportICalendar( QString filename )
4520{ 4520{
4521 // Force correct extension 4521 // Force correct extension
4522 if (filename.right(4) != ".ics") filename += ".ics"; 4522 if (filename.right(4) != ".ics") filename += ".ics";
4523 4523
4524 FileStorage storage( mCalendar, filename, new ICalFormat() ); 4524 FileStorage storage( mCalendar, filename, new ICalFormat() );
4525 return storage.save(); 4525 return storage.save();
4526} 4526}
4527 4527
4528bool CalendarView::exportICalendar() 4528bool CalendarView::exportICalendar()
4529{ 4529{
4530 return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) ); 4530 return exportICalendar( KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this) );
4531} 4531}
4532 4532
4533bool CalendarView::exportVCalendar( QString filename ) 4533bool CalendarView::exportVCalendar( QString filename )
4534{ 4534{
4535 if (mCalendar->journals().count() > 0) { 4535 if (mCalendar->journals().count() > 0) {
4536 int result = KMessageBox::warningContinueCancel(this, 4536 int result = KMessageBox::warningContinueCancel(this,
4537 i18n("The journal entries can not be\nexported to a vCalendar file."), 4537 i18n("The journal entries can not be\nexported to a vCalendar file."),
4538 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 4538 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
4539 true); 4539 true);
4540 if (result != KMessageBox::Continue) return false; 4540 if (result != KMessageBox::Continue) return false;
4541 } 4541 }
4542 4542
4543 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 4543 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
4544 4544
4545 // Force correct extension 4545 // Force correct extension
4546 if (filename.right(4) != ".vcs") filename += ".vcs"; 4546 if (filename.right(4) != ".vcs") filename += ".vcs";
4547 4547
4548 FileStorage storage( mCalendar, filename, new VCalFormat ); 4548 FileStorage storage( mCalendar, filename, new VCalFormat );
4549 return storage.save(); 4549 return storage.save();
4550 4550
4551} 4551}
4552 4552
4553void CalendarView::eventUpdated(Incidence *) 4553void CalendarView::eventUpdated(Incidence *)
4554{ 4554{
4555 setModified(); 4555 setModified();
4556 // Don't call updateView here. The code, which has caused the update of the 4556 // Don't call updateView here. The code, which has caused the update of the
4557 // event is responsible for updating the view. 4557 // event is responsible for updating the view.
4558 // updateView(); 4558 // updateView();
4559} 4559}
4560 4560
4561void CalendarView::adaptNavigationUnits() 4561void CalendarView::adaptNavigationUnits()
4562{ 4562{
4563 if (mViewManager->currentView()->isEventView()) { 4563 if (mViewManager->currentView()->isEventView()) {
4564 int days = mViewManager->currentView()->currentDateCount(); 4564 int days = mViewManager->currentView()->currentDateCount();
4565 if (days == 1) { 4565 if (days == 1) {
4566 emit changeNavStringPrev(i18n("&Previous Day")); 4566 emit changeNavStringPrev(i18n("&Previous Day"));
4567 emit changeNavStringNext(i18n("&Next Day")); 4567 emit changeNavStringNext(i18n("&Next Day"));
4568 } else { 4568 } else {
4569 emit changeNavStringPrev(i18n("&Previous Week")); 4569 emit changeNavStringPrev(i18n("&Previous Week"));
4570 emit changeNavStringNext(i18n("&Next Week")); 4570 emit changeNavStringNext(i18n("&Next Week"));
4571 } 4571 }
4572 } 4572 }
4573} 4573}
4574 4574
4575void CalendarView::processMainViewSelection( Incidence *incidence ) 4575void CalendarView::processMainViewSelection( Incidence *incidence )
4576{ 4576{
4577 if ( incidence ) mTodoList->clearSelection(); 4577 if ( incidence ) mTodoList->clearSelection();
4578 processIncidenceSelection( incidence ); 4578 processIncidenceSelection( incidence );
4579} 4579}
4580 4580
4581void CalendarView::processTodoListSelection( Incidence *incidence ) 4581void CalendarView::processTodoListSelection( Incidence *incidence )
4582{ 4582{
4583 if ( incidence && mViewManager->currentView() ) { 4583 if ( incidence && mViewManager->currentView() ) {
4584 mViewManager->currentView()->clearSelection(); 4584 mViewManager->currentView()->clearSelection();
4585 } 4585 }
4586 processIncidenceSelection( incidence ); 4586 processIncidenceSelection( incidence );
4587} 4587}
4588 4588
4589void CalendarView::processIncidenceSelection( Incidence *incidence ) 4589void CalendarView::processIncidenceSelection( Incidence *incidence )
4590{ 4590{
4591 emit incidenceSelected( incidence ); 4591 emit incidenceSelected( incidence );
4592 if ( incidence == mSelectedIncidence ) return; 4592 if ( incidence == mSelectedIncidence ) return;
4593 mSelectedIncidence = incidence; 4593 mSelectedIncidence = incidence;
4594 4594
4595 if ( incidence && incidence->typeID() == eventID ) { 4595 if ( incidence && incidence->typeID() == eventID ) {
4596 Event *event = static_cast<Event *>( incidence ); 4596 Event *event = static_cast<Event *>( incidence );
4597 if ( event->organizer() == KOPrefs::instance()->email() ) { 4597 if ( event->organizer() == KOPrefs::instance()->email() ) {
4598 emit organizerEventsSelected( true ); 4598 emit organizerEventsSelected( true );
4599 } else { 4599 } else {
4600 emit organizerEventsSelected(false); 4600 emit organizerEventsSelected(false);
4601 } 4601 }
4602 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4602 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4603 KOPrefs::instance()->email() ) ) { 4603 KOPrefs::instance()->email() ) ) {
4604 emit groupEventsSelected( true ); 4604 emit groupEventsSelected( true );
4605 } else { 4605 } else {
4606 emit groupEventsSelected(false); 4606 emit groupEventsSelected(false);
4607 } 4607 }
4608 return; 4608 return;
4609 } else { 4609 } else {
4610 if ( incidence && incidence->typeID() == todoID ) { 4610 if ( incidence && incidence->typeID() == todoID ) {
4611 emit todoSelected( true ); 4611 emit todoSelected( true );
4612 Todo *event = static_cast<Todo *>( incidence ); 4612 Todo *event = static_cast<Todo *>( incidence );
4613 if ( event->organizer() == KOPrefs::instance()->email() ) { 4613 if ( event->organizer() == KOPrefs::instance()->email() ) {
4614 emit organizerEventsSelected( true ); 4614 emit organizerEventsSelected( true );
4615 } else { 4615 } else {
4616 emit organizerEventsSelected(false); 4616 emit organizerEventsSelected(false);
4617 } 4617 }
4618 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 4618 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
4619 KOPrefs::instance()->email() ) ) { 4619 KOPrefs::instance()->email() ) ) {
4620 emit groupEventsSelected( true ); 4620 emit groupEventsSelected( true );
4621 } else { 4621 } else {
4622 emit groupEventsSelected(false); 4622 emit groupEventsSelected(false);
4623 } 4623 }
4624 return; 4624 return;
4625 } else { 4625 } else {
4626 emit todoSelected( false ); 4626 emit todoSelected( false );
4627 emit organizerEventsSelected(false); 4627 emit organizerEventsSelected(false);
4628 emit groupEventsSelected(false); 4628 emit groupEventsSelected(false);
4629 } 4629 }
4630 return; 4630 return;
4631 } 4631 }
4632 4632
4633 /* if ( incidence && incidence->typeID() == todoID ) { 4633 /* if ( incidence && incidence->typeID() == todoID ) {
4634 emit todoSelected( true ); 4634 emit todoSelected( true );
4635 } else { 4635 } else {
4636 emit todoSelected( false ); 4636 emit todoSelected( false );
4637 }*/ 4637 }*/
4638} 4638}
4639 4639
4640 4640
4641void CalendarView::checkClipboard() 4641void CalendarView::checkClipboard()
4642{ 4642{
4643#ifndef KORG_NODND 4643#ifndef KORG_NODND
4644 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 4644 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
4645 emit pasteEnabled(true); 4645 emit pasteEnabled(true);
4646 } else { 4646 } else {
4647 emit pasteEnabled(false); 4647 emit pasteEnabled(false);
4648 } 4648 }
4649#endif 4649#endif
4650} 4650}
4651 4651
4652void CalendarView::showDates(const DateList &selectedDates) 4652void CalendarView::showDates(const DateList &selectedDates)
4653{ 4653{
4654 // kdDebug() << "CalendarView::selectDates()" << endl; 4654 // kdDebug() << "CalendarView::selectDates()" << endl;
4655 4655
4656 4656
4657 if ( !mBlockShowDates ) { 4657 if ( !mBlockShowDates ) {
4658 if ( mViewManager->currentView() ) { 4658 if ( mViewManager->currentView() ) {
4659 updateView( selectedDates.first(), selectedDates.last() ); 4659 updateView( selectedDates.first(), selectedDates.last() );
4660 } else { 4660 } else {
4661 mViewManager->showAgendaView(); 4661 mViewManager->showAgendaView();
4662 } 4662 }
4663 } 4663 }
4664 4664
4665 QDate date = selectedDates.first(); 4665 QDate date = selectedDates.first();
4666 if ( ! date.isValid() ) { 4666 if ( ! date.isValid() ) {
4667 topLevelWidget()->setCaption(""); 4667 topLevelWidget()->setCaption("");
4668 return; 4668 return;
4669 } 4669 }
4670 4670
4671 QString selDates; 4671 QString selDates;
4672 selDates = KGlobal::locale()->formatDate( date, true); 4672 selDates = KGlobal::locale()->formatDate( date, true);
4673 if (selectedDates.first() < selectedDates.last() ) 4673 if (selectedDates.first() < selectedDates.last() )
4674 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 4674 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
4675 else { 4675 else {
4676 QString addString; 4676 QString addString;
4677 if ( date == QDateTime::currentDateTime().date() ) 4677 if ( date == QDateTime::currentDateTime().date() )
4678 addString = i18n("Today"); 4678 addString = i18n("Today");
4679 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 4679 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
4680 addString = i18n("Tomorrow"); 4680 addString = i18n("Tomorrow");
4681 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 4681 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
4682 addString = i18n("Yesterday"); 4682 addString = i18n("Yesterday");
4683 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 4683 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
4684 addString = i18n("Day before yesterday"); 4684 addString = i18n("Day before yesterday");
4685 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 4685 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
4686 addString = i18n("Day after tomorrow"); 4686 addString = i18n("Day after tomorrow");
4687 if ( !addString.isEmpty() ) { 4687 if ( !addString.isEmpty() ) {
4688 topLevelWidget()->setCaption( addString+", " + selDates ); 4688 topLevelWidget()->setCaption( addString+", " + selDates );
4689 return; 4689 return;
4690 } 4690 }
4691 } 4691 }
4692 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 4692 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
4693 4693
4694} 4694}
4695 4695
4696QPtrList<CalFilter> CalendarView::filters() 4696QPtrList<CalFilter> CalendarView::filters()
4697{ 4697{
4698 return mFilters; 4698 return mFilters;
4699 4699
4700} 4700}
4701void CalendarView::editFilters() 4701void CalendarView::editFilters()
4702{ 4702{
4703 // kdDebug() << "CalendarView::editFilters()" << endl; 4703 // kdDebug() << "CalendarView::editFilters()" << endl;
4704 4704
4705 CalFilter *filter = mFilters.first(); 4705 CalFilter *filter = mFilters.first();
4706 while(filter) { 4706 while(filter) {
4707 filter = mFilters.next(); 4707 filter = mFilters.next();
4708 } 4708 }
4709 4709
4710 mDialogManager->showFilterEditDialog(&mFilters); 4710 mDialogManager->showFilterEditDialog(&mFilters);
4711 updateFilter(); 4711 updateFilter();
4712} 4712}
4713void CalendarView::toggleFilter() 4713void CalendarView::toggleFilter()
4714{ 4714{
4715 if ( mLeftFrame->isHidden() ) { 4715 if ( mLeftFrame->isHidden() ) {
4716 toggleExpand(); 4716 toggleExpand();
4717 showFilter( true ); 4717 showFilter( true );
4718 } else 4718 } else
4719 showFilter(! mCalEditView->isVisible()); 4719 showFilter(! mCalEditView->isVisible());
4720} 4720}
4721 4721
4722KOFilterView *CalendarView::filterView() 4722KOFilterView *CalendarView::filterView()
4723{ 4723{
4724 return mFilterView; 4724 return mFilterView;
4725} 4725}
4726void CalendarView::selectFilter( int fil ) 4726void CalendarView::selectFilter( int fil )
4727{ 4727{
4728 mFilterView->setSelectedFilter( fil ); 4728 mFilterView->setSelectedFilter( fil );
4729 updateUnmanagedViews(); 4729 updateUnmanagedViews();
4730} 4730}
4731void CalendarView::showFilter(bool visible) 4731void CalendarView::showFilter(bool visible)
4732{ 4732{
4733#if 1 4733#if 1
4734 if (visible) { 4734 if (visible) {
4735 mCalEditView->readConfig(); 4735 mCalEditView->readConfig();
4736 mCalEditView->show(); 4736 mCalEditView->show();
4737 QValueList<int> sizes; 4737 QValueList<int> sizes;
4738 sizes = mLeftFrame->sizes(); 4738 sizes = mLeftFrame->sizes();
4739 if ( sizes.count() == 4 && sizes[3] < 20 ) { 4739 if ( sizes.count() == 4 && sizes[3] < 20 ) {
4740 sizes.clear(); 4740 sizes.clear();
4741 sizes << 100; 4741 sizes << 100;
4742 sizes << 0; 4742 sizes << 0;
4743 sizes << 0; 4743 sizes << 0;
4744 sizes << 100; 4744 sizes << 100;
4745 mLeftFrame->setSizes(sizes); 4745 mLeftFrame->setSizes(sizes);
4746 } 4746 }
4747#if 0 4747#if 0
4748 sizes = mLeftFrame->sizes(); 4748 sizes = mLeftFrame->sizes();
4749 int ccc = 0; 4749 int ccc = 0;
4750 while ( ccc < sizes.count()) { 4750 while ( ccc < sizes.count()) {
4751 qDebug("size %d %d ", ccc, sizes[ccc]); 4751 qDebug("size %d %d ", ccc, sizes[ccc]);
4752 ++ccc; 4752 ++ccc;
4753 } 4753 }
4754#endif 4754#endif
4755 4755
4756 } 4756 }
4757 else { 4757 else {
4758 mCalEditView->hide(); 4758 mCalEditView->hide();
4759 } 4759 }
4760#else 4760#else
4761 if (visible) mFilterView->show(); 4761 if (visible) mFilterView->show();
4762 else mFilterView->hide(); 4762 else mFilterView->hide();
4763#endif 4763#endif
4764} 4764}
4765void CalendarView::toggleFilerEnabled( ) 4765void CalendarView::toggleFilerEnabled( )
4766{ 4766{
4767 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 4767 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
4768 if ( !mFilterView->filtersEnabled() ) 4768 if ( !mFilterView->filtersEnabled() )
4769 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 4769 topLevelWidget()->setCaption( i18n("Filter disabled ") );
4770 updateUnmanagedViews(); 4770 updateUnmanagedViews();
4771 4771
4772} 4772}
4773void CalendarView::updateFilter() 4773void CalendarView::updateFilter()
4774{ 4774{
4775 CalFilter *filter = mFilterView->selectedFilter(); 4775 CalFilter *filter = mFilterView->selectedFilter();
4776 if (filter) { 4776 if (filter) {
4777 QString mess; 4777 QString mess;
4778 if (mFilterView->filtersEnabled()) { 4778 if (mFilterView->filtersEnabled()) {
4779 mess = i18n("Filter selected: ")+filter->name(); 4779 mess = i18n("Filter selected: ")+filter->name();
4780 filter->setEnabled(true); 4780 filter->setEnabled(true);
4781 } 4781 }
4782 else filter->setEnabled(false); 4782 else filter->setEnabled(false);
4783 mCalendar->setFilter(filter); 4783 mCalendar->setFilter(filter);
4784 updateView(); 4784 updateView();
4785 if ( !mess.isEmpty() ) 4785 if ( !mess.isEmpty() )
4786 topLevelWidget()->setCaption( mess ); 4786 topLevelWidget()->setCaption( mess );
4787 4787
4788 } 4788 }
4789 emit filtersUpdated(); 4789 emit filtersUpdated();
4790} 4790}
4791 4791
4792void CalendarView::filterEdited() 4792void CalendarView::filterEdited()
4793{ 4793{
4794 mFilterView->updateFilters(); 4794 mFilterView->updateFilters();
4795 updateFilter(); 4795 updateFilter();
4796 writeSettings(); 4796 writeSettings();
4797} 4797}
4798 4798
4799 4799
4800void CalendarView::takeOverEvent() 4800void CalendarView::takeOverEvent()
4801{ 4801{
4802 Incidence *incidence = currentSelection(); 4802 Incidence *incidence = currentSelection();
4803 4803
4804 if (!incidence) return; 4804 if (!incidence) return;
4805 4805
4806 incidence->setOrganizer(KOPrefs::instance()->email()); 4806 incidence->setOrganizer(KOPrefs::instance()->email());
4807 incidence->recreate(); 4807 incidence->recreate();
4808 incidence->setReadOnly(false); 4808 incidence->setReadOnly(false);
4809 4809
4810 updateView(); 4810 updateView();
4811} 4811}
4812 4812
4813void CalendarView::takeOverCalendar() 4813void CalendarView::takeOverCalendar()
4814{ 4814{
4815 // TODO: Create Calendar::allIncidences() function and use it here 4815 // TODO: Create Calendar::allIncidences() function and use it here
4816 4816
4817 clearAllViews(); 4817 clearAllViews();
4818 QPtrList<Event> events = mCalendar->events(); 4818 QPtrList<Event> events = mCalendar->events();
4819 for(uint i=0; i<events.count(); ++i) { 4819 for(uint i=0; i<events.count(); ++i) {
4820 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 4820 events.at(i)->setOrganizer(KOPrefs::instance()->email());
4821 events.at(i)->recreate(); 4821 events.at(i)->recreate();
4822 events.at(i)->setReadOnly(false); 4822 events.at(i)->setReadOnly(false);
4823 } 4823 }
4824 4824
4825 QPtrList<Todo> todos = mCalendar->todos(); 4825 QPtrList<Todo> todos = mCalendar->todos();
4826 for(uint i=0; i<todos.count(); ++i) { 4826 for(uint i=0; i<todos.count(); ++i) {
4827 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 4827 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
4828 todos.at(i)->recreate(); 4828 todos.at(i)->recreate();
4829 todos.at(i)->setReadOnly(false); 4829 todos.at(i)->setReadOnly(false);
4830 } 4830 }
4831 4831
4832 QPtrList<Journal> journals = mCalendar->journals(); 4832 QPtrList<Journal> journals = mCalendar->journals();
4833 for(uint i=0; i<journals.count(); ++i) { 4833 for(uint i=0; i<journals.count(); ++i) {
4834 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 4834 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
4835 journals.at(i)->recreate(); 4835 journals.at(i)->recreate();
4836 journals.at(i)->setReadOnly(false); 4836 journals.at(i)->setReadOnly(false);
4837 } 4837 }
4838 4838
4839 updateView(); 4839 updateView();
4840} 4840}
4841 4841
4842void CalendarView::showIntro() 4842void CalendarView::showIntro()
4843{ 4843{
4844 kdDebug() << "To be implemented." << endl; 4844 kdDebug() << "To be implemented." << endl;
4845} 4845}
4846 4846
4847QWidgetStack *CalendarView::viewStack() 4847QWidgetStack *CalendarView::viewStack()
4848{ 4848{
4849 return mRightFrame; 4849 return mRightFrame;
4850} 4850}
4851 4851
4852QWidget *CalendarView::leftFrame() 4852QWidget *CalendarView::leftFrame()
4853{ 4853{
4854 return ( QWidget *)mLeftFrame; 4854 return ( QWidget *)mLeftFrame;
4855} 4855}
4856 4856
4857DateNavigator *CalendarView::dateNavigator() 4857DateNavigator *CalendarView::dateNavigator()
4858{ 4858{
4859 return mNavigator; 4859 return mNavigator;
4860} 4860}
4861 4861
4862KDateNavigator* CalendarView::dateNavigatorWidget() 4862KDateNavigator* CalendarView::dateNavigatorWidget()
4863{ 4863{
4864 return mDateNavigator->navigatorView(); 4864 return mDateNavigator->navigatorView();
4865} 4865}
4866void CalendarView::toggleDateNavigatorWidget() 4866void CalendarView::toggleDateNavigatorWidget()
4867{ 4867{
4868 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 4868 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
4869 4869
4870 if (!KOPrefs::instance()->mShowDateNavigator ) 4870 if (!KOPrefs::instance()->mShowDateNavigator )
4871 mDateNavigator->hide(); 4871 mDateNavigator->hide();
4872 else 4872 else
4873 mDateNavigator->show(); 4873 mDateNavigator->show();
4874} 4874}
4875void CalendarView::addView(KOrg::BaseView *view) 4875void CalendarView::addView(KOrg::BaseView *view)
4876{ 4876{
4877 mViewManager->addView(view); 4877 mViewManager->addView(view);
4878} 4878}
4879 4879
4880void CalendarView::showView(KOrg::BaseView *view) 4880void CalendarView::showView(KOrg::BaseView *view)
4881{ 4881{
4882 mViewManager->showView(view, mLeftFrame->isVisible()); 4882 mViewManager->showView(view, mLeftFrame->isVisible());
4883} 4883}
4884 4884
4885Incidence *CalendarView::currentSelection() 4885Incidence *CalendarView::currentSelection()
4886{ 4886{
4887 return mViewManager->currentSelection(); 4887 return mViewManager->currentSelection();
4888} 4888}
4889void CalendarView::toggleAllDaySize() 4889void CalendarView::toggleAllDaySize()
4890{ 4890{
4891 /* 4891 /*
4892 if ( KOPrefs::instance()->mAllDaySize > 47 ) 4892 if ( KOPrefs::instance()->mAllDaySize > 47 )
4893 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 4893 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
4894 else 4894 else
4895 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 4895 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
4896 */ 4896 */
4897 viewManager()->agendaView()->toggleAllDay(); 4897 viewManager()->agendaView()->toggleAllDay();
4898} 4898}
4899void CalendarView::toggleExpand() 4899void CalendarView::toggleExpand()
4900{ 4900{
4901 // if ( mLeftFrame->isHidden() ) { 4901 // if ( mLeftFrame->isHidden() ) {
4902 // mLeftFrame->show(); 4902 // mLeftFrame->show();
4903 // emit calendarViewExpanded( false ); 4903 // emit calendarViewExpanded( false );
4904 // } else { 4904 // } else {
4905 // mLeftFrame->hide(); 4905 // mLeftFrame->hide();
4906 // emit calendarViewExpanded( true ); 4906 // emit calendarViewExpanded( true );
4907 // } 4907 // }
4908 //qDebug(" CalendarView::toggleExpand()"); 4908 //qDebug(" CalendarView::toggleExpand()");
4909 globalFlagBlockAgenda = 1; 4909 globalFlagBlockAgenda = 1;
4910 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 4910 emit calendarViewExpanded( !mLeftFrame->isHidden() );
4911 globalFlagBlockAgenda = 5; 4911 globalFlagBlockAgenda = 5;
4912 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 4912 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
4913 //mViewManager->showView( 0, true ); 4913 //mViewManager->showView( 0, true );
4914} 4914}
4915 4915
4916void CalendarView::calendarModified( bool modified, Calendar * ) 4916void CalendarView::calendarModified( bool modified, Calendar * )
4917{ 4917{
4918 setModified( modified ); 4918 setModified( modified );
4919} 4919}
4920 4920
4921Todo *CalendarView::selectedTodo() 4921Todo *CalendarView::selectedTodo()
4922{ 4922{
4923 Incidence *incidence = currentSelection(); 4923 Incidence *incidence = currentSelection();
4924 if ( incidence && incidence->typeID() == todoID ) { 4924 if ( incidence && incidence->typeID() == todoID ) {
4925 return static_cast<Todo *>( incidence ); 4925 return static_cast<Todo *>( incidence );
4926 } 4926 }
4927 4927
4928 incidence = mTodoList->selectedIncidences().first(); 4928 incidence = mTodoList->selectedIncidences().first();
4929 if ( incidence && incidence->typeID() == todoID ) { 4929 if ( incidence && incidence->typeID() == todoID ) {
4930 return static_cast<Todo *>( incidence ); 4930 return static_cast<Todo *>( incidence );
4931 } 4931 }
4932 4932
4933 return 0; 4933 return 0;
4934} 4934}
4935 4935
4936void CalendarView::showIncidence() 4936void CalendarView::showIncidence()
4937{ 4937{
4938 mViewerCallerIsSearchDialog = false; 4938 mViewerCallerIsSearchDialog = false;
4939 Incidence *incidence = currentSelection(); 4939 Incidence *incidence = currentSelection();
4940 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4940 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4941 if ( incidence ) { 4941 if ( incidence ) {
4942 ShowIncidenceVisitor v; 4942 ShowIncidenceVisitor v;
4943 v.act( incidence, this ); 4943 v.act( incidence, this );
4944 } 4944 }
4945} 4945}
4946void CalendarView::editIncidenceDescription() 4946void CalendarView::editIncidenceDescription()
4947{ 4947{
4948 mFlagEditDescription = true; 4948 mFlagEditDescription = true;
4949 editIncidence(); 4949 editIncidence();
4950 mFlagEditDescription = false; 4950 mFlagEditDescription = false;
4951} 4951}
4952void CalendarView::editIncidence() 4952void CalendarView::editIncidence()
4953{ 4953{
4954 // qDebug("editIncidence() "); 4954 // qDebug("editIncidence() ");
4955 Incidence *incidence = currentSelection(); 4955 Incidence *incidence = currentSelection();
4956 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4956 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4957 if ( incidence ) { 4957 if ( incidence ) {
4958 EditIncidenceVisitor v; 4958 EditIncidenceVisitor v;
4959 v.act( incidence, this ); 4959 v.act( incidence, this );
4960 } 4960 }
4961} 4961}
4962 4962
4963void CalendarView::deleteIncidence() 4963void CalendarView::deleteIncidence()
4964{ 4964{
4965 Incidence *incidence = currentSelection(); 4965 Incidence *incidence = currentSelection();
4966 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4966 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4967 if ( incidence ) { 4967 if ( incidence ) {
4968 deleteIncidence(incidence); 4968 deleteIncidence(incidence);
4969 } 4969 }
4970} 4970}
4971void CalendarView::showIncidence(QString uid) 4971void CalendarView::showIncidence(QString uid)
4972{ 4972{
4973 Incidence *inc = mCalendar->incidence( uid ); 4973 Incidence *inc = mCalendar->incidence( uid );
4974 if ( inc ) 4974 if ( inc )
4975 showIncidence( inc ); 4975 showIncidence( inc );
4976} 4976}
4977void CalendarView::showIncidence(Incidence *incidence) 4977void CalendarView::showIncidence(Incidence *incidence)
4978{ 4978{
4979 mViewerCallerIsSearchDialog = false; 4979 mViewerCallerIsSearchDialog = false;
4980 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4980 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4981 if ( sender() && mDialogManager->getSearchDialog() ) { 4981 if ( sender() && mDialogManager->getSearchDialog() ) {
4982 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4982 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4983 mViewerCallerIsSearchDialog = true; 4983 mViewerCallerIsSearchDialog = true;
4984 } 4984 }
4985 } 4985 }
4986 if ( incidence ) { 4986 if ( incidence ) {
4987 ShowIncidenceVisitor v; 4987 ShowIncidenceVisitor v;
4988 v.act( incidence, this ); 4988 v.act( incidence, this );
4989 } 4989 }
4990} 4990}
4991 4991
4992void CalendarView::editIncidence(Incidence *incidence) 4992void CalendarView::editIncidence(Incidence *incidence)
4993{ 4993{
4994 if ( incidence ) { 4994 if ( incidence ) {
4995 4995
4996 EditIncidenceVisitor v; 4996 EditIncidenceVisitor v;
4997 v.act( incidence, this ); 4997 v.act( incidence, this );
4998 4998
4999 } 4999 }
5000} 5000}
5001 5001
5002void CalendarView::deleteIncidence(Incidence *incidence) 5002void CalendarView::deleteIncidence(Incidence *incidence)
5003{ 5003{
5004 //qDebug(" CalendarView::deleteIncidence "); 5004 //qDebug(" CalendarView::deleteIncidence ");
5005 if ( incidence == 0 ) { 5005 if ( incidence == 0 ) {
5006 updateView(); 5006 updateView();
5007 emit updateSearchDialog(); 5007 emit updateSearchDialog();
5008 return; 5008 return;
5009 } 5009 }
5010 if ( incidence ) { 5010 if ( incidence ) {
5011 DeleteIncidenceVisitor v; 5011 DeleteIncidenceVisitor v;
5012 v.act( incidence, this ); 5012 v.act( incidence, this );
5013 } 5013 }
5014} 5014}
5015 5015
5016 5016
5017void CalendarView::lookForOutgoingMessages() 5017void CalendarView::lookForOutgoingMessages()
5018{ 5018{
5019 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 5019 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
5020 ogd->loadMessages(); 5020 ogd->loadMessages();
5021} 5021}
5022 5022
5023void CalendarView::lookForIncomingMessages() 5023void CalendarView::lookForIncomingMessages()
5024{ 5024{
5025 IncomingDialog *icd = mDialogManager->incomingDialog(); 5025 IncomingDialog *icd = mDialogManager->incomingDialog();
5026 icd->retrieve(); 5026 icd->retrieve();
5027} 5027}
5028 5028
5029bool CalendarView::removeCompletedSubTodos( Todo* t ) 5029bool CalendarView::removeCompletedSubTodos( Todo* t )
5030{ 5030{
5031 bool deleteTodo = true; 5031 bool deleteTodo = true;
5032 QPtrList<Incidence> subTodos; 5032 QPtrList<Incidence> subTodos;
5033 Incidence *aTodo; 5033 Incidence *aTodo;
5034 subTodos = t->relations(); 5034 subTodos = t->relations();
5035 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 5035 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
5036 if (! removeCompletedSubTodos( (Todo*) aTodo )) 5036 if (! removeCompletedSubTodos( (Todo*) aTodo ))
5037 deleteTodo = false; 5037 deleteTodo = false;
5038 } 5038 }
5039 if ( deleteTodo ) { 5039 if ( deleteTodo ) {
5040 if ( t->isCompleted() && !t->doesRecur()) { 5040 if ( t->isCompleted() && !t->doesRecur()) {
5041 checkExternalId( t ); 5041 checkExternalId( t );
5042 mCalendar->deleteTodo( t ); 5042 mCalendar->deleteTodo( t );
5043 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 5043 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
5044 } 5044 }
5045 else 5045 else
5046 deleteTodo = false; 5046 deleteTodo = false;
5047 } 5047 }
5048 return deleteTodo; 5048 return deleteTodo;
5049 5049
5050} 5050}
5051void CalendarView::purgeCompleted() 5051void CalendarView::purgeCompleted()
5052{ 5052{
5053 int result = KMessageBox::warningContinueCancel(this, 5053 int result = KMessageBox::warningContinueCancel(this,
5054 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 5054 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
5055 5055
5056 if (result == KMessageBox::Continue) { 5056 if (result == KMessageBox::Continue) {
5057 5057
5058 QPtrList<Todo> todoCal; 5058 QPtrList<Todo> todoCal;
5059 QPtrList<Todo> rootTodos; 5059 QPtrList<Todo> rootTodos;
5060 //QPtrList<Incidence> rel; 5060 //QPtrList<Incidence> rel;
5061 Todo *aTodo; 5061 Todo *aTodo;
5062 todoCal = calendar()->todos(); 5062 todoCal = calendar()->todos();
5063 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 5063 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
5064 if ( !aTodo->relatedTo() ) 5064 if ( !aTodo->relatedTo() )
5065 rootTodos.append( aTodo ); 5065 rootTodos.append( aTodo );
5066 } 5066 }
5067 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 5067 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
5068 removeCompletedSubTodos( aTodo ); 5068 removeCompletedSubTodos( aTodo );
5069 } 5069 }
5070 5070
5071 updateView(); 5071 updateView();
5072 } 5072 }
5073} 5073}
5074 5074
5075void CalendarView::slotCalendarChanged() 5075void CalendarView::slotCalendarChanged()
5076{ 5076{
5077 ; 5077 ;
5078} 5078}
5079 5079
5080void CalendarView::keyPressEvent ( QKeyEvent *e) 5080void CalendarView::keyPressEvent ( QKeyEvent *e)
5081{ 5081{
5082 //qDebug("CalendarView::keyPressEvent "); 5082 //qDebug("CalendarView::keyPressEvent ");
5083 e->ignore(); 5083 e->ignore();
5084} 5084}
5085 5085
5086void CalendarView::multiResourceSyncStart( bool start ) 5086void CalendarView::multiResourceSyncStart( bool start )
5087{ 5087{
5088 mMultiResourceSync = start; 5088 mMultiResourceSync = start;
5089 5089
5090} 5090}
5091bool CalendarView::sync(KSyncManager* manager, QString filename, int mode,QString resource) 5091bool CalendarView::sync(KSyncManager* manager, QString filename, int mode,QString resource)
5092{ 5092{
5093 5093
5094 if ( manager != mSyncManager) 5094 if ( manager != mSyncManager)
5095 qDebug("KO: Internal error-1. SyncManager mismatch "); 5095 qDebug("KO: Internal error-1. SyncManager mismatch ");
5096 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 5096 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
5097 qDebug("KO: SyncKDE request detected!"); 5097 qDebug("KO: SyncKDE request detected!");
5098 } 5098 }
5099 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 5099 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
5100 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 5100 mCurrentSyncName = mSyncManager->getCurrentSyncName();
5101 if ( !resource.isEmpty() ) { 5101 if ( !resource.isEmpty() ) {
5102 int exclusiveSyncResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 5102 int exclusiveSyncResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
5103 qDebug( "KO: Sync request for resource: %s", resource.latin1() ); 5103 qDebug( "KO: Sync request for resource: %s", resource.latin1() );
5104 5104
5105 if ( !exclusiveSyncResource ) { 5105 if ( !exclusiveSyncResource ) {
5106 qDebug( "KO: Requested sync resource not found: %s", resource.latin1() ); 5106 qDebug( "KO: Requested sync resource not found: %s", resource.latin1() );
5107 return false; 5107 return false;
5108 } 5108 }
5109 mCalendar->setDefaultCalendar( exclusiveSyncResource ); 5109 mCalendar->setDefaultCalendar( exclusiveSyncResource );
5110 mCalendar->setDefaultCalendarEnabledOnly(); 5110 mCalendar->setDefaultCalendarEnabledOnly();
5111 } 5111 }
5112 bool result = syncCalendar( filename, mode ); 5112 bool result = syncCalendar( filename, mode );
5113 if ( !resource.isEmpty() ) 5113 if ( !resource.isEmpty() )
5114 restoreCalendarSettings(); 5114 restoreCalendarSettings();
5115 return result; 5115 return result;
5116} 5116}
5117bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 5117bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
5118{ 5118{
5119 //mSyncManager = manager; 5119 //mSyncManager = manager;
5120 if ( manager != mSyncManager) 5120 if ( manager != mSyncManager)
5121 qDebug("KO: Internal error-2. SyncManager mismatch "); 5121 qDebug("KO: Internal error-2. SyncManager mismatch ");
5122 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 5122 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
5123 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 5123 mCurrentSyncName = mSyncManager->getCurrentSyncName();
5124 if ( resource == "sharp" ) 5124 if ( resource == "sharp" )
5125 syncExternal( 0 ); 5125 syncExternal( 0 );
5126 if ( resource == "phone" ) 5126 if ( resource == "phone" )
5127 syncExternal( 1 ); 5127 syncExternal( 1 );
5128 // pending setmodified 5128 // pending setmodified
5129 return true; 5129 return true;
5130} 5130}
5131void CalendarView::setSyncManager(KSyncManager* manager) 5131void CalendarView::setSyncManager(KSyncManager* manager)
5132{ 5132{
5133 mSyncManager = manager; 5133 mSyncManager = manager;
5134} 5134}
5135 5135
5136void CalendarView::removeSyncInfo( QString syncProfile) 5136void CalendarView::removeSyncInfo( QString syncProfile)
5137{ 5137{
5138 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 5138 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
5139 mCalendar->removeSyncInfo( syncProfile ); 5139 mCalendar->removeSyncInfo( syncProfile );
5140 5140
5141} 5141}
5142 5142
5143void CalendarView::undo_delete() 5143void CalendarView::undo_delete()
5144{ 5144{
5145 //qDebug("undo_delete() "); 5145 //qDebug("undo_delete() ");
5146 Incidence* undo = mCalendar->undoIncidence(); 5146 Incidence* undo = mCalendar->undoIncidence();
5147 if ( !undo ) { 5147 if ( !undo ) {
5148 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 5148 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
5149 i18n("KO/Pi")); 5149 i18n("KO/Pi"));
5150 return; 5150 return;
5151 } 5151 }
5152 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) + 5152 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) +
5153 i18n("\nAre you sure you want\nto restore this?"), 5153 i18n("\nAre you sure you want\nto restore this?"),
5154 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 5154 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
5155 mCalendar->undoDeleteIncidence(); 5155 mCalendar->undoDeleteIncidence();
5156 updateView(); 5156 updateView();
5157 } 5157 }
5158} 5158}
5159 5159
5160void CalendarView::slotViewerClosed() 5160void CalendarView::slotViewerClosed()
5161{ 5161{
5162 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 5162 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
5163} 5163}
5164 5164
5165void CalendarView::resetFocus() 5165void CalendarView::resetFocus()
5166{ 5166{
5167 if ( mViewerCallerIsSearchDialog ) { 5167 if ( mViewerCallerIsSearchDialog ) {
5168 if ( mDialogManager->getSearchDialog()->isVisible() ){ 5168 if ( mDialogManager->getSearchDialog()->isVisible() ){
5169 mDialogManager->getSearchDialog()->raise(); 5169 mDialogManager->getSearchDialog()->raise();
5170 mDialogManager->getSearchDialog()->setActiveWindow(); 5170 mDialogManager->getSearchDialog()->setActiveWindow();
5171 mDialogManager->getSearchDialog()->listview()->resetFocus(); 5171 mDialogManager->getSearchDialog()->listview()->resetFocus();
5172 } else 5172 } else
5173 mViewerCallerIsSearchDialog = false; 5173 mViewerCallerIsSearchDialog = false;
5174 } 5174 }
5175 if ( !mViewerCallerIsSearchDialog ) { 5175 if ( !mViewerCallerIsSearchDialog ) {
5176 //mViewManager->currentView()->setFocus(); 5176 //mViewManager->currentView()->setFocus();
5177 //qDebug("sssssssssssssssset focus "); 5177 //qDebug("sssssssssssssssset focus ");
5178 topLevelWidget()->raise(); 5178 topLevelWidget()->raise();
5179 setActiveWindow(); 5179 setActiveWindow();
5180 //setFocus(); 5180 //setFocus();
5181 } 5181 }
5182 mViewerCallerIsSearchDialog = false; 5182 mViewerCallerIsSearchDialog = false;
5183} 5183}
5184 5184
5185void CalendarView::showNextAlarms() 5185void CalendarView::showNextAlarms()
5186{ 5186{
5187 QString message; 5187 QString message;
5188 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 5188 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
5189 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 5189 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
5190 QString sum = mCalendar->nextSummary(); 5190 QString sum = mCalendar->nextSummary();
5191 QDateTime nextA = mNextAlarmDateTime; 5191 QDateTime nextA = mNextAlarmDateTime;
5192 QDateTime cur = QDateTime::currentDateTime(); 5192 QDateTime cur = QDateTime::currentDateTime();
5193 int secs = cur.secsTo( nextA ); 5193 int secs = cur.secsTo( nextA );
5194 int min = secs /60; 5194 int min = secs /60;
5195 int hours = min /60; 5195 int hours = min /60;
5196 min = min % 60; 5196 min = min % 60;
5197 int days = hours /24; 5197 int days = hours /24;
5198 hours = hours % 24; 5198 hours = hours % 24;
5199 5199
5200 //message = i18n("The next alarm is in:\n"); 5200 //message = i18n("The next alarm is in:\n");
5201 if ( days > 1 ) 5201 if ( days > 1 )
5202 message += i18n("%1 days\n").arg( days ); 5202 message += i18n("%1 days\n").arg( days );
5203 else if ( days == 1 ) 5203 else if ( days == 1 )
5204 message += i18n("1 day\n"); 5204 message += i18n("1 day\n");
5205 if ( hours > 1 ) 5205 if ( hours > 1 )
5206 message += i18n("%1 hours\n").arg( hours ); 5206 message += i18n("%1 hours\n").arg( hours );
5207 else if ( hours == 1 ) 5207 else if ( hours == 1 )
5208 message += i18n("1 hour\n"); 5208 message += i18n("1 hour\n");
5209 if ( min > 1 ) 5209 if ( min > 1 )
5210 message += i18n("%1 minutes\n").arg( min ); 5210 message += i18n("%1 minutes\n").arg( min );
5211 else if ( min == 1 ) 5211 else if ( min == 1 )
5212 message += i18n("1 minute\n"); 5212 message += i18n("1 minute\n");
5213 if ( message.isEmpty() ) 5213 if ( message.isEmpty() )
5214 message = i18n("The next alarm is in\nless than one minute!"); 5214 message = i18n("The next alarm is in\nless than one minute!");
5215 else 5215 else
5216 message = i18n("The next alarm is in:\n") + message; 5216 message = i18n("The next alarm is in:\n") + message;
5217 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 5217 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
5218 } else { 5218 } else {
5219 message = i18n("There is no next alarm."); 5219 message = i18n("There is no next alarm.");
5220 5220
5221 } 5221 }
5222#ifdef DESKTOP_VERSION 5222#ifdef DESKTOP_VERSION
5223 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 5223 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
5224 message += i18n("\nThe internal alarm notification is disabled!\n"); 5224 message += i18n("\nThe internal alarm notification is disabled!\n");
5225 message += i18n("Enable it in the settings menu, TAB alarm."); 5225 message += i18n("Enable it in the settings menu, TAB alarm.");
5226 } 5226 }
5227 5227
5228#endif 5228#endif
5229 KMessageBox::information( this, message); 5229 KMessageBox::information( this, message);
5230} 5230}
5231 5231
5232void CalendarView::displayCalendarInfo( int id ) 5232void CalendarView::displayCalendarInfo( int id )
5233{ 5233{
5234 int e, t,j; 5234 int e, t,j;
5235 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id ); 5235 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
5236 QString name = kkf->mName; 5236 QString name = kkf->mName;
5237 mCalendar->getIncidenceCount( id, e, t, j ); 5237 mCalendar->getIncidenceCount( id, e, t, j );
5238 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 ); 5238 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 );
5239 QString mess = i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file); 5239 QString mess = i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file);
5240 mess += i18n("<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>").arg( e ).arg( t ).arg( j ); 5240 mess += i18n("<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>").arg( e ).arg( t ).arg( j );
5241 KMessageBox::information( this, mess ); 5241 KMessageBox::information( this, mess );
5242 5242
5243 5243
5244} 5244}