summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-06-11 09:22:29 (UTC)
committer zautrix <zautrix>2005-06-11 09:22:29 (UTC)
commitd4501288ba7414ba89a791dd2c306e9f74eeb3fa (patch) (unidiff)
treea99b30c87947a22f9c2da3ab5426f4e5ed8de9ab /korganizer
parentb214921b2072079ec59a87ac84231f83532009d5 (diff)
downloadkdepimpi-d4501288ba7414ba89a791dd2c306e9f74eeb3fa.zip
kdepimpi-d4501288ba7414ba89a791dd2c306e9f74eeb3fa.tar.gz
kdepimpi-d4501288ba7414ba89a791dd2c306e9f74eeb3fa.tar.bz2
fixx
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp4
-rw-r--r--korganizer/kofilterview.cpp2
-rw-r--r--korganizer/kofilterview.h50
3 files changed, 54 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index ea100d1..8d992b9 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,1241 +1,1242 @@
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 "kodialogmanager.h" 107#include "kodialogmanager.h"
108#include "outgoingdialog.h" 108#include "outgoingdialog.h"
109#include "incomingdialog.h" 109#include "incomingdialog.h"
110#include "datenavigatorcontainer.h" 110#include "datenavigatorcontainer.h"
111#include "statusdialog.h" 111#include "statusdialog.h"
112#include "kdatenavigator.h" 112#include "kdatenavigator.h"
113#include "kotodoview.h" 113#include "kotodoview.h"
114#include "datenavigator.h" 114#include "datenavigator.h"
115#include "resourceview.h" 115#include "resourceview.h"
116#include "navigatorbar.h" 116#include "navigatorbar.h"
117#include "searchdialog.h" 117#include "searchdialog.h"
118#include "mainwindow.h" 118#include "mainwindow.h"
119 119
120#include "calendarview.h" 120#include "calendarview.h"
121#ifndef DESKTOP_VERSION 121#ifndef DESKTOP_VERSION
122#include <qtopia/alarmserver.h> 122#include <qtopia/alarmserver.h>
123#endif 123#endif
124#ifndef _WIN32_ 124#ifndef _WIN32_
125#include <stdlib.h> 125#include <stdlib.h>
126#include <stdio.h> 126#include <stdio.h>
127#include <unistd.h> 127#include <unistd.h>
128#else 128#else
129#include <qprocess.h> 129#include <qprocess.h>
130#endif 130#endif
131 131
132#ifdef DESKTOP_VERSION 132#ifdef DESKTOP_VERSION
133#include <kabc/stdaddressbook.h> 133#include <kabc/stdaddressbook.h>
134#endif 134#endif
135using namespace KOrg; 135using namespace KOrg;
136using namespace KCal; 136using namespace KCal;
137extern int globalFlagBlockAgenda; 137extern int globalFlagBlockAgenda;
138extern int globalFlagBlockStartup; 138extern int globalFlagBlockStartup;
139 139
140 140
141MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent) 141MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent)
142 142
143{ 143{
144 mAlarms = alarms; 144 mAlarms = alarms;
145 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) ); 145 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) );
146 QString mText = "<table width=\"100%\">\n"; 146 QString mText = "<table width=\"100%\">\n";
147 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 147 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
148#ifdef DESKTOP_VERSION 148#ifdef DESKTOP_VERSION
149 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 149 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
150#else 150#else
151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>"; 151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>";
152#endif 152#endif
153 // mText += "<img src=\""; 153 // mText += "<img src=\"";
154 // mText += ipath; 154 // mText += ipath;
155 // mText += "\">"; 155 // mText += "\">";
156 //mEventDate = QDate::currentDate(); 156 //mEventDate = QDate::currentDate();
157#ifdef DESKTOP_VERSION 157#ifdef DESKTOP_VERSION
158 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>"; 158 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>";
159#else 159#else
160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>"; 160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>";
161#endif 161#endif
162 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 162 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
163 163
164 Incidence * inc = getNextInc( start ); 164 Incidence * inc = getNextInc( start );
165 int time = 0; 165 int time = 0;
166 //mText += "<table>"; 166 //mText += "<table>";
167 while ( inc ) { 167 while ( inc ) {
168 QDateTime dt ; 168 QDateTime dt ;
169 QString tempText = "<a "; 169 QString tempText = "<a ";
170 bool ok; 170 bool ok;
171 dt = inc->getNextOccurence( start, &ok ); 171 dt = inc->getNextOccurence( start, &ok );
172 if ( !ok ) continue; 172 if ( !ok ) continue;
173 if ( inc->typeID() == eventID ) { 173 if ( inc->typeID() == eventID ) {
174 tempText += "href=\"event:"; 174 tempText += "href=\"event:";
175 } else if ( inc->typeID() == todoID ) { 175 } else if ( inc->typeID() == todoID ) {
176 tempText += "href=\"todo:"; 176 tempText += "href=\"todo:";
177 } 177 }
178 tempText += inc->uid() + "\">"; 178 tempText += inc->uid() + "\">";
179 if ( inc->typeID() == todoID ) 179 if ( inc->typeID() == todoID )
180 tempText += i18n("Todo: "); 180 tempText += i18n("Todo: ");
181 if ( inc->summary().length() > 0 ) 181 if ( inc->summary().length() > 0 )
182 tempText += inc->summary(); 182 tempText += inc->summary();
183 else 183 else
184 tempText += i18n("-no summary-"); 184 tempText += i18n("-no summary-");
185 QString timestr; 185 QString timestr;
186 if (!inc->doesFloat()) 186 if (!inc->doesFloat())
187 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": "; 187 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": ";
188 else 188 else
189 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 189 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
190 if ( dt.date() < QDate::currentDate() && time == 0 ) { 190 if ( dt.date() < QDate::currentDate() && time == 0 ) {
191 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 191 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
192 mText += "<table>"; 192 mText += "<table>";
193 time = 1; 193 time = 1;
194 } 194 }
195 if ( dt.date() == QDate::currentDate() && time <= 1 ) { 195 if ( dt.date() == QDate::currentDate() && time <= 1 ) {
196 if ( time > 0 ) 196 if ( time > 0 )
197 mText +="</table>"; 197 mText +="</table>";
198 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>"; 198 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>";
199 mText += "<table>"; 199 mText += "<table>";
200 time = 2; 200 time = 2;
201 201
202 } 202 }
203 if ( dt.date() > QDate::currentDate() && time <= 2 ) { 203 if ( dt.date() > QDate::currentDate() && time <= 2 ) {
204 if ( time > 0 ) 204 if ( time > 0 )
205 mText +="</table>"; 205 mText +="</table>";
206 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>"; 206 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>";
207 mText += "<table>"; 207 mText += "<table>";
208 time = 3; 208 time = 3;
209 } 209 }
210 mText +="<tr><td><b>"; 210 mText +="<tr><td><b>";
211 mText += timestr; 211 mText += timestr;
212 mText += "</b></td><td>"; 212 mText += "</b></td><td>";
213 mText += tempText; 213 mText += tempText;
214 mText += "</td></tr>\n"; 214 mText += "</td></tr>\n";
215 inc = getNextInc( start ); 215 inc = getNextInc( start );
216 } 216 }
217 mText +="</table>"; 217 mText +="</table>";
218 setText( mText ); 218 setText( mText );
219} 219}
220 220
221MissedAlarmTextBrowser::~MissedAlarmTextBrowser() 221MissedAlarmTextBrowser::~MissedAlarmTextBrowser()
222{ 222{
223 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() "); 223 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() ");
224} 224}
225Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start ) 225Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start )
226{ 226{
227 QDateTime dt ; 227 QDateTime dt ;
228 Incidence * retInc; 228 Incidence * retInc;
229 Incidence * inc = mAlarms.first(); 229 Incidence * inc = mAlarms.first();
230 if ( inc == 0 ) 230 if ( inc == 0 )
231 return 0; 231 return 0;
232 bool ok; 232 bool ok;
233 dt = inc->getNextOccurence( start, &ok ); 233 dt = inc->getNextOccurence( start, &ok );
234 if ( ! ok ) return 0; 234 if ( ! ok ) return 0;
235 QDateTime dtn ; 235 QDateTime dtn ;
236 retInc = inc; 236 retInc = inc;
237 inc = mAlarms.next(); 237 inc = mAlarms.next();
238 while ( inc ) { 238 while ( inc ) {
239 dtn = inc->getNextOccurence( start, &ok ); 239 dtn = inc->getNextOccurence( start, &ok );
240 if ( ! ok ) return 0; 240 if ( ! ok ) return 0;
241 if ( dtn < dt ) { 241 if ( dtn < dt ) {
242 dt = dtn; 242 dt = dtn;
243 retInc = inc; 243 retInc = inc;
244 } 244 }
245 inc = mAlarms.next(); 245 inc = mAlarms.next();
246 } 246 }
247 mAlarms.remove( retInc ); 247 mAlarms.remove( retInc );
248 return retInc; 248 return retInc;
249 249
250} 250}
251void MissedAlarmTextBrowser::setSource(const QString & n) 251void MissedAlarmTextBrowser::setSource(const QString & n)
252{ 252{
253 if (n.startsWith("event:")) { 253 if (n.startsWith("event:")) {
254#ifdef DESKTOP_VERSION 254#ifdef DESKTOP_VERSION
255 emit showIncidence(n.mid(8)); 255 emit showIncidence(n.mid(8));
256#else 256#else
257 emit showIncidence(n.mid(6)); 257 emit showIncidence(n.mid(6));
258#endif 258#endif
259 return; 259 return;
260 } else if (n.startsWith("todo:")) { 260 } else if (n.startsWith("todo:")) {
261#ifdef DESKTOP_VERSION 261#ifdef DESKTOP_VERSION
262 emit showIncidence(n.mid(7)); 262 emit showIncidence(n.mid(7));
263#else 263#else
264 emit showIncidence(n.mid(5)); 264 emit showIncidence(n.mid(5));
265#endif 265#endif
266 return; 266 return;
267 } 267 }
268} 268}
269 269
270 270
271class KOBeamPrefs : public QDialog 271class KOBeamPrefs : public QDialog
272{ 272{
273 public: 273 public:
274 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 274 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
275 QDialog( parent, name, true ) 275 QDialog( parent, name, true )
276 { 276 {
277 setCaption( i18n("Beam Options") ); 277 setCaption( i18n("Beam Options") );
278 QVBoxLayout* lay = new QVBoxLayout( this ); 278 QVBoxLayout* lay = new QVBoxLayout( this );
279 lay->setSpacing( 3 ); 279 lay->setSpacing( 3 );
280 lay->setMargin( 3 ); 280 lay->setMargin( 3 );
281 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 281 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
282 lay->addWidget( format ); 282 lay->addWidget( format );
283 format->setExclusive ( true ) ; 283 format->setExclusive ( true ) ;
284 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 284 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
285 lay->addWidget( time ); time->setExclusive ( true ) ; 285 lay->addWidget( time ); time->setExclusive ( true ) ;
286 vcal = new QRadioButton(" vCalendar ", format ); 286 vcal = new QRadioButton(" vCalendar ", format );
287 ical = new QRadioButton(" iCalendar ", format ); 287 ical = new QRadioButton(" iCalendar ", format );
288 vcal->setChecked( true ); 288 vcal->setChecked( true );
289 tz = new QRadioButton(i18n(" With timezone "), time ); 289 tz = new QRadioButton(i18n(" With timezone "), time );
290 local = new QRadioButton(i18n(" Local time "), time ); 290 local = new QRadioButton(i18n(" Local time "), time );
291 tz->setChecked( true ); 291 tz->setChecked( true );
292 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 292 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
293 lay->addWidget( ok ); 293 lay->addWidget( ok );
294 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 294 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
295 lay->addWidget( cancel ); 295 lay->addWidget( cancel );
296 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 296 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
297 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 297 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
298 resize( 200, 200 ); 298 resize( 200, 200 );
299 } 299 }
300 300
301 bool beamVcal() { return vcal->isChecked(); } 301 bool beamVcal() { return vcal->isChecked(); }
302 bool beamLocal() { return local->isChecked(); } 302 bool beamLocal() { return local->isChecked(); }
303private: 303private:
304 QRadioButton* vcal, *ical, *local, *tz; 304 QRadioButton* vcal, *ical, *local, *tz;
305}; 305};
306class KOCatPrefs : public QDialog 306class KOCatPrefs : public QDialog
307{ 307{
308 public: 308 public:
309 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 309 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
310 QDialog( parent, name, true ) 310 QDialog( parent, name, true )
311 { 311 {
312 setCaption( i18n("Manage new Categories") ); 312 setCaption( i18n("Manage new Categories") );
313 QVBoxLayout* lay = new QVBoxLayout( this ); 313 QVBoxLayout* lay = new QVBoxLayout( this );
314 lay->setSpacing( 3 ); 314 lay->setSpacing( 3 );
315 lay->setMargin( 3 ); 315 lay->setMargin( 3 );
316 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); 316 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
317 lay->addWidget( lab ); 317 lay->addWidget( lab );
318 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 318 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
319 lay->addWidget( format ); 319 lay->addWidget( format );
320 format->setExclusive ( true ) ; 320 format->setExclusive ( true ) ;
321 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 321 addCatBut = new QRadioButton(i18n("Add to category list"), format );
322 new QRadioButton(i18n("Remove from Events/Todos"), format ); 322 new QRadioButton(i18n("Remove from Events/Todos"), format );
323 addCatBut->setChecked( true ); 323 addCatBut->setChecked( true );
324 QPushButton * ok = new QPushButton( i18n("OK"), this ); 324 QPushButton * ok = new QPushButton( i18n("OK"), this );
325 lay->addWidget( ok ); 325 lay->addWidget( ok );
326 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 326 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
327 lay->addWidget( cancel ); 327 lay->addWidget( cancel );
328 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 328 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
329 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 329 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
330 resize( 200, 200 ); 330 resize( 200, 200 );
331 } 331 }
332 332
333 bool addCat() { return addCatBut->isChecked(); } 333 bool addCat() { return addCatBut->isChecked(); }
334private: 334private:
335 QRadioButton* addCatBut; 335 QRadioButton* addCatBut;
336}; 336};
337 337
338 338
339 339
340CalendarView::CalendarView( CalendarResources *calendar, 340CalendarView::CalendarView( CalendarResources *calendar,
341 QWidget *parent, const char *name ) 341 QWidget *parent, const char *name )
342 : CalendarViewBase( parent, name ), 342 : CalendarViewBase( parent, name ),
343 mCalendar( calendar ), 343 mCalendar( calendar ),
344 mResourceManager( calendar->resourceManager() ) 344 mResourceManager( calendar->resourceManager() )
345{ 345{
346 346
347 mEventEditor = 0; 347 mEventEditor = 0;
348 mTodoEditor = 0; 348 mTodoEditor = 0;
349 349
350 init(); 350 init();
351} 351}
352 352
353CalendarView::CalendarView( Calendar *calendar, 353CalendarView::CalendarView( Calendar *calendar,
354 QWidget *parent, const char *name ) 354 QWidget *parent, const char *name )
355 : CalendarViewBase( parent, name ), 355 : CalendarViewBase( parent, name ),
356 mCalendar( calendar ), 356 mCalendar( calendar ),
357 mResourceManager( 0 ) 357 mResourceManager( 0 )
358{ 358{
359 359
360 mEventEditor = 0; 360 mEventEditor = 0;
361 mTodoEditor = 0; 361 mTodoEditor = 0;
362 init(); 362 init();
363} 363}
364 364
365void CalendarView::init() 365void CalendarView::init()
366{ 366{
367 mNextAlarmDateTime = QDateTime::currentDateTime(); 367 mNextAlarmDateTime = QDateTime::currentDateTime();
368 setFocusPolicy ( NoFocus ); 368 setFocusPolicy ( NoFocus );
369 mViewerCallerIsSearchDialog = false; 369 mViewerCallerIsSearchDialog = false;
370 mBlockShowDates = false; 370 mBlockShowDates = false;
371 beamDialog = new KOBeamPrefs(); 371 beamDialog = new KOBeamPrefs();
372 mDatePickerMode = 0; 372 mDatePickerMode = 0;
373 mCurrentSyncDevice = ""; 373 mCurrentSyncDevice = "";
374 writeLocale(); 374 writeLocale();
375 mViewManager = new KOViewManager( this ); 375 mViewManager = new KOViewManager( this );
376 mDialogManager = new KODialogManager( this ); 376 mDialogManager = new KODialogManager( this );
377 mEventViewerDialog = 0; 377 mEventViewerDialog = 0;
378 mModified = false; 378 mModified = false;
379 mReadOnly = false; 379 mReadOnly = false;
380 mSelectedIncidence = 0; 380 mSelectedIncidence = 0;
381 mCalPrinter = 0; 381 mCalPrinter = 0;
382 mFilters.setAutoDelete(true); 382 mFilters.setAutoDelete(true);
383 383
384 mCalendar->registerObserver( this ); 384 mCalendar->registerObserver( this );
385 // TODO: Make sure that view is updated, when calendar is changed. 385 // TODO: Make sure that view is updated, when calendar is changed.
386 386
387 mStorage = new FileStorage( mCalendar ); 387 mStorage = new FileStorage( mCalendar );
388 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 388 mNavigator = new DateNavigator( this, "datevav", mViewManager );
389 389
390 QBoxLayout *topLayout = (QBoxLayout*)layout(); 390 QBoxLayout *topLayout = (QBoxLayout*)layout();
391#ifndef KORG_NOSPLITTER 391#ifndef KORG_NOSPLITTER
392 // create the main layout frames. 392 // create the main layout frames.
393 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 393 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
394 topLayout->addWidget(mPanner); 394 topLayout->addWidget(mPanner);
395 395
396 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 396 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
397 "CalendarView::LeftFrame"); 397 "CalendarView::LeftFrame");
398 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 398 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
399 399
400 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 400 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
401 "CalendarView::DateNavigator" ); 401 "CalendarView::DateNavigator" );
402 402
403 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 403 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
404 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 404 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
405 mTodoList->setNavigator( mNavigator ); 405 mTodoList->setNavigator( mNavigator );
406 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 406 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
407 407
408#ifdef KORG_NORESOURCEVIEW 408#ifdef KORG_NORESOURCEVIEW
409 mResourceView = 0; 409 mResourceView = 0;
410#else 410#else
411 if ( mResourceManager ) { 411 if ( mResourceManager ) {
412 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 412 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
413 mResourceView->updateView(); 413 mResourceView->updateView();
414 connect( mResourceView, SIGNAL( resourcesChanged() ), 414 connect( mResourceView, SIGNAL( resourcesChanged() ),
415 SLOT( updateView() ) ); 415 SLOT( updateView() ) );
416 } else { 416 } else {
417 mResourceView = 0; 417 mResourceView = 0;
418 } 418 }
419#endif 419#endif
420 QWidget *rightBox = new QWidget( mPanner ); 420 QWidget *rightBox = new QWidget( mPanner );
421 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 421 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
422 422
423 mRightFrame = new QWidgetStack( rightBox ); 423 mRightFrame = new QWidgetStack( rightBox );
424 rightLayout->addWidget( mRightFrame, 1 ); 424 rightLayout->addWidget( mRightFrame, 1 );
425 425
426 mLeftFrame = mLeftSplitter; 426 mLeftFrame = mLeftSplitter;
427#else 427#else
428 //QWidget *mainBox = new QWidget( this ); 428 //QWidget *mainBox = new QWidget( this );
429 //QWidget *leftFrame = new QWidget( mainBox ); 429 //QWidget *leftFrame = new QWidget( mainBox );
430 //QBoxLayout * mainBoxLayout; 430 //QBoxLayout * mainBoxLayout;
431 if ( KOPrefs::instance()->mVerticalScreen ) { 431 if ( KOPrefs::instance()->mVerticalScreen ) {
432 //mainBoxLayout = new QVBoxLayout(mainBox); 432 //mainBoxLayout = new QVBoxLayout(mainBox);
433 //leftFrameLayout = new QHBoxLayout(leftFrame ); 433 //leftFrameLayout = new QHBoxLayout(leftFrame );
434 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 434 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
435 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 435 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
436 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 436 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
437 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 437 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
438 } else { 438 } else {
439 //mainBoxLayout = new QHBoxLayout(mainBox); 439 //mainBoxLayout = new QHBoxLayout(mainBox);
440 //leftFrameLayout = new QVBoxLayout(leftFrame ); 440 //leftFrameLayout = new QVBoxLayout(leftFrame );
441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 441 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 442 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 443 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 444 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
445 } 445 }
446 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 446 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
447 //QBoxLayout * leftFrameLayout; 447 //QBoxLayout * leftFrameLayout;
448 topLayout->addWidget( mMainFrame ); 448 topLayout->addWidget( mMainFrame );
449 //mainBoxLayout->addWidget (mLeftFrame); 449 //mainBoxLayout->addWidget (mLeftFrame);
450 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 450 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
451 "CalendarView::DateNavigator" ); 451 "CalendarView::DateNavigator" );
452#if 0 452#if 0
453 // FIXME 453 // FIXME
454 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 454 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
455 "CalendarView::DateNavigator", QDate::currentDate()); 455 "CalendarView::DateNavigator", QDate::currentDate());
456#endif 456#endif
457 // mDateNavigator->blockSignals( true ); 457 // mDateNavigator->blockSignals( true );
458 //leftFrameLayout->addWidget( mDateNavigator ); 458 //leftFrameLayout->addWidget( mDateNavigator );
459 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 459 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
460 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 460 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
461 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 461 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
462 mTodoList->setNavigator( mNavigator ); 462 mTodoList->setNavigator( mNavigator );
463#if 0 463#if 0
464 if ( QApplication::desktop()->width() < 480 ) { 464 if ( QApplication::desktop()->width() < 480 ) {
465 leftFrameLayout->addWidget(mFilterView); 465 leftFrameLayout->addWidget(mFilterView);
466 leftFrameLayout->addWidget(mTodoList, 2 ); 466 leftFrameLayout->addWidget(mTodoList, 2 );
467 467
468 } else { 468 } else {
469 leftFrameLayout->addWidget(mTodoList,2 ); 469 leftFrameLayout->addWidget(mTodoList,2 );
470 leftFrameLayout->addWidget(mFilterView ); 470 leftFrameLayout->addWidget(mFilterView );
471 } 471 }
472#endif 472#endif
473 mFilterView->hide(); 473 mFilterView->hide();
474 mCalEditView->hide();
474 QWidget *rightBox = new QWidget( mMainFrame ); 475 QWidget *rightBox = new QWidget( mMainFrame );
475 //mainBoxLayout->addWidget ( rightBox, 10 ); 476 //mainBoxLayout->addWidget ( rightBox, 10 );
476 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 477 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
477 mRightFrame = new QWidgetStack( rightBox ); 478 mRightFrame = new QWidgetStack( rightBox );
478 rightLayout->addWidget( mRightFrame, 10 ); 479 rightLayout->addWidget( mRightFrame, 10 );
479 480
480 //mLeftFrame = (QWidget *)leftFrame; 481 //mLeftFrame = (QWidget *)leftFrame;
481 if ( KOPrefs::instance()->mVerticalScreen ) { 482 if ( KOPrefs::instance()->mVerticalScreen ) {
482 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 483 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
483 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 484 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
484 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 485 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
485 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 486 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
486 } else { 487 } else {
487 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 488 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
488 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 489 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
489 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 490 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
490 } 491 }
491 if ( !KOPrefs::instance()->mShowDateNavigator) 492 if ( !KOPrefs::instance()->mShowDateNavigator)
492 mDateNavigator->hide(); 493 mDateNavigator->hide();
493 //qDebug("Calendarview Size %d %d ", width(), height()); 494 //qDebug("Calendarview Size %d %d ", width(), height());
494#endif 495#endif
495 496
496 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 497 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
497 SLOT( showDates( const KCal::DateList & ) ) ); 498 SLOT( showDates( const KCal::DateList & ) ) );
498 499
499 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 500 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
500 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 501 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
501 502
502 503
503 504
504 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 505 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
505 mViewManager, SLOT( showMonth( const QDate & ) ) ); 506 mViewManager, SLOT( showMonth( const QDate & ) ) );
506 507
507 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 508 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
508 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 509 mNavigator, SLOT( selectWeek( const QDate & ) ) );
509 510
510 connect( mDateNavigator, SIGNAL( goPrevYear() ), 511 connect( mDateNavigator, SIGNAL( goPrevYear() ),
511 mNavigator, SLOT( selectPreviousYear() ) ); 512 mNavigator, SLOT( selectPreviousYear() ) );
512 connect( mDateNavigator, SIGNAL( goNextYear() ), 513 connect( mDateNavigator, SIGNAL( goNextYear() ),
513 mNavigator, SLOT( selectNextYear() ) ); 514 mNavigator, SLOT( selectNextYear() ) );
514 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 515 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
515 mNavigator, SLOT( selectPreviousMonth() ) ); 516 mNavigator, SLOT( selectPreviousMonth() ) );
516 connect( mDateNavigator, SIGNAL( goNextMonth() ), 517 connect( mDateNavigator, SIGNAL( goNextMonth() ),
517 mNavigator, SLOT( selectNextMonth() ) ); 518 mNavigator, SLOT( selectNextMonth() ) );
518 519
519 connect( mDateNavigator, SIGNAL( goPrevious() ), 520 connect( mDateNavigator, SIGNAL( goPrevious() ),
520 mNavigator, SLOT( selectPrevious() ) ); 521 mNavigator, SLOT( selectPrevious() ) );
521 connect( mDateNavigator, SIGNAL( goNext() ), 522 connect( mDateNavigator, SIGNAL( goNext() ),
522 mNavigator, SLOT( selectNext() ) ); 523 mNavigator, SLOT( selectNext() ) );
523 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 524 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
524 mNavigator, SLOT( slotMonthSelect( int ) ) ); 525 mNavigator, SLOT( slotMonthSelect( int ) ) );
525 526
526 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 527 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
527 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 528 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
528#if 0 529#if 0
529 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 530 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
530 SLOT( incidenceAdded( Incidence *) ) ); 531 SLOT( incidenceAdded( Incidence *) ) );
531#endif 532#endif
532 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 533 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
533 534
534 connect( this, SIGNAL( configChanged() ), 535 connect( this, SIGNAL( configChanged() ),
535 mDateNavigator, SLOT( updateConfig() ) ); 536 mDateNavigator, SLOT( updateConfig() ) );
536 537
537 connect( mTodoList, SIGNAL( newTodoSignal() ), 538 connect( mTodoList, SIGNAL( newTodoSignal() ),
538 SLOT( newTodo() ) ); 539 SLOT( newTodo() ) );
539 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 540 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
540 SLOT( newSubTodo( Todo * ) ) ); 541 SLOT( newSubTodo( Todo * ) ) );
541 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 542 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
542 SLOT( editTodo( Todo * ) ) ); 543 SLOT( editTodo( Todo * ) ) );
543 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 544 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
544 SLOT( showTodo( Todo *) ) ); 545 SLOT( showTodo( Todo *) ) );
545 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 546 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
546 SLOT( deleteTodo( Todo *) ) ); 547 SLOT( deleteTodo( Todo *) ) );
547 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 548 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
548 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 549 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
549 SLOT( purgeCompleted() ) ); 550 SLOT( purgeCompleted() ) );
550 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 551 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
551 SIGNAL( todoModified( Todo *, int ) ) ); 552 SIGNAL( todoModified( Todo *, int ) ) );
552 553
553 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 554 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
554 this, SLOT ( cloneIncidence( Incidence * ) ) ); 555 this, SLOT ( cloneIncidence( Incidence * ) ) );
555 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 556 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
556 this, SLOT (cancelIncidence( Incidence * ) ) ); 557 this, SLOT (cancelIncidence( Incidence * ) ) );
557 558
558 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 559 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
559 this, SLOT ( moveIncidence( Incidence * ) ) ); 560 this, SLOT ( moveIncidence( Incidence * ) ) );
560 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 561 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
561 this, SLOT ( beamIncidence( Incidence * ) ) ); 562 this, SLOT ( beamIncidence( Incidence * ) ) );
562 563
563 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 564 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
564 this, SLOT ( todo_unsub( Todo * ) ) ); 565 this, SLOT ( todo_unsub( Todo * ) ) );
565 566
566 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 567 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
567 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 568 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
568 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 569 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
569 SLOT( updateTodo( Todo *, int ) ) ); 570 SLOT( updateTodo( Todo *, int ) ) );
570 connect( this, SIGNAL( todoModified( Todo *, int )), this, 571 connect( this, SIGNAL( todoModified( Todo *, int )), this,
571 SLOT( changeTodoDisplay( Todo *, int ) ) ); 572 SLOT( changeTodoDisplay( Todo *, int ) ) );
572 573
573 574
574 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 575 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
575 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 576 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
576 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 577 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
577 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 578 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
578 579
579 580
580 581
581 582
582 583
583 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 584 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
584 SLOT(checkClipboard())); 585 SLOT(checkClipboard()));
585 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 586 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
586 SLOT( processTodoListSelection( Incidence * ) ) ); 587 SLOT( processTodoListSelection( Incidence * ) ) );
587 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 588 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
588 589
589 // kdDebug() << "CalendarView::CalendarView() done" << endl; 590 // kdDebug() << "CalendarView::CalendarView() done" << endl;
590 591
591 mDateFrame = new QVBox(0,0,WType_Popup); 592 mDateFrame = new QVBox(0,0,WType_Popup);
592 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 593 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
593 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 594 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
594 mDateFrame->setLineWidth(3); 595 mDateFrame->setLineWidth(3);
595 mDateFrame->hide(); 596 mDateFrame->hide();
596 mDateFrame->setCaption( i18n( "Pick a date to display")); 597 mDateFrame->setCaption( i18n( "Pick a date to display"));
597 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 598 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
598 599
599 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 600 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
600 601
601 mEventEditor = mDialogManager->getEventEditor(); 602 mEventEditor = mDialogManager->getEventEditor();
602 mTodoEditor = mDialogManager->getTodoEditor(); 603 mTodoEditor = mDialogManager->getTodoEditor();
603 604
604 mFlagEditDescription = false; 605 mFlagEditDescription = false;
605 606
606 mSuspendTimer = new QTimer( this ); 607 mSuspendTimer = new QTimer( this );
607 mAlarmTimer = new QTimer( this ); 608 mAlarmTimer = new QTimer( this );
608 mRecheckAlarmTimer = new QTimer( this ); 609 mRecheckAlarmTimer = new QTimer( this );
609 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 610 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
610 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 611 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
611 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 612 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
612 mAlarmDialog = new AlarmDialog( this ); 613 mAlarmDialog = new AlarmDialog( this );
613 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 614 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
614 mAlarmDialog->setServerNotification( false ); 615 mAlarmDialog->setServerNotification( false );
615 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 616 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
616 617
617 618
618#ifndef DESKTOP_VERSION 619#ifndef DESKTOP_VERSION
619//US listen for arriving address resultsets 620//US listen for arriving address resultsets
620 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 621 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
621 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 622 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
622#endif 623#endif
623 mDateNavigator->setCalendar( mCalendar ); 624 mDateNavigator->setCalendar( mCalendar );
624} 625}
625 626
626 627
627CalendarView::~CalendarView() 628CalendarView::~CalendarView()
628{ 629{
629 // kdDebug() << "~CalendarView()" << endl; 630 // kdDebug() << "~CalendarView()" << endl;
630 //qDebug("CalendarView::~CalendarView() "); 631 //qDebug("CalendarView::~CalendarView() ");
631 delete mDialogManager; 632 delete mDialogManager;
632 delete mViewManager; 633 delete mViewManager;
633 delete mStorage; 634 delete mStorage;
634 delete mDateFrame ; 635 delete mDateFrame ;
635 delete beamDialog; 636 delete beamDialog;
636 delete mEventViewerDialog; 637 delete mEventViewerDialog;
637 //kdDebug() << "~CalendarView() done" << endl; 638 //kdDebug() << "~CalendarView() done" << endl;
638} 639}
639void CalendarView::checkAlarms() 640void CalendarView::checkAlarms()
640{ 641{
641 KConfig *config = KOGlobals::config(); 642 KConfig *config = KOGlobals::config();
642 config->setGroup( "AppRun" ); 643 config->setGroup( "AppRun" );
643 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 644 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
644 int secto = dt.secsTo( QDateTime::currentDateTime() ); 645 int secto = dt.secsTo( QDateTime::currentDateTime() );
645 int secs = config->readNumEntry( "LatestProgramStop" , secto) - 30; 646 int secs = config->readNumEntry( "LatestProgramStop" , secto) - 30;
646 //secs -= ( 3600 * 24*3 ); // debug only 647 //secs -= ( 3600 * 24*3 ); // debug only
647 QDateTime latest = dt.addSecs ( secs ); 648 QDateTime latest = dt.addSecs ( secs );
648 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 649 qDebug("KO: Last termination on %s ", latest.toString().latin1());
649 QPtrList<Incidence> el = mCalendar->rawIncidences(); 650 QPtrList<Incidence> el = mCalendar->rawIncidences();
650 QPtrList<Incidence> al; 651 QPtrList<Incidence> al;
651 Incidence* inL = el.first(); 652 Incidence* inL = el.first();
652 while ( inL ) { 653 while ( inL ) {
653 bool ok = false; 654 bool ok = false;
654 int offset = 0; 655 int offset = 0;
655 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 656 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
656 if ( ok ) { 657 if ( ok ) {
657 //qDebug("OK %s",next.toString().latin1()); 658 //qDebug("OK %s",next.toString().latin1());
658 if ( next < QDateTime::currentDateTime() ) { 659 if ( next < QDateTime::currentDateTime() ) {
659 al.append( inL ); 660 al.append( inL );
660 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 661 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
661 } 662 }
662 } 663 }
663 inL = el.next(); 664 inL = el.next();
664 } 665 }
665 if ( al.count() ) { 666 if ( al.count() ) {
666 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 667 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
667 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 668 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
668 QVBoxLayout* lay = new QVBoxLayout( dia ); 669 QVBoxLayout* lay = new QVBoxLayout( dia );
669 lay->setSpacing( 0 ); 670 lay->setSpacing( 0 );
670 lay->setMargin( 0 ); 671 lay->setMargin( 0 );
671 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 672 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
672 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 673 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
673 lay->addWidget( matb ); 674 lay->addWidget( matb );
674 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 675 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
675 int wid = 210; 676 int wid = 210;
676 int x = QApplication::desktop()->width() - wid - 7; 677 int x = QApplication::desktop()->width() - wid - 7;
677 int y = QApplication::desktop()->height() - wid - 70; 678 int y = QApplication::desktop()->height() - wid - 70;
678 dia->setGeometry ( x,y,wid,wid); 679 dia->setGeometry ( x,y,wid,wid);
679 } else { 680 } else {
680 int si = 220; 681 int si = 220;
681 if ( QApplication::desktop()->width() > 470 ) 682 if ( QApplication::desktop()->width() > 470 )
682 si = 400; 683 si = 400;
683 dia->resize(si,si/2); 684 dia->resize(si,si/2);
684 } 685 }
685 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 686 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
686 dia->show(); 687 dia->show();
687 688
688 } 689 }
689} 690}
690void CalendarView::showDay( QDate d ) 691void CalendarView::showDay( QDate d )
691{ 692{
692 dateNavigator()->blockSignals( true ); 693 dateNavigator()->blockSignals( true );
693 dateNavigator()->selectDate( d ); 694 dateNavigator()->selectDate( d );
694 dateNavigator()->blockSignals( false ); 695 dateNavigator()->blockSignals( false );
695 mViewManager->showDayView(); 696 mViewManager->showDayView();
696 //dateNavigator()->selectDate( d ); 697 //dateNavigator()->selectDate( d );
697} 698}
698void CalendarView::timerAlarm() 699void CalendarView::timerAlarm()
699{ 700{
700 //qDebug("CalendarView::timerAlarm() "); 701 //qDebug("CalendarView::timerAlarm() ");
701 computeAlarm(mAlarmNotification ); 702 computeAlarm(mAlarmNotification );
702} 703}
703 704
704void CalendarView::suspendAlarm() 705void CalendarView::suspendAlarm()
705{ 706{
706 //qDebug(" CalendarView::suspendAlarm() "); 707 //qDebug(" CalendarView::suspendAlarm() ");
707 computeAlarm(mSuspendAlarmNotification ); 708 computeAlarm(mSuspendAlarmNotification );
708 709
709} 710}
710 711
711void CalendarView::startAlarm( QString mess , QString filename) 712void CalendarView::startAlarm( QString mess , QString filename)
712{ 713{
713 714
714 topLevelWidget()->showNormal(); 715 topLevelWidget()->showNormal();
715 topLevelWidget()->setActiveWindow(); 716 topLevelWidget()->setActiveWindow();
716 topLevelWidget()->raise(); 717 topLevelWidget()->raise();
717 718
718 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 719 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
719 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 720 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
720 721
721} 722}
722 723
723void CalendarView::checkNextTimerAlarm() 724void CalendarView::checkNextTimerAlarm()
724{ 725{
725 mCalendar->checkAlarmForIncidence( 0, true ); 726 mCalendar->checkAlarmForIncidence( 0, true );
726} 727}
727 728
728void CalendarView::computeAlarm( QString msg ) 729void CalendarView::computeAlarm( QString msg )
729{ 730{
730 731
731 QString mess = msg; 732 QString mess = msg;
732 QString mAlarmMessage = mess.mid( 9 ); 733 QString mAlarmMessage = mess.mid( 9 );
733 QString filename = MainWindow::resourcePath(); 734 QString filename = MainWindow::resourcePath();
734 filename += "koalarm.wav"; 735 filename += "koalarm.wav";
735 QString tempfilename; 736 QString tempfilename;
736 if ( mess.left( 13 ) == "suspend_alarm") { 737 if ( mess.left( 13 ) == "suspend_alarm") {
737 bool error = false; 738 bool error = false;
738 int len = mess.mid( 13 ).find("+++"); 739 int len = mess.mid( 13 ).find("+++");
739 if ( len < 2 ) 740 if ( len < 2 )
740 error = true; 741 error = true;
741 else { 742 else {
742 tempfilename = mess.mid( 13, len ); 743 tempfilename = mess.mid( 13, len );
743 if ( !QFile::exists( tempfilename ) ) 744 if ( !QFile::exists( tempfilename ) )
744 error = true; 745 error = true;
745 } 746 }
746 if ( ! error ) { 747 if ( ! error ) {
747 filename = tempfilename; 748 filename = tempfilename;
748 } 749 }
749 mAlarmMessage = mess.mid( 13+len+3 ); 750 mAlarmMessage = mess.mid( 13+len+3 );
750 //qDebug("suspend file %s ",tempfilename.latin1() ); 751 //qDebug("suspend file %s ",tempfilename.latin1() );
751 startAlarm( mAlarmMessage, filename); 752 startAlarm( mAlarmMessage, filename);
752 return; 753 return;
753 } 754 }
754 if ( mess.left( 11 ) == "timer_alarm") { 755 if ( mess.left( 11 ) == "timer_alarm") {
755 //mTimerTime = 0; 756 //mTimerTime = 0;
756 startAlarm( mess.mid( 11 ), filename ); 757 startAlarm( mess.mid( 11 ), filename );
757 return; 758 return;
758 } 759 }
759 if ( mess.left( 10 ) == "proc_alarm") { 760 if ( mess.left( 10 ) == "proc_alarm") {
760 bool error = false; 761 bool error = false;
761 int len = mess.mid( 10 ).find("+++"); 762 int len = mess.mid( 10 ).find("+++");
762 if ( len < 2 ) 763 if ( len < 2 )
763 error = true; 764 error = true;
764 else { 765 else {
765 tempfilename = mess.mid( 10, len ); 766 tempfilename = mess.mid( 10, len );
766 if ( !QFile::exists( tempfilename ) ) 767 if ( !QFile::exists( tempfilename ) )
767 error = true; 768 error = true;
768 } 769 }
769 if ( error ) { 770 if ( error ) {
770 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 771 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
771 mAlarmMessage += mess.mid( 10+len+3+9 ); 772 mAlarmMessage += mess.mid( 10+len+3+9 );
772 } else { 773 } else {
773 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 774 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
774 //qDebug("-----system command %s ",tempfilename.latin1() ); 775 //qDebug("-----system command %s ",tempfilename.latin1() );
775#ifndef _WIN32_ 776#ifndef _WIN32_
776 if ( vfork () == 0 ) { 777 if ( vfork () == 0 ) {
777 execl ( tempfilename.latin1(), 0 ); 778 execl ( tempfilename.latin1(), 0 );
778 return; 779 return;
779 } 780 }
780#else 781#else
781 QProcess* p = new QProcess(); 782 QProcess* p = new QProcess();
782 p->addArgument( tempfilename.latin1() ); 783 p->addArgument( tempfilename.latin1() );
783 p->start(); 784 p->start();
784 return; 785 return;
785#endif 786#endif
786 787
787 return; 788 return;
788 } 789 }
789 790
790 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 791 //qDebug("+++++++system command %s ",tempfilename.latin1() );
791 } 792 }
792 if ( mess.left( 11 ) == "audio_alarm") { 793 if ( mess.left( 11 ) == "audio_alarm") {
793 bool error = false; 794 bool error = false;
794 int len = mess.mid( 11 ).find("+++"); 795 int len = mess.mid( 11 ).find("+++");
795 if ( len < 2 ) 796 if ( len < 2 )
796 error = true; 797 error = true;
797 else { 798 else {
798 tempfilename = mess.mid( 11, len ); 799 tempfilename = mess.mid( 11, len );
799 if ( !QFile::exists( tempfilename ) ) 800 if ( !QFile::exists( tempfilename ) )
800 error = true; 801 error = true;
801 } 802 }
802 if ( ! error ) { 803 if ( ! error ) {
803 filename = tempfilename; 804 filename = tempfilename;
804 } 805 }
805 mAlarmMessage = mess.mid( 11+len+3+9 ); 806 mAlarmMessage = mess.mid( 11+len+3+9 );
806 //qDebug("audio file command %s ",tempfilename.latin1() ); 807 //qDebug("audio file command %s ",tempfilename.latin1() );
807 } 808 }
808 if ( mess.left( 9 ) == "cal_alarm") { 809 if ( mess.left( 9 ) == "cal_alarm") {
809 mAlarmMessage = mess.mid( 9 ) ; 810 mAlarmMessage = mess.mid( 9 ) ;
810 } 811 }
811 812
812 startAlarm( mAlarmMessage, filename ); 813 startAlarm( mAlarmMessage, filename );
813 814
814 815
815} 816}
816 817
817void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 818void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
818{ 819{
819 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 820 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
820 821
821 mSuspendAlarmNotification = noti; 822 mSuspendAlarmNotification = noti;
822 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 823 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
823 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 824 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
824 mSuspendTimer->start( ms , true ); 825 mSuspendTimer->start( ms , true );
825 826
826} 827}
827 828
828void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 829void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
829{ 830{
830 mNextAlarmDateTime = qdt; 831 mNextAlarmDateTime = qdt;
831 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 832 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
832 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 833 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
833#ifndef DESKTOP_VERSION 834#ifndef DESKTOP_VERSION
834 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 835 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
835#endif 836#endif
836 return; 837 return;
837 } 838 }
838 int maxSec; 839 int maxSec;
839 //maxSec = 5; //testing only 840 //maxSec = 5; //testing only
840 maxSec = 86400+3600; // one day+1hour 841 maxSec = 86400+3600; // one day+1hour
841 mAlarmNotification = noti; 842 mAlarmNotification = noti;
842 int sec = QDateTime::currentDateTime().secsTo( qdt ); 843 int sec = QDateTime::currentDateTime().secsTo( qdt );
843 if ( sec > maxSec ) { 844 if ( sec > maxSec ) {
844 mRecheckAlarmTimer->start( maxSec * 1000 ); 845 mRecheckAlarmTimer->start( maxSec * 1000 );
845 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 846 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
846 return; 847 return;
847 } else { 848 } else {
848 mRecheckAlarmTimer->stop(); 849 mRecheckAlarmTimer->stop();
849 } 850 }
850 //qDebug("Alarm timer started with secs: %d ", sec); 851 //qDebug("Alarm timer started with secs: %d ", sec);
851 mAlarmTimer->start( sec *1000 , true ); 852 mAlarmTimer->start( sec *1000 , true );
852 853
853} 854}
854// called by mRecheckAlarmTimer to get next alarm 855// called by mRecheckAlarmTimer to get next alarm
855// we need this, because a QTimer has only a max range of 25 days 856// we need this, because a QTimer has only a max range of 25 days
856void CalendarView::recheckTimerAlarm() 857void CalendarView::recheckTimerAlarm()
857{ 858{
858 mAlarmTimer->stop(); 859 mAlarmTimer->stop();
859 mRecheckAlarmTimer->stop(); 860 mRecheckAlarmTimer->stop();
860 mCalendar->checkAlarmForIncidence( 0, true ); 861 mCalendar->checkAlarmForIncidence( 0, true );
861} 862}
862void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 863void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
863{ 864{
864 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 865 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
865 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 866 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
866#ifndef DESKTOP_VERSION 867#ifndef DESKTOP_VERSION
867 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 868 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
868#endif 869#endif
869 return; 870 return;
870 } 871 }
871 mAlarmTimer->stop(); 872 mAlarmTimer->stop();
872} 873}
873void CalendarView::selectWeekNum ( int num ) 874void CalendarView::selectWeekNum ( int num )
874{ 875{
875 dateNavigator()->blockSignals( true ); 876 dateNavigator()->blockSignals( true );
876 dateNavigator()->selectWeek( num ); 877 dateNavigator()->selectWeek( num );
877 dateNavigator()->blockSignals( false ); 878 dateNavigator()->blockSignals( false );
878 mViewManager->showWeekView(); 879 mViewManager->showWeekView();
879} 880}
880KOViewManager *CalendarView::viewManager() 881KOViewManager *CalendarView::viewManager()
881{ 882{
882 return mViewManager; 883 return mViewManager;
883} 884}
884 885
885KODialogManager *CalendarView::dialogManager() 886KODialogManager *CalendarView::dialogManager()
886{ 887{
887 return mDialogManager; 888 return mDialogManager;
888} 889}
889 890
890QDate CalendarView::startDate() 891QDate CalendarView::startDate()
891{ 892{
892 DateList dates = mNavigator->selectedDates(); 893 DateList dates = mNavigator->selectedDates();
893 894
894 return dates.first(); 895 return dates.first();
895} 896}
896 897
897QDate CalendarView::endDate() 898QDate CalendarView::endDate()
898{ 899{
899 DateList dates = mNavigator->selectedDates(); 900 DateList dates = mNavigator->selectedDates();
900 901
901 return dates.last(); 902 return dates.last();
902} 903}
903 904
904 905
905void CalendarView::createPrinter() 906void CalendarView::createPrinter()
906{ 907{
907#ifndef KORG_NOPRINTER 908#ifndef KORG_NOPRINTER
908 if (!mCalPrinter) { 909 if (!mCalPrinter) {
909 mCalPrinter = new CalPrinter(this, mCalendar); 910 mCalPrinter = new CalPrinter(this, mCalendar);
910 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 911 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
911 } 912 }
912#endif 913#endif
913} 914}
914 915
915 916
916//KOPrefs::instance()->mWriteBackFile 917//KOPrefs::instance()->mWriteBackFile
917//KOPrefs::instance()->mWriteBackExistingOnly 918//KOPrefs::instance()->mWriteBackExistingOnly
918 919
919// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 920// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
920// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 921// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
921// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 922// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
922// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 923// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
923// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 924// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
924// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 925// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
925 926
926int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 927int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
927{ 928{
928 929
929 // 0 equal 930 // 0 equal
930 // 1 take local 931 // 1 take local
931 // 2 take remote 932 // 2 take remote
932 // 3 cancel 933 // 3 cancel
933 QDateTime lastSync = mLastCalendarSync; 934 QDateTime lastSync = mLastCalendarSync;
934 QDateTime localMod = local->lastModified(); 935 QDateTime localMod = local->lastModified();
935 QDateTime remoteMod = remote->lastModified(); 936 QDateTime remoteMod = remote->lastModified();
936 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 937 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
937 bool remCh, locCh; 938 bool remCh, locCh;
938 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 939 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
939 //if ( remCh ) 940 //if ( remCh )
940 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 941 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
941 locCh = ( localMod > mLastCalendarSync ); 942 locCh = ( localMod > mLastCalendarSync );
942 if ( !remCh && ! locCh ) { 943 if ( !remCh && ! locCh ) {
943 //qDebug("both not changed "); 944 //qDebug("both not changed ");
944 lastSync = localMod.addDays(1); 945 lastSync = localMod.addDays(1);
945 if ( mode <= SYNC_PREF_ASK ) 946 if ( mode <= SYNC_PREF_ASK )
946 return 0; 947 return 0;
947 } else { 948 } else {
948 if ( locCh ) { 949 if ( locCh ) {
949 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 950 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
950 lastSync = localMod.addDays( -1 ); 951 lastSync = localMod.addDays( -1 );
951 if ( !remCh ) 952 if ( !remCh )
952 remoteMod = ( lastSync.addDays( -1 ) ); 953 remoteMod = ( lastSync.addDays( -1 ) );
953 } else { 954 } else {
954 //qDebug(" not loc changed "); 955 //qDebug(" not loc changed ");
955 lastSync = localMod.addDays( 1 ); 956 lastSync = localMod.addDays( 1 );
956 if ( remCh ) 957 if ( remCh )
957 remoteMod =( lastSync.addDays( 1 ) ); 958 remoteMod =( lastSync.addDays( 1 ) );
958 959
959 } 960 }
960 } 961 }
961 full = true; 962 full = true;
962 if ( mode < SYNC_PREF_ASK ) 963 if ( mode < SYNC_PREF_ASK )
963 mode = SYNC_PREF_ASK; 964 mode = SYNC_PREF_ASK;
964 } else { 965 } else {
965 if ( localMod == remoteMod ) 966 if ( localMod == remoteMod )
966 // if ( local->revision() == remote->revision() ) 967 // if ( local->revision() == remote->revision() )
967 return 0; 968 return 0;
968 969
969 } 970 }
970 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 971 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
971 972
972 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 973 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
973 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 974 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
974 //full = true; //debug only 975 //full = true; //debug only
975 if ( full ) { 976 if ( full ) {
976 bool equ = false; 977 bool equ = false;
977 if ( local->typeID() == eventID ) { 978 if ( local->typeID() == eventID ) {
978 equ = (*((Event*) local) == *((Event*) remote)); 979 equ = (*((Event*) local) == *((Event*) remote));
979 } 980 }
980 else if ( local->typeID() == todoID ) 981 else if ( local->typeID() == todoID )
981 equ = (*((Todo*) local) == (*(Todo*) remote)); 982 equ = (*((Todo*) local) == (*(Todo*) remote));
982 else if ( local->typeID() == journalID ) 983 else if ( local->typeID() == journalID )
983 equ = (*((Journal*) local) == *((Journal*) remote)); 984 equ = (*((Journal*) local) == *((Journal*) remote));
984 if ( equ ) { 985 if ( equ ) {
985 //qDebug("equal "); 986 //qDebug("equal ");
986 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 987 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
987 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 988 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
988 } 989 }
989 if ( mode < SYNC_PREF_FORCE_LOCAL ) 990 if ( mode < SYNC_PREF_FORCE_LOCAL )
990 return 0; 991 return 0;
991 992
992 }//else //debug only 993 }//else //debug only
993 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 994 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
994 } 995 }
995 int result; 996 int result;
996 bool localIsNew; 997 bool localIsNew;
997 //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() ); 998 //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() );
998 999
999 1000
1000 // ************************************************ 1001 // ************************************************
1001 // ************************************************ 1002 // ************************************************
1002 // ************************************************ 1003 // ************************************************
1003 // We may have that lastSync > remoteMod AND lastSync > localMod 1004 // We may have that lastSync > remoteMod AND lastSync > localMod
1004 // BUT remoteMod != localMod 1005 // BUT remoteMod != localMod
1005 1006
1006 1007
1007 if ( full && mode < SYNC_PREF_NEWEST ) 1008 if ( full && mode < SYNC_PREF_NEWEST )
1008 mode = SYNC_PREF_ASK; 1009 mode = SYNC_PREF_ASK;
1009 1010
1010 switch( mode ) { 1011 switch( mode ) {
1011 case SYNC_PREF_LOCAL: 1012 case SYNC_PREF_LOCAL:
1012 if ( lastSync > remoteMod ) 1013 if ( lastSync > remoteMod )
1013 return 1; 1014 return 1;
1014 if ( lastSync > localMod ) 1015 if ( lastSync > localMod )
1015 return 2; 1016 return 2;
1016 return 1; 1017 return 1;
1017 break; 1018 break;
1018 case SYNC_PREF_REMOTE: 1019 case SYNC_PREF_REMOTE:
1019 if ( lastSync > localMod ) 1020 if ( lastSync > localMod )
1020 return 2; 1021 return 2;
1021 if ( lastSync > remoteMod ) 1022 if ( lastSync > remoteMod )
1022 return 1; 1023 return 1;
1023 return 2; 1024 return 2;
1024 break; 1025 break;
1025 case SYNC_PREF_NEWEST: 1026 case SYNC_PREF_NEWEST:
1026 if ( localMod >= remoteMod ) 1027 if ( localMod >= remoteMod )
1027 return 1; 1028 return 1;
1028 else 1029 else
1029 return 2; 1030 return 2;
1030 break; 1031 break;
1031 case SYNC_PREF_ASK: 1032 case SYNC_PREF_ASK:
1032 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1033 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1033 if ( lastSync > remoteMod && lastSync > localMod) 1034 if ( lastSync > remoteMod && lastSync > localMod)
1034 return 0; 1035 return 0;
1035 if ( lastSync > remoteMod ) 1036 if ( lastSync > remoteMod )
1036 return 1; 1037 return 1;
1037 if ( lastSync > localMod ) 1038 if ( lastSync > localMod )
1038 return 2; 1039 return 2;
1039 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1040 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1040 localIsNew = localMod >= remoteMod; 1041 localIsNew = localMod >= remoteMod;
1041 if ( localIsNew ) 1042 if ( localIsNew )
1042 getEventViewerDialog()->setColorMode( 1 ); 1043 getEventViewerDialog()->setColorMode( 1 );
1043 else 1044 else
1044 getEventViewerDialog()->setColorMode( 2 ); 1045 getEventViewerDialog()->setColorMode( 2 );
1045 getEventViewerDialog()->setIncidence(local); 1046 getEventViewerDialog()->setIncidence(local);
1046 if ( localIsNew ) 1047 if ( localIsNew )
1047 getEventViewerDialog()->setColorMode( 2 ); 1048 getEventViewerDialog()->setColorMode( 2 );
1048 else 1049 else
1049 getEventViewerDialog()->setColorMode( 1 ); 1050 getEventViewerDialog()->setColorMode( 1 );
1050 getEventViewerDialog()->addIncidence(remote); 1051 getEventViewerDialog()->addIncidence(remote);
1051 getEventViewerDialog()->setColorMode( 0 ); 1052 getEventViewerDialog()->setColorMode( 0 );
1052 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1053 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1053 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1054 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1054 getEventViewerDialog()->showMe(); 1055 getEventViewerDialog()->showMe();
1055 result = getEventViewerDialog()->executeS( localIsNew ); 1056 result = getEventViewerDialog()->executeS( localIsNew );
1056 return result; 1057 return result;
1057 1058
1058 break; 1059 break;
1059 case SYNC_PREF_FORCE_LOCAL: 1060 case SYNC_PREF_FORCE_LOCAL:
1060 return 1; 1061 return 1;
1061 break; 1062 break;
1062 case SYNC_PREF_FORCE_REMOTE: 1063 case SYNC_PREF_FORCE_REMOTE:
1063 return 2; 1064 return 2;
1064 break; 1065 break;
1065 1066
1066 default: 1067 default:
1067 // SYNC_PREF_TAKE_BOTH not implemented 1068 // SYNC_PREF_TAKE_BOTH not implemented
1068 break; 1069 break;
1069 } 1070 }
1070 return 0; 1071 return 0;
1071} 1072}
1072Event* CalendarView::getLastSyncEvent() 1073Event* CalendarView::getLastSyncEvent()
1073{ 1074{
1074 Event* lse; 1075 Event* lse;
1075 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1076 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1076 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1077 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1077 if (!lse) { 1078 if (!lse) {
1078 lse = new Event(); 1079 lse = new Event();
1079 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1080 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1080 QString sum = ""; 1081 QString sum = "";
1081 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1082 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1082 sum = "E: "; 1083 sum = "E: ";
1083 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1084 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1084 lse->setDtStart( mLastCalendarSync ); 1085 lse->setDtStart( mLastCalendarSync );
1085 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1086 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1086 lse->setCategories( i18n("SyncEvent") ); 1087 lse->setCategories( i18n("SyncEvent") );
1087 lse->setReadOnly( true ); 1088 lse->setReadOnly( true );
1088 mCalendar->addEvent( lse ); 1089 mCalendar->addEvent( lse );
1089 } 1090 }
1090 1091
1091 return lse; 1092 return lse;
1092 1093
1093} 1094}
1094 1095
1095// we check, if the to delete event has a id for a profile 1096// we check, if the to delete event has a id for a profile
1096// if yes, we set this id in the profile to delete 1097// if yes, we set this id in the profile to delete
1097void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1098void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1098{ 1099{
1099 if ( lastSync.count() == 0 ) { 1100 if ( lastSync.count() == 0 ) {
1100 //qDebug(" lastSync.count() == 0"); 1101 //qDebug(" lastSync.count() == 0");
1101 return; 1102 return;
1102 } 1103 }
1103 if ( toDelete->typeID() == journalID ) 1104 if ( toDelete->typeID() == journalID )
1104 return; 1105 return;
1105 1106
1106 Event* eve = lastSync.first(); 1107 Event* eve = lastSync.first();
1107 1108
1108 while ( eve ) { 1109 while ( eve ) {
1109 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1110 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1110 if ( !id.isEmpty() ) { 1111 if ( !id.isEmpty() ) {
1111 QString des = eve->description(); 1112 QString des = eve->description();
1112 QString pref = "e"; 1113 QString pref = "e";
1113 if ( toDelete->typeID() == todoID ) 1114 if ( toDelete->typeID() == todoID )
1114 pref = "t"; 1115 pref = "t";
1115 des += pref+ id + ","; 1116 des += pref+ id + ",";
1116 eve->setReadOnly( false ); 1117 eve->setReadOnly( false );
1117 eve->setDescription( des ); 1118 eve->setDescription( des );
1118 //qDebug("setdes %s ", des.latin1()); 1119 //qDebug("setdes %s ", des.latin1());
1119 eve->setReadOnly( true ); 1120 eve->setReadOnly( true );
1120 } 1121 }
1121 eve = lastSync.next(); 1122 eve = lastSync.next();
1122 } 1123 }
1123 1124
1124} 1125}
1125void CalendarView::checkExternalId( Incidence * inc ) 1126void CalendarView::checkExternalId( Incidence * inc )
1126{ 1127{
1127 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1128 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1128 checkExternSyncEvent( lastSync, inc ); 1129 checkExternSyncEvent( lastSync, inc );
1129 1130
1130} 1131}
1131bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1132bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1132{ 1133{
1133 bool syncOK = true; 1134 bool syncOK = true;
1134 int addedEvent = 0; 1135 int addedEvent = 0;
1135 int addedEventR = 0; 1136 int addedEventR = 0;
1136 int deletedEventR = 0; 1137 int deletedEventR = 0;
1137 int deletedEventL = 0; 1138 int deletedEventL = 0;
1138 int changedLocal = 0; 1139 int changedLocal = 0;
1139 int changedRemote = 0; 1140 int changedRemote = 0;
1140 int filteredIN = 0; 1141 int filteredIN = 0;
1141 int filteredOUT = 0; 1142 int filteredOUT = 0;
1142 //QPtrList<Event> el = local->rawEvents(); 1143 //QPtrList<Event> el = local->rawEvents();
1143 Event* eventR; 1144 Event* eventR;
1144 QString uid; 1145 QString uid;
1145 int take; 1146 int take;
1146 Event* eventL; 1147 Event* eventL;
1147 Event* eventRSync; 1148 Event* eventRSync;
1148 Event* eventLSync; 1149 Event* eventLSync;
1149 clearAllViews(); 1150 clearAllViews();
1150 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1151 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1151 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1152 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1152 bool fullDateRange = false; 1153 bool fullDateRange = false;
1153 local->resetTempSyncStat(); 1154 local->resetTempSyncStat();
1154 mLastCalendarSync = QDateTime::currentDateTime(); 1155 mLastCalendarSync = QDateTime::currentDateTime();
1155 if ( mSyncManager->syncWithDesktop() ) { 1156 if ( mSyncManager->syncWithDesktop() ) {
1156 remote->resetPilotStat(1); 1157 remote->resetPilotStat(1);
1157 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1158 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1158 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1159 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1159 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1160 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1160 } else { 1161 } else {
1161 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1162 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1162 } 1163 }
1163 } 1164 }
1164 QDateTime modifiedCalendar = mLastCalendarSync; 1165 QDateTime modifiedCalendar = mLastCalendarSync;
1165 eventLSync = getLastSyncEvent(); 1166 eventLSync = getLastSyncEvent();
1166 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1167 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1167 if ( eventR ) { 1168 if ( eventR ) {
1168 eventRSync = (Event*) eventR->clone(); 1169 eventRSync = (Event*) eventR->clone();
1169 remote->deleteEvent(eventR ); 1170 remote->deleteEvent(eventR );
1170 1171
1171 } else { 1172 } else {
1172 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1173 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1173 eventRSync = (Event*)eventLSync->clone(); 1174 eventRSync = (Event*)eventLSync->clone();
1174 } else { 1175 } else {
1175 fullDateRange = true; 1176 fullDateRange = true;
1176 eventRSync = new Event(); 1177 eventRSync = new Event();
1177 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1178 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1178 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1179 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1179 eventRSync->setDtStart( mLastCalendarSync ); 1180 eventRSync->setDtStart( mLastCalendarSync );
1180 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1181 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1181 eventRSync->setCategories( i18n("SyncEvent") ); 1182 eventRSync->setCategories( i18n("SyncEvent") );
1182 } 1183 }
1183 } 1184 }
1184 if ( eventLSync->dtStart() == mLastCalendarSync ) 1185 if ( eventLSync->dtStart() == mLastCalendarSync )
1185 fullDateRange = true; 1186 fullDateRange = true;
1186 1187
1187 if ( ! fullDateRange ) { 1188 if ( ! fullDateRange ) {
1188 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1189 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1189 1190
1190 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1191 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1191 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1192 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1192 fullDateRange = true; 1193 fullDateRange = true;
1193 } 1194 }
1194 } 1195 }
1195 if ( mSyncManager->syncWithDesktop() ) { 1196 if ( mSyncManager->syncWithDesktop() ) {
1196 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1197 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1197 } 1198 }
1198 if ( fullDateRange ) 1199 if ( fullDateRange )
1199 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1200 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1200 else 1201 else
1201 mLastCalendarSync = eventLSync->dtStart(); 1202 mLastCalendarSync = eventLSync->dtStart();
1202 // for resyncing if own file has changed 1203 // for resyncing if own file has changed
1203 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1204 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1204 mLastCalendarSync = loadedFileVersion; 1205 mLastCalendarSync = loadedFileVersion;
1205 //qDebug("setting mLastCalendarSync "); 1206 //qDebug("setting mLastCalendarSync ");
1206 } 1207 }
1207 //qDebug("*************************** "); 1208 //qDebug("*************************** ");
1208 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1209 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1209 QPtrList<Incidence> er = remote->rawIncidences(); 1210 QPtrList<Incidence> er = remote->rawIncidences();
1210 Incidence* inR = er.first(); 1211 Incidence* inR = er.first();
1211 Incidence* inL; 1212 Incidence* inL;
1212 QProgressBar bar( er.count(),0 ); 1213 QProgressBar bar( er.count(),0 );
1213 bar.setCaption (i18n("Syncing - close to abort!") ); 1214 bar.setCaption (i18n("Syncing - close to abort!") );
1214 1215
1215 // ************** setting up filter ************* 1216 // ************** setting up filter *************
1216 CalFilter *filterIN = 0; 1217 CalFilter *filterIN = 0;
1217 CalFilter *filterOUT = 0; 1218 CalFilter *filterOUT = 0;
1218 CalFilter *filter = mFilters.first(); 1219 CalFilter *filter = mFilters.first();
1219 while(filter) { 1220 while(filter) {
1220 if ( filter->name() == mSyncManager->mFilterInCal ) 1221 if ( filter->name() == mSyncManager->mFilterInCal )
1221 filterIN = filter; 1222 filterIN = filter;
1222 if ( filter->name() == mSyncManager->mFilterOutCal ) 1223 if ( filter->name() == mSyncManager->mFilterOutCal )
1223 filterOUT = filter; 1224 filterOUT = filter;
1224 filter = mFilters.next(); 1225 filter = mFilters.next();
1225 } 1226 }
1226 int w = 300; 1227 int w = 300;
1227 if ( QApplication::desktop()->width() < 320 ) 1228 if ( QApplication::desktop()->width() < 320 )
1228 w = 220; 1229 w = 220;
1229 int h = bar.sizeHint().height() ; 1230 int h = bar.sizeHint().height() ;
1230 int dw = QApplication::desktop()->width(); 1231 int dw = QApplication::desktop()->width();
1231 int dh = QApplication::desktop()->height(); 1232 int dh = QApplication::desktop()->height();
1232 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1233 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1233 bar.show(); 1234 bar.show();
1234 int modulo = (er.count()/10)+1; 1235 int modulo = (er.count()/10)+1;
1235 int incCounter = 0; 1236 int incCounter = 0;
1236 while ( inR ) { 1237 while ( inR ) {
1237 if ( ! bar.isVisible() ) 1238 if ( ! bar.isVisible() )
1238 return false; 1239 return false;
1239 if ( incCounter % modulo == 0 ) 1240 if ( incCounter % modulo == 0 )
1240 bar.setProgress( incCounter ); 1241 bar.setProgress( incCounter );
1241 ++incCounter; 1242 ++incCounter;
@@ -3144,1220 +3145,1221 @@ void CalendarView::showTodo(Todo *event)
3144 getEventViewerDialog()->showMe(); 3145 getEventViewerDialog()->showMe();
3145} 3146}
3146void CalendarView::showJournal( Journal *jour ) 3147void CalendarView::showJournal( Journal *jour )
3147{ 3148{
3148 getEventViewerDialog()->setJournal(jour); 3149 getEventViewerDialog()->setJournal(jour);
3149 getEventViewerDialog()->showMe(); 3150 getEventViewerDialog()->showMe();
3150 3151
3151} 3152}
3152// void CalendarView::todoModified (Todo *event, int changed) 3153// void CalendarView::todoModified (Todo *event, int changed)
3153// { 3154// {
3154// // if (mDialogList.find (event) != mDialogList.end ()) { 3155// // if (mDialogList.find (event) != mDialogList.end ()) {
3155// // kdDebug() << "Todo modified and open" << endl; 3156// // kdDebug() << "Todo modified and open" << endl;
3156// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3157// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3157// // temp->modified (changed); 3158// // temp->modified (changed);
3158 3159
3159// // } 3160// // }
3160 3161
3161// mViewManager->updateView(); 3162// mViewManager->updateView();
3162// } 3163// }
3163 3164
3164void CalendarView::appointment_show() 3165void CalendarView::appointment_show()
3165{ 3166{
3166 Event *anEvent = 0; 3167 Event *anEvent = 0;
3167 3168
3168 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3169 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3169 3170
3170 if (mViewManager->currentView()->isEventView()) { 3171 if (mViewManager->currentView()->isEventView()) {
3171 if ( incidence && incidence->typeID() == eventID ) { 3172 if ( incidence && incidence->typeID() == eventID ) {
3172 anEvent = static_cast<Event *>(incidence); 3173 anEvent = static_cast<Event *>(incidence);
3173 } 3174 }
3174 } 3175 }
3175 3176
3176 if (!anEvent) { 3177 if (!anEvent) {
3177 KNotifyClient::beep(); 3178 KNotifyClient::beep();
3178 return; 3179 return;
3179 } 3180 }
3180 3181
3181 showEvent(anEvent); 3182 showEvent(anEvent);
3182} 3183}
3183 3184
3184void CalendarView::appointment_edit() 3185void CalendarView::appointment_edit()
3185{ 3186{
3186 Event *anEvent = 0; 3187 Event *anEvent = 0;
3187 3188
3188 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3189 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3189 3190
3190 if (mViewManager->currentView()->isEventView()) { 3191 if (mViewManager->currentView()->isEventView()) {
3191 if ( incidence && incidence->typeID() == eventID ) { 3192 if ( incidence && incidence->typeID() == eventID ) {
3192 anEvent = static_cast<Event *>(incidence); 3193 anEvent = static_cast<Event *>(incidence);
3193 } 3194 }
3194 } 3195 }
3195 3196
3196 if (!anEvent) { 3197 if (!anEvent) {
3197 KNotifyClient::beep(); 3198 KNotifyClient::beep();
3198 return; 3199 return;
3199 } 3200 }
3200 3201
3201 editEvent(anEvent); 3202 editEvent(anEvent);
3202} 3203}
3203 3204
3204void CalendarView::appointment_delete() 3205void CalendarView::appointment_delete()
3205{ 3206{
3206 Event *anEvent = 0; 3207 Event *anEvent = 0;
3207 3208
3208 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3209 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3209 3210
3210 if (mViewManager->currentView()->isEventView()) { 3211 if (mViewManager->currentView()->isEventView()) {
3211 if ( incidence && incidence->typeID() == eventID ) { 3212 if ( incidence && incidence->typeID() == eventID ) {
3212 anEvent = static_cast<Event *>(incidence); 3213 anEvent = static_cast<Event *>(incidence);
3213 } 3214 }
3214 } 3215 }
3215 3216
3216 if (!anEvent) { 3217 if (!anEvent) {
3217 KNotifyClient::beep(); 3218 KNotifyClient::beep();
3218 return; 3219 return;
3219 } 3220 }
3220 3221
3221 deleteEvent(anEvent); 3222 deleteEvent(anEvent);
3222} 3223}
3223 3224
3224void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3225void CalendarView::todo_resub( Todo * parent, Todo * sub )
3225{ 3226{
3226 if (!sub) return; 3227 if (!sub) return;
3227 if ( sub->relatedTo() == parent ) 3228 if ( sub->relatedTo() == parent )
3228 return; 3229 return;
3229 sub->setRelatedTo(parent); 3230 sub->setRelatedTo(parent);
3230 sub->updated(); 3231 sub->updated();
3231 setModified(true); 3232 setModified(true);
3232 updateView(); 3233 updateView();
3233} 3234}
3234void CalendarView::todo_unsub(Todo *anTodo ) 3235void CalendarView::todo_unsub(Todo *anTodo )
3235{ 3236{
3236 todo_resub( 0, anTodo ); 3237 todo_resub( 0, anTodo );
3237} 3238}
3238 3239
3239void CalendarView::deleteTodo(Todo *todo) 3240void CalendarView::deleteTodo(Todo *todo)
3240{ 3241{
3241 if (!todo) { 3242 if (!todo) {
3242 KNotifyClient::beep(); 3243 KNotifyClient::beep();
3243 return; 3244 return;
3244 } 3245 }
3245 if (KOPrefs::instance()->mConfirm) { 3246 if (KOPrefs::instance()->mConfirm) {
3246 QString text = todo->summary().left(20); 3247 QString text = todo->summary().left(20);
3247 if (!todo->relations().isEmpty()) { 3248 if (!todo->relations().isEmpty()) {
3248 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3249 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3249 3250
3250 } 3251 }
3251 switch (msgItemDelete(text)) { 3252 switch (msgItemDelete(text)) {
3252 case KMessageBox::Continue: // OK 3253 case KMessageBox::Continue: // OK
3253 bool deleteT = false; 3254 bool deleteT = false;
3254 if (!todo->relations().isEmpty()) { 3255 if (!todo->relations().isEmpty()) {
3255 deleteT = removeCompletedSubTodos( todo ); 3256 deleteT = removeCompletedSubTodos( todo );
3256 } 3257 }
3257 // deleteT == true: todo already deleted in removeCompletedSubTodos 3258 // deleteT == true: todo already deleted in removeCompletedSubTodos
3258 if ( !deleteT ) { 3259 if ( !deleteT ) {
3259 checkExternalId( todo ); 3260 checkExternalId( todo );
3260 calendar()->deleteTodo(todo); 3261 calendar()->deleteTodo(todo);
3261 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3262 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3262 updateView(); 3263 updateView();
3263 } 3264 }
3264 break; 3265 break;
3265 } // switch 3266 } // switch
3266 } else { 3267 } else {
3267 checkExternalId( todo ); 3268 checkExternalId( todo );
3268 mCalendar->deleteTodo(todo); 3269 mCalendar->deleteTodo(todo);
3269 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3270 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3270 updateView(); 3271 updateView();
3271 } 3272 }
3272 3273
3273 emit updateSearchDialog(); 3274 emit updateSearchDialog();
3274} 3275}
3275void CalendarView::deleteJournal(Journal *jour) 3276void CalendarView::deleteJournal(Journal *jour)
3276{ 3277{
3277 if (!jour) { 3278 if (!jour) {
3278 KNotifyClient::beep(); 3279 KNotifyClient::beep();
3279 return; 3280 return;
3280 } 3281 }
3281 if (KOPrefs::instance()->mConfirm) { 3282 if (KOPrefs::instance()->mConfirm) {
3282 switch (msgItemDelete( jour->description().left(20))) { 3283 switch (msgItemDelete( jour->description().left(20))) {
3283 case KMessageBox::Continue: // OK 3284 case KMessageBox::Continue: // OK
3284 calendar()->deleteJournal(jour); 3285 calendar()->deleteJournal(jour);
3285 updateView(); 3286 updateView();
3286 break; 3287 break;
3287 } // switch 3288 } // switch
3288 } else { 3289 } else {
3289 calendar()->deleteJournal(jour);; 3290 calendar()->deleteJournal(jour);;
3290 updateView(); 3291 updateView();
3291 } 3292 }
3292 emit updateSearchDialog(); 3293 emit updateSearchDialog();
3293} 3294}
3294 3295
3295void CalendarView::deleteEvent(Event *anEvent) 3296void CalendarView::deleteEvent(Event *anEvent)
3296{ 3297{
3297 if (!anEvent) { 3298 if (!anEvent) {
3298 KNotifyClient::beep(); 3299 KNotifyClient::beep();
3299 return; 3300 return;
3300 } 3301 }
3301 3302
3302 if (anEvent->recurrence()->doesRecur()) { 3303 if (anEvent->recurrence()->doesRecur()) {
3303 QDate itemDate = mViewManager->currentSelectionDate(); 3304 QDate itemDate = mViewManager->currentSelectionDate();
3304 int km; 3305 int km;
3305 if (!itemDate.isValid()) { 3306 if (!itemDate.isValid()) {
3306 //kdDebug() << "Date Not Valid" << endl; 3307 //kdDebug() << "Date Not Valid" << endl;
3307 if (KOPrefs::instance()->mConfirm) { 3308 if (KOPrefs::instance()->mConfirm) {
3308 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3309 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3309 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3310 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3310 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3311 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3311 if ( km == KMessageBox::Continue ) 3312 if ( km == KMessageBox::Continue )
3312 km = KMessageBox::No; // No = all below 3313 km = KMessageBox::No; // No = all below
3313 } else 3314 } else
3314 km = KMessageBox::No; 3315 km = KMessageBox::No;
3315 } else { 3316 } else {
3316 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3317 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
3317 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3318 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3318 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3319 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3319 i18n("KO/Pi Confirmation"),i18n("Current"), 3320 i18n("KO/Pi Confirmation"),i18n("Current"),
3320 i18n("All")); 3321 i18n("All"));
3321 } 3322 }
3322 switch(km) { 3323 switch(km) {
3323 3324
3324 case KMessageBox::No: // Continue // all 3325 case KMessageBox::No: // Continue // all
3325 //qDebug("KMessageBox::No "); 3326 //qDebug("KMessageBox::No ");
3326 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3327 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3327 schedule(Scheduler::Cancel,anEvent); 3328 schedule(Scheduler::Cancel,anEvent);
3328 3329
3329 checkExternalId( anEvent); 3330 checkExternalId( anEvent);
3330 mCalendar->deleteEvent(anEvent); 3331 mCalendar->deleteEvent(anEvent);
3331 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3332 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3332 break; 3333 break;
3333 3334
3334 // Disabled because it does not work 3335 // Disabled because it does not work
3335 //#if 0 3336 //#if 0
3336 case KMessageBox::Yes: // just this one 3337 case KMessageBox::Yes: // just this one
3337 //QDate qd = mNavigator->selectedDates().first(); 3338 //QDate qd = mNavigator->selectedDates().first();
3338 //if (!qd.isValid()) { 3339 //if (!qd.isValid()) {
3339 // kdDebug() << "no date selected, or invalid date" << endl; 3340 // kdDebug() << "no date selected, or invalid date" << endl;
3340 // KNotifyClient::beep(); 3341 // KNotifyClient::beep();
3341 // return; 3342 // return;
3342 //} 3343 //}
3343 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3344 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3344 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3345 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3345 anEvent->addExDate(itemDate); 3346 anEvent->addExDate(itemDate);
3346 int duration = anEvent->recurrence()->duration(); 3347 int duration = anEvent->recurrence()->duration();
3347 if ( duration > 0 ) { 3348 if ( duration > 0 ) {
3348 anEvent->recurrence()->setDuration( duration - 1 ); 3349 anEvent->recurrence()->setDuration( duration - 1 );
3349 } 3350 }
3350 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3351 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3351 } 3352 }
3352 break; 3353 break;
3353 //#endif 3354 //#endif
3354 } // switch 3355 } // switch
3355 } else { 3356 } else {
3356 if (KOPrefs::instance()->mConfirm) { 3357 if (KOPrefs::instance()->mConfirm) {
3357 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3358 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3358 i18n("\nAre you sure you want\nto delete this event?"), 3359 i18n("\nAre you sure you want\nto delete this event?"),
3359 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3360 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3360 case KMessageBox::Continue: // OK 3361 case KMessageBox::Continue: // OK
3361 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3362 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3362 schedule(Scheduler::Cancel,anEvent); 3363 schedule(Scheduler::Cancel,anEvent);
3363 checkExternalId( anEvent); 3364 checkExternalId( anEvent);
3364 mCalendar->deleteEvent(anEvent); 3365 mCalendar->deleteEvent(anEvent);
3365 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3366 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3366 break; 3367 break;
3367 } // switch 3368 } // switch
3368 } else { 3369 } else {
3369 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3370 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3370 schedule(Scheduler::Cancel,anEvent); 3371 schedule(Scheduler::Cancel,anEvent);
3371 checkExternalId( anEvent); 3372 checkExternalId( anEvent);
3372 mCalendar->deleteEvent(anEvent); 3373 mCalendar->deleteEvent(anEvent);
3373 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3374 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3374 } 3375 }
3375 } // if-else 3376 } // if-else
3376 emit updateSearchDialog(); 3377 emit updateSearchDialog();
3377} 3378}
3378 3379
3379bool CalendarView::deleteEvent(const QString &uid) 3380bool CalendarView::deleteEvent(const QString &uid)
3380{ 3381{
3381 Event *ev = mCalendar->event(uid); 3382 Event *ev = mCalendar->event(uid);
3382 if (ev) { 3383 if (ev) {
3383 deleteEvent(ev); 3384 deleteEvent(ev);
3384 return true; 3385 return true;
3385 } else { 3386 } else {
3386 return false; 3387 return false;
3387 } 3388 }
3388} 3389}
3389 3390
3390/*****************************************************************************/ 3391/*****************************************************************************/
3391 3392
3392void CalendarView::action_mail() 3393void CalendarView::action_mail()
3393{ 3394{
3394#ifndef KORG_NOMAIL 3395#ifndef KORG_NOMAIL
3395 KOMailClient mailClient; 3396 KOMailClient mailClient;
3396 3397
3397 Incidence *incidence = currentSelection(); 3398 Incidence *incidence = currentSelection();
3398 3399
3399 if (!incidence) { 3400 if (!incidence) {
3400 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3401 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3401 return; 3402 return;
3402 } 3403 }
3403 if(incidence->attendeeCount() == 0 ) { 3404 if(incidence->attendeeCount() == 0 ) {
3404 KMessageBox::sorry(this, 3405 KMessageBox::sorry(this,
3405 i18n("Can't generate mail:\nNo attendees defined.\n")); 3406 i18n("Can't generate mail:\nNo attendees defined.\n"));
3406 return; 3407 return;
3407 } 3408 }
3408 3409
3409 CalendarLocal cal_tmp; 3410 CalendarLocal cal_tmp;
3410 Event *event = 0; 3411 Event *event = 0;
3411 Event *ev = 0; 3412 Event *ev = 0;
3412 if ( incidence && incidence->typeID() == eventID ) { 3413 if ( incidence && incidence->typeID() == eventID ) {
3413 event = static_cast<Event *>(incidence); 3414 event = static_cast<Event *>(incidence);
3414 ev = new Event(*event); 3415 ev = new Event(*event);
3415 cal_tmp.addEvent(ev); 3416 cal_tmp.addEvent(ev);
3416 } 3417 }
3417 ICalFormat mForm(); 3418 ICalFormat mForm();
3418 QString attachment = mForm.toString( &cal_tmp ); 3419 QString attachment = mForm.toString( &cal_tmp );
3419 if (ev) delete(ev); 3420 if (ev) delete(ev);
3420 3421
3421 mailClient.mailAttendees(currentSelection(), attachment); 3422 mailClient.mailAttendees(currentSelection(), attachment);
3422 3423
3423#endif 3424#endif
3424 3425
3425#if 0 3426#if 0
3426 Event *anEvent = 0; 3427 Event *anEvent = 0;
3427 if (mViewManager->currentView()->isEventView()) { 3428 if (mViewManager->currentView()->isEventView()) {
3428 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3429 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3429 } 3430 }
3430 3431
3431 if (!anEvent) { 3432 if (!anEvent) {
3432 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3433 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3433 return; 3434 return;
3434 } 3435 }
3435 if(anEvent->attendeeCount() == 0 ) { 3436 if(anEvent->attendeeCount() == 0 ) {
3436 KMessageBox::sorry(this, 3437 KMessageBox::sorry(this,
3437 i18n("Can't generate mail:\nNo attendees defined.\n")); 3438 i18n("Can't generate mail:\nNo attendees defined.\n"));
3438 return; 3439 return;
3439 } 3440 }
3440 3441
3441 mailobject.emailEvent(anEvent); 3442 mailobject.emailEvent(anEvent);
3442#endif 3443#endif
3443} 3444}
3444 3445
3445 3446
3446void CalendarView::schedule_publish(Incidence *incidence) 3447void CalendarView::schedule_publish(Incidence *incidence)
3447{ 3448{
3448 Event *event = 0; 3449 Event *event = 0;
3449 Todo *todo = 0; 3450 Todo *todo = 0;
3450 3451
3451 if (incidence == 0) { 3452 if (incidence == 0) {
3452 incidence = mViewManager->currentView()->selectedIncidences().first(); 3453 incidence = mViewManager->currentView()->selectedIncidences().first();
3453 if (incidence == 0) { 3454 if (incidence == 0) {
3454 incidence = mTodoList->selectedIncidences().first(); 3455 incidence = mTodoList->selectedIncidences().first();
3455 } 3456 }
3456 } 3457 }
3457 if ( incidence && incidence->typeID() == eventID ) { 3458 if ( incidence && incidence->typeID() == eventID ) {
3458 event = static_cast<Event *>(incidence); 3459 event = static_cast<Event *>(incidence);
3459 } else { 3460 } else {
3460 if ( incidence && incidence->typeID() == todoID ) { 3461 if ( incidence && incidence->typeID() == todoID ) {
3461 todo = static_cast<Todo *>(incidence); 3462 todo = static_cast<Todo *>(incidence);
3462 } 3463 }
3463 } 3464 }
3464 3465
3465 if (!event && !todo) { 3466 if (!event && !todo) {
3466 KMessageBox::sorry(this,i18n("No event selected.")); 3467 KMessageBox::sorry(this,i18n("No event selected."));
3467 return; 3468 return;
3468 } 3469 }
3469 3470
3470 PublishDialog *publishdlg = new PublishDialog(); 3471 PublishDialog *publishdlg = new PublishDialog();
3471 if (incidence->attendeeCount()>0) { 3472 if (incidence->attendeeCount()>0) {
3472 QPtrList<Attendee> attendees = incidence->attendees(); 3473 QPtrList<Attendee> attendees = incidence->attendees();
3473 attendees.first(); 3474 attendees.first();
3474 while ( attendees.current()!=0 ) { 3475 while ( attendees.current()!=0 ) {
3475 publishdlg->addAttendee(attendees.current()); 3476 publishdlg->addAttendee(attendees.current());
3476 attendees.next(); 3477 attendees.next();
3477 } 3478 }
3478 } 3479 }
3479 bool send = true; 3480 bool send = true;
3480 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3481 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3481 if ( publishdlg->exec() != QDialog::Accepted ) 3482 if ( publishdlg->exec() != QDialog::Accepted )
3482 send = false; 3483 send = false;
3483 } 3484 }
3484 if ( send ) { 3485 if ( send ) {
3485 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3486 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3486 if ( event ) { 3487 if ( event ) {
3487 Event *ev = new Event(*event); 3488 Event *ev = new Event(*event);
3488 ev->registerObserver(0); 3489 ev->registerObserver(0);
3489 ev->clearAttendees(); 3490 ev->clearAttendees();
3490 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3491 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3491 delete(ev); 3492 delete(ev);
3492 } 3493 }
3493 } else { 3494 } else {
3494 if ( todo ) { 3495 if ( todo ) {
3495 Todo *ev = new Todo(*todo); 3496 Todo *ev = new Todo(*todo);
3496 ev->registerObserver(0); 3497 ev->registerObserver(0);
3497 ev->clearAttendees(); 3498 ev->clearAttendees();
3498 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3499 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3499 delete(ev); 3500 delete(ev);
3500 } 3501 }
3501 } 3502 }
3502 } 3503 }
3503 } 3504 }
3504 delete publishdlg; 3505 delete publishdlg;
3505} 3506}
3506 3507
3507void CalendarView::schedule_request(Incidence *incidence) 3508void CalendarView::schedule_request(Incidence *incidence)
3508{ 3509{
3509 schedule(Scheduler::Request,incidence); 3510 schedule(Scheduler::Request,incidence);
3510} 3511}
3511 3512
3512void CalendarView::schedule_refresh(Incidence *incidence) 3513void CalendarView::schedule_refresh(Incidence *incidence)
3513{ 3514{
3514 schedule(Scheduler::Refresh,incidence); 3515 schedule(Scheduler::Refresh,incidence);
3515} 3516}
3516 3517
3517void CalendarView::schedule_cancel(Incidence *incidence) 3518void CalendarView::schedule_cancel(Incidence *incidence)
3518{ 3519{
3519 schedule(Scheduler::Cancel,incidence); 3520 schedule(Scheduler::Cancel,incidence);
3520} 3521}
3521 3522
3522void CalendarView::schedule_add(Incidence *incidence) 3523void CalendarView::schedule_add(Incidence *incidence)
3523{ 3524{
3524 schedule(Scheduler::Add,incidence); 3525 schedule(Scheduler::Add,incidence);
3525} 3526}
3526 3527
3527void CalendarView::schedule_reply(Incidence *incidence) 3528void CalendarView::schedule_reply(Incidence *incidence)
3528{ 3529{
3529 schedule(Scheduler::Reply,incidence); 3530 schedule(Scheduler::Reply,incidence);
3530} 3531}
3531 3532
3532void CalendarView::schedule_counter(Incidence *incidence) 3533void CalendarView::schedule_counter(Incidence *incidence)
3533{ 3534{
3534 schedule(Scheduler::Counter,incidence); 3535 schedule(Scheduler::Counter,incidence);
3535} 3536}
3536 3537
3537void CalendarView::schedule_declinecounter(Incidence *incidence) 3538void CalendarView::schedule_declinecounter(Incidence *incidence)
3538{ 3539{
3539 schedule(Scheduler::Declinecounter,incidence); 3540 schedule(Scheduler::Declinecounter,incidence);
3540} 3541}
3541 3542
3542void CalendarView::schedule_publish_freebusy(int daysToPublish) 3543void CalendarView::schedule_publish_freebusy(int daysToPublish)
3543{ 3544{
3544 QDateTime start = QDateTime::currentDateTime(); 3545 QDateTime start = QDateTime::currentDateTime();
3545 QDateTime end = start.addDays(daysToPublish); 3546 QDateTime end = start.addDays(daysToPublish);
3546 3547
3547 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3548 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3548 freebusy->setOrganizer(KOPrefs::instance()->email()); 3549 freebusy->setOrganizer(KOPrefs::instance()->email());
3549 3550
3550 3551
3551 PublishDialog *publishdlg = new PublishDialog(); 3552 PublishDialog *publishdlg = new PublishDialog();
3552 if ( publishdlg->exec() == QDialog::Accepted ) { 3553 if ( publishdlg->exec() == QDialog::Accepted ) {
3553 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3554 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3554 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3555 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3555 delete(freebusy); 3556 delete(freebusy);
3556 } 3557 }
3557 } 3558 }
3558 delete publishdlg; 3559 delete publishdlg;
3559} 3560}
3560 3561
3561void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3562void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3562{ 3563{
3563 Event *event = 0; 3564 Event *event = 0;
3564 Todo *todo = 0; 3565 Todo *todo = 0;
3565 3566
3566 if (incidence == 0) { 3567 if (incidence == 0) {
3567 incidence = mViewManager->currentView()->selectedIncidences().first(); 3568 incidence = mViewManager->currentView()->selectedIncidences().first();
3568 if (incidence == 0) { 3569 if (incidence == 0) {
3569 incidence = mTodoList->selectedIncidences().first(); 3570 incidence = mTodoList->selectedIncidences().first();
3570 } 3571 }
3571 } 3572 }
3572 if ( incidence && incidence->typeID() == eventID ) { 3573 if ( incidence && incidence->typeID() == eventID ) {
3573 event = static_cast<Event *>(incidence); 3574 event = static_cast<Event *>(incidence);
3574 } 3575 }
3575 if ( incidence && incidence->typeID() == todoID ) { 3576 if ( incidence && incidence->typeID() == todoID ) {
3576 todo = static_cast<Todo *>(incidence); 3577 todo = static_cast<Todo *>(incidence);
3577 } 3578 }
3578 3579
3579 if (!event && !todo) { 3580 if (!event && !todo) {
3580 KMessageBox::sorry(this,i18n("No event selected.")); 3581 KMessageBox::sorry(this,i18n("No event selected."));
3581 return; 3582 return;
3582 } 3583 }
3583 3584
3584 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3585 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3585 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3586 KMessageBox::sorry(this,i18n("The event has no attendees."));
3586 return; 3587 return;
3587 } 3588 }
3588 3589
3589 Event *ev = 0; 3590 Event *ev = 0;
3590 if (event) ev = new Event(*event); 3591 if (event) ev = new Event(*event);
3591 Todo *to = 0; 3592 Todo *to = 0;
3592 if (todo) to = new Todo(*todo); 3593 if (todo) to = new Todo(*todo);
3593 3594
3594 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3595 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3595 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3596 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3596 if (!me) { 3597 if (!me) {
3597 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3598 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3598 return; 3599 return;
3599 } 3600 }
3600 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3601 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3601 StatusDialog *statdlg = new StatusDialog(this); 3602 StatusDialog *statdlg = new StatusDialog(this);
3602 if (!statdlg->exec()==QDialog::Accepted) return; 3603 if (!statdlg->exec()==QDialog::Accepted) return;
3603 me->setStatus( statdlg->status() ); 3604 me->setStatus( statdlg->status() );
3604 delete(statdlg); 3605 delete(statdlg);
3605 } 3606 }
3606 Attendee *menew = new Attendee(*me); 3607 Attendee *menew = new Attendee(*me);
3607 if (ev) { 3608 if (ev) {
3608 ev->clearAttendees(); 3609 ev->clearAttendees();
3609 ev->addAttendee(menew,false); 3610 ev->addAttendee(menew,false);
3610 } else { 3611 } else {
3611 if (to) { 3612 if (to) {
3612 todo->clearAttendees(); 3613 todo->clearAttendees();
3613 todo->addAttendee(menew,false); 3614 todo->addAttendee(menew,false);
3614 } 3615 }
3615 } 3616 }
3616 } 3617 }
3617 3618
3618 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3619 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3619 if (ev) { 3620 if (ev) {
3620 if ( !dlg->addMessage(ev,method) ) delete(ev); 3621 if ( !dlg->addMessage(ev,method) ) delete(ev);
3621 } else { 3622 } else {
3622 if (to) { 3623 if (to) {
3623 if ( !dlg->addMessage(to,method) ) delete(to); 3624 if ( !dlg->addMessage(to,method) ) delete(to);
3624 } 3625 }
3625 } 3626 }
3626} 3627}
3627 3628
3628void CalendarView::openAddressbook() 3629void CalendarView::openAddressbook()
3629{ 3630{
3630 KRun::runCommand("kaddressbook"); 3631 KRun::runCommand("kaddressbook");
3631} 3632}
3632 3633
3633void CalendarView::setModified(bool modified) 3634void CalendarView::setModified(bool modified)
3634{ 3635{
3635 if ( modified ) 3636 if ( modified )
3636 emit signalmodified(); 3637 emit signalmodified();
3637 if (mModified != modified) { 3638 if (mModified != modified) {
3638 mModified = modified; 3639 mModified = modified;
3639 emit modifiedChanged(mModified); 3640 emit modifiedChanged(mModified);
3640 } 3641 }
3641} 3642}
3642 3643
3643bool CalendarView::isReadOnly() 3644bool CalendarView::isReadOnly()
3644{ 3645{
3645 return mReadOnly; 3646 return mReadOnly;
3646} 3647}
3647 3648
3648void CalendarView::setReadOnly(bool readOnly) 3649void CalendarView::setReadOnly(bool readOnly)
3649{ 3650{
3650 if (mReadOnly != readOnly) { 3651 if (mReadOnly != readOnly) {
3651 mReadOnly = readOnly; 3652 mReadOnly = readOnly;
3652 emit readOnlyChanged(mReadOnly); 3653 emit readOnlyChanged(mReadOnly);
3653 } 3654 }
3654} 3655}
3655 3656
3656bool CalendarView::isModified() 3657bool CalendarView::isModified()
3657{ 3658{
3658 return mModified; 3659 return mModified;
3659} 3660}
3660void CalendarView::slotprintSelInc() 3661void CalendarView::slotprintSelInc()
3661{ 3662{
3662 if ( currentSelection() == 0 ) { 3663 if ( currentSelection() == 0 ) {
3663 KMessageBox::sorry(this,i18n("There is nothing selected!")); 3664 KMessageBox::sorry(this,i18n("There is nothing selected!"));
3664 return; 3665 return;
3665 } 3666 }
3666 showIncidence(); 3667 showIncidence();
3667 getEventViewerDialog()->print(); 3668 getEventViewerDialog()->print();
3668 3669
3669} 3670}
3670void CalendarView::printSetup() 3671void CalendarView::printSetup()
3671{ 3672{
3672#ifndef KORG_NOPRINTER 3673#ifndef KORG_NOPRINTER
3673 createPrinter(); 3674 createPrinter();
3674 3675
3675 mCalPrinter->setupPrinter(); 3676 mCalPrinter->setupPrinter();
3676#endif 3677#endif
3677} 3678}
3678 3679
3679void CalendarView::print() 3680void CalendarView::print()
3680{ 3681{
3681#ifndef KORG_NOPRINTER 3682#ifndef KORG_NOPRINTER
3682 createPrinter(); 3683 createPrinter();
3683 3684
3684 DateList tmpDateList = mNavigator->selectedDates(); 3685 DateList tmpDateList = mNavigator->selectedDates();
3685 mCalPrinter->print(CalPrinter::Month, 3686 mCalPrinter->print(CalPrinter::Month,
3686 tmpDateList.first(), tmpDateList.last()); 3687 tmpDateList.first(), tmpDateList.last());
3687#endif 3688#endif
3688} 3689}
3689 3690
3690void CalendarView::printPreview() 3691void CalendarView::printPreview()
3691{ 3692{
3692#ifndef KORG_NOPRINTER 3693#ifndef KORG_NOPRINTER
3693 kdDebug() << "CalendarView::printPreview()" << endl; 3694 kdDebug() << "CalendarView::printPreview()" << endl;
3694 3695
3695 createPrinter(); 3696 createPrinter();
3696 3697
3697 DateList tmpDateList = mNavigator->selectedDates(); 3698 DateList tmpDateList = mNavigator->selectedDates();
3698 3699
3699 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3700 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3700 tmpDateList.last()); 3701 tmpDateList.last());
3701#endif 3702#endif
3702} 3703}
3703 3704
3704void CalendarView::exportICalendar() 3705void CalendarView::exportICalendar()
3705{ 3706{
3706 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3707 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3707 3708
3708 // Force correct extension 3709 // Force correct extension
3709 if (filename.right(4) != ".ics") filename += ".ics"; 3710 if (filename.right(4) != ".ics") filename += ".ics";
3710 3711
3711 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3712 FileStorage storage( mCalendar, filename, new ICalFormat() );
3712 storage.save(); 3713 storage.save();
3713} 3714}
3714 3715
3715bool CalendarView::exportVCalendar( QString filename ) 3716bool CalendarView::exportVCalendar( QString filename )
3716{ 3717{
3717 if (mCalendar->journals().count() > 0) { 3718 if (mCalendar->journals().count() > 0) {
3718 int result = KMessageBox::warningContinueCancel(this, 3719 int result = KMessageBox::warningContinueCancel(this,
3719 i18n("The journal entries can not be\nexported to a vCalendar file."), 3720 i18n("The journal entries can not be\nexported to a vCalendar file."),
3720 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3721 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3721 true); 3722 true);
3722 if (result != KMessageBox::Continue) return false; 3723 if (result != KMessageBox::Continue) return false;
3723 } 3724 }
3724 3725
3725 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3726 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3726 3727
3727 // Force correct extension 3728 // Force correct extension
3728 if (filename.right(4) != ".vcs") filename += ".vcs"; 3729 if (filename.right(4) != ".vcs") filename += ".vcs";
3729 3730
3730 FileStorage storage( mCalendar, filename, new VCalFormat ); 3731 FileStorage storage( mCalendar, filename, new VCalFormat );
3731 return storage.save(); 3732 return storage.save();
3732 3733
3733} 3734}
3734 3735
3735void CalendarView::eventUpdated(Incidence *) 3736void CalendarView::eventUpdated(Incidence *)
3736{ 3737{
3737 setModified(); 3738 setModified();
3738 // Don't call updateView here. The code, which has caused the update of the 3739 // Don't call updateView here. The code, which has caused the update of the
3739 // event is responsible for updating the view. 3740 // event is responsible for updating the view.
3740 // updateView(); 3741 // updateView();
3741} 3742}
3742 3743
3743void CalendarView::adaptNavigationUnits() 3744void CalendarView::adaptNavigationUnits()
3744{ 3745{
3745 if (mViewManager->currentView()->isEventView()) { 3746 if (mViewManager->currentView()->isEventView()) {
3746 int days = mViewManager->currentView()->currentDateCount(); 3747 int days = mViewManager->currentView()->currentDateCount();
3747 if (days == 1) { 3748 if (days == 1) {
3748 emit changeNavStringPrev(i18n("&Previous Day")); 3749 emit changeNavStringPrev(i18n("&Previous Day"));
3749 emit changeNavStringNext(i18n("&Next Day")); 3750 emit changeNavStringNext(i18n("&Next Day"));
3750 } else { 3751 } else {
3751 emit changeNavStringPrev(i18n("&Previous Week")); 3752 emit changeNavStringPrev(i18n("&Previous Week"));
3752 emit changeNavStringNext(i18n("&Next Week")); 3753 emit changeNavStringNext(i18n("&Next Week"));
3753 } 3754 }
3754 } 3755 }
3755} 3756}
3756 3757
3757void CalendarView::processMainViewSelection( Incidence *incidence ) 3758void CalendarView::processMainViewSelection( Incidence *incidence )
3758{ 3759{
3759 if ( incidence ) mTodoList->clearSelection(); 3760 if ( incidence ) mTodoList->clearSelection();
3760 processIncidenceSelection( incidence ); 3761 processIncidenceSelection( incidence );
3761} 3762}
3762 3763
3763void CalendarView::processTodoListSelection( Incidence *incidence ) 3764void CalendarView::processTodoListSelection( Incidence *incidence )
3764{ 3765{
3765 if ( incidence && mViewManager->currentView() ) { 3766 if ( incidence && mViewManager->currentView() ) {
3766 mViewManager->currentView()->clearSelection(); 3767 mViewManager->currentView()->clearSelection();
3767 } 3768 }
3768 processIncidenceSelection( incidence ); 3769 processIncidenceSelection( incidence );
3769} 3770}
3770 3771
3771void CalendarView::processIncidenceSelection( Incidence *incidence ) 3772void CalendarView::processIncidenceSelection( Incidence *incidence )
3772{ 3773{
3773 if ( incidence == mSelectedIncidence ) return; 3774 if ( incidence == mSelectedIncidence ) return;
3774 3775
3775 mSelectedIncidence = incidence; 3776 mSelectedIncidence = incidence;
3776 3777
3777 emit incidenceSelected( mSelectedIncidence ); 3778 emit incidenceSelected( mSelectedIncidence );
3778 3779
3779 if ( incidence && incidence->typeID() == eventID ) { 3780 if ( incidence && incidence->typeID() == eventID ) {
3780 Event *event = static_cast<Event *>( incidence ); 3781 Event *event = static_cast<Event *>( incidence );
3781 if ( event->organizer() == KOPrefs::instance()->email() ) { 3782 if ( event->organizer() == KOPrefs::instance()->email() ) {
3782 emit organizerEventsSelected( true ); 3783 emit organizerEventsSelected( true );
3783 } else { 3784 } else {
3784 emit organizerEventsSelected(false); 3785 emit organizerEventsSelected(false);
3785 } 3786 }
3786 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3787 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3787 KOPrefs::instance()->email() ) ) { 3788 KOPrefs::instance()->email() ) ) {
3788 emit groupEventsSelected( true ); 3789 emit groupEventsSelected( true );
3789 } else { 3790 } else {
3790 emit groupEventsSelected(false); 3791 emit groupEventsSelected(false);
3791 } 3792 }
3792 return; 3793 return;
3793 } else { 3794 } else {
3794 if ( incidence && incidence->typeID() == todoID ) { 3795 if ( incidence && incidence->typeID() == todoID ) {
3795 emit todoSelected( true ); 3796 emit todoSelected( true );
3796 Todo *event = static_cast<Todo *>( incidence ); 3797 Todo *event = static_cast<Todo *>( incidence );
3797 if ( event->organizer() == KOPrefs::instance()->email() ) { 3798 if ( event->organizer() == KOPrefs::instance()->email() ) {
3798 emit organizerEventsSelected( true ); 3799 emit organizerEventsSelected( true );
3799 } else { 3800 } else {
3800 emit organizerEventsSelected(false); 3801 emit organizerEventsSelected(false);
3801 } 3802 }
3802 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3803 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3803 KOPrefs::instance()->email() ) ) { 3804 KOPrefs::instance()->email() ) ) {
3804 emit groupEventsSelected( true ); 3805 emit groupEventsSelected( true );
3805 } else { 3806 } else {
3806 emit groupEventsSelected(false); 3807 emit groupEventsSelected(false);
3807 } 3808 }
3808 return; 3809 return;
3809 } else { 3810 } else {
3810 emit todoSelected( false ); 3811 emit todoSelected( false );
3811 emit organizerEventsSelected(false); 3812 emit organizerEventsSelected(false);
3812 emit groupEventsSelected(false); 3813 emit groupEventsSelected(false);
3813 } 3814 }
3814 return; 3815 return;
3815 } 3816 }
3816 3817
3817 /* if ( incidence && incidence->typeID() == todoID ) { 3818 /* if ( incidence && incidence->typeID() == todoID ) {
3818 emit todoSelected( true ); 3819 emit todoSelected( true );
3819 } else { 3820 } else {
3820 emit todoSelected( false ); 3821 emit todoSelected( false );
3821 }*/ 3822 }*/
3822} 3823}
3823 3824
3824 3825
3825void CalendarView::checkClipboard() 3826void CalendarView::checkClipboard()
3826{ 3827{
3827#ifndef KORG_NODND 3828#ifndef KORG_NODND
3828 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3829 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3829 emit pasteEnabled(true); 3830 emit pasteEnabled(true);
3830 } else { 3831 } else {
3831 emit pasteEnabled(false); 3832 emit pasteEnabled(false);
3832 } 3833 }
3833#endif 3834#endif
3834} 3835}
3835 3836
3836void CalendarView::showDates(const DateList &selectedDates) 3837void CalendarView::showDates(const DateList &selectedDates)
3837{ 3838{
3838 // kdDebug() << "CalendarView::selectDates()" << endl; 3839 // kdDebug() << "CalendarView::selectDates()" << endl;
3839 3840
3840 3841
3841 if ( !mBlockShowDates ) { 3842 if ( !mBlockShowDates ) {
3842 if ( mViewManager->currentView() ) { 3843 if ( mViewManager->currentView() ) {
3843 updateView( selectedDates.first(), selectedDates.last() ); 3844 updateView( selectedDates.first(), selectedDates.last() );
3844 } else { 3845 } else {
3845 mViewManager->showAgendaView(); 3846 mViewManager->showAgendaView();
3846 } 3847 }
3847 } 3848 }
3848 3849
3849 QDate date = selectedDates.first(); 3850 QDate date = selectedDates.first();
3850 if ( ! date.isValid() ) { 3851 if ( ! date.isValid() ) {
3851 topLevelWidget()->setCaption(""); 3852 topLevelWidget()->setCaption("");
3852 return; 3853 return;
3853 } 3854 }
3854 3855
3855 QString selDates; 3856 QString selDates;
3856 selDates = KGlobal::locale()->formatDate( date, true); 3857 selDates = KGlobal::locale()->formatDate( date, true);
3857 if (selectedDates.first() < selectedDates.last() ) 3858 if (selectedDates.first() < selectedDates.last() )
3858 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3859 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3859 else { 3860 else {
3860 QString addString; 3861 QString addString;
3861 if ( date == QDateTime::currentDateTime().date() ) 3862 if ( date == QDateTime::currentDateTime().date() )
3862 addString = i18n("Today"); 3863 addString = i18n("Today");
3863 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 3864 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
3864 addString = i18n("Tomorrow"); 3865 addString = i18n("Tomorrow");
3865 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 3866 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
3866 addString = i18n("Yesterday"); 3867 addString = i18n("Yesterday");
3867 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 3868 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
3868 addString = i18n("Day before yesterday"); 3869 addString = i18n("Day before yesterday");
3869 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 3870 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
3870 addString = i18n("Day after tomorrow"); 3871 addString = i18n("Day after tomorrow");
3871 if ( !addString.isEmpty() ) { 3872 if ( !addString.isEmpty() ) {
3872 topLevelWidget()->setCaption( addString+", " + selDates ); 3873 topLevelWidget()->setCaption( addString+", " + selDates );
3873 return; 3874 return;
3874 } 3875 }
3875 } 3876 }
3876 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3877 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3877 3878
3878} 3879}
3879 3880
3880QPtrList<CalFilter> CalendarView::filters() 3881QPtrList<CalFilter> CalendarView::filters()
3881{ 3882{
3882 return mFilters; 3883 return mFilters;
3883 3884
3884} 3885}
3885void CalendarView::editFilters() 3886void CalendarView::editFilters()
3886{ 3887{
3887 // kdDebug() << "CalendarView::editFilters()" << endl; 3888 // kdDebug() << "CalendarView::editFilters()" << endl;
3888 3889
3889 CalFilter *filter = mFilters.first(); 3890 CalFilter *filter = mFilters.first();
3890 while(filter) { 3891 while(filter) {
3891 kdDebug() << " Filter: " << filter->name() << endl; 3892 kdDebug() << " Filter: " << filter->name() << endl;
3892 filter = mFilters.next(); 3893 filter = mFilters.next();
3893 } 3894 }
3894 3895
3895 mDialogManager->showFilterEditDialog(&mFilters); 3896 mDialogManager->showFilterEditDialog(&mFilters);
3896} 3897}
3897void CalendarView::toggleFilter() 3898void CalendarView::toggleFilter()
3898{ 3899{
3899 showFilter(! mFilterView->isVisible()); 3900 showFilter(! mFilterView->isVisible());
3900} 3901}
3901 3902
3902KOFilterView *CalendarView::filterView() 3903KOFilterView *CalendarView::filterView()
3903{ 3904{
3904 return mFilterView; 3905 return mFilterView;
3905} 3906}
3906void CalendarView::selectFilter( int fil ) 3907void CalendarView::selectFilter( int fil )
3907{ 3908{
3908 mFilterView->setSelectedFilter( fil ); 3909 mFilterView->setSelectedFilter( fil );
3909} 3910}
3910void CalendarView::showFilter(bool visible) 3911void CalendarView::showFilter(bool visible)
3911{ 3912{
3913#if 0
3912 if (visible) mCalEditView->show(); 3914 if (visible) mCalEditView->show();
3913 else mCalEditView->hide(); 3915 else mCalEditView->hide();
3914#if 0 3916#else
3915 if (visible) mFilterView->show(); 3917 if (visible) mFilterView->show();
3916 else mFilterView->hide(); 3918 else mFilterView->hide();
3917#endif 3919#endif
3918} 3920}
3919void CalendarView::toggleFilerEnabled( ) 3921void CalendarView::toggleFilerEnabled( )
3920{ 3922{
3921 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3923 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3922 if ( !mFilterView->filtersEnabled() ) 3924 if ( !mFilterView->filtersEnabled() )
3923 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3925 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3924 3926
3925} 3927}
3926void CalendarView::updateFilter() 3928void CalendarView::updateFilter()
3927{ 3929{
3928 CalFilter *filter = mFilterView->selectedFilter(); 3930 CalFilter *filter = mFilterView->selectedFilter();
3929 if (filter) { 3931 if (filter) {
3930 QString mess; 3932 QString mess;
3931 if (mFilterView->filtersEnabled()) { 3933 if (mFilterView->filtersEnabled()) {
3932 mess = i18n("Filter selected: ")+filter->name(); 3934 mess = i18n("Filter selected: ")+filter->name();
3933 filter->setEnabled(true); 3935 filter->setEnabled(true);
3934 } 3936 }
3935 else filter->setEnabled(false); 3937 else filter->setEnabled(false);
3936 mCalendar->setFilter(filter); 3938 mCalendar->setFilter(filter);
3937 updateView(); 3939 updateView();
3938 if ( !mess.isEmpty() ) 3940 if ( !mess.isEmpty() )
3939 topLevelWidget()->setCaption( mess ); 3941 topLevelWidget()->setCaption( mess );
3940 3942
3941 } 3943 }
3942} 3944}
3943 3945
3944void CalendarView::filterEdited() 3946void CalendarView::filterEdited()
3945{ 3947{
3946 mFilterView->updateFilters(); 3948 mFilterView->updateFilters();
3947 updateFilter(); 3949 updateFilter();
3948 writeSettings(); 3950 writeSettings();
3949} 3951}
3950 3952
3951 3953
3952void CalendarView::takeOverEvent() 3954void CalendarView::takeOverEvent()
3953{ 3955{
3954 Incidence *incidence = currentSelection(); 3956 Incidence *incidence = currentSelection();
3955 3957
3956 if (!incidence) return; 3958 if (!incidence) return;
3957 3959
3958 incidence->setOrganizer(KOPrefs::instance()->email()); 3960 incidence->setOrganizer(KOPrefs::instance()->email());
3959 incidence->recreate(); 3961 incidence->recreate();
3960 incidence->setReadOnly(false); 3962 incidence->setReadOnly(false);
3961 3963
3962 updateView(); 3964 updateView();
3963} 3965}
3964 3966
3965void CalendarView::takeOverCalendar() 3967void CalendarView::takeOverCalendar()
3966{ 3968{
3967 // TODO: Create Calendar::allIncidences() function and use it here 3969 // TODO: Create Calendar::allIncidences() function and use it here
3968 3970
3969 clearAllViews(); 3971 clearAllViews();
3970 QPtrList<Event> events = mCalendar->events(); 3972 QPtrList<Event> events = mCalendar->events();
3971 for(uint i=0; i<events.count(); ++i) { 3973 for(uint i=0; i<events.count(); ++i) {
3972 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3974 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3973 events.at(i)->recreate(); 3975 events.at(i)->recreate();
3974 events.at(i)->setReadOnly(false); 3976 events.at(i)->setReadOnly(false);
3975 } 3977 }
3976 3978
3977 QPtrList<Todo> todos = mCalendar->todos(); 3979 QPtrList<Todo> todos = mCalendar->todos();
3978 for(uint i=0; i<todos.count(); ++i) { 3980 for(uint i=0; i<todos.count(); ++i) {
3979 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3981 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3980 todos.at(i)->recreate(); 3982 todos.at(i)->recreate();
3981 todos.at(i)->setReadOnly(false); 3983 todos.at(i)->setReadOnly(false);
3982 } 3984 }
3983 3985
3984 QPtrList<Journal> journals = mCalendar->journals(); 3986 QPtrList<Journal> journals = mCalendar->journals();
3985 for(uint i=0; i<journals.count(); ++i) { 3987 for(uint i=0; i<journals.count(); ++i) {
3986 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3988 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3987 journals.at(i)->recreate(); 3989 journals.at(i)->recreate();
3988 journals.at(i)->setReadOnly(false); 3990 journals.at(i)->setReadOnly(false);
3989 } 3991 }
3990 3992
3991 updateView(); 3993 updateView();
3992} 3994}
3993 3995
3994void CalendarView::showIntro() 3996void CalendarView::showIntro()
3995{ 3997{
3996 kdDebug() << "To be implemented." << endl; 3998 kdDebug() << "To be implemented." << endl;
3997} 3999}
3998 4000
3999QWidgetStack *CalendarView::viewStack() 4001QWidgetStack *CalendarView::viewStack()
4000{ 4002{
4001 return mRightFrame; 4003 return mRightFrame;
4002} 4004}
4003 4005
4004QWidget *CalendarView::leftFrame() 4006QWidget *CalendarView::leftFrame()
4005{ 4007{
4006 return ( QWidget *)mLeftFrame; 4008 return ( QWidget *)mLeftFrame;
4007} 4009}
4008 4010
4009DateNavigator *CalendarView::dateNavigator() 4011DateNavigator *CalendarView::dateNavigator()
4010{ 4012{
4011 return mNavigator; 4013 return mNavigator;
4012} 4014}
4013 4015
4014KDateNavigator* CalendarView::dateNavigatorWidget() 4016KDateNavigator* CalendarView::dateNavigatorWidget()
4015{ 4017{
4016 return mDateNavigator->navigatorView(); 4018 return mDateNavigator->navigatorView();
4017} 4019}
4018void CalendarView::toggleDateNavigatorWidget() 4020void CalendarView::toggleDateNavigatorWidget()
4019{ 4021{
4020 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 4022 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
4021 4023
4022 if (!KOPrefs::instance()->mShowDateNavigator ) 4024 if (!KOPrefs::instance()->mShowDateNavigator )
4023 mDateNavigator->hide(); 4025 mDateNavigator->hide();
4024 else 4026 else
4025 mDateNavigator->show(); 4027 mDateNavigator->show();
4026} 4028}
4027void CalendarView::addView(KOrg::BaseView *view) 4029void CalendarView::addView(KOrg::BaseView *view)
4028{ 4030{
4029 mViewManager->addView(view); 4031 mViewManager->addView(view);
4030} 4032}
4031 4033
4032void CalendarView::showView(KOrg::BaseView *view) 4034void CalendarView::showView(KOrg::BaseView *view)
4033{ 4035{
4034 mViewManager->showView(view, mLeftFrame->isVisible()); 4036 mViewManager->showView(view, mLeftFrame->isVisible());
4035} 4037}
4036 4038
4037Incidence *CalendarView::currentSelection() 4039Incidence *CalendarView::currentSelection()
4038{ 4040{
4039 return mViewManager->currentSelection(); 4041 return mViewManager->currentSelection();
4040} 4042}
4041void CalendarView::toggleAllDaySize() 4043void CalendarView::toggleAllDaySize()
4042{ 4044{
4043 /* 4045 /*
4044 if ( KOPrefs::instance()->mAllDaySize > 47 ) 4046 if ( KOPrefs::instance()->mAllDaySize > 47 )
4045 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 4047 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
4046 else 4048 else
4047 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 4049 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
4048 */ 4050 */
4049 viewManager()->agendaView()->toggleAllDay(); 4051 viewManager()->agendaView()->toggleAllDay();
4050} 4052}
4051void CalendarView::toggleExpand() 4053void CalendarView::toggleExpand()
4052{ 4054{
4053 // if ( mLeftFrame->isHidden() ) { 4055 // if ( mLeftFrame->isHidden() ) {
4054 // mLeftFrame->show(); 4056 // mLeftFrame->show();
4055 // emit calendarViewExpanded( false ); 4057 // emit calendarViewExpanded( false );
4056 // } else { 4058 // } else {
4057 // mLeftFrame->hide(); 4059 // mLeftFrame->hide();
4058 // emit calendarViewExpanded( true ); 4060 // emit calendarViewExpanded( true );
4059 // } 4061 // }
4060 //qDebug(" CalendarView::toggleExpand()"); 4062 //qDebug(" CalendarView::toggleExpand()");
4061 globalFlagBlockAgenda = 1; 4063 globalFlagBlockAgenda = 1;
4062 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 4064 emit calendarViewExpanded( !mLeftFrame->isHidden() );
4063 globalFlagBlockAgenda = 5; 4065 globalFlagBlockAgenda = 5;
4064 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 4066 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
4065 //mViewManager->showView( 0, true ); 4067 //mViewManager->showView( 0, true );
4066} 4068}
4067 4069
4068void CalendarView::calendarModified( bool modified, Calendar * ) 4070void CalendarView::calendarModified( bool modified, Calendar * )
4069{ 4071{
4070 setModified( modified ); 4072 setModified( modified );
4071} 4073}
4072 4074
4073Todo *CalendarView::selectedTodo() 4075Todo *CalendarView::selectedTodo()
4074{ 4076{
4075 Incidence *incidence = currentSelection(); 4077 Incidence *incidence = currentSelection();
4076 if ( incidence && incidence->typeID() == todoID ) { 4078 if ( incidence && incidence->typeID() == todoID ) {
4077 return static_cast<Todo *>( incidence ); 4079 return static_cast<Todo *>( incidence );
4078 } 4080 }
4079 4081
4080 incidence = mTodoList->selectedIncidences().first(); 4082 incidence = mTodoList->selectedIncidences().first();
4081 if ( incidence && incidence->typeID() == todoID ) { 4083 if ( incidence && incidence->typeID() == todoID ) {
4082 return static_cast<Todo *>( incidence ); 4084 return static_cast<Todo *>( incidence );
4083 } 4085 }
4084 4086
4085 return 0; 4087 return 0;
4086} 4088}
4087 4089
4088void CalendarView::dialogClosing(Incidence *in) 4090void CalendarView::dialogClosing(Incidence *in)
4089{ 4091{
4090 // mDialogList.remove(in); 4092 // mDialogList.remove(in);
4091} 4093}
4092 4094
4093void CalendarView::showIncidence() 4095void CalendarView::showIncidence()
4094{ 4096{
4095 mViewerCallerIsSearchDialog = false; 4097 mViewerCallerIsSearchDialog = false;
4096 Incidence *incidence = currentSelection(); 4098 Incidence *incidence = currentSelection();
4097 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4099 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4098 if ( incidence ) { 4100 if ( incidence ) {
4099 ShowIncidenceVisitor v; 4101 ShowIncidenceVisitor v;
4100 v.act( incidence, this ); 4102 v.act( incidence, this );
4101 } 4103 }
4102} 4104}
4103void CalendarView::editIncidenceDescription() 4105void CalendarView::editIncidenceDescription()
4104{ 4106{
4105 mFlagEditDescription = true; 4107 mFlagEditDescription = true;
4106 editIncidence(); 4108 editIncidence();
4107 mFlagEditDescription = false; 4109 mFlagEditDescription = false;
4108} 4110}
4109void CalendarView::editIncidence() 4111void CalendarView::editIncidence()
4110{ 4112{
4111 // qDebug("editIncidence() "); 4113 // qDebug("editIncidence() ");
4112 Incidence *incidence = currentSelection(); 4114 Incidence *incidence = currentSelection();
4113 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4115 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4114 if ( incidence ) { 4116 if ( incidence ) {
4115 EditIncidenceVisitor v; 4117 EditIncidenceVisitor v;
4116 v.act( incidence, this ); 4118 v.act( incidence, this );
4117 } 4119 }
4118} 4120}
4119 4121
4120void CalendarView::deleteIncidence() 4122void CalendarView::deleteIncidence()
4121{ 4123{
4122 Incidence *incidence = currentSelection(); 4124 Incidence *incidence = currentSelection();
4123 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4125 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4124 if ( incidence ) { 4126 if ( incidence ) {
4125 deleteIncidence(incidence); 4127 deleteIncidence(incidence);
4126 } 4128 }
4127} 4129}
4128void CalendarView::showIncidence(QString uid) 4130void CalendarView::showIncidence(QString uid)
4129{ 4131{
4130 Incidence *inc = mCalendar->incidence( uid ); 4132 Incidence *inc = mCalendar->incidence( uid );
4131 if ( inc ) 4133 if ( inc )
4132 showIncidence( inc ); 4134 showIncidence( inc );
4133} 4135}
4134void CalendarView::showIncidence(Incidence *incidence) 4136void CalendarView::showIncidence(Incidence *incidence)
4135{ 4137{
4136 mViewerCallerIsSearchDialog = false; 4138 mViewerCallerIsSearchDialog = false;
4137 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4139 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4138 if ( sender() && mDialogManager->getSearchDialog() ) { 4140 if ( sender() && mDialogManager->getSearchDialog() ) {
4139 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4141 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4140 mViewerCallerIsSearchDialog = true; 4142 mViewerCallerIsSearchDialog = true;
4141 } 4143 }
4142 } 4144 }
4143 if ( incidence ) { 4145 if ( incidence ) {
4144 ShowIncidenceVisitor v; 4146 ShowIncidenceVisitor v;
4145 v.act( incidence, this ); 4147 v.act( incidence, this );
4146 } 4148 }
4147} 4149}
4148 4150
4149void CalendarView::editIncidence(Incidence *incidence) 4151void CalendarView::editIncidence(Incidence *incidence)
4150{ 4152{
4151 if ( incidence ) { 4153 if ( incidence ) {
4152 4154
4153 EditIncidenceVisitor v; 4155 EditIncidenceVisitor v;
4154 v.act( incidence, this ); 4156 v.act( incidence, this );
4155 4157
4156 } 4158 }
4157} 4159}
4158 4160
4159void CalendarView::deleteIncidence(Incidence *incidence) 4161void CalendarView::deleteIncidence(Incidence *incidence)
4160{ 4162{
4161 //qDebug(" CalendarView::deleteIncidence "); 4163 //qDebug(" CalendarView::deleteIncidence ");
4162 if ( incidence ) { 4164 if ( incidence ) {
4163 DeleteIncidenceVisitor v; 4165 DeleteIncidenceVisitor v;
4164 v.act( incidence, this ); 4166 v.act( incidence, this );
4165 } 4167 }
4166} 4168}
4167 4169
4168 4170
4169void CalendarView::lookForOutgoingMessages() 4171void CalendarView::lookForOutgoingMessages()
4170{ 4172{
4171 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4173 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4172 ogd->loadMessages(); 4174 ogd->loadMessages();
4173} 4175}
4174 4176
4175void CalendarView::lookForIncomingMessages() 4177void CalendarView::lookForIncomingMessages()
4176{ 4178{
4177 IncomingDialog *icd = mDialogManager->incomingDialog(); 4179 IncomingDialog *icd = mDialogManager->incomingDialog();
4178 icd->retrieve(); 4180 icd->retrieve();
4179} 4181}
4180 4182
4181bool CalendarView::removeCompletedSubTodos( Todo* t ) 4183bool CalendarView::removeCompletedSubTodos( Todo* t )
4182{ 4184{
4183 bool deleteTodo = true; 4185 bool deleteTodo = true;
4184 QPtrList<Incidence> subTodos; 4186 QPtrList<Incidence> subTodos;
4185 Incidence *aTodo; 4187 Incidence *aTodo;
4186 subTodos = t->relations(); 4188 subTodos = t->relations();
4187 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4189 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4188 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4190 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4189 deleteTodo = false; 4191 deleteTodo = false;
4190 } 4192 }
4191 if ( deleteTodo ) { 4193 if ( deleteTodo ) {
4192 if ( t->isCompleted() && !t->doesRecur()) { 4194 if ( t->isCompleted() && !t->doesRecur()) {
4193 checkExternalId( t ); 4195 checkExternalId( t );
4194 mCalendar->deleteTodo( t ); 4196 mCalendar->deleteTodo( t );
4195 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4197 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4196 } 4198 }
4197 else 4199 else
4198 deleteTodo = false; 4200 deleteTodo = false;
4199 } 4201 }
4200 return deleteTodo; 4202 return deleteTodo;
4201 4203
4202} 4204}
4203void CalendarView::purgeCompleted() 4205void CalendarView::purgeCompleted()
4204{ 4206{
4205 int result = KMessageBox::warningContinueCancel(this, 4207 int result = KMessageBox::warningContinueCancel(this,
4206 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 4208 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
4207 4209
4208 if (result == KMessageBox::Continue) { 4210 if (result == KMessageBox::Continue) {
4209 4211
4210 QPtrList<Todo> todoCal; 4212 QPtrList<Todo> todoCal;
4211 QPtrList<Todo> rootTodos; 4213 QPtrList<Todo> rootTodos;
4212 //QPtrList<Incidence> rel; 4214 //QPtrList<Incidence> rel;
4213 Todo *aTodo;//, *rTodo; 4215 Todo *aTodo;//, *rTodo;
4214 Incidence *rIncidence; 4216 Incidence *rIncidence;
4215 bool childDelete = false; 4217 bool childDelete = false;
4216 bool deletedOne = true; 4218 bool deletedOne = true;
4217 todoCal = calendar()->todos(); 4219 todoCal = calendar()->todos();
4218 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 4220 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
4219 if ( !aTodo->relatedTo() ) 4221 if ( !aTodo->relatedTo() )
4220 rootTodos.append( aTodo ); 4222 rootTodos.append( aTodo );
4221 } 4223 }
4222 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 4224 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
4223 removeCompletedSubTodos( aTodo ); 4225 removeCompletedSubTodos( aTodo );
4224 } 4226 }
4225 4227
4226 updateView(); 4228 updateView();
4227 } 4229 }
4228} 4230}
4229 4231
4230void CalendarView::slotCalendarChanged() 4232void CalendarView::slotCalendarChanged()
4231{ 4233{
4232 ; 4234 ;
4233} 4235}
4234 4236
4235void CalendarView::keyPressEvent ( QKeyEvent *e) 4237void CalendarView::keyPressEvent ( QKeyEvent *e)
4236{ 4238{
4237 //qDebug(" alendarView::keyPressEvent "); 4239 //qDebug(" alendarView::keyPressEvent ");
4238 e->ignore(); 4240 e->ignore();
4239} 4241}
4240 4242
4241 4243
4242bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4244bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
4243{ 4245{
4244 // mSyncManager = manager; 4246 // mSyncManager = manager;
4245 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4247 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
4246 qDebug("KO: SyncKDE request detected!"); 4248 qDebug("KO: SyncKDE request detected!");
4247 } 4249 }
4248 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4250 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4249 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4251 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4250 return syncCalendar( filename, mode ); 4252 return syncCalendar( filename, mode );
4251} 4253}
4252bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4254bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4253{ 4255{
4254 //mSyncManager = manager; 4256 //mSyncManager = manager;
4255 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4257 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4256 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4258 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4257 if ( resource == "sharp" ) 4259 if ( resource == "sharp" )
4258 syncExternal( 0 ); 4260 syncExternal( 0 );
4259 if ( resource == "phone" ) 4261 if ( resource == "phone" )
4260 syncExternal( 1 ); 4262 syncExternal( 1 );
4261 // pending setmodified 4263 // pending setmodified
4262 return true; 4264 return true;
4263} 4265}
4264void CalendarView::setSyncManager(KSyncManager* manager) 4266void CalendarView::setSyncManager(KSyncManager* manager)
4265{ 4267{
4266 mSyncManager = manager; 4268 mSyncManager = manager;
4267} 4269}
4268 4270
4269void CalendarView::removeSyncInfo( QString syncProfile) 4271void CalendarView::removeSyncInfo( QString syncProfile)
4270{ 4272{
4271 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4273 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4272 mCalendar->removeSyncInfo( syncProfile ); 4274 mCalendar->removeSyncInfo( syncProfile );
4273 4275
4274} 4276}
4275 4277
4276void CalendarView::undo_delete() 4278void CalendarView::undo_delete()
4277{ 4279{
4278 //qDebug("undo_delete() "); 4280 //qDebug("undo_delete() ");
4279 Incidence* undo = mCalendar->undoIncidence(); 4281 Incidence* undo = mCalendar->undoIncidence();
4280 if ( !undo ) { 4282 if ( !undo ) {
4281 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4283 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4282 i18n("KO/Pi")); 4284 i18n("KO/Pi"));
4283 return; 4285 return;
4284 } 4286 }
4285 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4287 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4286 i18n("\nAre you sure you want\nto restore this?"), 4288 i18n("\nAre you sure you want\nto restore this?"),
4287 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4289 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4288 mCalendar->undoDeleteIncidence(); 4290 mCalendar->undoDeleteIncidence();
4289 updateView(); 4291 updateView();
4290 } 4292 }
4291} 4293}
4292 4294
4293void CalendarView::slotViewerClosed() 4295void CalendarView::slotViewerClosed()
4294{ 4296{
4295 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4297 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4296} 4298}
4297 4299
4298void CalendarView::resetFocus() 4300void CalendarView::resetFocus()
4299{ 4301{
4300 if ( mViewerCallerIsSearchDialog ) { 4302 if ( mViewerCallerIsSearchDialog ) {
4301 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4303 if ( mDialogManager->getSearchDialog()->isVisible() ){
4302 mDialogManager->getSearchDialog()->raise(); 4304 mDialogManager->getSearchDialog()->raise();
4303 mDialogManager->getSearchDialog()->setActiveWindow(); 4305 mDialogManager->getSearchDialog()->setActiveWindow();
4304 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4306 mDialogManager->getSearchDialog()->listview()->resetFocus();
4305 } else 4307 } else
4306 mViewerCallerIsSearchDialog = false; 4308 mViewerCallerIsSearchDialog = false;
4307 } 4309 }
4308 if ( !mViewerCallerIsSearchDialog ) { 4310 if ( !mViewerCallerIsSearchDialog ) {
4309 //mViewManager->currentView()->setFocus(); 4311 //mViewManager->currentView()->setFocus();
4310 //qDebug("sssssssssssssssset focus "); 4312 //qDebug("sssssssssssssssset focus ");
4311 topLevelWidget()->raise(); 4313 topLevelWidget()->raise();
4312 setActiveWindow(); 4314 setActiveWindow();
4313 //setFocus(); 4315 //setFocus();
4314 } 4316 }
4315 mViewerCallerIsSearchDialog = false; 4317 mViewerCallerIsSearchDialog = false;
4316} 4318}
4317 4319
4318void CalendarView::showNextAlarms() 4320void CalendarView::showNextAlarms()
4319{ 4321{
4320 QString message; 4322 QString message;
4321 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 4323 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4322 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 4324 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4323 QString sum = mCalendar->nextSummary(); 4325 QString sum = mCalendar->nextSummary();
4324 QDateTime nextA = mNextAlarmDateTime; 4326 QDateTime nextA = mNextAlarmDateTime;
4325 QDateTime cur = QDateTime::currentDateTime(); 4327 QDateTime cur = QDateTime::currentDateTime();
4326 int secs = cur.secsTo( nextA ); 4328 int secs = cur.secsTo( nextA );
4327 int min = secs /60; 4329 int min = secs /60;
4328 int hours = min /60; 4330 int hours = min /60;
4329 min = min % 60; 4331 min = min % 60;
4330 int days = hours /24; 4332 int days = hours /24;
4331 hours = hours % 24; 4333 hours = hours % 24;
4332 4334
4333 //message = i18n("The next alarm is in:\n"); 4335 //message = i18n("The next alarm is in:\n");
4334 if ( days > 1 ) 4336 if ( days > 1 )
4335 message += i18n("%1 days\n").arg( days ); 4337 message += i18n("%1 days\n").arg( days );
4336 else if ( days == 1 ) 4338 else if ( days == 1 )
4337 message += i18n("1 day\n"); 4339 message += i18n("1 day\n");
4338 if ( hours > 1 ) 4340 if ( hours > 1 )
4339 message += i18n("%1 hours\n").arg( hours ); 4341 message += i18n("%1 hours\n").arg( hours );
4340 else if ( hours == 1 ) 4342 else if ( hours == 1 )
4341 message += i18n("1 hour\n"); 4343 message += i18n("1 hour\n");
4342 if ( min > 1 ) 4344 if ( min > 1 )
4343 message += i18n("%1 minutes\n").arg( min ); 4345 message += i18n("%1 minutes\n").arg( min );
4344 else if ( min == 1 ) 4346 else if ( min == 1 )
4345 message += i18n("1 minute\n"); 4347 message += i18n("1 minute\n");
4346 if ( message.isEmpty() ) 4348 if ( message.isEmpty() )
4347 message = i18n("The next alarm is in\nless than one minute!"); 4349 message = i18n("The next alarm is in\nless than one minute!");
4348 else 4350 else
4349 message = i18n("The next alarm is in:\n") + message; 4351 message = i18n("The next alarm is in:\n") + message;
4350 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 4352 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4351 } else { 4353 } else {
4352 message = i18n("There is no next alarm."); 4354 message = i18n("There is no next alarm.");
4353 4355
4354 } 4356 }
4355#ifdef DESKTOP_VERSION 4357#ifdef DESKTOP_VERSION
4356 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 4358 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
4357 message += i18n("\nThe internal alarm notification is disabled!\n"); 4359 message += i18n("\nThe internal alarm notification is disabled!\n");
4358 message += i18n("Enable it in the settings menu, TAB alarm."); 4360 message += i18n("Enable it in the settings menu, TAB alarm.");
4359 } 4361 }
4360 4362
4361#endif 4363#endif
4362 KMessageBox::information( this, message); 4364 KMessageBox::information( this, message);
4363} 4365}
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index 1bfe4dd..dc6237b 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -1,176 +1,176 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qlabel.h> 28#include <qlabel.h>
29 29
30 30
31#include <libkcal/calfilter.h> 31#include <libkcal/calfilter.h>
32 32
33#include "kofilterview.h" 33#include "kofilterview.h"
34#include <kiconloader.h> 34#include <kiconloader.h>
35#include <kglobal.h> 35#include <kglobal.h>
36 36
37KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent, 37KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
38 const char* name,WFlags fl ) 38 const char* name,WFlags fl )
39 : KOFilterView_base(parent,name,fl) 39 : KOFilterView_base(parent,name,fl)
40{ 40{
41 mFilters = filterList; 41 mFilters = filterList;
42 42
43 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 43 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
44 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 44 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
45 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters())); 45 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
46} 46}
47 47
48KOFilterView::~KOFilterView() 48KOFilterView::~KOFilterView()
49{ 49{
50 // no need to delete child widgets, Qt does it all for us 50 // no need to delete child widgets, Qt does it all for us
51} 51}
52 52
53bool KOFilterView::filtersEnabled() 53bool KOFilterView::filtersEnabled()
54{ 54{
55 return mEnabledCheck->isChecked(); 55 return mEnabledCheck->isChecked();
56} 56}
57 57
58void KOFilterView::setFiltersEnabled(bool set) 58void KOFilterView::setFiltersEnabled(bool set)
59{ 59{
60 mEnabledCheck->setChecked(set); 60 mEnabledCheck->setChecked(set);
61 emit filterChanged(); 61 emit filterChanged();
62} 62}
63 63
64 64
65void KOFilterView::updateFilters() 65void KOFilterView::updateFilters()
66{ 66{
67 mSelectionCombo->clear(); 67 mSelectionCombo->clear();
68 68
69 CalFilter *filter = mFilters->first(); 69 CalFilter *filter = mFilters->first();
70 while(filter) { 70 while(filter) {
71 mSelectionCombo->insertItem(filter->name()); 71 mSelectionCombo->insertItem(filter->name());
72 filter = mFilters->next(); 72 filter = mFilters->next();
73 } 73 }
74} 74}
75 75
76CalFilter *KOFilterView::selectedFilter() 76CalFilter *KOFilterView::selectedFilter()
77{ 77{
78 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 78 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
79 return f; 79 return f;
80} 80}
81 81
82void KOFilterView::setSelectedFilter(QString filterName) 82void KOFilterView::setSelectedFilter(QString filterName)
83{ 83{
84 int filter_num = mSelectionCombo->count(); 84 int filter_num = mSelectionCombo->count();
85 int i; 85 int i;
86 for (i=0;i<filter_num;i++) { 86 for (i=0;i<filter_num;i++) {
87 if (mSelectionCombo->text(i)==filterName) 87 if (mSelectionCombo->text(i)==filterName)
88 mSelectionCombo->setCurrentItem(i); 88 mSelectionCombo->setCurrentItem(i);
89 } 89 }
90 emit filterChanged(); 90 emit filterChanged();
91} 91}
92void KOFilterView::setSelectedFilter( int fil ) 92void KOFilterView::setSelectedFilter( int fil )
93{ 93{
94 if ( fil >= mSelectionCombo->count() ) 94 if ( fil >= mSelectionCombo->count() )
95 return; 95 return;
96 mSelectionCombo->setCurrentItem( fil ); 96 mSelectionCombo->setCurrentItem( fil );
97 emit filterChanged(); 97 emit filterChanged();
98} 98}
99 99
100 100
101 101
102KOCalEditView::KOCalEditView(QWidget* parent, 102KOCalEditView::KOCalEditView(QWidget* parent,
103 const char* name ) 103 const char* name )
104 : QWidget(parent,name) 104 : QWidget(parent,name)
105{ 105{
106 /* 106 /*
107 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 107 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
108 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 108 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
109 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editCalEdits())); 109 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editCalEdits()));
110 */ 110 */
111 QGridLayout* mainLayout = new QGridLayout ( this , 2, 6 ); 111 QGridLayout* mainLayout = new QGridLayout ( this , 2, 6 );
112 QPushButton * addBut = new QPushButton ( this ); 112 QPushButton * addBut = new QPushButton ( this );
113 mainLayout->addWidget( addBut,0,0 ); 113 mainLayout->addWidget( addBut,0,0 );
114 addBut->setPixmap ( SmallIcon("plus")); 114 addBut->setPixmap ( SmallIcon("plus"));
115 connect(addBut,SIGNAL(clicked()),SLOT(addCal())); 115 connect(addBut,SIGNAL(clicked()),SLOT(addCal()));
116 addBut->setMaximumWidth( addBut->sizeHint().height() ); 116 addBut->setMaximumWidth( addBut->sizeHint().height() );
117 117
118 addBut = new QPushButton ( this ); 118 addBut = new QPushButton ( this );
119 mainLayout->addWidget( addBut,0,1 ); 119 mainLayout->addWidget( addBut,0,1 );
120 addBut->setPixmap ( SmallIcon("eye")); 120 addBut->setPixmap ( SmallIcon("eye"));
121 connect(addBut,SIGNAL(clicked()),SLOT(enableAll())); 121 connect(addBut,SIGNAL(clicked()),SLOT(enableAll()));
122 addBut->setMaximumWidth( addBut->sizeHint().height() ); 122 addBut->setMaximumWidth( addBut->sizeHint().height() );
123 123
124 QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", this ); 124 QLabel* lab = new QLabel ( " "+i18n("Calendar")+" ", this );
125 mainLayout->addWidget( lab,0,2 ); 125 mainLayout->addWidget( lab,0,2 );
126 126
127 addBut = new QPushButton ( this ); 127 addBut = new QPushButton ( this );
128 mainLayout->addWidget( addBut,0,3 ); 128 mainLayout->addWidget( addBut,0,3 );
129 addBut->setPixmap ( SmallIcon("bell")); 129 addBut->setPixmap ( SmallIcon("bell"));
130 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm())); 130 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm()));
131 addBut->setMaximumWidth( addBut->sizeHint().height() ); 131 addBut->setMaximumWidth( addBut->sizeHint().height() );
132 132
133 addBut = new QPushButton ( this ); 133 addBut = new QPushButton ( this );
134 mainLayout->addWidget( addBut,0,4 ); 134 mainLayout->addWidget( addBut,0,4 );
135 addBut->setPixmap ( SmallIcon("pencil")); 135 addBut->setPixmap ( SmallIcon("pencil"));
136 connect(addBut,SIGNAL(clicked()),SLOT(disableRO())); 136 connect(addBut,SIGNAL(clicked()),SLOT(disableRO()));
137 addBut->setMaximumWidth( addBut->sizeHint().height() ); 137 addBut->setMaximumWidth( addBut->sizeHint().height() );
138 138
139 addBut = new QPushButton ( this ); 139 addBut = new QPushButton ( this );
140 mainLayout->addWidget( addBut,0,5 ); 140 mainLayout->addWidget( addBut,0,5 );
141 addBut->setPixmap ( SmallIcon("trash")); 141 addBut->setPixmap ( SmallIcon("minus"));
142 connect(addBut,SIGNAL(clicked()),SLOT(deleteAll())); 142 connect(addBut,SIGNAL(clicked()),SLOT(deleteAll()));
143 addBut->setMaximumWidth( addBut->sizeHint().height() ); 143 addBut->setMaximumWidth( addBut->sizeHint().height() );
144 144
145 145
146 146
147} 147}
148 148
149KOCalEditView::~KOCalEditView() 149KOCalEditView::~KOCalEditView()
150{ 150{
151 // no need to delete child widgets, Qt does it all for us 151 // no need to delete child widgets, Qt does it all for us
152} 152}
153void KOCalEditView::readConfig( KConfig *) 153void KOCalEditView::readConfig( KConfig *)
154{ 154{
155 155
156} 156}
157void KOCalEditView::addCal() 157void KOCalEditView::addCal()
158{ 158{
159 qDebug("addcal "); 159 qDebug("addcal ");
160} 160}
161void KOCalEditView::enableAll() 161void KOCalEditView::enableAll()
162{ 162{
163 qDebug("enableAll"); 163 qDebug("enableAll");
164} 164}
165void KOCalEditView::enableAlarm() 165void KOCalEditView::enableAlarm()
166{ 166{
167 qDebug("enableAlarm"); 167 qDebug("enableAlarm");
168} 168}
169void KOCalEditView::disableRO() 169void KOCalEditView::disableRO()
170{ 170{
171 qDebug("OCalEditView::disableRO() "); 171 qDebug("OCalEditView::disableRO() ");
172} 172}
173void KOCalEditView::deleteAll() 173void KOCalEditView::deleteAll()
174{ 174{
175 qDebug("delteAll"); 175 qDebug("delteAll");
176} 176}
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index d434c52..060108f 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -1,83 +1,133 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23#ifndef KOFILTERVIEW_H 23#ifndef KOFILTERVIEW_H
24#define KOFILTERVIEW_H 24#define KOFILTERVIEW_H
25 25
26#include <qstring.h> 26#include <qstring.h>
27#include <qcheckbox.h>
28#include <qpushbutton.h>
27#include <kconfig.h> 29#include <kconfig.h>
28#include "kofilterview_base.h" 30#include "kofilterview_base.h"
29 31
30#include <libkcal/calfilter.h> 32#include <libkcal/calfilter.h>
31 33
32using namespace KCal; 34using namespace KCal;
33 35
34class KOFilterView : public KOFilterView_base 36class KOFilterView : public KOFilterView_base
35{ 37{
36 Q_OBJECT 38 Q_OBJECT
37 public: 39 public:
38 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); 40 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0);
39 ~KOFilterView(); 41 ~KOFilterView();
40 42
41 void updateFilters(); 43 void updateFilters();
42 44
43 bool filtersEnabled(); 45 bool filtersEnabled();
44 void setFiltersEnabled(bool); 46 void setFiltersEnabled(bool);
45 CalFilter *selectedFilter(); 47 CalFilter *selectedFilter();
46 void setSelectedFilter(QString); 48 void setSelectedFilter(QString);
47 void setSelectedFilter( int ); 49 void setSelectedFilter( int );
48 50
49 signals: 51 signals:
50 void filterChanged(); 52 void filterChanged();
51 void editFilters(); 53 void editFilters();
52 54
53 private: 55 private:
54 QPtrList<CalFilter> *mFilters; 56 QPtrList<CalFilter> *mFilters;
55}; 57};
56 58
57class KOCalEditView : public QWidget 59class KOCalEditView : public QWidget
58{ 60{
59 Q_OBJECT 61 Q_OBJECT
60 public: 62 public:
61 KOCalEditView( QWidget* parent=0,const char* name=0); 63 KOCalEditView( QWidget* parent=0,const char* name=0);
62 ~KOCalEditView(); 64 ~KOCalEditView();
63 65
64 void readConfig( KConfig *); 66 void readConfig( KConfig *);
65 public slots: 67 public slots:
66 void addCal(); 68 void addCal();
67 void enableAll(); 69 void enableAll();
68 void enableAlarm(); 70 void enableAlarm();
69 void disableRO(); 71 void disableRO();
70 void deleteAll(); 72 void deleteAll();
71 signals: 73 signals:
72 void alarmEnabled ( int cal, bool enable ); 74 void alarmEnabled ( int cal, bool enable );
73 void calendarEnabled ( int cal, bool enable ); 75 void calendarEnabled ( int cal, bool enable );
74 void calendarReadonly ( int cal, bool readonly ); 76 void calendarReadonly ( int cal, bool readonly );
75 void setCalendarDefault ( int cal ); 77 void setCalendarDefault ( int cal );
76 void removeCalendar ( int cal ); 78 void removeCalendar ( int cal );
77 79
78 private: 80 private:
79}; 81};
80 82
83class KOCalButton : public QPushButton
84{
85 Q_OBJECT
86 public:
87 KOCalButton( QWidget *parent=0, const char *name=0 ) :
88 QPushButton( parent, name)
89 {
90 connect( this, SIGNAL( clicked() ),
91 SLOT( bottonClicked() ));
92 mNumber = -1;
93 }
94 void setNum ( int num ) {mNumber = num; }
95 signals:
96 void selectNum ( int );
97private:
98 int mNumber;
99 void keyPressEvent ( QKeyEvent * e )
100 {
101 e->ignore();
102 }
103
104private slots :
105 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }
106};
107class KOCalCheckButton : public QCheckBox
108{
109 Q_OBJECT
110 public:
111 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) :
112 QCheckBox( parent, name)
113 {
114 connect( this, SIGNAL( toggled ( bool ) ),
115 SLOT( bottonClicked( bool ) ));
116 mNumber = -1;
117 }
118 void setNum ( int num ) {mNumber = num; }
119 signals:
120 void selectNum ( int, bool );
121private:
122 int mNumber;
123 void keyPressEvent ( QKeyEvent * e )
124 {
125 e->ignore();
126 }
127
128private slots :
129 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
130};
81 131
82 132
83#endif // KOFILTERVIEW_H 133#endif // KOFILTERVIEW_H