summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-08-04 04:08:59 (UTC)
committer zautrix <zautrix>2005-08-04 04:08:59 (UTC)
commit7c639808d3d78e323857e0a110237e6d77bf04c8 (patch) (unidiff)
tree793083edac43e84821257aed8782c29dfb88632f /korganizer
parentbfa3d79c4172c4a8efebb1f2801e152a3a706dca (diff)
downloadkdepimpi-7c639808d3d78e323857e0a110237e6d77bf04c8.zip
kdepimpi-7c639808d3d78e323857e0a110237e6d77bf04c8.tar.gz
kdepimpi-7c639808d3d78e323857e0a110237e6d77bf04c8.tar.bz2
fixxx
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp36
1 files changed, 25 insertions, 11 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 7566b22..d51187a 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,2594 +1,2608 @@
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 mNextAlarmDateTime = QDateTime::currentDateTime(); 369 mNextAlarmDateTime = QDateTime::currentDateTime();
370 setFocusPolicy (NoFocus ); 370 setFocusPolicy (NoFocus );
371 mViewerCallerIsSearchDialog = false; 371 mViewerCallerIsSearchDialog = false;
372 mBlockShowDates = false; 372 mBlockShowDates = false;
373 mConflictingEvent = 0; 373 mConflictingEvent = 0;
374 mDatePickerMode = 0; 374 mDatePickerMode = 0;
375 mCurrentSyncDevice = ""; 375 mCurrentSyncDevice = "";
376 mViewManager = new KOViewManager( this ); 376 mViewManager = new KOViewManager( this );
377 mDialogManager = new KODialogManager( this ); 377 mDialogManager = new KODialogManager( this );
378 mEventViewerDialog = 0; 378 mEventViewerDialog = 0;
379 mModified = false; 379 mModified = false;
380 mReadOnly = false; 380 mReadOnly = false;
381 mSelectedIncidence = 0; 381 mSelectedIncidence = 0;
382 mCalPrinter = 0; 382 mCalPrinter = 0;
383 mFilters.setAutoDelete(true); 383 mFilters.setAutoDelete(true);
384 384
385 mCalendar->registerObserver( this ); 385 mCalendar->registerObserver( this );
386 // TODO: Make sure that view is updated, when calendar is changed. 386 // TODO: Make sure that view is updated, when calendar is changed.
387 387
388 mStorage = new FileStorage( mCalendar ); 388 mStorage = new FileStorage( mCalendar );
389 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 389 mNavigator = new DateNavigator( this, "datevav", mViewManager );
390 390
391 QBoxLayout *topLayout = (QBoxLayout*)layout(); 391 QBoxLayout *topLayout = (QBoxLayout*)layout();
392#ifndef KORG_NOSPLITTER 392#ifndef KORG_NOSPLITTER
393 // create the main layout frames. 393 // create the main layout frames.
394 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 394 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
395 topLayout->addWidget(mPanner); 395 topLayout->addWidget(mPanner);
396 396
397 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 397 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
398 "CalendarView::LeftFrame"); 398 "CalendarView::LeftFrame");
399 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 399 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
400 400
401 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 401 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
402 "CalendarView::DateNavigator" ); 402 "CalendarView::DateNavigator" );
403 403
404 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 404 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
405 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 405 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
406 mTodoList->setNavigator( mNavigator ); 406 mTodoList->setNavigator( mNavigator );
407 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 407 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
408 408
409#ifdef KORG_NORESOURCEVIEW 409#ifdef KORG_NORESOURCEVIEW
410 mResourceView = 0; 410 mResourceView = 0;
411#else 411#else
412 if ( mResourceManager ) { 412 if ( mResourceManager ) {
413 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 413 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
414 mResourceView->updateView(); 414 mResourceView->updateView();
415 connect( mResourceView, SIGNAL( resourcesChanged() ), 415 connect( mResourceView, SIGNAL( resourcesChanged() ),
416 SLOT( updateView() ) ); 416 SLOT( updateView() ) );
417 } else { 417 } else {
418 mResourceView = 0; 418 mResourceView = 0;
419 } 419 }
420#endif 420#endif
421 QWidget *rightBox = new QWidget( mPanner ); 421 QWidget *rightBox = new QWidget( mPanner );
422 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 422 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
423 423
424 mRightFrame = new QWidgetStack( rightBox ); 424 mRightFrame = new QWidgetStack( rightBox );
425 rightLayout->addWidget( mRightFrame, 1 ); 425 rightLayout->addWidget( mRightFrame, 1 );
426 426
427 mLeftFrame = mLeftSplitter; 427 mLeftFrame = mLeftSplitter;
428#else 428#else
429 //QWidget *mainBox = new QWidget( this ); 429 //QWidget *mainBox = new QWidget( this );
430 //QWidget *leftFrame = new QWidget( mainBox ); 430 //QWidget *leftFrame = new QWidget( mainBox );
431 //QBoxLayout * mainBoxLayout; 431 //QBoxLayout * mainBoxLayout;
432 if ( KOPrefs::instance()->mVerticalScreen ) { 432 if ( KOPrefs::instance()->mVerticalScreen ) {
433 //mainBoxLayout = new QVBoxLayout(mainBox); 433 //mainBoxLayout = new QVBoxLayout(mainBox);
434 //leftFrameLayout = new QHBoxLayout(leftFrame ); 434 //leftFrameLayout = new QHBoxLayout(leftFrame );
435 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 435 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
436 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 436 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
437 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 437 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
438 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 438 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
439 } else { 439 } else {
440 //mainBoxLayout = new QHBoxLayout(mainBox); 440 //mainBoxLayout = new QHBoxLayout(mainBox);
441 //leftFrameLayout = new QVBoxLayout(leftFrame ); 441 //leftFrameLayout = new QVBoxLayout(leftFrame );
442 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 442 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
443 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 443 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
444 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 444 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
445 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 445 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
446 } 446 }
447 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 447 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
448 //QBoxLayout * leftFrameLayout; 448 //QBoxLayout * leftFrameLayout;
449 topLayout->addWidget( mMainFrame ); 449 topLayout->addWidget( mMainFrame );
450#ifdef DESKTOP_VERSION 450#ifdef DESKTOP_VERSION
451 mDateScrollBar = new QScrollBar ( 1, 365, 1,30, 200,QScrollBar::Horizontal, this ); 451 mDateScrollBar = new QScrollBar ( 1, 365, 1,30, 200,QScrollBar::Horizontal, this );
452 topLayout->addWidget( mDateScrollBar ); 452 topLayout->addWidget( mDateScrollBar );
453 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) ); 453 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) );
454 if ( QApplication::desktop()->width() < 800 ) 454 if ( QApplication::desktop()->width() < 800 )
455 mDateScrollBar->hide(); 455 mDateScrollBar->hide();
456#endif 456#endif
457 //mainBoxLayout->addWidget (mLeftFrame); 457 //mainBoxLayout->addWidget (mLeftFrame);
458 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 458 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
459 "CalendarView::DateNavigator" ); 459 "CalendarView::DateNavigator" );
460#if 0 460#if 0
461 // FIXME 461 // FIXME
462 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 462 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
463 "CalendarView::DateNavigator", QDate::currentDate()); 463 "CalendarView::DateNavigator", QDate::currentDate());
464#endif 464#endif
465 // mDateNavigator->blockSignals( true ); 465 // mDateNavigator->blockSignals( true );
466 //leftFrameLayout->addWidget( mDateNavigator ); 466 //leftFrameLayout->addWidget( mDateNavigator );
467 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 467 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
468 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 468 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
469 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 469 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
470 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 470 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
471 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 471 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
472 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) ); 472 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) );
473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
474 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) ); 474 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) );
475 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) ); 475 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
476 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) ); 476 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
477 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) ); 477 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
478 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() )); 478 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() ));
479 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) ); 479 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) );
480 480
481 mTodoList->setNavigator( mNavigator ); 481 mTodoList->setNavigator( mNavigator );
482#if 0 482#if 0
483 if ( QApplication::desktop()->width() < 480 ) { 483 if ( QApplication::desktop()->width() < 480 ) {
484 leftFrameLayout->addWidget(mFilterView); 484 leftFrameLayout->addWidget(mFilterView);
485 leftFrameLayout->addWidget(mTodoList, 2 ); 485 leftFrameLayout->addWidget(mTodoList, 2 );
486 486
487 } else { 487 } else {
488 leftFrameLayout->addWidget(mTodoList,2 ); 488 leftFrameLayout->addWidget(mTodoList,2 );
489 leftFrameLayout->addWidget(mFilterView ); 489 leftFrameLayout->addWidget(mFilterView );
490 } 490 }
491#endif 491#endif
492 mFilterView->hide(); 492 mFilterView->hide();
493 mCalEditView->hide(); 493 mCalEditView->hide();
494 QWidget *rightBox = new QWidget( mMainFrame ); 494 QWidget *rightBox = new QWidget( mMainFrame );
495 //mainBoxLayout->addWidget ( rightBox, 10 ); 495 //mainBoxLayout->addWidget ( rightBox, 10 );
496 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 496 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
497 mRightFrame = new QWidgetStack( rightBox ); 497 mRightFrame = new QWidgetStack( rightBox );
498 rightLayout->addWidget( mRightFrame, 10 ); 498 rightLayout->addWidget( mRightFrame, 10 );
499 499
500 //mLeftFrame = (QWidget *)leftFrame; 500 //mLeftFrame = (QWidget *)leftFrame;
501 if ( KOPrefs::instance()->mVerticalScreen ) { 501 if ( KOPrefs::instance()->mVerticalScreen ) {
502 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 502 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
503 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 503 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
504 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 504 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
505 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 505 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
506 } else { 506 } else {
507 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 507 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
508 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 508 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
509 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 509 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
510 } 510 }
511 if ( !KOPrefs::instance()->mShowDateNavigator) 511 if ( !KOPrefs::instance()->mShowDateNavigator)
512 mDateNavigator->hide(); 512 mDateNavigator->hide();
513 //qDebug("Calendarview Size %d %d ", width(), height()); 513 //qDebug("Calendarview Size %d %d ", width(), height());
514#endif 514#endif
515 515
516 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 516 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
517 SLOT( showDates( const KCal::DateList & ) ) ); 517 SLOT( showDates( const KCal::DateList & ) ) );
518 518
519 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 519 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
520 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 520 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
521 521
522 522
523 523
524 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 524 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
525 mViewManager, SLOT( showMonth( const QDate & ) ) ); 525 mViewManager, SLOT( showMonth( const QDate & ) ) );
526 526
527 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 527 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
528 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 528 mNavigator, SLOT( selectWeek( const QDate & ) ) );
529 529
530 connect( mDateNavigator, SIGNAL( goPrevYear() ), 530 connect( mDateNavigator, SIGNAL( goPrevYear() ),
531 mNavigator, SLOT( selectPreviousYear() ) ); 531 mNavigator, SLOT( selectPreviousYear() ) );
532 connect( mDateNavigator, SIGNAL( goNextYear() ), 532 connect( mDateNavigator, SIGNAL( goNextYear() ),
533 mNavigator, SLOT( selectNextYear() ) ); 533 mNavigator, SLOT( selectNextYear() ) );
534 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 534 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
535 mNavigator, SLOT( selectPreviousMonth() ) ); 535 mNavigator, SLOT( selectPreviousMonth() ) );
536 connect( mDateNavigator, SIGNAL( goNextMonth() ), 536 connect( mDateNavigator, SIGNAL( goNextMonth() ),
537 mNavigator, SLOT( selectNextMonth() ) ); 537 mNavigator, SLOT( selectNextMonth() ) );
538 538
539 connect( mDateNavigator, SIGNAL( goPrevious() ), 539 connect( mDateNavigator, SIGNAL( goPrevious() ),
540 mNavigator, SLOT( selectPrevious() ) ); 540 mNavigator, SLOT( selectPrevious() ) );
541 connect( mDateNavigator, SIGNAL( goNext() ), 541 connect( mDateNavigator, SIGNAL( goNext() ),
542 mNavigator, SLOT( selectNext() ) ); 542 mNavigator, SLOT( selectNext() ) );
543 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 543 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
544 mNavigator, SLOT( slotMonthSelect( int ) ) ); 544 mNavigator, SLOT( slotMonthSelect( int ) ) );
545 545
546 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 546 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
547 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 547 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
548#if 0 548#if 0
549 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 549 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
550 SLOT( incidenceAdded( Incidence *) ) ); 550 SLOT( incidenceAdded( Incidence *) ) );
551#endif 551#endif
552 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 552 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
553 553
554 connect( this, SIGNAL( configChanged() ), 554 connect( this, SIGNAL( configChanged() ),
555 mDateNavigator, SLOT( updateConfig() ) ); 555 mDateNavigator, SLOT( updateConfig() ) );
556 556
557 connect( mTodoList, SIGNAL( newTodoSignal() ), 557 connect( mTodoList, SIGNAL( newTodoSignal() ),
558 SLOT( newTodo() ) ); 558 SLOT( newTodo() ) );
559 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 559 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
560 SLOT( newSubTodo( Todo * ) ) ); 560 SLOT( newSubTodo( Todo * ) ) );
561 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 561 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
562 SLOT( editTodo( Todo * ) ) ); 562 SLOT( editTodo( Todo * ) ) );
563 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 563 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
564 SLOT( showTodo( Todo *) ) ); 564 SLOT( showTodo( Todo *) ) );
565 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 565 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
566 SLOT( deleteTodo( Todo *) ) ); 566 SLOT( deleteTodo( Todo *) ) );
567 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 567 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
568 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 568 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
569 SLOT( purgeCompleted() ) ); 569 SLOT( purgeCompleted() ) );
570 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 570 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
571 SIGNAL( todoModified( Todo *, int ) ) ); 571 SIGNAL( todoModified( Todo *, int ) ) );
572 572
573 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 573 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
574 this, SLOT ( cloneIncidence( Incidence * ) ) ); 574 this, SLOT ( cloneIncidence( Incidence * ) ) );
575 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 575 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
576 this, SLOT (cancelIncidence( Incidence * ) ) ); 576 this, SLOT (cancelIncidence( Incidence * ) ) );
577 577
578 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 578 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
579 this, SLOT ( moveIncidence( Incidence * ) ) ); 579 this, SLOT ( moveIncidence( Incidence * ) ) );
580 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 580 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
581 this, SLOT ( beamIncidence( Incidence * ) ) ); 581 this, SLOT ( beamIncidence( Incidence * ) ) );
582 582
583 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 583 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
584 this, SLOT ( todo_unsub( Todo * ) ) ); 584 this, SLOT ( todo_unsub( Todo * ) ) );
585 585
586 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 586 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
587 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 587 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
588 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 588 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
589 SLOT( updateTodo( Todo *, int ) ) ); 589 SLOT( updateTodo( Todo *, int ) ) );
590 connect( this, SIGNAL( todoModified( Todo *, int )), this, 590 connect( this, SIGNAL( todoModified( Todo *, int )), this,
591 SLOT( changeTodoDisplay( Todo *, int ) ) ); 591 SLOT( changeTodoDisplay( Todo *, int ) ) );
592 592
593 593
594 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 594 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
595 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 595 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
596 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 596 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
597 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 597 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
598 598
599 599
600 600
601 601
602 602
603 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 603 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
604 SLOT(checkClipboard())); 604 SLOT(checkClipboard()));
605 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 605 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
606 SLOT( processTodoListSelection( Incidence * ) ) ); 606 SLOT( processTodoListSelection( Incidence * ) ) );
607 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 607 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
608 608
609 // kdDebug() << "CalendarView::CalendarView() done" << endl; 609 // kdDebug() << "CalendarView::CalendarView() done" << endl;
610 610
611 mDateFrame = new QVBox(0,0,WType_Popup); 611 mDateFrame = new QVBox(0,0,WType_Popup);
612 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 612 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
613 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 613 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
614 mDateFrame->setLineWidth(3); 614 mDateFrame->setLineWidth(3);
615 mDateFrame->hide(); 615 mDateFrame->hide();
616 mDateFrame->setCaption( i18n( "Pick a date to display")); 616 mDateFrame->setCaption( i18n( "Pick a date to display"));
617 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 617 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
618 618
619 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 619 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
620 620
621 mEventEditor = mDialogManager->getEventEditor(); 621 mEventEditor = mDialogManager->getEventEditor();
622 mTodoEditor = mDialogManager->getTodoEditor(); 622 mTodoEditor = mDialogManager->getTodoEditor();
623 623
624 mFlagEditDescription = false; 624 mFlagEditDescription = false;
625 625
626 mSuspendTimer = new QTimer( this ); 626 mSuspendTimer = new QTimer( this );
627 mAlarmTimer = new QTimer( this ); 627 mAlarmTimer = new QTimer( this );
628 mRecheckAlarmTimer = new QTimer( this ); 628 mRecheckAlarmTimer = new QTimer( this );
629 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 629 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
630 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 630 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
631 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 631 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
632 mAlarmDialog = new AlarmDialog( this ); 632 mAlarmDialog = new AlarmDialog( this );
633 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 633 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
634 mAlarmDialog->setServerNotification( false ); 634 mAlarmDialog->setServerNotification( false );
635 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 635 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
636 636
637 637
638#ifndef DESKTOP_VERSION 638#ifndef DESKTOP_VERSION
639//US listen for arriving address resultsets 639//US listen for arriving address resultsets
640 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 640 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
641 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 641 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
642#endif 642#endif
643 mDateNavigator->setCalendar( mCalendar ); 643 mDateNavigator->setCalendar( mCalendar );
644} 644}
645 645
646 646
647CalendarView::~CalendarView() 647CalendarView::~CalendarView()
648{ 648{
649 // kdDebug() << "~CalendarView()" << endl; 649 // kdDebug() << "~CalendarView()" << endl;
650 //qDebug("CalendarView::~CalendarView() "); 650 //qDebug("CalendarView::~CalendarView() ");
651 delete mDialogManager; 651 delete mDialogManager;
652 delete mViewManager; 652 delete mViewManager;
653 delete mStorage; 653 delete mStorage;
654 delete mDateFrame ; 654 delete mDateFrame ;
655 delete mEventViewerDialog; 655 delete mEventViewerDialog;
656 //kdDebug() << "~CalendarView() done" << endl; 656 //kdDebug() << "~CalendarView() done" << endl;
657} 657}
658 658
659 659
660void CalendarView::nextConflict( bool all, bool allday ) 660void CalendarView::nextConflict( bool all, bool allday )
661{ 661{
662 static bool block = false; 662 static bool block = false;
663 if ( block ) return; 663 if ( block ) return;
664 block = true; 664 block = true;
665 QPtrList<Event> testlist = mCalendar->events(); 665 QPtrList<Event> testlist = mCalendar->events();
666 Event * test = testlist.first(); 666 Event * test = testlist.first();
667 while ( test ) { 667 while ( test ) {
668 test->setTagged( false ); 668 test->setTagged( false );
669 test = testlist.next(); 669 test = testlist.next();
670 } 670 }
671 QTime st ( 0,0,0); 671 QTime st ( 0,0,0);
672 if ( mViewManager->currentView() == mViewManager->agendaView() ) 672 if ( mViewManager->currentView() == mViewManager->agendaView() )
673 st = mViewManager->agendaView()->agenda()->getEndTime(); 673 st = mViewManager->agendaView()->agenda()->getEndTime();
674 //qDebug("time %s ", st.toString().latin1()); 674 //qDebug("time %s ", st.toString().latin1());
675 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st); 675 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st);
676 QDateTime conflict; 676 QDateTime conflict;
677 QDateTime retVal; 677 QDateTime retVal;
678 bool found = false; 678 bool found = false;
679 Event * cE = 0; 679 Event * cE = 0;
680 Event * cE2 = 0; 680 Event * cE2 = 0;
681 QPtrList<Event> testlist2 = testlist; 681 QPtrList<Event> testlist2 = testlist;
682 test = testlist.first(); 682 test = testlist.first();
683 bool skip = false; 683 bool skip = false;
684 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 684 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
685 //QTime tm; 685 //QTime tm;
686 //tm.start(); 686 //tm.start();
687 while ( test ) { 687 while ( test ) {
688 qApp->processEvents(); 688 qApp->processEvents();
689 skip = false; 689 skip = false;
690 if ( !all ) skip = ( allday != test->doesFloat() ); 690 if ( !all ) skip = ( allday != test->doesFloat() );
691 if ( !skip ) { 691 if ( !skip ) {
692 if ( found ) 692 if ( found )
693 skip = !test->matchTime( &startDT, &conflict ); 693 skip = !test->matchTime( &startDT, &conflict );
694 else 694 else
695 skip = !test->matchTime( &startDT, 0 ); 695 skip = !test->matchTime( &startDT, 0 );
696 } 696 }
697 if ( !skip ) { 697 if ( !skip ) {
698 Event * test2 = testlist2.first(); 698 Event * test2 = testlist2.first();
699 while ( test2 ) { 699 while ( test2 ) {
700 skip = test2->isTagged(); 700 skip = test2->isTagged();
701 if ( !skip && !all ) skip = ( allday != test2->doesFloat() ); 701 if ( !skip && !all ) skip = ( allday != test2->doesFloat() );
702 if ( !skip ) { 702 if ( !skip ) {
703 if ( found ) 703 if ( found )
704 skip = !test2->matchTime( &startDT, &conflict ); 704 skip = !test2->matchTime( &startDT, &conflict );
705 else 705 else
706 skip = !test2->matchTime( &startDT, 0 ); 706 skip = !test2->matchTime( &startDT, 0 );
707 } 707 }
708 if ( !skip ) { 708 if ( !skip ) {
709 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) { 709 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
710 //qDebug("overlap "); 710 //qDebug("overlap ");
711 if ( ! found ) { 711 if ( ! found ) {
712 if ( retVal >= startDT ) { 712 if ( retVal >= startDT ) {
713 conflict = retVal; 713 conflict = retVal;
714 cE = test; 714 cE = test;
715 cE2 = test2; 715 cE2 = test2;
716 found = true; 716 found = true;
717 } 717 }
718 } else { 718 } else {
719 if ( retVal >= startDT && retVal < conflict ) { 719 if ( retVal >= startDT && retVal < conflict ) {
720 conflict = retVal; 720 conflict = retVal;
721 cE = test; 721 cE = test;
722 cE2 = test2; 722 cE2 = test2;
723 } 723 }
724 } 724 }
725 } 725 }
726 } 726 }
727 test2 = testlist2.next(); 727 test2 = testlist2.next();
728 } 728 }
729 } 729 }
730 test->setTagged( true ); 730 test->setTagged( true );
731 test = testlist.next(); 731 test = testlist.next();
732 } 732 }
733 //qDebug("Search time : %d", tm.elapsed()); 733 //qDebug("Search time : %d", tm.elapsed());
734 if ( found ) { 734 if ( found ) {
735 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 735 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
736 mViewManager->showDayView(); 736 mViewManager->showDayView();
737 mNavigator->slotDaySelect( conflict.date() ); 737 mNavigator->slotDaySelect( conflict.date() );
738 int hour = conflict.time().hour(); 738 int hour = conflict.time().hour();
739 mViewManager->agendaView()->setStartHour( hour ); 739 mViewManager->agendaView()->setStartHour( hour );
740 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) ); 740 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
741 block = false; 741 block = false;
742 return; 742 return;
743 } 743 }
744 744
745 topLevelWidget()->setCaption( i18n("No conflict found") ); 745 topLevelWidget()->setCaption( i18n("No conflict found") );
746 //qDebug("No conflict found "); 746 //qDebug("No conflict found ");
747 block = false; 747 block = false;
748 return; 748 return;
749} 749}
750 750
751void CalendarView::conflictAll() 751void CalendarView::conflictAll()
752{ 752{
753 nextConflict ( true, true ); 753 nextConflict ( true, true );
754} 754}
755void CalendarView::conflictAllday() 755void CalendarView::conflictAllday()
756{ 756{
757 nextConflict ( false, true ); 757 nextConflict ( false, true );
758} 758}
759void CalendarView::conflictNotAll() 759void CalendarView::conflictNotAll()
760{ 760{
761 nextConflict ( false, false ); 761 nextConflict ( false, false );
762} 762}
763 763
764void CalendarView::setCalReadOnly( int id, bool readO ) 764void CalendarView::setCalReadOnly( int id, bool readO )
765{ 765{
766 if ( readO ) { 766 if ( readO ) {
767 emit save(); 767 emit save();
768 } 768 }
769 mCalendar->setReadOnly( id, readO ); 769 mCalendar->setReadOnly( id, readO );
770} 770}
771void CalendarView::setScrollBarStep(int val ) 771void CalendarView::setScrollBarStep(int val )
772{ 772{
773#ifdef DESKTOP_VERSION 773#ifdef DESKTOP_VERSION
774 mDateScrollBar->setLineStep ( val ); 774 mDateScrollBar->setLineStep ( val );
775#endif 775#endif
776} 776}
777void CalendarView::scrollBarValue(int val ) 777void CalendarView::scrollBarValue(int val )
778{ 778{
779#ifdef DESKTOP_VERSION 779#ifdef DESKTOP_VERSION
780 if ( QApplication::desktop()->width() < 800 ) return; 780 if ( QApplication::desktop()->width() < 800 ) return;
781 static bool block = false; 781 static bool block = false;
782 if ( block ) return; 782 if ( block ) return;
783 block = true; 783 block = true;
784 int count = mNavigator->selectedDates().count(); 784 int count = mNavigator->selectedDates().count();
785 int day = mNavigator->selectedDates().first().dayOfYear(); 785 int day = mNavigator->selectedDates().first().dayOfYear();
786 int stepdays = val; 786 int stepdays = val;
787 if ( mDateScrollBar->lineStep () <= count ) { 787 if ( mDateScrollBar->lineStep () <= count ) {
788 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 788 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
789 //qDebug("VAL %d ",val ); 789 //qDebug("VAL %d ",val );
790 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 790 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
791 stepdays = day+stepdays; 791 stepdays = day+stepdays;
792 if ( stepdays < 0 ) stepdays = 0; 792 if ( stepdays < 0 ) stepdays = 0;
793 } 793 }
794 if ( stepdays == day ) { 794 if ( stepdays == day ) {
795 block = false; 795 block = false;
796 return; 796 return;
797 } 797 }
798 int year = mNavigator->selectedDates().first().year(); 798 int year = mNavigator->selectedDates().first().year();
799 QDate d ( year,1,1 ); 799 QDate d ( year,1,1 );
800 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 800 mNavigator->selectDates( d.addDays( stepdays-1) , count );
801 block = false; 801 block = false;
802#endif 802#endif
803 803
804} 804}
805void CalendarView::updateView(const QDate &start, const QDate &end) 805void CalendarView::updateView(const QDate &start, const QDate &end)
806{ 806{
807#ifdef DESKTOP_VERSION 807#ifdef DESKTOP_VERSION
808 if ( ! mDateScrollBar->draggingSlider () ) { 808 if ( ! mDateScrollBar->draggingSlider () ) {
809 int dof = start.dayOfYear(); 809 int dof = start.dayOfYear();
810 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 810 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
811 if ( dof != mDateScrollBar->value() ) { 811 if ( dof != mDateScrollBar->value() ) {
812 mDateScrollBar->blockSignals( true ); 812 mDateScrollBar->blockSignals( true );
813 mDateScrollBar->setValue( start.dayOfYear()); 813 mDateScrollBar->setValue( start.dayOfYear());
814 mDateScrollBar->blockSignals( false ); 814 mDateScrollBar->blockSignals( false );
815 } 815 }
816 } 816 }
817#endif 817#endif
818 mTodoList->updateView(); 818 mTodoList->updateView();
819 mViewManager->updateView(start, end); 819 mViewManager->updateView(start, end);
820 //mDateNavigator->updateView(); 820 //mDateNavigator->updateView();
821} 821}
822 822
823 823
824 824
825void CalendarView::checkFiles() 825void CalendarView::checkFiles()
826{ 826{
827 QString message; 827 QString message;
828 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 828 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
829 KopiCalendarFile * cal = calendars.first(); 829 KopiCalendarFile * cal = calendars.first();
830 while ( cal ) { 830 while ( cal ) {
831 if ( cal->mErrorOnLoad ) { 831 if ( cal->mErrorOnLoad ) {
832 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 832 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
833 } 833 }
834 cal = calendars.next(); 834 cal = calendars.next();
835 } 835 }
836 if ( !message.isEmpty() ) { 836 if ( !message.isEmpty() ) {
837 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); 837 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);
838 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed")); 838 KMessageBox::error(this,message, i18n("Loding of calendar(s) failed"));
839 } 839 }
840 static bool firstTime = true; 840 static bool firstTime = true;
841 if ( firstTime ) { 841 if ( firstTime ) {
842 firstTime = false; 842 firstTime = false;
843 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 843 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
844 } 844 }
845} 845}
846void CalendarView::checkAlarms() 846void CalendarView::checkAlarms()
847{ 847{
848 KConfig *config = KOGlobals::config(); 848 KConfig *config = KOGlobals::config();
849 config->setGroup( "AppRun" ); 849 config->setGroup( "AppRun" );
850 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 850 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
851 int daysto = dt.daysTo( QDate::currentDate() ); 851 int daysto = dt.daysTo( QDate::currentDate() );
852 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 852 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
853 dt = dt.addDays( days ); 853 dt = dt.addDays( days );
854 int secto = dt.secsTo( QDateTime::currentDateTime() ); 854 int secto = dt.secsTo( QDateTime::currentDateTime() );
855 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 855 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
856 //qDebug("KO: Reading program stop %d ", secs); 856 //qDebug("KO: Reading program stop %d ", secs);
857 //secs -= ( 3600 * 24*3 ); // debug only 857 //secs -= ( 3600 * 24*3 ); // debug only
858 QDateTime latest = dt.addSecs ( secs ); 858 QDateTime latest = dt.addSecs ( secs );
859 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 859 qDebug("KO: Last termination on %s ", latest.toString().latin1());
860 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 860 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
861 QPtrList<Incidence> el = mCalendar->rawIncidences(); 861 QPtrList<Incidence> el = mCalendar->rawIncidences();
862 QPtrList<Incidence> al; 862 QPtrList<Incidence> al;
863 Incidence* inL = el.first(); 863 Incidence* inL = el.first();
864 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 864 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
865 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 865 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
866 while ( inL ) { 866 while ( inL ) {
867 bool ok = false; 867 bool ok = false;
868 int offset = 0; 868 int offset = 0;
869 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 869 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
870 if ( ok ) { 870 if ( ok ) {
871 //qDebug("OK %s",next.toString().latin1()); 871 //qDebug("OK %s",next.toString().latin1());
872 if ( next < cur ) { 872 if ( next < cur ) {
873 al.append( inL ); 873 al.append( inL );
874 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 874 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
875 } 875 }
876 } 876 }
877 inL = el.next(); 877 inL = el.next();
878 } 878 }
879 if ( al.count() ) { 879 if ( al.count() ) {
880 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 880 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
881 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 881 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
882 QVBoxLayout* lay = new QVBoxLayout( dia ); 882 QVBoxLayout* lay = new QVBoxLayout( dia );
883 lay->setSpacing( 0 ); 883 lay->setSpacing( 0 );
884 lay->setMargin( 0 ); 884 lay->setMargin( 0 );
885 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 885 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
886 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 886 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
887 lay->addWidget( matb ); 887 lay->addWidget( matb );
888 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 888 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
889 int wid = 210; 889 int wid = 210;
890 int x = QApplication::desktop()->width() - wid - 7; 890 int x = QApplication::desktop()->width() - wid - 7;
891 int y = QApplication::desktop()->height() - wid - 70; 891 int y = QApplication::desktop()->height() - wid - 70;
892 dia->setGeometry ( x,y,wid,wid); 892 dia->setGeometry ( x,y,wid,wid);
893 } else { 893 } else {
894 int si = 220; 894 int si = 220;
895 if ( QApplication::desktop()->width() > 470 ) 895 if ( QApplication::desktop()->width() > 470 )
896 si = 400; 896 si = 400;
897 dia->resize(si,si/2); 897 dia->resize(si,si/2);
898 } 898 }
899 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 899 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
900 dia->show(); 900 dia->show();
901 901
902 } 902 }
903#if 0 903#if 0
904 // for creating timetracker test data 904 // for creating timetracker test data
905 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc "); 905 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc ");
906 Todo * nt; 906 Todo * nt;
907 mCalendar->close(); 907 mCalendar->close();
908 { 908 {
909 Todo * root1 = new Todo; 909 Todo * root1 = new Todo;
910 mCalendar->addTodo( root1 ); 910 mCalendar->addTodo( root1 );
911 root1->setSummary( "Project_1"); 911 root1->setSummary( "Project1");
912 root1->setPriority( 1 ); 912 root1->setPriority( 1 );
913 root1->setCategories( QString( "Cat_Pro1") );
913 root1->setDescription( "This is a test description of a root Project" ); 914 root1->setDescription( "This is a test description of a root Project" );
914 root1->setPercentComplete( 20 ); 915 root1->setPercentComplete( 20 );
915 updateView(); 916 updateView();
916 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 917 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
917 QDateTime end = QDateTime ( QDate( 2005,8,1), QTime ( 0,0,0) ); 918 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
918 919
919 nt = new Todo; 920 nt = new Todo;
920 mCalendar->addTodo( nt ); 921 mCalendar->addTodo( nt );
921 nt->setSummary( "Planning_Project_1"); 922 nt->setSummary( "Planning Project1");
922 nt->setPriority( 1 ); 923 nt->setPriority( 1 );
923 nt->setDescription( "This is a test description of Planning_Project_1" ); 924 nt->setDescription( "This is a test description of Planning Project1" );
924 nt->setPercentComplete( 20 ); 925 nt->setPercentComplete( 20 );
926 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") );
925 927
926 928
927 Todo * sub1 = nt; 929 Todo * sub1 = nt;
928 sub1->setRelatedTo( root1 ); 930 sub1->setRelatedTo( root1 );
929 931
930 nt = new Todo; 932 nt = new Todo;
931 mCalendar->addTodo( nt ); 933 mCalendar->addTodo( nt );
932 nt->setSummary( "Planning_Project_1: Lutz"); 934 nt->setSummary( "Planning Project1: Lutz");
933 nt->setPriority( 1 ); 935 nt->setPriority( 1 );
934 nt->setDescription( "This todo counts the actual work of a person on a project" ); 936 nt->setDescription( "This todo counts the actual work of a person on a project" );
935 nt->setPercentComplete( 20 ); 937 nt->setPercentComplete( 20 );
938 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") );
936 Todo * workLutz11 = nt; 939 Todo * workLutz11 = nt;
937 workLutz11->setRelatedTo( sub1 ); 940 workLutz11->setRelatedTo( sub1 );
938 941
939 nt = new Todo; 942 nt = new Todo;
940 mCalendar->addTodo( nt ); 943 mCalendar->addTodo( nt );
941 nt->setSummary( "Planning_Project_1: Norbert"); 944 nt->setSummary( "Planning Project1: Norbert");
942 nt->setPriority( 1 ); 945 nt->setPriority( 1 );
943 nt->setDescription( "This todo counts the actual work of a person on a project" ); 946 nt->setDescription( "This todo counts the actual work of a person on a project" );
944 nt->setPercentComplete( 20 ); 947 nt->setPercentComplete( 20 );
948 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") );
945 Todo * workNorbert11 = nt; 949 Todo * workNorbert11 = nt;
946 workNorbert11->setRelatedTo( sub1 ); 950 workNorbert11->setRelatedTo( sub1 );
947 951
948 nt = new Todo; 952 nt = new Todo;
949 mCalendar->addTodo( nt ); 953 mCalendar->addTodo( nt );
950 nt->setSummary( "Work on 1"); 954 nt->setSummary( "Work on 1");
951 nt->setPriority( 1 ); 955 nt->setPriority( 1 );
952 nt->setDescription( "This is a test description of Work Project_1" ); 956 nt->setDescription( "This is a test description of Work Project_1" );
957 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") );
953 nt->setPercentComplete( 20 ); 958 nt->setPercentComplete( 20 );
954 959
955 Todo * sub2 = nt; 960 Todo * sub2 = nt;
956 sub2->setRelatedTo( root1 ); 961 sub2->setRelatedTo( root1 );
957 962
958 963
959 nt = new Todo; 964 nt = new Todo;
960 mCalendar->addTodo( nt ); 965 mCalendar->addTodo( nt );
961 nt->setSummary( "Work on 1: Lutz"); 966 nt->setSummary( "Work on 1: Lutz");
962 nt->setPriority( 1 ); 967 nt->setPriority( 1 );
963 nt->setDescription( "This todo counts the actual work of a person on a project" ); 968 nt->setDescription( "This todo counts the actual work of a person on a project" );
969 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") );
964 nt->setPercentComplete( 20 ); 970 nt->setPercentComplete( 20 );
965 Todo * workLutz12 = nt; 971 Todo * workLutz12 = nt;
966 workLutz12->setRelatedTo( sub2 ); 972 workLutz12->setRelatedTo( sub2 );
967 973
968 nt = new Todo; 974 nt = new Todo;
969 mCalendar->addTodo( nt ); 975 mCalendar->addTodo( nt );
970 nt->setSummary( "Work on 1: Norbert"); 976 nt->setSummary( "Work on 1: Norbert");
971 nt->setPriority( 1 ); 977 nt->setPriority( 1 );
972 nt->setDescription( "This todo counts the actual work of a person on a project" ); 978 nt->setDescription( "This todo counts the actual work of a person on a project" );
979 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") );
973 nt->setPercentComplete( 20 ); 980 nt->setPercentComplete( 20 );
974 Todo * workNorbert12 = nt; 981 Todo * workNorbert12 = nt;
975 workNorbert12->setRelatedTo( sub2 ); 982 workNorbert12->setRelatedTo( sub2 );
976 983
977 int secLenRunning = 7200; 984 int secLenRunning = 7200;
978 int secLenPausing = 3600 * 3; 985 int secLenPausing = 3600 * 3;
979 int dayInterval = 1; 986 int dayInterval = 1;
980 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval ); 987 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval );
981 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 ); 988 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 );
982 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1); 989 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1);
983 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3); 990 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3);
984 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0); 991 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0);
985 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1); 992 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1);
986 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3); 993 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3);
987 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0); 994 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0);
988 995
989 } 996 }
990 997
991 { 998 {
992 Todo * root1 = new Todo; 999 Todo * root1 = new Todo;
993 mCalendar->addTodo( root1 ); 1000 mCalendar->addTodo( root1 );
994 root1->setSummary( "Project_2"); 1001 root1->setSummary( "Project2");
995 root1->setPriority( 1 ); 1002 root1->setPriority( 1 );
996 root1->setDescription( "This is a test description of a root Project 2" ); 1003 root1->setDescription( "This is a test description of a root Project 2" );
997 root1->setPercentComplete( 20 ); 1004 root1->setPercentComplete( 20 );
1005 root1->setCategories( QString( "Cat_Pro2") );
998 updateView(); 1006 updateView();
999 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 1007 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
1000 QDateTime end = QDateTime ( QDate( 2005,8,1), QTime ( 0,0,0) ); 1008 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
1001 int secLenRunning = 7200; 1009 int secLenRunning = 7200;
1002 int secLenPausing = 3600 * 3; 1010 int secLenPausing = 3600 * 3;
1003 int dayInterval = 1; 1011 int dayInterval = 1;
1004 1012
1005 nt = new Todo; 1013 nt = new Todo;
1006 mCalendar->addTodo( nt ); 1014 mCalendar->addTodo( nt );
1007 nt->setSummary( "Planning_Project_2"); 1015 nt->setSummary( "Planning Project2");
1008 nt->setPriority( 1 ); 1016 nt->setPriority( 1 );
1009 nt->setDescription( "This is a test description of Planning_Project_2" ); 1017 nt->setDescription( "This is a test description of Planning_Project_2" );
1018 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2") );
1010 nt->setPercentComplete( 20 ); 1019 nt->setPercentComplete( 20 );
1011 1020
1012 1021
1013 Todo * sub1 = nt; 1022 Todo * sub1 = nt;
1014 sub1->setRelatedTo( root1 ); 1023 sub1->setRelatedTo( root1 );
1015 1024
1016 nt = new Todo; 1025 nt = new Todo;
1017 mCalendar->addTodo( nt ); 1026 mCalendar->addTodo( nt );
1018 nt->setSummary( "Planning_Project_2: Lutz"); 1027 nt->setSummary( "Planning Project2: Lutz");
1019 nt->setPriority( 1 ); 1028 nt->setPriority( 1 );
1020 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1029 nt->setDescription( "This todo counts the actual work of a person on a project" );
1030 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Lutz") );
1021 nt->setPercentComplete( 20 ); 1031 nt->setPercentComplete( 20 );
1022 Todo * workLutz11 = nt; 1032 Todo * workLutz11 = nt;
1023 workLutz11->setRelatedTo( sub1 ); 1033 workLutz11->setRelatedTo( sub1 );
1024 1034
1025 nt = new Todo; 1035 nt = new Todo;
1026 mCalendar->addTodo( nt ); 1036 mCalendar->addTodo( nt );
1027 nt->setSummary( "Planning_Project_2: Norbert"); 1037 nt->setSummary( "Planning Project2: Norbert");
1028 nt->setPriority( 1 ); 1038 nt->setPriority( 1 );
1029 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1039 nt->setDescription( "This todo counts the actual work of a person on a project" );
1040 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Norbert") );
1030 nt->setPercentComplete( 20 ); 1041 nt->setPercentComplete( 20 );
1031 Todo * workNorbert11 = nt; 1042 Todo * workNorbert11 = nt;
1032 workNorbert11->setRelatedTo( sub1 ); 1043 workNorbert11->setRelatedTo( sub1 );
1033 1044
1034 nt = new Todo; 1045 nt = new Todo;
1035 mCalendar->addTodo( nt ); 1046 mCalendar->addTodo( nt );
1036 nt->setSummary( "Work on 2"); 1047 nt->setSummary( "Work on 2");
1037 nt->setPriority( 1 ); 1048 nt->setPriority( 1 );
1038 nt->setDescription( "This is a test description of Work Project_2" ); 1049 nt->setDescription( "This is a test description of Work Project_2" );
1050 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2") );
1039 nt->setPercentComplete( 20 ); 1051 nt->setPercentComplete( 20 );
1040 1052
1041 Todo * sub2 = nt; 1053 Todo * sub2 = nt;
1042 sub2->setRelatedTo( root1 ); 1054 sub2->setRelatedTo( root1 );
1043 1055
1044 1056
1045 nt = new Todo; 1057 nt = new Todo;
1046 mCalendar->addTodo( nt ); 1058 mCalendar->addTodo( nt );
1047 nt->setSummary( "Work on 2: Lutz"); 1059 nt->setSummary( "Work on 2: Lutz");
1048 nt->setPriority( 1 ); 1060 nt->setPriority( 1 );
1049 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1061 nt->setDescription( "This todo counts the actual work of a person on a project" );
1062 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Lutz") );
1050 nt->setPercentComplete( 20 ); 1063 nt->setPercentComplete( 20 );
1051 Todo * workLutz12 = nt; 1064 Todo * workLutz12 = nt;
1052 workLutz12->setRelatedTo( sub2 ); 1065 workLutz12->setRelatedTo( sub2 );
1053 1066
1054 nt = new Todo; 1067 nt = new Todo;
1055 mCalendar->addTodo( nt ); 1068 mCalendar->addTodo( nt );
1056 nt->setSummary( "Work on 2: Norbert"); 1069 nt->setSummary( "Work on 2: Norbert");
1057 nt->setPriority( 1 ); 1070 nt->setPriority( 1 );
1058 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1071 nt->setDescription( "This todo counts the actual work of a person on a project" );
1072 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Norbert") );
1059 nt->setPercentComplete( 20 ); 1073 nt->setPercentComplete( 20 );
1060 Todo * workNorbert12 = nt; 1074 Todo * workNorbert12 = nt;
1061 workNorbert12->setRelatedTo( sub2 ); 1075 workNorbert12->setRelatedTo( sub2 );
1062 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 ); 1076 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 );
1063 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2); 1077 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2);
1064 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7); 1078 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7);
1065 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0); 1079 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0);
1066 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1); 1080 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1);
1067 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0); 1081 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0);
1068 createRunningDate4Todo( workNorbert12, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0); 1082 createRunningDate4Todo( workNorbert12, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0);
1069 } 1083 }
1070 updateView(); 1084 updateView();
1071#endif 1085#endif
1072 1086
1073} 1087}
1074void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval ) 1088void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval )
1075{ 1089{
1076 static int ccc = 0; 1090 static int ccc = 0;
1077 ++ccc; 1091 ++ccc;
1078 QDateTime t_start = start; 1092 QDateTime t_start = start;
1079 runT->setPriority( 5 ); 1093 runT->setPriority( 5 );
1080 runT->setPercentComplete( 0 ); 1094 runT->setPercentComplete( 0 );
1081 int count = 0; 1095 int count = 0;
1082 int prio = 5; 1096 int prio = 5;
1083 int complete = 0; 1097 int complete = 0;
1084 while ( t_start < end ) { 1098 while ( t_start < end ) {
1085 ++count; 1099 ++count;
1086 if ( count > ccc ) { 1100 if ( count > ccc ) {
1087 count = 0; 1101 count = 0;
1088 --prio; 1102 --prio;
1089 if ( prio == 0 ) prio = 5; 1103 if ( prio == 0 ) prio = 5;
1090 complete += 20; 1104 complete += 20;
1091 if ( complete > 100 ) complete = 0; 1105 if ( complete > 100 ) complete = 0;
1092 runT->setPriority( prio ); 1106 runT->setPriority( prio );
1093 runT->setPercentComplete( complete ); 1107 runT->setPercentComplete( complete );
1094 } 1108 }
1095 runT->setRunning( true ); 1109 runT->setRunning( true );
1096 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) ); 1110 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) );
1097 if ( dayInterval ) 1111 if ( dayInterval )
1098 t_start = t_start.addDays( dayInterval ); 1112 t_start = t_start.addDays( dayInterval );
1099 else { 1113 else {
1100 t_start = t_start.addSecs( secLenRunning + secLenPausing ); 1114 t_start = t_start.addSecs( secLenRunning + secLenPausing );
1101 } 1115 }
1102 } 1116 }
1103} 1117}
1104 1118
1105void CalendarView::showDay( QDate d ) 1119void CalendarView::showDay( QDate d )
1106{ 1120{
1107 dateNavigator()->blockSignals( true ); 1121 dateNavigator()->blockSignals( true );
1108 dateNavigator()->selectDate( d ); 1122 dateNavigator()->selectDate( d );
1109 dateNavigator()->blockSignals( false ); 1123 dateNavigator()->blockSignals( false );
1110 mViewManager->showDayView(); 1124 mViewManager->showDayView();
1111 //dateNavigator()->selectDate( d ); 1125 //dateNavigator()->selectDate( d );
1112} 1126}
1113void CalendarView::timerAlarm() 1127void CalendarView::timerAlarm()
1114{ 1128{
1115 //qDebug("CalendarView::timerAlarm() "); 1129 //qDebug("CalendarView::timerAlarm() ");
1116 computeAlarm(mAlarmNotification ); 1130 computeAlarm(mAlarmNotification );
1117} 1131}
1118 1132
1119void CalendarView::suspendAlarm() 1133void CalendarView::suspendAlarm()
1120{ 1134{
1121 //qDebug(" CalendarView::suspendAlarm() "); 1135 //qDebug(" CalendarView::suspendAlarm() ");
1122 computeAlarm(mSuspendAlarmNotification ); 1136 computeAlarm(mSuspendAlarmNotification );
1123 1137
1124} 1138}
1125 1139
1126void CalendarView::startAlarm( QString mess , QString filename) 1140void CalendarView::startAlarm( QString mess , QString filename)
1127{ 1141{
1128 1142
1129 topLevelWidget()->showNormal(); 1143 topLevelWidget()->showNormal();
1130 topLevelWidget()->setActiveWindow(); 1144 topLevelWidget()->setActiveWindow();
1131 topLevelWidget()->raise(); 1145 topLevelWidget()->raise();
1132 1146
1133 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 1147 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
1134 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) ); 1148 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) );
1135 1149
1136} 1150}
1137 1151
1138void CalendarView::checkNextTimerAlarm() 1152void CalendarView::checkNextTimerAlarm()
1139{ 1153{
1140 mCalendar->checkAlarmForIncidence( 0, true ); 1154 mCalendar->checkAlarmForIncidence( 0, true );
1141} 1155}
1142 1156
1143void CalendarView::computeAlarm( QString msg ) 1157void CalendarView::computeAlarm( QString msg )
1144{ 1158{
1145 1159
1146 QString mess = msg; 1160 QString mess = msg;
1147 QString mAlarmMessage = mess.mid( 9 ); 1161 QString mAlarmMessage = mess.mid( 9 );
1148 QString filename = MainWindow::resourcePath(); 1162 QString filename = MainWindow::resourcePath();
1149 filename += "koalarm.wav"; 1163 filename += "koalarm.wav";
1150 QString tempfilename; 1164 QString tempfilename;
1151 if ( mess.left( 13 ) == "suspend_alarm") { 1165 if ( mess.left( 13 ) == "suspend_alarm") {
1152 bool error = false; 1166 bool error = false;
1153 int len = mess.mid( 13 ).find("+++"); 1167 int len = mess.mid( 13 ).find("+++");
1154 if ( len < 2 ) 1168 if ( len < 2 )
1155 error = true; 1169 error = true;
1156 else { 1170 else {
1157 tempfilename = mess.mid( 13, len ); 1171 tempfilename = mess.mid( 13, len );
1158 if ( !QFile::exists( tempfilename ) ) 1172 if ( !QFile::exists( tempfilename ) )
1159 error = true; 1173 error = true;
1160 } 1174 }
1161 if ( ! error ) { 1175 if ( ! error ) {
1162 filename = tempfilename; 1176 filename = tempfilename;
1163 } 1177 }
1164 mAlarmMessage = mess.mid( 13+len+3 ); 1178 mAlarmMessage = mess.mid( 13+len+3 );
1165 //qDebug("suspend file %s ",tempfilename.latin1() ); 1179 //qDebug("suspend file %s ",tempfilename.latin1() );
1166 startAlarm( mAlarmMessage, filename); 1180 startAlarm( mAlarmMessage, filename);
1167 return; 1181 return;
1168 } 1182 }
1169 if ( mess.left( 11 ) == "timer_alarm") { 1183 if ( mess.left( 11 ) == "timer_alarm") {
1170 //mTimerTime = 0; 1184 //mTimerTime = 0;
1171 startAlarm( mess.mid( 11 ), filename ); 1185 startAlarm( mess.mid( 11 ), filename );
1172 return; 1186 return;
1173 } 1187 }
1174 if ( mess.left( 10 ) == "proc_alarm") { 1188 if ( mess.left( 10 ) == "proc_alarm") {
1175 bool error = false; 1189 bool error = false;
1176 int len = mess.mid( 10 ).find("+++"); 1190 int len = mess.mid( 10 ).find("+++");
1177 if ( len < 2 ) 1191 if ( len < 2 )
1178 error = true; 1192 error = true;
1179 else { 1193 else {
1180 tempfilename = mess.mid( 10, len ); 1194 tempfilename = mess.mid( 10, len );
1181 if ( !QFile::exists( tempfilename ) ) 1195 if ( !QFile::exists( tempfilename ) )
1182 error = true; 1196 error = true;
1183 } 1197 }
1184 if ( error ) { 1198 if ( error ) {
1185 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 1199 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
1186 mAlarmMessage += mess.mid( 10+len+3+9 ); 1200 mAlarmMessage += mess.mid( 10+len+3+9 );
1187 } else { 1201 } else {
1188 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 1202 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
1189 //qDebug("-----system command %s ",tempfilename.latin1() ); 1203 //qDebug("-----system command %s ",tempfilename.latin1() );
1190#ifndef _WIN32_ 1204#ifndef _WIN32_
1191 if ( vfork () == 0 ) { 1205 if ( vfork () == 0 ) {
1192 execl ( tempfilename.latin1(), 0 ); 1206 execl ( tempfilename.latin1(), 0 );
1193 return; 1207 return;
1194 } 1208 }
1195#else 1209#else
1196 QProcess* p = new QProcess(); 1210 QProcess* p = new QProcess();
1197 p->addArgument( tempfilename.latin1() ); 1211 p->addArgument( tempfilename.latin1() );
1198 p->start(); 1212 p->start();
1199 return; 1213 return;
1200#endif 1214#endif
1201 1215
1202 return; 1216 return;
1203 } 1217 }
1204 1218
1205 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 1219 //qDebug("+++++++system command %s ",tempfilename.latin1() );
1206 } 1220 }
1207 if ( mess.left( 11 ) == "audio_alarm") { 1221 if ( mess.left( 11 ) == "audio_alarm") {
1208 bool error = false; 1222 bool error = false;
1209 int len = mess.mid( 11 ).find("+++"); 1223 int len = mess.mid( 11 ).find("+++");
1210 if ( len < 2 ) 1224 if ( len < 2 )
1211 error = true; 1225 error = true;
1212 else { 1226 else {
1213 tempfilename = mess.mid( 11, len ); 1227 tempfilename = mess.mid( 11, len );
1214 if ( !QFile::exists( tempfilename ) ) 1228 if ( !QFile::exists( tempfilename ) )
1215 error = true; 1229 error = true;
1216 } 1230 }
1217 if ( ! error ) { 1231 if ( ! error ) {
1218 filename = tempfilename; 1232 filename = tempfilename;
1219 } 1233 }
1220 mAlarmMessage = mess.mid( 11+len+3+9 ); 1234 mAlarmMessage = mess.mid( 11+len+3+9 );
1221 //qDebug("audio file command %s ",tempfilename.latin1() ); 1235 //qDebug("audio file command %s ",tempfilename.latin1() );
1222 } 1236 }
1223 if ( mess.left( 9 ) == "cal_alarm") { 1237 if ( mess.left( 9 ) == "cal_alarm") {
1224 mAlarmMessage = mess.mid( 9 ) ; 1238 mAlarmMessage = mess.mid( 9 ) ;
1225 } 1239 }
1226 1240
1227 startAlarm( mAlarmMessage, filename ); 1241 startAlarm( mAlarmMessage, filename );
1228 1242
1229 1243
1230} 1244}
1231 1245
1232void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 1246void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
1233{ 1247{
1234 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1248 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1235 1249
1236 mSuspendAlarmNotification = noti; 1250 mSuspendAlarmNotification = noti;
1237 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 1251 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
1238 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 1252 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
1239 mSuspendTimer->start( ms , true ); 1253 mSuspendTimer->start( ms , true );
1240 1254
1241} 1255}
1242 1256
1243void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 1257void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
1244{ 1258{
1245 mNextAlarmDateTime = qdt; 1259 mNextAlarmDateTime = qdt;
1246 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1260 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1247 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1261 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1248#ifndef DESKTOP_VERSION 1262#ifndef DESKTOP_VERSION
1249 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() ); 1263 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() );
1250#endif 1264#endif
1251 return; 1265 return;
1252 } 1266 }
1253 int maxSec; 1267 int maxSec;
1254 //maxSec = 5; //testing only 1268 //maxSec = 5; //testing only
1255 maxSec = 86400+3600; // one day+1hour 1269 maxSec = 86400+3600; // one day+1hour
1256 mAlarmNotification = noti; 1270 mAlarmNotification = noti;
1257 int sec = QDateTime::currentDateTime().secsTo( qdt ); 1271 int sec = QDateTime::currentDateTime().secsTo( qdt );
1258 if ( sec > maxSec ) { 1272 if ( sec > maxSec ) {
1259 mRecheckAlarmTimer->start( maxSec * 1000 ); 1273 mRecheckAlarmTimer->start( maxSec * 1000 );
1260 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 1274 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
1261 return; 1275 return;
1262 } else { 1276 } else {
1263 mRecheckAlarmTimer->stop(); 1277 mRecheckAlarmTimer->stop();
1264 } 1278 }
1265 //qDebug("Alarm timer started with secs: %d ", sec); 1279 //qDebug("Alarm timer started with secs: %d ", sec);
1266 mAlarmTimer->start( sec *1000 , true ); 1280 mAlarmTimer->start( sec *1000 , true );
1267 1281
1268} 1282}
1269// called by mRecheckAlarmTimer to get next alarm 1283// called by mRecheckAlarmTimer to get next alarm
1270// we need this, because a QTimer has only a max range of 25 days 1284// we need this, because a QTimer has only a max range of 25 days
1271void CalendarView::recheckTimerAlarm() 1285void CalendarView::recheckTimerAlarm()
1272{ 1286{
1273 mAlarmTimer->stop(); 1287 mAlarmTimer->stop();
1274 mRecheckAlarmTimer->stop(); 1288 mRecheckAlarmTimer->stop();
1275 mCalendar->checkAlarmForIncidence( 0, true ); 1289 mCalendar->checkAlarmForIncidence( 0, true );
1276} 1290}
1277#ifndef DESKTOP_VERSION 1291#ifndef DESKTOP_VERSION
1278void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 1292void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
1279#else 1293#else
1280void CalendarView::removeAlarm(const QDateTime &, const QString & ) 1294void CalendarView::removeAlarm(const QDateTime &, const QString & )
1281#endif 1295#endif
1282{ 1296{
1283 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1297 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1284 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1298 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1285#ifndef DESKTOP_VERSION 1299#ifndef DESKTOP_VERSION
1286 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() ); 1300 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() );
1287#endif 1301#endif
1288 return; 1302 return;
1289 } 1303 }
1290 mAlarmTimer->stop(); 1304 mAlarmTimer->stop();
1291} 1305}
1292void CalendarView::selectWeekNum ( int num ) 1306void CalendarView::selectWeekNum ( int num )
1293{ 1307{
1294 dateNavigator()->blockSignals( true ); 1308 dateNavigator()->blockSignals( true );
1295 dateNavigator()->selectWeek( num ); 1309 dateNavigator()->selectWeek( num );
1296 dateNavigator()->blockSignals( false ); 1310 dateNavigator()->blockSignals( false );
1297 mViewManager->showWeekView(); 1311 mViewManager->showWeekView();
1298} 1312}
1299KOViewManager *CalendarView::viewManager() 1313KOViewManager *CalendarView::viewManager()
1300{ 1314{
1301 return mViewManager; 1315 return mViewManager;
1302} 1316}
1303 1317
1304KODialogManager *CalendarView::dialogManager() 1318KODialogManager *CalendarView::dialogManager()
1305{ 1319{
1306 return mDialogManager; 1320 return mDialogManager;
1307} 1321}
1308 1322
1309QDate CalendarView::startDate() 1323QDate CalendarView::startDate()
1310{ 1324{
1311 DateList dates = mNavigator->selectedDates(); 1325 DateList dates = mNavigator->selectedDates();
1312 1326
1313 return dates.first(); 1327 return dates.first();
1314} 1328}
1315 1329
1316QDate CalendarView::endDate() 1330QDate CalendarView::endDate()
1317{ 1331{
1318 DateList dates = mNavigator->selectedDates(); 1332 DateList dates = mNavigator->selectedDates();
1319 1333
1320 return dates.last(); 1334 return dates.last();
1321} 1335}
1322 1336
1323 1337
1324void CalendarView::createPrinter() 1338void CalendarView::createPrinter()
1325{ 1339{
1326#ifndef KORG_NOPRINTER 1340#ifndef KORG_NOPRINTER
1327 if (!mCalPrinter) { 1341 if (!mCalPrinter) {
1328 mCalPrinter = new CalPrinter(this, mCalendar); 1342 mCalPrinter = new CalPrinter(this, mCalendar);
1329 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 1343 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
1330 } 1344 }
1331#endif 1345#endif
1332} 1346}
1333 1347
1334 1348
1335//KOPrefs::instance()->mWriteBackFile 1349//KOPrefs::instance()->mWriteBackFile
1336//KOPrefs::instance()->mWriteBackExistingOnly 1350//KOPrefs::instance()->mWriteBackExistingOnly
1337 1351
1338// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 1352// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
1339// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 1353// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
1340// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 1354// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
1341// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 1355// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
1342// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 1356// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
1343// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 1357// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
1344 1358
1345int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 1359int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
1346{ 1360{
1347 1361
1348 // 0 equal 1362 // 0 equal
1349 // 1 take local 1363 // 1 take local
1350 // 2 take remote 1364 // 2 take remote
1351 // 3 cancel 1365 // 3 cancel
1352 QDateTime lastSync = mLastCalendarSync; 1366 QDateTime lastSync = mLastCalendarSync;
1353 QDateTime localMod = local->lastModified(); 1367 QDateTime localMod = local->lastModified();
1354 QDateTime remoteMod = remote->lastModified(); 1368 QDateTime remoteMod = remote->lastModified();
1355 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1369 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1356 bool remCh, locCh; 1370 bool remCh, locCh;
1357 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 1371 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
1358 //if ( remCh ) 1372 //if ( remCh )
1359 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 1373 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
1360 locCh = ( localMod > mLastCalendarSync ); 1374 locCh = ( localMod > mLastCalendarSync );
1361 if ( !remCh && ! locCh ) { 1375 if ( !remCh && ! locCh ) {
1362 //qDebug("both not changed "); 1376 //qDebug("both not changed ");
1363 lastSync = localMod.addDays(1); 1377 lastSync = localMod.addDays(1);
1364 if ( mode <= SYNC_PREF_ASK ) 1378 if ( mode <= SYNC_PREF_ASK )
1365 return 0; 1379 return 0;
1366 } else { 1380 } else {
1367 if ( locCh ) { 1381 if ( locCh ) {
1368 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 1382 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
1369 lastSync = localMod.addDays( -1 ); 1383 lastSync = localMod.addDays( -1 );
1370 if ( !remCh ) 1384 if ( !remCh )
1371 remoteMod = ( lastSync.addDays( -1 ) ); 1385 remoteMod = ( lastSync.addDays( -1 ) );
1372 } else { 1386 } else {
1373 //qDebug(" not loc changed "); 1387 //qDebug(" not loc changed ");
1374 lastSync = localMod.addDays( 1 ); 1388 lastSync = localMod.addDays( 1 );
1375 if ( remCh ) 1389 if ( remCh )
1376 remoteMod =( lastSync.addDays( 1 ) ); 1390 remoteMod =( lastSync.addDays( 1 ) );
1377 1391
1378 } 1392 }
1379 } 1393 }
1380 full = true; 1394 full = true;
1381 if ( mode < SYNC_PREF_ASK ) 1395 if ( mode < SYNC_PREF_ASK )
1382 mode = SYNC_PREF_ASK; 1396 mode = SYNC_PREF_ASK;
1383 } else { 1397 } else {
1384 if ( localMod == remoteMod ) 1398 if ( localMod == remoteMod )
1385 // if ( local->revision() == remote->revision() ) 1399 // if ( local->revision() == remote->revision() )
1386 return 0; 1400 return 0;
1387 1401
1388 } 1402 }
1389 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 1403 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
1390 1404
1391 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 1405 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
1392 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 1406 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
1393 //full = true; //debug only 1407 //full = true; //debug only
1394 if ( full ) { 1408 if ( full ) {
1395 bool equ = false; 1409 bool equ = false;
1396 if ( local->typeID() == eventID ) { 1410 if ( local->typeID() == eventID ) {
1397 equ = (*((Event*) local) == *((Event*) remote)); 1411 equ = (*((Event*) local) == *((Event*) remote));
1398 } 1412 }
1399 else if ( local->typeID() == todoID ) 1413 else if ( local->typeID() == todoID )
1400 equ = (*((Todo*) local) == (*(Todo*) remote)); 1414 equ = (*((Todo*) local) == (*(Todo*) remote));
1401 else if ( local->typeID() == journalID ) 1415 else if ( local->typeID() == journalID )
1402 equ = (*((Journal*) local) == *((Journal*) remote)); 1416 equ = (*((Journal*) local) == *((Journal*) remote));
1403 if ( equ ) { 1417 if ( equ ) {
1404 //qDebug("equal "); 1418 //qDebug("equal ");
1405 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1419 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1406 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 1420 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
1407 } 1421 }
1408 if ( mode < SYNC_PREF_FORCE_LOCAL ) 1422 if ( mode < SYNC_PREF_FORCE_LOCAL )
1409 return 0; 1423 return 0;
1410 1424
1411 }//else //debug only 1425 }//else //debug only
1412 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 1426 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
1413 } 1427 }
1414 int result; 1428 int result;
1415 bool localIsNew; 1429 bool localIsNew;
1416 //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() ); 1430 //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() );
1417 1431
1418 1432
1419 // ************************************************ 1433 // ************************************************
1420 // ************************************************ 1434 // ************************************************
1421 // ************************************************ 1435 // ************************************************
1422 // We may have that lastSync > remoteMod AND lastSync > localMod 1436 // We may have that lastSync > remoteMod AND lastSync > localMod
1423 // BUT remoteMod != localMod 1437 // BUT remoteMod != localMod
1424 1438
1425 1439
1426 if ( full && mode < SYNC_PREF_NEWEST ) 1440 if ( full && mode < SYNC_PREF_NEWEST )
1427 mode = SYNC_PREF_ASK; 1441 mode = SYNC_PREF_ASK;
1428 1442
1429 switch( mode ) { 1443 switch( mode ) {
1430 case SYNC_PREF_LOCAL: 1444 case SYNC_PREF_LOCAL:
1431 if ( lastSync > remoteMod ) 1445 if ( lastSync > remoteMod )
1432 return 1; 1446 return 1;
1433 if ( lastSync > localMod ) 1447 if ( lastSync > localMod )
1434 return 2; 1448 return 2;
1435 return 1; 1449 return 1;
1436 break; 1450 break;
1437 case SYNC_PREF_REMOTE: 1451 case SYNC_PREF_REMOTE:
1438 if ( lastSync > localMod ) 1452 if ( lastSync > localMod )
1439 return 2; 1453 return 2;
1440 if ( lastSync > remoteMod ) 1454 if ( lastSync > remoteMod )
1441 return 1; 1455 return 1;
1442 return 2; 1456 return 2;
1443 break; 1457 break;
1444 case SYNC_PREF_NEWEST: 1458 case SYNC_PREF_NEWEST:
1445 if ( localMod >= remoteMod ) 1459 if ( localMod >= remoteMod )
1446 return 1; 1460 return 1;
1447 else 1461 else
1448 return 2; 1462 return 2;
1449 break; 1463 break;
1450 case SYNC_PREF_ASK: 1464 case SYNC_PREF_ASK:
1451 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1465 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1452 if ( lastSync > remoteMod && lastSync > localMod) 1466 if ( lastSync > remoteMod && lastSync > localMod)
1453 return 0; 1467 return 0;
1454 if ( lastSync > remoteMod ) 1468 if ( lastSync > remoteMod )
1455 return 1; 1469 return 1;
1456 if ( lastSync > localMod ) 1470 if ( lastSync > localMod )
1457 return 2; 1471 return 2;
1458 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1472 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1459 localIsNew = localMod >= remoteMod; 1473 localIsNew = localMod >= remoteMod;
1460 if ( localIsNew ) 1474 if ( localIsNew )
1461 getEventViewerDialog()->setColorMode( 1 ); 1475 getEventViewerDialog()->setColorMode( 1 );
1462 else 1476 else
1463 getEventViewerDialog()->setColorMode( 2 ); 1477 getEventViewerDialog()->setColorMode( 2 );
1464 getEventViewerDialog()->setIncidence(local); 1478 getEventViewerDialog()->setIncidence(local);
1465 if ( localIsNew ) 1479 if ( localIsNew )
1466 getEventViewerDialog()->setColorMode( 2 ); 1480 getEventViewerDialog()->setColorMode( 2 );
1467 else 1481 else
1468 getEventViewerDialog()->setColorMode( 1 ); 1482 getEventViewerDialog()->setColorMode( 1 );
1469 getEventViewerDialog()->addIncidence(remote); 1483 getEventViewerDialog()->addIncidence(remote);
1470 getEventViewerDialog()->setColorMode( 0 ); 1484 getEventViewerDialog()->setColorMode( 0 );
1471 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1485 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1472 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1486 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1473 getEventViewerDialog()->showMe(); 1487 getEventViewerDialog()->showMe();
1474 result = getEventViewerDialog()->executeS( localIsNew ); 1488 result = getEventViewerDialog()->executeS( localIsNew );
1475 return result; 1489 return result;
1476 1490
1477 break; 1491 break;
1478 case SYNC_PREF_FORCE_LOCAL: 1492 case SYNC_PREF_FORCE_LOCAL:
1479 return 1; 1493 return 1;
1480 break; 1494 break;
1481 case SYNC_PREF_FORCE_REMOTE: 1495 case SYNC_PREF_FORCE_REMOTE:
1482 return 2; 1496 return 2;
1483 break; 1497 break;
1484 1498
1485 default: 1499 default:
1486 // SYNC_PREF_TAKE_BOTH not implemented 1500 // SYNC_PREF_TAKE_BOTH not implemented
1487 break; 1501 break;
1488 } 1502 }
1489 return 0; 1503 return 0;
1490} 1504}
1491Event* CalendarView::getLastSyncEvent() 1505Event* CalendarView::getLastSyncEvent()
1492{ 1506{
1493 Event* lse; 1507 Event* lse;
1494 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1508 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1495 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1509 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1496 if (!lse) { 1510 if (!lse) {
1497 lse = new Event(); 1511 lse = new Event();
1498 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1512 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1499 QString sum = ""; 1513 QString sum = "";
1500 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1514 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1501 sum = "E: "; 1515 sum = "E: ";
1502 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1516 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1503 lse->setDtStart( mLastCalendarSync ); 1517 lse->setDtStart( mLastCalendarSync );
1504 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1518 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1505 lse->setCategories( i18n("SyncEvent") ); 1519 lse->setCategories( i18n("SyncEvent") );
1506 lse->setReadOnly( true ); 1520 lse->setReadOnly( true );
1507 mCalendar->addEvent( lse ); 1521 mCalendar->addEvent( lse );
1508 } 1522 }
1509 1523
1510 return lse; 1524 return lse;
1511 1525
1512} 1526}
1513 1527
1514// we check, if the to delete event has a id for a profile 1528// we check, if the to delete event has a id for a profile
1515// if yes, we set this id in the profile to delete 1529// if yes, we set this id in the profile to delete
1516void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1530void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1517{ 1531{
1518 if ( lastSync.count() == 0 ) { 1532 if ( lastSync.count() == 0 ) {
1519 //qDebug(" lastSync.count() == 0"); 1533 //qDebug(" lastSync.count() == 0");
1520 return; 1534 return;
1521 } 1535 }
1522 if ( toDelete->typeID() == journalID ) 1536 if ( toDelete->typeID() == journalID )
1523 return; 1537 return;
1524 1538
1525 Event* eve = lastSync.first(); 1539 Event* eve = lastSync.first();
1526 1540
1527 while ( eve ) { 1541 while ( eve ) {
1528 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1542 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1529 if ( !id.isEmpty() ) { 1543 if ( !id.isEmpty() ) {
1530 QString des = eve->description(); 1544 QString des = eve->description();
1531 QString pref = "e"; 1545 QString pref = "e";
1532 if ( toDelete->typeID() == todoID ) 1546 if ( toDelete->typeID() == todoID )
1533 pref = "t"; 1547 pref = "t";
1534 des += pref+ id + ","; 1548 des += pref+ id + ",";
1535 eve->setReadOnly( false ); 1549 eve->setReadOnly( false );
1536 eve->setDescription( des ); 1550 eve->setDescription( des );
1537 //qDebug("setdes %s ", des.latin1()); 1551 //qDebug("setdes %s ", des.latin1());
1538 eve->setReadOnly( true ); 1552 eve->setReadOnly( true );
1539 } 1553 }
1540 eve = lastSync.next(); 1554 eve = lastSync.next();
1541 } 1555 }
1542 1556
1543} 1557}
1544void CalendarView::checkExternalId( Incidence * inc ) 1558void CalendarView::checkExternalId( Incidence * inc )
1545{ 1559{
1546 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1560 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1547 checkExternSyncEvent( lastSync, inc ); 1561 checkExternSyncEvent( lastSync, inc );
1548 1562
1549} 1563}
1550bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1564bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1551{ 1565{
1552 bool syncOK = true; 1566 bool syncOK = true;
1553 int addedEvent = 0; 1567 int addedEvent = 0;
1554 int addedEventR = 0; 1568 int addedEventR = 0;
1555 int deletedEventR = 0; 1569 int deletedEventR = 0;
1556 int deletedEventL = 0; 1570 int deletedEventL = 0;
1557 int changedLocal = 0; 1571 int changedLocal = 0;
1558 int changedRemote = 0; 1572 int changedRemote = 0;
1559 int filteredIN = 0; 1573 int filteredIN = 0;
1560 int filteredOUT = 0; 1574 int filteredOUT = 0;
1561 //QPtrList<Event> el = local->rawEvents(); 1575 //QPtrList<Event> el = local->rawEvents();
1562 Event* eventR; 1576 Event* eventR;
1563 QString uid; 1577 QString uid;
1564 int take; 1578 int take;
1565 Event* eventRSync; 1579 Event* eventRSync;
1566 Event* eventLSync; 1580 Event* eventLSync;
1567 clearAllViews(); 1581 clearAllViews();
1568 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1582 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1569 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1583 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1570 bool fullDateRange = false; 1584 bool fullDateRange = false;
1571 local->resetTempSyncStat(); 1585 local->resetTempSyncStat();
1572 mLastCalendarSync = QDateTime::currentDateTime(); 1586 mLastCalendarSync = QDateTime::currentDateTime();
1573 if ( mSyncManager->syncWithDesktop() ) { 1587 if ( mSyncManager->syncWithDesktop() ) {
1574 remote->resetPilotStat(1); 1588 remote->resetPilotStat(1);
1575 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1589 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1576 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1590 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1577 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1591 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1578 } else { 1592 } else {
1579 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1593 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1580 } 1594 }
1581 } 1595 }
1582 QDateTime modifiedCalendar = mLastCalendarSync; 1596 QDateTime modifiedCalendar = mLastCalendarSync;
1583 eventLSync = getLastSyncEvent(); 1597 eventLSync = getLastSyncEvent();
1584 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1598 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1585 if ( eventR ) { 1599 if ( eventR ) {
1586 qDebug("last-syncEvent on remote found "); 1600 qDebug("last-syncEvent on remote found ");
1587 eventRSync = (Event*) eventR->clone(); 1601 eventRSync = (Event*) eventR->clone();
1588 remote->deleteEvent(eventR ); 1602 remote->deleteEvent(eventR );
1589 1603
1590 } else { 1604 } else {
1591 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1605 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1592 eventRSync = (Event*)eventLSync->clone(); 1606 eventRSync = (Event*)eventLSync->clone();
1593 } else { 1607 } else {
1594 fullDateRange = true; 1608 fullDateRange = true;
1595 eventRSync = new Event(); 1609 eventRSync = new Event();
1596 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1610 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1597 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1611 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1598 eventRSync->setDtStart( mLastCalendarSync ); 1612 eventRSync->setDtStart( mLastCalendarSync );
1599 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1613 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1600 eventRSync->setCategories( i18n("SyncEvent") ); 1614 eventRSync->setCategories( i18n("SyncEvent") );
1601 } 1615 }
1602 } 1616 }
1603 if ( eventLSync->dtStart() == mLastCalendarSync ) 1617 if ( eventLSync->dtStart() == mLastCalendarSync )
1604 fullDateRange = true; 1618 fullDateRange = true;
1605 1619
1606 if ( ! fullDateRange ) { 1620 if ( ! fullDateRange ) {
1607 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1621 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1608 1622
1609 qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1623 qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1610 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1624 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1611 fullDateRange = true; 1625 fullDateRange = true;
1612 } 1626 }
1613 } 1627 }
1614 if ( mSyncManager->syncWithDesktop() ) { 1628 if ( mSyncManager->syncWithDesktop() ) {
1615 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1629 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1616 } 1630 }
1617 if ( fullDateRange ) 1631 if ( fullDateRange )
1618 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1632 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1619 else 1633 else
1620 mLastCalendarSync = eventLSync->dtStart(); 1634 mLastCalendarSync = eventLSync->dtStart();
1621 // for resyncing if own file has changed 1635 // for resyncing if own file has changed
1622 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1636 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1623 mLastCalendarSync = loadedFileVersion; 1637 mLastCalendarSync = loadedFileVersion;
1624 //qDebug("setting mLastCalendarSync "); 1638 //qDebug("setting mLastCalendarSync ");
1625 } 1639 }
1626 //qDebug("*************************** "); 1640 //qDebug("*************************** ");
1627 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1641 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1628 QPtrList<Incidence> er = remote->rawIncidences(); 1642 QPtrList<Incidence> er = remote->rawIncidences();
1629 Incidence* inR = er.first(); 1643 Incidence* inR = er.first();
1630 Incidence* inL; 1644 Incidence* inL;
1631 QProgressBar bar( er.count(),0 ); 1645 QProgressBar bar( er.count(),0 );
1632 bar.setCaption (i18n("Syncing - close to abort!") ); 1646 bar.setCaption (i18n("Syncing - close to abort!") );
1633 1647
1634 // ************** setting up filter ************* 1648 // ************** setting up filter *************
1635 CalFilter *filterIN = 0; 1649 CalFilter *filterIN = 0;
1636 CalFilter *filterOUT = 0; 1650 CalFilter *filterOUT = 0;
1637 CalFilter *filter = mFilters.first(); 1651 CalFilter *filter = mFilters.first();
1638 while(filter) { 1652 while(filter) {
1639 if ( filter->name() == mSyncManager->mFilterInCal ) 1653 if ( filter->name() == mSyncManager->mFilterInCal )
1640 filterIN = filter; 1654 filterIN = filter;
1641 if ( filter->name() == mSyncManager->mFilterOutCal ) 1655 if ( filter->name() == mSyncManager->mFilterOutCal )
1642 filterOUT = filter; 1656 filterOUT = filter;
1643 filter = mFilters.next(); 1657 filter = mFilters.next();
1644 } 1658 }
1645 int w = 300; 1659 int w = 300;
1646 if ( QApplication::desktop()->width() < 320 ) 1660 if ( QApplication::desktop()->width() < 320 )
1647 w = 220; 1661 w = 220;
1648 int h = bar.sizeHint().height() ; 1662 int h = bar.sizeHint().height() ;
1649 int dw = QApplication::desktop()->width(); 1663 int dw = QApplication::desktop()->width();
1650 int dh = QApplication::desktop()->height(); 1664 int dh = QApplication::desktop()->height();
1651 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1665 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1652 bar.show(); 1666 bar.show();
1653 int modulo = (er.count()/10)+1; 1667 int modulo = (er.count()/10)+1;
1654 int incCounter = 0; 1668 int incCounter = 0;
1655 while ( inR ) { 1669 while ( inR ) {
1656 if ( ! bar.isVisible() ) 1670 if ( ! bar.isVisible() )
1657 return false; 1671 return false;
1658 if ( incCounter % modulo == 0 ) 1672 if ( incCounter % modulo == 0 )
1659 bar.setProgress( incCounter ); 1673 bar.setProgress( incCounter );
1660 ++incCounter; 1674 ++incCounter;
1661 uid = inR->uid(); 1675 uid = inR->uid();
1662 bool skipIncidence = false; 1676 bool skipIncidence = false;
1663 if ( uid.left(15) == QString("last-syncEvent-") ) 1677 if ( uid.left(15) == QString("last-syncEvent-") )
1664 skipIncidence = true; 1678 skipIncidence = true;
1665 QString idS; 1679 QString idS;
1666 qApp->processEvents(); 1680 qApp->processEvents();
1667 if ( !skipIncidence ) { 1681 if ( !skipIncidence ) {
1668 inL = local->incidenceForUid( uid , false ); 1682 inL = local->incidenceForUid( uid , false );
1669 if ( inL ) { // maybe conflict - same uid in both calendars 1683 if ( inL ) { // maybe conflict - same uid in both calendars
1670 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1684 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1671 //qDebug("take %d %s ", take, inL->summary().latin1()); 1685 //qDebug("take %d %s ", take, inL->summary().latin1());
1672 if ( take == 3 ) 1686 if ( take == 3 )
1673 return false; 1687 return false;
1674 if ( take == 1 ) {// take local ********************** 1688 if ( take == 1 ) {// take local **********************
1675 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1689 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1676 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1690 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1677 else 1691 else
1678 idS = inR->IDStr(); 1692 idS = inR->IDStr();
1679 int calID = inR->calID(); 1693 int calID = inR->calID();
1680 remote->deleteIncidence( inR ); 1694 remote->deleteIncidence( inR );
1681 inR = inL->clone(); 1695 inR = inL->clone();
1682 inR->setCalID( calID ); 1696 inR->setCalID( calID );
1683 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1697 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1684 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1698 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1685 inR->setIDStr( idS ); 1699 inR->setIDStr( idS );
1686 remote->addIncidence( inR ); 1700 remote->addIncidence( inR );
1687 if ( mSyncManager->syncWithDesktop() ) 1701 if ( mSyncManager->syncWithDesktop() )
1688 inR->setPilotId( 2 ); 1702 inR->setPilotId( 2 );
1689 ++changedRemote; 1703 ++changedRemote;
1690 } else {// take remote ********************** 1704 } else {// take remote **********************
1691 if ( !inL->isReadOnly() ) { 1705 if ( !inL->isReadOnly() ) {
1692 idS = inL->IDStr(); 1706 idS = inL->IDStr();
1693 int pid = inL->pilotId(); 1707 int pid = inL->pilotId();
1694 int calID = inL->calID(); 1708 int calID = inL->calID();
1695 local->deleteIncidence( inL ); 1709 local->deleteIncidence( inL );
1696 inL = inR->clone(); 1710 inL = inR->clone();
1697 inL->setCalID( calID ); 1711 inL->setCalID( calID );
1698 if ( mSyncManager->syncWithDesktop() ) 1712 if ( mSyncManager->syncWithDesktop() )
1699 inL->setPilotId( pid ); 1713 inL->setPilotId( pid );
1700 inL->setIDStr( idS ); 1714 inL->setIDStr( idS );
1701 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1715 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1702 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1716 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1703 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1717 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1704 } 1718 }
1705 local->addIncidence( inL ); 1719 local->addIncidence( inL );
1706 ++changedLocal; 1720 ++changedLocal;
1707 } 1721 }
1708 } 1722 }
1709 } 1723 }
1710 } else { // no conflict ********** add or delete remote 1724 } else { // no conflict ********** add or delete remote
1711 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1725 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1712 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1726 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1713 QString des = eventLSync->description(); 1727 QString des = eventLSync->description();
1714 QString pref = "e"; 1728 QString pref = "e";
1715 if ( inR->typeID() == todoID ) 1729 if ( inR->typeID() == todoID )
1716 pref = "t"; 1730 pref = "t";
1717 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1731 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1718 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1732 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1719 //remote->deleteIncidence( inR ); 1733 //remote->deleteIncidence( inR );
1720 ++deletedEventR; 1734 ++deletedEventR;
1721 } else { 1735 } else {
1722 inR->setLastModified( modifiedCalendar ); 1736 inR->setLastModified( modifiedCalendar );
1723 inL = inR->clone(); 1737 inL = inR->clone();
1724 inL->setIDStr( ":" ); 1738 inL->setIDStr( ":" );
1725 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1739 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1726 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1740 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1727 1741
1728 inL->setCalID( 0 );// add to default cal 1742 inL->setCalID( 0 );// add to default cal
1729 local->addIncidence( inL ); 1743 local->addIncidence( inL );
1730 ++addedEvent; 1744 ++addedEvent;
1731 1745
1732 } 1746 }
1733 } else { 1747 } else {
1734 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1748 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1735 inR->setLastModified( modifiedCalendar ); 1749 inR->setLastModified( modifiedCalendar );
1736 inL = inR->clone(); 1750 inL = inR->clone();
1737 inL->setIDStr( ":" ); 1751 inL->setIDStr( ":" );
1738 inL->setCalID( 0 );// add to default cal 1752 inL->setCalID( 0 );// add to default cal
1739 local->addIncidence( inL ); 1753 local->addIncidence( inL );
1740 ++addedEvent; 1754 ++addedEvent;
1741 1755
1742 } else { 1756 } else {
1743 checkExternSyncEvent(eventRSyncSharp, inR); 1757 checkExternSyncEvent(eventRSyncSharp, inR);
1744 remote->deleteIncidence( inR ); 1758 remote->deleteIncidence( inR );
1745 ++deletedEventR; 1759 ++deletedEventR;
1746 } 1760 }
1747 } 1761 }
1748 } else { 1762 } else {
1749 ++filteredIN; 1763 ++filteredIN;
1750 } 1764 }
1751 } 1765 }
1752 } 1766 }
1753 inR = er.next(); 1767 inR = er.next();
1754 } 1768 }
1755 QPtrList<Incidence> el = local->rawIncidences(); 1769 QPtrList<Incidence> el = local->rawIncidences();
1756 inL = el.first(); 1770 inL = el.first();
1757 modulo = (el.count()/10)+1; 1771 modulo = (el.count()/10)+1;
1758 bar.setCaption (i18n("Add / remove events") ); 1772 bar.setCaption (i18n("Add / remove events") );
1759 bar.setTotalSteps ( el.count() ) ; 1773 bar.setTotalSteps ( el.count() ) ;
1760 bar.show(); 1774 bar.show();
1761 incCounter = 0; 1775 incCounter = 0;
1762 1776
1763 while ( inL ) { 1777 while ( inL ) {
1764 1778
1765 qApp->processEvents(); 1779 qApp->processEvents();
1766 if ( ! bar.isVisible() ) 1780 if ( ! bar.isVisible() )
1767 return false; 1781 return false;
1768 if ( incCounter % modulo == 0 ) 1782 if ( incCounter % modulo == 0 )
1769 bar.setProgress( incCounter ); 1783 bar.setProgress( incCounter );
1770 ++incCounter; 1784 ++incCounter;
1771 uid = inL->uid(); 1785 uid = inL->uid();
1772 bool skipIncidence = false; 1786 bool skipIncidence = false;
1773 if ( uid.left(15) == QString("last-syncEvent-") ) 1787 if ( uid.left(15) == QString("last-syncEvent-") )
1774 skipIncidence = true; 1788 skipIncidence = true;
1775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1789 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1776 skipIncidence = true; 1790 skipIncidence = true;
1777 if ( !skipIncidence ) { 1791 if ( !skipIncidence ) {
1778 inR = remote->incidenceForUid( uid , true ); 1792 inR = remote->incidenceForUid( uid , true );
1779 if ( ! inR ) { 1793 if ( ! inR ) {
1780 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1794 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1781 // no conflict ********** add or delete local 1795 // no conflict ********** add or delete local
1782 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1796 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1783 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1797 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1784 checkExternSyncEvent(eventLSyncSharp, inL); 1798 checkExternSyncEvent(eventLSyncSharp, inL);
1785 local->deleteIncidence( inL ); 1799 local->deleteIncidence( inL );
1786 ++deletedEventL; 1800 ++deletedEventL;
1787 } else { 1801 } else {
1788 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1802 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1789 inL->removeID(mCurrentSyncDevice ); 1803 inL->removeID(mCurrentSyncDevice );
1790 ++addedEventR; 1804 ++addedEventR;
1791 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1805 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1792 inL->setLastModified( modifiedCalendar ); 1806 inL->setLastModified( modifiedCalendar );
1793 inR = inL->clone(); 1807 inR = inL->clone();
1794 inR->setIDStr( ":" ); 1808 inR->setIDStr( ":" );
1795 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1809 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1796 inR->setCalID( 0 );// add to default cal 1810 inR->setCalID( 0 );// add to default cal
1797 remote->addIncidence( inR ); 1811 remote->addIncidence( inR );
1798 } 1812 }
1799 } 1813 }
1800 } else { 1814 } else {
1801 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1815 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1802 checkExternSyncEvent(eventLSyncSharp, inL); 1816 checkExternSyncEvent(eventLSyncSharp, inL);
1803 local->deleteIncidence( inL ); 1817 local->deleteIncidence( inL );
1804 ++deletedEventL; 1818 ++deletedEventL;
1805 } else { 1819 } else {
1806 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1820 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1807 ++addedEventR; 1821 ++addedEventR;
1808 inL->setLastModified( modifiedCalendar ); 1822 inL->setLastModified( modifiedCalendar );
1809 inR = inL->clone(); 1823 inR = inL->clone();
1810 inR->setIDStr( ":" ); 1824 inR->setIDStr( ":" );
1811 inR->setCalID( 0 );// add to default cal 1825 inR->setCalID( 0 );// add to default cal
1812 remote->addIncidence( inR ); 1826 remote->addIncidence( inR );
1813 } 1827 }
1814 } 1828 }
1815 } 1829 }
1816 } else { 1830 } else {
1817 ++filteredOUT; 1831 ++filteredOUT;
1818 } 1832 }
1819 } 1833 }
1820 } 1834 }
1821 inL = el.next(); 1835 inL = el.next();
1822 } 1836 }
1823 int delFut = 0; 1837 int delFut = 0;
1824 int remRem = 0; 1838 int remRem = 0;
1825 if ( mSyncManager->mWriteBackInFuture ) { 1839 if ( mSyncManager->mWriteBackInFuture ) {
1826 er = remote->rawIncidences(); 1840 er = remote->rawIncidences();
1827 remRem = er.count(); 1841 remRem = er.count();
1828 inR = er.first(); 1842 inR = er.first();
1829 QDateTime dt; 1843 QDateTime dt;
1830 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1844 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1831 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1845 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1832 while ( inR ) { 1846 while ( inR ) {
1833 if ( inR->typeID() == todoID ) { 1847 if ( inR->typeID() == todoID ) {
1834 Todo * t = (Todo*)inR; 1848 Todo * t = (Todo*)inR;
1835 if ( t->hasDueDate() ) 1849 if ( t->hasDueDate() )
1836 dt = t->dtDue(); 1850 dt = t->dtDue();
1837 else 1851 else
1838 dt = cur.addSecs( 62 ); 1852 dt = cur.addSecs( 62 );
1839 } 1853 }
1840 else if (inR->typeID() == eventID ) { 1854 else if (inR->typeID() == eventID ) {
1841 bool ok; 1855 bool ok;
1842 dt = inR->getNextOccurence( cur, &ok ); 1856 dt = inR->getNextOccurence( cur, &ok );
1843 if ( !ok ) 1857 if ( !ok )
1844 dt = cur.addSecs( -62 ); 1858 dt = cur.addSecs( -62 );
1845 } 1859 }
1846 else 1860 else
1847 dt = inR->dtStart(); 1861 dt = inR->dtStart();
1848 if ( dt < cur || dt > end ) { 1862 if ( dt < cur || dt > end ) {
1849 remote->deleteIncidence( inR ); 1863 remote->deleteIncidence( inR );
1850 ++delFut; 1864 ++delFut;
1851 } 1865 }
1852 inR = er.next(); 1866 inR = er.next();
1853 } 1867 }
1854 } 1868 }
1855 bar.hide(); 1869 bar.hide();
1856 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1870 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1857 eventLSync->setReadOnly( false ); 1871 eventLSync->setReadOnly( false );
1858 eventLSync->setDtStart( mLastCalendarSync ); 1872 eventLSync->setDtStart( mLastCalendarSync );
1859 eventRSync->setDtStart( mLastCalendarSync ); 1873 eventRSync->setDtStart( mLastCalendarSync );
1860 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1874 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1861 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1875 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1862 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1876 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1863 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1877 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1864 eventLSync->setReadOnly( true ); 1878 eventLSync->setReadOnly( true );
1865 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1879 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1866 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1880 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1867 remote->addEvent( eventRSync ); 1881 remote->addEvent( eventRSync );
1868 else 1882 else
1869 delete eventRSync; 1883 delete eventRSync;
1870 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1884 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1871 QString mes; 1885 QString mes;
1872 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 ); 1886 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 );
1873 QString delmess; 1887 QString delmess;
1874 if ( delFut ) { 1888 if ( delFut ) {
1875 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); 1889 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);
1876 mes += delmess; 1890 mes += delmess;
1877 } 1891 }
1878 mes = i18n("Local calendar changed!\n") +mes; 1892 mes = i18n("Local calendar changed!\n") +mes;
1879 mCalendar->checkAlarmForIncidence( 0, true ); 1893 mCalendar->checkAlarmForIncidence( 0, true );
1880 qDebug( mes ); 1894 qDebug( mes );
1881 if ( mSyncManager->mShowSyncSummary ) { 1895 if ( mSyncManager->mShowSyncSummary ) {
1882 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1896 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1883 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1897 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1884 qDebug("KO: WB cancelled "); 1898 qDebug("KO: WB cancelled ");
1885 mSyncManager->mWriteBackFile = false; 1899 mSyncManager->mWriteBackFile = false;
1886 return syncOK; 1900 return syncOK;
1887 } 1901 }
1888 } 1902 }
1889 return syncOK; 1903 return syncOK;
1890} 1904}
1891 1905
1892void CalendarView::setSyncDevice( QString s ) 1906void CalendarView::setSyncDevice( QString s )
1893{ 1907{
1894 mCurrentSyncDevice= s; 1908 mCurrentSyncDevice= s;
1895} 1909}
1896void CalendarView::setSyncName( QString s ) 1910void CalendarView::setSyncName( QString s )
1897{ 1911{
1898 mCurrentSyncName= s; 1912 mCurrentSyncName= s;
1899} 1913}
1900bool CalendarView::syncCalendar(QString filename, int mode) 1914bool CalendarView::syncCalendar(QString filename, int mode)
1901{ 1915{
1902 //qDebug("syncCalendar %s ", filename.latin1()); 1916 //qDebug("syncCalendar %s ", filename.latin1());
1903 mGlobalSyncMode = SYNC_MODE_NORMAL; 1917 mGlobalSyncMode = SYNC_MODE_NORMAL;
1904 CalendarLocal* calendar = new CalendarLocal(); 1918 CalendarLocal* calendar = new CalendarLocal();
1905 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1919 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1906 FileStorage* storage = new FileStorage( calendar ); 1920 FileStorage* storage = new FileStorage( calendar );
1907 bool syncOK = false; 1921 bool syncOK = false;
1908 storage->setFileName( filename ); 1922 storage->setFileName( filename );
1909 // qDebug("loading ... "); 1923 // qDebug("loading ... ");
1910 if ( storage->load() ) { 1924 if ( storage->load() ) {
1911 getEventViewerDialog()->setSyncMode( true ); 1925 getEventViewerDialog()->setSyncMode( true );
1912 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1926 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1913 getEventViewerDialog()->setSyncMode( false ); 1927 getEventViewerDialog()->setSyncMode( false );
1914 if ( syncOK ) { 1928 if ( syncOK ) {
1915 if ( mSyncManager->mWriteBackFile ) 1929 if ( mSyncManager->mWriteBackFile )
1916 { 1930 {
1917 storage->setSaveFormat( new ICalFormat() ); 1931 storage->setSaveFormat( new ICalFormat() );
1918 storage->save(); 1932 storage->save();
1919 } 1933 }
1920 } 1934 }
1921 setModified( true ); 1935 setModified( true );
1922 } 1936 }
1923 delete storage; 1937 delete storage;
1924 delete calendar; 1938 delete calendar;
1925 if ( syncOK ) 1939 if ( syncOK )
1926 updateView(); 1940 updateView();
1927 return syncOK; 1941 return syncOK;
1928} 1942}
1929 1943
1930void CalendarView::syncExternal( int mode ) 1944void CalendarView::syncExternal( int mode )
1931{ 1945{
1932 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1946 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1933 1947
1934 qApp->processEvents(); 1948 qApp->processEvents();
1935 CalendarLocal* calendar = new CalendarLocal(); 1949 CalendarLocal* calendar = new CalendarLocal();
1936 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1950 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1937 bool syncOK = false; 1951 bool syncOK = false;
1938 bool loadSuccess = false; 1952 bool loadSuccess = false;
1939 PhoneFormat* phoneFormat = 0; 1953 PhoneFormat* phoneFormat = 0;
1940 emit tempDisableBR(true); 1954 emit tempDisableBR(true);
1941#ifndef DESKTOP_VERSION 1955#ifndef DESKTOP_VERSION
1942 SharpFormat* sharpFormat = 0; 1956 SharpFormat* sharpFormat = 0;
1943 if ( mode == 0 ) { // sharp 1957 if ( mode == 0 ) { // sharp
1944 sharpFormat = new SharpFormat () ; 1958 sharpFormat = new SharpFormat () ;
1945 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1959 loadSuccess = sharpFormat->load( calendar, mCalendar );
1946 1960
1947 } else 1961 } else
1948#endif 1962#endif
1949 if ( mode == 1 ) { // phone 1963 if ( mode == 1 ) { // phone
1950 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1964 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1951 mSyncManager->mPhoneDevice, 1965 mSyncManager->mPhoneDevice,
1952 mSyncManager->mPhoneConnection, 1966 mSyncManager->mPhoneConnection,
1953 mSyncManager->mPhoneModel); 1967 mSyncManager->mPhoneModel);
1954 loadSuccess = phoneFormat->load( calendar,mCalendar); 1968 loadSuccess = phoneFormat->load( calendar,mCalendar);
1955 1969
1956 } else { 1970 } else {
1957 emit tempDisableBR(false); 1971 emit tempDisableBR(false);
1958 return; 1972 return;
1959 } 1973 }
1960 if ( loadSuccess ) { 1974 if ( loadSuccess ) {
1961 getEventViewerDialog()->setSyncMode( true ); 1975 getEventViewerDialog()->setSyncMode( true );
1962 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1976 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1963 getEventViewerDialog()->setSyncMode( false ); 1977 getEventViewerDialog()->setSyncMode( false );
1964 qApp->processEvents(); 1978 qApp->processEvents();
1965 if ( syncOK ) { 1979 if ( syncOK ) {
1966 if ( mSyncManager->mWriteBackFile ) 1980 if ( mSyncManager->mWriteBackFile )
1967 { 1981 {
1968 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1982 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1969 Incidence* inc = iL.first(); 1983 Incidence* inc = iL.first();
1970 if ( phoneFormat ) { 1984 if ( phoneFormat ) {
1971 while ( inc ) { 1985 while ( inc ) {
1972 inc->removeID(mCurrentSyncDevice); 1986 inc->removeID(mCurrentSyncDevice);
1973 inc = iL.next(); 1987 inc = iL.next();
1974 } 1988 }
1975 } 1989 }
1976#ifndef DESKTOP_VERSION 1990#ifndef DESKTOP_VERSION
1977 if ( sharpFormat ) 1991 if ( sharpFormat )
1978 sharpFormat->save(calendar); 1992 sharpFormat->save(calendar);
1979#endif 1993#endif
1980 if ( phoneFormat ) 1994 if ( phoneFormat )
1981 phoneFormat->save(calendar); 1995 phoneFormat->save(calendar);
1982 iL = calendar->rawIncidences(); 1996 iL = calendar->rawIncidences();
1983 inc = iL.first(); 1997 inc = iL.first();
1984 Incidence* loc; 1998 Incidence* loc;
1985 while ( inc ) { 1999 while ( inc ) {
1986 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 2000 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1987 loc = mCalendar->incidence(inc->uid() ); 2001 loc = mCalendar->incidence(inc->uid() );
1988 if ( loc ) { 2002 if ( loc ) {
1989 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 2003 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1990 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 2004 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1991 } 2005 }
1992 } 2006 }
1993 inc = iL.next(); 2007 inc = iL.next();
1994 } 2008 }
1995 Incidence* lse = getLastSyncEvent(); 2009 Incidence* lse = getLastSyncEvent();
1996 if ( lse ) { 2010 if ( lse ) {
1997 lse->setReadOnly( false ); 2011 lse->setReadOnly( false );
1998 lse->setDescription( "" ); 2012 lse->setDescription( "" );
1999 lse->setReadOnly( true ); 2013 lse->setReadOnly( true );
2000 } 2014 }
2001 } 2015 }
2002 } else { 2016 } else {
2003 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 2017 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
2004 } 2018 }
2005 setModified( true ); 2019 setModified( true );
2006 } else { 2020 } else {
2007 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 2021 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
2008 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 2022 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
2009 question, i18n("Ok")) ; 2023 question, i18n("Ok")) ;
2010 2024
2011 } 2025 }
2012 delete calendar; 2026 delete calendar;
2013 updateView(); 2027 updateView();
2014 emit tempDisableBR(false); 2028 emit tempDisableBR(false);
2015 return ;//syncOK; 2029 return ;//syncOK;
2016 2030
2017} 2031}
2018 2032
2019bool CalendarView::importBday() 2033bool CalendarView::importBday()
2020{ 2034{
2021#ifndef KORG_NOKABC 2035#ifndef KORG_NOKABC
2022 2036
2023#ifdef DESKTOP_VERSION 2037#ifdef DESKTOP_VERSION
2024 int curCal = mCalendar->defaultCalendar(); 2038 int curCal = mCalendar->defaultCalendar();
2025 int bd = mCalEditView->getBirtdayID(); 2039 int bd = mCalEditView->getBirtdayID();
2026 if ( bd == 0 ) 2040 if ( bd == 0 )
2027 return false; 2041 return false;
2028 mCalendar->setDefaultCalendar( bd ); 2042 mCalendar->setDefaultCalendar( bd );
2029 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 2043 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
2030 KABC::AddressBook::Iterator it; 2044 KABC::AddressBook::Iterator it;
2031 int count = 0; 2045 int count = 0;
2032 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2046 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2033 ++count; 2047 ++count;
2034 } 2048 }
2035 QProgressBar bar(count,0 ); 2049 QProgressBar bar(count,0 );
2036 int w = 300; 2050 int w = 300;
2037 if ( QApplication::desktop()->width() < 320 ) 2051 if ( QApplication::desktop()->width() < 320 )
2038 w = 220; 2052 w = 220;
2039 int h = bar.sizeHint().height() ; 2053 int h = bar.sizeHint().height() ;
2040 int dw = QApplication::desktop()->width(); 2054 int dw = QApplication::desktop()->width();
2041 int dh = QApplication::desktop()->height(); 2055 int dh = QApplication::desktop()->height();
2042 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2056 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2043 bar.show(); 2057 bar.show();
2044 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 2058 bar.setCaption (i18n("Reading addressbook - close to abort!") );
2045 qApp->processEvents(); 2059 qApp->processEvents();
2046 count = 0; 2060 count = 0;
2047 int addCount = 0; 2061 int addCount = 0;
2048 KCal::Attendee* a = 0; 2062 KCal::Attendee* a = 0;
2049 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2063 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2050 if ( ! bar.isVisible() ) 2064 if ( ! bar.isVisible() )
2051 return false; 2065 return false;
2052 bar.setProgress( count++ ); 2066 bar.setProgress( count++ );
2053 qApp->processEvents(); 2067 qApp->processEvents();
2054 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 2068 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
2055 if ( (*it).birthday().date().isValid() ){ 2069 if ( (*it).birthday().date().isValid() ){
2056 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2070 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2057 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 2071 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
2058 ++addCount; 2072 ++addCount;
2059 } 2073 }
2060 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 2074 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
2061 if ( anni.isValid() ){ 2075 if ( anni.isValid() ){
2062 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2076 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2063 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 2077 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
2064 ++addCount; 2078 ++addCount;
2065 } 2079 }
2066 } 2080 }
2067 mCalendar->setDefaultCalendar( curCal ); 2081 mCalendar->setDefaultCalendar( curCal );
2068 updateView(); 2082 updateView();
2069 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2083 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2070#else //DESKTOP_VERSION 2084#else //DESKTOP_VERSION
2071 2085
2072 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 2086 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
2073 // the result should now arrive through method insertBirthdays 2087 // the result should now arrive through method insertBirthdays
2074 2088
2075#endif //DESKTOP_VERSION 2089#endif //DESKTOP_VERSION
2076 2090
2077#endif //KORG_NOKABC 2091#endif //KORG_NOKABC
2078 2092
2079 2093
2080 return true; 2094 return true;
2081} 2095}
2082 2096
2083// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 2097// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
2084void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 2098void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
2085 const QStringList& anniversaryList, const QStringList& realNameList, 2099 const QStringList& anniversaryList, const QStringList& realNameList,
2086 const QStringList& emailList, const QStringList& assembledNameList, 2100 const QStringList& emailList, const QStringList& assembledNameList,
2087 const QStringList& uidList) 2101 const QStringList& uidList)
2088{ 2102{
2089 2103
2090 //qDebug("KO::CalendarView::insertBirthdays"); 2104 //qDebug("KO::CalendarView::insertBirthdays");
2091 if (uid == this->name()) 2105 if (uid == this->name())
2092 { 2106 {
2093 int curCal = mCalendar->defaultCalendar(); 2107 int curCal = mCalendar->defaultCalendar();
2094 int bd = mCalEditView->getBirtdayID(); 2108 int bd = mCalEditView->getBirtdayID();
2095 if ( bd == 0 ) 2109 if ( bd == 0 )
2096 return; 2110 return;
2097 mCalendar->setDefaultCalendar( bd ); 2111 mCalendar->setDefaultCalendar( bd );
2098 2112
2099 2113
2100 int count = birthdayList.count(); 2114 int count = birthdayList.count();
2101 int addCount = 0; 2115 int addCount = 0;
2102 KCal::Attendee* a = 0; 2116 KCal::Attendee* a = 0;
2103 2117
2104 //qDebug("CalView 1 %i", count); 2118 //qDebug("CalView 1 %i", count);
2105 2119
2106 QProgressBar bar(count,0 ); 2120 QProgressBar bar(count,0 );
2107 int w = 300; 2121 int w = 300;
2108 if ( QApplication::desktop()->width() < 320 ) 2122 if ( QApplication::desktop()->width() < 320 )
2109 w = 220; 2123 w = 220;
2110 int h = bar.sizeHint().height() ; 2124 int h = bar.sizeHint().height() ;
2111 int dw = QApplication::desktop()->width(); 2125 int dw = QApplication::desktop()->width();
2112 int dh = QApplication::desktop()->height(); 2126 int dh = QApplication::desktop()->height();
2113 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2127 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2114 bar.show(); 2128 bar.show();
2115 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 2129 bar.setCaption (i18n("inserting birthdays - close to abort!") );
2116 qApp->processEvents(); 2130 qApp->processEvents();
2117 2131
2118 QDate birthday; 2132 QDate birthday;
2119 QDate anniversary; 2133 QDate anniversary;
2120 QString realName; 2134 QString realName;
2121 QString email; 2135 QString email;
2122 QString assembledName; 2136 QString assembledName;
2123 QString uid; 2137 QString uid;
2124 bool ok = true; 2138 bool ok = true;
2125 for ( int i = 0; i < count; i++) 2139 for ( int i = 0; i < count; i++)
2126 { 2140 {
2127 if ( ! bar.isVisible() ) 2141 if ( ! bar.isVisible() )
2128 return; 2142 return;
2129 bar.setProgress( i ); 2143 bar.setProgress( i );
2130 qApp->processEvents(); 2144 qApp->processEvents();
2131 2145
2132 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 2146 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
2133 if (!ok) { 2147 if (!ok) {
2134 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 2148 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
2135 } 2149 }
2136 2150
2137 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 2151 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
2138 if (!ok) { 2152 if (!ok) {
2139 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 2153 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
2140 } 2154 }
2141 realName = realNameList[i]; 2155 realName = realNameList[i];
2142 email = emailList[i]; 2156 email = emailList[i];
2143 assembledName = assembledNameList[i]; 2157 assembledName = assembledNameList[i];
2144 uid = uidList[i]; 2158 uid = uidList[i];
2145 //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() ); 2159 //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() );
2146 2160
2147 if ( birthday.isValid() ){ 2161 if ( birthday.isValid() ){
2148 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2162 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2149 KCal::Attendee::ReqParticipant,uid) ; 2163 KCal::Attendee::ReqParticipant,uid) ;
2150 if ( addAnniversary( birthday, assembledName, a, true ) ) 2164 if ( addAnniversary( birthday, assembledName, a, true ) )
2151 ++addCount; 2165 ++addCount;
2152 } 2166 }
2153 2167
2154 if ( anniversary.isValid() ){ 2168 if ( anniversary.isValid() ){
2155 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2169 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2156 KCal::Attendee::ReqParticipant,uid) ; 2170 KCal::Attendee::ReqParticipant,uid) ;
2157 if ( addAnniversary( anniversary, assembledName, a, false ) ) 2171 if ( addAnniversary( anniversary, assembledName, a, false ) )
2158 ++addCount; 2172 ++addCount;
2159 } 2173 }
2160 } 2174 }
2161 2175
2162 mCalendar->setDefaultCalendar( curCal ); 2176 mCalendar->setDefaultCalendar( curCal );
2163 updateView(); 2177 updateView();
2164 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2178 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2165 2179
2166 } 2180 }
2167 2181
2168} 2182}
2169 2183
2170 2184
2171 2185
2172bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 2186bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
2173{ 2187{
2174 //qDebug("addAnni "); 2188 //qDebug("addAnni ");
2175 Event * ev = new Event(); 2189 Event * ev = new Event();
2176 ev->setOrganizer(KOPrefs::instance()->email()); 2190 ev->setOrganizer(KOPrefs::instance()->email());
2177 if ( a ) { 2191 if ( a ) {
2178 ev->addAttendee( a ); 2192 ev->addAttendee( a );
2179 } 2193 }
2180 QString kind; 2194 QString kind;
2181 if ( birthday ) { 2195 if ( birthday ) {
2182 kind = i18n( "Birthday" ); 2196 kind = i18n( "Birthday" );
2183 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 2197 ev->setSummary( name + " (" + QString::number(date.year()) +")");
2184 } 2198 }
2185 else { 2199 else {
2186 kind = i18n( "Anniversary" ); 2200 kind = i18n( "Anniversary" );
2187 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 2201 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
2188 } 2202 }
2189 ev->setCategories( kind ); 2203 ev->setCategories( kind );
2190 ev->setDtStart( QDateTime(date) ); 2204 ev->setDtStart( QDateTime(date) );
2191 ev->setDtEnd( QDateTime(date) ); 2205 ev->setDtEnd( QDateTime(date) );
2192 ev->setFloats( true ); 2206 ev->setFloats( true );
2193 Recurrence * rec = ev->recurrence(); 2207 Recurrence * rec = ev->recurrence();
2194 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 2208 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
2195 rec->addYearlyNum( date.month() ); 2209 rec->addYearlyNum( date.month() );
2196 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 2210 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
2197 delete ev; 2211 delete ev;
2198 return false; 2212 return false;
2199 } 2213 }
2200 return true; 2214 return true;
2201 2215
2202} 2216}
2203bool CalendarView::importQtopia( const QString &categories, 2217bool CalendarView::importQtopia( const QString &categories,
2204 const QString &datebook, 2218 const QString &datebook,
2205 const QString &todolist ) 2219 const QString &todolist )
2206{ 2220{
2207 2221
2208 QtopiaFormat qtopiaFormat; 2222 QtopiaFormat qtopiaFormat;
2209 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2223 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2210 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 2224 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
2211 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 2225 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
2212 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 2226 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
2213 2227
2214 updateView(); 2228 updateView();
2215 return true; 2229 return true;
2216 2230
2217#if 0 2231#if 0
2218 mGlobalSyncMode = SYNC_MODE_QTOPIA; 2232 mGlobalSyncMode = SYNC_MODE_QTOPIA;
2219 mCurrentSyncDevice = "qtopia-XML"; 2233 mCurrentSyncDevice = "qtopia-XML";
2220 if ( mSyncManager->mAskForPreferences ) 2234 if ( mSyncManager->mAskForPreferences )
2221 edit_sync_options(); 2235 edit_sync_options();
2222 qApp->processEvents(); 2236 qApp->processEvents();
2223 CalendarLocal* calendar = new CalendarLocal(); 2237 CalendarLocal* calendar = new CalendarLocal();
2224 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2238 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2225 bool syncOK = false; 2239 bool syncOK = false;
2226 QtopiaFormat qtopiaFormat; 2240 QtopiaFormat qtopiaFormat;
2227 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2241 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2228 bool loadOk = true; 2242 bool loadOk = true;
2229 if ( !categories.isEmpty() ) 2243 if ( !categories.isEmpty() )
2230 loadOk = qtopiaFormat.load( calendar, categories ); 2244 loadOk = qtopiaFormat.load( calendar, categories );
2231 if ( loadOk && !datebook.isEmpty() ) 2245 if ( loadOk && !datebook.isEmpty() )
2232 loadOk = qtopiaFormat.load( calendar, datebook ); 2246 loadOk = qtopiaFormat.load( calendar, datebook );
2233 if ( loadOk && !todolist.isEmpty() ) 2247 if ( loadOk && !todolist.isEmpty() )
2234 loadOk = qtopiaFormat.load( calendar, todolist ); 2248 loadOk = qtopiaFormat.load( calendar, todolist );
2235 2249
2236 if ( loadOk ) { 2250 if ( loadOk ) {
2237 getEventViewerDialog()->setSyncMode( true ); 2251 getEventViewerDialog()->setSyncMode( true );
2238 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2252 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2239 getEventViewerDialog()->setSyncMode( false ); 2253 getEventViewerDialog()->setSyncMode( false );
2240 qApp->processEvents(); 2254 qApp->processEvents();
2241 if ( syncOK ) { 2255 if ( syncOK ) {
2242 if ( mSyncManager->mWriteBackFile ) 2256 if ( mSyncManager->mWriteBackFile )
2243 { 2257 {
2244 // write back XML file 2258 // write back XML file
2245 2259
2246 } 2260 }
2247 setModified( true ); 2261 setModified( true );
2248 } 2262 }
2249 } else { 2263 } else {
2250 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 2264 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
2251 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 2265 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
2252 question, i18n("Ok")) ; 2266 question, i18n("Ok")) ;
2253 } 2267 }
2254 delete calendar; 2268 delete calendar;
2255 updateView(); 2269 updateView();
2256 return syncOK; 2270 return syncOK;
2257 2271
2258 2272
2259#endif 2273#endif
2260 2274
2261} 2275}
2262 2276
2263void CalendarView::setSyncEventsReadOnly() 2277void CalendarView::setSyncEventsReadOnly()
2264{ 2278{
2265 mCalendar->setSyncEventsReadOnly(); 2279 mCalendar->setSyncEventsReadOnly();
2266} 2280}
2267 2281
2268bool CalendarView::loadCalendars() 2282bool CalendarView::loadCalendars()
2269{ 2283{
2270 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2284 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2271 KopiCalendarFile * cal = calendars.first(); 2285 KopiCalendarFile * cal = calendars.first();
2272 mCalendar->setDefaultCalendar( 1 ); 2286 mCalendar->setDefaultCalendar( 1 );
2273 openCalendar( MainWindow::defaultFileName(), false ); 2287 openCalendar( MainWindow::defaultFileName(), false );
2274 cal = calendars.next(); 2288 cal = calendars.next();
2275 while ( cal ) { 2289 while ( cal ) {
2276 addCalendar( cal ); 2290 addCalendar( cal );
2277 cal = calendars.next(); 2291 cal = calendars.next();
2278 } 2292 }
2279 restoreCalendarSettings(); 2293 restoreCalendarSettings();
2280 return true; 2294 return true;
2281} 2295}
2282bool CalendarView::restoreCalendarSettings() 2296bool CalendarView::restoreCalendarSettings()
2283{ 2297{
2284 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2298 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2285 KopiCalendarFile * cal = calendars.first(); 2299 KopiCalendarFile * cal = calendars.first();
2286 while ( cal ) { 2300 while ( cal ) {
2287 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 2301 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
2288 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 2302 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
2289 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 2303 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
2290 if ( cal->isStandard ) 2304 if ( cal->isStandard )
2291 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2305 mCalendar->setDefaultCalendar( cal->mCalNumber );
2292 cal = calendars.next(); 2306 cal = calendars.next();
2293 } 2307 }
2294 setSyncEventsReadOnly(); 2308 setSyncEventsReadOnly();
2295 mCalendar->reInitAlarmSettings(); 2309 mCalendar->reInitAlarmSettings();
2296 updateUnmanagedViews(); 2310 updateUnmanagedViews();
2297 updateView(); 2311 updateView();
2298 return true; 2312 return true;
2299} 2313}
2300void CalendarView::addCalendarId( int id ) 2314void CalendarView::addCalendarId( int id )
2301{ 2315{
2302 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 2316 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
2303 if ( cal ) 2317 if ( cal )
2304 addCalendar( cal ); 2318 addCalendar( cal );
2305} 2319}
2306bool CalendarView::addCalendar( KopiCalendarFile * cal ) 2320bool CalendarView::addCalendar( KopiCalendarFile * cal )
2307{ 2321{
2308 cal->mErrorOnLoad = false; 2322 cal->mErrorOnLoad = false;
2309 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 2323 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
2310 cal->mLoadDt = QDateTime::currentDateTime(); 2324 cal->mLoadDt = QDateTime::currentDateTime();
2311 return true; 2325 return true;
2312 } 2326 }
2313 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 2327 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
2314 cal->mErrorOnLoad = true; 2328 cal->mErrorOnLoad = true;
2315 return false; 2329 return false;
2316} 2330}
2317bool CalendarView::openCalendar(QString filename, bool merge) 2331bool CalendarView::openCalendar(QString filename, bool merge)
2318{ 2332{
2319 2333
2320 if (filename.isEmpty()) { 2334 if (filename.isEmpty()) {
2321 return false; 2335 return false;
2322 } 2336 }
2323 2337
2324 if (!QFile::exists(filename)) { 2338 if (!QFile::exists(filename)) {
2325 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 2339 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
2326 return false; 2340 return false;
2327 } 2341 }
2328 2342
2329 globalFlagBlockAgenda = 1; 2343 globalFlagBlockAgenda = 1;
2330 clearAllViews(); 2344 clearAllViews();
2331 if (!merge) { 2345 if (!merge) {
2332 mViewManager->setDocumentId( filename ); 2346 mViewManager->setDocumentId( filename );
2333 mCalendar->close(); 2347 mCalendar->close();
2334 } 2348 }
2335 mStorage->setFileName( filename ); 2349 mStorage->setFileName( filename );
2336 2350
2337 if ( mStorage->load() ) { 2351 if ( mStorage->load() ) {
2338 if ( merge ) ;//setModified( true ); 2352 if ( merge ) ;//setModified( true );
2339 else { 2353 else {
2340 //setModified( true ); 2354 //setModified( true );
2341 mViewManager->setDocumentId( filename ); 2355 mViewManager->setDocumentId( filename );
2342 mDialogManager->setDocumentId( filename ); 2356 mDialogManager->setDocumentId( filename );
2343 mTodoList->setDocumentId( filename ); 2357 mTodoList->setDocumentId( filename );
2344 } 2358 }
2345 globalFlagBlockAgenda = 2; 2359 globalFlagBlockAgenda = 2;
2346 // if ( getLastSyncEvent() ) 2360 // if ( getLastSyncEvent() )
2347 // getLastSyncEvent()->setReadOnly( true ); 2361 // getLastSyncEvent()->setReadOnly( true );
2348 mCalendar->reInitAlarmSettings(); 2362 mCalendar->reInitAlarmSettings();
2349 setSyncEventsReadOnly(); 2363 setSyncEventsReadOnly();
2350 updateUnmanagedViews(); 2364 updateUnmanagedViews();
2351 updateView(); 2365 updateView();
2352 if ( filename != MainWindow::defaultFileName() ) { 2366 if ( filename != MainWindow::defaultFileName() ) {
2353 saveCalendar( MainWindow::defaultFileName() ); 2367 saveCalendar( MainWindow::defaultFileName() );
2354 } else { 2368 } else {
2355 QFileInfo finf ( MainWindow::defaultFileName()); 2369 QFileInfo finf ( MainWindow::defaultFileName());
2356 if ( finf.exists() ) { 2370 if ( finf.exists() ) {
2357 setLoadedFileVersion( finf.lastModified () ); 2371 setLoadedFileVersion( finf.lastModified () );
2358 } 2372 }
2359 } 2373 }
2360 return true; 2374 return true;
2361 } else { 2375 } else {
2362 // while failing to load, the calendar object could 2376 // while failing to load, the calendar object could
2363 // have become partially populated. Clear it out. 2377 // have become partially populated. Clear it out.
2364 if ( !merge ) { 2378 if ( !merge ) {
2365 mCalendar->close(); 2379 mCalendar->close();
2366 mViewManager->setDocumentId( filename ); 2380 mViewManager->setDocumentId( filename );
2367 mDialogManager->setDocumentId( filename ); 2381 mDialogManager->setDocumentId( filename );
2368 mTodoList->setDocumentId( filename ); 2382 mTodoList->setDocumentId( filename );
2369 } 2383 }
2370 2384
2371 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2385 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2372 2386
2373 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2387 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2374 globalFlagBlockAgenda = 2; 2388 globalFlagBlockAgenda = 2;
2375 mCalendar->reInitAlarmSettings(); 2389 mCalendar->reInitAlarmSettings();
2376 setSyncEventsReadOnly(); 2390 setSyncEventsReadOnly();
2377 updateUnmanagedViews(); 2391 updateUnmanagedViews();
2378 updateView(); 2392 updateView();
2379 } 2393 }
2380 return false; 2394 return false;
2381} 2395}
2382void CalendarView::mergeFile( QString fn ) 2396void CalendarView::mergeFile( QString fn )
2383{ 2397{
2384 clearAllViews(); 2398 clearAllViews();
2385 mCalendar->mergeCalendarFile( fn ); 2399 mCalendar->mergeCalendarFile( fn );
2386 mCalendar->reInitAlarmSettings(); 2400 mCalendar->reInitAlarmSettings();
2387 setSyncEventsReadOnly(); 2401 setSyncEventsReadOnly();
2388 updateUnmanagedViews(); 2402 updateUnmanagedViews();
2389 updateView(); 2403 updateView();
2390} 2404}
2391void CalendarView::showOpenError() 2405void CalendarView::showOpenError()
2392{ 2406{
2393 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2407 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2394} 2408}
2395void CalendarView::setLoadedFileVersion(QDateTime dt) 2409void CalendarView::setLoadedFileVersion(QDateTime dt)
2396{ 2410{
2397 loadedFileVersion = dt; 2411 loadedFileVersion = dt;
2398} 2412}
2399bool CalendarView::checkFileChanged(QString fn) 2413bool CalendarView::checkFileChanged(QString fn)
2400{ 2414{
2401 QFileInfo finf ( fn ); 2415 QFileInfo finf ( fn );
2402 if ( !finf.exists() ) 2416 if ( !finf.exists() )
2403 return true; 2417 return true;
2404 QDateTime dt = finf.lastModified (); 2418 QDateTime dt = finf.lastModified ();
2405 if ( dt <= loadedFileVersion ) 2419 if ( dt <= loadedFileVersion )
2406 return false; 2420 return false;
2407 return true; 2421 return true;
2408 2422
2409} 2423}
2410void CalendarView::watchSavedFile() 2424void CalendarView::watchSavedFile()
2411{ 2425{
2412 QFileInfo finf ( MainWindow::defaultFileName()); 2426 QFileInfo finf ( MainWindow::defaultFileName());
2413 if ( !finf.exists() ) 2427 if ( !finf.exists() )
2414 return; 2428 return;
2415 QDateTime dt = finf.lastModified (); 2429 QDateTime dt = finf.lastModified ();
2416 if ( dt < loadedFileVersion ) { 2430 if ( dt < loadedFileVersion ) {
2417 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2431 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2418 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2432 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2419 return; 2433 return;
2420 } 2434 }
2421 loadedFileVersion = dt; 2435 loadedFileVersion = dt;
2422} 2436}
2423bool CalendarView::checkAllFileVersions() 2437bool CalendarView::checkAllFileVersions()
2424{ 2438{
2425 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2439 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2426 KopiCalendarFile * cal = calendars.first(); 2440 KopiCalendarFile * cal = calendars.first();
2427 mCalendar->setDefaultCalendar( 1 ); 2441 mCalendar->setDefaultCalendar( 1 );
2428 mCalendar->setDefaultCalendarEnabledOnly(); 2442 mCalendar->setDefaultCalendarEnabledOnly();
2429 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2443 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2430 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2444 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2431 restoreCalendarSettings(); 2445 restoreCalendarSettings();
2432 return false; 2446 return false;
2433 } 2447 }
2434 } 2448 }
2435 cal = calendars.next(); 2449 cal = calendars.next();
2436 QDateTime storeTemp = loadedFileVersion; 2450 QDateTime storeTemp = loadedFileVersion;
2437 while ( cal ) { 2451 while ( cal ) {
2438 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2452 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2439 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2453 mCalendar->setDefaultCalendar( cal->mCalNumber );
2440 mCalendar->setDefaultCalendarEnabledOnly(); 2454 mCalendar->setDefaultCalendarEnabledOnly();
2441 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2455 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2442 if ( !checkFileVersion(cal->mFileName )) { 2456 if ( !checkFileVersion(cal->mFileName )) {
2443 loadedFileVersion = storeTemp; 2457 loadedFileVersion = storeTemp;
2444 restoreCalendarSettings(); 2458 restoreCalendarSettings();
2445 return false; 2459 return false;
2446 } 2460 }
2447 } 2461 }
2448 cal = calendars.next(); 2462 cal = calendars.next();
2449 } 2463 }
2450 loadedFileVersion = storeTemp; 2464 loadedFileVersion = storeTemp;
2451 return true; 2465 return true;
2452} 2466}
2453bool CalendarView::checkFileVersion(QString fn) 2467bool CalendarView::checkFileVersion(QString fn)
2454{ 2468{
2455 QFileInfo finf ( fn ); 2469 QFileInfo finf ( fn );
2456 if ( !finf.exists() ) 2470 if ( !finf.exists() )
2457 return true; 2471 return true;
2458 QDateTime dt = finf.lastModified (); 2472 QDateTime dt = finf.lastModified ();
2459 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2473 qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2460 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2474 qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2461 if ( dt <= loadedFileVersion ) 2475 if ( dt <= loadedFileVersion )
2462 return true; 2476 return true;
2463 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)) , 2477 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)) ,
2464 i18n("KO/Pi Warning"),i18n("Overwrite"), 2478 i18n("KO/Pi Warning"),i18n("Overwrite"),
2465 i18n("Sync+save")); 2479 i18n("Sync+save"));
2466 2480
2467 if ( km == KMessageBox::Cancel ) 2481 if ( km == KMessageBox::Cancel )
2468 return false; 2482 return false;
2469 if ( km == KMessageBox::Yes ) 2483 if ( km == KMessageBox::Yes )
2470 return true; 2484 return true;
2471 2485
2472 setSyncDevice("deleteaftersync" ); 2486 setSyncDevice("deleteaftersync" );
2473 mSyncManager->mAskForPreferences = true; 2487 mSyncManager->mAskForPreferences = true;
2474 mSyncManager->mSyncAlgoPrefs = 3; 2488 mSyncManager->mSyncAlgoPrefs = 3;
2475 mSyncManager->mWriteBackFile = false; 2489 mSyncManager->mWriteBackFile = false;
2476 mSyncManager->mWriteBackExistingOnly = false; 2490 mSyncManager->mWriteBackExistingOnly = false;
2477 mSyncManager->mShowSyncSummary = false; 2491 mSyncManager->mShowSyncSummary = false;
2478 syncCalendar( fn, 3 ); 2492 syncCalendar( fn, 3 );
2479 Event * e = getLastSyncEvent(); 2493 Event * e = getLastSyncEvent();
2480 if ( e ) 2494 if ( e )
2481 mCalendar->deleteEvent( e ); 2495 mCalendar->deleteEvent( e );
2482 return true; 2496 return true;
2483} 2497}
2484bool CalendarView::saveCalendars() 2498bool CalendarView::saveCalendars()
2485{ 2499{
2486 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2500 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2487 KopiCalendarFile * cal = calendars.first(); 2501 KopiCalendarFile * cal = calendars.first();
2488 mCalendar->setDefaultCalendar( 1 ); 2502 mCalendar->setDefaultCalendar( 1 );
2489 mCalendar->setDefaultCalendarEnabledOnly(); 2503 mCalendar->setDefaultCalendarEnabledOnly();
2490 saveCalendar( MainWindow::defaultFileName() ); 2504 saveCalendar( MainWindow::defaultFileName() );
2491 cal = calendars.next(); 2505 cal = calendars.next();
2492 while ( cal ) { 2506 while ( cal ) {
2493 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2507 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2494 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2508 mCalendar->setDefaultCalendar( cal->mCalNumber );
2495 mCalendar->setDefaultCalendarEnabledOnly(); 2509 mCalendar->setDefaultCalendarEnabledOnly();
2496 if ( saveCalendar( cal->mFileName ) ) 2510 if ( saveCalendar( cal->mFileName ) )
2497 cal->mLoadDt = QDateTime::currentDateTime(); 2511 cal->mLoadDt = QDateTime::currentDateTime();
2498 } 2512 }
2499 cal = calendars.next(); 2513 cal = calendars.next();
2500 } 2514 }
2501 restoreCalendarSettings(); 2515 restoreCalendarSettings();
2502 return true; 2516 return true;
2503} 2517}
2504bool CalendarView::saveCalendar( QString filename ) 2518bool CalendarView::saveCalendar( QString filename )
2505{ 2519{
2506 2520
2507 // Store back all unsaved data into calendar object 2521 // Store back all unsaved data into calendar object
2508 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2522 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2509 if ( mViewManager->currentView() ) 2523 if ( mViewManager->currentView() )
2510 mViewManager->currentView()->flushView(); 2524 mViewManager->currentView()->flushView();
2511 2525
2512 2526
2513 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2527 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2514 mStorage->setSaveFormat( new ICalFormat() ); 2528 mStorage->setSaveFormat( new ICalFormat() );
2515 mStorage->setFileName( filename ); 2529 mStorage->setFileName( filename );
2516 bool success; 2530 bool success;
2517 success = mStorage->save(); 2531 success = mStorage->save();
2518 if ( !success ) { 2532 if ( !success ) {
2519 return false; 2533 return false;
2520 } 2534 }
2521 if ( filename == MainWindow::defaultFileName() ) { 2535 if ( filename == MainWindow::defaultFileName() ) {
2522 setLoadedFileVersion( lfv ); 2536 setLoadedFileVersion( lfv );
2523 watchSavedFile(); 2537 watchSavedFile();
2524 } 2538 }
2525 return true; 2539 return true;
2526} 2540}
2527 2541
2528void CalendarView::closeCalendar() 2542void CalendarView::closeCalendar()
2529{ 2543{
2530 2544
2531 // child windows no longer valid 2545 // child windows no longer valid
2532 clearAllViews(); 2546 clearAllViews();
2533 emit closingDown(); 2547 emit closingDown();
2534 2548
2535 mCalendar->close(); 2549 mCalendar->close();
2536 setModified(false); 2550 setModified(false);
2537 updateView(); 2551 updateView();
2538} 2552}
2539 2553
2540void CalendarView::archiveCalendar() 2554void CalendarView::archiveCalendar()
2541{ 2555{
2542 mDialogManager->showArchiveDialog(); 2556 mDialogManager->showArchiveDialog();
2543} 2557}
2544 2558
2545 2559
2546void CalendarView::readSettings() 2560void CalendarView::readSettings()
2547{ 2561{
2548 2562
2549 2563
2550 // mViewManager->showAgendaView(); 2564 // mViewManager->showAgendaView();
2551 QString str; 2565 QString str;
2552 //qDebug("CalendarView::readSettings() "); 2566 //qDebug("CalendarView::readSettings() ");
2553 // read settings from the KConfig, supplying reasonable 2567 // read settings from the KConfig, supplying reasonable
2554 // defaults where none are to be found 2568 // defaults where none are to be found
2555 KConfig *config = KOGlobals::config(); 2569 KConfig *config = KOGlobals::config();
2556#ifndef KORG_NOSPLITTER 2570#ifndef KORG_NOSPLITTER
2557 config->setGroup("KOrganizer Geometry"); 2571 config->setGroup("KOrganizer Geometry");
2558 2572
2559 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2573 QValueList<int> sizes = config->readIntListEntry("Separator1");
2560 if (sizes.count() != 2) { 2574 if (sizes.count() != 2) {
2561 sizes << mDateNavigator->minimumSizeHint().width(); 2575 sizes << mDateNavigator->minimumSizeHint().width();
2562 sizes << 300; 2576 sizes << 300;
2563 } 2577 }
2564 mPanner->setSizes(sizes); 2578 mPanner->setSizes(sizes);
2565 2579
2566 sizes = config->readIntListEntry("Separator2"); 2580 sizes = config->readIntListEntry("Separator2");
2567 if ( ( mResourceView && sizes.count() == 4 ) || 2581 if ( ( mResourceView && sizes.count() == 4 ) ||
2568 ( !mResourceView && sizes.count() == 3 ) ) { 2582 ( !mResourceView && sizes.count() == 3 ) ) {
2569 mLeftSplitter->setSizes(sizes); 2583 mLeftSplitter->setSizes(sizes);
2570 } 2584 }
2571#endif 2585#endif
2572 globalFlagBlockAgenda = 1; 2586 globalFlagBlockAgenda = 1;
2573 mViewManager->showAgendaView(); 2587 mViewManager->showAgendaView();
2574 //mViewManager->readSettings( config ); 2588 //mViewManager->readSettings( config );
2575 mTodoList->restoreLayout(config,QString("Todo Layout")); 2589 mTodoList->restoreLayout(config,QString("Todo Layout"));
2576 readFilterSettings(config); 2590 readFilterSettings(config);
2577 2591
2578#ifdef DESKTOP_VERSION 2592#ifdef DESKTOP_VERSION
2579 config->setGroup("WidgetLayout"); 2593 config->setGroup("WidgetLayout");
2580 QStringList list; 2594 QStringList list;
2581 list = config->readListEntry("MainLayout"); 2595 list = config->readListEntry("MainLayout");
2582 int x,y,w,h; 2596 int x,y,w,h;
2583 if ( ! list.isEmpty() ) { 2597 if ( ! list.isEmpty() ) {
2584 x = list[0].toInt(); 2598 x = list[0].toInt();
2585 y = list[1].toInt(); 2599 y = list[1].toInt();
2586 w = list[2].toInt(); 2600 w = list[2].toInt();
2587 h = list[3].toInt(); 2601 h = list[3].toInt();
2588 KApplication::testCoords( &x,&y,&w,&h ); 2602 KApplication::testCoords( &x,&y,&w,&h );
2589 topLevelWidget()->setGeometry(x,y,w,h); 2603 topLevelWidget()->setGeometry(x,y,w,h);
2590 2604
2591 } else { 2605 } else {
2592 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2606 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2593 } 2607 }
2594 list = config->readListEntry("EditEventLayout"); 2608 list = config->readListEntry("EditEventLayout");