summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp1
-rw-r--r--korganizer/kodialogmanager.cpp23
-rw-r--r--korganizer/koprefsdialog.cpp286
-rw-r--r--korganizer/koprefsdialog.h12
4 files changed, 20 insertions, 302 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 4794414..2a55127 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,4357 +1,4358 @@
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 mTodoList->setNavigator( mNavigator ); 461 mTodoList->setNavigator( mNavigator );
462#if 0 462#if 0
463 if ( QApplication::desktop()->width() < 480 ) { 463 if ( QApplication::desktop()->width() < 480 ) {
464 leftFrameLayout->addWidget(mFilterView); 464 leftFrameLayout->addWidget(mFilterView);
465 leftFrameLayout->addWidget(mTodoList, 2 ); 465 leftFrameLayout->addWidget(mTodoList, 2 );
466 466
467 } else { 467 } else {
468 leftFrameLayout->addWidget(mTodoList,2 ); 468 leftFrameLayout->addWidget(mTodoList,2 );
469 leftFrameLayout->addWidget(mFilterView ); 469 leftFrameLayout->addWidget(mFilterView );
470 } 470 }
471#endif 471#endif
472 mFilterView->hide(); 472 mFilterView->hide();
473 QWidget *rightBox = new QWidget( mMainFrame ); 473 QWidget *rightBox = new QWidget( mMainFrame );
474 //mainBoxLayout->addWidget ( rightBox, 10 ); 474 //mainBoxLayout->addWidget ( rightBox, 10 );
475 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 475 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
476 mRightFrame = new QWidgetStack( rightBox ); 476 mRightFrame = new QWidgetStack( rightBox );
477 rightLayout->addWidget( mRightFrame, 10 ); 477 rightLayout->addWidget( mRightFrame, 10 );
478 478
479 //mLeftFrame = (QWidget *)leftFrame; 479 //mLeftFrame = (QWidget *)leftFrame;
480 if ( KOPrefs::instance()->mVerticalScreen ) { 480 if ( KOPrefs::instance()->mVerticalScreen ) {
481 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 481 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
482 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 482 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
483 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 483 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
484 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 484 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
485 } else { 485 } else {
486 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 486 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
487 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 487 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
488 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 488 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
489 } 489 }
490 if ( !KOPrefs::instance()->mShowDateNavigator) 490 if ( !KOPrefs::instance()->mShowDateNavigator)
491 mDateNavigator->hide(); 491 mDateNavigator->hide();
492 //qDebug("Calendarview Size %d %d ", width(), height()); 492 //qDebug("Calendarview Size %d %d ", width(), height());
493#endif 493#endif
494 494
495 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 495 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
496 SLOT( showDates( const KCal::DateList & ) ) ); 496 SLOT( showDates( const KCal::DateList & ) ) );
497 497
498 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 498 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
499 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 499 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
500 500
501 501
502 502
503 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 503 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
504 mViewManager, SLOT( showMonth( const QDate & ) ) ); 504 mViewManager, SLOT( showMonth( const QDate & ) ) );
505 505
506 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 506 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
507 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 507 mNavigator, SLOT( selectWeek( const QDate & ) ) );
508 508
509 connect( mDateNavigator, SIGNAL( goPrevYear() ), 509 connect( mDateNavigator, SIGNAL( goPrevYear() ),
510 mNavigator, SLOT( selectPreviousYear() ) ); 510 mNavigator, SLOT( selectPreviousYear() ) );
511 connect( mDateNavigator, SIGNAL( goNextYear() ), 511 connect( mDateNavigator, SIGNAL( goNextYear() ),
512 mNavigator, SLOT( selectNextYear() ) ); 512 mNavigator, SLOT( selectNextYear() ) );
513 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 513 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
514 mNavigator, SLOT( selectPreviousMonth() ) ); 514 mNavigator, SLOT( selectPreviousMonth() ) );
515 connect( mDateNavigator, SIGNAL( goNextMonth() ), 515 connect( mDateNavigator, SIGNAL( goNextMonth() ),
516 mNavigator, SLOT( selectNextMonth() ) ); 516 mNavigator, SLOT( selectNextMonth() ) );
517 517
518 connect( mDateNavigator, SIGNAL( goPrevious() ), 518 connect( mDateNavigator, SIGNAL( goPrevious() ),
519 mNavigator, SLOT( selectPrevious() ) ); 519 mNavigator, SLOT( selectPrevious() ) );
520 connect( mDateNavigator, SIGNAL( goNext() ), 520 connect( mDateNavigator, SIGNAL( goNext() ),
521 mNavigator, SLOT( selectNext() ) ); 521 mNavigator, SLOT( selectNext() ) );
522 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 522 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
523 mNavigator, SLOT( slotMonthSelect( int ) ) ); 523 mNavigator, SLOT( slotMonthSelect( int ) ) );
524 524
525 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 525 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
526 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 526 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
527#if 0 527#if 0
528 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 528 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
529 SLOT( incidenceAdded( Incidence *) ) ); 529 SLOT( incidenceAdded( Incidence *) ) );
530#endif 530#endif
531 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 531 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
532 532
533 connect( this, SIGNAL( configChanged() ), 533 connect( this, SIGNAL( configChanged() ),
534 mDateNavigator, SLOT( updateConfig() ) ); 534 mDateNavigator, SLOT( updateConfig() ) );
535 535
536 connect( mTodoList, SIGNAL( newTodoSignal() ), 536 connect( mTodoList, SIGNAL( newTodoSignal() ),
537 SLOT( newTodo() ) ); 537 SLOT( newTodo() ) );
538 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 538 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
539 SLOT( newSubTodo( Todo * ) ) ); 539 SLOT( newSubTodo( Todo * ) ) );
540 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 540 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
541 SLOT( editTodo( Todo * ) ) ); 541 SLOT( editTodo( Todo * ) ) );
542 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 542 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
543 SLOT( showTodo( Todo *) ) ); 543 SLOT( showTodo( Todo *) ) );
544 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 544 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
545 SLOT( deleteTodo( Todo *) ) ); 545 SLOT( deleteTodo( Todo *) ) );
546 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 546 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
547 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 547 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
548 SLOT( purgeCompleted() ) ); 548 SLOT( purgeCompleted() ) );
549 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 549 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
550 SIGNAL( todoModified( Todo *, int ) ) ); 550 SIGNAL( todoModified( Todo *, int ) ) );
551 551
552 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 552 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
553 this, SLOT ( cloneIncidence( Incidence * ) ) ); 553 this, SLOT ( cloneIncidence( Incidence * ) ) );
554 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 554 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
555 this, SLOT (cancelIncidence( Incidence * ) ) ); 555 this, SLOT (cancelIncidence( Incidence * ) ) );
556 556
557 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 557 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
558 this, SLOT ( moveIncidence( Incidence * ) ) ); 558 this, SLOT ( moveIncidence( Incidence * ) ) );
559 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 559 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
560 this, SLOT ( beamIncidence( Incidence * ) ) ); 560 this, SLOT ( beamIncidence( Incidence * ) ) );
561 561
562 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 562 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
563 this, SLOT ( todo_unsub( Todo * ) ) ); 563 this, SLOT ( todo_unsub( Todo * ) ) );
564 564
565 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 565 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
566 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 566 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
567 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 567 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
568 SLOT( updateTodo( Todo *, int ) ) ); 568 SLOT( updateTodo( Todo *, int ) ) );
569 connect( this, SIGNAL( todoModified( Todo *, int )), this, 569 connect( this, SIGNAL( todoModified( Todo *, int )), this,
570 SLOT( changeTodoDisplay( Todo *, int ) ) ); 570 SLOT( changeTodoDisplay( Todo *, int ) ) );
571 571
572 572
573 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 573 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
574 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 574 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
575 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 575 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
576 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 576 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
577 577
578 578
579 579
580 580
581 581
582 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 582 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
583 SLOT(checkClipboard())); 583 SLOT(checkClipboard()));
584 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 584 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
585 SLOT( processTodoListSelection( Incidence * ) ) ); 585 SLOT( processTodoListSelection( Incidence * ) ) );
586 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 586 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
587 587
588 // kdDebug() << "CalendarView::CalendarView() done" << endl; 588 // kdDebug() << "CalendarView::CalendarView() done" << endl;
589 589
590 mDateFrame = new QVBox(0,0,WType_Popup); 590 mDateFrame = new QVBox(0,0,WType_Popup);
591 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 591 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
592 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 592 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
593 mDateFrame->setLineWidth(3); 593 mDateFrame->setLineWidth(3);
594 mDateFrame->hide(); 594 mDateFrame->hide();
595 mDateFrame->setCaption( i18n( "Pick a date to display")); 595 mDateFrame->setCaption( i18n( "Pick a date to display"));
596 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 596 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
597 597
598 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 598 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
599 599
600 mEventEditor = mDialogManager->getEventEditor(); 600 mEventEditor = mDialogManager->getEventEditor();
601 mTodoEditor = mDialogManager->getTodoEditor(); 601 mTodoEditor = mDialogManager->getTodoEditor();
602 602
603 mFlagEditDescription = false; 603 mFlagEditDescription = false;
604 604
605 mSuspendTimer = new QTimer( this ); 605 mSuspendTimer = new QTimer( this );
606 mAlarmTimer = new QTimer( this ); 606 mAlarmTimer = new QTimer( this );
607 mRecheckAlarmTimer = new QTimer( this ); 607 mRecheckAlarmTimer = new QTimer( this );
608 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 608 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
609 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 609 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
610 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 610 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
611 mAlarmDialog = new AlarmDialog( this ); 611 mAlarmDialog = new AlarmDialog( this );
612 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 612 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
613 mAlarmDialog->setServerNotification( false ); 613 mAlarmDialog->setServerNotification( false );
614 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 614 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
615 615
616 616
617#ifndef DESKTOP_VERSION 617#ifndef DESKTOP_VERSION
618//US listen for arriving address resultsets 618//US listen for arriving address resultsets
619 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 619 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
620 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 620 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
621#endif 621#endif
622 mDateNavigator->setCalendar( mCalendar ); 622 mDateNavigator->setCalendar( mCalendar );
623} 623}
624 624
625 625
626CalendarView::~CalendarView() 626CalendarView::~CalendarView()
627{ 627{
628 // kdDebug() << "~CalendarView()" << endl; 628 // kdDebug() << "~CalendarView()" << endl;
629 //qDebug("CalendarView::~CalendarView() "); 629 //qDebug("CalendarView::~CalendarView() ");
630 delete mDialogManager; 630 delete mDialogManager;
631 delete mViewManager; 631 delete mViewManager;
632 delete mStorage; 632 delete mStorage;
633 delete mDateFrame ; 633 delete mDateFrame ;
634 delete beamDialog; 634 delete beamDialog;
635 delete mEventViewerDialog; 635 delete mEventViewerDialog;
636 //kdDebug() << "~CalendarView() done" << endl; 636 //kdDebug() << "~CalendarView() done" << endl;
637} 637}
638void CalendarView::checkAlarms() 638void CalendarView::checkAlarms()
639{ 639{
640 KConfig *config = KOGlobals::config(); 640 KConfig *config = KOGlobals::config();
641 config->setGroup( "AppRun" ); 641 config->setGroup( "AppRun" );
642 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 642 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
643 int secto = dt.secsTo( QDateTime::currentDateTime() ); 643 int secto = dt.secsTo( QDateTime::currentDateTime() );
644 int secs = config->readNumEntry( "LatestProgramStop" , secto) - 30; 644 int secs = config->readNumEntry( "LatestProgramStop" , secto) - 30;
645 //secs -= ( 3600 * 24*3 ); // debug only 645 //secs -= ( 3600 * 24*3 ); // debug only
646 QDateTime latest = dt.addSecs ( secs ); 646 QDateTime latest = dt.addSecs ( secs );
647 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 647 qDebug("KO: Last termination on %s ", latest.toString().latin1());
648 QPtrList<Incidence> el = mCalendar->rawIncidences(); 648 QPtrList<Incidence> el = mCalendar->rawIncidences();
649 QPtrList<Incidence> al; 649 QPtrList<Incidence> al;
650 Incidence* inL = el.first(); 650 Incidence* inL = el.first();
651 while ( inL ) { 651 while ( inL ) {
652 bool ok = false; 652 bool ok = false;
653 int offset = 0; 653 int offset = 0;
654 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 654 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
655 if ( ok ) { 655 if ( ok ) {
656 //qDebug("OK %s",next.toString().latin1()); 656 //qDebug("OK %s",next.toString().latin1());
657 if ( next < QDateTime::currentDateTime() ) { 657 if ( next < QDateTime::currentDateTime() ) {
658 al.append( inL ); 658 al.append( inL );
659 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 659 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
660 } 660 }
661 } 661 }
662 inL = el.next(); 662 inL = el.next();
663 } 663 }
664 if ( al.count() ) { 664 if ( al.count() ) {
665 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 665 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
666 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 666 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
667 QVBoxLayout* lay = new QVBoxLayout( dia ); 667 QVBoxLayout* lay = new QVBoxLayout( dia );
668 lay->setSpacing( 0 ); 668 lay->setSpacing( 0 );
669 lay->setMargin( 0 ); 669 lay->setMargin( 0 );
670 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 670 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
671 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 671 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
672 lay->addWidget( matb ); 672 lay->addWidget( matb );
673 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 673 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
674 int wid = 210; 674 int wid = 210;
675 int x = QApplication::desktop()->width() - wid - 7; 675 int x = QApplication::desktop()->width() - wid - 7;
676 int y = QApplication::desktop()->height() - wid - 70; 676 int y = QApplication::desktop()->height() - wid - 70;
677 dia->setGeometry ( x,y,wid,wid); 677 dia->setGeometry ( x,y,wid,wid);
678 } else { 678 } else {
679 int si = 220; 679 int si = 220;
680 if ( QApplication::desktop()->width() > 470 ) 680 if ( QApplication::desktop()->width() > 470 )
681 si = 400; 681 si = 400;
682 dia->resize(si,si/2); 682 dia->resize(si,si/2);
683 } 683 }
684 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 684 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
685 dia->show(); 685 dia->show();
686 686
687 } 687 }
688} 688}
689void CalendarView::showDay( QDate d ) 689void CalendarView::showDay( QDate d )
690{ 690{
691 dateNavigator()->blockSignals( true ); 691 dateNavigator()->blockSignals( true );
692 dateNavigator()->selectDate( d ); 692 dateNavigator()->selectDate( d );
693 dateNavigator()->blockSignals( false ); 693 dateNavigator()->blockSignals( false );
694 mViewManager->showDayView(); 694 mViewManager->showDayView();
695 //dateNavigator()->selectDate( d ); 695 //dateNavigator()->selectDate( d );
696} 696}
697void CalendarView::timerAlarm() 697void CalendarView::timerAlarm()
698{ 698{
699 //qDebug("CalendarView::timerAlarm() "); 699 //qDebug("CalendarView::timerAlarm() ");
700 computeAlarm(mAlarmNotification ); 700 computeAlarm(mAlarmNotification );
701} 701}
702 702
703void CalendarView::suspendAlarm() 703void CalendarView::suspendAlarm()
704{ 704{
705 //qDebug(" CalendarView::suspendAlarm() "); 705 //qDebug(" CalendarView::suspendAlarm() ");
706 computeAlarm(mSuspendAlarmNotification ); 706 computeAlarm(mSuspendAlarmNotification );
707 707
708} 708}
709 709
710void CalendarView::startAlarm( QString mess , QString filename) 710void CalendarView::startAlarm( QString mess , QString filename)
711{ 711{
712 712
713 topLevelWidget()->showNormal(); 713 topLevelWidget()->showNormal();
714 topLevelWidget()->setActiveWindow(); 714 topLevelWidget()->setActiveWindow();
715 topLevelWidget()->raise(); 715 topLevelWidget()->raise();
716 716
717 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 717 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
718 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 718 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
719 719
720} 720}
721 721
722void CalendarView::checkNextTimerAlarm() 722void CalendarView::checkNextTimerAlarm()
723{ 723{
724 mCalendar->checkAlarmForIncidence( 0, true ); 724 mCalendar->checkAlarmForIncidence( 0, true );
725} 725}
726 726
727void CalendarView::computeAlarm( QString msg ) 727void CalendarView::computeAlarm( QString msg )
728{ 728{
729 729
730 QString mess = msg; 730 QString mess = msg;
731 QString mAlarmMessage = mess.mid( 9 ); 731 QString mAlarmMessage = mess.mid( 9 );
732 QString filename = MainWindow::resourcePath(); 732 QString filename = MainWindow::resourcePath();
733 filename += "koalarm.wav"; 733 filename += "koalarm.wav";
734 QString tempfilename; 734 QString tempfilename;
735 if ( mess.left( 13 ) == "suspend_alarm") { 735 if ( mess.left( 13 ) == "suspend_alarm") {
736 bool error = false; 736 bool error = false;
737 int len = mess.mid( 13 ).find("+++"); 737 int len = mess.mid( 13 ).find("+++");
738 if ( len < 2 ) 738 if ( len < 2 )
739 error = true; 739 error = true;
740 else { 740 else {
741 tempfilename = mess.mid( 13, len ); 741 tempfilename = mess.mid( 13, len );
742 if ( !QFile::exists( tempfilename ) ) 742 if ( !QFile::exists( tempfilename ) )
743 error = true; 743 error = true;
744 } 744 }
745 if ( ! error ) { 745 if ( ! error ) {
746 filename = tempfilename; 746 filename = tempfilename;
747 } 747 }
748 mAlarmMessage = mess.mid( 13+len+3 ); 748 mAlarmMessage = mess.mid( 13+len+3 );
749 //qDebug("suspend file %s ",tempfilename.latin1() ); 749 //qDebug("suspend file %s ",tempfilename.latin1() );
750 startAlarm( mAlarmMessage, filename); 750 startAlarm( mAlarmMessage, filename);
751 return; 751 return;
752 } 752 }
753 if ( mess.left( 11 ) == "timer_alarm") { 753 if ( mess.left( 11 ) == "timer_alarm") {
754 //mTimerTime = 0; 754 //mTimerTime = 0;
755 startAlarm( mess.mid( 11 ), filename ); 755 startAlarm( mess.mid( 11 ), filename );
756 return; 756 return;
757 } 757 }
758 if ( mess.left( 10 ) == "proc_alarm") { 758 if ( mess.left( 10 ) == "proc_alarm") {
759 bool error = false; 759 bool error = false;
760 int len = mess.mid( 10 ).find("+++"); 760 int len = mess.mid( 10 ).find("+++");
761 if ( len < 2 ) 761 if ( len < 2 )
762 error = true; 762 error = true;
763 else { 763 else {
764 tempfilename = mess.mid( 10, len ); 764 tempfilename = mess.mid( 10, len );
765 if ( !QFile::exists( tempfilename ) ) 765 if ( !QFile::exists( tempfilename ) )
766 error = true; 766 error = true;
767 } 767 }
768 if ( error ) { 768 if ( error ) {
769 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 769 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
770 mAlarmMessage += mess.mid( 10+len+3+9 ); 770 mAlarmMessage += mess.mid( 10+len+3+9 );
771 } else { 771 } else {
772 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 772 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
773 //qDebug("-----system command %s ",tempfilename.latin1() ); 773 //qDebug("-----system command %s ",tempfilename.latin1() );
774#ifndef _WIN32_ 774#ifndef _WIN32_
775 if ( vfork () == 0 ) { 775 if ( vfork () == 0 ) {
776 execl ( tempfilename.latin1(), 0 ); 776 execl ( tempfilename.latin1(), 0 );
777 return; 777 return;
778 } 778 }
779#else 779#else
780 QProcess* p = new QProcess(); 780 QProcess* p = new QProcess();
781 p->addArgument( tempfilename.latin1() ); 781 p->addArgument( tempfilename.latin1() );
782 p->start(); 782 p->start();
783 return; 783 return;
784#endif 784#endif
785 785
786 return; 786 return;
787 } 787 }
788 788
789 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 789 //qDebug("+++++++system command %s ",tempfilename.latin1() );
790 } 790 }
791 if ( mess.left( 11 ) == "audio_alarm") { 791 if ( mess.left( 11 ) == "audio_alarm") {
792 bool error = false; 792 bool error = false;
793 int len = mess.mid( 11 ).find("+++"); 793 int len = mess.mid( 11 ).find("+++");
794 if ( len < 2 ) 794 if ( len < 2 )
795 error = true; 795 error = true;
796 else { 796 else {
797 tempfilename = mess.mid( 11, len ); 797 tempfilename = mess.mid( 11, len );
798 if ( !QFile::exists( tempfilename ) ) 798 if ( !QFile::exists( tempfilename ) )
799 error = true; 799 error = true;
800 } 800 }
801 if ( ! error ) { 801 if ( ! error ) {
802 filename = tempfilename; 802 filename = tempfilename;
803 } 803 }
804 mAlarmMessage = mess.mid( 11+len+3+9 ); 804 mAlarmMessage = mess.mid( 11+len+3+9 );
805 //qDebug("audio file command %s ",tempfilename.latin1() ); 805 //qDebug("audio file command %s ",tempfilename.latin1() );
806 } 806 }
807 if ( mess.left( 9 ) == "cal_alarm") { 807 if ( mess.left( 9 ) == "cal_alarm") {
808 mAlarmMessage = mess.mid( 9 ) ; 808 mAlarmMessage = mess.mid( 9 ) ;
809 } 809 }
810 810
811 startAlarm( mAlarmMessage, filename ); 811 startAlarm( mAlarmMessage, filename );
812 812
813 813
814} 814}
815 815
816void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 816void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
817{ 817{
818 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 818 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
819 819
820 mSuspendAlarmNotification = noti; 820 mSuspendAlarmNotification = noti;
821 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 821 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
822 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 822 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
823 mSuspendTimer->start( ms , true ); 823 mSuspendTimer->start( ms , true );
824 824
825} 825}
826 826
827void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 827void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
828{ 828{
829 mNextAlarmDateTime = qdt; 829 mNextAlarmDateTime = qdt;
830 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 830 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
831 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 831 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
832#ifndef DESKTOP_VERSION 832#ifndef DESKTOP_VERSION
833 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 833 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
834#endif 834#endif
835 return; 835 return;
836 } 836 }
837 int maxSec; 837 int maxSec;
838 //maxSec = 5; //testing only 838 //maxSec = 5; //testing only
839 maxSec = 86400+3600; // one day+1hour 839 maxSec = 86400+3600; // one day+1hour
840 mAlarmNotification = noti; 840 mAlarmNotification = noti;
841 int sec = QDateTime::currentDateTime().secsTo( qdt ); 841 int sec = QDateTime::currentDateTime().secsTo( qdt );
842 if ( sec > maxSec ) { 842 if ( sec > maxSec ) {
843 mRecheckAlarmTimer->start( maxSec * 1000 ); 843 mRecheckAlarmTimer->start( maxSec * 1000 );
844 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 844 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
845 return; 845 return;
846 } else { 846 } else {
847 mRecheckAlarmTimer->stop(); 847 mRecheckAlarmTimer->stop();
848 } 848 }
849 //qDebug("Alarm timer started with secs: %d ", sec); 849 //qDebug("Alarm timer started with secs: %d ", sec);
850 mAlarmTimer->start( sec *1000 , true ); 850 mAlarmTimer->start( sec *1000 , true );
851 851
852} 852}
853// called by mRecheckAlarmTimer to get next alarm 853// called by mRecheckAlarmTimer to get next alarm
854// we need this, because a QTimer has only a max range of 25 days 854// we need this, because a QTimer has only a max range of 25 days
855void CalendarView::recheckTimerAlarm() 855void CalendarView::recheckTimerAlarm()
856{ 856{
857 mAlarmTimer->stop(); 857 mAlarmTimer->stop();
858 mRecheckAlarmTimer->stop(); 858 mRecheckAlarmTimer->stop();
859 mCalendar->checkAlarmForIncidence( 0, true ); 859 mCalendar->checkAlarmForIncidence( 0, true );
860} 860}
861void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 861void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
862{ 862{
863 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 863 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
864 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 864 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
865#ifndef DESKTOP_VERSION 865#ifndef DESKTOP_VERSION
866 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 866 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
867#endif 867#endif
868 return; 868 return;
869 } 869 }
870 mAlarmTimer->stop(); 870 mAlarmTimer->stop();
871} 871}
872void CalendarView::selectWeekNum ( int num ) 872void CalendarView::selectWeekNum ( int num )
873{ 873{
874 dateNavigator()->blockSignals( true ); 874 dateNavigator()->blockSignals( true );
875 dateNavigator()->selectWeek( num ); 875 dateNavigator()->selectWeek( num );
876 dateNavigator()->blockSignals( false ); 876 dateNavigator()->blockSignals( false );
877 mViewManager->showWeekView(); 877 mViewManager->showWeekView();
878} 878}
879KOViewManager *CalendarView::viewManager() 879KOViewManager *CalendarView::viewManager()
880{ 880{
881 return mViewManager; 881 return mViewManager;
882} 882}
883 883
884KODialogManager *CalendarView::dialogManager() 884KODialogManager *CalendarView::dialogManager()
885{ 885{
886 return mDialogManager; 886 return mDialogManager;
887} 887}
888 888
889QDate CalendarView::startDate() 889QDate CalendarView::startDate()
890{ 890{
891 DateList dates = mNavigator->selectedDates(); 891 DateList dates = mNavigator->selectedDates();
892 892
893 return dates.first(); 893 return dates.first();
894} 894}
895 895
896QDate CalendarView::endDate() 896QDate CalendarView::endDate()
897{ 897{
898 DateList dates = mNavigator->selectedDates(); 898 DateList dates = mNavigator->selectedDates();
899 899
900 return dates.last(); 900 return dates.last();
901} 901}
902 902
903 903
904void CalendarView::createPrinter() 904void CalendarView::createPrinter()
905{ 905{
906#ifndef KORG_NOPRINTER 906#ifndef KORG_NOPRINTER
907 if (!mCalPrinter) { 907 if (!mCalPrinter) {
908 mCalPrinter = new CalPrinter(this, mCalendar); 908 mCalPrinter = new CalPrinter(this, mCalendar);
909 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 909 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
910 } 910 }
911#endif 911#endif
912} 912}
913 913
914 914
915//KOPrefs::instance()->mWriteBackFile 915//KOPrefs::instance()->mWriteBackFile
916//KOPrefs::instance()->mWriteBackExistingOnly 916//KOPrefs::instance()->mWriteBackExistingOnly
917 917
918// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 918// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
919// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 919// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
920// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 920// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
921// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 921// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
922// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 922// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
923// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 923// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
924 924
925int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 925int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
926{ 926{
927 927
928 // 0 equal 928 // 0 equal
929 // 1 take local 929 // 1 take local
930 // 2 take remote 930 // 2 take remote
931 // 3 cancel 931 // 3 cancel
932 QDateTime lastSync = mLastCalendarSync; 932 QDateTime lastSync = mLastCalendarSync;
933 QDateTime localMod = local->lastModified(); 933 QDateTime localMod = local->lastModified();
934 QDateTime remoteMod = remote->lastModified(); 934 QDateTime remoteMod = remote->lastModified();
935 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 935 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
936 bool remCh, locCh; 936 bool remCh, locCh;
937 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 937 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
938 //if ( remCh ) 938 //if ( remCh )
939 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 939 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
940 locCh = ( localMod > mLastCalendarSync ); 940 locCh = ( localMod > mLastCalendarSync );
941 if ( !remCh && ! locCh ) { 941 if ( !remCh && ! locCh ) {
942 //qDebug("both not changed "); 942 //qDebug("both not changed ");
943 lastSync = localMod.addDays(1); 943 lastSync = localMod.addDays(1);
944 if ( mode <= SYNC_PREF_ASK ) 944 if ( mode <= SYNC_PREF_ASK )
945 return 0; 945 return 0;
946 } else { 946 } else {
947 if ( locCh ) { 947 if ( locCh ) {
948 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 948 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
949 lastSync = localMod.addDays( -1 ); 949 lastSync = localMod.addDays( -1 );
950 if ( !remCh ) 950 if ( !remCh )
951 remoteMod = ( lastSync.addDays( -1 ) ); 951 remoteMod = ( lastSync.addDays( -1 ) );
952 } else { 952 } else {
953 //qDebug(" not loc changed "); 953 //qDebug(" not loc changed ");
954 lastSync = localMod.addDays( 1 ); 954 lastSync = localMod.addDays( 1 );
955 if ( remCh ) 955 if ( remCh )
956 remoteMod =( lastSync.addDays( 1 ) ); 956 remoteMod =( lastSync.addDays( 1 ) );
957 957
958 } 958 }
959 } 959 }
960 full = true; 960 full = true;
961 if ( mode < SYNC_PREF_ASK ) 961 if ( mode < SYNC_PREF_ASK )
962 mode = SYNC_PREF_ASK; 962 mode = SYNC_PREF_ASK;
963 } else { 963 } else {
964 if ( localMod == remoteMod ) 964 if ( localMod == remoteMod )
965 // if ( local->revision() == remote->revision() ) 965 // if ( local->revision() == remote->revision() )
966 return 0; 966 return 0;
967 967
968 } 968 }
969 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 969 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
970 970
971 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 971 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
972 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 972 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
973 //full = true; //debug only 973 //full = true; //debug only
974 if ( full ) { 974 if ( full ) {
975 bool equ = false; 975 bool equ = false;
976 if ( local->typeID() == eventID ) { 976 if ( local->typeID() == eventID ) {
977 equ = (*((Event*) local) == *((Event*) remote)); 977 equ = (*((Event*) local) == *((Event*) remote));
978 } 978 }
979 else if ( local->typeID() == todoID ) 979 else if ( local->typeID() == todoID )
980 equ = (*((Todo*) local) == (*(Todo*) remote)); 980 equ = (*((Todo*) local) == (*(Todo*) remote));
981 else if ( local->typeID() == journalID ) 981 else if ( local->typeID() == journalID )
982 equ = (*((Journal*) local) == *((Journal*) remote)); 982 equ = (*((Journal*) local) == *((Journal*) remote));
983 if ( equ ) { 983 if ( equ ) {
984 //qDebug("equal "); 984 //qDebug("equal ");
985 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 985 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
986 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 986 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
987 } 987 }
988 if ( mode < SYNC_PREF_FORCE_LOCAL ) 988 if ( mode < SYNC_PREF_FORCE_LOCAL )
989 return 0; 989 return 0;
990 990
991 }//else //debug only 991 }//else //debug only
992 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 992 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
993 } 993 }
994 int result; 994 int result;
995 bool localIsNew; 995 bool localIsNew;
996 //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() ); 996 //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() );
997 997
998 998
999 // ************************************************ 999 // ************************************************
1000 // ************************************************ 1000 // ************************************************
1001 // ************************************************ 1001 // ************************************************
1002 // We may have that lastSync > remoteMod AND lastSync > localMod 1002 // We may have that lastSync > remoteMod AND lastSync > localMod
1003 // BUT remoteMod != localMod 1003 // BUT remoteMod != localMod
1004 1004
1005 1005
1006 if ( full && mode < SYNC_PREF_NEWEST ) 1006 if ( full && mode < SYNC_PREF_NEWEST )
1007 mode = SYNC_PREF_ASK; 1007 mode = SYNC_PREF_ASK;
1008 1008
1009 switch( mode ) { 1009 switch( mode ) {
1010 case SYNC_PREF_LOCAL: 1010 case SYNC_PREF_LOCAL:
1011 if ( lastSync > remoteMod ) 1011 if ( lastSync > remoteMod )
1012 return 1; 1012 return 1;
1013 if ( lastSync > localMod ) 1013 if ( lastSync > localMod )
1014 return 2; 1014 return 2;
1015 return 1; 1015 return 1;
1016 break; 1016 break;
1017 case SYNC_PREF_REMOTE: 1017 case SYNC_PREF_REMOTE:
1018 if ( lastSync > localMod ) 1018 if ( lastSync > localMod )
1019 return 2; 1019 return 2;
1020 if ( lastSync > remoteMod ) 1020 if ( lastSync > remoteMod )
1021 return 1; 1021 return 1;
1022 return 2; 1022 return 2;
1023 break; 1023 break;
1024 case SYNC_PREF_NEWEST: 1024 case SYNC_PREF_NEWEST:
1025 if ( localMod >= remoteMod ) 1025 if ( localMod >= remoteMod )
1026 return 1; 1026 return 1;
1027 else 1027 else
1028 return 2; 1028 return 2;
1029 break; 1029 break;
1030 case SYNC_PREF_ASK: 1030 case SYNC_PREF_ASK:
1031 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1031 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1032 if ( lastSync > remoteMod && lastSync > localMod) 1032 if ( lastSync > remoteMod && lastSync > localMod)
1033 return 0; 1033 return 0;
1034 if ( lastSync > remoteMod ) 1034 if ( lastSync > remoteMod )
1035 return 1; 1035 return 1;
1036 if ( lastSync > localMod ) 1036 if ( lastSync > localMod )
1037 return 2; 1037 return 2;
1038 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1038 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1039 localIsNew = localMod >= remoteMod; 1039 localIsNew = localMod >= remoteMod;
1040 if ( localIsNew ) 1040 if ( localIsNew )
1041 getEventViewerDialog()->setColorMode( 1 ); 1041 getEventViewerDialog()->setColorMode( 1 );
1042 else 1042 else
1043 getEventViewerDialog()->setColorMode( 2 ); 1043 getEventViewerDialog()->setColorMode( 2 );
1044 getEventViewerDialog()->setIncidence(local); 1044 getEventViewerDialog()->setIncidence(local);
1045 if ( localIsNew ) 1045 if ( localIsNew )
1046 getEventViewerDialog()->setColorMode( 2 ); 1046 getEventViewerDialog()->setColorMode( 2 );
1047 else 1047 else
1048 getEventViewerDialog()->setColorMode( 1 ); 1048 getEventViewerDialog()->setColorMode( 1 );
1049 getEventViewerDialog()->addIncidence(remote); 1049 getEventViewerDialog()->addIncidence(remote);
1050 getEventViewerDialog()->setColorMode( 0 ); 1050 getEventViewerDialog()->setColorMode( 0 );
1051 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1051 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1052 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1052 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1053 getEventViewerDialog()->showMe(); 1053 getEventViewerDialog()->showMe();
1054 result = getEventViewerDialog()->executeS( localIsNew ); 1054 result = getEventViewerDialog()->executeS( localIsNew );
1055 return result; 1055 return result;
1056 1056
1057 break; 1057 break;
1058 case SYNC_PREF_FORCE_LOCAL: 1058 case SYNC_PREF_FORCE_LOCAL:
1059 return 1; 1059 return 1;
1060 break; 1060 break;
1061 case SYNC_PREF_FORCE_REMOTE: 1061 case SYNC_PREF_FORCE_REMOTE:
1062 return 2; 1062 return 2;
1063 break; 1063 break;
1064 1064
1065 default: 1065 default:
1066 // SYNC_PREF_TAKE_BOTH not implemented 1066 // SYNC_PREF_TAKE_BOTH not implemented
1067 break; 1067 break;
1068 } 1068 }
1069 return 0; 1069 return 0;
1070} 1070}
1071Event* CalendarView::getLastSyncEvent() 1071Event* CalendarView::getLastSyncEvent()
1072{ 1072{
1073 Event* lse; 1073 Event* lse;
1074 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1074 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1075 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1075 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1076 if (!lse) { 1076 if (!lse) {
1077 lse = new Event(); 1077 lse = new Event();
1078 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1078 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1079 QString sum = ""; 1079 QString sum = "";
1080 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1080 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1081 sum = "E: "; 1081 sum = "E: ";
1082 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1082 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1083 lse->setDtStart( mLastCalendarSync ); 1083 lse->setDtStart( mLastCalendarSync );
1084 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1084 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1085 lse->setCategories( i18n("SyncEvent") ); 1085 lse->setCategories( i18n("SyncEvent") );
1086 lse->setReadOnly( true ); 1086 lse->setReadOnly( true );
1087 mCalendar->addEvent( lse ); 1087 mCalendar->addEvent( lse );
1088 } 1088 }
1089 1089
1090 return lse; 1090 return lse;
1091 1091
1092} 1092}
1093 1093
1094// we check, if the to delete event has a id for a profile 1094// we check, if the to delete event has a id for a profile
1095// if yes, we set this id in the profile to delete 1095// if yes, we set this id in the profile to delete
1096void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1096void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1097{ 1097{
1098 if ( lastSync.count() == 0 ) { 1098 if ( lastSync.count() == 0 ) {
1099 //qDebug(" lastSync.count() == 0"); 1099 //qDebug(" lastSync.count() == 0");
1100 return; 1100 return;
1101 } 1101 }
1102 if ( toDelete->typeID() == journalID ) 1102 if ( toDelete->typeID() == journalID )
1103 return; 1103 return;
1104 1104
1105 Event* eve = lastSync.first(); 1105 Event* eve = lastSync.first();
1106 1106
1107 while ( eve ) { 1107 while ( eve ) {
1108 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1108 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1109 if ( !id.isEmpty() ) { 1109 if ( !id.isEmpty() ) {
1110 QString des = eve->description(); 1110 QString des = eve->description();
1111 QString pref = "e"; 1111 QString pref = "e";
1112 if ( toDelete->typeID() == todoID ) 1112 if ( toDelete->typeID() == todoID )
1113 pref = "t"; 1113 pref = "t";
1114 des += pref+ id + ","; 1114 des += pref+ id + ",";
1115 eve->setReadOnly( false ); 1115 eve->setReadOnly( false );
1116 eve->setDescription( des ); 1116 eve->setDescription( des );
1117 //qDebug("setdes %s ", des.latin1()); 1117 //qDebug("setdes %s ", des.latin1());
1118 eve->setReadOnly( true ); 1118 eve->setReadOnly( true );
1119 } 1119 }
1120 eve = lastSync.next(); 1120 eve = lastSync.next();
1121 } 1121 }
1122 1122
1123} 1123}
1124void CalendarView::checkExternalId( Incidence * inc ) 1124void CalendarView::checkExternalId( Incidence * inc )
1125{ 1125{
1126 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1126 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1127 checkExternSyncEvent( lastSync, inc ); 1127 checkExternSyncEvent( lastSync, inc );
1128 1128
1129} 1129}
1130bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1130bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1131{ 1131{
1132 bool syncOK = true; 1132 bool syncOK = true;
1133 int addedEvent = 0; 1133 int addedEvent = 0;
1134 int addedEventR = 0; 1134 int addedEventR = 0;
1135 int deletedEventR = 0; 1135 int deletedEventR = 0;
1136 int deletedEventL = 0; 1136 int deletedEventL = 0;
1137 int changedLocal = 0; 1137 int changedLocal = 0;
1138 int changedRemote = 0; 1138 int changedRemote = 0;
1139 int filteredIN = 0; 1139 int filteredIN = 0;
1140 int filteredOUT = 0; 1140 int filteredOUT = 0;
1141 //QPtrList<Event> el = local->rawEvents(); 1141 //QPtrList<Event> el = local->rawEvents();
1142 Event* eventR; 1142 Event* eventR;
1143 QString uid; 1143 QString uid;
1144 int take; 1144 int take;
1145 Event* eventL; 1145 Event* eventL;
1146 Event* eventRSync; 1146 Event* eventRSync;
1147 Event* eventLSync; 1147 Event* eventLSync;
1148 clearAllViews(); 1148 clearAllViews();
1149 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1149 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1150 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1150 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1151 bool fullDateRange = false; 1151 bool fullDateRange = false;
1152 local->resetTempSyncStat(); 1152 local->resetTempSyncStat();
1153 mLastCalendarSync = QDateTime::currentDateTime(); 1153 mLastCalendarSync = QDateTime::currentDateTime();
1154 if ( mSyncManager->syncWithDesktop() ) { 1154 if ( mSyncManager->syncWithDesktop() ) {
1155 remote->resetPilotStat(1); 1155 remote->resetPilotStat(1);
1156 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1156 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1157 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1157 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1158 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1158 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1159 } else { 1159 } else {
1160 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1160 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1161 } 1161 }
1162 } 1162 }
1163 QDateTime modifiedCalendar = mLastCalendarSync; 1163 QDateTime modifiedCalendar = mLastCalendarSync;
1164 eventLSync = getLastSyncEvent(); 1164 eventLSync = getLastSyncEvent();
1165 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1165 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1166 if ( eventR ) { 1166 if ( eventR ) {
1167 eventRSync = (Event*) eventR->clone(); 1167 eventRSync = (Event*) eventR->clone();
1168 remote->deleteEvent(eventR ); 1168 remote->deleteEvent(eventR );
1169 1169
1170 } else { 1170 } else {
1171 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1171 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1172 eventRSync = (Event*)eventLSync->clone(); 1172 eventRSync = (Event*)eventLSync->clone();
1173 } else { 1173 } else {
1174 fullDateRange = true; 1174 fullDateRange = true;
1175 eventRSync = new Event(); 1175 eventRSync = new Event();
1176 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1176 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1177 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1177 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1178 eventRSync->setDtStart( mLastCalendarSync ); 1178 eventRSync->setDtStart( mLastCalendarSync );
1179 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1179 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1180 eventRSync->setCategories( i18n("SyncEvent") ); 1180 eventRSync->setCategories( i18n("SyncEvent") );
1181 } 1181 }
1182 } 1182 }
1183 if ( eventLSync->dtStart() == mLastCalendarSync ) 1183 if ( eventLSync->dtStart() == mLastCalendarSync )
1184 fullDateRange = true; 1184 fullDateRange = true;
1185 1185
1186 if ( ! fullDateRange ) { 1186 if ( ! fullDateRange ) {
1187 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1187 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1188 1188
1189 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1189 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1190 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1190 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1191 fullDateRange = true; 1191 fullDateRange = true;
1192 } 1192 }
1193 } 1193 }
1194 if ( mSyncManager->syncWithDesktop() ) { 1194 if ( mSyncManager->syncWithDesktop() ) {
1195 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1195 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1196 } 1196 }
1197 if ( fullDateRange ) 1197 if ( fullDateRange )
1198 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1198 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1199 else 1199 else
1200 mLastCalendarSync = eventLSync->dtStart(); 1200 mLastCalendarSync = eventLSync->dtStart();
1201 // for resyncing if own file has changed 1201 // for resyncing if own file has changed
1202 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1202 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1203 mLastCalendarSync = loadedFileVersion; 1203 mLastCalendarSync = loadedFileVersion;
1204 //qDebug("setting mLastCalendarSync "); 1204 //qDebug("setting mLastCalendarSync ");
1205 } 1205 }
1206 //qDebug("*************************** "); 1206 //qDebug("*************************** ");
1207 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1207 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1208 QPtrList<Incidence> er = remote->rawIncidences(); 1208 QPtrList<Incidence> er = remote->rawIncidences();
1209 Incidence* inR = er.first(); 1209 Incidence* inR = er.first();
1210 Incidence* inL; 1210 Incidence* inL;
1211 QProgressBar bar( er.count(),0 ); 1211 QProgressBar bar( er.count(),0 );
1212 bar.setCaption (i18n("Syncing - close to abort!") ); 1212 bar.setCaption (i18n("Syncing - close to abort!") );
1213 1213
1214 // ************** setting up filter ************* 1214 // ************** setting up filter *************
1215 CalFilter *filterIN = 0; 1215 CalFilter *filterIN = 0;
1216 CalFilter *filterOUT = 0; 1216 CalFilter *filterOUT = 0;
1217 CalFilter *filter = mFilters.first(); 1217 CalFilter *filter = mFilters.first();
1218 while(filter) { 1218 while(filter) {
1219 if ( filter->name() == mSyncManager->mFilterInCal ) 1219 if ( filter->name() == mSyncManager->mFilterInCal )
1220 filterIN = filter; 1220 filterIN = filter;
1221 if ( filter->name() == mSyncManager->mFilterOutCal ) 1221 if ( filter->name() == mSyncManager->mFilterOutCal )
1222 filterOUT = filter; 1222 filterOUT = filter;
1223 filter = mFilters.next(); 1223 filter = mFilters.next();
1224 } 1224 }
1225 int w = 300; 1225 int w = 300;
1226 if ( QApplication::desktop()->width() < 320 ) 1226 if ( QApplication::desktop()->width() < 320 )
1227 w = 220; 1227 w = 220;
1228 int h = bar.sizeHint().height() ; 1228 int h = bar.sizeHint().height() ;
1229 int dw = QApplication::desktop()->width(); 1229 int dw = QApplication::desktop()->width();
1230 int dh = QApplication::desktop()->height(); 1230 int dh = QApplication::desktop()->height();
1231 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1231 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1232 bar.show(); 1232 bar.show();
1233 int modulo = (er.count()/10)+1; 1233 int modulo = (er.count()/10)+1;
1234 int incCounter = 0; 1234 int incCounter = 0;
1235 while ( inR ) { 1235 while ( inR ) {
1236 if ( ! bar.isVisible() ) 1236 if ( ! bar.isVisible() )
1237 return false; 1237 return false;
1238 if ( incCounter % modulo == 0 ) 1238 if ( incCounter % modulo == 0 )
1239 bar.setProgress( incCounter ); 1239 bar.setProgress( incCounter );
1240 ++incCounter; 1240 ++incCounter;
1241 uid = inR->uid(); 1241 uid = inR->uid();
1242 bool skipIncidence = false; 1242 bool skipIncidence = false;
1243 if ( uid.left(15) == QString("last-syncEvent-") ) 1243 if ( uid.left(15) == QString("last-syncEvent-") )
1244 skipIncidence = true; 1244 skipIncidence = true;
1245 QString idS; 1245 QString idS;
1246 qApp->processEvents(); 1246 qApp->processEvents();
1247 if ( !skipIncidence ) { 1247 if ( !skipIncidence ) {
1248 inL = local->incidence( uid ); 1248 inL = local->incidence( uid );
1249 if ( inL ) { // maybe conflict - same uid in both calendars 1249 if ( inL ) { // maybe conflict - same uid in both calendars
1250 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1250 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1251 //qDebug("take %d %s ", take, inL->summary().latin1()); 1251 //qDebug("take %d %s ", take, inL->summary().latin1());
1252 if ( take == 3 ) 1252 if ( take == 3 )
1253 return false; 1253 return false;
1254 if ( take == 1 ) {// take local ********************** 1254 if ( take == 1 ) {// take local **********************
1255 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1255 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1256 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1256 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1257 else 1257 else
1258 idS = inR->IDStr(); 1258 idS = inR->IDStr();
1259 remote->deleteIncidence( inR ); 1259 remote->deleteIncidence( inR );
1260 inR = inL->clone(); 1260 inR = inL->clone();
1261 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1261 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1262 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1262 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1263 inR->setIDStr( idS ); 1263 inR->setIDStr( idS );
1264 remote->addIncidence( inR ); 1264 remote->addIncidence( inR );
1265 if ( mSyncManager->syncWithDesktop() ) 1265 if ( mSyncManager->syncWithDesktop() )
1266 inR->setPilotId( 2 ); 1266 inR->setPilotId( 2 );
1267 ++changedRemote; 1267 ++changedRemote;
1268 } else {// take remote ********************** 1268 } else {// take remote **********************
1269 idS = inL->IDStr(); 1269 idS = inL->IDStr();
1270 int pid = inL->pilotId(); 1270 int pid = inL->pilotId();
1271 local->deleteIncidence( inL ); 1271 local->deleteIncidence( inL );
1272 inL = inR->clone(); 1272 inL = inR->clone();
1273 if ( mSyncManager->syncWithDesktop() ) 1273 if ( mSyncManager->syncWithDesktop() )
1274 inL->setPilotId( pid ); 1274 inL->setPilotId( pid );
1275 inL->setIDStr( idS ); 1275 inL->setIDStr( idS );
1276 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1276 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1277 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1277 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1278 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1278 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1279 } 1279 }
1280 local->addIncidence( inL ); 1280 local->addIncidence( inL );
1281 ++changedLocal; 1281 ++changedLocal;
1282 } 1282 }
1283 } 1283 }
1284 } else { // no conflict ********** add or delete remote 1284 } else { // no conflict ********** add or delete remote
1285 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1285 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1286 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1286 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1287 QString des = eventLSync->description(); 1287 QString des = eventLSync->description();
1288 QString pref = "e"; 1288 QString pref = "e";
1289 if ( inR->typeID() == todoID ) 1289 if ( inR->typeID() == todoID )
1290 pref = "t"; 1290 pref = "t";
1291 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1291 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1292 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1292 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1293 //remote->deleteIncidence( inR ); 1293 //remote->deleteIncidence( inR );
1294 ++deletedEventR; 1294 ++deletedEventR;
1295 } else { 1295 } else {
1296 inR->setLastModified( modifiedCalendar ); 1296 inR->setLastModified( modifiedCalendar );
1297 inL = inR->clone(); 1297 inL = inR->clone();
1298 inL->setIDStr( ":" ); 1298 inL->setIDStr( ":" );
1299 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1299 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1300 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1300 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1301 local->addIncidence( inL ); 1301 local->addIncidence( inL );
1302 ++addedEvent; 1302 ++addedEvent;
1303 1303
1304 } 1304 }
1305 } else { 1305 } else {
1306 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1306 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1307 inR->setLastModified( modifiedCalendar ); 1307 inR->setLastModified( modifiedCalendar );
1308 inL = inR->clone(); 1308 inL = inR->clone();
1309 inL->setIDStr( ":" ); 1309 inL->setIDStr( ":" );
1310 local->addIncidence( inL ); 1310 local->addIncidence( inL );
1311 ++addedEvent; 1311 ++addedEvent;
1312 1312
1313 } else { 1313 } else {
1314 checkExternSyncEvent(eventRSyncSharp, inR); 1314 checkExternSyncEvent(eventRSyncSharp, inR);
1315 remote->deleteIncidence( inR ); 1315 remote->deleteIncidence( inR );
1316 ++deletedEventR; 1316 ++deletedEventR;
1317 } 1317 }
1318 } 1318 }
1319 } else { 1319 } else {
1320 ++filteredIN; 1320 ++filteredIN;
1321 } 1321 }
1322 } 1322 }
1323 } 1323 }
1324 inR = er.next(); 1324 inR = er.next();
1325 } 1325 }
1326 QPtrList<Incidence> el = local->rawIncidences(); 1326 QPtrList<Incidence> el = local->rawIncidences();
1327 inL = el.first(); 1327 inL = el.first();
1328 modulo = (el.count()/10)+1; 1328 modulo = (el.count()/10)+1;
1329 bar.setCaption (i18n("Add / remove events") ); 1329 bar.setCaption (i18n("Add / remove events") );
1330 bar.setTotalSteps ( el.count() ) ; 1330 bar.setTotalSteps ( el.count() ) ;
1331 bar.show(); 1331 bar.show();
1332 incCounter = 0; 1332 incCounter = 0;
1333 1333
1334 while ( inL ) { 1334 while ( inL ) {
1335 1335
1336 qApp->processEvents(); 1336 qApp->processEvents();
1337 if ( ! bar.isVisible() ) 1337 if ( ! bar.isVisible() )
1338 return false; 1338 return false;
1339 if ( incCounter % modulo == 0 ) 1339 if ( incCounter % modulo == 0 )
1340 bar.setProgress( incCounter ); 1340 bar.setProgress( incCounter );
1341 ++incCounter; 1341 ++incCounter;
1342 uid = inL->uid(); 1342 uid = inL->uid();
1343 bool skipIncidence = false; 1343 bool skipIncidence = false;
1344 if ( uid.left(15) == QString("last-syncEvent-") ) 1344 if ( uid.left(15) == QString("last-syncEvent-") )
1345 skipIncidence = true; 1345 skipIncidence = true;
1346 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1346 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1347 skipIncidence = true; 1347 skipIncidence = true;
1348 if ( !skipIncidence ) { 1348 if ( !skipIncidence ) {
1349 inR = remote->incidence( uid ); 1349 inR = remote->incidence( uid );
1350 if ( ! inR ) { 1350 if ( ! inR ) {
1351 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1351 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1352 // no conflict ********** add or delete local 1352 // no conflict ********** add or delete local
1353 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1353 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1354 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1354 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1355 checkExternSyncEvent(eventLSyncSharp, inL); 1355 checkExternSyncEvent(eventLSyncSharp, inL);
1356 local->deleteIncidence( inL ); 1356 local->deleteIncidence( inL );
1357 ++deletedEventL; 1357 ++deletedEventL;
1358 } else { 1358 } else {
1359 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1359 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1360 inL->removeID(mCurrentSyncDevice ); 1360 inL->removeID(mCurrentSyncDevice );
1361 ++addedEventR; 1361 ++addedEventR;
1362 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1362 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1363 inL->setLastModified( modifiedCalendar ); 1363 inL->setLastModified( modifiedCalendar );
1364 inR = inL->clone(); 1364 inR = inL->clone();
1365 inR->setIDStr( ":" ); 1365 inR->setIDStr( ":" );
1366 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1366 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1367 remote->addIncidence( inR ); 1367 remote->addIncidence( inR );
1368 } 1368 }
1369 } 1369 }
1370 } else { 1370 } else {
1371 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1371 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1372 checkExternSyncEvent(eventLSyncSharp, inL); 1372 checkExternSyncEvent(eventLSyncSharp, inL);
1373 local->deleteIncidence( inL ); 1373 local->deleteIncidence( inL );
1374 ++deletedEventL; 1374 ++deletedEventL;
1375 } else { 1375 } else {
1376 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1376 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1377 ++addedEventR; 1377 ++addedEventR;
1378 inL->setLastModified( modifiedCalendar ); 1378 inL->setLastModified( modifiedCalendar );
1379 inR = inL->clone(); 1379 inR = inL->clone();
1380 inR->setIDStr( ":" ); 1380 inR->setIDStr( ":" );
1381 remote->addIncidence( inR ); 1381 remote->addIncidence( inR );
1382 } 1382 }
1383 } 1383 }
1384 } 1384 }
1385 } else { 1385 } else {
1386 ++filteredOUT; 1386 ++filteredOUT;
1387 } 1387 }
1388 } 1388 }
1389 } 1389 }
1390 inL = el.next(); 1390 inL = el.next();
1391 } 1391 }
1392 int delFut = 0; 1392 int delFut = 0;
1393 int remRem = 0; 1393 int remRem = 0;
1394 if ( mSyncManager->mWriteBackInFuture ) { 1394 if ( mSyncManager->mWriteBackInFuture ) {
1395 er = remote->rawIncidences(); 1395 er = remote->rawIncidences();
1396 remRem = er.count(); 1396 remRem = er.count();
1397 inR = er.first(); 1397 inR = er.first();
1398 QDateTime dt; 1398 QDateTime dt;
1399 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1399 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1400 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1400 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1401 while ( inR ) { 1401 while ( inR ) {
1402 if ( inR->typeID() == todoID ) { 1402 if ( inR->typeID() == todoID ) {
1403 Todo * t = (Todo*)inR; 1403 Todo * t = (Todo*)inR;
1404 if ( t->hasDueDate() ) 1404 if ( t->hasDueDate() )
1405 dt = t->dtDue(); 1405 dt = t->dtDue();
1406 else 1406 else
1407 dt = cur.addSecs( 62 ); 1407 dt = cur.addSecs( 62 );
1408 } 1408 }
1409 else if (inR->typeID() == eventID ) { 1409 else if (inR->typeID() == eventID ) {
1410 bool ok; 1410 bool ok;
1411 dt = inR->getNextOccurence( cur, &ok ); 1411 dt = inR->getNextOccurence( cur, &ok );
1412 if ( !ok ) 1412 if ( !ok )
1413 dt = cur.addSecs( -62 ); 1413 dt = cur.addSecs( -62 );
1414 } 1414 }
1415 else 1415 else
1416 dt = inR->dtStart(); 1416 dt = inR->dtStart();
1417 if ( dt < cur || dt > end ) { 1417 if ( dt < cur || dt > end ) {
1418 remote->deleteIncidence( inR ); 1418 remote->deleteIncidence( inR );
1419 ++delFut; 1419 ++delFut;
1420 } 1420 }
1421 inR = er.next(); 1421 inR = er.next();
1422 } 1422 }
1423 } 1423 }
1424 bar.hide(); 1424 bar.hide();
1425 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1425 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1426 eventLSync->setReadOnly( false ); 1426 eventLSync->setReadOnly( false );
1427 eventLSync->setDtStart( mLastCalendarSync ); 1427 eventLSync->setDtStart( mLastCalendarSync );
1428 eventRSync->setDtStart( mLastCalendarSync ); 1428 eventRSync->setDtStart( mLastCalendarSync );
1429 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1429 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1430 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1430 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1431 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1431 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1432 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1432 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1433 eventLSync->setReadOnly( true ); 1433 eventLSync->setReadOnly( true );
1434 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1434 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1435 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal... 1435 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop()) // kde is abnormal...
1436 remote->addEvent( eventRSync ); 1436 remote->addEvent( eventRSync );
1437 else 1437 else
1438 delete eventRSync; 1438 delete eventRSync;
1439 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1439 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1440 QString mes; 1440 QString mes;
1441 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1441 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1442 QString delmess; 1442 QString delmess;
1443 if ( delFut ) { 1443 if ( delFut ) {
1444 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1444 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1445 mes += delmess; 1445 mes += delmess;
1446 } 1446 }
1447 mes = i18n("Local calendar changed!\n") +mes; 1447 mes = i18n("Local calendar changed!\n") +mes;
1448 mCalendar->checkAlarmForIncidence( 0, true ); 1448 mCalendar->checkAlarmForIncidence( 0, true );
1449 qDebug( mes ); 1449 qDebug( mes );
1450 if ( mSyncManager->mShowSyncSummary ) { 1450 if ( mSyncManager->mShowSyncSummary ) {
1451 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1451 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1452 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1452 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1453 qDebug("KO: WB cancelled "); 1453 qDebug("KO: WB cancelled ");
1454 mSyncManager->mWriteBackFile = false; 1454 mSyncManager->mWriteBackFile = false;
1455 return syncOK; 1455 return syncOK;
1456 } 1456 }
1457 } 1457 }
1458 return syncOK; 1458 return syncOK;
1459} 1459}
1460 1460
1461void CalendarView::setSyncDevice( QString s ) 1461void CalendarView::setSyncDevice( QString s )
1462{ 1462{
1463 mCurrentSyncDevice= s; 1463 mCurrentSyncDevice= s;
1464} 1464}
1465void CalendarView::setSyncName( QString s ) 1465void CalendarView::setSyncName( QString s )
1466{ 1466{
1467 mCurrentSyncName= s; 1467 mCurrentSyncName= s;
1468} 1468}
1469bool CalendarView::syncCalendar(QString filename, int mode) 1469bool CalendarView::syncCalendar(QString filename, int mode)
1470{ 1470{
1471 //qDebug("syncCalendar %s ", filename.latin1()); 1471 //qDebug("syncCalendar %s ", filename.latin1());
1472 mGlobalSyncMode = SYNC_MODE_NORMAL; 1472 mGlobalSyncMode = SYNC_MODE_NORMAL;
1473 CalendarLocal* calendar = new CalendarLocal(); 1473 CalendarLocal* calendar = new CalendarLocal();
1474 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1474 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1475 FileStorage* storage = new FileStorage( calendar ); 1475 FileStorage* storage = new FileStorage( calendar );
1476 bool syncOK = false; 1476 bool syncOK = false;
1477 storage->setFileName( filename ); 1477 storage->setFileName( filename );
1478 // qDebug("loading ... "); 1478 // qDebug("loading ... ");
1479 if ( storage->load() ) { 1479 if ( storage->load() ) {
1480 getEventViewerDialog()->setSyncMode( true ); 1480 getEventViewerDialog()->setSyncMode( true );
1481 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1481 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1482 getEventViewerDialog()->setSyncMode( false ); 1482 getEventViewerDialog()->setSyncMode( false );
1483 if ( syncOK ) { 1483 if ( syncOK ) {
1484 if ( mSyncManager->mWriteBackFile ) 1484 if ( mSyncManager->mWriteBackFile )
1485 { 1485 {
1486 storage->setSaveFormat( new ICalFormat() ); 1486 storage->setSaveFormat( new ICalFormat() );
1487 storage->save(); 1487 storage->save();
1488 } 1488 }
1489 } 1489 }
1490 setModified( true ); 1490 setModified( true );
1491 } 1491 }
1492 delete storage; 1492 delete storage;
1493 delete calendar; 1493 delete calendar;
1494 if ( syncOK ) 1494 if ( syncOK )
1495 updateView(); 1495 updateView();
1496 return syncOK; 1496 return syncOK;
1497} 1497}
1498 1498
1499void CalendarView::syncExternal( int mode ) 1499void CalendarView::syncExternal( int mode )
1500{ 1500{
1501 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1501 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1502 1502
1503 qApp->processEvents(); 1503 qApp->processEvents();
1504 CalendarLocal* calendar = new CalendarLocal(); 1504 CalendarLocal* calendar = new CalendarLocal();
1505 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1505 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1506 bool syncOK = false; 1506 bool syncOK = false;
1507 bool loadSuccess = false; 1507 bool loadSuccess = false;
1508 PhoneFormat* phoneFormat = 0; 1508 PhoneFormat* phoneFormat = 0;
1509 emit tempDisableBR(true); 1509 emit tempDisableBR(true);
1510#ifndef DESKTOP_VERSION 1510#ifndef DESKTOP_VERSION
1511 SharpFormat* sharpFormat = 0; 1511 SharpFormat* sharpFormat = 0;
1512 if ( mode == 0 ) { // sharp 1512 if ( mode == 0 ) { // sharp
1513 sharpFormat = new SharpFormat () ; 1513 sharpFormat = new SharpFormat () ;
1514 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1514 loadSuccess = sharpFormat->load( calendar, mCalendar );
1515 1515
1516 } else 1516 } else
1517#endif 1517#endif
1518 if ( mode == 1 ) { // phone 1518 if ( mode == 1 ) { // phone
1519 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1519 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1520 mSyncManager->mPhoneDevice, 1520 mSyncManager->mPhoneDevice,
1521 mSyncManager->mPhoneConnection, 1521 mSyncManager->mPhoneConnection,
1522 mSyncManager->mPhoneModel); 1522 mSyncManager->mPhoneModel);
1523 loadSuccess = phoneFormat->load( calendar,mCalendar); 1523 loadSuccess = phoneFormat->load( calendar,mCalendar);
1524 1524
1525 } else { 1525 } else {
1526 emit tempDisableBR(false); 1526 emit tempDisableBR(false);
1527 return; 1527 return;
1528 } 1528 }
1529 if ( loadSuccess ) { 1529 if ( loadSuccess ) {
1530 getEventViewerDialog()->setSyncMode( true ); 1530 getEventViewerDialog()->setSyncMode( true );
1531 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1531 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1532 getEventViewerDialog()->setSyncMode( false ); 1532 getEventViewerDialog()->setSyncMode( false );
1533 qApp->processEvents(); 1533 qApp->processEvents();
1534 if ( syncOK ) { 1534 if ( syncOK ) {
1535 if ( mSyncManager->mWriteBackFile ) 1535 if ( mSyncManager->mWriteBackFile )
1536 { 1536 {
1537 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1537 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1538 Incidence* inc = iL.first(); 1538 Incidence* inc = iL.first();
1539 if ( phoneFormat ) { 1539 if ( phoneFormat ) {
1540 while ( inc ) { 1540 while ( inc ) {
1541 inc->removeID(mCurrentSyncDevice); 1541 inc->removeID(mCurrentSyncDevice);
1542 inc = iL.next(); 1542 inc = iL.next();
1543 } 1543 }
1544 } 1544 }
1545#ifndef DESKTOP_VERSION 1545#ifndef DESKTOP_VERSION
1546 if ( sharpFormat ) 1546 if ( sharpFormat )
1547 sharpFormat->save(calendar); 1547 sharpFormat->save(calendar);
1548#endif 1548#endif
1549 if ( phoneFormat ) 1549 if ( phoneFormat )
1550 phoneFormat->save(calendar); 1550 phoneFormat->save(calendar);
1551 iL = calendar->rawIncidences(); 1551 iL = calendar->rawIncidences();
1552 inc = iL.first(); 1552 inc = iL.first();
1553 Incidence* loc; 1553 Incidence* loc;
1554 while ( inc ) { 1554 while ( inc ) {
1555 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1555 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1556 loc = mCalendar->incidence(inc->uid() ); 1556 loc = mCalendar->incidence(inc->uid() );
1557 if ( loc ) { 1557 if ( loc ) {
1558 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1558 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1559 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1559 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1560 } 1560 }
1561 } 1561 }
1562 inc = iL.next(); 1562 inc = iL.next();
1563 } 1563 }
1564 Incidence* lse = getLastSyncEvent(); 1564 Incidence* lse = getLastSyncEvent();
1565 if ( lse ) { 1565 if ( lse ) {
1566 lse->setReadOnly( false ); 1566 lse->setReadOnly( false );
1567 lse->setDescription( "" ); 1567 lse->setDescription( "" );
1568 lse->setReadOnly( true ); 1568 lse->setReadOnly( true );
1569 } 1569 }
1570 } 1570 }
1571 } else { 1571 } else {
1572 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 1572 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
1573 } 1573 }
1574 setModified( true ); 1574 setModified( true );
1575 } else { 1575 } else {
1576 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1576 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1577 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1577 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1578 question, i18n("Ok")) ; 1578 question, i18n("Ok")) ;
1579 1579
1580 } 1580 }
1581 delete calendar; 1581 delete calendar;
1582 updateView(); 1582 updateView();
1583 emit tempDisableBR(false); 1583 emit tempDisableBR(false);
1584 return ;//syncOK; 1584 return ;//syncOK;
1585 1585
1586} 1586}
1587 1587
1588bool CalendarView::importBday() 1588bool CalendarView::importBday()
1589{ 1589{
1590#ifndef KORG_NOKABC 1590#ifndef KORG_NOKABC
1591 1591
1592#ifdef DESKTOP_VERSION 1592#ifdef DESKTOP_VERSION
1593 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1593 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1594 KABC::AddressBook::Iterator it; 1594 KABC::AddressBook::Iterator it;
1595 int count = 0; 1595 int count = 0;
1596 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1596 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1597 ++count; 1597 ++count;
1598 } 1598 }
1599 QProgressBar bar(count,0 ); 1599 QProgressBar bar(count,0 );
1600 int w = 300; 1600 int w = 300;
1601 if ( QApplication::desktop()->width() < 320 ) 1601 if ( QApplication::desktop()->width() < 320 )
1602 w = 220; 1602 w = 220;
1603 int h = bar.sizeHint().height() ; 1603 int h = bar.sizeHint().height() ;
1604 int dw = QApplication::desktop()->width(); 1604 int dw = QApplication::desktop()->width();
1605 int dh = QApplication::desktop()->height(); 1605 int dh = QApplication::desktop()->height();
1606 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1606 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1607 bar.show(); 1607 bar.show();
1608 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1608 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1609 qApp->processEvents(); 1609 qApp->processEvents();
1610 count = 0; 1610 count = 0;
1611 int addCount = 0; 1611 int addCount = 0;
1612 KCal::Attendee* a = 0; 1612 KCal::Attendee* a = 0;
1613 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1613 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1614 if ( ! bar.isVisible() ) 1614 if ( ! bar.isVisible() )
1615 return false; 1615 return false;
1616 bar.setProgress( count++ ); 1616 bar.setProgress( count++ );
1617 qApp->processEvents(); 1617 qApp->processEvents();
1618 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1618 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1619 if ( (*it).birthday().date().isValid() ){ 1619 if ( (*it).birthday().date().isValid() ){
1620 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1620 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1621 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1621 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1622 ++addCount; 1622 ++addCount;
1623 } 1623 }
1624 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1624 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1625 if ( anni.isValid() ){ 1625 if ( anni.isValid() ){
1626 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1626 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1627 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1627 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1628 ++addCount; 1628 ++addCount;
1629 } 1629 }
1630 } 1630 }
1631 updateView(); 1631 updateView();
1632 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1632 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1633#else //DESKTOP_VERSION 1633#else //DESKTOP_VERSION
1634 1634
1635 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1635 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1636 // the result should now arrive through method insertBirthdays 1636 // the result should now arrive through method insertBirthdays
1637 1637
1638#endif //DESKTOP_VERSION 1638#endif //DESKTOP_VERSION
1639 1639
1640#endif //KORG_NOKABC 1640#endif //KORG_NOKABC
1641 1641
1642 1642
1643 return true; 1643 return true;
1644} 1644}
1645 1645
1646// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1646// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1647void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1647void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1648 const QStringList& anniversaryList, const QStringList& realNameList, 1648 const QStringList& anniversaryList, const QStringList& realNameList,
1649 const QStringList& emailList, const QStringList& assembledNameList, 1649 const QStringList& emailList, const QStringList& assembledNameList,
1650 const QStringList& uidList) 1650 const QStringList& uidList)
1651{ 1651{
1652 //qDebug("KO::CalendarView::insertBirthdays"); 1652 //qDebug("KO::CalendarView::insertBirthdays");
1653 if (uid == this->name()) 1653 if (uid == this->name())
1654 { 1654 {
1655 int count = birthdayList.count(); 1655 int count = birthdayList.count();
1656 int addCount = 0; 1656 int addCount = 0;
1657 KCal::Attendee* a = 0; 1657 KCal::Attendee* a = 0;
1658 1658
1659 //qDebug("CalView 1 %i", count); 1659 //qDebug("CalView 1 %i", count);
1660 1660
1661 QProgressBar bar(count,0 ); 1661 QProgressBar bar(count,0 );
1662 int w = 300; 1662 int w = 300;
1663 if ( QApplication::desktop()->width() < 320 ) 1663 if ( QApplication::desktop()->width() < 320 )
1664 w = 220; 1664 w = 220;
1665 int h = bar.sizeHint().height() ; 1665 int h = bar.sizeHint().height() ;
1666 int dw = QApplication::desktop()->width(); 1666 int dw = QApplication::desktop()->width();
1667 int dh = QApplication::desktop()->height(); 1667 int dh = QApplication::desktop()->height();
1668 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1668 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1669 bar.show(); 1669 bar.show();
1670 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1670 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1671 qApp->processEvents(); 1671 qApp->processEvents();
1672 1672
1673 QDate birthday; 1673 QDate birthday;
1674 QDate anniversary; 1674 QDate anniversary;
1675 QString realName; 1675 QString realName;
1676 QString email; 1676 QString email;
1677 QString assembledName; 1677 QString assembledName;
1678 QString uid; 1678 QString uid;
1679 bool ok = true; 1679 bool ok = true;
1680 for ( int i = 0; i < count; i++) 1680 for ( int i = 0; i < count; i++)
1681 { 1681 {
1682 if ( ! bar.isVisible() ) 1682 if ( ! bar.isVisible() )
1683 return; 1683 return;
1684 bar.setProgress( i ); 1684 bar.setProgress( i );
1685 qApp->processEvents(); 1685 qApp->processEvents();
1686 1686
1687 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1687 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1688 if (!ok) { 1688 if (!ok) {
1689 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1689 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1690 } 1690 }
1691 1691
1692 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1692 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1693 if (!ok) { 1693 if (!ok) {
1694 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1694 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1695 } 1695 }
1696 realName = realNameList[i]; 1696 realName = realNameList[i];
1697 email = emailList[i]; 1697 email = emailList[i];
1698 assembledName = assembledNameList[i]; 1698 assembledName = assembledNameList[i];
1699 uid = uidList[i]; 1699 uid = uidList[i];
1700 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 1700 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
1701 1701
1702 if ( birthday.isValid() ){ 1702 if ( birthday.isValid() ){
1703 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1703 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1704 KCal::Attendee::ReqParticipant,uid) ; 1704 KCal::Attendee::ReqParticipant,uid) ;
1705 if ( addAnniversary( birthday, assembledName, a, true ) ) 1705 if ( addAnniversary( birthday, assembledName, a, true ) )
1706 ++addCount; 1706 ++addCount;
1707 } 1707 }
1708 1708
1709 if ( anniversary.isValid() ){ 1709 if ( anniversary.isValid() ){
1710 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1710 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1711 KCal::Attendee::ReqParticipant,uid) ; 1711 KCal::Attendee::ReqParticipant,uid) ;
1712 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1712 if ( addAnniversary( anniversary, assembledName, a, false ) )
1713 ++addCount; 1713 ++addCount;
1714 } 1714 }
1715 } 1715 }
1716 1716
1717 updateView(); 1717 updateView();
1718 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1718 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1719 1719
1720 } 1720 }
1721 1721
1722} 1722}
1723 1723
1724 1724
1725 1725
1726bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1726bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1727{ 1727{
1728 //qDebug("addAnni "); 1728 //qDebug("addAnni ");
1729 Event * ev = new Event(); 1729 Event * ev = new Event();
1730 ev->setOrganizer(KOPrefs::instance()->email()); 1730 ev->setOrganizer(KOPrefs::instance()->email());
1731 if ( a ) { 1731 if ( a ) {
1732 ev->addAttendee( a ); 1732 ev->addAttendee( a );
1733 } 1733 }
1734 QString kind; 1734 QString kind;
1735 if ( birthday ) { 1735 if ( birthday ) {
1736 kind = i18n( "Birthday" ); 1736 kind = i18n( "Birthday" );
1737 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 1737 ev->setSummary( name + " (" + QString::number(date.year()) +")");
1738 } 1738 }
1739 else { 1739 else {
1740 kind = i18n( "Anniversary" ); 1740 kind = i18n( "Anniversary" );
1741 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 1741 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
1742 } 1742 }
1743 ev->setCategories( kind ); 1743 ev->setCategories( kind );
1744 ev->setDtStart( QDateTime(date) ); 1744 ev->setDtStart( QDateTime(date) );
1745 ev->setDtEnd( QDateTime(date) ); 1745 ev->setDtEnd( QDateTime(date) );
1746 ev->setFloats( true ); 1746 ev->setFloats( true );
1747 Recurrence * rec = ev->recurrence(); 1747 Recurrence * rec = ev->recurrence();
1748 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1748 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1749 rec->addYearlyNum( date.month() ); 1749 rec->addYearlyNum( date.month() );
1750 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1750 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1751 delete ev; 1751 delete ev;
1752 return false; 1752 return false;
1753 } 1753 }
1754 return true; 1754 return true;
1755 1755
1756} 1756}
1757bool CalendarView::importQtopia( const QString &categories, 1757bool CalendarView::importQtopia( const QString &categories,
1758 const QString &datebook, 1758 const QString &datebook,
1759 const QString &todolist ) 1759 const QString &todolist )
1760{ 1760{
1761 1761
1762 QtopiaFormat qtopiaFormat; 1762 QtopiaFormat qtopiaFormat;
1763 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1763 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1764 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1764 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1765 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1765 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1766 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1766 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1767 1767
1768 updateView(); 1768 updateView();
1769 return true; 1769 return true;
1770 1770
1771#if 0 1771#if 0
1772 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1772 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1773 mCurrentSyncDevice = "qtopia-XML"; 1773 mCurrentSyncDevice = "qtopia-XML";
1774 if ( mSyncManager->mAskForPreferences ) 1774 if ( mSyncManager->mAskForPreferences )
1775 edit_sync_options(); 1775 edit_sync_options();
1776 qApp->processEvents(); 1776 qApp->processEvents();
1777 CalendarLocal* calendar = new CalendarLocal(); 1777 CalendarLocal* calendar = new CalendarLocal();
1778 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1778 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1779 bool syncOK = false; 1779 bool syncOK = false;
1780 QtopiaFormat qtopiaFormat; 1780 QtopiaFormat qtopiaFormat;
1781 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1781 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1782 bool loadOk = true; 1782 bool loadOk = true;
1783 if ( !categories.isEmpty() ) 1783 if ( !categories.isEmpty() )
1784 loadOk = qtopiaFormat.load( calendar, categories ); 1784 loadOk = qtopiaFormat.load( calendar, categories );
1785 if ( loadOk && !datebook.isEmpty() ) 1785 if ( loadOk && !datebook.isEmpty() )
1786 loadOk = qtopiaFormat.load( calendar, datebook ); 1786 loadOk = qtopiaFormat.load( calendar, datebook );
1787 if ( loadOk && !todolist.isEmpty() ) 1787 if ( loadOk && !todolist.isEmpty() )
1788 loadOk = qtopiaFormat.load( calendar, todolist ); 1788 loadOk = qtopiaFormat.load( calendar, todolist );
1789 1789
1790 if ( loadOk ) { 1790 if ( loadOk ) {
1791 getEventViewerDialog()->setSyncMode( true ); 1791 getEventViewerDialog()->setSyncMode( true );
1792 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1792 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1793 getEventViewerDialog()->setSyncMode( false ); 1793 getEventViewerDialog()->setSyncMode( false );
1794 qApp->processEvents(); 1794 qApp->processEvents();
1795 if ( syncOK ) { 1795 if ( syncOK ) {
1796 if ( mSyncManager->mWriteBackFile ) 1796 if ( mSyncManager->mWriteBackFile )
1797 { 1797 {
1798 // write back XML file 1798 // write back XML file
1799 1799
1800 } 1800 }
1801 setModified( true ); 1801 setModified( true );
1802 } 1802 }
1803 } else { 1803 } else {
1804 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1804 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1805 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1805 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1806 question, i18n("Ok")) ; 1806 question, i18n("Ok")) ;
1807 } 1807 }
1808 delete calendar; 1808 delete calendar;
1809 updateView(); 1809 updateView();
1810 return syncOK; 1810 return syncOK;
1811 1811
1812 1812
1813#endif 1813#endif
1814 1814
1815} 1815}
1816 1816
1817void CalendarView::setSyncEventsReadOnly() 1817void CalendarView::setSyncEventsReadOnly()
1818{ 1818{
1819 Event * ev; 1819 Event * ev;
1820 QPtrList<Event> eL = mCalendar->rawEvents(); 1820 QPtrList<Event> eL = mCalendar->rawEvents();
1821 ev = eL.first(); 1821 ev = eL.first();
1822 while ( ev ) { 1822 while ( ev ) {
1823 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1823 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1824 ev->setReadOnly( true ); 1824 ev->setReadOnly( true );
1825 ev = eL.next(); 1825 ev = eL.next();
1826 } 1826 }
1827} 1827}
1828bool CalendarView::openCalendar(QString filename, bool merge) 1828bool CalendarView::openCalendar(QString filename, bool merge)
1829{ 1829{
1830 1830
1831 if (filename.isEmpty()) { 1831 if (filename.isEmpty()) {
1832 return false; 1832 return false;
1833 } 1833 }
1834 1834
1835 if (!QFile::exists(filename)) { 1835 if (!QFile::exists(filename)) {
1836 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1836 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1837 return false; 1837 return false;
1838 } 1838 }
1839 1839
1840 globalFlagBlockAgenda = 1; 1840 globalFlagBlockAgenda = 1;
1841 clearAllViews(); 1841 clearAllViews();
1842 if (!merge) { 1842 if (!merge) {
1843 mViewManager->setDocumentId( filename ); 1843 mViewManager->setDocumentId( filename );
1844 mCalendar->close(); 1844 mCalendar->close();
1845 } 1845 }
1846 mStorage->setFileName( filename ); 1846 mStorage->setFileName( filename );
1847 1847
1848 if ( mStorage->load() ) { 1848 if ( mStorage->load() ) {
1849 if ( merge ) ;//setModified( true ); 1849 if ( merge ) ;//setModified( true );
1850 else { 1850 else {
1851 //setModified( true ); 1851 //setModified( true );
1852 mViewManager->setDocumentId( filename ); 1852 mViewManager->setDocumentId( filename );
1853 mDialogManager->setDocumentId( filename ); 1853 mDialogManager->setDocumentId( filename );
1854 mTodoList->setDocumentId( filename ); 1854 mTodoList->setDocumentId( filename );
1855 } 1855 }
1856 globalFlagBlockAgenda = 2; 1856 globalFlagBlockAgenda = 2;
1857 // if ( getLastSyncEvent() ) 1857 // if ( getLastSyncEvent() )
1858 // getLastSyncEvent()->setReadOnly( true ); 1858 // getLastSyncEvent()->setReadOnly( true );
1859 mCalendar->reInitAlarmSettings(); 1859 mCalendar->reInitAlarmSettings();
1860 setSyncEventsReadOnly(); 1860 setSyncEventsReadOnly();
1861 updateUnmanagedViews(); 1861 updateUnmanagedViews();
1862 updateView(); 1862 updateView();
1863 if ( filename != MainWindow::defaultFileName() ) { 1863 if ( filename != MainWindow::defaultFileName() ) {
1864 saveCalendar( MainWindow::defaultFileName() ); 1864 saveCalendar( MainWindow::defaultFileName() );
1865 } else { 1865 } else {
1866 QFileInfo finf ( MainWindow::defaultFileName()); 1866 QFileInfo finf ( MainWindow::defaultFileName());
1867 if ( finf.exists() ) { 1867 if ( finf.exists() ) {
1868 setLoadedFileVersion( finf.lastModified () ); 1868 setLoadedFileVersion( finf.lastModified () );
1869 } 1869 }
1870 } 1870 }
1871 return true; 1871 return true;
1872 } else { 1872 } else {
1873 // while failing to load, the calendar object could 1873 // while failing to load, the calendar object could
1874 // have become partially populated. Clear it out. 1874 // have become partially populated. Clear it out.
1875 if ( !merge ) { 1875 if ( !merge ) {
1876 mCalendar->close(); 1876 mCalendar->close();
1877 mViewManager->setDocumentId( filename ); 1877 mViewManager->setDocumentId( filename );
1878 mDialogManager->setDocumentId( filename ); 1878 mDialogManager->setDocumentId( filename );
1879 mTodoList->setDocumentId( filename ); 1879 mTodoList->setDocumentId( filename );
1880 } 1880 }
1881 1881
1882 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1882 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1883 1883
1884 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1884 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1885 globalFlagBlockAgenda = 2; 1885 globalFlagBlockAgenda = 2;
1886 mCalendar->reInitAlarmSettings(); 1886 mCalendar->reInitAlarmSettings();
1887 setSyncEventsReadOnly(); 1887 setSyncEventsReadOnly();
1888 updateUnmanagedViews(); 1888 updateUnmanagedViews();
1889 updateView(); 1889 updateView();
1890 } 1890 }
1891 return false; 1891 return false;
1892} 1892}
1893void CalendarView::showOpenError() 1893void CalendarView::showOpenError()
1894{ 1894{
1895 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1895 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1896} 1896}
1897void CalendarView::setLoadedFileVersion(QDateTime dt) 1897void CalendarView::setLoadedFileVersion(QDateTime dt)
1898{ 1898{
1899 loadedFileVersion = dt; 1899 loadedFileVersion = dt;
1900} 1900}
1901bool CalendarView::checkFileChanged(QString fn) 1901bool CalendarView::checkFileChanged(QString fn)
1902{ 1902{
1903 QFileInfo finf ( fn ); 1903 QFileInfo finf ( fn );
1904 if ( !finf.exists() ) 1904 if ( !finf.exists() )
1905 return true; 1905 return true;
1906 QDateTime dt = finf.lastModified (); 1906 QDateTime dt = finf.lastModified ();
1907 if ( dt <= loadedFileVersion ) 1907 if ( dt <= loadedFileVersion )
1908 return false; 1908 return false;
1909 return true; 1909 return true;
1910 1910
1911} 1911}
1912void CalendarView::watchSavedFile() 1912void CalendarView::watchSavedFile()
1913{ 1913{
1914 QFileInfo finf ( MainWindow::defaultFileName()); 1914 QFileInfo finf ( MainWindow::defaultFileName());
1915 if ( !finf.exists() ) 1915 if ( !finf.exists() )
1916 return; 1916 return;
1917 QDateTime dt = finf.lastModified (); 1917 QDateTime dt = finf.lastModified ();
1918 if ( dt < loadedFileVersion ) { 1918 if ( dt < loadedFileVersion ) {
1919 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1919 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1920 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1920 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1921 return; 1921 return;
1922 } 1922 }
1923 loadedFileVersion = dt; 1923 loadedFileVersion = dt;
1924} 1924}
1925 1925
1926bool CalendarView::checkFileVersion(QString fn) 1926bool CalendarView::checkFileVersion(QString fn)
1927{ 1927{
1928 QFileInfo finf ( fn ); 1928 QFileInfo finf ( fn );
1929 if ( !finf.exists() ) 1929 if ( !finf.exists() )
1930 return true; 1930 return true;
1931 QDateTime dt = finf.lastModified (); 1931 QDateTime dt = finf.lastModified ();
1932 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1932 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1933 //qDebug("file on disk version %s",dt.toString().latin1()); 1933 //qDebug("file on disk version %s",dt.toString().latin1());
1934 if ( dt <= loadedFileVersion ) 1934 if ( dt <= loadedFileVersion )
1935 return true; 1935 return true;
1936 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1936 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1937 i18n("KO/Pi Warning"),i18n("Overwrite"), 1937 i18n("KO/Pi Warning"),i18n("Overwrite"),
1938 i18n("Sync+save")); 1938 i18n("Sync+save"));
1939 1939
1940 if ( km == KMessageBox::Cancel ) 1940 if ( km == KMessageBox::Cancel )
1941 return false; 1941 return false;
1942 if ( km == KMessageBox::Yes ) 1942 if ( km == KMessageBox::Yes )
1943 return true; 1943 return true;
1944 1944
1945 setSyncDevice("deleteaftersync" ); 1945 setSyncDevice("deleteaftersync" );
1946 mSyncManager->mAskForPreferences = true; 1946 mSyncManager->mAskForPreferences = true;
1947 mSyncManager->mSyncAlgoPrefs = 3; 1947 mSyncManager->mSyncAlgoPrefs = 3;
1948 mSyncManager->mWriteBackFile = false; 1948 mSyncManager->mWriteBackFile = false;
1949 mSyncManager->mWriteBackExistingOnly = false; 1949 mSyncManager->mWriteBackExistingOnly = false;
1950 mSyncManager->mShowSyncSummary = false; 1950 mSyncManager->mShowSyncSummary = false;
1951 syncCalendar( fn, 3 ); 1951 syncCalendar( fn, 3 );
1952 Event * e = getLastSyncEvent(); 1952 Event * e = getLastSyncEvent();
1953 if ( e ) 1953 if ( e )
1954 deleteEvent ( e ); 1954 deleteEvent ( e );
1955 updateView(); 1955 updateView();
1956 return true; 1956 return true;
1957} 1957}
1958 1958
1959bool CalendarView::saveCalendar( QString filename ) 1959bool CalendarView::saveCalendar( QString filename )
1960{ 1960{
1961 1961
1962 // Store back all unsaved data into calendar object 1962 // Store back all unsaved data into calendar object
1963 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1963 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1964 if ( mViewManager->currentView() ) 1964 if ( mViewManager->currentView() )
1965 mViewManager->currentView()->flushView(); 1965 mViewManager->currentView()->flushView();
1966 1966
1967 1967
1968 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 1968 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
1969 mStorage->setSaveFormat( new ICalFormat() ); 1969 mStorage->setSaveFormat( new ICalFormat() );
1970 mStorage->setFileName( filename ); 1970 mStorage->setFileName( filename );
1971 bool success; 1971 bool success;
1972 success = mStorage->save(); 1972 success = mStorage->save();
1973 if ( !success ) { 1973 if ( !success ) {
1974 return false; 1974 return false;
1975 } 1975 }
1976 if ( filename == MainWindow::defaultFileName() ) { 1976 if ( filename == MainWindow::defaultFileName() ) {
1977 setLoadedFileVersion( lfv ); 1977 setLoadedFileVersion( lfv );
1978 watchSavedFile(); 1978 watchSavedFile();
1979 } 1979 }
1980 return true; 1980 return true;
1981} 1981}
1982 1982
1983void CalendarView::closeCalendar() 1983void CalendarView::closeCalendar()
1984{ 1984{
1985 1985
1986 // child windows no longer valid 1986 // child windows no longer valid
1987 clearAllViews(); 1987 clearAllViews();
1988 emit closingDown(); 1988 emit closingDown();
1989 1989
1990 mCalendar->close(); 1990 mCalendar->close();
1991 setModified(false); 1991 setModified(false);
1992 updateView(); 1992 updateView();
1993} 1993}
1994 1994
1995void CalendarView::archiveCalendar() 1995void CalendarView::archiveCalendar()
1996{ 1996{
1997 mDialogManager->showArchiveDialog(); 1997 mDialogManager->showArchiveDialog();
1998} 1998}
1999 1999
2000 2000
2001void CalendarView::readSettings() 2001void CalendarView::readSettings()
2002{ 2002{
2003 2003
2004 2004
2005 // mViewManager->showAgendaView(); 2005 // mViewManager->showAgendaView();
2006 QString str; 2006 QString str;
2007 //qDebug("CalendarView::readSettings() "); 2007 //qDebug("CalendarView::readSettings() ");
2008 // read settings from the KConfig, supplying reasonable 2008 // read settings from the KConfig, supplying reasonable
2009 // defaults where none are to be found 2009 // defaults where none are to be found
2010 KConfig *config = KOGlobals::config(); 2010 KConfig *config = KOGlobals::config();
2011#ifndef KORG_NOSPLITTER 2011#ifndef KORG_NOSPLITTER
2012 config->setGroup("KOrganizer Geometry"); 2012 config->setGroup("KOrganizer Geometry");
2013 2013
2014 QValueList<int> sizes = config->readIntListEntry("Separator1"); 2014 QValueList<int> sizes = config->readIntListEntry("Separator1");
2015 if (sizes.count() != 2) { 2015 if (sizes.count() != 2) {
2016 sizes << mDateNavigator->minimumSizeHint().width(); 2016 sizes << mDateNavigator->minimumSizeHint().width();
2017 sizes << 300; 2017 sizes << 300;
2018 } 2018 }
2019 mPanner->setSizes(sizes); 2019 mPanner->setSizes(sizes);
2020 2020
2021 sizes = config->readIntListEntry("Separator2"); 2021 sizes = config->readIntListEntry("Separator2");
2022 if ( ( mResourceView && sizes.count() == 4 ) || 2022 if ( ( mResourceView && sizes.count() == 4 ) ||
2023 ( !mResourceView && sizes.count() == 3 ) ) { 2023 ( !mResourceView && sizes.count() == 3 ) ) {
2024 mLeftSplitter->setSizes(sizes); 2024 mLeftSplitter->setSizes(sizes);
2025 } 2025 }
2026#endif 2026#endif
2027 globalFlagBlockAgenda = 1; 2027 globalFlagBlockAgenda = 1;
2028 mViewManager->showAgendaView(); 2028 mViewManager->showAgendaView();
2029 //mViewManager->readSettings( config ); 2029 //mViewManager->readSettings( config );
2030 mTodoList->restoreLayout(config,QString("Todo Layout")); 2030 mTodoList->restoreLayout(config,QString("Todo Layout"));
2031 readFilterSettings(config); 2031 readFilterSettings(config);
2032 2032
2033#ifdef DESKTOP_VERSION 2033#ifdef DESKTOP_VERSION
2034 config->setGroup("WidgetLayout"); 2034 config->setGroup("WidgetLayout");
2035 QStringList list; 2035 QStringList list;
2036 list = config->readListEntry("MainLayout"); 2036 list = config->readListEntry("MainLayout");
2037 int x,y,w,h; 2037 int x,y,w,h;
2038 if ( ! list.isEmpty() ) { 2038 if ( ! list.isEmpty() ) {
2039 x = list[0].toInt(); 2039 x = list[0].toInt();
2040 y = list[1].toInt(); 2040 y = list[1].toInt();
2041 w = list[2].toInt(); 2041 w = list[2].toInt();
2042 h = list[3].toInt(); 2042 h = list[3].toInt();
2043 KApplication::testCoords( &x,&y,&w,&h ); 2043 KApplication::testCoords( &x,&y,&w,&h );
2044 topLevelWidget()->setGeometry(x,y,w,h); 2044 topLevelWidget()->setGeometry(x,y,w,h);
2045 2045
2046 } else { 2046 } else {
2047 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 2047 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
2048 } 2048 }
2049 list = config->readListEntry("EditEventLayout"); 2049 list = config->readListEntry("EditEventLayout");
2050 if ( ! list.isEmpty() ) { 2050 if ( ! list.isEmpty() ) {
2051 x = list[0].toInt(); 2051 x = list[0].toInt();
2052 y = list[1].toInt(); 2052 y = list[1].toInt();
2053 w = list[2].toInt(); 2053 w = list[2].toInt();
2054 h = list[3].toInt(); 2054 h = list[3].toInt();
2055 KApplication::testCoords( &x,&y,&w,&h ); 2055 KApplication::testCoords( &x,&y,&w,&h );
2056 mEventEditor->setGeometry(x,y,w,h); 2056 mEventEditor->setGeometry(x,y,w,h);
2057 2057
2058 } 2058 }
2059 list = config->readListEntry("EditTodoLayout"); 2059 list = config->readListEntry("EditTodoLayout");
2060 if ( ! list.isEmpty() ) { 2060 if ( ! list.isEmpty() ) {
2061 x = list[0].toInt(); 2061 x = list[0].toInt();
2062 y = list[1].toInt(); 2062 y = list[1].toInt();
2063 w = list[2].toInt(); 2063 w = list[2].toInt();
2064 h = list[3].toInt(); 2064 h = list[3].toInt();
2065 KApplication::testCoords( &x,&y,&w,&h ); 2065 KApplication::testCoords( &x,&y,&w,&h );
2066 mTodoEditor->setGeometry(x,y,w,h); 2066 mTodoEditor->setGeometry(x,y,w,h);
2067 2067
2068 } 2068 }
2069 list = config->readListEntry("ViewerLayout"); 2069 list = config->readListEntry("ViewerLayout");
2070 if ( ! list.isEmpty() ) { 2070 if ( ! list.isEmpty() ) {
2071 x = list[0].toInt(); 2071 x = list[0].toInt();
2072 y = list[1].toInt(); 2072 y = list[1].toInt();
2073 w = list[2].toInt(); 2073 w = list[2].toInt();
2074 h = list[3].toInt(); 2074 h = list[3].toInt();
2075 KApplication::testCoords( &x,&y,&w,&h ); 2075 KApplication::testCoords( &x,&y,&w,&h );
2076 getEventViewerDialog()->setGeometry(x,y,w,h); 2076 getEventViewerDialog()->setGeometry(x,y,w,h);
2077 } 2077 }
2078#endif 2078#endif
2079 config->setGroup( "Views" ); 2079 config->setGroup( "Views" );
2080 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 2080 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
2081 2081
2082 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame"); 2082 QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
2083 2083
2084 int resetval = 0; 2084 int resetval = 0;
2085 int maxVal = 0; 2085 int maxVal = 0;
2086 if (sizes.count() != 3) { 2086 if (sizes.count() != 3) {
2087 if ( KOPrefs::instance()->mVerticalScreen ) { 2087 if ( KOPrefs::instance()->mVerticalScreen ) {
2088 resetval = mDateNavigator->sizeHint().width()+2; 2088 resetval = mDateNavigator->sizeHint().width()+2;
2089 } else { 2089 } else {
2090 resetval = mDateNavigator->sizeHint().height()+2; 2090 resetval = mDateNavigator->sizeHint().height()+2;
2091 } 2091 }
2092 } 2092 }
2093 if ( resetval ) { 2093 if ( resetval ) {
2094 sizes.clear(); 2094 sizes.clear();
2095 if ( KOPrefs::instance()->mVerticalScreen ) { 2095 if ( KOPrefs::instance()->mVerticalScreen ) {
2096 maxVal = QApplication::desktop()->width() -10; 2096 maxVal = QApplication::desktop()->width() -10;
2097 } else { 2097 } else {
2098 maxVal = QApplication::desktop()->height()-10; 2098 maxVal = QApplication::desktop()->height()-10;
2099 } 2099 }
2100 sizes << resetval; 2100 sizes << resetval;
2101 if ( maxVal < resetval + resetval) 2101 if ( maxVal < resetval + resetval)
2102 resetval = maxVal - resetval; 2102 resetval = maxVal - resetval;
2103 sizes << resetval; 2103 sizes << resetval;
2104 sizes << 100; 2104 sizes << 100;
2105 } 2105 }
2106 mLeftFrame->setSizes(sizes); 2106 mLeftFrame->setSizes(sizes);
2107 sizes = config->readIntListEntry("Main Splitter Frame"); 2107 sizes = config->readIntListEntry("Main Splitter Frame");
2108 resetval = 0; 2108 resetval = 0;
2109 maxVal = 0; 2109 maxVal = 0;
2110 if (sizes.count() != 2) { 2110 if (sizes.count() != 2) {
2111 if ( !KOPrefs::instance()->mVerticalScreen ) { 2111 if ( !KOPrefs::instance()->mVerticalScreen ) {
2112 resetval = mDateNavigator->sizeHint().width()+2; 2112 resetval = mDateNavigator->sizeHint().width()+2;
2113 } else { 2113 } else {
2114 resetval = mDateNavigator->sizeHint().height()+2; 2114 resetval = mDateNavigator->sizeHint().height()+2;
2115 } 2115 }
2116 } 2116 }
2117 if ( resetval ) { 2117 if ( resetval ) {
2118 sizes.clear(); 2118 sizes.clear();
2119 if ( !KOPrefs::instance()->mVerticalScreen ) { 2119 if ( !KOPrefs::instance()->mVerticalScreen ) {
2120 maxVal = QApplication::desktop()->width() -10; 2120 maxVal = QApplication::desktop()->width() -10;
2121 } else { 2121 } else {
2122 maxVal = QApplication::desktop()->height()-10; 2122 maxVal = QApplication::desktop()->height()-10;
2123 } 2123 }
2124 sizes << resetval; 2124 sizes << resetval;
2125 if ( maxVal < resetval + resetval) 2125 if ( maxVal < resetval + resetval)
2126 resetval = maxVal - resetval; 2126 resetval = maxVal - resetval;
2127 sizes << resetval; 2127 sizes << resetval;
2128 } 2128 }
2129 mMainFrame->setSizes(sizes); 2129 mMainFrame->setSizes(sizes);
2130 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 2130 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
2131 else if ( dateCount == 7 ) mNavigator->selectWeek(); 2131 else if ( dateCount == 7 ) mNavigator->selectWeek();
2132 else mNavigator->selectDates( dateCount ); 2132 else mNavigator->selectDates( dateCount );
2133 // mViewManager->readSettings( config ); 2133 // mViewManager->readSettings( config );
2134 updateConfig(); 2134 updateConfig();
2135 globalFlagBlockAgenda = 2; 2135 globalFlagBlockAgenda = 2;
2136 mViewManager->readSettings( config ); 2136 mViewManager->readSettings( config );
2137 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); 2137 QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) );
2138} 2138}
2139 2139
2140 2140
2141void CalendarView::writeSettings() 2141void CalendarView::writeSettings()
2142{ 2142{
2143 // kdDebug() << "CalendarView::writeSettings" << endl; 2143 // kdDebug() << "CalendarView::writeSettings" << endl;
2144 2144
2145 KConfig *config = KOGlobals::config(); 2145 KConfig *config = KOGlobals::config();
2146 2146
2147 mViewManager->writeSettings( config ); 2147 mViewManager->writeSettings( config );
2148 mTodoList->saveLayout(config,QString("Todo Layout")); 2148 mTodoList->saveLayout(config,QString("Todo Layout"));
2149 mDialogManager->writeSettings( config ); 2149 mDialogManager->writeSettings( config );
2150 //KOPrefs::instance()->usrWriteConfig(); 2150 //KOPrefs::instance()->usrWriteConfig();
2151 KOPrefs::instance()->writeConfig(); 2151 KOPrefs::instance()->writeConfig();
2152 2152
2153 writeFilterSettings(config); 2153 writeFilterSettings(config);
2154 config->setGroup( "AppRun" ); 2154 config->setGroup( "AppRun" );
2155 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 2155 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
2156 config->writeEntry( "LatestProgramStop", dt.secsTo( QDateTime::currentDateTime() ) ); 2156 config->writeEntry( "LatestProgramStop", dt.secsTo( QDateTime::currentDateTime() ) );
2157 config->setGroup( "Views" ); 2157 config->setGroup( "Views" );
2158 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 2158 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
2159 2159
2160 QValueList<int> listINT = mLeftFrame->sizes(); 2160 QValueList<int> listINT = mLeftFrame->sizes();
2161 config->writeEntry("Left Splitter Frame",listINT); 2161 config->writeEntry("Left Splitter Frame",listINT);
2162 QValueList<int> listINT2 = mMainFrame->sizes(); 2162 QValueList<int> listINT2 = mMainFrame->sizes();
2163 config->writeEntry("Main Splitter Frame",listINT2); 2163 config->writeEntry("Main Splitter Frame",listINT2);
2164#ifdef DESKTOP_VERSION 2164#ifdef DESKTOP_VERSION
2165 config->setGroup("WidgetLayout"); 2165 config->setGroup("WidgetLayout");
2166 QStringList list ;//= config->readListEntry("MainLayout"); 2166 QStringList list ;//= config->readListEntry("MainLayout");
2167 int x,y,w,h; 2167 int x,y,w,h;
2168 QWidget* wid; 2168 QWidget* wid;
2169 wid = topLevelWidget(); 2169 wid = topLevelWidget();
2170 x = wid->geometry().x(); 2170 x = wid->geometry().x();
2171 y = wid->geometry().y(); 2171 y = wid->geometry().y();
2172 w = wid->width(); 2172 w = wid->width();
2173 h = wid->height(); 2173 h = wid->height();
2174 list.clear(); 2174 list.clear();
2175 list << QString::number( x ); 2175 list << QString::number( x );
2176 list << QString::number( y ); 2176 list << QString::number( y );
2177 list << QString::number( w ); 2177 list << QString::number( w );
2178 list << QString::number( h ); 2178 list << QString::number( h );
2179 config->writeEntry("MainLayout",list ); 2179 config->writeEntry("MainLayout",list );
2180 2180
2181 wid = mEventEditor; 2181 wid = mEventEditor;
2182 x = wid->geometry().x(); 2182 x = wid->geometry().x();
2183 y = wid->geometry().y(); 2183 y = wid->geometry().y();
2184 w = wid->width(); 2184 w = wid->width();
2185 h = wid->height(); 2185 h = wid->height();
2186 list.clear(); 2186 list.clear();
2187 list << QString::number( x ); 2187 list << QString::number( x );
2188 list << QString::number( y ); 2188 list << QString::number( y );
2189 list << QString::number( w ); 2189 list << QString::number( w );
2190 list << QString::number( h ); 2190 list << QString::number( h );
2191 config->writeEntry("EditEventLayout",list ); 2191 config->writeEntry("EditEventLayout",list );
2192 2192
2193 wid = mTodoEditor; 2193 wid = mTodoEditor;
2194 x = wid->geometry().x(); 2194 x = wid->geometry().x();
2195 y = wid->geometry().y(); 2195 y = wid->geometry().y();
2196 w = wid->width(); 2196 w = wid->width();
2197 h = wid->height(); 2197 h = wid->height();
2198 list.clear(); 2198 list.clear();
2199 list << QString::number( x ); 2199 list << QString::number( x );
2200 list << QString::number( y ); 2200 list << QString::number( y );
2201 list << QString::number( w ); 2201 list << QString::number( w );
2202 list << QString::number( h ); 2202 list << QString::number( h );
2203 config->writeEntry("EditTodoLayout",list ); 2203 config->writeEntry("EditTodoLayout",list );
2204 wid = getEventViewerDialog(); 2204 wid = getEventViewerDialog();
2205 x = wid->geometry().x(); 2205 x = wid->geometry().x();
2206 y = wid->geometry().y(); 2206 y = wid->geometry().y();
2207 w = wid->width(); 2207 w = wid->width();
2208 h = wid->height(); 2208 h = wid->height();
2209 list.clear(); 2209 list.clear();
2210 list << QString::number( x ); 2210 list << QString::number( x );
2211 list << QString::number( y ); 2211 list << QString::number( y );
2212 list << QString::number( w ); 2212 list << QString::number( w );
2213 list << QString::number( h ); 2213 list << QString::number( h );
2214 config->writeEntry("ViewerLayout",list ); 2214 config->writeEntry("ViewerLayout",list );
2215 wid = mDialogManager->getSearchDialog(); 2215 wid = mDialogManager->getSearchDialog();
2216 if ( wid ) { 2216 if ( wid ) {
2217 x = wid->geometry().x(); 2217 x = wid->geometry().x();
2218 y = wid->geometry().y(); 2218 y = wid->geometry().y();
2219 w = wid->width(); 2219 w = wid->width();
2220 h = wid->height(); 2220 h = wid->height();
2221 list.clear(); 2221 list.clear();
2222 list << QString::number( x ); 2222 list << QString::number( x );
2223 list << QString::number( y ); 2223 list << QString::number( y );
2224 list << QString::number( w ); 2224 list << QString::number( w );
2225 list << QString::number( h ); 2225 list << QString::number( h );
2226 config->writeEntry("SearchLayout",list ); 2226 config->writeEntry("SearchLayout",list );
2227 } 2227 }
2228#endif 2228#endif
2229 2229
2230 2230
2231 config->sync(); 2231 config->sync();
2232} 2232}
2233 2233
2234void CalendarView::readFilterSettings(KConfig *config) 2234void CalendarView::readFilterSettings(KConfig *config)
2235{ 2235{
2236 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 2236 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
2237 2237
2238 mFilters.clear(); 2238 mFilters.clear();
2239 2239
2240 config->setGroup("General"); 2240 config->setGroup("General");
2241 QStringList filterList = config->readListEntry("CalendarFilters"); 2241 QStringList filterList = config->readListEntry("CalendarFilters");
2242 2242
2243 QStringList::ConstIterator it = filterList.begin(); 2243 QStringList::ConstIterator it = filterList.begin();
2244 QStringList::ConstIterator end = filterList.end(); 2244 QStringList::ConstIterator end = filterList.end();
2245 while(it != end) { 2245 while(it != end) {
2246 // kdDebug() << " filter: " << (*it) << endl; 2246 // kdDebug() << " filter: " << (*it) << endl;
2247 2247
2248 CalFilter *filter; 2248 CalFilter *filter;
2249 filter = new CalFilter(*it); 2249 filter = new CalFilter(*it);
2250 config->setGroup("Filter_" + (*it).utf8()); 2250 config->setGroup("Filter_" + (*it).utf8());
2251 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 2251 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
2252 filter->setCriteria(config->readNumEntry("Criteria",0)); 2252 filter->setCriteria(config->readNumEntry("Criteria",0));
2253 filter->setCategoryList(config->readListEntry("CategoryList")); 2253 filter->setCategoryList(config->readListEntry("CategoryList"));
2254 mFilters.append(filter); 2254 mFilters.append(filter);
2255 2255
2256 ++it; 2256 ++it;
2257 } 2257 }
2258 2258
2259 if (mFilters.count() == 0) { 2259 if (mFilters.count() == 0) {
2260 CalFilter *filter = new CalFilter(i18n("Default")); 2260 CalFilter *filter = new CalFilter(i18n("Default"));
2261 mFilters.append(filter); 2261 mFilters.append(filter);
2262 } 2262 }
2263 mFilterView->updateFilters(); 2263 mFilterView->updateFilters();
2264 config->setGroup("FilterView"); 2264 config->setGroup("FilterView");
2265 2265
2266 mFilterView->blockSignals(true); 2266 mFilterView->blockSignals(true);
2267 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 2267 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
2268 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 2268 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
2269 mFilterView->blockSignals(false); 2269 mFilterView->blockSignals(false);
2270 // We do it manually to avoid it being done twice by the above calls 2270 // We do it manually to avoid it being done twice by the above calls
2271 updateFilter(); 2271 updateFilter();
2272} 2272}
2273 2273
2274void CalendarView::writeFilterSettings(KConfig *config) 2274void CalendarView::writeFilterSettings(KConfig *config)
2275{ 2275{
2276 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 2276 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
2277 2277
2278 QStringList filterList; 2278 QStringList filterList;
2279 2279
2280 CalFilter *filter = mFilters.first(); 2280 CalFilter *filter = mFilters.first();
2281 while(filter) { 2281 while(filter) {
2282 // kdDebug() << " fn: " << filter->name() << endl; 2282 // kdDebug() << " fn: " << filter->name() << endl;
2283 filterList << filter->name(); 2283 filterList << filter->name();
2284 config->setGroup("Filter_" + filter->name().utf8()); 2284 config->setGroup("Filter_" + filter->name().utf8());
2285 config->writeEntry("Criteria",filter->criteria()); 2285 config->writeEntry("Criteria",filter->criteria());
2286 config->writeEntry("CategoryList",filter->categoryList()); 2286 config->writeEntry("CategoryList",filter->categoryList());
2287 filter = mFilters.next(); 2287 filter = mFilters.next();
2288 } 2288 }
2289 config->setGroup("General"); 2289 config->setGroup("General");
2290 config->writeEntry("CalendarFilters",filterList); 2290 config->writeEntry("CalendarFilters",filterList);
2291 2291
2292 config->setGroup("FilterView"); 2292 config->setGroup("FilterView");
2293 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 2293 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
2294 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 2294 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
2295} 2295}
2296 2296
2297 2297
2298void CalendarView::goToday() 2298void CalendarView::goToday()
2299{ 2299{
2300 if ( mViewManager->currentView()->isMonthView() ) 2300 if ( mViewManager->currentView()->isMonthView() )
2301 mNavigator->selectTodayMonth(); 2301 mNavigator->selectTodayMonth();
2302 else 2302 else
2303 mNavigator->selectToday(); 2303 mNavigator->selectToday();
2304} 2304}
2305 2305
2306void CalendarView::goNext() 2306void CalendarView::goNext()
2307{ 2307{
2308 mNavigator->selectNext(); 2308 mNavigator->selectNext();
2309} 2309}
2310 2310
2311void CalendarView::goPrevious() 2311void CalendarView::goPrevious()
2312{ 2312{
2313 mNavigator->selectPrevious(); 2313 mNavigator->selectPrevious();
2314} 2314}
2315void CalendarView::goNextMonth() 2315void CalendarView::goNextMonth()
2316{ 2316{
2317 mNavigator->selectNextMonth(); 2317 mNavigator->selectNextMonth();
2318} 2318}
2319 2319
2320void CalendarView::goPreviousMonth() 2320void CalendarView::goPreviousMonth()
2321{ 2321{
2322 mNavigator->selectPreviousMonth(); 2322 mNavigator->selectPreviousMonth();
2323} 2323}
2324void CalendarView::writeLocale() 2324void CalendarView::writeLocale()
2325{ 2325{
2326 //KPimGlobalPrefs::instance()->setGlobalConfig(); 2326 //KPimGlobalPrefs::instance()->setGlobalConfig();
2327#if 0 2327#if 0
2328 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 2328 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
2329 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 2329 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
2330 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 2330 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
2331 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 2331 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
2332 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 2332 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
2333 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 2333 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
2334 dummy = KOPrefs::instance()->mUserDateFormatShort; 2334 dummy = KOPrefs::instance()->mUserDateFormatShort;
2335 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 2335 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
2336 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 2336 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
2337 KOPrefs::instance()->mDaylightsavingStart, 2337 KOPrefs::instance()->mDaylightsavingStart,
2338 KOPrefs::instance()->mDaylightsavingEnd ); 2338 KOPrefs::instance()->mDaylightsavingEnd );
2339 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId ); 2339 KGlobal::locale()->setTimezone( KPimGlobalPrefs::instance()->mTimeZoneId );
2340#endif 2340#endif
2341} 2341}
2342void CalendarView::updateConfig() 2342void CalendarView::updateConfig()
2343{ 2343{
2344 writeLocale(); 2344 writeLocale();
2345 if ( KOPrefs::instance()->mUseAppColors ) 2345 if ( KOPrefs::instance()->mUseAppColors )
2346 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2346 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2347 emit configChanged(); 2347 emit configChanged();
2348 mTodoList->updateConfig(); 2348 mTodoList->updateConfig();
2349 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2349 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2350 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2350 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2351 // To make the "fill window" configurations work 2351 // To make the "fill window" configurations work
2352 //mViewManager->raiseCurrentView(); 2352 //mViewManager->raiseCurrentView();
2353} 2353}
2354 2354
2355 2355
2356void CalendarView::eventChanged(Event *event) 2356void CalendarView::eventChanged(Event *event)
2357{ 2357{
2358 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2358 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2359 //updateUnmanagedViews(); 2359 //updateUnmanagedViews();
2360} 2360}
2361 2361
2362void CalendarView::eventAdded(Event *event) 2362void CalendarView::eventAdded(Event *event)
2363{ 2363{
2364 changeEventDisplay(event,KOGlobals::EVENTADDED); 2364 changeEventDisplay(event,KOGlobals::EVENTADDED);
2365} 2365}
2366 2366
2367void CalendarView::eventToBeDeleted(Event *) 2367void CalendarView::eventToBeDeleted(Event *)
2368{ 2368{
2369 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2369 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2370} 2370}
2371 2371
2372void CalendarView::eventDeleted() 2372void CalendarView::eventDeleted()
2373{ 2373{
2374 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2374 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2375} 2375}
2376void CalendarView::changeTodoDisplay(Todo *which, int action) 2376void CalendarView::changeTodoDisplay(Todo *which, int action)
2377{ 2377{
2378 changeIncidenceDisplay((Incidence *)which, action); 2378 changeIncidenceDisplay((Incidence *)which, action);
2379 mDateNavigator->updateView(); //LR 2379 mDateNavigator->updateView(); //LR
2380 //mDialogManager->updateSearchDialog(); 2380 //mDialogManager->updateSearchDialog();
2381 2381
2382 if (which) { 2382 if (which) {
2383 mViewManager->updateWNview(); 2383 mViewManager->updateWNview();
2384 //mTodoList->updateView(); 2384 //mTodoList->updateView();
2385 } 2385 }
2386 2386
2387} 2387}
2388 2388
2389void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2389void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2390{ 2390{
2391 updateUnmanagedViews(); 2391 updateUnmanagedViews();
2392 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2392 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2393 if ( action == KOGlobals::EVENTDELETED ) { //delete 2393 if ( action == KOGlobals::EVENTDELETED ) { //delete
2394 mCalendar->checkAlarmForIncidence( 0, true ); 2394 mCalendar->checkAlarmForIncidence( 0, true );
2395 if ( mEventViewerDialog ) 2395 if ( mEventViewerDialog )
2396 mEventViewerDialog->hide(); 2396 mEventViewerDialog->hide();
2397 } 2397 }
2398 else 2398 else
2399 mCalendar->checkAlarmForIncidence( which , false ); 2399 mCalendar->checkAlarmForIncidence( which , false );
2400} 2400}
2401 2401
2402// most of the changeEventDisplays() right now just call the view's 2402// most of the changeEventDisplays() right now just call the view's
2403// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2403// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2404void CalendarView::changeEventDisplay(Event *which, int action) 2404void CalendarView::changeEventDisplay(Event *which, int action)
2405{ 2405{
2406 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2406 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2407 changeIncidenceDisplay((Incidence *)which, action); 2407 changeIncidenceDisplay((Incidence *)which, action);
2408 mDateNavigator->updateView(); 2408 mDateNavigator->updateView();
2409 //mDialogManager->updateSearchDialog(); 2409 //mDialogManager->updateSearchDialog();
2410 2410
2411 if (which) { 2411 if (which) {
2412 // If there is an event view visible update the display 2412 // If there is an event view visible update the display
2413 mViewManager->currentView()->changeEventDisplay(which,action); 2413 mViewManager->currentView()->changeEventDisplay(which,action);
2414 // TODO: check, if update needed 2414 // TODO: check, if update needed
2415 // if (which->getTodoStatus()) { 2415 // if (which->getTodoStatus()) {
2416 mTodoList->updateView(); 2416 mTodoList->updateView();
2417 // } 2417 // }
2418 } else { 2418 } else {
2419 mViewManager->currentView()->updateView(); 2419 mViewManager->currentView()->updateView();
2420 } 2420 }
2421} 2421}
2422 2422
2423 2423
2424void CalendarView::updateTodoViews() 2424void CalendarView::updateTodoViews()
2425{ 2425{
2426 mTodoList->updateView(); 2426 mTodoList->updateView();
2427 mViewManager->currentView()->updateView(); 2427 mViewManager->currentView()->updateView();
2428 2428
2429} 2429}
2430 2430
2431 2431
2432void CalendarView::updateView(const QDate &start, const QDate &end) 2432void CalendarView::updateView(const QDate &start, const QDate &end)
2433{ 2433{
2434 mTodoList->updateView(); 2434 mTodoList->updateView();
2435 mViewManager->updateView(start, end); 2435 mViewManager->updateView(start, end);
2436 //mDateNavigator->updateView(); 2436 //mDateNavigator->updateView();
2437} 2437}
2438 2438
2439void CalendarView::clearAllViews() 2439void CalendarView::clearAllViews()
2440{ 2440{
2441 mTodoList->clearList(); 2441 mTodoList->clearList();
2442 mViewManager->clearAllViews(); 2442 mViewManager->clearAllViews();
2443 SearchDialog * sd = mDialogManager->getSearchDialog(); 2443 SearchDialog * sd = mDialogManager->getSearchDialog();
2444 if ( sd ) { 2444 if ( sd ) {
2445 KOListView* kol = sd->listview(); 2445 KOListView* kol = sd->listview();
2446 if ( kol ) 2446 if ( kol )
2447 kol->clearList(); 2447 kol->clearList();
2448 } 2448 }
2449} 2449}
2450void CalendarView::updateView() 2450void CalendarView::updateView()
2451{ 2451{
2452 DateList tmpList = mNavigator->selectedDates(); 2452 DateList tmpList = mNavigator->selectedDates();
2453 2453
2454 if ( KOPrefs::instance()->mHideNonStartedTodos ) 2454 if ( KOPrefs::instance()->mHideNonStartedTodos )
2455 mTodoList->updateView(); 2455 mTodoList->updateView();
2456 // We assume that the navigator only selects consecutive days. 2456 // We assume that the navigator only selects consecutive days.
2457 updateView( tmpList.first(), tmpList.last() ); 2457 updateView( tmpList.first(), tmpList.last() );
2458} 2458}
2459 2459
2460void CalendarView::updateUnmanagedViews() 2460void CalendarView::updateUnmanagedViews()
2461{ 2461{
2462 mDateNavigator->updateDayMatrix(); 2462 mDateNavigator->updateDayMatrix();
2463} 2463}
2464 2464
2465int CalendarView::msgItemDelete(const QString name) 2465int CalendarView::msgItemDelete(const QString name)
2466{ 2466{
2467 return KMessageBox::warningContinueCancel(this,name +"\n\n"+ 2467 return KMessageBox::warningContinueCancel(this,name +"\n\n"+
2468 i18n("This item will be\npermanently deleted."), 2468 i18n("This item will be\npermanently deleted."),
2469 i18n("KO/Pi Confirmation"),i18n("Delete")); 2469 i18n("KO/Pi Confirmation"),i18n("Delete"));
2470} 2470}
2471 2471
2472 2472
2473void CalendarView::edit_cut() 2473void CalendarView::edit_cut()
2474{ 2474{
2475 Event *anEvent=0; 2475 Event *anEvent=0;
2476 2476
2477 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2477 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2478 2478
2479 if (mViewManager->currentView()->isEventView()) { 2479 if (mViewManager->currentView()->isEventView()) {
2480 if ( incidence && incidence->typeID() == eventID ) { 2480 if ( incidence && incidence->typeID() == eventID ) {
2481 anEvent = static_cast<Event *>(incidence); 2481 anEvent = static_cast<Event *>(incidence);
2482 } 2482 }
2483 } 2483 }
2484 2484
2485 if (!anEvent) { 2485 if (!anEvent) {
2486 KNotifyClient::beep(); 2486 KNotifyClient::beep();
2487 return; 2487 return;
2488 } 2488 }
2489 DndFactory factory( mCalendar ); 2489 DndFactory factory( mCalendar );
2490 factory.cutIncidence(anEvent); 2490 factory.cutIncidence(anEvent);
2491 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2491 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2492} 2492}
2493 2493
2494void CalendarView::edit_copy() 2494void CalendarView::edit_copy()
2495{ 2495{
2496 Event *anEvent=0; 2496 Event *anEvent=0;
2497 2497
2498 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2498 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2499 2499
2500 if (mViewManager->currentView()->isEventView()) { 2500 if (mViewManager->currentView()->isEventView()) {
2501 if ( incidence && incidence->typeID() == eventID ) { 2501 if ( incidence && incidence->typeID() == eventID ) {
2502 anEvent = static_cast<Event *>(incidence); 2502 anEvent = static_cast<Event *>(incidence);
2503 } 2503 }
2504 } 2504 }
2505 2505
2506 if (!anEvent) { 2506 if (!anEvent) {
2507 KNotifyClient::beep(); 2507 KNotifyClient::beep();
2508 return; 2508 return;
2509 } 2509 }
2510 DndFactory factory( mCalendar ); 2510 DndFactory factory( mCalendar );
2511 factory.copyIncidence(anEvent); 2511 factory.copyIncidence(anEvent);
2512} 2512}
2513 2513
2514void CalendarView::edit_paste() 2514void CalendarView::edit_paste()
2515{ 2515{
2516 QDate date = mNavigator->selectedDates().first(); 2516 QDate date = mNavigator->selectedDates().first();
2517 2517
2518 DndFactory factory( mCalendar ); 2518 DndFactory factory( mCalendar );
2519 Event *pastedEvent = (Event *)factory.pasteIncidence( date ); 2519 Event *pastedEvent = (Event *)factory.pasteIncidence( date );
2520 2520
2521 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2521 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2522} 2522}
2523void CalendarView::edit_global_options() 2523void CalendarView::edit_global_options()
2524{ 2524{
2525 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId; 2525 QString tz = KPimGlobalPrefs::instance()->mTimeZoneId;
2526 emit save(); 2526 emit save();
2527 emit saveStopTimer(); 2527 emit saveStopTimer();
2528 mDialogManager->showGlobalOptionsDialog(); 2528 mDialogManager->showGlobalOptionsDialog();
2529 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) { 2529 if ( tz != KPimGlobalPrefs::instance()->mTimeZoneId) {
2530 emit saveStopTimer(); 2530 emit saveStopTimer();
2531 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"), 2531 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, i18n("The timezone has changed!\nShould the calendar be reloaded\nto apply timezone changes?\nPlease read Menu: Help->FAQ:\n\"How do I change the timezone?\"\nas well!"),
2532 i18n("Timezone settings"),i18n("Reload"))) { 2532 i18n("Timezone settings"),i18n("Reload"))) {
2533 qDebug("KO: TZ reload cancelled "); 2533 qDebug("KO: TZ reload cancelled ");
2534 mCalendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2534 return; 2535 return;
2535 } 2536 }
2536 qDebug("KO: Timezone change "); 2537 qDebug("KO: Timezone change ");
2537 openCalendar( MainWindow::defaultFileName() ); 2538 openCalendar( MainWindow::defaultFileName() );
2538 setModified(true); 2539 setModified(true);
2539 } 2540 }
2540 else 2541 else
2541 qDebug("KO: No tz change "); 2542 qDebug("KO: No tz change ");
2542} 2543}
2543void CalendarView::edit_options() 2544void CalendarView::edit_options()
2544{ 2545{
2545 mDialogManager->showOptionsDialog(); 2546 mDialogManager->showOptionsDialog();
2546} 2547}
2547 2548
2548 2549
2549void CalendarView::slotSelectPickerDate( QDate d) 2550void CalendarView::slotSelectPickerDate( QDate d)
2550{ 2551{
2551 mDateFrame->hide(); 2552 mDateFrame->hide();
2552 if ( mDatePickerMode == 1 ) { 2553 if ( mDatePickerMode == 1 ) {
2553 mNavigator->slotDaySelect( d ); 2554 mNavigator->slotDaySelect( d );
2554 } else if ( mDatePickerMode == 2 ) { 2555 } else if ( mDatePickerMode == 2 ) {
2555 if ( mMoveIncidence->typeID() == todoID ) { 2556 if ( mMoveIncidence->typeID() == todoID ) {
2556 Todo * to = (Todo *) mMoveIncidence; 2557 Todo * to = (Todo *) mMoveIncidence;
2557 QTime tim; 2558 QTime tim;
2558 int len = 0; 2559 int len = 0;
2559 if ( to->hasStartDate() && to->hasDueDate() ) 2560 if ( to->hasStartDate() && to->hasDueDate() )
2560 len = to->dtStart().secsTo( to->dtDue()); 2561 len = to->dtStart().secsTo( to->dtDue());
2561 if ( to->hasDueDate() ) 2562 if ( to->hasDueDate() )
2562 tim = to->dtDue().time(); 2563 tim = to->dtDue().time();
2563 else { 2564 else {
2564 tim = QTime ( 0,0,0 ); 2565 tim = QTime ( 0,0,0 );
2565 to->setFloats( true ); 2566 to->setFloats( true );
2566 to->setHasDueDate( true ); 2567 to->setHasDueDate( true );
2567 } 2568 }
2568 QDateTime dt ( d,tim ); 2569 QDateTime dt ( d,tim );
2569 to->setDtDue( dt ); 2570 to->setDtDue( dt );
2570 2571
2571 if ( to->hasStartDate() ) { 2572 if ( to->hasStartDate() ) {
2572 if ( len>0 ) 2573 if ( len>0 )
2573 to->setDtStart(to->dtDue().addSecs( -len )); 2574 to->setDtStart(to->dtDue().addSecs( -len ));
2574 else 2575 else
2575 if (to->dtStart() > to->dtDue() ) 2576 if (to->dtStart() > to->dtDue() )
2576 to->setDtStart(to->dtDue().addDays( -3 )); 2577 to->setDtStart(to->dtDue().addDays( -3 ));
2577 } 2578 }
2578 2579
2579 todoChanged( to ); 2580 todoChanged( to );
2580 } else { 2581 } else {
2581 if ( mMoveIncidence->doesRecur() ) { 2582 if ( mMoveIncidence->doesRecur() ) {
2582#if 0 2583#if 0
2583 // PENDING implement this 2584 // PENDING implement this
2584 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); 2585 Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate );
2585 mCalendar()->addIncidence( newInc ); 2586 mCalendar()->addIncidence( newInc );
2586 if ( mMoveIncidence->typeID() == todoID ) 2587 if ( mMoveIncidence->typeID() == todoID )
2587 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); 2588 emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED );
2588 else 2589 else
2589 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); 2590 emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED);
2590 mMoveIncidence = newInc; 2591 mMoveIncidence = newInc;
2591 2592
2592#endif 2593#endif
2593 } 2594 }
2594 QTime tim = mMoveIncidence->dtStart().time(); 2595 QTime tim = mMoveIncidence->dtStart().time();
2595 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2596 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2596 QDateTime dt ( d,tim ); 2597 QDateTime dt ( d,tim );
2597 mMoveIncidence->setDtStart( dt ); 2598 mMoveIncidence->setDtStart( dt );
2598 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2599 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2599 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2600 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2600 } 2601 }
2601 2602
2602 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2603 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2603 } 2604 }
2604} 2605}
2605 2606
2606void CalendarView::removeCategories() 2607void CalendarView::removeCategories()
2607{ 2608{
2608 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2609 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2609 QStringList catList = KOPrefs::instance()->mCustomCategories; 2610 QStringList catList = KOPrefs::instance()->mCustomCategories;
2610 QStringList catIncList; 2611 QStringList catIncList;
2611 QStringList newCatList; 2612 QStringList newCatList;
2612 Incidence* inc = incList.first(); 2613 Incidence* inc = incList.first();
2613 int i; 2614 int i;
2614 int count = 0; 2615 int count = 0;
2615 while ( inc ) { 2616 while ( inc ) {
2616 newCatList.clear(); 2617 newCatList.clear();
2617 catIncList = inc->categories() ; 2618 catIncList = inc->categories() ;
2618 for( i = 0; i< catIncList.count(); ++i ) { 2619 for( i = 0; i< catIncList.count(); ++i ) {
2619 if ( catList.contains (catIncList[i])) 2620 if ( catList.contains (catIncList[i]))
2620 newCatList.append( catIncList[i] ); 2621 newCatList.append( catIncList[i] );
2621 } 2622 }
2622 newCatList.sort(); 2623 newCatList.sort();
2623 inc->setCategories( newCatList.join(",") ); 2624 inc->setCategories( newCatList.join(",") );
2624 inc = incList.next(); 2625 inc = incList.next();
2625 } 2626 }
2626} 2627}
2627 2628
2628int CalendarView::addCategories() 2629int CalendarView::addCategories()
2629{ 2630{
2630 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2631 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2631 QStringList catList = KOPrefs::instance()->mCustomCategories; 2632 QStringList catList = KOPrefs::instance()->mCustomCategories;
2632 QStringList catIncList; 2633 QStringList catIncList;
2633 Incidence* inc = incList.first(); 2634 Incidence* inc = incList.first();
2634 int i; 2635 int i;
2635 int count = 0; 2636 int count = 0;
2636 while ( inc ) { 2637 while ( inc ) {
2637 catIncList = inc->categories() ; 2638 catIncList = inc->categories() ;
2638 for( i = 0; i< catIncList.count(); ++i ) { 2639 for( i = 0; i< catIncList.count(); ++i ) {
2639 if ( !catList.contains (catIncList[i])) { 2640 if ( !catList.contains (catIncList[i])) {
2640 catList.append( catIncList[i] ); 2641 catList.append( catIncList[i] );
2641 //qDebug("add cat %s ", catIncList[i].latin1()); 2642 //qDebug("add cat %s ", catIncList[i].latin1());
2642 ++count; 2643 ++count;
2643 } 2644 }
2644 } 2645 }
2645 inc = incList.next(); 2646 inc = incList.next();
2646 } 2647 }
2647 catList.sort(); 2648 catList.sort();
2648 KOPrefs::instance()->mCustomCategories = catList; 2649 KOPrefs::instance()->mCustomCategories = catList;
2649 return count; 2650 return count;
2650} 2651}
2651 2652
2652void CalendarView::manageCategories() 2653void CalendarView::manageCategories()
2653{ 2654{
2654 KOCatPrefs* cp = new KOCatPrefs(); 2655 KOCatPrefs* cp = new KOCatPrefs();
2655 cp->show(); 2656 cp->show();
2656 int w =cp->sizeHint().width() ; 2657 int w =cp->sizeHint().width() ;
2657 int h = cp->sizeHint().height() ; 2658 int h = cp->sizeHint().height() ;
2658 int dw = QApplication::desktop()->width(); 2659 int dw = QApplication::desktop()->width();
2659 int dh = QApplication::desktop()->height(); 2660 int dh = QApplication::desktop()->height();
2660 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2661 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2661 if ( !cp->exec() ) { 2662 if ( !cp->exec() ) {
2662 delete cp; 2663 delete cp;
2663 return; 2664 return;
2664 } 2665 }
2665 int count = 0; 2666 int count = 0;
2666 if ( cp->addCat() ) { 2667 if ( cp->addCat() ) {
2667 count = addCategories(); 2668 count = addCategories();
2668 if ( count ) { 2669 if ( count ) {
2669 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2670 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2670 writeSettings(); 2671 writeSettings();
2671 } else 2672 } else
2672 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! ")); 2673 topLevelWidget()->setCaption(QString::number( 0 )+ i18n(" Categories added to list! "));
2673 } else { 2674 } else {
2674 removeCategories(); 2675 removeCategories();
2675 updateView(); 2676 updateView();
2676 } 2677 }
2677 delete cp; 2678 delete cp;
2678} 2679}
2679 2680
2680void CalendarView::beamIncidence(Incidence * Inc) 2681void CalendarView::beamIncidence(Incidence * Inc)
2681{ 2682{
2682 QPtrList<Incidence> delSel ; 2683 QPtrList<Incidence> delSel ;
2683 delSel.append(Inc); 2684 delSel.append(Inc);
2684 beamIncidenceList( delSel ); 2685 beamIncidenceList( delSel );
2685} 2686}
2686void CalendarView::beamCalendar() 2687void CalendarView::beamCalendar()
2687{ 2688{
2688 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2689 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2689 //qDebug("beamCalendar() "); 2690 //qDebug("beamCalendar() ");
2690 beamIncidenceList( delSel ); 2691 beamIncidenceList( delSel );
2691} 2692}
2692void CalendarView::beamFilteredCalendar() 2693void CalendarView::beamFilteredCalendar()
2693{ 2694{
2694 QPtrList<Incidence> delSel = mCalendar->incidences(); 2695 QPtrList<Incidence> delSel = mCalendar->incidences();
2695 //qDebug("beamFilteredCalendar() "); 2696 //qDebug("beamFilteredCalendar() ");
2696 beamIncidenceList( delSel ); 2697 beamIncidenceList( delSel );
2697} 2698}
2698void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2699void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2699{ 2700{
2700 if ( beamDialog->exec () == QDialog::Rejected ) 2701 if ( beamDialog->exec () == QDialog::Rejected )
2701 return; 2702 return;
2702#ifdef DESKTOP_VERSION 2703#ifdef DESKTOP_VERSION
2703 QString fn = locateLocal( "tmp", "kopibeamfile" ); 2704 QString fn = locateLocal( "tmp", "kopibeamfile" );
2704#else 2705#else
2705 QString fn = "/tmp/kopibeamfile"; 2706 QString fn = "/tmp/kopibeamfile";
2706#endif 2707#endif
2707 QString mes; 2708 QString mes;
2708 bool createbup = true; 2709 bool createbup = true;
2709 if ( createbup ) { 2710 if ( createbup ) {
2710 QString description = "\n"; 2711 QString description = "\n";
2711 CalendarLocal* cal = new CalendarLocal(); 2712 CalendarLocal* cal = new CalendarLocal();
2712 if ( beamDialog->beamLocal() ) 2713 if ( beamDialog->beamLocal() )
2713 cal->setLocalTime(); 2714 cal->setLocalTime();
2714 else 2715 else
2715 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2716 cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2716 Incidence *incidence = delSel.first(); 2717 Incidence *incidence = delSel.first();
2717 bool addText = false; 2718 bool addText = false;
2718 if ( delSel.count() < 10 ) 2719 if ( delSel.count() < 10 )
2719 addText = true; 2720 addText = true;
2720 else { 2721 else {
2721 description.sprintf(i18n(" %d items?"),delSel.count() ); 2722 description.sprintf(i18n(" %d items?"),delSel.count() );
2722 } 2723 }
2723 while ( incidence ) { 2724 while ( incidence ) {
2724 Incidence *in = incidence->clone(); 2725 Incidence *in = incidence->clone();
2725 if ( ! in->summary().isEmpty() ) { 2726 if ( ! in->summary().isEmpty() ) {
2726 in->setDescription(""); 2727 in->setDescription("");
2727 } else { 2728 } else {
2728 in->setSummary( in->description().left(20)); 2729 in->setSummary( in->description().left(20));
2729 in->setDescription(""); 2730 in->setDescription("");
2730 } 2731 }
2731 if ( addText ) 2732 if ( addText )
2732 description += in->summary() + "\n"; 2733 description += in->summary() + "\n";
2733 cal->addIncidence( in ); 2734 cal->addIncidence( in );
2734 incidence = delSel.next(); 2735 incidence = delSel.next();
2735 } 2736 }
2736 if ( beamDialog->beamVcal() ) { 2737 if ( beamDialog->beamVcal() ) {
2737 fn += ".vcs"; 2738 fn += ".vcs";
2738 FileStorage storage( cal, fn, new VCalFormat ); 2739 FileStorage storage( cal, fn, new VCalFormat );
2739 storage.save(); 2740 storage.save();
2740 } else { 2741 } else {
2741 fn += ".ics"; 2742 fn += ".ics";
2742 FileStorage storage( cal, fn, new ICalFormat( ) ); 2743 FileStorage storage( cal, fn, new ICalFormat( ) );
2743 storage.save(); 2744 storage.save();
2744 } 2745 }
2745 delete cal; 2746 delete cal;
2746 mes = i18n("KO/Pi: Ready for beaming"); 2747 mes = i18n("KO/Pi: Ready for beaming");
2747 topLevelWidget()->setCaption(mes); 2748 topLevelWidget()->setCaption(mes);
2748 KApplication::convert2latin1( fn ); 2749 KApplication::convert2latin1( fn );
2749#ifndef DESKTOP_VERSION 2750#ifndef DESKTOP_VERSION
2750 Ir *ir = new Ir( this ); 2751 Ir *ir = new Ir( this );
2751 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2752 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2752 ir->send( fn, description, "text/x-vCalendar" ); 2753 ir->send( fn, description, "text/x-vCalendar" );
2753#endif 2754#endif
2754 } 2755 }
2755} 2756}
2756void CalendarView::beamDone( Ir *ir ) 2757void CalendarView::beamDone( Ir *ir )
2757{ 2758{
2758#ifndef DESKTOP_VERSION 2759#ifndef DESKTOP_VERSION
2759 delete ir; 2760 delete ir;
2760#endif 2761#endif
2761 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") ); 2762 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2762 topLevelWidget()->raise(); 2763 topLevelWidget()->raise();
2763} 2764}
2764 2765
2765void CalendarView::moveIncidence(Incidence * inc ) 2766void CalendarView::moveIncidence(Incidence * inc )
2766{ 2767{
2767 if ( !inc ) return; 2768 if ( !inc ) return;
2768 showDatePickerPopup(); 2769 showDatePickerPopup();
2769 mDatePickerMode = 2; 2770 mDatePickerMode = 2;
2770 mMoveIncidence = inc ; 2771 mMoveIncidence = inc ;
2771 QDate da; 2772 QDate da;
2772 if ( mMoveIncidence->typeID() == todoID ) { 2773 if ( mMoveIncidence->typeID() == todoID ) {
2773 Todo * to = (Todo *) mMoveIncidence; 2774 Todo * to = (Todo *) mMoveIncidence;
2774 if ( to->hasDueDate() ) 2775 if ( to->hasDueDate() )
2775 da = to->dtDue().date(); 2776 da = to->dtDue().date();
2776 else 2777 else
2777 da = QDate::currentDate(); 2778 da = QDate::currentDate();
2778 } else { 2779 } else {
2779 da = mMoveIncidence->dtStart().date(); 2780 da = mMoveIncidence->dtStart().date();
2780 } 2781 }
2781 //PENDING set date for recurring incidence to date of recurrence 2782 //PENDING set date for recurring incidence to date of recurrence
2782 //mMoveIncidenceOldDate; 2783 //mMoveIncidenceOldDate;
2783 mDatePicker->setDate( da ); 2784 mDatePicker->setDate( da );
2784} 2785}
2785void CalendarView::showDatePickerPopup() 2786void CalendarView::showDatePickerPopup()
2786{ 2787{
2787 if ( mDateFrame->isVisible() ) 2788 if ( mDateFrame->isVisible() )
2788 mDateFrame->hide(); 2789 mDateFrame->hide();
2789 else { 2790 else {
2790 int offX = 0, offY = 0; 2791 int offX = 0, offY = 0;
2791#ifdef DESKTOP_VERSION 2792#ifdef DESKTOP_VERSION
2792 int w =mDatePicker->sizeHint().width() ; 2793 int w =mDatePicker->sizeHint().width() ;
2793 int h = mDatePicker->sizeHint().height() ; 2794 int h = mDatePicker->sizeHint().height() ;
2794 int dw = topLevelWidget()->width(); 2795 int dw = topLevelWidget()->width();
2795 int dh = topLevelWidget()->height(); 2796 int dh = topLevelWidget()->height();
2796 offX = topLevelWidget()->x(); 2797 offX = topLevelWidget()->x();
2797 offY = topLevelWidget()->y(); 2798 offY = topLevelWidget()->y();
2798#else 2799#else
2799 int w =mDatePicker->sizeHint().width() ; 2800 int w =mDatePicker->sizeHint().width() ;
2800 int h = mDatePicker->sizeHint().height() ; 2801 int h = mDatePicker->sizeHint().height() ;
2801 int dw = QApplication::desktop()->width(); 2802 int dw = QApplication::desktop()->width();
2802 int dh = QApplication::desktop()->height(); 2803 int dh = QApplication::desktop()->height();
2803#endif 2804#endif
2804 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h ); 2805 mDateFrame->setGeometry( (dw-w)/2+offX, (dh - h )/2+offY ,w,h );
2805 mDateFrame->show(); 2806 mDateFrame->show();
2806 } 2807 }
2807} 2808}
2808void CalendarView::showDatePicker( ) 2809void CalendarView::showDatePicker( )
2809{ 2810{
2810 showDatePickerPopup(); 2811 showDatePickerPopup();
2811 mDatePickerMode = 1; 2812 mDatePickerMode = 1;
2812 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2813 mDatePicker->setDate( mNavigator->selectedDates().first() );
2813} 2814}
2814 2815
2815void CalendarView::showEventEditor() 2816void CalendarView::showEventEditor()
2816{ 2817{
2817#ifdef DESKTOP_VERSION 2818#ifdef DESKTOP_VERSION
2818 int x,y,w,h; 2819 int x,y,w,h;
2819 x = mEventEditor->geometry().x(); 2820 x = mEventEditor->geometry().x();
2820 y = mEventEditor->geometry().y(); 2821 y = mEventEditor->geometry().y();
2821 w = mEventEditor->width(); 2822 w = mEventEditor->width();
2822 h = mEventEditor->height(); 2823 h = mEventEditor->height();
2823 mEventEditor->show(); 2824 mEventEditor->show();
2824 mEventEditor->setGeometry(x,y,w,h); 2825 mEventEditor->setGeometry(x,y,w,h);
2825#else 2826#else
2826 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) { 2827 if ( mEventEditor->width() < QApplication::desktop()->width() -60 || mEventEditor->width() > QApplication::desktop()->width() ) {
2827 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2828 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2828 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() ); 2829 qDebug("KO: CalendarView: recreate mEventEditor %d %d", mEventEditor->width(), QApplication::desktop()->width() );
2829 qApp->processEvents(); 2830 qApp->processEvents();
2830 delete mEventEditor; 2831 delete mEventEditor;
2831 mEventEditor = mDialogManager->getEventEditor(); 2832 mEventEditor = mDialogManager->getEventEditor();
2832 topLevelWidget()->setCaption( i18n("") ); 2833 topLevelWidget()->setCaption( i18n("") );
2833 } 2834 }
2834 mEventEditor->showMaximized(); 2835 mEventEditor->showMaximized();
2835#endif 2836#endif
2836} 2837}
2837void CalendarView::showTodoEditor() 2838void CalendarView::showTodoEditor()
2838{ 2839{
2839#ifdef DESKTOP_VERSION 2840#ifdef DESKTOP_VERSION
2840 int x,y,w,h; 2841 int x,y,w,h;
2841 x = mTodoEditor->geometry().x(); 2842 x = mTodoEditor->geometry().x();
2842 y = mTodoEditor->geometry().y(); 2843 y = mTodoEditor->geometry().y();
2843 w = mTodoEditor->width(); 2844 w = mTodoEditor->width();
2844 h = mTodoEditor->height(); 2845 h = mTodoEditor->height();
2845 mTodoEditor->show(); 2846 mTodoEditor->show();
2846 mTodoEditor->setGeometry(x,y,w,h); 2847 mTodoEditor->setGeometry(x,y,w,h);
2847#else 2848#else
2848 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) { 2849 if ( mTodoEditor->width() < QApplication::desktop()->width() -60|| mTodoEditor->width() > QApplication::desktop()->width() ) {
2849 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") ); 2850 topLevelWidget()->setCaption( i18n("Recreating edit dialog. Please wait...") );
2850 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() ); 2851 qDebug("KO: CalendarView: recreate mTodoEditor %d %d ", mTodoEditor->width() ,QApplication::desktop()->width() );
2851 qApp->processEvents(); 2852 qApp->processEvents();
2852 delete mTodoEditor; 2853 delete mTodoEditor;
2853 mTodoEditor = mDialogManager->getTodoEditor(); 2854 mTodoEditor = mDialogManager->getTodoEditor();
2854 topLevelWidget()->setCaption( i18n("") ); 2855 topLevelWidget()->setCaption( i18n("") );
2855 } 2856 }
2856 mTodoEditor->showMaximized(); 2857 mTodoEditor->showMaximized();
2857#endif 2858#endif
2858} 2859}
2859 2860
2860void CalendarView::cloneIncidence() 2861void CalendarView::cloneIncidence()
2861{ 2862{
2862 Incidence *incidence = currentSelection(); 2863 Incidence *incidence = currentSelection();
2863 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2864 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2864 if ( incidence ) { 2865 if ( incidence ) {
2865 cloneIncidence(incidence); 2866 cloneIncidence(incidence);
2866 } 2867 }
2867} 2868}
2868void CalendarView::moveIncidence() 2869void CalendarView::moveIncidence()
2869{ 2870{
2870 Incidence *incidence = currentSelection(); 2871 Incidence *incidence = currentSelection();
2871 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2872 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2872 if ( incidence ) { 2873 if ( incidence ) {
2873 moveIncidence(incidence); 2874 moveIncidence(incidence);
2874 } 2875 }
2875} 2876}
2876void CalendarView::beamIncidence() 2877void CalendarView::beamIncidence()
2877{ 2878{
2878 Incidence *incidence = currentSelection(); 2879 Incidence *incidence = currentSelection();
2879 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2880 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2880 if ( incidence ) { 2881 if ( incidence ) {
2881 beamIncidence(incidence); 2882 beamIncidence(incidence);
2882 } 2883 }
2883} 2884}
2884void CalendarView::toggleCancelIncidence() 2885void CalendarView::toggleCancelIncidence()
2885{ 2886{
2886 Incidence *incidence = currentSelection(); 2887 Incidence *incidence = currentSelection();
2887 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2888 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2888 if ( incidence ) { 2889 if ( incidence ) {
2889 cancelIncidence(incidence); 2890 cancelIncidence(incidence);
2890 } 2891 }
2891} 2892}
2892 2893
2893 2894
2894void CalendarView::cancelIncidence(Incidence * inc ) 2895void CalendarView::cancelIncidence(Incidence * inc )
2895{ 2896{
2896 inc->setCancelled( ! inc->cancelled() ); 2897 inc->setCancelled( ! inc->cancelled() );
2897 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2898 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2898 updateView(); 2899 updateView();
2899} 2900}
2900void CalendarView::cloneIncidence(Incidence * orgInc ) 2901void CalendarView::cloneIncidence(Incidence * orgInc )
2901{ 2902{
2902 Incidence * newInc = orgInc->clone(); 2903 Incidence * newInc = orgInc->clone();
2903 newInc->recreate(); 2904 newInc->recreate();
2904 2905
2905 if ( newInc->typeID() == todoID ) { 2906 if ( newInc->typeID() == todoID ) {
2906 Todo* t = (Todo*) newInc; 2907 Todo* t = (Todo*) newInc;
2907 bool cloneSub = false; 2908 bool cloneSub = false;
2908 if ( orgInc->relations().count() ) { 2909 if ( orgInc->relations().count() ) {
2909 int result = KMessageBox::warningYesNoCancel(this, 2910 int result = KMessageBox::warningYesNoCancel(this,
2910 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ), 2911 i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ),
2911 i18n("Todo has subtodos"), 2912 i18n("Todo has subtodos"),
2912 i18n("Yes"), 2913 i18n("Yes"),
2913 i18n("No")); 2914 i18n("No"));
2914 2915
2915 if ( result == KMessageBox::Cancel ) { 2916 if ( result == KMessageBox::Cancel ) {
2916 delete t; 2917 delete t;
2917 return; 2918 return;
2918 } 2919 }
2919 if (result == KMessageBox::Yes) cloneSub = true; 2920 if (result == KMessageBox::Yes) cloneSub = true;
2920 } 2921 }
2921 showTodoEditor(); 2922 showTodoEditor();
2922 mTodoEditor->editTodo( t ); 2923 mTodoEditor->editTodo( t );
2923 if ( mTodoEditor->exec() ) { 2924 if ( mTodoEditor->exec() ) {
2924 if ( cloneSub ) { 2925 if ( cloneSub ) {
2925 orgInc->cloneRelations( t ); 2926 orgInc->cloneRelations( t );
2926 mCalendar->addIncidenceBranch( t ); 2927 mCalendar->addIncidenceBranch( t );
2927 updateView(); 2928 updateView();
2928 2929
2929 } else { 2930 } else {
2930 mCalendar->addTodo( t ); 2931 mCalendar->addTodo( t );
2931 updateView(); 2932 updateView();
2932 } 2933 }
2933 } else { 2934 } else {
2934 delete t; 2935 delete t;
2935 } 2936 }
2936 } 2937 }
2937 else { 2938 else {
2938 Event* e = (Event*) newInc; 2939 Event* e = (Event*) newInc;
2939 showEventEditor(); 2940 showEventEditor();
2940 mEventEditor->editEvent( e ); 2941 mEventEditor->editEvent( e );
2941 if ( mEventEditor->exec() ) { 2942 if ( mEventEditor->exec() ) {
2942 mCalendar->addEvent( e ); 2943 mCalendar->addEvent( e );
2943 updateView(); 2944 updateView();
2944 } else { 2945 } else {
2945 delete e; 2946 delete e;
2946 } 2947 }
2947 } 2948 }
2948 setActiveWindow(); 2949 setActiveWindow();
2949} 2950}
2950 2951
2951void CalendarView::newEvent() 2952void CalendarView::newEvent()
2952{ 2953{
2953 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2954 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2954 KOAgendaView *aView = mViewManager->agendaView(); 2955 KOAgendaView *aView = mViewManager->agendaView();
2955 if (aView) { 2956 if (aView) {
2956 if (aView->selectionStart().isValid()) { 2957 if (aView->selectionStart().isValid()) {
2957 if (aView->selectedIsAllDay()) { 2958 if (aView->selectedIsAllDay()) {
2958 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2959 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2959 } else { 2960 } else {
2960 newEvent(aView->selectionStart(),aView->selectionEnd()); 2961 newEvent(aView->selectionStart(),aView->selectionEnd());
2961 } 2962 }
2962 return; 2963 return;
2963 } 2964 }
2964 } 2965 }
2965 2966
2966 QDate date = mNavigator->selectedDates().first(); 2967 QDate date = mNavigator->selectedDates().first();
2967 QDateTime current = QDateTime::currentDateTime(); 2968 QDateTime current = QDateTime::currentDateTime();
2968 if ( date <= current.date() ) { 2969 if ( date <= current.date() ) {
2969 int hour = current.time().hour() +1; 2970 int hour = current.time().hour() +1;
2970 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2971 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2971 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2972 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2972 } else 2973 } else
2973 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2974 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2974 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2975 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2975 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2976 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2976} 2977}
2977 2978
2978void CalendarView::newEvent(QDateTime fh) 2979void CalendarView::newEvent(QDateTime fh)
2979{ 2980{
2980 newEvent(fh, 2981 newEvent(fh,
2981 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2982 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2982} 2983}
2983 2984
2984void CalendarView::newEvent(QDate dt) 2985void CalendarView::newEvent(QDate dt)
2985{ 2986{
2986 newEvent(QDateTime(dt, QTime(0,0,0)), 2987 newEvent(QDateTime(dt, QTime(0,0,0)),
2987 QDateTime(dt, QTime(0,0,0)), true); 2988 QDateTime(dt, QTime(0,0,0)), true);
2988} 2989}
2989void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint) 2990void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint)
2990{ 2991{
2991 newEvent(fromHint, toHint, false); 2992 newEvent(fromHint, toHint, false);
2992} 2993}
2993void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2994void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2994{ 2995{
2995 2996
2996 showEventEditor(); 2997 showEventEditor();
2997 mEventEditor->newEvent(fromHint,toHint,allDay); 2998 mEventEditor->newEvent(fromHint,toHint,allDay);
2998 if ( mFilterView->filtersEnabled() ) { 2999 if ( mFilterView->filtersEnabled() ) {
2999 CalFilter *filter = mFilterView->selectedFilter(); 3000 CalFilter *filter = mFilterView->selectedFilter();
3000 if (filter && filter->showCategories()) { 3001 if (filter && filter->showCategories()) {
3001 mEventEditor->setCategories(filter->categoryList().join(",") ); 3002 mEventEditor->setCategories(filter->categoryList().join(",") );
3002 } 3003 }
3003 if ( filter ) 3004 if ( filter )
3004 mEventEditor->setSecrecy( filter->getSecrecy() ); 3005 mEventEditor->setSecrecy( filter->getSecrecy() );
3005 } 3006 }
3006 mEventEditor->exec(); 3007 mEventEditor->exec();
3007 setActiveWindow(); 3008 setActiveWindow();
3008} 3009}
3009void CalendarView::todoAdded(Todo * t) 3010void CalendarView::todoAdded(Todo * t)
3010{ 3011{
3011 3012
3012 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 3013 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
3013 updateTodoViews(); 3014 updateTodoViews();
3014} 3015}
3015void CalendarView::todoChanged(Todo * t) 3016void CalendarView::todoChanged(Todo * t)
3016{ 3017{
3017 emit todoModified( t, 4 ); 3018 emit todoModified( t, 4 );
3018 // updateTodoViews(); 3019 // updateTodoViews();
3019} 3020}
3020void CalendarView::todoToBeDeleted(Todo *) 3021void CalendarView::todoToBeDeleted(Todo *)
3021{ 3022{
3022 //qDebug("todoToBeDeleted(Todo *) "); 3023 //qDebug("todoToBeDeleted(Todo *) ");
3023 updateTodoViews(); 3024 updateTodoViews();
3024} 3025}
3025void CalendarView::todoDeleted() 3026void CalendarView::todoDeleted()
3026{ 3027{
3027 //qDebug(" todoDeleted()"); 3028 //qDebug(" todoDeleted()");
3028 updateTodoViews(); 3029 updateTodoViews();
3029} 3030}
3030 3031
3031 3032
3032void CalendarView::newTodoDateTime( QDateTime dt, bool allday ) 3033void CalendarView::newTodoDateTime( QDateTime dt, bool allday )
3033{ 3034{
3034 showTodoEditor(); 3035 showTodoEditor();
3035 mTodoEditor->newTodo(dt,0,allday); 3036 mTodoEditor->newTodo(dt,0,allday);
3036 if ( mFilterView->filtersEnabled() ) { 3037 if ( mFilterView->filtersEnabled() ) {
3037 CalFilter *filter = mFilterView->selectedFilter(); 3038 CalFilter *filter = mFilterView->selectedFilter();
3038 if (filter && filter->showCategories()) { 3039 if (filter && filter->showCategories()) {
3039 mTodoEditor->setCategories(filter->categoryList().join(",") ); 3040 mTodoEditor->setCategories(filter->categoryList().join(",") );
3040 } 3041 }
3041 if ( filter ) 3042 if ( filter )
3042 mTodoEditor->setSecrecy( filter->getSecrecy() ); 3043 mTodoEditor->setSecrecy( filter->getSecrecy() );
3043 } 3044 }
3044 mTodoEditor->exec(); 3045 mTodoEditor->exec();
3045 setActiveWindow(); 3046 setActiveWindow();
3046} 3047}
3047 3048
3048void CalendarView::newTodo() 3049void CalendarView::newTodo()
3049{ 3050{
3050 newTodoDateTime( QDateTime(),true ); 3051 newTodoDateTime( QDateTime(),true );
3051} 3052}
3052 3053
3053void CalendarView::newSubTodo() 3054void CalendarView::newSubTodo()
3054{ 3055{
3055 Todo *todo = selectedTodo(); 3056 Todo *todo = selectedTodo();
3056 if ( todo ) newSubTodo( todo ); 3057 if ( todo ) newSubTodo( todo );
3057} 3058}
3058 3059
3059void CalendarView::newSubTodo(Todo *parentEvent) 3060void CalendarView::newSubTodo(Todo *parentEvent)
3060{ 3061{
3061 3062
3062 showTodoEditor(); 3063 showTodoEditor();
3063 mTodoEditor->newTodo(QDateTime(),parentEvent,true); 3064 mTodoEditor->newTodo(QDateTime(),parentEvent,true);
3064 mTodoEditor->exec(); 3065 mTodoEditor->exec();
3065 setActiveWindow(); 3066 setActiveWindow();
3066} 3067}
3067 3068
3068void CalendarView::newFloatingEvent() 3069void CalendarView::newFloatingEvent()
3069{ 3070{
3070 DateList tmpList = mNavigator->selectedDates(); 3071 DateList tmpList = mNavigator->selectedDates();
3071 QDate date = tmpList.first(); 3072 QDate date = tmpList.first();
3072 3073
3073 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 3074 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
3074 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 3075 QDateTime( date, QTime( 12, 0, 0 ) ), true );
3075} 3076}
3076 3077
3077 3078
3078void CalendarView::editEvent( Event *event ) 3079void CalendarView::editEvent( Event *event )
3079{ 3080{
3080 3081
3081 if ( !event ) return; 3082 if ( !event ) return;
3082 if ( event->isReadOnly() ) { 3083 if ( event->isReadOnly() ) {
3083 showEvent( event ); 3084 showEvent( event );
3084 return; 3085 return;
3085 } 3086 }
3086 showEventEditor(); 3087 showEventEditor();
3087 mEventEditor->editEvent( event , mFlagEditDescription); 3088 mEventEditor->editEvent( event , mFlagEditDescription);
3088 mEventEditor->exec(); 3089 mEventEditor->exec();
3089 setActiveWindow(); 3090 setActiveWindow();
3090 3091
3091} 3092}
3092void CalendarView::editJournal( Journal *jour ) 3093void CalendarView::editJournal( Journal *jour )
3093{ 3094{
3094 if ( !jour ) return; 3095 if ( !jour ) return;
3095 mDialogManager->hideSearchDialog(); 3096 mDialogManager->hideSearchDialog();
3096 mViewManager->showJournalView(); 3097 mViewManager->showJournalView();
3097 mNavigator->slotDaySelect( jour->dtStart().date() ); 3098 mNavigator->slotDaySelect( jour->dtStart().date() );
3098} 3099}
3099void CalendarView::editTodo( Todo *todo ) 3100void CalendarView::editTodo( Todo *todo )
3100{ 3101{
3101 if ( !todo ) return; 3102 if ( !todo ) return;
3102 3103
3103 if ( todo->isReadOnly() ) { 3104 if ( todo->isReadOnly() ) {
3104 showTodo( todo ); 3105 showTodo( todo );
3105 return; 3106 return;
3106 } 3107 }
3107 showTodoEditor(); 3108 showTodoEditor();
3108 mTodoEditor->editTodo( todo ,mFlagEditDescription); 3109 mTodoEditor->editTodo( todo ,mFlagEditDescription);
3109 mTodoEditor->exec(); 3110 mTodoEditor->exec();
3110 setActiveWindow(); 3111 setActiveWindow();
3111 3112
3112} 3113}
3113 3114
3114KOEventViewerDialog* CalendarView::getEventViewerDialog() 3115KOEventViewerDialog* CalendarView::getEventViewerDialog()
3115{ 3116{
3116 if ( !mEventViewerDialog ) { 3117 if ( !mEventViewerDialog ) {
3117 mEventViewerDialog = new KOEventViewerDialog(0); 3118 mEventViewerDialog = new KOEventViewerDialog(0);
3118 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 3119 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
3119 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 3120 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
3120 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 3121 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
3121 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 3122 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
3122 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 3123 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
3123 viewManager(), SLOT( showAgendaView( bool ) ) ); 3124 viewManager(), SLOT( showAgendaView( bool ) ) );
3124 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()), 3125 connect( mEventViewerDialog, SIGNAL(signalViewerClosed()),
3125 this, SLOT( slotViewerClosed() ) ); 3126 this, SLOT( slotViewerClosed() ) );
3126 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ), 3127 connect( mEventViewerDialog, SIGNAL( todoCompleted(Todo *) ),
3127 this, SLOT( todoChanged(Todo *) ) ); 3128 this, SLOT( todoChanged(Todo *) ) );
3128 mEventViewerDialog->resize( 640, 480 ); 3129 mEventViewerDialog->resize( 640, 480 );
3129 3130
3130 } 3131 }
3131 return mEventViewerDialog; 3132 return mEventViewerDialog;
3132} 3133}
3133void CalendarView::showEvent(Event *event) 3134void CalendarView::showEvent(Event *event)
3134{ 3135{
3135 getEventViewerDialog()->setEvent(event); 3136 getEventViewerDialog()->setEvent(event);
3136 getEventViewerDialog()->showMe(); 3137 getEventViewerDialog()->showMe();
3137} 3138}
3138 3139
3139void CalendarView::showTodo(Todo *event) 3140void CalendarView::showTodo(Todo *event)
3140{ 3141{
3141 getEventViewerDialog()->setTodo(event); 3142 getEventViewerDialog()->setTodo(event);
3142 getEventViewerDialog()->showMe(); 3143 getEventViewerDialog()->showMe();
3143} 3144}
3144void CalendarView::showJournal( Journal *jour ) 3145void CalendarView::showJournal( Journal *jour )
3145{ 3146{
3146 getEventViewerDialog()->setJournal(jour); 3147 getEventViewerDialog()->setJournal(jour);
3147 getEventViewerDialog()->showMe(); 3148 getEventViewerDialog()->showMe();
3148 3149
3149} 3150}
3150// void CalendarView::todoModified (Todo *event, int changed) 3151// void CalendarView::todoModified (Todo *event, int changed)
3151// { 3152// {
3152// // if (mDialogList.find (event) != mDialogList.end ()) { 3153// // if (mDialogList.find (event) != mDialogList.end ()) {
3153// // kdDebug() << "Todo modified and open" << endl; 3154// // kdDebug() << "Todo modified and open" << endl;
3154// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 3155// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
3155// // temp->modified (changed); 3156// // temp->modified (changed);
3156 3157
3157// // } 3158// // }
3158 3159
3159// mViewManager->updateView(); 3160// mViewManager->updateView();
3160// } 3161// }
3161 3162
3162void CalendarView::appointment_show() 3163void CalendarView::appointment_show()
3163{ 3164{
3164 Event *anEvent = 0; 3165 Event *anEvent = 0;
3165 3166
3166 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3167 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3167 3168
3168 if (mViewManager->currentView()->isEventView()) { 3169 if (mViewManager->currentView()->isEventView()) {
3169 if ( incidence && incidence->typeID() == eventID ) { 3170 if ( incidence && incidence->typeID() == eventID ) {
3170 anEvent = static_cast<Event *>(incidence); 3171 anEvent = static_cast<Event *>(incidence);
3171 } 3172 }
3172 } 3173 }
3173 3174
3174 if (!anEvent) { 3175 if (!anEvent) {
3175 KNotifyClient::beep(); 3176 KNotifyClient::beep();
3176 return; 3177 return;
3177 } 3178 }
3178 3179
3179 showEvent(anEvent); 3180 showEvent(anEvent);
3180} 3181}
3181 3182
3182void CalendarView::appointment_edit() 3183void CalendarView::appointment_edit()
3183{ 3184{
3184 Event *anEvent = 0; 3185 Event *anEvent = 0;
3185 3186
3186 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3187 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3187 3188
3188 if (mViewManager->currentView()->isEventView()) { 3189 if (mViewManager->currentView()->isEventView()) {
3189 if ( incidence && incidence->typeID() == eventID ) { 3190 if ( incidence && incidence->typeID() == eventID ) {
3190 anEvent = static_cast<Event *>(incidence); 3191 anEvent = static_cast<Event *>(incidence);
3191 } 3192 }
3192 } 3193 }
3193 3194
3194 if (!anEvent) { 3195 if (!anEvent) {
3195 KNotifyClient::beep(); 3196 KNotifyClient::beep();
3196 return; 3197 return;
3197 } 3198 }
3198 3199
3199 editEvent(anEvent); 3200 editEvent(anEvent);
3200} 3201}
3201 3202
3202void CalendarView::appointment_delete() 3203void CalendarView::appointment_delete()
3203{ 3204{
3204 Event *anEvent = 0; 3205 Event *anEvent = 0;
3205 3206
3206 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 3207 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
3207 3208
3208 if (mViewManager->currentView()->isEventView()) { 3209 if (mViewManager->currentView()->isEventView()) {
3209 if ( incidence && incidence->typeID() == eventID ) { 3210 if ( incidence && incidence->typeID() == eventID ) {
3210 anEvent = static_cast<Event *>(incidence); 3211 anEvent = static_cast<Event *>(incidence);
3211 } 3212 }
3212 } 3213 }
3213 3214
3214 if (!anEvent) { 3215 if (!anEvent) {
3215 KNotifyClient::beep(); 3216 KNotifyClient::beep();
3216 return; 3217 return;
3217 } 3218 }
3218 3219
3219 deleteEvent(anEvent); 3220 deleteEvent(anEvent);
3220} 3221}
3221 3222
3222void CalendarView::todo_resub( Todo * parent, Todo * sub ) 3223void CalendarView::todo_resub( Todo * parent, Todo * sub )
3223{ 3224{
3224 if (!sub) return; 3225 if (!sub) return;
3225 if ( sub->relatedTo() == parent ) 3226 if ( sub->relatedTo() == parent )
3226 return; 3227 return;
3227 sub->setRelatedTo(parent); 3228 sub->setRelatedTo(parent);
3228 sub->updated(); 3229 sub->updated();
3229 setModified(true); 3230 setModified(true);
3230 updateView(); 3231 updateView();
3231} 3232}
3232void CalendarView::todo_unsub(Todo *anTodo ) 3233void CalendarView::todo_unsub(Todo *anTodo )
3233{ 3234{
3234 todo_resub( 0, anTodo ); 3235 todo_resub( 0, anTodo );
3235} 3236}
3236 3237
3237void CalendarView::deleteTodo(Todo *todo) 3238void CalendarView::deleteTodo(Todo *todo)
3238{ 3239{
3239 if (!todo) { 3240 if (!todo) {
3240 KNotifyClient::beep(); 3241 KNotifyClient::beep();
3241 return; 3242 return;
3242 } 3243 }
3243 if (KOPrefs::instance()->mConfirm) { 3244 if (KOPrefs::instance()->mConfirm) {
3244 QString text = todo->summary().left(20); 3245 QString text = todo->summary().left(20);
3245 if (!todo->relations().isEmpty()) { 3246 if (!todo->relations().isEmpty()) {
3246 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!"); 3247 text += i18n("\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!");
3247 3248
3248 } 3249 }
3249 switch (msgItemDelete(text)) { 3250 switch (msgItemDelete(text)) {
3250 case KMessageBox::Continue: // OK 3251 case KMessageBox::Continue: // OK
3251 bool deleteT = false; 3252 bool deleteT = false;
3252 if (!todo->relations().isEmpty()) { 3253 if (!todo->relations().isEmpty()) {
3253 deleteT = removeCompletedSubTodos( todo ); 3254 deleteT = removeCompletedSubTodos( todo );
3254 } 3255 }
3255 // deleteT == true: todo already deleted in removeCompletedSubTodos 3256 // deleteT == true: todo already deleted in removeCompletedSubTodos
3256 if ( !deleteT ) { 3257 if ( !deleteT ) {
3257 checkExternalId( todo ); 3258 checkExternalId( todo );
3258 calendar()->deleteTodo(todo); 3259 calendar()->deleteTodo(todo);
3259 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3260 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3260 updateView(); 3261 updateView();
3261 } 3262 }
3262 break; 3263 break;
3263 } // switch 3264 } // switch
3264 } else { 3265 } else {
3265 checkExternalId( todo ); 3266 checkExternalId( todo );
3266 mCalendar->deleteTodo(todo); 3267 mCalendar->deleteTodo(todo);
3267 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 3268 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
3268 updateView(); 3269 updateView();
3269 } 3270 }
3270 3271
3271 emit updateSearchDialog(); 3272 emit updateSearchDialog();
3272} 3273}
3273void CalendarView::deleteJournal(Journal *jour) 3274void CalendarView::deleteJournal(Journal *jour)
3274{ 3275{
3275 if (!jour) { 3276 if (!jour) {
3276 KNotifyClient::beep(); 3277 KNotifyClient::beep();
3277 return; 3278 return;
3278 } 3279 }
3279 if (KOPrefs::instance()->mConfirm) { 3280 if (KOPrefs::instance()->mConfirm) {
3280 switch (msgItemDelete( jour->description().left(20))) { 3281 switch (msgItemDelete( jour->description().left(20))) {
3281 case KMessageBox::Continue: // OK 3282 case KMessageBox::Continue: // OK
3282 calendar()->deleteJournal(jour); 3283 calendar()->deleteJournal(jour);
3283 updateView(); 3284 updateView();
3284 break; 3285 break;
3285 } // switch 3286 } // switch
3286 } else { 3287 } else {
3287 calendar()->deleteJournal(jour);; 3288 calendar()->deleteJournal(jour);;
3288 updateView(); 3289 updateView();
3289 } 3290 }
3290 emit updateSearchDialog(); 3291 emit updateSearchDialog();
3291} 3292}
3292 3293
3293void CalendarView::deleteEvent(Event *anEvent) 3294void CalendarView::deleteEvent(Event *anEvent)
3294{ 3295{
3295 if (!anEvent) { 3296 if (!anEvent) {
3296 KNotifyClient::beep(); 3297 KNotifyClient::beep();
3297 return; 3298 return;
3298 } 3299 }
3299 3300
3300 if (anEvent->recurrence()->doesRecur()) { 3301 if (anEvent->recurrence()->doesRecur()) {
3301 QDate itemDate = mViewManager->currentSelectionDate(); 3302 QDate itemDate = mViewManager->currentSelectionDate();
3302 int km; 3303 int km;
3303 if (!itemDate.isValid()) { 3304 if (!itemDate.isValid()) {
3304 //kdDebug() << "Date Not Valid" << endl; 3305 //kdDebug() << "Date Not Valid" << endl;
3305 if (KOPrefs::instance()->mConfirm) { 3306 if (KOPrefs::instance()->mConfirm) {
3306 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3307 km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3307 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 3308 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
3308 i18n("KO/Pi Confirmation"),i18n("Delete All")); 3309 i18n("KO/Pi Confirmation"),i18n("Delete All"));
3309 if ( km == KMessageBox::Continue ) 3310 if ( km == KMessageBox::Continue )
3310 km = KMessageBox::No; // No = all below 3311 km = KMessageBox::No; // No = all below
3311 } else 3312 } else
3312 km = KMessageBox::No; 3313 km = KMessageBox::No;
3313 } else { 3314 } else {
3314 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + 3315 km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) +
3315 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 3316 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
3316 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 3317 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
3317 i18n("KO/Pi Confirmation"),i18n("Current"), 3318 i18n("KO/Pi Confirmation"),i18n("Current"),
3318 i18n("All")); 3319 i18n("All"));
3319 } 3320 }
3320 switch(km) { 3321 switch(km) {
3321 3322
3322 case KMessageBox::No: // Continue // all 3323 case KMessageBox::No: // Continue // all
3323 //qDebug("KMessageBox::No "); 3324 //qDebug("KMessageBox::No ");
3324 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3325 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3325 schedule(Scheduler::Cancel,anEvent); 3326 schedule(Scheduler::Cancel,anEvent);
3326 3327
3327 checkExternalId( anEvent); 3328 checkExternalId( anEvent);
3328 mCalendar->deleteEvent(anEvent); 3329 mCalendar->deleteEvent(anEvent);
3329 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 3330 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
3330 break; 3331 break;
3331 3332
3332 // Disabled because it does not work 3333 // Disabled because it does not work
3333 //#if 0 3334 //#if 0
3334 case KMessageBox::Yes: // just this one 3335 case KMessageBox::Yes: // just this one
3335 //QDate qd = mNavigator->selectedDates().first(); 3336 //QDate qd = mNavigator->selectedDates().first();
3336 //if (!qd.isValid()) { 3337 //if (!qd.isValid()) {
3337 // kdDebug() << "no date selected, or invalid date" << endl; 3338 // kdDebug() << "no date selected, or invalid date" << endl;
3338 // KNotifyClient::beep(); 3339 // KNotifyClient::beep();
3339 // return; 3340 // return;
3340 //} 3341 //}
3341 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 3342 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
3342 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 3343 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
3343 anEvent->addExDate(itemDate); 3344 anEvent->addExDate(itemDate);
3344 int duration = anEvent->recurrence()->duration(); 3345 int duration = anEvent->recurrence()->duration();
3345 if ( duration > 0 ) { 3346 if ( duration > 0 ) {
3346 anEvent->recurrence()->setDuration( duration - 1 ); 3347 anEvent->recurrence()->setDuration( duration - 1 );
3347 } 3348 }
3348 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 3349 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
3349 } 3350 }
3350 break; 3351 break;
3351 //#endif 3352 //#endif
3352 } // switch 3353 } // switch
3353 } else { 3354 } else {
3354 if (KOPrefs::instance()->mConfirm) { 3355 if (KOPrefs::instance()->mConfirm) {
3355 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + 3356 switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) +
3356 i18n("\nAre you sure you want\nto delete this event?"), 3357 i18n("\nAre you sure you want\nto delete this event?"),
3357 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 3358 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
3358 case KMessageBox::Continue: // OK 3359 case KMessageBox::Continue: // OK
3359 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3360 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3360 schedule(Scheduler::Cancel,anEvent); 3361 schedule(Scheduler::Cancel,anEvent);
3361 checkExternalId( anEvent); 3362 checkExternalId( anEvent);
3362 mCalendar->deleteEvent(anEvent); 3363 mCalendar->deleteEvent(anEvent);
3363 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3364 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3364 break; 3365 break;
3365 } // switch 3366 } // switch
3366 } else { 3367 } else {
3367 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 3368 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
3368 schedule(Scheduler::Cancel,anEvent); 3369 schedule(Scheduler::Cancel,anEvent);
3369 checkExternalId( anEvent); 3370 checkExternalId( anEvent);
3370 mCalendar->deleteEvent(anEvent); 3371 mCalendar->deleteEvent(anEvent);
3371 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 3372 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
3372 } 3373 }
3373 } // if-else 3374 } // if-else
3374 emit updateSearchDialog(); 3375 emit updateSearchDialog();
3375} 3376}
3376 3377
3377bool CalendarView::deleteEvent(const QString &uid) 3378bool CalendarView::deleteEvent(const QString &uid)
3378{ 3379{
3379 Event *ev = mCalendar->event(uid); 3380 Event *ev = mCalendar->event(uid);
3380 if (ev) { 3381 if (ev) {
3381 deleteEvent(ev); 3382 deleteEvent(ev);
3382 return true; 3383 return true;
3383 } else { 3384 } else {
3384 return false; 3385 return false;
3385 } 3386 }
3386} 3387}
3387 3388
3388/*****************************************************************************/ 3389/*****************************************************************************/
3389 3390
3390void CalendarView::action_mail() 3391void CalendarView::action_mail()
3391{ 3392{
3392#ifndef KORG_NOMAIL 3393#ifndef KORG_NOMAIL
3393 KOMailClient mailClient; 3394 KOMailClient mailClient;
3394 3395
3395 Incidence *incidence = currentSelection(); 3396 Incidence *incidence = currentSelection();
3396 3397
3397 if (!incidence) { 3398 if (!incidence) {
3398 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3399 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3399 return; 3400 return;
3400 } 3401 }
3401 if(incidence->attendeeCount() == 0 ) { 3402 if(incidence->attendeeCount() == 0 ) {
3402 KMessageBox::sorry(this, 3403 KMessageBox::sorry(this,
3403 i18n("Can't generate mail:\nNo attendees defined.\n")); 3404 i18n("Can't generate mail:\nNo attendees defined.\n"));
3404 return; 3405 return;
3405 } 3406 }
3406 3407
3407 CalendarLocal cal_tmp; 3408 CalendarLocal cal_tmp;
3408 Event *event = 0; 3409 Event *event = 0;
3409 Event *ev = 0; 3410 Event *ev = 0;
3410 if ( incidence && incidence->typeID() == eventID ) { 3411 if ( incidence && incidence->typeID() == eventID ) {
3411 event = static_cast<Event *>(incidence); 3412 event = static_cast<Event *>(incidence);
3412 ev = new Event(*event); 3413 ev = new Event(*event);
3413 cal_tmp.addEvent(ev); 3414 cal_tmp.addEvent(ev);
3414 } 3415 }
3415 ICalFormat mForm(); 3416 ICalFormat mForm();
3416 QString attachment = mForm.toString( &cal_tmp ); 3417 QString attachment = mForm.toString( &cal_tmp );
3417 if (ev) delete(ev); 3418 if (ev) delete(ev);
3418 3419
3419 mailClient.mailAttendees(currentSelection(), attachment); 3420 mailClient.mailAttendees(currentSelection(), attachment);
3420 3421
3421#endif 3422#endif
3422 3423
3423#if 0 3424#if 0
3424 Event *anEvent = 0; 3425 Event *anEvent = 0;
3425 if (mViewManager->currentView()->isEventView()) { 3426 if (mViewManager->currentView()->isEventView()) {
3426 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 3427 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
3427 } 3428 }
3428 3429
3429 if (!anEvent) { 3430 if (!anEvent) {
3430 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 3431 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
3431 return; 3432 return;
3432 } 3433 }
3433 if(anEvent->attendeeCount() == 0 ) { 3434 if(anEvent->attendeeCount() == 0 ) {
3434 KMessageBox::sorry(this, 3435 KMessageBox::sorry(this,
3435 i18n("Can't generate mail:\nNo attendees defined.\n")); 3436 i18n("Can't generate mail:\nNo attendees defined.\n"));
3436 return; 3437 return;
3437 } 3438 }
3438 3439
3439 mailobject.emailEvent(anEvent); 3440 mailobject.emailEvent(anEvent);
3440#endif 3441#endif
3441} 3442}
3442 3443
3443 3444
3444void CalendarView::schedule_publish(Incidence *incidence) 3445void CalendarView::schedule_publish(Incidence *incidence)
3445{ 3446{
3446 Event *event = 0; 3447 Event *event = 0;
3447 Todo *todo = 0; 3448 Todo *todo = 0;
3448 3449
3449 if (incidence == 0) { 3450 if (incidence == 0) {
3450 incidence = mViewManager->currentView()->selectedIncidences().first(); 3451 incidence = mViewManager->currentView()->selectedIncidences().first();
3451 if (incidence == 0) { 3452 if (incidence == 0) {
3452 incidence = mTodoList->selectedIncidences().first(); 3453 incidence = mTodoList->selectedIncidences().first();
3453 } 3454 }
3454 } 3455 }
3455 if ( incidence && incidence->typeID() == eventID ) { 3456 if ( incidence && incidence->typeID() == eventID ) {
3456 event = static_cast<Event *>(incidence); 3457 event = static_cast<Event *>(incidence);
3457 } else { 3458 } else {
3458 if ( incidence && incidence->typeID() == todoID ) { 3459 if ( incidence && incidence->typeID() == todoID ) {
3459 todo = static_cast<Todo *>(incidence); 3460 todo = static_cast<Todo *>(incidence);
3460 } 3461 }
3461 } 3462 }
3462 3463
3463 if (!event && !todo) { 3464 if (!event && !todo) {
3464 KMessageBox::sorry(this,i18n("No event selected.")); 3465 KMessageBox::sorry(this,i18n("No event selected."));
3465 return; 3466 return;
3466 } 3467 }
3467 3468
3468 PublishDialog *publishdlg = new PublishDialog(); 3469 PublishDialog *publishdlg = new PublishDialog();
3469 if (incidence->attendeeCount()>0) { 3470 if (incidence->attendeeCount()>0) {
3470 QPtrList<Attendee> attendees = incidence->attendees(); 3471 QPtrList<Attendee> attendees = incidence->attendees();
3471 attendees.first(); 3472 attendees.first();
3472 while ( attendees.current()!=0 ) { 3473 while ( attendees.current()!=0 ) {
3473 publishdlg->addAttendee(attendees.current()); 3474 publishdlg->addAttendee(attendees.current());
3474 attendees.next(); 3475 attendees.next();
3475 } 3476 }
3476 } 3477 }
3477 bool send = true; 3478 bool send = true;
3478 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 3479 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
3479 if ( publishdlg->exec() != QDialog::Accepted ) 3480 if ( publishdlg->exec() != QDialog::Accepted )
3480 send = false; 3481 send = false;
3481 } 3482 }
3482 if ( send ) { 3483 if ( send ) {
3483 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3484 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3484 if ( event ) { 3485 if ( event ) {
3485 Event *ev = new Event(*event); 3486 Event *ev = new Event(*event);
3486 ev->registerObserver(0); 3487 ev->registerObserver(0);
3487 ev->clearAttendees(); 3488 ev->clearAttendees();
3488 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3489 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3489 delete(ev); 3490 delete(ev);
3490 } 3491 }
3491 } else { 3492 } else {
3492 if ( todo ) { 3493 if ( todo ) {
3493 Todo *ev = new Todo(*todo); 3494 Todo *ev = new Todo(*todo);
3494 ev->registerObserver(0); 3495 ev->registerObserver(0);
3495 ev->clearAttendees(); 3496 ev->clearAttendees();
3496 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3497 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3497 delete(ev); 3498 delete(ev);
3498 } 3499 }
3499 } 3500 }
3500 } 3501 }
3501 } 3502 }
3502 delete publishdlg; 3503 delete publishdlg;
3503} 3504}
3504 3505
3505void CalendarView::schedule_request(Incidence *incidence) 3506void CalendarView::schedule_request(Incidence *incidence)
3506{ 3507{
3507 schedule(Scheduler::Request,incidence); 3508 schedule(Scheduler::Request,incidence);
3508} 3509}
3509 3510
3510void CalendarView::schedule_refresh(Incidence *incidence) 3511void CalendarView::schedule_refresh(Incidence *incidence)
3511{ 3512{
3512 schedule(Scheduler::Refresh,incidence); 3513 schedule(Scheduler::Refresh,incidence);
3513} 3514}
3514 3515
3515void CalendarView::schedule_cancel(Incidence *incidence) 3516void CalendarView::schedule_cancel(Incidence *incidence)
3516{ 3517{
3517 schedule(Scheduler::Cancel,incidence); 3518 schedule(Scheduler::Cancel,incidence);
3518} 3519}
3519 3520
3520void CalendarView::schedule_add(Incidence *incidence) 3521void CalendarView::schedule_add(Incidence *incidence)
3521{ 3522{
3522 schedule(Scheduler::Add,incidence); 3523 schedule(Scheduler::Add,incidence);
3523} 3524}
3524 3525
3525void CalendarView::schedule_reply(Incidence *incidence) 3526void CalendarView::schedule_reply(Incidence *incidence)
3526{ 3527{
3527 schedule(Scheduler::Reply,incidence); 3528 schedule(Scheduler::Reply,incidence);
3528} 3529}
3529 3530
3530void CalendarView::schedule_counter(Incidence *incidence) 3531void CalendarView::schedule_counter(Incidence *incidence)
3531{ 3532{
3532 schedule(Scheduler::Counter,incidence); 3533 schedule(Scheduler::Counter,incidence);
3533} 3534}
3534 3535
3535void CalendarView::schedule_declinecounter(Incidence *incidence) 3536void CalendarView::schedule_declinecounter(Incidence *incidence)
3536{ 3537{
3537 schedule(Scheduler::Declinecounter,incidence); 3538 schedule(Scheduler::Declinecounter,incidence);
3538} 3539}
3539 3540
3540void CalendarView::schedule_publish_freebusy(int daysToPublish) 3541void CalendarView::schedule_publish_freebusy(int daysToPublish)
3541{ 3542{
3542 QDateTime start = QDateTime::currentDateTime(); 3543 QDateTime start = QDateTime::currentDateTime();
3543 QDateTime end = start.addDays(daysToPublish); 3544 QDateTime end = start.addDays(daysToPublish);
3544 3545
3545 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3546 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3546 freebusy->setOrganizer(KOPrefs::instance()->email()); 3547 freebusy->setOrganizer(KOPrefs::instance()->email());
3547 3548
3548 3549
3549 PublishDialog *publishdlg = new PublishDialog(); 3550 PublishDialog *publishdlg = new PublishDialog();
3550 if ( publishdlg->exec() == QDialog::Accepted ) { 3551 if ( publishdlg->exec() == QDialog::Accepted ) {
3551 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3552 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3552 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3553 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3553 delete(freebusy); 3554 delete(freebusy);
3554 } 3555 }
3555 } 3556 }
3556 delete publishdlg; 3557 delete publishdlg;
3557} 3558}
3558 3559
3559void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3560void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3560{ 3561{
3561 Event *event = 0; 3562 Event *event = 0;
3562 Todo *todo = 0; 3563 Todo *todo = 0;
3563 3564
3564 if (incidence == 0) { 3565 if (incidence == 0) {
3565 incidence = mViewManager->currentView()->selectedIncidences().first(); 3566 incidence = mViewManager->currentView()->selectedIncidences().first();
3566 if (incidence == 0) { 3567 if (incidence == 0) {
3567 incidence = mTodoList->selectedIncidences().first(); 3568 incidence = mTodoList->selectedIncidences().first();
3568 } 3569 }
3569 } 3570 }
3570 if ( incidence && incidence->typeID() == eventID ) { 3571 if ( incidence && incidence->typeID() == eventID ) {
3571 event = static_cast<Event *>(incidence); 3572 event = static_cast<Event *>(incidence);
3572 } 3573 }
3573 if ( incidence && incidence->typeID() == todoID ) { 3574 if ( incidence && incidence->typeID() == todoID ) {
3574 todo = static_cast<Todo *>(incidence); 3575 todo = static_cast<Todo *>(incidence);
3575 } 3576 }
3576 3577
3577 if (!event && !todo) { 3578 if (!event && !todo) {
3578 KMessageBox::sorry(this,i18n("No event selected.")); 3579 KMessageBox::sorry(this,i18n("No event selected."));
3579 return; 3580 return;
3580 } 3581 }
3581 3582
3582 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3583 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3583 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3584 KMessageBox::sorry(this,i18n("The event has no attendees."));
3584 return; 3585 return;
3585 } 3586 }
3586 3587
3587 Event *ev = 0; 3588 Event *ev = 0;
3588 if (event) ev = new Event(*event); 3589 if (event) ev = new Event(*event);
3589 Todo *to = 0; 3590 Todo *to = 0;
3590 if (todo) to = new Todo(*todo); 3591 if (todo) to = new Todo(*todo);
3591 3592
3592 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3593 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3593 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3594 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3594 if (!me) { 3595 if (!me) {
3595 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3596 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3596 return; 3597 return;
3597 } 3598 }
3598 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3599 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3599 StatusDialog *statdlg = new StatusDialog(this); 3600 StatusDialog *statdlg = new StatusDialog(this);
3600 if (!statdlg->exec()==QDialog::Accepted) return; 3601 if (!statdlg->exec()==QDialog::Accepted) return;
3601 me->setStatus( statdlg->status() ); 3602 me->setStatus( statdlg->status() );
3602 delete(statdlg); 3603 delete(statdlg);
3603 } 3604 }
3604 Attendee *menew = new Attendee(*me); 3605 Attendee *menew = new Attendee(*me);
3605 if (ev) { 3606 if (ev) {
3606 ev->clearAttendees(); 3607 ev->clearAttendees();
3607 ev->addAttendee(menew,false); 3608 ev->addAttendee(menew,false);
3608 } else { 3609 } else {
3609 if (to) { 3610 if (to) {
3610 todo->clearAttendees(); 3611 todo->clearAttendees();
3611 todo->addAttendee(menew,false); 3612 todo->addAttendee(menew,false);
3612 } 3613 }
3613 } 3614 }
3614 } 3615 }
3615 3616
3616 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3617 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3617 if (ev) { 3618 if (ev) {
3618 if ( !dlg->addMessage(ev,method) ) delete(ev); 3619 if ( !dlg->addMessage(ev,method) ) delete(ev);
3619 } else { 3620 } else {
3620 if (to) { 3621 if (to) {
3621 if ( !dlg->addMessage(to,method) ) delete(to); 3622 if ( !dlg->addMessage(to,method) ) delete(to);
3622 } 3623 }
3623 } 3624 }
3624} 3625}
3625 3626
3626void CalendarView::openAddressbook() 3627void CalendarView::openAddressbook()
3627{ 3628{
3628 KRun::runCommand("kaddressbook"); 3629 KRun::runCommand("kaddressbook");
3629} 3630}
3630 3631
3631void CalendarView::setModified(bool modified) 3632void CalendarView::setModified(bool modified)
3632{ 3633{
3633 if ( modified ) 3634 if ( modified )
3634 emit signalmodified(); 3635 emit signalmodified();
3635 if (mModified != modified) { 3636 if (mModified != modified) {
3636 mModified = modified; 3637 mModified = modified;
3637 emit modifiedChanged(mModified); 3638 emit modifiedChanged(mModified);
3638 } 3639 }
3639} 3640}
3640 3641
3641bool CalendarView::isReadOnly() 3642bool CalendarView::isReadOnly()
3642{ 3643{
3643 return mReadOnly; 3644 return mReadOnly;
3644} 3645}
3645 3646
3646void CalendarView::setReadOnly(bool readOnly) 3647void CalendarView::setReadOnly(bool readOnly)
3647{ 3648{
3648 if (mReadOnly != readOnly) { 3649 if (mReadOnly != readOnly) {
3649 mReadOnly = readOnly; 3650 mReadOnly = readOnly;
3650 emit readOnlyChanged(mReadOnly); 3651 emit readOnlyChanged(mReadOnly);
3651 } 3652 }
3652} 3653}
3653 3654
3654bool CalendarView::isModified() 3655bool CalendarView::isModified()
3655{ 3656{
3656 return mModified; 3657 return mModified;
3657} 3658}
3658void CalendarView::slotprintSelInc() 3659void CalendarView::slotprintSelInc()
3659{ 3660{
3660 if ( currentSelection() == 0 ) { 3661 if ( currentSelection() == 0 ) {
3661 KMessageBox::sorry(this,i18n("There is nothing selected!")); 3662 KMessageBox::sorry(this,i18n("There is nothing selected!"));
3662 return; 3663 return;
3663 } 3664 }
3664 showIncidence(); 3665 showIncidence();
3665 getEventViewerDialog()->print(); 3666 getEventViewerDialog()->print();
3666 3667
3667} 3668}
3668void CalendarView::printSetup() 3669void CalendarView::printSetup()
3669{ 3670{
3670#ifndef KORG_NOPRINTER 3671#ifndef KORG_NOPRINTER
3671 createPrinter(); 3672 createPrinter();
3672 3673
3673 mCalPrinter->setupPrinter(); 3674 mCalPrinter->setupPrinter();
3674#endif 3675#endif
3675} 3676}
3676 3677
3677void CalendarView::print() 3678void CalendarView::print()
3678{ 3679{
3679#ifndef KORG_NOPRINTER 3680#ifndef KORG_NOPRINTER
3680 createPrinter(); 3681 createPrinter();
3681 3682
3682 DateList tmpDateList = mNavigator->selectedDates(); 3683 DateList tmpDateList = mNavigator->selectedDates();
3683 mCalPrinter->print(CalPrinter::Month, 3684 mCalPrinter->print(CalPrinter::Month,
3684 tmpDateList.first(), tmpDateList.last()); 3685 tmpDateList.first(), tmpDateList.last());
3685#endif 3686#endif
3686} 3687}
3687 3688
3688void CalendarView::printPreview() 3689void CalendarView::printPreview()
3689{ 3690{
3690#ifndef KORG_NOPRINTER 3691#ifndef KORG_NOPRINTER
3691 kdDebug() << "CalendarView::printPreview()" << endl; 3692 kdDebug() << "CalendarView::printPreview()" << endl;
3692 3693
3693 createPrinter(); 3694 createPrinter();
3694 3695
3695 DateList tmpDateList = mNavigator->selectedDates(); 3696 DateList tmpDateList = mNavigator->selectedDates();
3696 3697
3697 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3698 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3698 tmpDateList.last()); 3699 tmpDateList.last());
3699#endif 3700#endif
3700} 3701}
3701 3702
3702void CalendarView::exportICalendar() 3703void CalendarView::exportICalendar()
3703{ 3704{
3704 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3705 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3705 3706
3706 // Force correct extension 3707 // Force correct extension
3707 if (filename.right(4) != ".ics") filename += ".ics"; 3708 if (filename.right(4) != ".ics") filename += ".ics";
3708 3709
3709 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3710 FileStorage storage( mCalendar, filename, new ICalFormat() );
3710 storage.save(); 3711 storage.save();
3711} 3712}
3712 3713
3713bool CalendarView::exportVCalendar( QString filename ) 3714bool CalendarView::exportVCalendar( QString filename )
3714{ 3715{
3715 if (mCalendar->journals().count() > 0) { 3716 if (mCalendar->journals().count() > 0) {
3716 int result = KMessageBox::warningContinueCancel(this, 3717 int result = KMessageBox::warningContinueCancel(this,
3717 i18n("The journal entries can not be\nexported to a vCalendar file."), 3718 i18n("The journal entries can not be\nexported to a vCalendar file."),
3718 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3719 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3719 true); 3720 true);
3720 if (result != KMessageBox::Continue) return false; 3721 if (result != KMessageBox::Continue) return false;
3721 } 3722 }
3722 3723
3723 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3724 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3724 3725
3725 // Force correct extension 3726 // Force correct extension
3726 if (filename.right(4) != ".vcs") filename += ".vcs"; 3727 if (filename.right(4) != ".vcs") filename += ".vcs";
3727 3728
3728 FileStorage storage( mCalendar, filename, new VCalFormat ); 3729 FileStorage storage( mCalendar, filename, new VCalFormat );
3729 return storage.save(); 3730 return storage.save();
3730 3731
3731} 3732}
3732 3733
3733void CalendarView::eventUpdated(Incidence *) 3734void CalendarView::eventUpdated(Incidence *)
3734{ 3735{
3735 setModified(); 3736 setModified();
3736 // Don't call updateView here. The code, which has caused the update of the 3737 // Don't call updateView here. The code, which has caused the update of the
3737 // event is responsible for updating the view. 3738 // event is responsible for updating the view.
3738 // updateView(); 3739 // updateView();
3739} 3740}
3740 3741
3741void CalendarView::adaptNavigationUnits() 3742void CalendarView::adaptNavigationUnits()
3742{ 3743{
3743 if (mViewManager->currentView()->isEventView()) { 3744 if (mViewManager->currentView()->isEventView()) {
3744 int days = mViewManager->currentView()->currentDateCount(); 3745 int days = mViewManager->currentView()->currentDateCount();
3745 if (days == 1) { 3746 if (days == 1) {
3746 emit changeNavStringPrev(i18n("&Previous Day")); 3747 emit changeNavStringPrev(i18n("&Previous Day"));
3747 emit changeNavStringNext(i18n("&Next Day")); 3748 emit changeNavStringNext(i18n("&Next Day"));
3748 } else { 3749 } else {
3749 emit changeNavStringPrev(i18n("&Previous Week")); 3750 emit changeNavStringPrev(i18n("&Previous Week"));
3750 emit changeNavStringNext(i18n("&Next Week")); 3751 emit changeNavStringNext(i18n("&Next Week"));
3751 } 3752 }
3752 } 3753 }
3753} 3754}
3754 3755
3755void CalendarView::processMainViewSelection( Incidence *incidence ) 3756void CalendarView::processMainViewSelection( Incidence *incidence )
3756{ 3757{
3757 if ( incidence ) mTodoList->clearSelection(); 3758 if ( incidence ) mTodoList->clearSelection();
3758 processIncidenceSelection( incidence ); 3759 processIncidenceSelection( incidence );
3759} 3760}
3760 3761
3761void CalendarView::processTodoListSelection( Incidence *incidence ) 3762void CalendarView::processTodoListSelection( Incidence *incidence )
3762{ 3763{
3763 if ( incidence && mViewManager->currentView() ) { 3764 if ( incidence && mViewManager->currentView() ) {
3764 mViewManager->currentView()->clearSelection(); 3765 mViewManager->currentView()->clearSelection();
3765 } 3766 }
3766 processIncidenceSelection( incidence ); 3767 processIncidenceSelection( incidence );
3767} 3768}
3768 3769
3769void CalendarView::processIncidenceSelection( Incidence *incidence ) 3770void CalendarView::processIncidenceSelection( Incidence *incidence )
3770{ 3771{
3771 if ( incidence == mSelectedIncidence ) return; 3772 if ( incidence == mSelectedIncidence ) return;
3772 3773
3773 mSelectedIncidence = incidence; 3774 mSelectedIncidence = incidence;
3774 3775
3775 emit incidenceSelected( mSelectedIncidence ); 3776 emit incidenceSelected( mSelectedIncidence );
3776 3777
3777 if ( incidence && incidence->typeID() == eventID ) { 3778 if ( incidence && incidence->typeID() == eventID ) {
3778 Event *event = static_cast<Event *>( incidence ); 3779 Event *event = static_cast<Event *>( incidence );
3779 if ( event->organizer() == KOPrefs::instance()->email() ) { 3780 if ( event->organizer() == KOPrefs::instance()->email() ) {
3780 emit organizerEventsSelected( true ); 3781 emit organizerEventsSelected( true );
3781 } else { 3782 } else {
3782 emit organizerEventsSelected(false); 3783 emit organizerEventsSelected(false);
3783 } 3784 }
3784 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3785 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3785 KOPrefs::instance()->email() ) ) { 3786 KOPrefs::instance()->email() ) ) {
3786 emit groupEventsSelected( true ); 3787 emit groupEventsSelected( true );
3787 } else { 3788 } else {
3788 emit groupEventsSelected(false); 3789 emit groupEventsSelected(false);
3789 } 3790 }
3790 return; 3791 return;
3791 } else { 3792 } else {
3792 if ( incidence && incidence->typeID() == todoID ) { 3793 if ( incidence && incidence->typeID() == todoID ) {
3793 emit todoSelected( true ); 3794 emit todoSelected( true );
3794 Todo *event = static_cast<Todo *>( incidence ); 3795 Todo *event = static_cast<Todo *>( incidence );
3795 if ( event->organizer() == KOPrefs::instance()->email() ) { 3796 if ( event->organizer() == KOPrefs::instance()->email() ) {
3796 emit organizerEventsSelected( true ); 3797 emit organizerEventsSelected( true );
3797 } else { 3798 } else {
3798 emit organizerEventsSelected(false); 3799 emit organizerEventsSelected(false);
3799 } 3800 }
3800 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3801 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3801 KOPrefs::instance()->email() ) ) { 3802 KOPrefs::instance()->email() ) ) {
3802 emit groupEventsSelected( true ); 3803 emit groupEventsSelected( true );
3803 } else { 3804 } else {
3804 emit groupEventsSelected(false); 3805 emit groupEventsSelected(false);
3805 } 3806 }
3806 return; 3807 return;
3807 } else { 3808 } else {
3808 emit todoSelected( false ); 3809 emit todoSelected( false );
3809 emit organizerEventsSelected(false); 3810 emit organizerEventsSelected(false);
3810 emit groupEventsSelected(false); 3811 emit groupEventsSelected(false);
3811 } 3812 }
3812 return; 3813 return;
3813 } 3814 }
3814 3815
3815 /* if ( incidence && incidence->typeID() == todoID ) { 3816 /* if ( incidence && incidence->typeID() == todoID ) {
3816 emit todoSelected( true ); 3817 emit todoSelected( true );
3817 } else { 3818 } else {
3818 emit todoSelected( false ); 3819 emit todoSelected( false );
3819 }*/ 3820 }*/
3820} 3821}
3821 3822
3822 3823
3823void CalendarView::checkClipboard() 3824void CalendarView::checkClipboard()
3824{ 3825{
3825#ifndef KORG_NODND 3826#ifndef KORG_NODND
3826 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3827 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3827 emit pasteEnabled(true); 3828 emit pasteEnabled(true);
3828 } else { 3829 } else {
3829 emit pasteEnabled(false); 3830 emit pasteEnabled(false);
3830 } 3831 }
3831#endif 3832#endif
3832} 3833}
3833 3834
3834void CalendarView::showDates(const DateList &selectedDates) 3835void CalendarView::showDates(const DateList &selectedDates)
3835{ 3836{
3836 // kdDebug() << "CalendarView::selectDates()" << endl; 3837 // kdDebug() << "CalendarView::selectDates()" << endl;
3837 3838
3838 3839
3839 if ( !mBlockShowDates ) { 3840 if ( !mBlockShowDates ) {
3840 if ( mViewManager->currentView() ) { 3841 if ( mViewManager->currentView() ) {
3841 updateView( selectedDates.first(), selectedDates.last() ); 3842 updateView( selectedDates.first(), selectedDates.last() );
3842 } else { 3843 } else {
3843 mViewManager->showAgendaView(); 3844 mViewManager->showAgendaView();
3844 } 3845 }
3845 } 3846 }
3846 3847
3847 QDate date = selectedDates.first(); 3848 QDate date = selectedDates.first();
3848 if ( ! date.isValid() ) { 3849 if ( ! date.isValid() ) {
3849 topLevelWidget()->setCaption(""); 3850 topLevelWidget()->setCaption("");
3850 return; 3851 return;
3851 } 3852 }
3852 3853
3853 QString selDates; 3854 QString selDates;
3854 selDates = KGlobal::locale()->formatDate( date, true); 3855 selDates = KGlobal::locale()->formatDate( date, true);
3855 if (selectedDates.first() < selectedDates.last() ) 3856 if (selectedDates.first() < selectedDates.last() )
3856 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3857 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3857 else { 3858 else {
3858 QString addString; 3859 QString addString;
3859 if ( date == QDateTime::currentDateTime().date() ) 3860 if ( date == QDateTime::currentDateTime().date() )
3860 addString = i18n("Today"); 3861 addString = i18n("Today");
3861 else if ( date == QDateTime::currentDateTime().date().addDays(1) ) 3862 else if ( date == QDateTime::currentDateTime().date().addDays(1) )
3862 addString = i18n("Tomorrow"); 3863 addString = i18n("Tomorrow");
3863 else if ( date == QDateTime::currentDateTime().date().addDays(-1) ) 3864 else if ( date == QDateTime::currentDateTime().date().addDays(-1) )
3864 addString = i18n("Yesterday"); 3865 addString = i18n("Yesterday");
3865 else if ( date == QDateTime::currentDateTime().date().addDays(-2) ) 3866 else if ( date == QDateTime::currentDateTime().date().addDays(-2) )
3866 addString = i18n("Day before yesterday"); 3867 addString = i18n("Day before yesterday");
3867 else if ( date == QDateTime::currentDateTime().date().addDays(2) ) 3868 else if ( date == QDateTime::currentDateTime().date().addDays(2) )
3868 addString = i18n("Day after tomorrow"); 3869 addString = i18n("Day after tomorrow");
3869 if ( !addString.isEmpty() ) { 3870 if ( !addString.isEmpty() ) {
3870 topLevelWidget()->setCaption( addString+", " + selDates ); 3871 topLevelWidget()->setCaption( addString+", " + selDates );
3871 return; 3872 return;
3872 } 3873 }
3873 } 3874 }
3874 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3875 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3875 3876
3876} 3877}
3877 3878
3878QPtrList<CalFilter> CalendarView::filters() 3879QPtrList<CalFilter> CalendarView::filters()
3879{ 3880{
3880 return mFilters; 3881 return mFilters;
3881 3882
3882} 3883}
3883void CalendarView::editFilters() 3884void CalendarView::editFilters()
3884{ 3885{
3885 // kdDebug() << "CalendarView::editFilters()" << endl; 3886 // kdDebug() << "CalendarView::editFilters()" << endl;
3886 3887
3887 CalFilter *filter = mFilters.first(); 3888 CalFilter *filter = mFilters.first();
3888 while(filter) { 3889 while(filter) {
3889 kdDebug() << " Filter: " << filter->name() << endl; 3890 kdDebug() << " Filter: " << filter->name() << endl;
3890 filter = mFilters.next(); 3891 filter = mFilters.next();
3891 } 3892 }
3892 3893
3893 mDialogManager->showFilterEditDialog(&mFilters); 3894 mDialogManager->showFilterEditDialog(&mFilters);
3894} 3895}
3895void CalendarView::toggleFilter() 3896void CalendarView::toggleFilter()
3896{ 3897{
3897 showFilter(! mFilterView->isVisible()); 3898 showFilter(! mFilterView->isVisible());
3898} 3899}
3899 3900
3900KOFilterView *CalendarView::filterView() 3901KOFilterView *CalendarView::filterView()
3901{ 3902{
3902 return mFilterView; 3903 return mFilterView;
3903} 3904}
3904void CalendarView::selectFilter( int fil ) 3905void CalendarView::selectFilter( int fil )
3905{ 3906{
3906 mFilterView->setSelectedFilter( fil ); 3907 mFilterView->setSelectedFilter( fil );
3907} 3908}
3908void CalendarView::showFilter(bool visible) 3909void CalendarView::showFilter(bool visible)
3909{ 3910{
3910 if (visible) mFilterView->show(); 3911 if (visible) mFilterView->show();
3911 else mFilterView->hide(); 3912 else mFilterView->hide();
3912} 3913}
3913void CalendarView::toggleFilerEnabled( ) 3914void CalendarView::toggleFilerEnabled( )
3914{ 3915{
3915 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3916 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3916 if ( !mFilterView->filtersEnabled() ) 3917 if ( !mFilterView->filtersEnabled() )
3917 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3918 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3918 3919
3919} 3920}
3920void CalendarView::updateFilter() 3921void CalendarView::updateFilter()
3921{ 3922{
3922 CalFilter *filter = mFilterView->selectedFilter(); 3923 CalFilter *filter = mFilterView->selectedFilter();
3923 if (filter) { 3924 if (filter) {
3924 QString mess; 3925 QString mess;
3925 if (mFilterView->filtersEnabled()) { 3926 if (mFilterView->filtersEnabled()) {
3926 mess = i18n("Filter selected: ")+filter->name(); 3927 mess = i18n("Filter selected: ")+filter->name();
3927 filter->setEnabled(true); 3928 filter->setEnabled(true);
3928 } 3929 }
3929 else filter->setEnabled(false); 3930 else filter->setEnabled(false);
3930 mCalendar->setFilter(filter); 3931 mCalendar->setFilter(filter);
3931 updateView(); 3932 updateView();
3932 if ( !mess.isEmpty() ) 3933 if ( !mess.isEmpty() )
3933 topLevelWidget()->setCaption( mess ); 3934 topLevelWidget()->setCaption( mess );
3934 3935
3935 } 3936 }
3936} 3937}
3937 3938
3938void CalendarView::filterEdited() 3939void CalendarView::filterEdited()
3939{ 3940{
3940 mFilterView->updateFilters(); 3941 mFilterView->updateFilters();
3941 updateFilter(); 3942 updateFilter();
3942 writeSettings(); 3943 writeSettings();
3943} 3944}
3944 3945
3945 3946
3946void CalendarView::takeOverEvent() 3947void CalendarView::takeOverEvent()
3947{ 3948{
3948 Incidence *incidence = currentSelection(); 3949 Incidence *incidence = currentSelection();
3949 3950
3950 if (!incidence) return; 3951 if (!incidence) return;
3951 3952
3952 incidence->setOrganizer(KOPrefs::instance()->email()); 3953 incidence->setOrganizer(KOPrefs::instance()->email());
3953 incidence->recreate(); 3954 incidence->recreate();
3954 incidence->setReadOnly(false); 3955 incidence->setReadOnly(false);
3955 3956
3956 updateView(); 3957 updateView();
3957} 3958}
3958 3959
3959void CalendarView::takeOverCalendar() 3960void CalendarView::takeOverCalendar()
3960{ 3961{
3961 // TODO: Create Calendar::allIncidences() function and use it here 3962 // TODO: Create Calendar::allIncidences() function and use it here
3962 3963
3963 clearAllViews(); 3964 clearAllViews();
3964 QPtrList<Event> events = mCalendar->events(); 3965 QPtrList<Event> events = mCalendar->events();
3965 for(uint i=0; i<events.count(); ++i) { 3966 for(uint i=0; i<events.count(); ++i) {
3966 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3967 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3967 events.at(i)->recreate(); 3968 events.at(i)->recreate();
3968 events.at(i)->setReadOnly(false); 3969 events.at(i)->setReadOnly(false);
3969 } 3970 }
3970 3971
3971 QPtrList<Todo> todos = mCalendar->todos(); 3972 QPtrList<Todo> todos = mCalendar->todos();
3972 for(uint i=0; i<todos.count(); ++i) { 3973 for(uint i=0; i<todos.count(); ++i) {
3973 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3974 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3974 todos.at(i)->recreate(); 3975 todos.at(i)->recreate();
3975 todos.at(i)->setReadOnly(false); 3976 todos.at(i)->setReadOnly(false);
3976 } 3977 }
3977 3978
3978 QPtrList<Journal> journals = mCalendar->journals(); 3979 QPtrList<Journal> journals = mCalendar->journals();
3979 for(uint i=0; i<journals.count(); ++i) { 3980 for(uint i=0; i<journals.count(); ++i) {
3980 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3981 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3981 journals.at(i)->recreate(); 3982 journals.at(i)->recreate();
3982 journals.at(i)->setReadOnly(false); 3983 journals.at(i)->setReadOnly(false);
3983 } 3984 }
3984 3985
3985 updateView(); 3986 updateView();
3986} 3987}
3987 3988
3988void CalendarView::showIntro() 3989void CalendarView::showIntro()
3989{ 3990{
3990 kdDebug() << "To be implemented." << endl; 3991 kdDebug() << "To be implemented." << endl;
3991} 3992}
3992 3993
3993QWidgetStack *CalendarView::viewStack() 3994QWidgetStack *CalendarView::viewStack()
3994{ 3995{
3995 return mRightFrame; 3996 return mRightFrame;
3996} 3997}
3997 3998
3998QWidget *CalendarView::leftFrame() 3999QWidget *CalendarView::leftFrame()
3999{ 4000{
4000 return ( QWidget *)mLeftFrame; 4001 return ( QWidget *)mLeftFrame;
4001} 4002}
4002 4003
4003DateNavigator *CalendarView::dateNavigator() 4004DateNavigator *CalendarView::dateNavigator()
4004{ 4005{
4005 return mNavigator; 4006 return mNavigator;
4006} 4007}
4007 4008
4008KDateNavigator* CalendarView::dateNavigatorWidget() 4009KDateNavigator* CalendarView::dateNavigatorWidget()
4009{ 4010{
4010 return mDateNavigator->navigatorView(); 4011 return mDateNavigator->navigatorView();
4011} 4012}
4012void CalendarView::toggleDateNavigatorWidget() 4013void CalendarView::toggleDateNavigatorWidget()
4013{ 4014{
4014 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 4015 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
4015 4016
4016 if (!KOPrefs::instance()->mShowDateNavigator ) 4017 if (!KOPrefs::instance()->mShowDateNavigator )
4017 mDateNavigator->hide(); 4018 mDateNavigator->hide();
4018 else 4019 else
4019 mDateNavigator->show(); 4020 mDateNavigator->show();
4020} 4021}
4021void CalendarView::addView(KOrg::BaseView *view) 4022void CalendarView::addView(KOrg::BaseView *view)
4022{ 4023{
4023 mViewManager->addView(view); 4024 mViewManager->addView(view);
4024} 4025}
4025 4026
4026void CalendarView::showView(KOrg::BaseView *view) 4027void CalendarView::showView(KOrg::BaseView *view)
4027{ 4028{
4028 mViewManager->showView(view, mLeftFrame->isVisible()); 4029 mViewManager->showView(view, mLeftFrame->isVisible());
4029} 4030}
4030 4031
4031Incidence *CalendarView::currentSelection() 4032Incidence *CalendarView::currentSelection()
4032{ 4033{
4033 return mViewManager->currentSelection(); 4034 return mViewManager->currentSelection();
4034} 4035}
4035void CalendarView::toggleAllDaySize() 4036void CalendarView::toggleAllDaySize()
4036{ 4037{
4037 /* 4038 /*
4038 if ( KOPrefs::instance()->mAllDaySize > 47 ) 4039 if ( KOPrefs::instance()->mAllDaySize > 47 )
4039 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 4040 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
4040 else 4041 else
4041 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 4042 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
4042 */ 4043 */
4043 viewManager()->agendaView()->toggleAllDay(); 4044 viewManager()->agendaView()->toggleAllDay();
4044} 4045}
4045void CalendarView::toggleExpand() 4046void CalendarView::toggleExpand()
4046{ 4047{
4047 // if ( mLeftFrame->isHidden() ) { 4048 // if ( mLeftFrame->isHidden() ) {
4048 // mLeftFrame->show(); 4049 // mLeftFrame->show();
4049 // emit calendarViewExpanded( false ); 4050 // emit calendarViewExpanded( false );
4050 // } else { 4051 // } else {
4051 // mLeftFrame->hide(); 4052 // mLeftFrame->hide();
4052 // emit calendarViewExpanded( true ); 4053 // emit calendarViewExpanded( true );
4053 // } 4054 // }
4054 //qDebug(" CalendarView::toggleExpand()"); 4055 //qDebug(" CalendarView::toggleExpand()");
4055 globalFlagBlockAgenda = 1; 4056 globalFlagBlockAgenda = 1;
4056 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 4057 emit calendarViewExpanded( !mLeftFrame->isHidden() );
4057 globalFlagBlockAgenda = 5; 4058 globalFlagBlockAgenda = 5;
4058 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 4059 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
4059 //mViewManager->showView( 0, true ); 4060 //mViewManager->showView( 0, true );
4060} 4061}
4061 4062
4062void CalendarView::calendarModified( bool modified, Calendar * ) 4063void CalendarView::calendarModified( bool modified, Calendar * )
4063{ 4064{
4064 setModified( modified ); 4065 setModified( modified );
4065} 4066}
4066 4067
4067Todo *CalendarView::selectedTodo() 4068Todo *CalendarView::selectedTodo()
4068{ 4069{
4069 Incidence *incidence = currentSelection(); 4070 Incidence *incidence = currentSelection();
4070 if ( incidence && incidence->typeID() == todoID ) { 4071 if ( incidence && incidence->typeID() == todoID ) {
4071 return static_cast<Todo *>( incidence ); 4072 return static_cast<Todo *>( incidence );
4072 } 4073 }
4073 4074
4074 incidence = mTodoList->selectedIncidences().first(); 4075 incidence = mTodoList->selectedIncidences().first();
4075 if ( incidence && incidence->typeID() == todoID ) { 4076 if ( incidence && incidence->typeID() == todoID ) {
4076 return static_cast<Todo *>( incidence ); 4077 return static_cast<Todo *>( incidence );
4077 } 4078 }
4078 4079
4079 return 0; 4080 return 0;
4080} 4081}
4081 4082
4082void CalendarView::dialogClosing(Incidence *in) 4083void CalendarView::dialogClosing(Incidence *in)
4083{ 4084{
4084 // mDialogList.remove(in); 4085 // mDialogList.remove(in);
4085} 4086}
4086 4087
4087void CalendarView::showIncidence() 4088void CalendarView::showIncidence()
4088{ 4089{
4089 mViewerCallerIsSearchDialog = false; 4090 mViewerCallerIsSearchDialog = false;
4090 Incidence *incidence = currentSelection(); 4091 Incidence *incidence = currentSelection();
4091 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4092 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4092 if ( incidence ) { 4093 if ( incidence ) {
4093 ShowIncidenceVisitor v; 4094 ShowIncidenceVisitor v;
4094 v.act( incidence, this ); 4095 v.act( incidence, this );
4095 } 4096 }
4096} 4097}
4097void CalendarView::editIncidenceDescription() 4098void CalendarView::editIncidenceDescription()
4098{ 4099{
4099 mFlagEditDescription = true; 4100 mFlagEditDescription = true;
4100 editIncidence(); 4101 editIncidence();
4101 mFlagEditDescription = false; 4102 mFlagEditDescription = false;
4102} 4103}
4103void CalendarView::editIncidence() 4104void CalendarView::editIncidence()
4104{ 4105{
4105 // qDebug("editIncidence() "); 4106 // qDebug("editIncidence() ");
4106 Incidence *incidence = currentSelection(); 4107 Incidence *incidence = currentSelection();
4107 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4108 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4108 if ( incidence ) { 4109 if ( incidence ) {
4109 EditIncidenceVisitor v; 4110 EditIncidenceVisitor v;
4110 v.act( incidence, this ); 4111 v.act( incidence, this );
4111 } 4112 }
4112} 4113}
4113 4114
4114void CalendarView::deleteIncidence() 4115void CalendarView::deleteIncidence()
4115{ 4116{
4116 Incidence *incidence = currentSelection(); 4117 Incidence *incidence = currentSelection();
4117 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4118 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4118 if ( incidence ) { 4119 if ( incidence ) {
4119 deleteIncidence(incidence); 4120 deleteIncidence(incidence);
4120 } 4121 }
4121} 4122}
4122void CalendarView::showIncidence(QString uid) 4123void CalendarView::showIncidence(QString uid)
4123{ 4124{
4124 Incidence *inc = mCalendar->incidence( uid ); 4125 Incidence *inc = mCalendar->incidence( uid );
4125 if ( inc ) 4126 if ( inc )
4126 showIncidence( inc ); 4127 showIncidence( inc );
4127} 4128}
4128void CalendarView::showIncidence(Incidence *incidence) 4129void CalendarView::showIncidence(Incidence *incidence)
4129{ 4130{
4130 mViewerCallerIsSearchDialog = false; 4131 mViewerCallerIsSearchDialog = false;
4131 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4132 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4132 if ( sender() && mDialogManager->getSearchDialog() ) { 4133 if ( sender() && mDialogManager->getSearchDialog() ) {
4133 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4134 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4134 mViewerCallerIsSearchDialog = true; 4135 mViewerCallerIsSearchDialog = true;
4135 } 4136 }
4136 } 4137 }
4137 if ( incidence ) { 4138 if ( incidence ) {
4138 ShowIncidenceVisitor v; 4139 ShowIncidenceVisitor v;
4139 v.act( incidence, this ); 4140 v.act( incidence, this );
4140 } 4141 }
4141} 4142}
4142 4143
4143void CalendarView::editIncidence(Incidence *incidence) 4144void CalendarView::editIncidence(Incidence *incidence)
4144{ 4145{
4145 if ( incidence ) { 4146 if ( incidence ) {
4146 4147
4147 EditIncidenceVisitor v; 4148 EditIncidenceVisitor v;
4148 v.act( incidence, this ); 4149 v.act( incidence, this );
4149 4150
4150 } 4151 }
4151} 4152}
4152 4153
4153void CalendarView::deleteIncidence(Incidence *incidence) 4154void CalendarView::deleteIncidence(Incidence *incidence)
4154{ 4155{
4155 //qDebug(" CalendarView::deleteIncidence "); 4156 //qDebug(" CalendarView::deleteIncidence ");
4156 if ( incidence ) { 4157 if ( incidence ) {
4157 DeleteIncidenceVisitor v; 4158 DeleteIncidenceVisitor v;
4158 v.act( incidence, this ); 4159 v.act( incidence, this );
4159 } 4160 }
4160} 4161}
4161 4162
4162 4163
4163void CalendarView::lookForOutgoingMessages() 4164void CalendarView::lookForOutgoingMessages()
4164{ 4165{
4165 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4166 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4166 ogd->loadMessages(); 4167 ogd->loadMessages();
4167} 4168}
4168 4169
4169void CalendarView::lookForIncomingMessages() 4170void CalendarView::lookForIncomingMessages()
4170{ 4171{
4171 IncomingDialog *icd = mDialogManager->incomingDialog(); 4172 IncomingDialog *icd = mDialogManager->incomingDialog();
4172 icd->retrieve(); 4173 icd->retrieve();
4173} 4174}
4174 4175
4175bool CalendarView::removeCompletedSubTodos( Todo* t ) 4176bool CalendarView::removeCompletedSubTodos( Todo* t )
4176{ 4177{
4177 bool deleteTodo = true; 4178 bool deleteTodo = true;
4178 QPtrList<Incidence> subTodos; 4179 QPtrList<Incidence> subTodos;
4179 Incidence *aTodo; 4180 Incidence *aTodo;
4180 subTodos = t->relations(); 4181 subTodos = t->relations();
4181 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4182 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4182 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4183 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4183 deleteTodo = false; 4184 deleteTodo = false;
4184 } 4185 }
4185 if ( deleteTodo ) { 4186 if ( deleteTodo ) {
4186 if ( t->isCompleted() && !t->doesRecur()) { 4187 if ( t->isCompleted() && !t->doesRecur()) {
4187 checkExternalId( t ); 4188 checkExternalId( t );
4188 mCalendar->deleteTodo( t ); 4189 mCalendar->deleteTodo( t );
4189 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4190 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4190 } 4191 }
4191 else 4192 else
4192 deleteTodo = false; 4193 deleteTodo = false;
4193 } 4194 }
4194 return deleteTodo; 4195 return deleteTodo;
4195 4196
4196} 4197}
4197void CalendarView::purgeCompleted() 4198void CalendarView::purgeCompleted()
4198{ 4199{
4199 int result = KMessageBox::warningContinueCancel(this, 4200 int result = KMessageBox::warningContinueCancel(this,
4200 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 4201 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
4201 4202
4202 if (result == KMessageBox::Continue) { 4203 if (result == KMessageBox::Continue) {
4203 4204
4204 QPtrList<Todo> todoCal; 4205 QPtrList<Todo> todoCal;
4205 QPtrList<Todo> rootTodos; 4206 QPtrList<Todo> rootTodos;
4206 //QPtrList<Incidence> rel; 4207 //QPtrList<Incidence> rel;
4207 Todo *aTodo;//, *rTodo; 4208 Todo *aTodo;//, *rTodo;
4208 Incidence *rIncidence; 4209 Incidence *rIncidence;
4209 bool childDelete = false; 4210 bool childDelete = false;
4210 bool deletedOne = true; 4211 bool deletedOne = true;
4211 todoCal = calendar()->todos(); 4212 todoCal = calendar()->todos();
4212 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 4213 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
4213 if ( !aTodo->relatedTo() ) 4214 if ( !aTodo->relatedTo() )
4214 rootTodos.append( aTodo ); 4215 rootTodos.append( aTodo );
4215 } 4216 }
4216 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 4217 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
4217 removeCompletedSubTodos( aTodo ); 4218 removeCompletedSubTodos( aTodo );
4218 } 4219 }
4219 4220
4220 updateView(); 4221 updateView();
4221 } 4222 }
4222} 4223}
4223 4224
4224void CalendarView::slotCalendarChanged() 4225void CalendarView::slotCalendarChanged()
4225{ 4226{
4226 ; 4227 ;
4227} 4228}
4228 4229
4229void CalendarView::keyPressEvent ( QKeyEvent *e) 4230void CalendarView::keyPressEvent ( QKeyEvent *e)
4230{ 4231{
4231 //qDebug(" alendarView::keyPressEvent "); 4232 //qDebug(" alendarView::keyPressEvent ");
4232 e->ignore(); 4233 e->ignore();
4233} 4234}
4234 4235
4235 4236
4236bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 4237bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
4237{ 4238{
4238 // mSyncManager = manager; 4239 // mSyncManager = manager;
4239 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 4240 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
4240 qDebug("KO: SyncKDE request detected!"); 4241 qDebug("KO: SyncKDE request detected!");
4241 } 4242 }
4242 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4243 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4243 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4244 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4244 return syncCalendar( filename, mode ); 4245 return syncCalendar( filename, mode );
4245} 4246}
4246bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 4247bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
4247{ 4248{
4248 //mSyncManager = manager; 4249 //mSyncManager = manager;
4249 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 4250 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
4250 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 4251 mCurrentSyncName = mSyncManager->getCurrentSyncName();
4251 if ( resource == "sharp" ) 4252 if ( resource == "sharp" )
4252 syncExternal( 0 ); 4253 syncExternal( 0 );
4253 if ( resource == "phone" ) 4254 if ( resource == "phone" )
4254 syncExternal( 1 ); 4255 syncExternal( 1 );
4255 // pending setmodified 4256 // pending setmodified
4256 return true; 4257 return true;
4257} 4258}
4258void CalendarView::setSyncManager(KSyncManager* manager) 4259void CalendarView::setSyncManager(KSyncManager* manager)
4259{ 4260{
4260 mSyncManager = manager; 4261 mSyncManager = manager;
4261} 4262}
4262 4263
4263void CalendarView::removeSyncInfo( QString syncProfile) 4264void CalendarView::removeSyncInfo( QString syncProfile)
4264{ 4265{
4265 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4266 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4266 mCalendar->removeSyncInfo( syncProfile ); 4267 mCalendar->removeSyncInfo( syncProfile );
4267 4268
4268} 4269}
4269 4270
4270void CalendarView::undo_delete() 4271void CalendarView::undo_delete()
4271{ 4272{
4272 //qDebug("undo_delete() "); 4273 //qDebug("undo_delete() ");
4273 Incidence* undo = mCalendar->undoIncidence(); 4274 Incidence* undo = mCalendar->undoIncidence();
4274 if ( !undo ) { 4275 if ( !undo ) {
4275 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4276 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4276 i18n("KO/Pi")); 4277 i18n("KO/Pi"));
4277 return; 4278 return;
4278 } 4279 }
4279 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4280 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4280 i18n("\nAre you sure you want\nto restore this?"), 4281 i18n("\nAre you sure you want\nto restore this?"),
4281 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4282 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4282 mCalendar->undoDeleteIncidence(); 4283 mCalendar->undoDeleteIncidence();
4283 updateView(); 4284 updateView();
4284 } 4285 }
4285} 4286}
4286 4287
4287void CalendarView::slotViewerClosed() 4288void CalendarView::slotViewerClosed()
4288{ 4289{
4289 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4290 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4290} 4291}
4291 4292
4292void CalendarView::resetFocus() 4293void CalendarView::resetFocus()
4293{ 4294{
4294 if ( mViewerCallerIsSearchDialog ) { 4295 if ( mViewerCallerIsSearchDialog ) {
4295 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4296 if ( mDialogManager->getSearchDialog()->isVisible() ){
4296 mDialogManager->getSearchDialog()->raise(); 4297 mDialogManager->getSearchDialog()->raise();
4297 mDialogManager->getSearchDialog()->setActiveWindow(); 4298 mDialogManager->getSearchDialog()->setActiveWindow();
4298 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4299 mDialogManager->getSearchDialog()->listview()->resetFocus();
4299 } else 4300 } else
4300 mViewerCallerIsSearchDialog = false; 4301 mViewerCallerIsSearchDialog = false;
4301 } 4302 }
4302 if ( !mViewerCallerIsSearchDialog ) { 4303 if ( !mViewerCallerIsSearchDialog ) {
4303 //mViewManager->currentView()->setFocus(); 4304 //mViewManager->currentView()->setFocus();
4304 //qDebug("sssssssssssssssset focus "); 4305 //qDebug("sssssssssssssssset focus ");
4305 topLevelWidget()->raise(); 4306 topLevelWidget()->raise();
4306 setActiveWindow(); 4307 setActiveWindow();
4307 //setFocus(); 4308 //setFocus();
4308 } 4309 }
4309 mViewerCallerIsSearchDialog = false; 4310 mViewerCallerIsSearchDialog = false;
4310} 4311}
4311 4312
4312void CalendarView::showNextAlarms() 4313void CalendarView::showNextAlarms()
4313{ 4314{
4314 QString message; 4315 QString message;
4315 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 4316 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4316 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 4317 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4317 QString sum = mCalendar->nextSummary(); 4318 QString sum = mCalendar->nextSummary();
4318 QDateTime nextA = mNextAlarmDateTime; 4319 QDateTime nextA = mNextAlarmDateTime;
4319 QDateTime cur = QDateTime::currentDateTime(); 4320 QDateTime cur = QDateTime::currentDateTime();
4320 int secs = cur.secsTo( nextA ); 4321 int secs = cur.secsTo( nextA );
4321 int min = secs /60; 4322 int min = secs /60;
4322 int hours = min /60; 4323 int hours = min /60;
4323 min = min % 60; 4324 min = min % 60;
4324 int days = hours /24; 4325 int days = hours /24;
4325 hours = hours % 24; 4326 hours = hours % 24;
4326 4327
4327 //message = i18n("The next alarm is in:\n"); 4328 //message = i18n("The next alarm is in:\n");
4328 if ( days > 1 ) 4329 if ( days > 1 )
4329 message += i18n("%1 days\n").arg( days ); 4330 message += i18n("%1 days\n").arg( days );
4330 else if ( days == 1 ) 4331 else if ( days == 1 )
4331 message += i18n("1 day\n"); 4332 message += i18n("1 day\n");
4332 if ( hours > 1 ) 4333 if ( hours > 1 )
4333 message += i18n("%1 hours\n").arg( hours ); 4334 message += i18n("%1 hours\n").arg( hours );
4334 else if ( hours == 1 ) 4335 else if ( hours == 1 )
4335 message += i18n("1 hour\n"); 4336 message += i18n("1 hour\n");
4336 if ( min > 1 ) 4337 if ( min > 1 )
4337 message += i18n("%1 minutes\n").arg( min ); 4338 message += i18n("%1 minutes\n").arg( min );
4338 else if ( min == 1 ) 4339 else if ( min == 1 )
4339 message += i18n("1 minute\n"); 4340 message += i18n("1 minute\n");
4340 if ( message.isEmpty() ) 4341 if ( message.isEmpty() )
4341 message = i18n("The next alarm is in\nless than one minute!"); 4342 message = i18n("The next alarm is in\nless than one minute!");
4342 else 4343 else
4343 message = i18n("The next alarm is in:\n") + message; 4344 message = i18n("The next alarm is in:\n") + message;
4344 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 4345 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4345 } else { 4346 } else {
4346 message = i18n("There is no next alarm."); 4347 message = i18n("There is no next alarm.");
4347 4348
4348 } 4349 }
4349#ifdef DESKTOP_VERSION 4350#ifdef DESKTOP_VERSION
4350 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 4351 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
4351 message += i18n("\nThe internal alarm notification is disabled!\n"); 4352 message += i18n("\nThe internal alarm notification is disabled!\n");
4352 message += i18n("Enable it in the settings menu, TAB alarm."); 4353 message += i18n("Enable it in the settings menu, TAB alarm.");
4353 } 4354 }
4354 4355
4355#endif 4356#endif
4356 KMessageBox::information( this, message); 4357 KMessageBox::information( this, message);
4357} 4358}
diff --git a/korganizer/kodialogmanager.cpp b/korganizer/kodialogmanager.cpp
index aa30c52..3dfa344 100644
--- a/korganizer/kodialogmanager.cpp
+++ b/korganizer/kodialogmanager.cpp
@@ -1,368 +1,355 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2001 4 Copyright (c) 2001
5 Cornelius Schumacher <schumacher@kde.org> 5 Cornelius Schumacher <schumacher@kde.org>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#include <libkdepim/categoryeditdialog.h> 22#include <libkdepim/categoryeditdialog.h>
23 23
24#include "calendarview.h" 24#include "calendarview.h"
25#include "incomingdialog.h" 25#include "incomingdialog.h"
26#include "outgoingdialog.h" 26#include "outgoingdialog.h"
27#include "koprefsdialog.h" 27#include "koprefsdialog.h"
28#include "koeventeditor.h" 28#include "koeventeditor.h"
29#include "koprefs.h" 29#include "koprefs.h"
30#include "datenavigator.h" 30#include "datenavigator.h"
31#include "kotodoeditor.h" 31#include "kotodoeditor.h"
32#include "searchdialog.h" 32#include "searchdialog.h"
33#include "filtereditdialog.h" 33#include "filtereditdialog.h"
34#ifndef KORG_NOPLUGINS 34#ifndef KORG_NOPLUGINS
35#include "plugindialog.h" 35#include "plugindialog.h"
36#endif 36#endif
37#ifndef KORG_NOARCHIVE 37#ifndef KORG_NOARCHIVE
38#include "archivedialog.h" 38#include "archivedialog.h"
39#endif 39#endif
40 40
41#include "kconfig.h" 41#include "kconfig.h"
42#include "kodialogmanager.h" 42#include "kodialogmanager.h"
43#include <kapplication.h> 43#include <kapplication.h>
44 44
45KODialogManager::KODialogManager( CalendarView *mainView ) : 45KODialogManager::KODialogManager( CalendarView *mainView ) :
46 QObject(), mMainView( mainView ) 46 QObject(), mMainView( mainView )
47{ 47{
48 mOutgoingDialog = 0; 48 mOutgoingDialog = 0;
49 mIncomingDialog = 0; 49 mIncomingDialog = 0;
50 mOptionsDialog = 0; 50 mOptionsDialog = 0;
51 mSearchDialog = 0; 51 mSearchDialog = 0;
52 mArchiveDialog = 0; 52 mArchiveDialog = 0;
53 mFilterEditDialog = 0; 53 mFilterEditDialog = 0;
54 mPluginDialog = 0; 54 mPluginDialog = 0;
55 55
56 // mCategoryEditDialog = new KPIM::CategoryEditDialog(KOPrefs::instance(),mMainView); 56 // mCategoryEditDialog = new KPIM::CategoryEditDialog(KOPrefs::instance(),mMainView);
57 //KOGlobals::fitDialogToScreen( mCategoryEditDialog ); 57 //KOGlobals::fitDialogToScreen( mCategoryEditDialog );
58} 58}
59 59
60KODialogManager::~KODialogManager() 60KODialogManager::~KODialogManager()
61{ 61{
62 delete mOutgoingDialog; 62 delete mOutgoingDialog;
63 delete mIncomingDialog; 63 delete mIncomingDialog;
64 delete mOptionsDialog; 64 delete mOptionsDialog;
65 delete mSearchDialog; 65 delete mSearchDialog;
66#ifndef KORG_NOARCHIVE 66#ifndef KORG_NOARCHIVE
67 delete mArchiveDialog; 67 delete mArchiveDialog;
68#endif 68#endif
69 delete mFilterEditDialog; 69 delete mFilterEditDialog;
70#ifndef KORG_NOPLUGINS 70#ifndef KORG_NOPLUGINS
71 delete mPluginDialog; 71 delete mPluginDialog;
72#endif 72#endif
73} 73}
74 74
75OutgoingDialog *KODialogManager::outgoingDialog() 75OutgoingDialog *KODialogManager::outgoingDialog()
76{ 76{
77 createOutgoingDialog(); 77 createOutgoingDialog();
78 return mOutgoingDialog; 78 return mOutgoingDialog;
79} 79}
80 80
81void KODialogManager::createOutgoingDialog() 81void KODialogManager::createOutgoingDialog()
82{ 82{
83 if (!mOutgoingDialog) { 83 if (!mOutgoingDialog) {
84 mOutgoingDialog = new OutgoingDialog(mMainView->calendar(),mMainView); 84 mOutgoingDialog = new OutgoingDialog(mMainView->calendar(),mMainView);
85 if (mIncomingDialog) mIncomingDialog->setOutgoingDialog(mOutgoingDialog); 85 if (mIncomingDialog) mIncomingDialog->setOutgoingDialog(mOutgoingDialog);
86 connect(mOutgoingDialog,SIGNAL(numMessagesChanged(int)), 86 connect(mOutgoingDialog,SIGNAL(numMessagesChanged(int)),
87 mMainView,SIGNAL(numOutgoingChanged(int))); 87 mMainView,SIGNAL(numOutgoingChanged(int)));
88 } 88 }
89} 89}
90 90
91void KODialogManager::showGlobalOptionsDialog( bool showSync ) 91void KODialogManager::showGlobalOptionsDialog( bool showSync )
92{ 92{
93 if (!mOptionsDialog) { 93 KPimPrefsGlobalDialog gc ( mMainView );
94 mOptionsDialog = new KOPrefsDialog(0); 94 if ( showSync )
95 connect(mOptionsDialog,SIGNAL(configChanged()), 95 gc.showTZconfig();
96 mMainView,SLOT(updateConfig())); 96 gc.exec();
97 }
98 mOptionsDialog->readConfig();
99#ifndef DESKTOP_VERSION
100 mOptionsDialog->showMaximized();
101#else
102 mOptionsDialog->show();
103#endif
104 if ( showSync )
105 mOptionsDialog->showSyncPage();
106 mOptionsDialog->exec();
107 delete mOptionsDialog;
108 mOptionsDialog = 0;
109} 97}
110void KODialogManager::showOptionsDialog( bool showSync ) 98void KODialogManager::showOptionsDialog( bool showSync )
111{ 99{
112 100
113 if (!mOptionsDialog) { 101 if (!mOptionsDialog) {
114 mOptionsDialog = new KOPrefsDialog(mMainView); 102 mOptionsDialog = new KOPrefsDialog(mMainView);
115 connect(mOptionsDialog,SIGNAL(configChanged()), 103 connect(mOptionsDialog,SIGNAL(configChanged()),
116 mMainView,SLOT(updateConfig())); 104 mMainView,SLOT(updateConfig()));
117 } 105 }
118 mOptionsDialog->readConfig(); 106 mOptionsDialog->readConfig();
119#ifndef DESKTOP_VERSION 107#ifndef DESKTOP_VERSION
120 mOptionsDialog->showMaximized(); 108 mOptionsDialog->showMaximized();
121#else 109#else
122 mOptionsDialog->show(); 110 mOptionsDialog->show();
123#endif 111#endif
124 if ( showSync ) 112
125 mOptionsDialog->showSyncPage();
126 mOptionsDialog->exec(); 113 mOptionsDialog->exec();
127 delete mOptionsDialog; 114 delete mOptionsDialog;
128 mOptionsDialog = 0; 115 mOptionsDialog = 0;
129} 116}
130void KODialogManager::showSyncOptions() 117void KODialogManager::showSyncOptions()
131{ 118{
132 showGlobalOptionsDialog( true ); 119 showGlobalOptionsDialog( true );
133 120
134} 121}
135void KODialogManager::showOutgoingDialog() 122void KODialogManager::showOutgoingDialog()
136{ 123{
137 createOutgoingDialog(); 124 createOutgoingDialog();
138 mOutgoingDialog->show(); 125 mOutgoingDialog->show();
139 mOutgoingDialog->raise(); 126 mOutgoingDialog->raise();
140} 127}
141 128
142IncomingDialog *KODialogManager::incomingDialog() 129IncomingDialog *KODialogManager::incomingDialog()
143{ 130{
144 createOutgoingDialog(); 131 createOutgoingDialog();
145 if (!mIncomingDialog) { 132 if (!mIncomingDialog) {
146 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView); 133 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView);
147 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)), 134 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)),
148 mMainView,SIGNAL(numIncomingChanged(int))); 135 mMainView,SIGNAL(numIncomingChanged(int)));
149 connect(mIncomingDialog,SIGNAL(calendarUpdated()), 136 connect(mIncomingDialog,SIGNAL(calendarUpdated()),
150 mMainView,SLOT(updateView())); 137 mMainView,SLOT(updateView()));
151 } 138 }
152 return mIncomingDialog; 139 return mIncomingDialog;
153} 140}
154 141
155void KODialogManager::createIncomingDialog() 142void KODialogManager::createIncomingDialog()
156{ 143{
157 createOutgoingDialog(); 144 createOutgoingDialog();
158 if (!mIncomingDialog) { 145 if (!mIncomingDialog) {
159 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView); 146 mIncomingDialog = new IncomingDialog(mMainView->calendar(),mOutgoingDialog,mMainView);
160 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)), 147 connect(mIncomingDialog,SIGNAL(numMessagesChanged(int)),
161 mMainView,SIGNAL(numIncomingChanged(int))); 148 mMainView,SIGNAL(numIncomingChanged(int)));
162 connect(mIncomingDialog,SIGNAL(calendarUpdated()), 149 connect(mIncomingDialog,SIGNAL(calendarUpdated()),
163 mMainView,SLOT(updateView())); 150 mMainView,SLOT(updateView()));
164 } 151 }
165} 152}
166 153
167void KODialogManager::showIncomingDialog() 154void KODialogManager::showIncomingDialog()
168{ 155{
169 createIncomingDialog(); 156 createIncomingDialog();
170 mIncomingDialog->show(); 157 mIncomingDialog->show();
171 mIncomingDialog->raise(); 158 mIncomingDialog->raise();
172} 159}
173/* 160/*
174void KODialogManager::showCategoryEditDialog() 161void KODialogManager::showCategoryEditDialog()
175{ 162{
176 mCategoryEditDialog->show(); 163 mCategoryEditDialog->show();
177} 164}
178*/ 165*/
179void KODialogManager::hideSearchDialog() 166void KODialogManager::hideSearchDialog()
180{ 167{
181 if (mSearchDialog) 168 if (mSearchDialog)
182 mSearchDialog->hide(); 169 mSearchDialog->hide();
183} 170}
184 171
185void KODialogManager::showSearchDialog() 172void KODialogManager::showSearchDialog()
186{ 173{
187 if (!mSearchDialog) { 174 if (!mSearchDialog) {
188 mSearchDialog = new SearchDialog(mMainView->calendar(),mMainView); 175 mSearchDialog = new SearchDialog(mMainView->calendar(),mMainView);
189 KOListView * lview = mSearchDialog->listview(); 176 KOListView * lview = mSearchDialog->listview();
190 177
191 connect(lview, SIGNAL(showIncidenceSignal(Incidence *)), 178 connect(lview, SIGNAL(showIncidenceSignal(Incidence *)),
192 mMainView, SLOT(showIncidence(Incidence *))); 179 mMainView, SLOT(showIncidence(Incidence *)));
193 connect(lview, SIGNAL(editIncidenceSignal(Incidence *)), 180 connect(lview, SIGNAL(editIncidenceSignal(Incidence *)),
194 mMainView, SLOT(editIncidence(Incidence *))); 181 mMainView, SLOT(editIncidence(Incidence *)));
195 connect(lview, SIGNAL(deleteIncidenceSignal(Incidence *)), 182 connect(lview, SIGNAL(deleteIncidenceSignal(Incidence *)),
196 mMainView, SLOT(deleteIncidence(Incidence *))); 183 mMainView, SLOT(deleteIncidence(Incidence *)));
197 connect(lview, SIGNAL(cloneIncidenceSignal(Incidence *)), 184 connect(lview, SIGNAL(cloneIncidenceSignal(Incidence *)),
198 mMainView, SLOT(cloneIncidence(Incidence *))); 185 mMainView, SLOT(cloneIncidence(Incidence *)));
199 connect(lview, SIGNAL(beamIncidenceSignal(Incidence *)), 186 connect(lview, SIGNAL(beamIncidenceSignal(Incidence *)),
200 mMainView, SLOT(beamIncidence(Incidence *))); 187 mMainView, SLOT(beamIncidence(Incidence *)));
201 connect(lview, SIGNAL(moveIncidenceSignal(Incidence *)), 188 connect(lview, SIGNAL(moveIncidenceSignal(Incidence *)),
202 mMainView, SLOT(moveIncidence(Incidence *))); 189 mMainView, SLOT(moveIncidence(Incidence *)));
203 connect(lview, SIGNAL(beamIncidenceList(QPtrList<Incidence> )), 190 connect(lview, SIGNAL(beamIncidenceList(QPtrList<Incidence> )),
204 mMainView, SLOT(beamIncidenceList(QPtrList<Incidence> ))); 191 mMainView, SLOT(beamIncidenceList(QPtrList<Incidence> )));
205 192
206 connect(mMainView, SIGNAL(configChanged()), mSearchDialog, SLOT(updateConfig())); 193 connect(mMainView, SIGNAL(configChanged()), mSearchDialog, SLOT(updateConfig()));
207 connect(mMainView, SIGNAL(updateSearchDialog()), mSearchDialog, SLOT(updateList())); 194 connect(mMainView, SIGNAL(updateSearchDialog()), mSearchDialog, SLOT(updateList()));
208 // connect( lview, SIGNAL( incidenceSelected( Incidence * ) ), 195 // connect( lview, SIGNAL( incidenceSelected( Incidence * ) ),
209 // mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); 196 // mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
210#ifndef DESKTOP_VERSION 197#ifndef DESKTOP_VERSION
211 mSearchDialog->setMaximumSize( QApplication::desktop()->size()); 198 mSearchDialog->setMaximumSize( QApplication::desktop()->size());
212 mSearchDialog->showMaximized(); 199 mSearchDialog->showMaximized();
213#else 200#else
214 KConfig *config = KOGlobals::config(); 201 KConfig *config = KOGlobals::config();
215 config->setGroup("WidgetLayout"); 202 config->setGroup("WidgetLayout");
216 QStringList list; 203 QStringList list;
217 list = config->readListEntry("SearchLayout"); 204 list = config->readListEntry("SearchLayout");
218 int x,y,w,h; 205 int x,y,w,h;
219 if ( ! list.isEmpty() ) { 206 if ( ! list.isEmpty() ) {
220 x = list[0].toInt(); 207 x = list[0].toInt();
221 y = list[1].toInt(); 208 y = list[1].toInt();
222 w = list[2].toInt(); 209 w = list[2].toInt();
223 h = list[3].toInt(); 210 h = list[3].toInt();
224 KApplication::testCoords( &x,&y,&w,&h ); 211 KApplication::testCoords( &x,&y,&w,&h );
225 mSearchDialog->setGeometry(x,y,w,h); 212 mSearchDialog->setGeometry(x,y,w,h);
226 213
227 } 214 }
228 215
229#endif 216#endif
230 } 217 }
231 // make sure the widget is on top again 218 // make sure the widget is on top again
232#ifdef DESKTOP_VERSION 219#ifdef DESKTOP_VERSION
233 mSearchDialog->show(); 220 mSearchDialog->show();
234#else 221#else
235 mSearchDialog->setMaximumSize( QApplication::desktop()->size()); 222 mSearchDialog->setMaximumSize( QApplication::desktop()->size());
236 mSearchDialog->showMaximized(); 223 mSearchDialog->showMaximized();
237#endif 224#endif
238 mSearchDialog->raiseAndSelect(); 225 mSearchDialog->raiseAndSelect();
239} 226}
240 227
241SearchDialog * KODialogManager::getSearchDialog() 228SearchDialog * KODialogManager::getSearchDialog()
242{ 229{
243 return mSearchDialog; 230 return mSearchDialog;
244} 231}
245void KODialogManager::showArchiveDialog() 232void KODialogManager::showArchiveDialog()
246{ 233{
247#ifndef KORG_NOARCHIVE 234#ifndef KORG_NOARCHIVE
248 if (!mArchiveDialog) { 235 if (!mArchiveDialog) {
249 mArchiveDialog = new ArchiveDialog(mMainView->calendar(),mMainView); 236 mArchiveDialog = new ArchiveDialog(mMainView->calendar(),mMainView);
250 connect(mArchiveDialog,SIGNAL(eventsDeleted()), 237 connect(mArchiveDialog,SIGNAL(eventsDeleted()),
251 mMainView,SLOT(updateView())); 238 mMainView,SLOT(updateView()));
252 } 239 }
253 mArchiveDialog->show(); 240 mArchiveDialog->show();
254 mArchiveDialog->raise(); 241 mArchiveDialog->raise();
255 242
256 // Workaround. 243 // Workaround.
257 QApplication::restoreOverrideCursor(); 244 QApplication::restoreOverrideCursor();
258#endif 245#endif
259} 246}
260 247
261void KODialogManager::showFilterEditDialog(QPtrList<CalFilter> *filters) 248void KODialogManager::showFilterEditDialog(QPtrList<CalFilter> *filters)
262{ 249{
263 if (!mFilterEditDialog) { 250 if (!mFilterEditDialog) {
264 mFilterEditDialog = new FilterEditDialog(filters,mMainView); 251 mFilterEditDialog = new FilterEditDialog(filters,mMainView);
265 connect(mFilterEditDialog,SIGNAL(filterChanged()), 252 connect(mFilterEditDialog,SIGNAL(filterChanged()),
266 mMainView,SLOT(filterEdited())); 253 mMainView,SLOT(filterEdited()));
267 254
268 } 255 }
269 256
270#ifndef DESKTOP_VERSION 257#ifndef DESKTOP_VERSION
271 mFilterEditDialog->showMaximized(); 258 mFilterEditDialog->showMaximized();
272#else 259#else
273 mFilterEditDialog->show(); 260 mFilterEditDialog->show();
274#endif 261#endif
275 mFilterEditDialog->raise(); 262 mFilterEditDialog->raise();
276} 263}
277 264
278void KODialogManager::showPluginDialog() 265void KODialogManager::showPluginDialog()
279{ 266{
280#ifndef KORG_NOPLUGINS 267#ifndef KORG_NOPLUGINS
281 if (!mPluginDialog) { 268 if (!mPluginDialog) {
282 mPluginDialog = new PluginDialog(mMainView); 269 mPluginDialog = new PluginDialog(mMainView);
283 connect(mPluginDialog,SIGNAL(configChanged()), 270 connect(mPluginDialog,SIGNAL(configChanged()),
284 mMainView,SLOT(updateConfig())); 271 mMainView,SLOT(updateConfig()));
285 } 272 }
286 mPluginDialog->show(); 273 mPluginDialog->show();
287 mPluginDialog->raise(); 274 mPluginDialog->raise();
288#endif 275#endif
289} 276}
290 277
291KOEventEditor *KODialogManager::getEventEditor() 278KOEventEditor *KODialogManager::getEventEditor()
292{ 279{
293 KOEventEditor *eventEditor = new KOEventEditor( mMainView->calendar(), 280 KOEventEditor *eventEditor = new KOEventEditor( mMainView->calendar(),
294 mMainView ); 281 mMainView );
295 282
296 connect(eventEditor,SIGNAL(eventAdded(Event *)), 283 connect(eventEditor,SIGNAL(eventAdded(Event *)),
297 mMainView,SLOT(eventAdded(Event *))); 284 mMainView,SLOT(eventAdded(Event *)));
298 connect(eventEditor,SIGNAL(eventChanged(Event *)), 285 connect(eventEditor,SIGNAL(eventChanged(Event *)),
299 mMainView,SLOT(eventChanged(Event *))); 286 mMainView,SLOT(eventChanged(Event *)));
300 connect(eventEditor,SIGNAL(eventDeleted()), 287 connect(eventEditor,SIGNAL(eventDeleted()),
301 mMainView,SLOT(eventDeleted())); 288 mMainView,SLOT(eventDeleted()));
302 connect(eventEditor,SIGNAL(deleteAttendee(Incidence *)), 289 connect(eventEditor,SIGNAL(deleteAttendee(Incidence *)),
303 mMainView,SLOT(schedule_cancel(Incidence *))); 290 mMainView,SLOT(schedule_cancel(Incidence *)));
304 connect( eventEditor, SIGNAL(jumpToTime( const QDate &)), 291 connect( eventEditor, SIGNAL(jumpToTime( const QDate &)),
305 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 292 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
306 connect( eventEditor, SIGNAL( showAgendaView( bool)), 293 connect( eventEditor, SIGNAL( showAgendaView( bool)),
307 mMainView->viewManager(), SLOT( showAgendaView( bool) ) ); 294 mMainView->viewManager(), SLOT( showAgendaView( bool) ) );
308 295
309 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()), 296 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()),
310 // eventEditor,SLOT(updateCategoryConfig())); 297 // eventEditor,SLOT(updateCategoryConfig()));
311 // connect(eventEditor,SIGNAL(editCategories()), 298 // connect(eventEditor,SIGNAL(editCategories()),
312 // mCategoryEditDialog,SLOT(show())); 299 // mCategoryEditDialog,SLOT(show()));
313 connect(eventEditor,SIGNAL(dialogClose(Incidence*)), 300 connect(eventEditor,SIGNAL(dialogClose(Incidence*)),
314 mMainView,SLOT(dialogClosing(Incidence*))); 301 mMainView,SLOT(dialogClosing(Incidence*)));
315 302
316 //connect(mMainView,SIGNAL(closingDown()),eventEditor,SLOT(reject())); 303 //connect(mMainView,SIGNAL(closingDown()),eventEditor,SLOT(reject()));
317 304
318#ifndef DESKTOP_VERSION 305#ifndef DESKTOP_VERSION
319 eventEditor->resize( QApplication::desktop()->width() -20, 100 ); 306 eventEditor->resize( QApplication::desktop()->width() -20, 100 );
320#endif 307#endif
321 return eventEditor; 308 return eventEditor;
322} 309}
323 310
324KOTodoEditor *KODialogManager::getTodoEditor() 311KOTodoEditor *KODialogManager::getTodoEditor()
325{ 312{
326 KOTodoEditor *todoEditor = new KOTodoEditor( mMainView->calendar(), 313 KOTodoEditor *todoEditor = new KOTodoEditor( mMainView->calendar(),
327 mMainView ); 314 mMainView );
328 315
329 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()), 316 // connect(mCategoryEditDialog,SIGNAL(categoryConfigChanged()),
330 // todoEditor,SLOT(updateCategoryConfig())); 317 // todoEditor,SLOT(updateCategoryConfig()));
331 // connect(todoEditor,SIGNAL(editCategories()),mCategoryEditDialog,SLOT(show())); 318 // connect(todoEditor,SIGNAL(editCategories()),mCategoryEditDialog,SLOT(show()));
332 319
333 connect(todoEditor,SIGNAL(todoAdded(Todo *)), 320 connect(todoEditor,SIGNAL(todoAdded(Todo *)),
334 mMainView,SLOT(todoAdded(Todo *))); 321 mMainView,SLOT(todoAdded(Todo *)));
335 connect(todoEditor,SIGNAL(todoChanged(Todo *)), 322 connect(todoEditor,SIGNAL(todoChanged(Todo *)),
336 mMainView,SLOT(todoChanged(Todo *))); 323 mMainView,SLOT(todoChanged(Todo *)));
337 connect(todoEditor,SIGNAL(todoDeleted()), 324 connect(todoEditor,SIGNAL(todoDeleted()),
338 mMainView,SLOT(todoDeleted())); 325 mMainView,SLOT(todoDeleted()));
339 connect(todoEditor,SIGNAL(dialogClose(Incidence*)), 326 connect(todoEditor,SIGNAL(dialogClose(Incidence*)),
340 mMainView,SLOT(dialogClosing(Incidence*))); 327 mMainView,SLOT(dialogClosing(Incidence*)));
341 connect( todoEditor, SIGNAL(jumpToTime( const QDate &)), 328 connect( todoEditor, SIGNAL(jumpToTime( const QDate &)),
342 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 329 mMainView->dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
343 connect( todoEditor, SIGNAL( showAgendaView( bool)), 330 connect( todoEditor, SIGNAL( showAgendaView( bool)),
344 mMainView->viewManager(), SLOT( showAgendaView( bool) ) ); 331 mMainView->viewManager(), SLOT( showAgendaView( bool) ) );
345 // connect(todoEditor,SIGNAL(deleteAttendee(Incidence *)), 332 // connect(todoEditor,SIGNAL(deleteAttendee(Incidence *)),
346 // mMainView,SLOT(schedule_cancel(Incidence *))); 333 // mMainView,SLOT(schedule_cancel(Incidence *)));
347 //connect(mMainView,SIGNAL(closingDown()),todoEditor,SLOT(reject())); 334 //connect(mMainView,SIGNAL(closingDown()),todoEditor,SLOT(reject()));
348#ifndef DESKTOP_VERSION 335#ifndef DESKTOP_VERSION
349 todoEditor->resize( QApplication::desktop()->width() -20, 100 ); 336 todoEditor->resize( QApplication::desktop()->width() -20, 100 );
350#endif 337#endif
351 return todoEditor; 338 return todoEditor;
352} 339}
353 340
354void KODialogManager::updateSearchDialog() 341void KODialogManager::updateSearchDialog()
355{ 342{
356 if (mSearchDialog) mSearchDialog->updateView(); 343 if (mSearchDialog) mSearchDialog->updateView();
357} 344}
358 345
359void KODialogManager::setDocumentId( const QString &id ) 346void KODialogManager::setDocumentId( const QString &id )
360{ 347{
361 if (mOutgoingDialog) mOutgoingDialog->setDocumentId( id ); 348 if (mOutgoingDialog) mOutgoingDialog->setDocumentId( id );
362} 349}
363 350
364void KODialogManager::writeSettings( KConfig *config ) 351void KODialogManager::writeSettings( KConfig *config )
365{ 352{
366 if (mSearchDialog) 353 if (mSearchDialog)
367 mSearchDialog->listview()->writeSettings(config,"SearchListView Layout"); 354 mSearchDialog->listview()->writeSettings(config,"SearchListView Layout");
368} 355}
diff --git a/korganizer/koprefsdialog.cpp b/korganizer/koprefsdialog.cpp
index 4b5b66a..b782bb1 100644
--- a/korganizer/koprefsdialog.cpp
+++ b/korganizer/koprefsdialog.cpp
@@ -1,1755 +1,1497 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qlineedit.h> 28#include <qlineedit.h>
29#include <qfont.h> 29#include <qfont.h>
30#include <qslider.h> 30#include <qslider.h>
31#include <qfile.h> 31#include <qfile.h>
32#include <qtextstream.h> 32#include <qtextstream.h>
33#include <qcombobox.h> 33#include <qcombobox.h>
34#include <qvbox.h> 34#include <qvbox.h>
35#include <qhbox.h> 35#include <qhbox.h>
36#include <qregexp.h> 36#include <qregexp.h>
37#include <qspinbox.h> 37#include <qspinbox.h>
38#include <qdatetime.h> 38#include <qdatetime.h>
39#include <qcheckbox.h> 39#include <qcheckbox.h>
40#include <qradiobutton.h> 40#include <qradiobutton.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qstrlist.h> 42#include <qstrlist.h>
43#include <qapplication.h> 43#include <qapplication.h>
44 44
45#include <kcolorbutton.h> 45#include <kcolorbutton.h>
46#include <kdebug.h> 46#include <kdebug.h>
47#include <klocale.h> 47#include <klocale.h>
48#include <kglobal.h> 48#include <kglobal.h>
49#include <kfontdialog.h> 49#include <kfontdialog.h>
50#include <kfiledialog.h> 50#include <kfiledialog.h>
51#include <kmessagebox.h> 51#include <kmessagebox.h>
52#include <kcolordialog.h> 52#include <kcolordialog.h>
53#include <kiconloader.h> 53#include <kiconloader.h>
54#include <kemailsettings.h> 54#include <kemailsettings.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kglobalsettings.h> 56#include <kglobalsettings.h>
57 57
58#include <kurlrequester.h> 58#include <kurlrequester.h>
59#include <klineedit.h> 59#include <klineedit.h>
60 60
61#if defined(USE_SOLARIS) 61#if defined(USE_SOLARIS)
62#include <sys/param.h> 62#include <sys/param.h>
63 63
64#define ZONEINFODIR "/usr/share/lib/zoneinfo" 64#define ZONEINFODIR "/usr/share/lib/zoneinfo"
65#define INITFILE "/etc/default/init" 65#define INITFILE "/etc/default/init"
66#endif 66#endif
67 67
68#include "koprefs.h" 68#include "koprefs.h"
69 69
70#include "koprefsdialog.h" 70#include "koprefsdialog.h"
71#include "kpimglobalprefs.h" 71#include "kpimglobalprefs.h"
72 72
73 73
74KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) : 74KOPrefsDialog::KOPrefsDialog(QWidget *parent, char *name, bool modal) :
75 KPrefsDialog(KOPrefs::instance(),parent,name,true) 75 KPrefsDialog(KOPrefs::instance(),parent,name,true)
76{ 76{
77 77
78 setFont( KGlobalSettings::generalMaxFont() ); 78 setFont( KGlobalSettings::generalMaxFont() );
79 setCaption( i18n("Preferences - some settings need a restart (nr)")); 79 setCaption( i18n("Preferences - some settings need a restart (nr)"));
80 mCategoryDict.setAutoDelete(true); 80 mCategoryDict.setAutoDelete(true);
81 81
82 KGlobal::locale()->insertCatalogue("timezones"); 82 KGlobal::locale()->insertCatalogue("timezones");
83 mSpacingHint = spacingHintSmall(); 83 mSpacingHint = spacingHintSmall();
84 mMarginHint = marginHintSmall(); 84 mMarginHint = marginHintSmall();
85#ifndef DESKTOP_VERSION 85#ifndef DESKTOP_VERSION
86 if ( QApplication::desktop()->height() == 480 ) 86 if ( QApplication::desktop()->height() == 480 )
87 hideButtons(); 87 hideButtons();
88#endif 88#endif
89 kdelibcfg = 0; 89
90 if ( !parent )
91 setupGlobalTab();
92 else {
93 setupMainTab(); 90 setupMainTab();
94 // setupLocaleTab(); 91 // setupLocaleTab();
95 //setupTimeZoneTab(); 92 //setupTimeZoneTab();
96 setupTimeTab(); 93 setupTimeTab();
97 //setupLocaleDateTab(); 94 //setupLocaleDateTab();
98 setupFontsTab(); 95 setupFontsTab();
99 setupColorsTab(); 96 setupColorsTab();
100 setupViewsTab(); 97 setupViewsTab();
101 //setupSyncTab(); 98 //setupSyncTab();
102 //setupSyncAlgTab(); 99 //setupSyncAlgTab();
103 //setupPrinterTab(); 100 //setupPrinterTab();
104 //setupGroupSchedulingTab(); 101 //setupGroupSchedulingTab();
105 //setupGroupAutomationTab(); 102 //setupGroupAutomationTab();
106 } 103
107 104
108} 105}
109 106
110 107
111KOPrefsDialog::~KOPrefsDialog() 108KOPrefsDialog::~KOPrefsDialog()
112{ 109{
113} 110}
114void KOPrefsDialog::setupGlobalTab() 111void KOPrefsDialog::setupGlobalTab()
115{ 112{
116 //QFrame *topFrame = addPage(i18n("Global"),0,0); 113
117 kdelibcfg = new KDEPIMConfigWidget( KPimGlobalPrefs::instance(), this, "KCMKdeLibConfig" );
118 setMainWidget( kdelibcfg );
119 setCaption( i18n("KDE-Pim Global Settings"));
120
121 114
122} 115}
123void KOPrefsDialog::setupLocaleDateTab() 116void KOPrefsDialog::setupLocaleDateTab()
124{ 117{
125#if 0 118#if 0
126QFrame *topFrame = addPage(i18n("Date Format"),0,0); 119QFrame *topFrame = addPage(i18n("Date Format"),0,0);
127 QGridLayout *topLayout = new QGridLayout(topFrame,3,2); 120 QGridLayout *topLayout = new QGridLayout(topFrame,3,2);
128 topLayout->setSpacing(mSpacingHint); 121 topLayout->setSpacing(mSpacingHint);
129 topLayout->setMargin(mMarginHint); 122 topLayout->setMargin(mMarginHint);
130 int iii = 0; 123 int iii = 0;
131 124
132 125
133 KPrefsDialogWidRadios *syncPrefsGroup = 126 KPrefsDialogWidRadios *syncPrefsGroup =
134 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame); 127 addWidRadios(i18n("Date Format:"),&(KOPrefs::instance()->mPreferredDate),topFrame);
135 QString format; 128 QString format;
136 if ( QApplication::desktop()->width() < 480 ) 129 if ( QApplication::desktop()->width() < 480 )
137 format = "(%d.%m.%Y)"; 130 format = "(%d.%m.%Y)";
138 else 131 else
139 format = "(%d.%m.%Y|%A %d %B %Y)"; 132 format = "(%d.%m.%Y|%A %d %B %Y)";
140 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format)); 133 syncPrefsGroup->addRadio(i18n("24.03.2004 "+format));
141 if ( QApplication::desktop()->width() < 480 ) 134 if ( QApplication::desktop()->width() < 480 )
142 format = "(%m.%d.%Y)"; 135 format = "(%m.%d.%Y)";
143 else 136 else
144 format = "(%m.%d.%Y|%A %B %d %Y)"; 137 format = "(%m.%d.%Y|%A %B %d %Y)";
145 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format)); 138 syncPrefsGroup->addRadio(i18n("03.24.2004 "+format));
146 if ( QApplication::desktop()->width() < 480 ) 139 if ( QApplication::desktop()->width() < 480 )
147 format = "(%Y-%m-%d)"; 140 format = "(%Y-%m-%d)";
148 else 141 else
149 format = "(%Y-%m-%d|%A %Y %B %d)"; 142 format = "(%Y-%m-%d|%A %Y %B %d)";
150 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format)); 143 syncPrefsGroup->addRadio(i18n("2004-03-24 "+format));
151 syncPrefsGroup->addRadio(i18n("User defined")); 144 syncPrefsGroup->addRadio(i18n("User defined"));
152 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 145 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
153 ++iii; 146 ++iii;
154 ++iii; 147 ++iii;
155 QLabel * lab; 148 QLabel * lab;
156 mUserDateFormatLong = new QLineEdit(topFrame); 149 mUserDateFormatLong = new QLineEdit(topFrame);
157 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame); 150 lab = new QLabel(mUserDateFormatLong, i18n("User long date:"), topFrame);
158 topLayout->addWidget(lab ,iii,0); 151 topLayout->addWidget(lab ,iii,0);
159 topLayout->addWidget(mUserDateFormatLong,iii,1); 152 topLayout->addWidget(mUserDateFormatLong,iii,1);
160 ++iii; 153 ++iii;
161 mUserDateFormatShort = new QLineEdit(topFrame); 154 mUserDateFormatShort = new QLineEdit(topFrame);
162 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame); 155 lab = new QLabel(mUserDateFormatShort, i18n("User short date:"), topFrame);
163 topLayout->addWidget(lab ,iii,0); 156 topLayout->addWidget(lab ,iii,0);
164 topLayout->addWidget(mUserDateFormatShort,iii,1); 157 topLayout->addWidget(mUserDateFormatShort,iii,1);
165 ++iii; 158 ++iii;
166 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame); 159 lab = new QLabel( i18n("Monday 19 April 2004: %A %d %B %Y"), topFrame);
167 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 160 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
168 ++iii; 161 ++iii;
169 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame); 162 lab = new QLabel( i18n("Mon 19.04.04: %a %d.%m.%y"), topFrame);
170 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 163 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
171 ++iii; 164 ++iii;
172 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame); 165 lab = new QLabel( i18n("Mon, 19.Apr.04: %a, %d.%b.%y"), topFrame);
173 topLayout->addMultiCellWidget(lab ,iii,iii,0,1); 166 topLayout->addMultiCellWidget(lab ,iii,iii,0,1);
174 ++iii; 167 ++iii;
175#endif 168#endif
176 169
177} 170}
178 171
179void KOPrefsDialog::setupLocaleTab() 172void KOPrefsDialog::setupLocaleTab()
180{ 173{
181#if 0 174#if 0
182 QFrame *topFrame = addPage(i18n("Locale"),0,0); 175 QFrame *topFrame = addPage(i18n("Locale"),0,0);
183 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 176 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
184 topLayout->setSpacing(mSpacingHint); 177 topLayout->setSpacing(mSpacingHint);
185 topLayout->setMargin(mMarginHint); 178 topLayout->setMargin(mMarginHint);
186 int iii = 0; 179 int iii = 0;
187 KPrefsDialogWidRadios *syncPrefsGroup = 180 KPrefsDialogWidRadios *syncPrefsGroup =
188 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame); 181 addWidRadios(i18n("Language:(needs restart)"),&(KOPrefs::instance()->mPreferredLanguage),topFrame);
189 syncPrefsGroup->addRadio(i18n("English")); 182 syncPrefsGroup->addRadio(i18n("English"));
190 syncPrefsGroup->addRadio(i18n("German")); 183 syncPrefsGroup->addRadio(i18n("German"));
191 syncPrefsGroup->addRadio(i18n("French")); 184 syncPrefsGroup->addRadio(i18n("French"));
192 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)")); 185 syncPrefsGroup->addRadio(i18n("User defined (usertranslation.txt)"));
193 if ( QApplication::desktop()->width() < 300 ) 186 if ( QApplication::desktop()->width() < 300 )
194 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 187 ;// syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
195 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 188 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
196 ++iii; 189 ++iii;
197 190
198 syncPrefsGroup = 191 syncPrefsGroup =
199 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame); 192 addWidRadios(i18n("Time Format(nr):"),&(KOPrefs::instance()->mPreferredTime),topFrame);
200 if ( QApplication::desktop()->width() > 300 ) 193 if ( QApplication::desktop()->width() > 300 )
201 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 194 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
202 syncPrefsGroup->addRadio(i18n("24:00")); 195 syncPrefsGroup->addRadio(i18n("24:00"));
203 syncPrefsGroup->addRadio(i18n("12:00am")); 196 syncPrefsGroup->addRadio(i18n("12:00am"));
204 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical); 197 syncPrefsGroup->groupBox()-> setOrientation (Qt::Vertical);
205 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1); 198 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
206 ++iii; 199 ++iii;
207 KPrefsDialogWidBool *sb; 200 KPrefsDialogWidBool *sb;
208 if ( QApplication::desktop()->width() < 300 ) { 201 if ( QApplication::desktop()->width() < 300 ) {
209 sb = 202 sb =
210 addWidBool(i18n("Week starts on Sunday"), 203 addWidBool(i18n("Week starts on Sunday"),
211 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame); 204 &(KOPrefs::instance()->mWeekStartsOnSunday),topFrame);
212 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 205 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
213 ++iii; 206 ++iii;
214 sb = 207 sb =
215 addWidBool(i18n("Use short date in (WN/E) view"), 208 addWidBool(i18n("Use short date in (WN/E) view"),
216 &(KOPrefs::instance()->mShortDateInViewer),topFrame); 209 &(KOPrefs::instance()->mShortDateInViewer),topFrame);
217 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 210 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
218 } 211 }
219 else { 212 else {
220 QWidget * hb = new QWidget( topFrame ); 213 QWidget * hb = new QWidget( topFrame );
221 QHBoxLayout *hbLayout = new QHBoxLayout(hb); 214 QHBoxLayout *hbLayout = new QHBoxLayout(hb);
222 sb = 215 sb =
223 addWidBool(i18n("Week starts on Sunday"), 216 addWidBool(i18n("Week starts on Sunday"),
224 &(KOPrefs::instance()->mWeekStartsOnSunday),hb); 217 &(KOPrefs::instance()->mWeekStartsOnSunday),hb);
225 hbLayout->addWidget(sb->checkBox() ); 218 hbLayout->addWidget(sb->checkBox() );
226 sb = 219 sb =
227 addWidBool(i18n("Use short date in (WN/E) view"), 220 addWidBool(i18n("Use short date in (WN/E) view"),
228 &(KOPrefs::instance()->mShortDateInViewer),hb); 221 &(KOPrefs::instance()->mShortDateInViewer),hb);
229 hbLayout->addWidget(sb->checkBox() ); 222 hbLayout->addWidget(sb->checkBox() );
230 topLayout->addMultiCellWidget(hb, iii,iii,0,1); 223 topLayout->addMultiCellWidget(hb, iii,iii,0,1);
231 224
232 } 225 }
233 // KPrefsDialogWidBool *sb; //#ifndef DESKTOP_VERSION 226 // KPrefsDialogWidBool *sb; //#ifndef DESKTOP_VERSION
234#if 0 227#if 0
235 ++iii; 228 ++iii;
236 sb = 229 sb =
237 addWidBool(i18n("Quick load/save (w/o Unicode)"), 230 addWidBool(i18n("Quick load/save (w/o Unicode)"),
238 &(KOPrefs::instance()->mUseQuicksave),topFrame); 231 &(KOPrefs::instance()->mUseQuicksave),topFrame);
239 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1); 232 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
240#endif 233#endif
241#endif 234#endif
242} 235}
243void KOPrefsDialog::showSyncPage()
244{
245 // showPage ( 0 ) ;
246 kdelibcfg->showTimeZoneTab() ;
247
248}
249void KOPrefsDialog::setupSyncAlgTab()
250{
251#if 0
252 QLabel * lab;
253 QFrame *topFrame = addPage(i18n("Sync Prefs"),0,0);
254 mSetupSyncAlgTab = topFrame;
255 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
256 topLayout->setSpacing(mSpacingHint);
257 topLayout->setMargin(mMarginHint);
258 int iii = 0;
259
260 KPrefsDialogWidBool *sb =
261 addWidBool(i18n("Ask for preferences before syncing"),
262 &(KOPrefs::instance()->mAskForPreferences),topFrame);
263 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
264
265 ++iii;
266
267 KPrefsDialogWidRadios *syncPrefsGroup =
268 addWidRadios(i18n("Sync preferences:"),&(KOPrefs::instance()->mSyncAlgoPrefs),
269 topFrame);
270 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
271 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
272 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
273 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
274 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
275 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
276 topLayout->addMultiCellWidget( syncPrefsGroup->groupBox(),iii,iii,0,1);
277 ++iii;
278 sb =
279 addWidBool(i18n("Show summary after syncing"),
280 &(KOPrefs::instance()->mShowSyncSummary),topFrame);
281 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
282
283 ++iii;
284#endif
285
286
287
288}
289
290
291void KOPrefsDialog::setupSyncTab()
292{
293#if 0
294 QLabel * lab;
295 QFrame *topFrame = addPage(i18n("Sync Network"),0,0);
296 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
297 topLayout->setSpacing(mSpacingHint);
298 topLayout->setMargin(mMarginHint);
299 lab = new QLabel(i18n("Remote syncing (via ssh/scp)\nnetwork settings "), topFrame);
300 int iii = 0;
301 topLayout->addMultiCellWidget(lab , iii,iii,0,1);
302 ++iii;
303
304 mRemoteIPEdit = new QLineEdit(topFrame);
305 lab = new QLabel(mRemoteIPEdit, i18n("Remote IP:"), topFrame);
306 topLayout->addWidget(lab ,iii,0);
307 topLayout->addWidget(mRemoteIPEdit,iii,1);
308 ++iii;
309 mRemoteUser = new QLineEdit(topFrame);
310 lab = new QLabel(mRemoteUser, i18n("Remote user:"), topFrame);
311 topLayout->addWidget(lab ,iii,0);
312 topLayout->addWidget(mRemoteUser, iii,1);
313 ++iii;
314
315 mRemoteFile = new QLineEdit(topFrame);
316 lab = new QLabel(mRemoteFile, i18n("Remote file:"), topFrame);
317 topLayout->addWidget(lab ,iii,0);
318 topLayout->addWidget(mRemoteFile,iii,1);
319 ++iii;
320
321 mLocalTempFile = new QLineEdit(topFrame);
322 lab = new QLabel(mLocalTempFile, i18n("Local temp file:"), topFrame);
323 topLayout->addWidget(lab ,iii,0);
324 topLayout->addWidget(mLocalTempFile,iii,1);
325 ++iii;
326
327 KPrefsDialogWidBool *wb =
328 addWidBool(i18n("Write back synced file"),
329 &(KOPrefs::instance()->mWriteBackFile),topFrame);
330 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
331 ++iii;
332 wb =
333 addWidBool(i18n("Write back existing entries only"),
334 &(KOPrefs::instance()->mWriteBackExistingOnly),topFrame);
335 topLayout->addMultiCellWidget(wb->checkBox(), iii,iii,0,1);
336 ++iii;
337
338#endif
339}
340 236
341void KOPrefsDialog::setupMainTab() 237void KOPrefsDialog::setupMainTab()
342{ 238{
343 QFrame *topFrame = addPage(i18n("General"),0,0); 239 QFrame *topFrame = addPage(i18n("General"),0,0);
344 // DesktopIcon("identity",KIcon::SizeMedium)); 240 // DesktopIcon("identity",KIcon::SizeMedium));
345 241
346 QGridLayout *topLayout = new QGridLayout(topFrame,5,2); 242 QGridLayout *topLayout = new QGridLayout(topFrame,5,2);
347 topLayout->setSpacing(mSpacingHint); 243 topLayout->setSpacing(mSpacingHint);
348 topLayout->setMargin(mMarginHint); 244 topLayout->setMargin(mMarginHint);
349 245
350 // KPrefsDialogWidBool *emailControlCenter = 246 // KPrefsDialogWidBool *emailControlCenter =
351// addWidBool(i18n("&Use email settings from Control Center"), 247// addWidBool(i18n("&Use email settings from Control Center"),
352// &(KOPrefs::instance()->mEmailControlCenter),topFrame); 248// &(KOPrefs::instance()->mEmailControlCenter),topFrame);
353// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1); 249// topLayout->addMultiCellWidget(emailControlCenter->checkBox(),0,0,0,1);
354 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)), 250 // connect(emailControlCenter->checkBox(),SIGNAL(toggled(bool)),
355 // SLOT(toggleEmailSettings(bool))); 251 // SLOT(toggleEmailSettings(bool)));
356 252
357 mNameEdit = new QLineEdit(topFrame); 253 mNameEdit = new QLineEdit(topFrame);
358 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame); 254 mNameLabel = new QLabel(mNameEdit, i18n("Full &name:"), topFrame);
359 topLayout->addWidget(mNameLabel,0,0); 255 topLayout->addWidget(mNameLabel,0,0);
360 topLayout->addWidget(mNameEdit,0,1); 256 topLayout->addWidget(mNameEdit,0,1);
361 257
362 mEmailEdit = new QLineEdit(topFrame); 258 mEmailEdit = new QLineEdit(topFrame);
363 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame); 259 mEmailLabel = new QLabel(mEmailEdit, i18n("E&mail address:"),topFrame);
364 topLayout->addWidget(mEmailLabel,1,0); 260 topLayout->addWidget(mEmailLabel,1,0);
365 topLayout->addWidget(mEmailEdit,1,1); 261 topLayout->addWidget(mEmailEdit,1,1);
366 KPrefsDialogWidBool *wb; 262 KPrefsDialogWidBool *wb;
367 263
368 264
369 265
370 KPrefsDialogWidBool *widbool = addWidBool(i18n("Full menu bar(nr)"), 266 KPrefsDialogWidBool *widbool = addWidBool(i18n("Full menu bar(nr)"),
371 &(KOPrefs::instance()->mShowFullMenu),topFrame); 267 &(KOPrefs::instance()->mShowFullMenu),topFrame);
372 topLayout->addMultiCellWidget( widbool->checkBox(), 2,2,0,1); 268 topLayout->addMultiCellWidget( widbool->checkBox(), 2,2,0,1);
373 269
374 270
375 widbool = addWidBool(i18n("Mini icons in toolbar(nr)"), 271 widbool = addWidBool(i18n("Mini icons in toolbar(nr)"),
376 &(KOPrefs::instance()->mToolBarMiniIcons),topFrame); 272 &(KOPrefs::instance()->mToolBarMiniIcons),topFrame);
377 topLayout->addMultiCellWidget( widbool->checkBox(), 3,3,0,1); 273 topLayout->addMultiCellWidget( widbool->checkBox(), 3,3,0,1);
378 274
379 275
380 KPrefsDialogWidBool *verticalScreen = 276 KPrefsDialogWidBool *verticalScreen =
381 addWidBool(i18n("Show vertical screen (Needs restart)"), 277 addWidBool(i18n("Show vertical screen (Needs restart)"),
382 &(KOPrefs::instance()->mVerticalScreen),topFrame); 278 &(KOPrefs::instance()->mVerticalScreen),topFrame);
383 //topLayout->addWidget(verticalScreen->checkBox(),ii++,0); 279 //topLayout->addWidget(verticalScreen->checkBox(),ii++,0);
384 topLayout->addMultiCellWidget(verticalScreen->checkBox(),4,4,0,1); 280 topLayout->addMultiCellWidget(verticalScreen->checkBox(),4,4,0,1);
385 281
386 282
387 int iii = 5; 283 int iii = 5;
388 widbool = addWidBool(i18n("Block popup until mouse button release"), 284 widbool = addWidBool(i18n("Block popup until mouse button release"),
389 &(KOPrefs::instance()->mBlockPopupMenu),topFrame); 285 &(KOPrefs::instance()->mBlockPopupMenu),topFrame);
390 topLayout->addMultiCellWidget( widbool->checkBox(), iii,iii,0,1); 286 topLayout->addMultiCellWidget( widbool->checkBox(), iii,iii,0,1);
391 ++iii; 287 ++iii;
392 QHBox *dummy = new QHBox(topFrame); 288 QHBox *dummy = new QHBox(topFrame);
393 new QLabel(i18n("Days in Next-X-Days:"),dummy); 289 new QLabel(i18n("Days in Next-X-Days:"),dummy);
394 mNextXDaysSpin = new QSpinBox(2,14,1,dummy); 290 mNextXDaysSpin = new QSpinBox(2,14,1,dummy);
395 291
396 topLayout->addMultiCellWidget(dummy,iii,iii,0,1); 292 topLayout->addMultiCellWidget(dummy,iii,iii,0,1);
397 293
398 ++iii; 294 ++iii;
399 295
400 296
401 // KPrefsDialogWidBool *bcc = 297 // KPrefsDialogWidBool *bcc =
402// addWidBool(i18n("Send copy to owner when mailing events"), 298// addWidBool(i18n("Send copy to owner when mailing events"),
403// &(KOPrefs::instance()->mBcc),topFrame); 299// &(KOPrefs::instance()->mBcc),topFrame);
404// topLayout->addMultiCellWidget(bcc->checkBox(),4,4,0,1); 300// topLayout->addMultiCellWidget(bcc->checkBox(),4,4,0,1);
405 301
406 302
407 // QGroupBox *autoSaveGroup = new QGroupBox(1,Horizontal,i18n("Auto-Save"), topFrame); 303 // QGroupBox *autoSaveGroup = new QGroupBox(1,Horizontal,i18n("Auto-Save"), topFrame);
408 //topLayout->addMultiCellWidget(autoSaveGroup,6,6,0,1); 304 //topLayout->addMultiCellWidget(autoSaveGroup,6,6,0,1);
409 305
410 // addWidBool(i18n("Enable automatic saving of calendar"), 306 // addWidBool(i18n("Enable automatic saving of calendar"),
411 // &(KOPrefs::instance()->mAutoSave),autoSaveGroup); 307 // &(KOPrefs::instance()->mAutoSave),autoSaveGroup);
412 308
413 QHBox *intervalBox = new QHBox(topFrame); 309 QHBox *intervalBox = new QHBox(topFrame);
414 // intervalBox->setSpacing(mSpacingHint); 310 // intervalBox->setSpacing(mSpacingHint);
415 topLayout->addMultiCellWidget(intervalBox,iii,iii,0,1); 311 topLayout->addMultiCellWidget(intervalBox,iii,iii,0,1);
416 ++iii; 312 ++iii;
417 QLabel *autoSaveIntervalLabel = new QLabel(i18n("Auto save delay in minutes:"),intervalBox); 313 QLabel *autoSaveIntervalLabel = new QLabel(i18n("Auto save delay in minutes:"),intervalBox);
418 mAutoSaveIntervalSpin = new QSpinBox(0,500,1,intervalBox); 314 mAutoSaveIntervalSpin = new QSpinBox(0,500,1,intervalBox);
419 autoSaveIntervalLabel->setBuddy(mAutoSaveIntervalSpin); 315 autoSaveIntervalLabel->setBuddy(mAutoSaveIntervalSpin);
420 /* 316 /*
421 QHBox * agendasize = new QHBox ( topFrame ); 317 QHBox * agendasize = new QHBox ( topFrame );
422 318
423 new QLabel (i18n("AllDayAgenda Height:"), agendasize ); 319 new QLabel (i18n("AllDayAgenda Height:"), agendasize );
424 320
425 321
426 mHourSizeSlider = new QSlider(24,47,1,24,Horizontal,agendasize); 322 mHourSizeSlider = new QSlider(24,47,1,24,Horizontal,agendasize);
427 topLayout->addMultiCellWidget(agendasize,7,7,0,1); 323 topLayout->addMultiCellWidget(agendasize,7,7,0,1);
428 */ 324 */
429 325
430 326
431 KPrefsDialogWidBool *ask = 327 KPrefsDialogWidBool *ask =
432 addWidBool(i18n("Ask for quit when closing KO/Pi"), 328 addWidBool(i18n("Ask for quit when closing KO/Pi"),
433 &(KOPrefs::instance()->mAskForQuit),topFrame); 329 &(KOPrefs::instance()->mAskForQuit),topFrame);
434 topLayout->addMultiCellWidget(ask->checkBox(),iii,iii,0,1); 330 topLayout->addMultiCellWidget(ask->checkBox(),iii,iii,0,1);
435 ++iii; 331 ++iii;
436 332
437 333
438 /* 334 /*
439 KPrefsDialogWidBool *confirmCheck = 335 KPrefsDialogWidBool *confirmCheck =
440 addWidBool(i18n("Confirm &deletes"),&(KOPrefs::instance()->mConfirm), 336 addWidBool(i18n("Confirm &deletes"),&(KOPrefs::instance()->mConfirm),
441 topFrame); 337 topFrame);
442 topLayout->addMultiCellWidget(confirmCheck->checkBox(),7,7,0,1); 338 topLayout->addMultiCellWidget(confirmCheck->checkBox(),7,7,0,1);
443 339
444 340
445 mEnableGroupScheduling = 341 mEnableGroupScheduling =
446 addWidBool(i18n("Enable group scheduling"), 342 addWidBool(i18n("Enable group scheduling"),
447 &(KOPrefs::instance()->mEnableGroupScheduling),topFrame); 343 &(KOPrefs::instance()->mEnableGroupScheduling),topFrame);
448 topLayout->addWidget(mEnableGroupScheduling->checkBox(),8,0); 344 topLayout->addWidget(mEnableGroupScheduling->checkBox(),8,0);
449 connect(mEnableGroupScheduling->checkBox(),SIGNAL(clicked()), 345 connect(mEnableGroupScheduling->checkBox(),SIGNAL(clicked()),
450 SLOT(warningGroupScheduling())); 346 SLOT(warningGroupScheduling()));
451 347
452 mEnableProjectView = 348 mEnableProjectView =
453 addWidBool(i18n("Enable project view"), 349 addWidBool(i18n("Enable project view"),
454 &(KOPrefs::instance()->mEnableProjectView),topFrame); 350 &(KOPrefs::instance()->mEnableProjectView),topFrame);
455 topLayout->addWidget(mEnableProjectView->checkBox(),9,0); 351 topLayout->addWidget(mEnableProjectView->checkBox(),9,0);
456 connect(mEnableProjectView->checkBox(),SIGNAL(clicked()), 352 connect(mEnableProjectView->checkBox(),SIGNAL(clicked()),
457 SLOT(warningProjectView())); 353 SLOT(warningProjectView()));
458 354
459 // Can't be disabled anymore 355 // Can't be disabled anymore
460 mEnableGroupScheduling->checkBox()->hide(); 356 mEnableGroupScheduling->checkBox()->hide();
461 357
462 // Disable setting, because this feature now becomes stable 358 // Disable setting, because this feature now becomes stable
463 mEnableProjectView->checkBox()->hide(); 359 mEnableProjectView->checkBox()->hide();
464 360
465 KPrefsDialogWidRadios *defaultFormatGroup = 361 KPrefsDialogWidRadios *defaultFormatGroup =
466 addWidRadios(i18n("Default Calendar Format"), 362 addWidRadios(i18n("Default Calendar Format"),
467 &(KOPrefs::instance()->mDefaultFormat),topFrame); 363 &(KOPrefs::instance()->mDefaultFormat),topFrame);
468 defaultFormatGroup->addRadio(i18n("vCalendar")); 364 defaultFormatGroup->addRadio(i18n("vCalendar"));
469 defaultFormatGroup->addRadio(i18n("iCalendar")); 365 defaultFormatGroup->addRadio(i18n("iCalendar"));
470 366
471 topLayout->addMultiCellWidget(defaultFormatGroup->groupBox(),10,10,0,1); 367 topLayout->addMultiCellWidget(defaultFormatGroup->groupBox(),10,10,0,1);
472 368
473 // Default format unconditionally is iCalendar 369 // Default format unconditionally is iCalendar
474 defaultFormatGroup->groupBox()->hide(); 370 defaultFormatGroup->groupBox()->hide();
475 371
476 KPrefsDialogWidRadios *mailClientGroup = 372 KPrefsDialogWidRadios *mailClientGroup =
477 addWidRadios(i18n("Mail Client"),&(KOPrefs::instance()->mMailClient), 373 addWidRadios(i18n("Mail Client"),&(KOPrefs::instance()->mMailClient),
478 topFrame); 374 topFrame);
479 mailClientGroup->addRadio(i18n("KMail")); 375 mailClientGroup->addRadio(i18n("KMail"));
480 mailClientGroup->addRadio(i18n("Sendmail")); 376 mailClientGroup->addRadio(i18n("Sendmail"));
481 topLayout->addMultiCellWidget(mailClientGroup->groupBox(),11,11,0,1); 377 topLayout->addMultiCellWidget(mailClientGroup->groupBox(),11,11,0,1);
482 378
483 KPrefsDialogWidBool *htmlsave = 379 KPrefsDialogWidBool *htmlsave =
484 addWidBool(i18n("Export to HTML with every save"),&(KOPrefs::instance()->mHtmlWithSave), 380 addWidBool(i18n("Export to HTML with every save"),&(KOPrefs::instance()->mHtmlWithSave),
485 topFrame); 381 topFrame);
486 topLayout->addMultiCellWidget(htmlsave->checkBox(),12,12,0,1); 382 topLayout->addMultiCellWidget(htmlsave->checkBox(),12,12,0,1);
487 383
488 KPrefsDialogWidRadios *destinationGroup = 384 KPrefsDialogWidRadios *destinationGroup =
489 addWidRadios(i18n("New Events/Todos should"),&(KOPrefs::instance()->mDestination), 385 addWidRadios(i18n("New Events/Todos should"),&(KOPrefs::instance()->mDestination),
490 topFrame); 386 topFrame);
491 destinationGroup->addRadio(i18n("be added to the standard resource")); 387 destinationGroup->addRadio(i18n("be added to the standard resource"));
492 destinationGroup->addRadio(i18n("be asked which resource to use")); 388 destinationGroup->addRadio(i18n("be asked which resource to use"));
493 topLayout->addMultiCellWidget(destinationGroup->groupBox(),13,13,0,1); 389 topLayout->addMultiCellWidget(destinationGroup->groupBox(),13,13,0,1);
494 390
495 topLayout->setRowStretch(14,1); 391 topLayout->setRowStretch(14,1);
496 */ 392 */
497} 393}
498 394
499 395
500void KOPrefsDialog::setupTimeTab() 396void KOPrefsDialog::setupTimeTab()
501{ 397{
502 QFrame *topFrame = addPage(i18n("Time"),0,0); 398 QFrame *topFrame = addPage(i18n("Time"),0,0);
503 // DesktopIcon("clock",KIcon::SizeMedium)); 399 // DesktopIcon("clock",KIcon::SizeMedium));
504 400
505 QGridLayout *topLayout = new QGridLayout(topFrame,4,2); 401 QGridLayout *topLayout = new QGridLayout(topFrame,4,2);
506 topLayout->setSpacing(mSpacingHint); 402 topLayout->setSpacing(mSpacingHint);
507 topLayout->setMargin(mMarginHint); 403 topLayout->setMargin(mMarginHint);
508 404
509 QHBox *dummy = new QHBox(topFrame); 405 QHBox *dummy = new QHBox(topFrame);
510 KPrefsDialogWidTime *dayBegins = 406 KPrefsDialogWidTime *dayBegins =
511 addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins), 407 addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins),
512 dummy); 408 dummy);
513 //topLayout->addWidget(dayBegins->label(),2,0); 409 //topLayout->addWidget(dayBegins->label(),2,0);
514 410
515 //topLayout->addWidget(dayBegins->spinBox(),2,1); 411 //topLayout->addWidget(dayBegins->spinBox(),2,1);
516 topLayout->addMultiCellWidget(dummy,0,0,0,1); 412 topLayout->addMultiCellWidget(dummy,0,0,0,1);
517 413
518 topLayout->addWidget(new QLabel(i18n("Default appointment time:"), 414 topLayout->addWidget(new QLabel(i18n("Default appointment time:"),
519 topFrame),1,0); 415 topFrame),1,0);
520 mStartTimeSpin = new QSpinBox(0,23,1,topFrame); 416 mStartTimeSpin = new QSpinBox(0,23,1,topFrame);
521 mStartTimeSpin->setSuffix(":00"); 417 mStartTimeSpin->setSuffix(":00");
522 topLayout->addWidget(mStartTimeSpin,1,1); 418 topLayout->addWidget(mStartTimeSpin,1,1);
523 419
524 topLayout->addWidget(new QLabel(i18n("Def. duration of new app.:"), 420 topLayout->addWidget(new QLabel(i18n("Def. duration of new app.:"),
525 topFrame),2,0); 421 topFrame),2,0);
526 mDefaultDurationSpin = new QSpinBox(0,23,1,topFrame); 422 mDefaultDurationSpin = new QSpinBox(0,23,1,topFrame);
527 mDefaultDurationSpin->setSuffix(":00"); 423 mDefaultDurationSpin->setSuffix(":00");
528 topLayout->addWidget(mDefaultDurationSpin,2,1); 424 topLayout->addWidget(mDefaultDurationSpin,2,1);
529 425
530 QStringList alarmList; 426 QStringList alarmList;
531 alarmList << i18n("1 minute") << i18n("5 minutes") << i18n("10 minutes") 427 alarmList << i18n("1 minute") << i18n("5 minutes") << i18n("10 minutes")
532 << i18n("15 minutes") << i18n("30 minutes")<< i18n("1 hour")<< i18n("3 hours") << i18n("24 hours") ; 428 << i18n("15 minutes") << i18n("30 minutes")<< i18n("1 hour")<< i18n("3 hours") << i18n("24 hours") ;
533 topLayout->addWidget(new QLabel(i18n("Default alarm time:"),topFrame), 429 topLayout->addWidget(new QLabel(i18n("Default alarm time:"),topFrame),
534 3,0); 430 3,0);
535 mAlarmTimeCombo = new QComboBox(topFrame); 431 mAlarmTimeCombo = new QComboBox(topFrame);
536 mAlarmTimeCombo->insertStringList(alarmList); 432 mAlarmTimeCombo->insertStringList(alarmList);
537 topLayout->addWidget(mAlarmTimeCombo,3,1); 433 topLayout->addWidget(mAlarmTimeCombo,3,1);
538 434
539 435
540 QGroupBox *workingHoursGroup = new QGroupBox(1,Horizontal, 436 QGroupBox *workingHoursGroup = new QGroupBox(1,Horizontal,
541 i18n("Working Hours"), 437 i18n("Working Hours"),
542 topFrame); 438 topFrame);
543 topLayout->addMultiCellWidget(workingHoursGroup,4,4,0,1); 439 topLayout->addMultiCellWidget(workingHoursGroup,4,4,0,1);
544 workingHoursGroup->layout()->setSpacing( 0 ); 440 workingHoursGroup->layout()->setSpacing( 0 );
545 workingHoursGroup->layout()->setMargin( 4 ); 441 workingHoursGroup->layout()->setMargin( 4 );
546 QHBox *workStartBox = new QHBox(workingHoursGroup); 442 QHBox *workStartBox = new QHBox(workingHoursGroup);
547 // workStartBox->setMargin( 0 ); 443 // workStartBox->setMargin( 0 );
548 addWidTime(i18n("Daily starting hour:"), 444 addWidTime(i18n("Daily starting hour:"),
549 &(KOPrefs::instance()->mWorkingHoursStart),workStartBox); 445 &(KOPrefs::instance()->mWorkingHoursStart),workStartBox);
550 446
551 QHBox *workEndBox = new QHBox(workingHoursGroup); 447 QHBox *workEndBox = new QHBox(workingHoursGroup);
552 //workEndBox->setMargin( 0 ); 448 //workEndBox->setMargin( 0 );
553 addWidTime(i18n("Daily ending hour:"), 449 addWidTime(i18n("Daily ending hour:"),
554 &(KOPrefs::instance()->mWorkingHoursEnd),workEndBox); 450 &(KOPrefs::instance()->mWorkingHoursEnd),workEndBox);
555 QVBox *excludeBox = new QVBox(workingHoursGroup); 451 QVBox *excludeBox = new QVBox(workingHoursGroup);
556 //excludeBox->setMargin( 0 ); 452 //excludeBox->setMargin( 0 );
557 addWidBool(i18n("Exclude holidays"), 453 addWidBool(i18n("Exclude holidays"),
558 &(KOPrefs::instance()->mExcludeHolidays),excludeBox); 454 &(KOPrefs::instance()->mExcludeHolidays),excludeBox);
559 455
560 addWidBool(i18n("Exclude Saturdays"), 456 addWidBool(i18n("Exclude Saturdays"),
561 &(KOPrefs::instance()->mExcludeSaturdays),excludeBox); 457 &(KOPrefs::instance()->mExcludeSaturdays),excludeBox);
562 458
563// KPrefsDialogWidBool *marcusBainsShowSeconds = addWidBool(i18n("Show seconds on Marcus Bains line"), 459// KPrefsDialogWidBool *marcusBainsShowSeconds = addWidBool(i18n("Show seconds on Marcus Bains line"),
564 // &(KOPrefs::instance()->mMarcusBainsShowSeconds), 460 // &(KOPrefs::instance()->mMarcusBainsShowSeconds),
565 // topFrame); 461 // topFrame);
566// topLayout->addWidget(marcusBainsShowSeconds->checkBox(),5,0); 462// topLayout->addWidget(marcusBainsShowSeconds->checkBox(),5,0);
567 463
568 // topLayout->setRowStretch(6,1); 464 // topLayout->setRowStretch(6,1);
569} 465}
570 466
571 467
572void KOPrefsDialog::setupViewsTab() 468void KOPrefsDialog::setupViewsTab()
573{ 469{
574 470
575 QFrame *topFrame = addPage(i18n("Views"),0,0); 471 QFrame *topFrame = addPage(i18n("Views"),0,0);
576 // DesktopIcon("viewmag",KIcon::SizeMedium)); 472 // DesktopIcon("viewmag",KIcon::SizeMedium));
577 473
578 QGridLayout *topLayout = new QGridLayout(topFrame,6,1); 474 QGridLayout *topLayout = new QGridLayout(topFrame,6,1);
579 topLayout->setSpacing(mSpacingHint); 475 topLayout->setSpacing(mSpacingHint);
580 topLayout->setMargin(mMarginHint); 476 topLayout->setMargin(mMarginHint);
581 477
582// QBoxLayout *dayBeginsLayout = new QHBoxLayout; 478// QBoxLayout *dayBeginsLayout = new QHBoxLayout;
583// topLayout->addLayout(dayBeginsLayout,0,0); 479// topLayout->addLayout(dayBeginsLayout,0,0);
584 480
585// KPrefsDialogWidTime *dayBegins = 481// KPrefsDialogWidTime *dayBegins =
586// addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins), 482// addWidTime(i18n("Day begins at:"),&(KOPrefs::instance()->mDayBegins),
587// topFrame); 483// topFrame);
588// dayBeginsLayout->addWidget(dayBegins->label()); 484// dayBeginsLayout->addWidget(dayBegins->label());
589// dayBeginsLayout->addStretch(1); 485// dayBeginsLayout->addStretch(1);
590// dayBeginsLayout->addWidget(dayBegins->spinBox()); 486// dayBeginsLayout->addWidget(dayBegins->spinBox());
591 487
592// QBoxLayout *nextDaysLayout = new QHBoxLayout; 488// QBoxLayout *nextDaysLayout = new QHBoxLayout;
593// topLayout->addLayout(nextDaysLayout,1,0); 489// topLayout->addLayout(nextDaysLayout,1,0);
594// nextDaysLayout->addWidget(new QLabel(i18n("Days to show in Next-X-Days view:"),topFrame)); 490// nextDaysLayout->addWidget(new QLabel(i18n("Days to show in Next-X-Days view:"),topFrame));
595// mNextXDaysSpin = new QSpinBox(2,14,1,topFrame); 491// mNextXDaysSpin = new QSpinBox(2,14,1,topFrame);
596// nextDaysLayout->addStretch(1); 492// nextDaysLayout->addStretch(1);
597// nextDaysLayout->addWidget(mNextXDaysSpin); 493// nextDaysLayout->addWidget(mNextXDaysSpin);
598 494
599 495
600 int ii = 0; 496 int ii = 0;
601 KPrefsDialogWidBool *dummy = 497 KPrefsDialogWidBool *dummy =
602 addWidBool(i18n("Edit item on doubleclick (if not, show)"), 498 addWidBool(i18n("Edit item on doubleclick (if not, show)"),
603 &(KOPrefs::instance()->mEditOnDoubleClick),topFrame); 499 &(KOPrefs::instance()->mEditOnDoubleClick),topFrame);
604 topLayout->addWidget(dummy->checkBox(),ii++,0); 500 topLayout->addWidget(dummy->checkBox(),ii++,0);
605 501
606 502
607 503
608 504
609 505
610 506
611 // topLayout->addWidget(hourSizeGroup,ii++,0); 507 // topLayout->addWidget(hourSizeGroup,ii++,0);
612 // topLayout->addMultiCellWidget(hourSizeGroup,ii,ii,0,0); 508 // topLayout->addMultiCellWidget(hourSizeGroup,ii,ii,0,0);
613 //topLayout->setRowStretch(11,1); 509 //topLayout->setRowStretch(11,1);
614 510
615 511
616 512
617 513
618#if 0 514#if 0
619 515
620 topFrame = addPage(i18n("ViewChange"),0,0); 516 topFrame = addPage(i18n("ViewChange"),0,0);
621 // DesktopIcon("viewmag",KIcon::SizeMedium)); 517 // DesktopIcon("viewmag",KIcon::SizeMedium));
622 518
623 topLayout = new QGridLayout(topFrame,6,1); 519 topLayout = new QGridLayout(topFrame,6,1);
624 topLayout->setSpacing(mSpacingHint); 520 topLayout->setSpacing(mSpacingHint);
625 topLayout->setMargin(mMarginHint); 521 topLayout->setMargin(mMarginHint);
626 ii = 0; 522 ii = 0;
627 523
628#endif 524#endif
629 525
630 dummy = 526 dummy =
631 addWidBool(i18n("Hold fullscreen on view change"), 527 addWidBool(i18n("Hold fullscreen on view change"),
632 &(KOPrefs::instance()->mViewChangeHoldFullscreen),topFrame); 528 &(KOPrefs::instance()->mViewChangeHoldFullscreen),topFrame);
633 topLayout->addWidget(dummy->checkBox(),ii++,0); 529 topLayout->addWidget(dummy->checkBox(),ii++,0);
634 530
635 dummy = 531 dummy =
636 addWidBool(i18n("Hold non-fullscreen on view change"), 532 addWidBool(i18n("Hold non-fullscreen on view change"),
637 &(KOPrefs::instance()->mViewChangeHoldNonFullscreen),topFrame); 533 &(KOPrefs::instance()->mViewChangeHoldNonFullscreen),topFrame);
638 topLayout->addWidget(dummy->checkBox(),ii++,0); 534 topLayout->addWidget(dummy->checkBox(),ii++,0);
639 535
640 536
641 537
642 KPrefsDialogWidBool *fullViewMonth = 538 KPrefsDialogWidBool *fullViewMonth =
643 addWidBool(i18n("Next days view uses full window"), 539 addWidBool(i18n("Next days view uses full window"),
644 &(KOPrefs::instance()->mFullViewMonth),topFrame); 540 &(KOPrefs::instance()->mFullViewMonth),topFrame);
645 topLayout->addWidget(fullViewMonth->checkBox(),ii++,0); 541 topLayout->addWidget(fullViewMonth->checkBox(),ii++,0);
646 542
647 543
648 KPrefsDialogWidBool *fullViewTodo = 544 KPrefsDialogWidBool *fullViewTodo =
649 addWidBool(i18n("Event list view uses full window"), 545 addWidBool(i18n("Event list view uses full window"),
650 &(KOPrefs::instance()->mFullViewTodo),topFrame); 546 &(KOPrefs::instance()->mFullViewTodo),topFrame);
651 topLayout->addWidget(fullViewTodo->checkBox(),ii++,0); 547 topLayout->addWidget(fullViewTodo->checkBox(),ii++,0);
652 dummy = 548 dummy =
653 addWidBool(i18n("Listview uses monthly timespan"), 549 addWidBool(i18n("Listview uses monthly timespan"),
654 &(KOPrefs::instance()->mListViewMonthTimespan),topFrame); 550 &(KOPrefs::instance()->mListViewMonthTimespan),topFrame);
655 topLayout->addWidget(dummy->checkBox(),ii++,0); 551 topLayout->addWidget(dummy->checkBox(),ii++,0);
656 dummy = 552 dummy =
657 addWidBool(i18n("Highlight selection in Time Edit"), 553 addWidBool(i18n("Highlight selection in Time Edit"),
658 &(KOPrefs::instance()->mHightlightDateTimeEdit),topFrame); 554 &(KOPrefs::instance()->mHightlightDateTimeEdit),topFrame);
659 topLayout->addWidget( dummy->checkBox(), ii++,0); 555 topLayout->addWidget( dummy->checkBox(), ii++,0);
660 556
661 KPrefsDialogWidBool *dailyRecur = 557 KPrefsDialogWidBool *dailyRecur =
662 addWidBool(i18n("Show events that recur daily in date nav."), 558 addWidBool(i18n("Show events that recur daily in date nav."),
663 &(KOPrefs::instance()->mDailyRecur),topFrame); 559 &(KOPrefs::instance()->mDailyRecur),topFrame);
664 topLayout->addWidget(dailyRecur->checkBox(),ii++,0); 560 topLayout->addWidget(dailyRecur->checkBox(),ii++,0);
665 561
666 KPrefsDialogWidBool *weeklyRecur = 562 KPrefsDialogWidBool *weeklyRecur =
667 addWidBool(i18n("Show ev. that recur weekly in date nav."), 563 addWidBool(i18n("Show ev. that recur weekly in date nav."),
668 &(KOPrefs::instance()->mWeeklyRecur),topFrame); 564 &(KOPrefs::instance()->mWeeklyRecur),topFrame);
669 topLayout->addWidget(weeklyRecur->checkBox(),ii++,0); 565 topLayout->addWidget(weeklyRecur->checkBox(),ii++,0);
670 566
671#ifdef DESKTOP_VERSION 567#ifdef DESKTOP_VERSION
672 KPrefsDialogWidBool *enableToolTips = 568 KPrefsDialogWidBool *enableToolTips =
673 addWidBool(i18n("Enable tooltips displaying summary of ev."), 569 addWidBool(i18n("Enable tooltips displaying summary of ev."),
674 &(KOPrefs::instance()->mEnableToolTips),topFrame); 570 &(KOPrefs::instance()->mEnableToolTips),topFrame);
675 topLayout->addWidget(enableToolTips->checkBox(),ii++,0); 571 topLayout->addWidget(enableToolTips->checkBox(),ii++,0);
676#endif 572#endif
677 // ********************************************************* 573 // *********************************************************
678 574
679 topFrame = addPage(i18n("Agenda View"),0,0); 575 topFrame = addPage(i18n("Agenda View"),0,0);
680 // DesktopIcon("viewmag",KIcon::SizeMedium)); 576 // DesktopIcon("viewmag",KIcon::SizeMedium));
681 577
682 topLayout = new QGridLayout(topFrame,5,1); 578 topLayout = new QGridLayout(topFrame,5,1);
683 topLayout->setSpacing(mSpacingHint); 579 topLayout->setSpacing(mSpacingHint);
684 topLayout->setMargin(mMarginHint); 580 topLayout->setMargin(mMarginHint);
685 ii = 0; 581 ii = 0;
686 582
687 583
688 dummy = 584 dummy =
689 addWidBool(i18n("Show time in agenda items"), 585 addWidBool(i18n("Show time in agenda items"),
690 &(KOPrefs::instance()->mShowTimeInAgenda),topFrame); 586 &(KOPrefs::instance()->mShowTimeInAgenda),topFrame);
691 topLayout->addWidget(dummy->checkBox(),ii++,0); 587 topLayout->addWidget(dummy->checkBox(),ii++,0);
692 588
693 dummy = 589 dummy =
694 addWidBool(i18n("Highlight current day in agenda"), 590 addWidBool(i18n("Highlight current day in agenda"),
695 &(KOPrefs::instance()->mHighlightCurrentDay),topFrame); 591 &(KOPrefs::instance()->mHighlightCurrentDay),topFrame);
696 topLayout->addWidget(dummy->checkBox(),ii++,0); 592 topLayout->addWidget(dummy->checkBox(),ii++,0);
697 593
698 dummy = 594 dummy =
699 addWidBool(i18n("Use light color for highlight current day"), 595 addWidBool(i18n("Use light color for highlight current day"),
700 &(KOPrefs::instance()->mUseHighlightLightColor),topFrame); 596 &(KOPrefs::instance()->mUseHighlightLightColor),topFrame);
701 topLayout->addWidget(dummy->checkBox(),ii++,0); 597 topLayout->addWidget(dummy->checkBox(),ii++,0);
702 598
703 599
704 KPrefsDialogWidBool *marcusBainsEnabled = 600 KPrefsDialogWidBool *marcusBainsEnabled =
705 addWidBool(i18n("Show current time"), 601 addWidBool(i18n("Show current time"),
706 &(KOPrefs::instance()->mMarcusBainsEnabled),topFrame); 602 &(KOPrefs::instance()->mMarcusBainsEnabled),topFrame);
707 topLayout->addWidget(marcusBainsEnabled->checkBox(),ii++,0); 603 topLayout->addWidget(marcusBainsEnabled->checkBox(),ii++,0);
708 604
709 605
710 dummy = 606 dummy =
711 addWidBool(i18n("Set agenda to DayBeginsAt on change"), 607 addWidBool(i18n("Set agenda to DayBeginsAt on change"),
712 &(KOPrefs::instance()->mSetTimeToDayStartAt),topFrame); 608 &(KOPrefs::instance()->mSetTimeToDayStartAt),topFrame);
713 topLayout->addWidget(dummy->checkBox(),ii++,0); 609 topLayout->addWidget(dummy->checkBox(),ii++,0);
714 610
715 dummy = 611 dummy =
716 addWidBool(i18n("Set agenda to current time on change"), 612 addWidBool(i18n("Set agenda to current time on change"),
717 &(KOPrefs::instance()->mCenterOnCurrentTime),topFrame); 613 &(KOPrefs::instance()->mCenterOnCurrentTime),topFrame);
718 topLayout->addWidget(dummy->checkBox(),ii++,0); 614 topLayout->addWidget(dummy->checkBox(),ii++,0);
719 615
720 616
721 dummy = 617 dummy =
722 addWidBool(i18n("Allday Agenda view shows todos"), 618 addWidBool(i18n("Allday Agenda view shows todos"),
723 &(KOPrefs::instance()->mShowTodoInAgenda),topFrame); 619 &(KOPrefs::instance()->mShowTodoInAgenda),topFrame);
724 topLayout->addWidget(dummy->checkBox(),ii++,0); 620 topLayout->addWidget(dummy->checkBox(),ii++,0);
725 621
726 622
727 623
728 dummy = 624 dummy =
729 addWidBool(i18n("Agenda view shows completed todos"), 625 addWidBool(i18n("Agenda view shows completed todos"),
730 &(KOPrefs::instance()->mShowCompletedTodoInAgenda),topFrame); 626 &(KOPrefs::instance()->mShowCompletedTodoInAgenda),topFrame);
731 topLayout->addWidget(dummy->checkBox(),ii++,0); 627 topLayout->addWidget(dummy->checkBox(),ii++,0);
732 628
733 629
734 630
735 631
736 632
737 topFrame = addPage(i18n("Month View"),0,0); 633 topFrame = addPage(i18n("Month View"),0,0);
738 // DesktopIcon("viewmag",KIcon::SizeMedium)); 634 // DesktopIcon("viewmag",KIcon::SizeMedium));
739 635
740 topLayout = new QGridLayout(topFrame,5,1); 636 topLayout = new QGridLayout(topFrame,5,1);
741 topLayout->setSpacing(mSpacingHint); 637 topLayout->setSpacing(mSpacingHint);
742 topLayout->setMargin(mMarginHint); 638 topLayout->setMargin(mMarginHint);
743 ii = 0; 639 ii = 0;
744 QLabel *lab; 640 QLabel *lab;
745 QHBox *habo = new QHBox( topFrame ); 641 QHBox *habo = new QHBox( topFrame );
746 if ( QApplication::desktop()->width() <= 480 ) { 642 if ( QApplication::desktop()->width() <= 480 ) {
747 lab = new QLabel ( i18n("Show events that recur "), topFrame ); 643 lab = new QLabel ( i18n("Show events that recur "), topFrame );
748 topLayout->addMultiCellWidget(lab,ii, ii,0,1); 644 topLayout->addMultiCellWidget(lab,ii, ii,0,1);
749 ii++; 645 ii++;
750 } else { 646 } else {
751 new QLabel ( i18n("Show events that recur "), habo ); 647 new QLabel ( i18n("Show events that recur "), habo );
752 } 648 }
753 dailyRecur = 649 dailyRecur =
754 addWidBool(i18n("daily"), 650 addWidBool(i18n("daily"),
755 &(KOPrefs::instance()->mMonthDailyRecur),habo); 651 &(KOPrefs::instance()->mMonthDailyRecur),habo);
756 // topLayout->addWidget(dailyRecur->checkBox(),ii++,0); 652 // topLayout->addWidget(dailyRecur->checkBox(),ii++,0);
757 653
758 weeklyRecur = 654 weeklyRecur =
759 addWidBool(i18n("weekly"), 655 addWidBool(i18n("weekly"),
760 &(KOPrefs::instance()->mMonthWeeklyRecur),habo); 656 &(KOPrefs::instance()->mMonthWeeklyRecur),habo);
761 topLayout->addMultiCellWidget(habo,ii, ii,0,1); 657 topLayout->addMultiCellWidget(habo,ii, ii,0,1);
762 ii++; 658 ii++;
763 659
764 660
765 habo = new QHBox( topFrame ); 661 habo = new QHBox( topFrame );
766 if ( QApplication::desktop()->width() <= 480 ) { 662 if ( QApplication::desktop()->width() <= 480 ) {
767 lab = new QLabel (i18n("Show in every cell ") , topFrame ); 663 lab = new QLabel (i18n("Show in every cell ") , topFrame );
768 topLayout->addMultiCellWidget(lab,ii, ii,0,1); 664 topLayout->addMultiCellWidget(lab,ii, ii,0,1);
769 ii++; 665 ii++;
770 666
771 } else { 667 } else {
772 new QLabel ( i18n("Show in every cell "), habo ); 668 new QLabel ( i18n("Show in every cell "), habo );
773 } 669 }
774 weeklyRecur = 670 weeklyRecur =
775 addWidBool(i18n("short month"), 671 addWidBool(i18n("short month"),
776 &(KOPrefs::instance()->mMonthShowShort),habo); 672 &(KOPrefs::instance()->mMonthShowShort),habo);
777 weeklyRecur = 673 weeklyRecur =
778 addWidBool(i18n("icons"), 674 addWidBool(i18n("icons"),
779 &(KOPrefs::instance()->mMonthShowIcons),habo); 675 &(KOPrefs::instance()->mMonthShowIcons),habo);
780 weeklyRecur = 676 weeklyRecur =
781 addWidBool(i18n("times"), 677 addWidBool(i18n("times"),
782 &(KOPrefs::instance()->mMonthShowTimes),habo); 678 &(KOPrefs::instance()->mMonthShowTimes),habo);
783 topLayout->addMultiCellWidget(habo,ii, ii,0,1); 679 topLayout->addMultiCellWidget(habo,ii, ii,0,1);
784 ii++; 680 ii++;
785#ifdef DESKTOP_VERSION 681#ifdef DESKTOP_VERSION
786 KPrefsDialogWidBool *enableMonthScroll = 682 KPrefsDialogWidBool *enableMonthScroll =
787 addWidBool(i18n("Enable scrollbars in month view cells"), 683 addWidBool(i18n("Enable scrollbars in month view cells"),
788 &(KOPrefs::instance()->mEnableMonthScroll),topFrame); 684 &(KOPrefs::instance()->mEnableMonthScroll),topFrame);
789 topLayout->addWidget(enableMonthScroll->checkBox(),ii++,0); 685 topLayout->addWidget(enableMonthScroll->checkBox(),ii++,0);
790#endif 686#endif
791 dummy = 687 dummy =
792 addWidBool(i18n("Week view mode uses bigger font"), 688 addWidBool(i18n("Week view mode uses bigger font"),
793 &(KOPrefs::instance()->mMonthViewUsesBigFont),topFrame); 689 &(KOPrefs::instance()->mMonthViewUsesBigFont),topFrame);
794 topLayout->addWidget(dummy->checkBox(),ii++,0); 690 topLayout->addWidget(dummy->checkBox(),ii++,0);
795 dummy = 691 dummy =
796 addWidBool(i18n("Show Sat/Sun together"), 692 addWidBool(i18n("Show Sat/Sun together"),
797 &(KOPrefs::instance()->mMonthViewSatSunTog),topFrame); 693 &(KOPrefs::instance()->mMonthViewSatSunTog),topFrame);
798 topLayout->addWidget(dummy->checkBox(),ii++,0); 694 topLayout->addWidget(dummy->checkBox(),ii++,0);
799 695
800 KPrefsDialogWidBool *coloredCategoriesInMonthView = 696 KPrefsDialogWidBool *coloredCategoriesInMonthView =
801 addWidBool(i18n("Month view uses category colors"), 697 addWidBool(i18n("Month view uses category colors"),
802 &(KOPrefs::instance()->mMonthViewUsesCategoryColor),topFrame); 698 &(KOPrefs::instance()->mMonthViewUsesCategoryColor),topFrame);
803 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0); 699 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0);
804 700
805 dummy = 701 dummy =
806 addWidBool(i18n("Category colors are applied to text"), 702 addWidBool(i18n("Category colors are applied to text"),
807 &(KOPrefs::instance()->mMonthViewUsesForegroundColor),topFrame); 703 &(KOPrefs::instance()->mMonthViewUsesForegroundColor),topFrame);
808 topLayout->addWidget(dummy->checkBox(),ii++,0); 704 topLayout->addWidget(dummy->checkBox(),ii++,0);
809 coloredCategoriesInMonthView = 705 coloredCategoriesInMonthView =
810 addWidBool(i18n("Month view uses day colors"), 706 addWidBool(i18n("Month view uses day colors"),
811 &(KOPrefs::instance()->mMonthViewUsesDayColors),topFrame); 707 &(KOPrefs::instance()->mMonthViewUsesDayColors),topFrame);
812 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0); 708 topLayout->addWidget(coloredCategoriesInMonthView->checkBox(),ii++,0);
813 709
814 KPrefsDialogWidColor *holidayColor = 710 KPrefsDialogWidColor *holidayColor =
815 addWidColor(i18n("Day color odd months"), 711 addWidColor(i18n("Day color odd months"),
816 &(KOPrefs::instance()->mMonthViewOddColor),topFrame); 712 &(KOPrefs::instance()->mMonthViewOddColor),topFrame);
817 topLayout->addWidget(holidayColor->label(),ii,0); 713 topLayout->addWidget(holidayColor->label(),ii,0);
818 topLayout->addWidget(holidayColor->button(),ii++,1); 714 topLayout->addWidget(holidayColor->button(),ii++,1);
819 715
820 holidayColor = 716 holidayColor =
821 addWidColor(i18n("Day color even months"), 717 addWidColor(i18n("Day color even months"),
822 &(KOPrefs::instance()->mMonthViewEvenColor),topFrame); 718 &(KOPrefs::instance()->mMonthViewEvenColor),topFrame);
823 topLayout->addWidget(holidayColor->label(),ii,0); 719 topLayout->addWidget(holidayColor->label(),ii,0);
824 topLayout->addWidget(holidayColor->button(),ii++,1); 720 topLayout->addWidget(holidayColor->button(),ii++,1);
825 721
826 722
827 holidayColor = 723 holidayColor =
828 addWidColor(i18n("Color for Sundays + category \"Holiday\""), 724 addWidColor(i18n("Color for Sundays + category \"Holiday\""),
829 &(KOPrefs::instance()->mMonthViewHolidayColor),topFrame); 725 &(KOPrefs::instance()->mMonthViewHolidayColor),topFrame);
830 topLayout->addWidget(holidayColor->label(),ii,0); 726 topLayout->addWidget(holidayColor->label(),ii,0);
831 topLayout->addWidget(holidayColor->button(),ii++,1); 727 topLayout->addWidget(holidayColor->button(),ii++,1);
832 // *********************** What'sNext View 728 // *********************** What'sNext View
833 topFrame = addPage(i18n("What's Next View"),0,0); 729 topFrame = addPage(i18n("What's Next View"),0,0);
834 // DesktopIcon("viewmag",KIcon::SizeMedium)); 730 // DesktopIcon("viewmag",KIcon::SizeMedium));
835 731
836 topLayout = new QGridLayout(topFrame,4,1); 732 topLayout = new QGridLayout(topFrame,4,1);
837 topLayout->setSpacing(mSpacingHint); 733 topLayout->setSpacing(mSpacingHint);
838 topLayout->setMargin(mMarginHint); 734 topLayout->setMargin(mMarginHint);
839 ii = 0; 735 ii = 0;
840 736
841 737
842 QHBox* hdummy = new QHBox(topFrame); 738 QHBox* hdummy = new QHBox(topFrame);
843 new QLabel(i18n("Days in What's Next:"),hdummy); 739 new QLabel(i18n("Days in What's Next:"),hdummy);
844 mWhatsNextSpin = new QSpinBox(1,14,1,hdummy); 740 mWhatsNextSpin = new QSpinBox(1,14,1,hdummy);
845 741
846 topLayout->addWidget(hdummy,ii++,0); 742 topLayout->addWidget(hdummy,ii++,0);
847 743
848 QHBox *prioBox = new QHBox(topFrame); 744 QHBox *prioBox = new QHBox(topFrame);
849 // intervalBox->setSpacing(mSpacingHint); 745 // intervalBox->setSpacing(mSpacingHint);
850 topLayout->addWidget(prioBox,ii++,0); 746 topLayout->addWidget(prioBox,ii++,0);
851 747
852 QLabel *prioLabel = new QLabel(i18n("Number of max.displayed todo prios:"), prioBox); 748 QLabel *prioLabel = new QLabel(i18n("Number of max.displayed todo prios:"), prioBox);
853 mPrioSpin = new QSpinBox(0,5,1,prioBox); 749 mPrioSpin = new QSpinBox(0,5,1,prioBox);
854 if ( QApplication::desktop()->width() < 300 ) 750 if ( QApplication::desktop()->width() < 300 )
855 mPrioSpin->setFixedWidth( 40 ); 751 mPrioSpin->setFixedWidth( 40 );
856 752
857 KPrefsDialogWidBool *passwdk = 753 KPrefsDialogWidBool *passwdk =
858 754
859 addWidBool(i18n("Show events that are done"), 755 addWidBool(i18n("Show events that are done"),
860 &(KOPrefs::instance()->mWNViewShowsPast),topFrame); 756 &(KOPrefs::instance()->mWNViewShowsPast),topFrame);
861 topLayout->addWidget(passwdk->checkBox(), ii++,0); 757 topLayout->addWidget(passwdk->checkBox(), ii++,0);
862 passwdk = 758 passwdk =
863 addWidBool(i18n("Show parent To-Do's"), 759 addWidBool(i18n("Show parent To-Do's"),
864 &(KOPrefs::instance()->mWNViewShowsParents),topFrame); 760 &(KOPrefs::instance()->mWNViewShowsParents),topFrame);
865 topLayout->addWidget(passwdk->checkBox(), ii++,0); 761 topLayout->addWidget(passwdk->checkBox(), ii++,0);
866 762
867 passwdk = 763 passwdk =
868 addWidBool(i18n("Show location"), 764 addWidBool(i18n("Show location"),
869 &(KOPrefs::instance()->mWNViewShowLocation),topFrame); 765 &(KOPrefs::instance()->mWNViewShowLocation),topFrame);
870 topLayout->addWidget(passwdk->checkBox(), ii++,0); 766 topLayout->addWidget(passwdk->checkBox(), ii++,0);
871 767
872 768
873 passwdk = 769 passwdk =
874 addWidBool(i18n("Use short date in WN+Event view"), 770 addWidBool(i18n("Use short date in WN+Event view"),
875 &(KOPrefs::instance()->mShortDateInViewer),topFrame); 771 &(KOPrefs::instance()->mShortDateInViewer),topFrame);
876 topLayout->addWidget(passwdk->checkBox(), ii++,0); 772 topLayout->addWidget(passwdk->checkBox(), ii++,0);
877 773
878 774
879 775
880 776
881 // *********************** Todo View 777 // *********************** Todo View
882 778
883 topFrame = addPage(i18n("Todo View"),0,0); 779 topFrame = addPage(i18n("Todo View"),0,0);
884 // DesktopIcon("viewmag",KIcon::SizeMedium)); 780 // DesktopIcon("viewmag",KIcon::SizeMedium));
885 781
886 topLayout = new QGridLayout(topFrame,4,1); 782 topLayout = new QGridLayout(topFrame,4,1);
887 topLayout->setSpacing(mSpacingHint); 783 topLayout->setSpacing(mSpacingHint);
888 topLayout->setMargin(mMarginHint); 784 topLayout->setMargin(mMarginHint);
889 ii = 0; 785 ii = 0;
890dummy = 786dummy =
891 addWidBool(i18n("Hide not running Todos in To-do view"), 787 addWidBool(i18n("Hide not running Todos in To-do view"),
892 &(KOPrefs::instance()->mHideNonStartedTodos),topFrame); 788 &(KOPrefs::instance()->mHideNonStartedTodos),topFrame);
893 topLayout->addWidget(dummy->checkBox(),ii++,0); 789 topLayout->addWidget(dummy->checkBox(),ii++,0);
894 790
895 791
896 KPrefsDialogWidBool *showCompletedTodo = 792 KPrefsDialogWidBool *showCompletedTodo =
897 addWidBool(i18n("To-do view shows completed Todos"), 793 addWidBool(i18n("To-do view shows completed Todos"),
898 &(KOPrefs::instance()->mShowCompletedTodo),topFrame); 794 &(KOPrefs::instance()->mShowCompletedTodo),topFrame);
899 topLayout->addWidget(showCompletedTodo->checkBox(),ii++,0); 795 topLayout->addWidget(showCompletedTodo->checkBox(),ii++,0);
900 dummy = 796 dummy =
901 addWidBool(i18n("To-do view shows complete as 'xx %'"), 797 addWidBool(i18n("To-do view shows complete as 'xx %'"),
902 &(KOPrefs::instance()->mTodoViewShowsPercentage),topFrame); 798 &(KOPrefs::instance()->mTodoViewShowsPercentage),topFrame);
903 topLayout->addWidget(dummy->checkBox(),ii++,0); 799 topLayout->addWidget(dummy->checkBox(),ii++,0);
904 800
905 dummy = 801 dummy =
906 addWidBool(i18n("Small To-do view uses smaller font"), 802 addWidBool(i18n("Small To-do view uses smaller font"),
907 &(KOPrefs::instance()->mTodoViewUsesSmallFont),topFrame); 803 &(KOPrefs::instance()->mTodoViewUsesSmallFont),topFrame);
908 topLayout->addWidget(dummy->checkBox(),ii++,0); 804 topLayout->addWidget(dummy->checkBox(),ii++,0);
909 805
910 806
911 807
912 dummy = 808 dummy =
913 addWidBool(i18n("Todo view uses category colors"), 809 addWidBool(i18n("Todo view uses category colors"),
914 &(KOPrefs::instance()->mTodoViewUsesCatColors),topFrame); 810 &(KOPrefs::instance()->mTodoViewUsesCatColors),topFrame);
915 topLayout->addWidget(dummy->checkBox(),ii++,0); 811 topLayout->addWidget(dummy->checkBox(),ii++,0);
916 812
917 813
918 QWidget* wid = new QWidget( topFrame ); 814 QWidget* wid = new QWidget( topFrame );
919 // Todo run today color 815 // Todo run today color
920 KPrefsDialogWidColor *todoRunColor = 816 KPrefsDialogWidColor *todoRunColor =
921 addWidColor(i18n("Color for running todos:"), 817 addWidColor(i18n("Color for running todos:"),
922 &(KOPrefs::instance()->mTodoRunColor),wid); 818 &(KOPrefs::instance()->mTodoRunColor),wid);
923 QHBoxLayout *widLayout = new QHBoxLayout(wid); 819 QHBoxLayout *widLayout = new QHBoxLayout(wid);
924 widLayout->addWidget( todoRunColor->label() ); 820 widLayout->addWidget( todoRunColor->label() );
925 widLayout->addWidget( todoRunColor->button() ); 821 widLayout->addWidget( todoRunColor->button() );
926 topLayout->addWidget(wid,ii++,0); 822 topLayout->addWidget(wid,ii++,0);
927 823
928 wid = new QWidget( topFrame ); 824 wid = new QWidget( topFrame );
929 // Todo due today color 825 // Todo due today color
930 KPrefsDialogWidColor *todoDueTodayColor = 826 KPrefsDialogWidColor *todoDueTodayColor =
931 addWidColor(i18n("Todo due today color:"), 827 addWidColor(i18n("Todo due today color:"),
932 &(KOPrefs::instance()->mTodoDueTodayColor),wid); 828 &(KOPrefs::instance()->mTodoDueTodayColor),wid);
933 widLayout = new QHBoxLayout(wid); 829 widLayout = new QHBoxLayout(wid);
934 widLayout->addWidget( todoDueTodayColor->label() ); 830 widLayout->addWidget( todoDueTodayColor->label() );
935 widLayout->addWidget( todoDueTodayColor->button() ); 831 widLayout->addWidget( todoDueTodayColor->button() );
936 topLayout->addWidget(wid,ii++,0); 832 topLayout->addWidget(wid,ii++,0);
937 //topLayout->addWidget(todoDueTodayColor->button(),ii++,1); 833 //topLayout->addWidget(todoDueTodayColor->button(),ii++,1);
938 834
939 // Todo overdue color 835 // Todo overdue color
940 wid = new QWidget( topFrame ); 836 wid = new QWidget( topFrame );
941 widLayout = new QHBoxLayout(wid); 837 widLayout = new QHBoxLayout(wid);
942 KPrefsDialogWidColor *todoOverdueColor = 838 KPrefsDialogWidColor *todoOverdueColor =
943 addWidColor(i18n("Todo overdue color:"), 839 addWidColor(i18n("Todo overdue color:"),
944 &(KOPrefs::instance()->mTodoOverdueColor),wid); 840 &(KOPrefs::instance()->mTodoOverdueColor),wid);
945 widLayout->addWidget(todoOverdueColor->label()); 841 widLayout->addWidget(todoOverdueColor->label());
946 widLayout->addWidget(todoOverdueColor->button()); 842 widLayout->addWidget(todoOverdueColor->button());
947 topLayout->addWidget(wid,ii++,0); 843 topLayout->addWidget(wid,ii++,0);
948 844
949 dummy = 845 dummy =
950 addWidBool(i18n("Colors are applied to text"), 846 addWidBool(i18n("Colors are applied to text"),
951 &(KOPrefs::instance()->mTodoViewUsesForegroundColor),topFrame); 847 &(KOPrefs::instance()->mTodoViewUsesForegroundColor),topFrame);
952 topLayout->addWidget(dummy->checkBox(),ii++,0); 848 topLayout->addWidget(dummy->checkBox(),ii++,0);
953 849
954 850
955 851
956 topFrame = addPage(i18n("View Options"),0,0); 852 topFrame = addPage(i18n("View Options"),0,0);
957 853
958 topLayout = new QGridLayout(topFrame,4,1); 854 topLayout = new QGridLayout(topFrame,4,1);
959 topLayout->setSpacing(mSpacingHint); 855 topLayout->setSpacing(mSpacingHint);
960 topLayout->setMargin(mMarginHint); 856 topLayout->setMargin(mMarginHint);
961 ii = 0; 857 ii = 0;
962 858
963 dummy = 859 dummy =
964 addWidBool(i18n("Show Sync Events"), 860 addWidBool(i18n("Show Sync Events"),
965 &(KOPrefs::instance()->mShowSyncEvents),topFrame); 861 &(KOPrefs::instance()->mShowSyncEvents),topFrame);
966 topLayout->addWidget(dummy->checkBox(), ii++,0); 862 topLayout->addWidget(dummy->checkBox(), ii++,0);
967 863
968 lab = new QLabel( i18n("Show in todo/event viewer:"), topFrame); 864 lab = new QLabel( i18n("Show in todo/event viewer:"), topFrame);
969 topLayout->addWidget(lab ,ii++,0); 865 topLayout->addWidget(lab ,ii++,0);
970 866
971 dummy = addWidBool(i18n("Details"), 867 dummy = addWidBool(i18n("Details"),
972 &(KOPrefs::instance()->mEVshowDetails),topFrame); 868 &(KOPrefs::instance()->mEVshowDetails),topFrame);
973 topLayout->addWidget(dummy->checkBox(),ii++,0); 869 topLayout->addWidget(dummy->checkBox(),ii++,0);
974 dummy = addWidBool(i18n("Created time"), 870 dummy = addWidBool(i18n("Created time"),
975 &(KOPrefs::instance()->mEVshowCreated),topFrame); 871 &(KOPrefs::instance()->mEVshowCreated),topFrame);
976 topLayout->addWidget(dummy->checkBox(),ii++,0); 872 topLayout->addWidget(dummy->checkBox(),ii++,0);
977 dummy = addWidBool(i18n("Last modified time"), 873 dummy = addWidBool(i18n("Last modified time"),
978 &(KOPrefs::instance()->mEVshowChanged),topFrame); 874 &(KOPrefs::instance()->mEVshowChanged),topFrame);
979 topLayout->addWidget(dummy->checkBox(),ii++,0); 875 topLayout->addWidget(dummy->checkBox(),ii++,0);
980 876
981 877
982 lab = new QLabel( i18n("Show in What'sThis quick overview:"), topFrame); 878 lab = new QLabel( i18n("Show in What'sThis quick overview:"), topFrame);
983 topLayout->addWidget(lab ,ii++,0); 879 topLayout->addWidget(lab ,ii++,0);
984 880
985 dummy = addWidBool(i18n("Details"), 881 dummy = addWidBool(i18n("Details"),
986 &(KOPrefs::instance()->mWTshowDetails),topFrame); 882 &(KOPrefs::instance()->mWTshowDetails),topFrame);
987 topLayout->addWidget(dummy->checkBox(),ii++,0); 883 topLayout->addWidget(dummy->checkBox(),ii++,0);
988 dummy = addWidBool(i18n("Created time"), 884 dummy = addWidBool(i18n("Created time"),
989 &(KOPrefs::instance()->mWTshowCreated),topFrame); 885 &(KOPrefs::instance()->mWTshowCreated),topFrame);
990 topLayout->addWidget(dummy->checkBox(),ii++,0); 886 topLayout->addWidget(dummy->checkBox(),ii++,0);
991 dummy = addWidBool(i18n("Last modified time"), 887 dummy = addWidBool(i18n("Last modified time"),
992 &(KOPrefs::instance()->mWTshowChanged),topFrame); 888 &(KOPrefs::instance()->mWTshowChanged),topFrame);
993 topLayout->addWidget(dummy->checkBox(),ii++,0); 889 topLayout->addWidget(dummy->checkBox(),ii++,0);
994 890
995 891
996 topFrame = addPage(i18n("Alarm"),0,0); 892 topFrame = addPage(i18n("Alarm"),0,0);
997 // DesktopIcon("viewmag",KIcon::SizeMedium)); 893 // DesktopIcon("viewmag",KIcon::SizeMedium));
998 894
999 topLayout = new QGridLayout(topFrame,2,1); 895 topLayout = new QGridLayout(topFrame,2,1);
1000 topLayout->setSpacing(mSpacingHint); 896 topLayout->setSpacing(mSpacingHint);
1001 topLayout->setMargin(mMarginHint); 897 topLayout->setMargin(mMarginHint);
1002 int iii = 0; 898 int iii = 0;
1003 899
1004 dummy = 900 dummy =
1005 addWidBool(i18n("Use internal alarm notification"), 901 addWidBool(i18n("Use internal alarm notification"),
1006 &(KOPrefs::instance()->mUseInternalAlarmNotification),topFrame); 902 &(KOPrefs::instance()->mUseInternalAlarmNotification),topFrame);
1007 topLayout->addWidget(dummy->checkBox(),iii++,0); 903 topLayout->addWidget(dummy->checkBox(),iii++,0);
1008 lab = new QLabel( i18n("Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n"), topFrame); 904 lab = new QLabel( i18n("Note: KO/Pi must be running to notify you about an alarm. Recommended for use on Zaurus: Disable this option and install KO/Pi alarm applet.\n"), topFrame);
1009 905
1010 topLayout->addWidget(lab ,iii++,0); 906 topLayout->addWidget(lab ,iii++,0);
1011#ifndef DESKTOP_VERSION 907#ifndef DESKTOP_VERSION
1012 lab->setAlignment( AlignLeft|WordBreak|AlignTop); 908 lab->setAlignment( AlignLeft|WordBreak|AlignTop);
1013#else 909#else
1014 lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 910 lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
1015 lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) ); 911 lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) );
1016#endif 912#endif
1017 913
1018 QHBox* dummyBox = new QHBox(topFrame); 914 QHBox* dummyBox = new QHBox(topFrame);
1019 new QLabel(i18n("Play beeps count:"),dummyBox); 915 new QLabel(i18n("Play beeps count:"),dummyBox);
1020 mAlarmPlayBeeps = new QSpinBox(0,500,1,dummyBox); 916 mAlarmPlayBeeps = new QSpinBox(0,500,1,dummyBox);
1021 topLayout->addWidget(dummyBox,iii++,0); 917 topLayout->addWidget(dummyBox,iii++,0);
1022 918
1023 dummyBox = new QHBox(topFrame); 919 dummyBox = new QHBox(topFrame);
1024 new QLabel(i18n("Beeps interval in sec:"),dummyBox); 920 new QLabel(i18n("Beeps interval in sec:"),dummyBox);
1025 mAlarmBeepInterval = new QSpinBox(1,600,1,dummyBox); 921 mAlarmBeepInterval = new QSpinBox(1,600,1,dummyBox);
1026 topLayout->addWidget(dummyBox,iii++,0); 922 topLayout->addWidget(dummyBox,iii++,0);
1027 923
1028 dummyBox = new QHBox(topFrame); 924 dummyBox = new QHBox(topFrame);
1029 new QLabel(i18n("Default suspend time in min:"),dummyBox); 925 new QLabel(i18n("Default suspend time in min:"),dummyBox);
1030 mAlarmSuspendTime = new QSpinBox(1,600,1,dummyBox); 926 mAlarmSuspendTime = new QSpinBox(1,600,1,dummyBox);
1031 topLayout->addWidget(dummyBox,iii++,0); 927 topLayout->addWidget(dummyBox,iii++,0);
1032 928
1033 dummyBox = new QHBox(topFrame); 929 dummyBox = new QHBox(topFrame);
1034 new QLabel(i18n("Auto suspend count:"),dummyBox); 930 new QLabel(i18n("Auto suspend count:"),dummyBox);
1035 mAlarmSuspendCount = new QSpinBox(0,60,1,dummyBox); 931 mAlarmSuspendCount = new QSpinBox(0,60,1,dummyBox);
1036 topLayout->addWidget(dummyBox,iii++,0); 932 topLayout->addWidget(dummyBox,iii++,0);
1037 933
1038 934
1039 935
1040 QHBox* hbo = new QHBox ( topFrame ); 936 QHBox* hbo = new QHBox ( topFrame );
1041 mDefaultAlarmFile = new QLineEdit(hbo); 937 mDefaultAlarmFile = new QLineEdit(hbo);
1042 QPushButton * loadTemplate = new QPushButton(hbo); 938 QPushButton * loadTemplate = new QPushButton(hbo);
1043 QPixmap icon; 939 QPixmap icon;
1044 if ( QApplication::desktop()->width() < 321 ) 940 if ( QApplication::desktop()->width() < 321 )
1045 icon = SmallIcon("fileimport16"); 941 icon = SmallIcon("fileimport16");
1046 else 942 else
1047 icon = SmallIcon("fileimport"); 943 icon = SmallIcon("fileimport");
1048 loadTemplate->setIconSet (icon ) ; 944 loadTemplate->setIconSet (icon ) ;
1049 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( selectSoundFile() ) ); 945 connect( loadTemplate, SIGNAL( clicked() ), this , SLOT( selectSoundFile() ) );
1050 int size = loadTemplate->sizeHint().height(); 946 int size = loadTemplate->sizeHint().height();
1051 loadTemplate->setFixedSize( size, size ); 947 loadTemplate->setFixedSize( size, size );
1052 //lab = new QLabel( i18n("This setting is useless for 5500 user!"), topFrame); 948 //lab = new QLabel( i18n("This setting is useless for 5500 user!"), topFrame);
1053 // topLayout->addWidget(lab ,iii++,0); 949 // topLayout->addWidget(lab ,iii++,0);
1054 lab = new QLabel( i18n("Alarm *.wav file for newly created alarm:"), topFrame); 950 lab = new QLabel( i18n("Alarm *.wav file for newly created alarm:"), topFrame);
1055 topLayout->addWidget(lab ,iii++,0); 951 topLayout->addWidget(lab ,iii++,0);
1056 topLayout->addWidget(hbo,iii++,0); 952 topLayout->addWidget(hbo,iii++,0);
1057 // lab = new QLabel( i18n("Note: This does not mean, that for every alarm this file is replayed. This file here is associated with a newly created alarm."), topFrame); 953 // lab = new QLabel( i18n("Note: This does not mean, that for every alarm this file is replayed. This file here is associated with a newly created alarm."), topFrame);
1058 954
1059// topLayout->addWidget(lab ,iii++,0); 955// topLayout->addWidget(lab ,iii++,0);
1060// #ifndef DESKTOP_VERSION 956// #ifndef DESKTOP_VERSION
1061// lab->setAlignment( AlignLeft|WordBreak|AlignTop); 957// lab->setAlignment( AlignLeft|WordBreak|AlignTop);
1062// #else 958// #else
1063// lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 959// lab->setAlignment( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
1064// lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) ); 960// lab->setSizePolicy( QSizePolicy( QSizePolicy::Ignored , QSizePolicy::Ignored,true) );
1065// #endif 961// #endif
1066 962
1067 963
1068} 964}
1069 965
1070void KOPrefsDialog::selectSoundFile() 966void KOPrefsDialog::selectSoundFile()
1071{ 967{
1072 QString fileName = mDefaultAlarmFile->text(); 968 QString fileName = mDefaultAlarmFile->text();
1073 fileName = KFileDialog::getSaveFileName( mDefaultAlarmFile->text() , "Choose default alarm file", this ); 969 fileName = KFileDialog::getSaveFileName( mDefaultAlarmFile->text() , "Choose default alarm file", this );
1074 if ( fileName.length() > 0 ) 970 if ( fileName.length() > 0 )
1075 mDefaultAlarmFile->setText( fileName ); 971 mDefaultAlarmFile->setText( fileName );
1076} 972}
1077void KOPrefsDialog::setupFontsTab() 973void KOPrefsDialog::setupFontsTab()
1078{ 974{
1079 975
1080 QFrame *topFrame = addPage(i18n("Fonts"),0,0); 976 QFrame *topFrame = addPage(i18n("Fonts"),0,0);
1081 // DesktopIcon("fonts",KIcon::SizeMedium)); 977 // DesktopIcon("fonts",KIcon::SizeMedium));
1082 978
1083 QGridLayout *topLayout = new QGridLayout(topFrame,7,3); 979 QGridLayout *topLayout = new QGridLayout(topFrame,7,3);
1084 topLayout->setSpacing(1); 980 topLayout->setSpacing(1);
1085 topLayout->setMargin(3); 981 topLayout->setMargin(3);
1086 KPrefsDialogWidFont * tVFont; 982 KPrefsDialogWidFont * tVFont;
1087 int i = 0; 983 int i = 0;
1088 KPrefsDialogWidFont *timeLabelsFont = 984 KPrefsDialogWidFont *timeLabelsFont =
1089 addWidFont(i18n("23"),i18n("DateNavigator:(nr)"), 985 addWidFont(i18n("23"),i18n("DateNavigator:(nr)"),
1090 &(KOPrefs::instance()->mDateNavigatorFont),topFrame); 986 &(KOPrefs::instance()->mDateNavigatorFont),topFrame);
1091 topLayout->addWidget(timeLabelsFont->label(),i,0); 987 topLayout->addWidget(timeLabelsFont->label(),i,0);
1092 topLayout->addWidget(timeLabelsFont->preview(),i,1); 988 topLayout->addWidget(timeLabelsFont->preview(),i,1);
1093 topLayout->addWidget(timeLabelsFont->button(),i,2); 989 topLayout->addWidget(timeLabelsFont->button(),i,2);
1094 ++i; 990 ++i;
1095 991
1096 992
1097 timeLabelsFont = 993 timeLabelsFont =
1098 addWidFont(i18n("Mon 15"),i18n("Date Labels:"), 994 addWidFont(i18n("Mon 15"),i18n("Date Labels:"),
1099 &(KOPrefs::instance()->mTimeLabelsFont),topFrame); 995 &(KOPrefs::instance()->mTimeLabelsFont),topFrame);
1100 topLayout->addWidget(timeLabelsFont->label(),i,0); 996 topLayout->addWidget(timeLabelsFont->label(),i,0);
1101 topLayout->addWidget(timeLabelsFont->preview(),i,1); 997 topLayout->addWidget(timeLabelsFont->preview(),i,1);
1102 topLayout->addWidget(timeLabelsFont->button(),i,2); 998 topLayout->addWidget(timeLabelsFont->button(),i,2);
1103 ++i; 999 ++i;
1104 1000
1105 KPrefsDialogWidFont *timeBarFont = 1001 KPrefsDialogWidFont *timeBarFont =
1106 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)),i18n("Time bar:"), 1002 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)),i18n("Time bar:"),
1107 &(KOPrefs::instance()->mTimeBarFont),topFrame); 1003 &(KOPrefs::instance()->mTimeBarFont),topFrame);
1108 topLayout->addWidget(timeBarFont->label(),i,0); 1004 topLayout->addWidget(timeBarFont->label(),i,0);
1109 topLayout->addWidget(timeBarFont->preview(),i,1); 1005 topLayout->addWidget(timeBarFont->preview(),i,1);
1110 topLayout->addWidget(timeBarFont->button(),i,2); 1006 topLayout->addWidget(timeBarFont->button(),i,2);
1111 ++i; 1007 ++i;
1112 1008
1113 1009
1114 KPrefsDialogWidFont *marcusBainsFont = 1010 KPrefsDialogWidFont *marcusBainsFont =
1115 addWidFont(KGlobal::locale()->formatTime(QTime(12,34,23)),i18n("M. Bains line:"), 1011 addWidFont(KGlobal::locale()->formatTime(QTime(12,34,23)),i18n("M. Bains line:"),
1116 &(KOPrefs::instance()->mMarcusBainsFont),topFrame); 1012 &(KOPrefs::instance()->mMarcusBainsFont),topFrame);
1117 topLayout->addWidget(marcusBainsFont->label(),i,0); 1013 topLayout->addWidget(marcusBainsFont->label(),i,0);
1118 topLayout->addWidget(marcusBainsFont->preview(),i,1); 1014 topLayout->addWidget(marcusBainsFont->preview(),i,1);
1119 topLayout->addWidget(marcusBainsFont->button(),i,2); 1015 topLayout->addWidget(marcusBainsFont->button(),i,2);
1120 ++i; 1016 ++i;
1121 1017
1122 tVFont = 1018 tVFont =
1123 addWidFont(i18n("Summary"),i18n("Event Viewer:"), 1019 addWidFont(i18n("Summary"),i18n("Event Viewer:"),
1124 &(KOPrefs::instance()->mEventViewFont),topFrame); 1020 &(KOPrefs::instance()->mEventViewFont),topFrame);
1125 topLayout->addWidget(tVFont->label(),i,0); 1021 topLayout->addWidget(tVFont->label(),i,0);
1126 topLayout->addWidget(tVFont->preview(),i,1); 1022 topLayout->addWidget(tVFont->preview(),i,1);
1127 topLayout->addWidget(tVFont->button(),i,2); 1023 topLayout->addWidget(tVFont->button(),i,2);
1128 ++i; 1024 ++i;
1129 1025
1130 1026
1131 1027
1132 tVFont = 1028 tVFont =
1133 addWidFont(i18n("Details"),i18n("EditorBox:"), 1029 addWidFont(i18n("Details"),i18n("EditorBox:"),
1134 &(KOPrefs::instance()->mEditBoxFont),topFrame); 1030 &(KOPrefs::instance()->mEditBoxFont),topFrame);
1135 topLayout->addWidget(tVFont->label(),i,0); 1031 topLayout->addWidget(tVFont->label(),i,0);
1136 topLayout->addWidget(tVFont->preview(),i,1); 1032 topLayout->addWidget(tVFont->preview(),i,1);
1137 topLayout->addWidget(tVFont->button(),i,2); 1033 topLayout->addWidget(tVFont->button(),i,2);
1138 ++i; 1034 ++i;
1139 1035
1140 1036
1141 1037
1142 topLayout->setColStretch(1,1); 1038 topLayout->setColStretch(1,1);
1143 topLayout->setRowStretch(4,1); 1039 topLayout->setRowStretch(4,1);
1144 1040
1145 1041
1146 i = 0; 1042 i = 0;
1147 topFrame = addPage(i18n("View Fonts"),0, 1043 topFrame = addPage(i18n("View Fonts"),0,
1148 DesktopIcon("fonts",KIcon::SizeMedium)); 1044 DesktopIcon("fonts",KIcon::SizeMedium));
1149 1045
1150 topLayout = new QGridLayout(topFrame,7,3); 1046 topLayout = new QGridLayout(topFrame,7,3);
1151 topLayout->setSpacing(1); 1047 topLayout->setSpacing(1);
1152 topLayout->setMargin(3); 1048 topLayout->setMargin(3);
1153 1049
1154 tVFont = 1050 tVFont =
1155 addWidFont(i18n("Configure KO"),i18n("What's Next View:"), 1051 addWidFont(i18n("Configure KO"),i18n("What's Next View:"),
1156 &(KOPrefs::instance()->mWhatsNextFont),topFrame); 1052 &(KOPrefs::instance()->mWhatsNextFont),topFrame);
1157 topLayout->addWidget(tVFont->label(),i,0); 1053 topLayout->addWidget(tVFont->label(),i,0);
1158 topLayout->addWidget(tVFont->preview(),i,1); 1054 topLayout->addWidget(tVFont->preview(),i,1);
1159 topLayout->addWidget(tVFont->button(),i,2); 1055 topLayout->addWidget(tVFont->button(),i,2);
1160 ++i; 1056 ++i;
1161 KPrefsDialogWidFont *agendaViewFont = 1057 KPrefsDialogWidFont *agendaViewFont =
1162 addWidFont(i18n("Event text"),i18n("Agenda view:"), 1058 addWidFont(i18n("Event text"),i18n("Agenda view:"),
1163 &(KOPrefs::instance()->mAgendaViewFont),topFrame); 1059 &(KOPrefs::instance()->mAgendaViewFont),topFrame);
1164 topLayout->addWidget(agendaViewFont->label(),i,0); 1060 topLayout->addWidget(agendaViewFont->label(),i,0);
1165 topLayout->addWidget(agendaViewFont->preview(),i,1); 1061 topLayout->addWidget(agendaViewFont->preview(),i,1);
1166 topLayout->addWidget(agendaViewFont->button(),i,2); 1062 topLayout->addWidget(agendaViewFont->button(),i,2);
1167 ++i; 1063 ++i;
1168 1064
1169 1065
1170 KPrefsDialogWidFont *monthViewFont = 1066 KPrefsDialogWidFont *monthViewFont =
1171 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)) + " " + i18n("Event"), 1067 addWidFont(KGlobal::locale()->formatTime(QTime(12,34)) + " " + i18n("Event"),
1172 i18n("Month view:"),&(KOPrefs::instance()->mMonthViewFont),topFrame); 1068 i18n("Month view:"),&(KOPrefs::instance()->mMonthViewFont),topFrame);
1173 topLayout->addWidget(monthViewFont->label(),i,0); 1069 topLayout->addWidget(monthViewFont->label(),i,0);
1174 topLayout->addWidget(monthViewFont->preview(),i,1); 1070 topLayout->addWidget(monthViewFont->preview(),i,1);
1175 topLayout->addWidget(monthViewFont->button(),i,2); 1071 topLayout->addWidget(monthViewFont->button(),i,2);
1176 ++i; 1072 ++i;
1177 1073
1178 1074
1179 KPrefsDialogWidFont *lVFont = 1075 KPrefsDialogWidFont *lVFont =
1180 addWidFont(i18n("Event"),i18n("List View:"), 1076 addWidFont(i18n("Event"),i18n("List View:"),
1181 &(KOPrefs::instance()->mListViewFont),topFrame); 1077 &(KOPrefs::instance()->mListViewFont),topFrame);
1182 topLayout->addWidget(lVFont->label(),i,0); 1078 topLayout->addWidget(lVFont->label(),i,0);
1183 topLayout->addWidget(lVFont->preview(),i,1); 1079 topLayout->addWidget(lVFont->preview(),i,1);
1184 topLayout->addWidget(lVFont->button(),i,2); 1080 topLayout->addWidget(lVFont->button(),i,2);
1185 ++i; 1081 ++i;
1186 1082
1187 1083
1188 tVFont = 1084 tVFont =
1189 addWidFont(i18n("ToDo"),i18n("ToDoView:"), 1085 addWidFont(i18n("ToDo"),i18n("ToDoView:"),
1190 &(KOPrefs::instance()->mTodoViewFont),topFrame); 1086 &(KOPrefs::instance()->mTodoViewFont),topFrame);
1191 topLayout->addWidget(tVFont->label(),i,0); 1087 topLayout->addWidget(tVFont->label(),i,0);
1192 topLayout->addWidget(tVFont->preview(),i,1); 1088 topLayout->addWidget(tVFont->preview(),i,1);
1193 topLayout->addWidget(tVFont->button(),i,2); 1089 topLayout->addWidget(tVFont->button(),i,2);
1194 ++i; 1090 ++i;
1195 1091
1196 1092
1197 tVFont = 1093 tVFont =
1198 addWidFont(i18n("Today"),i18n("JournalView:"), 1094 addWidFont(i18n("Today"),i18n("JournalView:"),
1199 &(KOPrefs::instance()->mJornalViewFont),topFrame); 1095 &(KOPrefs::instance()->mJornalViewFont),topFrame);
1200 topLayout->addWidget(tVFont->label(),i,0); 1096 topLayout->addWidget(tVFont->label(),i,0);
1201 topLayout->addWidget(tVFont->preview(),i,1); 1097 topLayout->addWidget(tVFont->preview(),i,1);
1202 topLayout->addWidget(tVFont->button(),i,2); 1098 topLayout->addWidget(tVFont->button(),i,2);
1203 ++i; 1099 ++i;
1204 1100
1205 1101
1206 1102
1207 1103
1208 topLayout->setColStretch(1,1); 1104 topLayout->setColStretch(1,1);
1209 topLayout->setRowStretch(4,1); 1105 topLayout->setRowStretch(4,1);
1210 1106
1211 1107
1212 1108
1213 1109
1214} 1110}
1215 1111
1216void KOPrefsDialog::setupColorsTab() 1112void KOPrefsDialog::setupColorsTab()
1217{ 1113{
1218 QFrame *topFrame = addPage(i18n("Colors"),0,0); 1114 QFrame *topFrame = addPage(i18n("Colors"),0,0);
1219 // DesktopIcon("colorize",KIcon::SizeMedium)); 1115 // DesktopIcon("colorize",KIcon::SizeMedium));
1220 1116
1221 QGridLayout *topLayout = new QGridLayout(topFrame,5,2); 1117 QGridLayout *topLayout = new QGridLayout(topFrame,5,2);
1222 // topLayout->setSpacing(mSpacingHint); 1118 // topLayout->setSpacing(mSpacingHint);
1223 // topLayout->setMargin(mMarginHint); 1119 // topLayout->setMargin(mMarginHint);
1224 1120
1225 topLayout->setSpacing(2); 1121 topLayout->setSpacing(2);
1226 topLayout->setMargin(3); 1122 topLayout->setMargin(3);
1227 1123
1228 int ii = 1; 1124 int ii = 1;
1229 QGroupBox *categoryGroup ; 1125 QGroupBox *categoryGroup ;
1230 1126
1231 categoryGroup = new QGroupBox(1,Vertical,i18n("Categories"), 1127 categoryGroup = new QGroupBox(1,Vertical,i18n("Categories"),
1232 topFrame); 1128 topFrame);
1233 topLayout->addMultiCellWidget(categoryGroup,0,0,0,1); 1129 topLayout->addMultiCellWidget(categoryGroup,0,0,0,1);
1234 1130
1235 mCategoryCombo = new QComboBox(categoryGroup); 1131 mCategoryCombo = new QComboBox(categoryGroup);
1236 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories); 1132 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories);
1237 connect(mCategoryCombo,SIGNAL(activated(int)),SLOT(updateCategoryColor())); 1133 connect(mCategoryCombo,SIGNAL(activated(int)),SLOT(updateCategoryColor()));
1238 1134
1239 mCategoryButton = new KColorButton(categoryGroup); 1135 mCategoryButton = new KColorButton(categoryGroup);
1240 connect(mCategoryButton,SIGNAL(changed(const QColor &)),SLOT(setCategoryColor())); 1136 connect(mCategoryButton,SIGNAL(changed(const QColor &)),SLOT(setCategoryColor()));
1241 updateCategoryColor(); 1137 updateCategoryColor();
1242 1138
1243 1139
1244 // Holiday Color 1140 // Holiday Color
1245 1141
1246 KPrefsDialogWidColor *holidayColor = 1142 KPrefsDialogWidColor *holidayColor =
1247 addWidColor(i18n("Holiday color:"), 1143 addWidColor(i18n("Holiday color:"),
1248 &(KOPrefs::instance()->mHolidayColor),topFrame); 1144 &(KOPrefs::instance()->mHolidayColor),topFrame);
1249 topLayout->addWidget(holidayColor->label(),ii,0); 1145 topLayout->addWidget(holidayColor->label(),ii,0);
1250 topLayout->addWidget(holidayColor->button(),ii++,1); 1146 topLayout->addWidget(holidayColor->button(),ii++,1);
1251 1147
1252 // Highlight Color 1148 // Highlight Color
1253 KPrefsDialogWidColor *highlightColor = 1149 KPrefsDialogWidColor *highlightColor =
1254 addWidColor(i18n("Highlight color:"), 1150 addWidColor(i18n("Highlight color:"),
1255 &(KOPrefs::instance()->mHighlightColor),topFrame); 1151 &(KOPrefs::instance()->mHighlightColor),topFrame);
1256 topLayout->addWidget(highlightColor->label(),ii,0); 1152 topLayout->addWidget(highlightColor->label(),ii,0);
1257 topLayout->addWidget(highlightColor->button(),ii++,1); 1153 topLayout->addWidget(highlightColor->button(),ii++,1);
1258 1154
1259 // Event color 1155 // Event color
1260 KPrefsDialogWidColor *eventColor = 1156 KPrefsDialogWidColor *eventColor =
1261 addWidColor(i18n("Default event color:"), 1157 addWidColor(i18n("Default event color:"),
1262 &(KOPrefs::instance()->mEventColor),topFrame); 1158 &(KOPrefs::instance()->mEventColor),topFrame);
1263 topLayout->addWidget(eventColor->label(),ii,0); 1159 topLayout->addWidget(eventColor->label(),ii,0);
1264 topLayout->addWidget(eventColor->button(),ii++,1); 1160 topLayout->addWidget(eventColor->button(),ii++,1);
1265 eventColor = 1161 eventColor =
1266 addWidColor(i18n("Default todo done color:"), 1162 addWidColor(i18n("Default todo done color:"),
1267 &(KOPrefs::instance()->mTodoDoneColor),topFrame); 1163 &(KOPrefs::instance()->mTodoDoneColor),topFrame);
1268 topLayout->addWidget(eventColor->label(),ii,0); 1164 topLayout->addWidget(eventColor->label(),ii,0);
1269 topLayout->addWidget(eventColor->button(),ii++,1); 1165 topLayout->addWidget(eventColor->button(),ii++,1);
1270 1166
1271 1167
1272 // agenda view background color 1168 // agenda view background color
1273 KPrefsDialogWidColor *agendaBgColor = 1169 KPrefsDialogWidColor *agendaBgColor =
1274 addWidColor(i18n("Agenda view background color:"), 1170 addWidColor(i18n("Agenda view background color:"),
1275 &(KOPrefs::instance()->mAgendaBgColor),topFrame); 1171 &(KOPrefs::instance()->mAgendaBgColor),topFrame);
1276 topLayout->addWidget(agendaBgColor->label(),ii,0); 1172 topLayout->addWidget(agendaBgColor->label(),ii,0);
1277 topLayout->addWidget(agendaBgColor->button(),ii++,1); 1173 topLayout->addWidget(agendaBgColor->button(),ii++,1);
1278 1174
1279 // working hours color 1175 // working hours color
1280 KPrefsDialogWidColor *workingHoursColor = 1176 KPrefsDialogWidColor *workingHoursColor =
1281 addWidColor(i18n("Working hours color:"), 1177 addWidColor(i18n("Working hours color:"),
1282 &(KOPrefs::instance()->mWorkingHoursColor),topFrame); 1178 &(KOPrefs::instance()->mWorkingHoursColor),topFrame);
1283 topLayout->addWidget(workingHoursColor->label(),ii,0); 1179 topLayout->addWidget(workingHoursColor->label(),ii,0);
1284 topLayout->addWidget(workingHoursColor->button(),ii++,1); 1180 topLayout->addWidget(workingHoursColor->button(),ii++,1);
1285 1181
1286 KPrefsDialogWidBool *sb = 1182 KPrefsDialogWidBool *sb =
1287 addWidBool(i18n("Use colors for application:"), 1183 addWidBool(i18n("Use colors for application:"),
1288 &(KOPrefs::instance()->mUseAppColors),topFrame); 1184 &(KOPrefs::instance()->mUseAppColors),topFrame);
1289 topLayout->addMultiCellWidget(sb->checkBox(), ii, ii, 0,1 ); 1185 topLayout->addMultiCellWidget(sb->checkBox(), ii, ii, 0,1 );
1290 1186
1291 ii++; 1187 ii++;
1292 KPrefsDialogWidColor * workingHoursColor1 = 1188 KPrefsDialogWidColor * workingHoursColor1 =
1293 addWidColor(i18n("Buttons, menus, etc.:"), 1189 addWidColor(i18n("Buttons, menus, etc.:"),
1294 &(KOPrefs::instance()->mAppColor1),topFrame); 1190 &(KOPrefs::instance()->mAppColor1),topFrame);
1295 topLayout->addWidget(workingHoursColor1->label(),ii,0); 1191 topLayout->addWidget(workingHoursColor1->label(),ii,0);
1296 topLayout->addWidget(workingHoursColor1->button(),ii++,1); 1192 topLayout->addWidget(workingHoursColor1->button(),ii++,1);
1297 1193
1298 KPrefsDialogWidColor * workingHoursColor2 = 1194 KPrefsDialogWidColor * workingHoursColor2 =
1299 addWidColor(i18n("Frames, labels, etc.:"), 1195 addWidColor(i18n("Frames, labels, etc.:"),
1300 &(KOPrefs::instance()->mAppColor2),topFrame); 1196 &(KOPrefs::instance()->mAppColor2),topFrame);
1301 topLayout->addWidget(workingHoursColor2->label(),ii,0); 1197 topLayout->addWidget(workingHoursColor2->label(),ii,0);
1302 topLayout->addWidget(workingHoursColor2->button(),ii++,1); 1198 topLayout->addWidget(workingHoursColor2->button(),ii++,1);
1303 1199
1304 1200
1305 1201
1306} 1202}
1307 1203
1308void KOPrefsDialog::setCategoryColor() 1204void KOPrefsDialog::setCategoryColor()
1309{ 1205{
1310 mCategoryDict.replace(mCategoryCombo->currentText(), new QColor(mCategoryButton->color())); 1206 mCategoryDict.replace(mCategoryCombo->currentText(), new QColor(mCategoryButton->color()));
1311} 1207}
1312 1208
1313void KOPrefsDialog::updateCategoryColor() 1209void KOPrefsDialog::updateCategoryColor()
1314{ 1210{
1315 QString cat = mCategoryCombo->currentText(); 1211 QString cat = mCategoryCombo->currentText();
1316 QColor *color = mCategoryDict.find(cat); 1212 QColor *color = mCategoryDict.find(cat);
1317 if (!color) { 1213 if (!color) {
1318 color = KOPrefs::instance()->categoryColor(cat); 1214 color = KOPrefs::instance()->categoryColor(cat);
1319 } 1215 }
1320 if (color) { 1216 if (color) {
1321 mCategoryButton->setColor(*color); 1217 mCategoryButton->setColor(*color);
1322 } 1218 }
1323} 1219}
1324 1220
1325void KOPrefsDialog::setupPrinterTab() 1221void KOPrefsDialog::setupPrinterTab()
1326{ 1222{
1327 mPrinterTab = addPage(i18n("Printing"),0, 1223 mPrinterTab = addPage(i18n("Printing"),0,
1328 DesktopIcon("fileprint",KIcon::SizeMedium)); 1224 DesktopIcon("fileprint",KIcon::SizeMedium));
1329 1225
1330 QGridLayout *topLayout = new QGridLayout(mPrinterTab,5,2); 1226 QGridLayout *topLayout = new QGridLayout(mPrinterTab,5,2);
1331 topLayout->setSpacing(mSpacingHint); 1227 topLayout->setSpacing(mSpacingHint);
1332 topLayout->setMargin(mMarginHint); 1228 topLayout->setMargin(mMarginHint);
1333 1229
1334 topLayout->setRowStretch(4,1); 1230 topLayout->setRowStretch(4,1);
1335} 1231}
1336 1232
1337void KOPrefsDialog::setupGroupSchedulingTab() 1233void KOPrefsDialog::setupGroupSchedulingTab()
1338{ 1234{
1339#if 0 1235#if 0
1340 QFrame *topFrame = addPage(i18n("Group Scheduling"),0, 1236 QFrame *topFrame = addPage(i18n("Group Scheduling"),0,
1341 DesktopIcon("personal",KIcon::SizeMedium)); 1237 DesktopIcon("personal",KIcon::SizeMedium));
1342 1238
1343 QGridLayout *topLayout = new QGridLayout(topFrame,6,2); 1239 QGridLayout *topLayout = new QGridLayout(topFrame,6,2);
1344 topLayout->setSpacing(mSpacingHint); 1240 topLayout->setSpacing(mSpacingHint);
1345 topLayout->setMargin(mMarginHint); 1241 topLayout->setMargin(mMarginHint);
1346 1242
1347#if 0 1243#if 0
1348 KPrefsDialogWidRadios *schedulerGroup = 1244 KPrefsDialogWidRadios *schedulerGroup =
1349 addWidRadios(i18n("Scheduler Mail Client"),&(KOPrefs::instance()->mIMIPScheduler), 1245 addWidRadios(i18n("Scheduler Mail Client"),&(KOPrefs::instance()->mIMIPScheduler),
1350 topFrame); 1246 topFrame);
1351 schedulerGroup->addRadio("Dummy"); // Only for debugging 1247 schedulerGroup->addRadio("Dummy"); // Only for debugging
1352 schedulerGroup->addRadio(i18n("Mail client")); 1248 schedulerGroup->addRadio(i18n("Mail client"));
1353 1249
1354 topLayout->addMultiCellWidget(schedulerGroup->groupBox(),0,0,0,1); 1250 topLayout->addMultiCellWidget(schedulerGroup->groupBox(),0,0,0,1);
1355#endif 1251#endif
1356 1252
1357 KPrefsDialogWidRadios *sendGroup = 1253 KPrefsDialogWidRadios *sendGroup =
1358 addWidRadios(i18n("Scheduler Mails Should Be"),&(KOPrefs::instance()->mIMIPSend), 1254 addWidRadios(i18n("Scheduler Mails Should Be"),&(KOPrefs::instance()->mIMIPSend),
1359 topFrame); 1255 topFrame);
1360 sendGroup->addRadio(i18n("Send to outbox")); 1256 sendGroup->addRadio(i18n("Send to outbox"));
1361 sendGroup->addRadio(i18n("Send directly")); 1257 sendGroup->addRadio(i18n("Send directly"));
1362 1258
1363 topLayout->addMultiCellWidget(sendGroup->groupBox(),1,1,0,1); 1259 topLayout->addMultiCellWidget(sendGroup->groupBox(),1,1,0,1);
1364 1260
1365 topLayout->addMultiCellWidget(new QLabel(i18n("Additional email addresses:"),topFrame),2,2,0,1); 1261 topLayout->addMultiCellWidget(new QLabel(i18n("Additional email addresses:"),topFrame),2,2,0,1);
1366 mAMails = new QListView(topFrame); 1262 mAMails = new QListView(topFrame);
1367 mAMails->addColumn(i18n("Email"),300); 1263 mAMails->addColumn(i18n("Email"),300);
1368 topLayout->addMultiCellWidget(mAMails,3,3,0,1); 1264 topLayout->addMultiCellWidget(mAMails,3,3,0,1);
1369 1265
1370 topLayout->addWidget(new QLabel(i18n("Additional email address:"),topFrame),4,0); 1266 topLayout->addWidget(new QLabel(i18n("Additional email address:"),topFrame),4,0);
1371 aEmailsEdit = new QLineEdit(topFrame); 1267 aEmailsEdit = new QLineEdit(topFrame);
1372 aEmailsEdit->setEnabled(false); 1268 aEmailsEdit->setEnabled(false);
1373 topLayout->addWidget(aEmailsEdit,4,1); 1269 topLayout->addWidget(aEmailsEdit,4,1);
1374 1270
1375 QPushButton *add = new QPushButton(i18n("New"),topFrame,"new"); 1271 QPushButton *add = new QPushButton(i18n("New"),topFrame,"new");
1376 topLayout->addWidget(add,5,0); 1272 topLayout->addWidget(add,5,0);
1377 QPushButton *del = new QPushButton(i18n("Remove"),topFrame,"remove"); 1273 QPushButton *del = new QPushButton(i18n("Remove"),topFrame,"remove");
1378 topLayout->addWidget(del,5,1); 1274 topLayout->addWidget(del,5,1);
1379 1275
1380 //topLayout->setRowStretch(2,1); 1276 //topLayout->setRowStretch(2,1);
1381 connect(add, SIGNAL( clicked() ), this, SLOT(addItem()) ); 1277 connect(add, SIGNAL( clicked() ), this, SLOT(addItem()) );
1382 connect(del, SIGNAL( clicked() ), this, SLOT(removeItem()) ); 1278 connect(del, SIGNAL( clicked() ), this, SLOT(removeItem()) );
1383 connect(aEmailsEdit,SIGNAL( textChanged(const QString&) ), this,SLOT(updateItem())); 1279 connect(aEmailsEdit,SIGNAL( textChanged(const QString&) ), this,SLOT(updateItem()));
1384 connect(mAMails,SIGNAL(selectionChanged(QListViewItem *)),SLOT(updateInput())); 1280 connect(mAMails,SIGNAL(selectionChanged(QListViewItem *)),SLOT(updateInput()));
1385#endif 1281#endif
1386} 1282}
1387 1283
1388void KOPrefsDialog::setupGroupAutomationTab() 1284void KOPrefsDialog::setupGroupAutomationTab()
1389{ 1285{
1390 return; 1286 return;
1391 QFrame *topFrame = addPage(i18n("Group Automation"),0, 1287 QFrame *topFrame = addPage(i18n("Group Automation"),0,
1392 DesktopIcon("personal",KIcon::SizeMedium)); 1288 DesktopIcon("personal",KIcon::SizeMedium));
1393 1289
1394 QGridLayout *topLayout = new QGridLayout(topFrame,5,1); 1290 QGridLayout *topLayout = new QGridLayout(topFrame,5,1);
1395 topLayout->setSpacing(mSpacingHint); 1291 topLayout->setSpacing(mSpacingHint);
1396 topLayout->setMargin(mMarginHint); 1292 topLayout->setMargin(mMarginHint);
1397 1293
1398 KPrefsDialogWidRadios *autoRefreshGroup = 1294 KPrefsDialogWidRadios *autoRefreshGroup =
1399 addWidRadios(i18n("Auto Send Refresh"), 1295 addWidRadios(i18n("Auto Send Refresh"),
1400 &(KOPrefs::instance()->mIMIPAutoRefresh),topFrame); 1296 &(KOPrefs::instance()->mIMIPAutoRefresh),topFrame);
1401 autoRefreshGroup->addRadio(i18n("Never")); 1297 autoRefreshGroup->addRadio(i18n("Never"));
1402 autoRefreshGroup->addRadio(i18n("If attendee is in addressbook")); 1298 autoRefreshGroup->addRadio(i18n("If attendee is in addressbook"));
1403 //autoRefreshGroup->addRadio(i18n("selected emails")); 1299 //autoRefreshGroup->addRadio(i18n("selected emails"));
1404 topLayout->addMultiCellWidget(autoRefreshGroup->groupBox(),0,0,0,0); 1300 topLayout->addMultiCellWidget(autoRefreshGroup->groupBox(),0,0,0,0);
1405 1301
1406 KPrefsDialogWidRadios *autoInsertGroup = 1302 KPrefsDialogWidRadios *autoInsertGroup =
1407 addWidRadios(i18n("Auto Insert IMIP Replies"), 1303 addWidRadios(i18n("Auto Insert IMIP Replies"),
1408 &(KOPrefs::instance()->mIMIPAutoInsertReply),topFrame); 1304 &(KOPrefs::instance()->mIMIPAutoInsertReply),topFrame);
1409 autoInsertGroup->addRadio(i18n("Never")); 1305 autoInsertGroup->addRadio(i18n("Never"));
1410 autoInsertGroup->addRadio(i18n("If attendee is in addressbook")); 1306 autoInsertGroup->addRadio(i18n("If attendee is in addressbook"));
1411 //autoInsertGroup->addRadio(i18n("selected emails")); 1307 //autoInsertGroup->addRadio(i18n("selected emails"));
1412 topLayout->addMultiCellWidget(autoInsertGroup->groupBox(),1,1,0,0); 1308 topLayout->addMultiCellWidget(autoInsertGroup->groupBox(),1,1,0,0);
1413 1309
1414 KPrefsDialogWidRadios *autoRequestGroup = 1310 KPrefsDialogWidRadios *autoRequestGroup =
1415 addWidRadios(i18n("Auto Insert IMIP Requests"), 1311 addWidRadios(i18n("Auto Insert IMIP Requests"),
1416 &(KOPrefs::instance()->mIMIPAutoInsertRequest),topFrame); 1312 &(KOPrefs::instance()->mIMIPAutoInsertRequest),topFrame);
1417 autoRequestGroup->addRadio(i18n("Never")); 1313 autoRequestGroup->addRadio(i18n("Never"));
1418 autoRequestGroup->addRadio(i18n("If organizer is in addressbook")); 1314 autoRequestGroup->addRadio(i18n("If organizer is in addressbook"));
1419 //autoInsertGroup->addRadio(i18n("selected emails")); 1315 //autoInsertGroup->addRadio(i18n("selected emails"));
1420 topLayout->addMultiCellWidget(autoRequestGroup->groupBox(),2,2,0,0); 1316 topLayout->addMultiCellWidget(autoRequestGroup->groupBox(),2,2,0,0);
1421 1317
1422 KPrefsDialogWidRadios *autoFreeBusyGroup = 1318 KPrefsDialogWidRadios *autoFreeBusyGroup =
1423 addWidRadios(i18n("Auto Send FreeBusy Information"), 1319 addWidRadios(i18n("Auto Send FreeBusy Information"),
1424 &(KOPrefs::instance()->mIMIPAutoFreeBusy),topFrame); 1320 &(KOPrefs::instance()->mIMIPAutoFreeBusy),topFrame);
1425 autoFreeBusyGroup->addRadio(i18n("Never")); 1321 autoFreeBusyGroup->addRadio(i18n("Never"));
1426 autoFreeBusyGroup->addRadio(i18n("If requested from an email in addressbook")); 1322 autoFreeBusyGroup->addRadio(i18n("If requested from an email in addressbook"));
1427 //autoFreeBusyGroup->addRadio(i18n("selected emails")); 1323 //autoFreeBusyGroup->addRadio(i18n("selected emails"));
1428 topLayout->addMultiCellWidget(autoFreeBusyGroup->groupBox(),3,3,0,0); 1324 topLayout->addMultiCellWidget(autoFreeBusyGroup->groupBox(),3,3,0,0);
1429 1325
1430 KPrefsDialogWidRadios *autoFreeBusyReplyGroup = 1326 KPrefsDialogWidRadios *autoFreeBusyReplyGroup =
1431 addWidRadios(i18n("Auto Save FreeBusy Replies"), 1327 addWidRadios(i18n("Auto Save FreeBusy Replies"),
1432 &(KOPrefs::instance()->mIMIPAutoFreeBusyReply),topFrame); 1328 &(KOPrefs::instance()->mIMIPAutoFreeBusyReply),topFrame);
1433 autoFreeBusyReplyGroup->addRadio(i18n("Never")); 1329 autoFreeBusyReplyGroup->addRadio(i18n("Never"));
1434 autoFreeBusyReplyGroup->addRadio(i18n("If attendee is in addressbook")); 1330 autoFreeBusyReplyGroup->addRadio(i18n("If attendee is in addressbook"));
1435 //autoFreeBusyGroup->addRadio(i18n("selected emails")); 1331 //autoFreeBusyGroup->addRadio(i18n("selected emails"));
1436 topLayout->addMultiCellWidget(autoFreeBusyReplyGroup->groupBox(),4,4,0,0); 1332 topLayout->addMultiCellWidget(autoFreeBusyReplyGroup->groupBox(),4,4,0,0);
1437} 1333}
1438 1334
1439void KOPrefsDialog::showPrinterTab() 1335void KOPrefsDialog::showPrinterTab()
1440{ 1336{
1441 showPage(pageIndex(mPrinterTab)); 1337 showPage(pageIndex(mPrinterTab));
1442} 1338}
1443 1339
1444 1340
1445void KOPrefsDialog::setCombo(QComboBox *combo, const QString & text, 1341void KOPrefsDialog::setCombo(QComboBox *combo, const QString & text,
1446 const QStringList *tags) 1342 const QStringList *tags)
1447{ 1343{
1448 if (tags) { 1344 if (tags) {
1449 int i = tags->findIndex(text); 1345 int i = tags->findIndex(text);
1450 if (i > 0) combo->setCurrentItem(i); 1346 if (i > 0) combo->setCurrentItem(i);
1451 } else { 1347 } else {
1452 for(int i=0;i<combo->count();++i) { 1348 for(int i=0;i<combo->count();++i) {
1453 if (combo->text(i) == text) { 1349 if (combo->text(i) == text) {
1454 combo->setCurrentItem(i); 1350 combo->setCurrentItem(i);
1455 break; 1351 break;
1456 } 1352 }
1457 } 1353 }
1458 } 1354 }
1459} 1355}
1460 1356
1461void KOPrefsDialog::usrReadConfig() 1357void KOPrefsDialog::usrReadConfig()
1462{ 1358{
1463 if ( kdelibcfg ) 1359
1464 kdelibcfg->readConfig();
1465 else {
1466 mNameEdit->setText(KOPrefs::instance()->fullName()); 1360 mNameEdit->setText(KOPrefs::instance()->fullName());
1467 mEmailEdit->setText(KOPrefs::instance()->email()); 1361 mEmailEdit->setText(KOPrefs::instance()->email());
1468 1362
1469 mAutoSaveIntervalSpin->setValue(KOPrefs::instance()->mAutoSaveInterval); 1363 mAutoSaveIntervalSpin->setValue(KOPrefs::instance()->mAutoSaveInterval);
1470 // QDate current ( 2001, 1,1); 1364
1471 //mStartDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingStart-1));
1472 //mEndDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingEnd-1));
1473 //setCombo(mTimeZoneCombo,i18n(KOPrefs::instance()->mTimeZoneId));
1474 //mTimezoneOffsetSpin->setValue( KOPrefs::instance()->mTimeZoneOffset);
1475 mStartTimeSpin->setValue(KOPrefs::instance()->mStartTime); 1365 mStartTimeSpin->setValue(KOPrefs::instance()->mStartTime);
1476 mDefaultDurationSpin->setValue(KOPrefs::instance()->mDefaultDuration); 1366 mDefaultDurationSpin->setValue(KOPrefs::instance()->mDefaultDuration);
1477 mAlarmTimeCombo->setCurrentItem(KOPrefs::instance()->mAlarmTime); 1367 mAlarmTimeCombo->setCurrentItem(KOPrefs::instance()->mAlarmTime);
1478 // if (KOPrefs::instance()->mAllDaySize > 47 )
1479 // KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize/2;
1480 //mHourSizeSlider->setValue(KOPrefs::instance()->mAllDaySize);
1481 1368
1482 mNextXDaysSpin->setValue(KOPrefs::instance()->mNextXDays); 1369 mNextXDaysSpin->setValue(KOPrefs::instance()->mNextXDays);
1483 mWhatsNextSpin->setValue(KOPrefs::instance()->mWhatsNextDays); 1370 mWhatsNextSpin->setValue(KOPrefs::instance()->mWhatsNextDays);
1484 mPrioSpin->setValue(KOPrefs::instance()->mWhatsNextPrios); 1371 mPrioSpin->setValue(KOPrefs::instance()->mWhatsNextPrios);
1485 // mAMails->clear(); 1372 // mAMails->clear();
1486 // for ( QStringList::Iterator it = KOPrefs::instance()->mAdditionalMails.begin(); 1373 // for ( QStringList::Iterator it = KOPrefs::instance()->mAdditionalMails.begin();
1487// it != KOPrefs::instance()->mAdditionalMails.end(); ++it ) { 1374// it != KOPrefs::instance()->mAdditionalMails.end(); ++it ) {
1488// QListViewItem *item = new QListViewItem(mAMails); 1375// QListViewItem *item = new QListViewItem(mAMails);
1489// item->setText(0,*it); 1376// item->setText(0,*it);
1490// mAMails->insertItem(item); 1377// mAMails->insertItem(item);
1491// } 1378// }
1492 1379
1493 // mRemoteIPEdit->setText(KOPrefs::instance()->mRemoteIP);
1494 //mRemoteUser->setText(KOPrefs::instance()->mRemoteUser);
1495 //mRemotePassWd->setText(KOPrefs::instance()->mRemotePassWd);
1496 //mRemoteFile->setText(KOPrefs::instance()->mRemoteFile);
1497
1498 //that soundmLocalTempFile->setText(KOPrefs::instance()->mLocalTempFile); 1380 //that soundmLocalTempFile->setText(KOPrefs::instance()->mLocalTempFile);
1499 mDefaultAlarmFile->setText(KOPrefs::instance()->mDefaultAlarmFile); 1381 mDefaultAlarmFile->setText(KOPrefs::instance()->mDefaultAlarmFile);
1500 //QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1501 //mUserDateFormatLong->setText(dummy.replace( QRegExp("K"), QString(",") ));
1502 //dummy = KOPrefs::instance()->mUserDateFormatShort;
1503 //mUserDateFormatShort->setText(dummy.replace( QRegExp("K"), QString(",") ));
1504 updateCategories(); 1382 updateCategories();
1505 mAlarmPlayBeeps->setValue(KOPrefs::instance()->mAlarmPlayBeeps ); 1383 mAlarmPlayBeeps->setValue(KOPrefs::instance()->mAlarmPlayBeeps );
1506 mAlarmSuspendTime->setValue(KOPrefs::instance()->mAlarmSuspendTime ); 1384 mAlarmSuspendTime->setValue(KOPrefs::instance()->mAlarmSuspendTime );
1507 mAlarmSuspendCount->setValue(KOPrefs::instance()->mAlarmSuspendCount ); 1385 mAlarmSuspendCount->setValue(KOPrefs::instance()->mAlarmSuspendCount );
1508 mAlarmBeepInterval->setValue(KOPrefs::instance()->mAlarmBeepInterval ); 1386 mAlarmBeepInterval->setValue(KOPrefs::instance()->mAlarmBeepInterval );
1509 } 1387
1510} 1388}
1511 1389
1512 1390
1513void KOPrefsDialog::usrWriteConfig() 1391void KOPrefsDialog::usrWriteConfig()
1514{ 1392{
1515 if ( kdelibcfg ) 1393
1516 kdelibcfg->writeConfig(); 1394
1517 else {
1518 // KOPrefs::instance()->mRemoteIP = mRemoteIPEdit->text();
1519 //KOPrefs::instance()->mRemoteUser = mRemoteUser->text();
1520 //KOPrefs::instance()->mRemotePassWd = mRemotePassWd->text();
1521 //KOPrefs::instance()->mRemoteFile= mRemoteFile->text();
1522 //KOPrefs::instance()->mLocalTempFile =mLocalTempFile->text();
1523 KOPrefs::instance()->mDefaultAlarmFile =mDefaultAlarmFile->text(); 1395 KOPrefs::instance()->mDefaultAlarmFile =mDefaultAlarmFile->text();
1524
1525 //KOPrefs::instance()->mUserDateFormatShort = mUserDateFormatShort->text().replace( QRegExp(","), QString("K") );
1526 //KOPrefs::instance()->mUserDateFormatLong = mUserDateFormatLong->text().replace( QRegExp(","), QString("K") );
1527 KOPrefs::instance()->setFullName(mNameEdit->text()); 1396 KOPrefs::instance()->setFullName(mNameEdit->text());
1528 KOPrefs::instance()->setEmail(mEmailEdit->text()); 1397 KOPrefs::instance()->setEmail(mEmailEdit->text());
1529 1398
1530 KOPrefs::instance()->mAutoSaveInterval = mAutoSaveIntervalSpin->value(); 1399 KOPrefs::instance()->mAutoSaveInterval = mAutoSaveIntervalSpin->value();
1531
1532 // KOPrefs::instance()->mTimeZoneId = mTimeZoneCombo->currentText();
1533 //QDate date;
1534 //date = mStartDateSavingEdit->date();
1535 //int sub = 0;
1536 //if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
1537 // sub = 1;
1538// KOPrefs::instance()->mDaylightsavingStart = date.dayOfYear()-sub;
1539// date = mEndDateSavingEdit->date();
1540// if ( QDate::leapYear( date.year() ) && date.dayOfYear() > 59 )
1541// sub = 1;
1542// else
1543// sub = 0;
1544// KOPrefs::instance()->mDaylightsavingEnd = date.dayOfYear()-sub;
1545// // KOPrefs::instance()->mTimeZoneOffset = mTimezoneOffsetSpin->value();
1546
1547 KOPrefs::instance()->mStartTime = mStartTimeSpin->value(); 1400 KOPrefs::instance()->mStartTime = mStartTimeSpin->value();
1548 KOPrefs::instance()->mDefaultDuration = mDefaultDurationSpin->value(); 1401 KOPrefs::instance()->mDefaultDuration = mDefaultDurationSpin->value();
1549 KOPrefs::instance()->mAlarmTime = mAlarmTimeCombo->currentItem(); 1402 KOPrefs::instance()->mAlarmTime = mAlarmTimeCombo->currentItem();
1550 1403
1551 //KOPrefs::instance()->mAllDaySize = mHourSizeSlider->value();
1552
1553 QDictIterator<QColor> it(mCategoryDict); 1404 QDictIterator<QColor> it(mCategoryDict);
1554 while (it.current()) { 1405 while (it.current()) {
1555 KOPrefs::instance()->setCategoryColor(it.currentKey(),*it.current()); 1406 KOPrefs::instance()->setCategoryColor(it.currentKey(),*it.current());
1556 ++it; 1407 ++it;
1557 } 1408 }
1558 1409
1559 KOPrefs::instance()->mNextXDays = mNextXDaysSpin->value(); 1410 KOPrefs::instance()->mNextXDays = mNextXDaysSpin->value();
1560 KOPrefs::instance()->mWhatsNextDays = mWhatsNextSpin->value(); 1411 KOPrefs::instance()->mWhatsNextDays = mWhatsNextSpin->value();
1561 KOPrefs::instance()->mWhatsNextPrios = mPrioSpin->value(); 1412 KOPrefs::instance()->mWhatsNextPrios = mPrioSpin->value();
1562 1413
1563 KOPrefs::instance()->mAdditionalMails.clear(); 1414 KOPrefs::instance()->mAdditionalMails.clear();
1564 // QListViewItem *item; 1415 // QListViewItem *item;
1565 // item = mAMails->firstChild(); 1416 // item = mAMails->firstChild();
1566 // while (item) 1417 // while (item)
1567 // { 1418 // {
1568 // KOPrefs::instance()->mAdditionalMails.append( item->text(0) ); 1419 // KOPrefs::instance()->mAdditionalMails.append( item->text(0) );
1569 // item = item->nextSibling(); 1420 // item = item->nextSibling();
1570 // } 1421 // }
1571 KOPrefs::instance()->mAlarmPlayBeeps = mAlarmPlayBeeps->value(); 1422 KOPrefs::instance()->mAlarmPlayBeeps = mAlarmPlayBeeps->value();
1572 KOPrefs::instance()->mAlarmSuspendTime = mAlarmSuspendTime->value() ; 1423 KOPrefs::instance()->mAlarmSuspendTime = mAlarmSuspendTime->value() ;
1573 KOPrefs::instance()->mAlarmSuspendCount= mAlarmSuspendCount->value() ; 1424 KOPrefs::instance()->mAlarmSuspendCount= mAlarmSuspendCount->value() ;
1574 KOPrefs::instance()->mAlarmBeepInterval= mAlarmBeepInterval->value() ; 1425 KOPrefs::instance()->mAlarmBeepInterval= mAlarmBeepInterval->value() ;
1575 } 1426
1576} 1427}
1577 1428
1578void KOPrefsDialog::updateCategories() 1429void KOPrefsDialog::updateCategories()
1579{ 1430{
1580 mCategoryCombo->clear(); 1431 mCategoryCombo->clear();
1581 mCategoryDict.clear(); 1432 mCategoryDict.clear();
1582 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories); 1433 mCategoryCombo->insertStringList(KOPrefs::instance()->mCustomCategories);
1583 updateCategoryColor(); 1434 updateCategoryColor();
1584} 1435}
1585 1436
1586void KOPrefsDialog::warningGroupScheduling()
1587{
1588 warningExperimental(mEnableGroupScheduling->checkBox()->isChecked());
1589}
1590
1591void KOPrefsDialog::warningProjectView()
1592{
1593 warningExperimental(mEnableProjectView->checkBox()->isChecked());
1594}
1595
1596void KOPrefsDialog::warningExperimental(bool on)
1597{
1598 if (on) {
1599 KMessageBox::information(this,i18n("This is an experimental feature. "
1600 "It may not work, it may do nothing useful and it may cause data loss. "
1601 "Use with care.\n"
1602 "You have to restart KOrganizer for this setting to take effect."));
1603 } else {
1604 KMessageBox::information(this,
1605 i18n("You have to restart KOrganizer for this setting to take effect."));
1606 }
1607}
1608
1609void KOPrefsDialog::toggleEmailSettings(bool on) 1437void KOPrefsDialog::toggleEmailSettings(bool on)
1610{ 1438{
1611 if (on) { 1439 if (on) {
1612 mEmailEdit->setEnabled(false); 1440 mEmailEdit->setEnabled(false);
1613 mNameEdit->setEnabled(false); 1441 mNameEdit->setEnabled(false);
1614 mEmailLabel->setEnabled(false); 1442 mEmailLabel->setEnabled(false);
1615 mNameLabel->setEnabled(false); 1443 mNameLabel->setEnabled(false);
1616 1444
1617 KEMailSettings settings; 1445 KEMailSettings settings;
1618 mNameEdit->setText(settings.getSetting(KEMailSettings::RealName)); 1446 mNameEdit->setText(settings.getSetting(KEMailSettings::RealName));
1619 mEmailEdit->setText(settings.getSetting(KEMailSettings::EmailAddress)); 1447 mEmailEdit->setText(settings.getSetting(KEMailSettings::EmailAddress));
1620 } else { 1448 } else {
1621 mEmailEdit->setEnabled(true); 1449 mEmailEdit->setEnabled(true);
1622 mNameEdit->setEnabled(true); 1450 mNameEdit->setEnabled(true);
1623 mEmailLabel->setEnabled(true); 1451 mEmailLabel->setEnabled(true);
1624 mNameLabel->setEnabled(true); 1452 mNameLabel->setEnabled(true);
1625 } 1453 }
1626} 1454}
1627 1455
1628void KOPrefsDialog::addItem() 1456void KOPrefsDialog::addItem()
1629{ 1457{
1630 // aEmailsEdit->setEnabled(true); 1458 // aEmailsEdit->setEnabled(true);
1631// QListViewItem *item = new QListViewItem(mAMails); 1459// QListViewItem *item = new QListViewItem(mAMails);
1632// mAMails->insertItem(item); 1460// mAMails->insertItem(item);
1633// mAMails->setSelected(item,true); 1461// mAMails->setSelected(item,true);
1634// aEmailsEdit->setText(i18n("(EmptyEmail)")); 1462// aEmailsEdit->setText(i18n("(EmptyEmail)"));
1635} 1463}
1636 1464
1637void KOPrefsDialog::removeItem() 1465void KOPrefsDialog::removeItem()
1638{ 1466{
1639// QListViewItem *item; 1467// QListViewItem *item;
1640// item = mAMails->selectedItem(); 1468// item = mAMails->selectedItem();
1641// if (!item) return; 1469// if (!item) return;
1642// mAMails->takeItem(item); 1470// mAMails->takeItem(item);
1643// item = mAMails->selectedItem(); 1471// item = mAMails->selectedItem();
1644// if (!item) { 1472// if (!item) {
1645// aEmailsEdit->setText(""); 1473// aEmailsEdit->setText("");
1646// aEmailsEdit->setEnabled(false); 1474// aEmailsEdit->setEnabled(false);
1647// } 1475// }
1648// if (mAMails->childCount() == 0) { 1476// if (mAMails->childCount() == 0) {
1649// aEmailsEdit->setEnabled(false); 1477// aEmailsEdit->setEnabled(false);
1650// } 1478// }
1651} 1479}
1652 1480
1653void KOPrefsDialog::updateItem() 1481void KOPrefsDialog::updateItem()
1654{ 1482{
1655 // QListViewItem *item; 1483 // QListViewItem *item;
1656// item = mAMails->selectedItem(); 1484// item = mAMails->selectedItem();
1657// if (!item) return; 1485// if (!item) return;
1658// item->setText(0,aEmailsEdit->text()); 1486// item->setText(0,aEmailsEdit->text());
1659} 1487}
1660 1488
1661void KOPrefsDialog::updateInput() 1489void KOPrefsDialog::updateInput()
1662{ 1490{
1663// QListViewItem *item; 1491// QListViewItem *item;
1664// item = mAMails->selectedItem(); 1492// item = mAMails->selectedItem();
1665// if (!item) return; 1493// if (!item) return;
1666// aEmailsEdit->setEnabled(true); 1494// aEmailsEdit->setEnabled(true);
1667// aEmailsEdit->setText(item->text(0)); 1495// aEmailsEdit->setText(item->text(0));
1668} 1496}
1669void KOPrefsDialog::updateTimezoneOffset( int index )
1670{
1671 /*
1672 qDebug("updateTimezoneOffset %d ", index);
1673 if ( index < 24 ) {
1674 mTimezoneOffsetSpin->setEnabled ( false );
1675 mTimezoneOffsetSpin->setValue( ( index-11 ) * 60 );
1676
1677
1678 } else {
1679 if ( index == 24 ) {
1680 mTimezoneOffsetSpin->setEnabled ( true );
1681 mTimezoneOffsetSpin->setValue( KOPrefs::instance()->mTimeZoneOffset);
1682
1683 } else {
1684 mTimezoneOffsetSpin->setEnabled ( false );
1685 mTimezoneOffsetSpin->setValue( 0 );
1686 }
1687 }
1688 */
1689}
1690
1691void KOPrefsDialog::setupTimeZoneTab()
1692{
1693#if 0
1694 QFrame *topFrame = addPage(i18n("Time Zone"),0,0);
1695 // DesktopIcon("clock",KIcon::SizeMedium));
1696
1697 QGridLayout *topLayout = new QGridLayout(topFrame,5,2);
1698 topLayout->setSpacing(mSpacingHint);
1699 topLayout->setMargin(mMarginHint);
1700
1701 QHBox *timeZoneBox = new QHBox( topFrame );
1702 topLayout->addMultiCellWidget( timeZoneBox, 0, 0, 0, 1 );
1703
1704 new QLabel( i18n("Timezone:"), timeZoneBox );
1705 mTimeZoneCombo = new QComboBox( timeZoneBox );
1706 if ( QApplication::desktop()->width() < 300 ) {
1707 mTimeZoneCombo->setMaximumWidth(150);
1708 }
1709
1710 QStringList list;
1711 list = KGlobal::locale()->timeZoneList();
1712 mTimeZoneCombo->insertStringList(list);
1713
1714 // find the currently set time zone and select it
1715 QString sCurrentlySet = KOPrefs::instance()->mTimeZoneId;
1716 int nCurrentlySet = 11;
1717 for (int i = 0; i < mTimeZoneCombo->count(); i++)
1718 {
1719 if (mTimeZoneCombo->text(i) == sCurrentlySet)
1720 {
1721 nCurrentlySet = i;
1722 break;
1723 }
1724 }
1725 mTimeZoneCombo->setCurrentItem(nCurrentlySet);
1726 int iii = 1;
1727 KPrefsDialogWidBool *sb =
1728 addWidBool(i18n("Timezone has daylight saving"),
1729 &(KOPrefs::instance()->mUseDaylightsaving),topFrame);
1730 topLayout->addMultiCellWidget(sb->checkBox(), iii,iii,0,1);
1731 ++iii;
1732 QLabel* lab = new QLabel( i18n("Actual start and end is the\nsunday before this date."), topFrame );
1733 topLayout->addMultiCellWidget(lab, iii,iii,0,1);
1734 ++iii;
1735 lab = new QLabel( i18n("The year in the date is ignored."), topFrame );
1736 topLayout->addMultiCellWidget(lab, iii,iii,0,1);
1737 ++iii;
1738 lab = new QLabel( i18n("Daylight start:"), topFrame );
1739 topLayout->addWidget(lab, iii,0);
1740 mStartDateSavingEdit = new KDateEdit(topFrame);
1741 topLayout->addWidget(mStartDateSavingEdit, iii,1);
1742 ++iii;
1743
1744 lab = new QLabel( i18n("Daylight end:"), topFrame );
1745 topLayout->addWidget(lab, iii,0);
1746 mEndDateSavingEdit = new KDateEdit(topFrame);
1747 topLayout->addWidget(mEndDateSavingEdit, iii,1);
1748 ++iii;
1749 QDate current ( 2001, 1,1);
1750 mStartDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingStart-1));
1751 mEndDateSavingEdit->setDate(current.addDays(KOPrefs::instance()->mDaylightsavingEnd-1));
1752#endif
1753
1754}
1755 1497
diff --git a/korganizer/koprefsdialog.h b/korganizer/koprefsdialog.h
index 6892028..80d6545 100644
--- a/korganizer/koprefsdialog.h
+++ b/korganizer/koprefsdialog.h
@@ -1,166 +1,154 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 _KOPREFSDIALOG_H 23#ifndef _KOPREFSDIALOG_H
24#define _KOPREFSDIALOG_H 24#define _KOPREFSDIALOG_H
25 25
26#include <qframe.h> 26#include <qframe.h>
27#include <qdict.h> 27#include <qdict.h>
28#include <qcolor.h> 28#include <qcolor.h>
29#include <qlistview.h> 29#include <qlistview.h>
30 30
31#include <kdialogbase.h> 31#include <kdialogbase.h>
32 32
33#include <libkdepim/kprefsdialog.h> 33#include <libkdepim/kprefsdialog.h>
34#include <libkdepim/kdateedit.h> 34#include <libkdepim/kdateedit.h>
35#include <kcmconfigs/kdepimconfigwidget.h> 35#include <kcmconfigs/kdepimconfigwidget.h>
36 36
37class KColorButton; 37class KColorButton;
38class QSpinBox; 38class QSpinBox;
39class QSlider; 39class QSlider;
40class KURLRequester; 40class KURLRequester;
41class QComboBox; 41class QComboBox;
42class QLineEdit; 42class QLineEdit;
43class QStringList; 43class QStringList;
44 44
45/** Dialog to change the korganizer configuration. 45/** Dialog to change the korganizer configuration.
46 */ 46 */
47class KOPrefsDialog : public KPrefsDialog 47class KOPrefsDialog : public KPrefsDialog
48{ 48{
49 Q_OBJECT 49 Q_OBJECT
50 public: 50 public:
51 /** Initialize dialog and pages */ 51 /** Initialize dialog and pages */
52 KOPrefsDialog(QWidget *parent=0,char *name=0,bool modal=false); 52 KOPrefsDialog(QWidget *parent=0,char *name=0,bool modal=false);
53 ~KOPrefsDialog(); 53 ~KOPrefsDialog();
54 54
55 public slots: 55 public slots:
56 void showPrinterTab(); 56 void showPrinterTab();
57 57
58 /** Update controls for categories */ 58 /** Update controls for categories */
59 void updateCategories(); 59 void updateCategories();
60 void showSyncPage();
61 protected slots: 60 protected slots:
62 void selectSoundFile(); 61 void selectSoundFile();
63 void setCategoryColor(); 62 void setCategoryColor();
64 void updateCategoryColor(); 63 void updateCategoryColor();
65 void updateTimezoneOffset( int );
66
67
68 void warningExperimental(bool on);
69 void warningGroupScheduling();
70 void warningProjectView();
71
72 void toggleEmailSettings(bool); 64 void toggleEmailSettings(bool);
73 65
74 //additional emails 66 //additional emails
75 void addItem(); 67 void addItem();
76 void removeItem(); 68 void removeItem();
77 void updateItem(); 69 void updateItem();
78 void updateInput(); 70 void updateInput();
79 71
80 protected: 72 protected:
81 void usrReadConfig(); 73 void usrReadConfig();
82 void usrWriteConfig(); 74 void usrWriteConfig();
83 void setupGlobalTab(); 75 void setupGlobalTab();
84 76
85 void setupMainTab(); 77 void setupMainTab();
86 void setupTimeTab(); 78 void setupTimeTab();
87 void setupTimeZoneTab();
88 void setupLocaleTab(); 79 void setupLocaleTab();
89 void setupLocaleDateTab(); 80 void setupLocaleDateTab();
90 void setupFontsTab(); 81 void setupFontsTab();
91 void setupColorsTab(); 82 void setupColorsTab();
92 void setupViewsTab(); 83 void setupViewsTab();
93 void setupDisplayTab(); 84 void setupDisplayTab();
94 void setupPrinterTab(); 85 void setupPrinterTab();
95 void setupGroupSchedulingTab(); 86 void setupGroupSchedulingTab();
96 void setupGroupAutomationTab(); 87 void setupGroupAutomationTab();
97 void setupSyncTab();
98 void setupSyncAlgTab();
99 88
100 void setCombo(QComboBox *combo,const QString & text, const QStringList *tags = 0); 89 void setCombo(QComboBox *combo,const QString & text, const QStringList *tags = 0);
101 90
102 91
103 private: 92 private:
104 KDEPIMConfigWidget* kdelibcfg;
105 KPrefsDialogWidBool *mEnableGroupScheduling; 93 KPrefsDialogWidBool *mEnableGroupScheduling;
106 KPrefsDialogWidBool *mEnableProjectView; 94 KPrefsDialogWidBool *mEnableProjectView;
107 95
108 QFrame *mPrinterTab; 96 QFrame *mPrinterTab;
109 97
110 QLineEdit *nameEdit; 98 QLineEdit *nameEdit;
111 QLineEdit *emailEdit; 99 QLineEdit *emailEdit;
112 100
113 QComboBox *timeCombo; 101 QComboBox *timeCombo;
114 QComboBox *tzCombo; 102 QComboBox *tzCombo;
115 103
116 // widgets holding preferences data 104 // widgets holding preferences data
117 QLineEdit *mNameEdit; 105 QLineEdit *mNameEdit;
118 QLineEdit *mEmailEdit; 106 QLineEdit *mEmailEdit;
119 QLabel *mNameLabel; 107 QLabel *mNameLabel;
120 QLabel *mEmailLabel; 108 QLabel *mEmailLabel;
121 QLineEdit *mAdditionalEdit; 109 QLineEdit *mAdditionalEdit;
122 QSpinBox *mAutoSaveIntervalSpin; 110 QSpinBox *mAutoSaveIntervalSpin;
123 QSpinBox *mPrioSpin; 111 QSpinBox *mPrioSpin;
124 // QListView *mAMails; 112 // QListView *mAMails;
125 QLineEdit *aEmailsEdit; 113 QLineEdit *aEmailsEdit;
126 114
127 QComboBox *mTimeZoneCombo; 115 QComboBox *mTimeZoneCombo;
128 QStringList tzonenames; 116 QStringList tzonenames;
129 QSpinBox *mStartTimeSpin; 117 QSpinBox *mStartTimeSpin;
130 QSpinBox *mDefaultDurationSpin; 118 QSpinBox *mDefaultDurationSpin;
131 QComboBox *mAlarmTimeCombo; 119 QComboBox *mAlarmTimeCombo;
132 120
133 QComboBox *mCategoryCombo; 121 QComboBox *mCategoryCombo;
134 KColorButton *mCategoryButton; 122 KColorButton *mCategoryButton;
135 QDict<QColor> mCategoryDict; 123 QDict<QColor> mCategoryDict;
136 124
137 QSlider *mHourSizeSlider; 125 QSlider *mHourSizeSlider;
138 126
139 QSpinBox *mNextXDaysSpin; 127 QSpinBox *mNextXDaysSpin;
140 QSpinBox *mWhatsNextSpin; 128 QSpinBox *mWhatsNextSpin;
141 129
142 QLineEdit * mRemoteIPEdit; 130 QLineEdit * mRemoteIPEdit;
143 QLineEdit * mRemoteUser; 131 QLineEdit * mRemoteUser;
144 QLineEdit * mRemotePassWd; 132 QLineEdit * mRemotePassWd;
145 QLineEdit * mRemoteFile; 133 QLineEdit * mRemoteFile;
146 QLineEdit * mLocalTempFile; 134 QLineEdit * mLocalTempFile;
147 QWidget* mSetupSyncAlgTab; 135 QWidget* mSetupSyncAlgTab;
148 QLineEdit * mUserDateFormatLong; 136 QLineEdit * mUserDateFormatLong;
149 QLineEdit * mUserDateFormatShort; 137 QLineEdit * mUserDateFormatShort;
150 138
151 QSpinBox *mTimezoneOffsetSpin; 139 QSpinBox *mTimezoneOffsetSpin;
152 QSpinBox *mDaylightsavingStart; 140 QSpinBox *mDaylightsavingStart;
153 QSpinBox *mDaylightsavingEnd; 141 QSpinBox *mDaylightsavingEnd;
154 KDateEdit* mStartDateSavingEdit; 142 KDateEdit* mStartDateSavingEdit;
155 KDateEdit* mEndDateSavingEdit; 143 KDateEdit* mEndDateSavingEdit;
156 QSpinBox * mAlarmPlayBeeps; 144 QSpinBox * mAlarmPlayBeeps;
157 QSpinBox * mAlarmSuspendTime; 145 QSpinBox * mAlarmSuspendTime;
158 QSpinBox * mAlarmSuspendCount; 146 QSpinBox * mAlarmSuspendCount;
159 QSpinBox * mAlarmBeepInterval; 147 QSpinBox * mAlarmBeepInterval;
160 148
161 QLineEdit * mDefaultAlarmFile; 149 QLineEdit * mDefaultAlarmFile;
162 int mSpacingHint; 150 int mSpacingHint;
163 int mMarginHint; 151 int mMarginHint;
164}; 152};
165 153
166#endif 154#endif