summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 7fae4a9..bc8625d 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,2691 +1,2691 @@
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 (preston.brown@yale.edu) 8 Preston Brown (preston.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 66
67#include <libkcal/vcaldrag.h> 67#include <libkcal/vcaldrag.h>
68#include <libkcal/icaldrag.h> 68#include <libkcal/icaldrag.h>
69#include <libkcal/icalformat.h> 69#include <libkcal/icalformat.h>
70#include <libkcal/vcalformat.h> 70#include <libkcal/vcalformat.h>
71#include <libkcal/scheduler.h> 71#include <libkcal/scheduler.h>
72#include <libkcal/calendarlocal.h> 72#include <libkcal/calendarlocal.h>
73#include <libkcal/journal.h> 73#include <libkcal/journal.h>
74#include <libkcal/calfilter.h> 74#include <libkcal/calfilter.h>
75#include <libkcal/attendee.h> 75#include <libkcal/attendee.h>
76#include <libkcal/dndfactory.h> 76#include <libkcal/dndfactory.h>
77#include <libkcal/freebusy.h> 77#include <libkcal/freebusy.h>
78#include <libkcal/filestorage.h> 78#include <libkcal/filestorage.h>
79#include <libkcal/calendarresources.h> 79#include <libkcal/calendarresources.h>
80#include <libkcal/qtopiaformat.h> 80#include <libkcal/qtopiaformat.h>
81#include "../kalarmd/alarmdialog.h" 81#include "../kalarmd/alarmdialog.h"
82 82
83#ifndef DESKTOP_VERSION 83#ifndef DESKTOP_VERSION
84#include <libkcal/sharpformat.h> 84#include <libkcal/sharpformat.h>
85#endif 85#endif
86#include <libkcal/phoneformat.h> 86#include <libkcal/phoneformat.h>
87#ifndef KORG_NOMAIL 87#ifndef KORG_NOMAIL
88#include "komailclient.h" 88#include "komailclient.h"
89#endif 89#endif
90#ifndef KORG_NOPRINTER 90#ifndef KORG_NOPRINTER
91#include "calprinter.h" 91#include "calprinter.h"
92#endif 92#endif
93#ifndef KORG_NOPLUGINS 93#ifndef KORG_NOPLUGINS
94#include "kocore.h" 94#include "kocore.h"
95#endif 95#endif
96#include "koeventeditor.h" 96#include "koeventeditor.h"
97#include "kotodoeditor.h" 97#include "kotodoeditor.h"
98#include "koprefs.h" 98#include "koprefs.h"
99#include "koeventviewerdialog.h" 99#include "koeventviewerdialog.h"
100#include "publishdialog.h" 100#include "publishdialog.h"
101#include "kofilterview.h" 101#include "kofilterview.h"
102#include "koglobals.h" 102#include "koglobals.h"
103#include "koviewmanager.h" 103#include "koviewmanager.h"
104#include "koagendaview.h" 104#include "koagendaview.h"
105#include "kodialogmanager.h" 105#include "kodialogmanager.h"
106#include "outgoingdialog.h" 106#include "outgoingdialog.h"
107#include "incomingdialog.h" 107#include "incomingdialog.h"
108#include "statusdialog.h" 108#include "statusdialog.h"
109#include "kdatenavigator.h" 109#include "kdatenavigator.h"
110#include "kotodoview.h" 110#include "kotodoview.h"
111#include "datenavigator.h" 111#include "datenavigator.h"
112#include "resourceview.h" 112#include "resourceview.h"
113#include "navigatorbar.h" 113#include "navigatorbar.h"
114#include "searchdialog.h" 114#include "searchdialog.h"
115#include "mainwindow.h" 115#include "mainwindow.h"
116 116
117#include "calendarview.h" 117#include "calendarview.h"
118#ifndef DESKTOP_VERSION 118#ifndef DESKTOP_VERSION
119#include <qtopia/alarmserver.h> 119#include <qtopia/alarmserver.h>
120#endif 120#endif
121#ifndef _WIN32_ 121#ifndef _WIN32_
122#include <stdlib.h> 122#include <stdlib.h>
123#include <stdio.h> 123#include <stdio.h>
124#include <unistd.h> 124#include <unistd.h>
125#else 125#else
126#include <qprocess.h> 126#include <qprocess.h>
127#endif 127#endif
128using namespace KOrg; 128using namespace KOrg;
129using namespace KCal; 129using namespace KCal;
130extern int globalFlagBlockAgenda; 130extern int globalFlagBlockAgenda;
131extern int globalFlagBlockStartup; 131extern int globalFlagBlockStartup;
132 132
133 133
134 134
135class KOBeamPrefs : public QDialog 135class KOBeamPrefs : public QDialog
136{ 136{
137 public: 137 public:
138 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 138 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
139 QDialog( parent, name, true ) 139 QDialog( parent, name, true )
140 { 140 {
141 setCaption( i18n("Beam Options") ); 141 setCaption( i18n("Beam Options") );
142 QVBoxLayout* lay = new QVBoxLayout( this ); 142 QVBoxLayout* lay = new QVBoxLayout( this );
143 lay->setSpacing( 3 ); 143 lay->setSpacing( 3 );
144 lay->setMargin( 3 ); 144 lay->setMargin( 3 );
145 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 145 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
146 lay->addWidget( format ); 146 lay->addWidget( format );
147 format->setExclusive ( true ) ; 147 format->setExclusive ( true ) ;
148 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 148 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
149 lay->addWidget( time ); time->setExclusive ( true ) ; 149 lay->addWidget( time ); time->setExclusive ( true ) ;
150 vcal = new QRadioButton(" vCalendar ", format ); 150 vcal = new QRadioButton(" vCalendar ", format );
151 ical = new QRadioButton(" iCalendar ", format ); 151 ical = new QRadioButton(" iCalendar ", format );
152 vcal->setChecked( true ); 152 vcal->setChecked( true );
153 tz = new QRadioButton(i18n(" With timezone "), time ); 153 tz = new QRadioButton(i18n(" With timezone "), time );
154 local = new QRadioButton(i18n(" Local time "), time ); 154 local = new QRadioButton(i18n(" Local time "), time );
155 tz->setChecked( true ); 155 tz->setChecked( true );
156 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 156 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
157 lay->addWidget( ok ); 157 lay->addWidget( ok );
158 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 158 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
159 lay->addWidget( cancel ); 159 lay->addWidget( cancel );
160 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 160 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
161 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 161 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
162 resize( 200, 200 ); 162 resize( 200, 200 );
163 } 163 }
164 164
165 bool beamVcal() { return vcal->isChecked(); } 165 bool beamVcal() { return vcal->isChecked(); }
166 bool beamLocal() { return local->isChecked(); } 166 bool beamLocal() { return local->isChecked(); }
167private: 167private:
168 QRadioButton* vcal, *ical, *local, *tz; 168 QRadioButton* vcal, *ical, *local, *tz;
169}; 169};
170class KOCatPrefs : public QDialog 170class KOCatPrefs : public QDialog
171{ 171{
172 public: 172 public:
173 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 173 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
174 QDialog( parent, name, true ) 174 QDialog( parent, name, true )
175 { 175 {
176 setCaption( i18n("Manage new Categories") ); 176 setCaption( i18n("Manage new Categories") );
177 QVBoxLayout* lay = new QVBoxLayout( this ); 177 QVBoxLayout* lay = new QVBoxLayout( this );
178 lay->setSpacing( 3 ); 178 lay->setSpacing( 3 );
179 lay->setMargin( 3 ); 179 lay->setMargin( 3 );
180 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 ); 180 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 );
181 lay->addWidget( lab ); 181 lay->addWidget( lab );
182 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 182 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
183 lay->addWidget( format ); 183 lay->addWidget( format );
184 format->setExclusive ( true ) ; 184 format->setExclusive ( true ) ;
185 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 185 addCatBut = new QRadioButton(i18n("Add to category list"), format );
186 new QRadioButton(i18n("Remove from Events/Todos"), format ); 186 new QRadioButton(i18n("Remove from Events/Todos"), format );
187 addCatBut->setChecked( true ); 187 addCatBut->setChecked( true );
188 QPushButton * ok = new QPushButton( i18n("OK"), this ); 188 QPushButton * ok = new QPushButton( i18n("OK"), this );
189 lay->addWidget( ok ); 189 lay->addWidget( ok );
190 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 190 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
191 lay->addWidget( cancel ); 191 lay->addWidget( cancel );
192 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 192 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
193 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 193 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
194 resize( 200, 200 ); 194 resize( 200, 200 );
195 } 195 }
196 196
197 bool addCat() { return addCatBut->isChecked(); } 197 bool addCat() { return addCatBut->isChecked(); }
198private: 198private:
199 QRadioButton* addCatBut; 199 QRadioButton* addCatBut;
200}; 200};
201 201
202 202
203 203
204CalendarView::CalendarView( CalendarResources *calendar, 204CalendarView::CalendarView( CalendarResources *calendar,
205 QWidget *parent, const char *name ) 205 QWidget *parent, const char *name )
206 : CalendarViewBase( parent, name ), 206 : CalendarViewBase( parent, name ),
207 mCalendar( calendar ), 207 mCalendar( calendar ),
208 mResourceManager( calendar->resourceManager() ) 208 mResourceManager( calendar->resourceManager() )
209{ 209{
210 210
211 mEventEditor = 0; 211 mEventEditor = 0;
212 mTodoEditor = 0; 212 mTodoEditor = 0;
213 213
214 init(); 214 init();
215} 215}
216 216
217CalendarView::CalendarView( Calendar *calendar, 217CalendarView::CalendarView( Calendar *calendar,
218 QWidget *parent, const char *name ) 218 QWidget *parent, const char *name )
219 : CalendarViewBase( parent, name ), 219 : CalendarViewBase( parent, name ),
220 mCalendar( calendar ), 220 mCalendar( calendar ),
221 mResourceManager( 0 ) 221 mResourceManager( 0 )
222{ 222{
223 223
224 mEventEditor = 0; 224 mEventEditor = 0;
225 mTodoEditor = 0; 225 mTodoEditor = 0;
226 init();} 226 init();}
227 227
228void CalendarView::init() 228void CalendarView::init()
229{ 229{
230 beamDialog = new KOBeamPrefs(); 230 beamDialog = new KOBeamPrefs();
231 mDatePickerMode = 0; 231 mDatePickerMode = 0;
232 mCurrentSyncDevice = ""; 232 mCurrentSyncDevice = "";
233 writeLocale(); 233 writeLocale();
234 mViewManager = new KOViewManager( this ); 234 mViewManager = new KOViewManager( this );
235 mDialogManager = new KODialogManager( this ); 235 mDialogManager = new KODialogManager( this );
236 mEventViewerDialog = 0; 236 mEventViewerDialog = 0;
237 mModified = false; 237 mModified = false;
238 mReadOnly = false; 238 mReadOnly = false;
239 mSelectedIncidence = 0; 239 mSelectedIncidence = 0;
240 mCalPrinter = 0; 240 mCalPrinter = 0;
241 mFilters.setAutoDelete(true); 241 mFilters.setAutoDelete(true);
242 242
243 mCalendar->registerObserver( this ); 243 mCalendar->registerObserver( this );
244 // TODO: Make sure that view is updated, when calendar is changed. 244 // TODO: Make sure that view is updated, when calendar is changed.
245 245
246 mStorage = new FileStorage( mCalendar ); 246 mStorage = new FileStorage( mCalendar );
247 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 247 mNavigator = new DateNavigator( this, "datevav", mViewManager );
248 248
249 QBoxLayout *topLayout = (QBoxLayout*)layout(); 249 QBoxLayout *topLayout = (QBoxLayout*)layout();
250#ifndef KORG_NOSPLITTER 250#ifndef KORG_NOSPLITTER
251 // create the main layout frames. 251 // create the main layout frames.
252 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 252 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
253 topLayout->addWidget(mPanner); 253 topLayout->addWidget(mPanner);
254 254
255 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 255 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
256 "CalendarView::LeftFrame"); 256 "CalendarView::LeftFrame");
257 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 257 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
258 258
259 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 259 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
260 "CalendarView::DateNavigator", QDate::currentDate() ); 260 "CalendarView::DateNavigator", QDate::currentDate() );
261 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 261 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
262 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 262 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
263 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 263 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
264 264
265#ifdef KORG_NORESOURCEVIEW 265#ifdef KORG_NORESOURCEVIEW
266 mResourceView = 0; 266 mResourceView = 0;
267#else 267#else
268 if ( mResourceManager ) { 268 if ( mResourceManager ) {
269 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 269 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
270 mResourceView->updateView(); 270 mResourceView->updateView();
271 connect( mResourceView, SIGNAL( resourcesChanged() ), 271 connect( mResourceView, SIGNAL( resourcesChanged() ),
272 SLOT( updateView() ) ); 272 SLOT( updateView() ) );
273 } else { 273 } else {
274 mResourceView = 0; 274 mResourceView = 0;
275 } 275 }
276#endif 276#endif
277 QWidget *rightBox = new QWidget( mPanner ); 277 QWidget *rightBox = new QWidget( mPanner );
278 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 278 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
279 279
280 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 280 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
281 rightLayout->addWidget( mNavigatorBar ); 281 rightLayout->addWidget( mNavigatorBar );
282 282
283 mRightFrame = new QWidgetStack( rightBox ); 283 mRightFrame = new QWidgetStack( rightBox );
284 rightLayout->addWidget( mRightFrame, 1 ); 284 rightLayout->addWidget( mRightFrame, 1 );
285 285
286 mLeftFrame = mLeftSplitter; 286 mLeftFrame = mLeftSplitter;
287#else 287#else
288 QWidget *mainBox = new QWidget( this ); 288 QWidget *mainBox = new QWidget( this );
289 QWidget *leftFrame = new QWidget( mainBox ); 289 QWidget *leftFrame = new QWidget( mainBox );
290 290
291 QBoxLayout * mainBoxLayout; 291 QBoxLayout * mainBoxLayout;
292 QBoxLayout * leftFrameLayout; 292 QBoxLayout * leftFrameLayout;
293 if ( KOPrefs::instance()->mVerticalScreen ) { 293 if ( KOPrefs::instance()->mVerticalScreen ) {
294 mainBoxLayout = new QVBoxLayout(mainBox); 294 mainBoxLayout = new QVBoxLayout(mainBox);
295 leftFrameLayout = new QHBoxLayout(leftFrame ); 295 leftFrameLayout = new QHBoxLayout(leftFrame );
296 } else { 296 } else {
297 mainBoxLayout = new QHBoxLayout(mainBox); 297 mainBoxLayout = new QHBoxLayout(mainBox);
298 leftFrameLayout = new QVBoxLayout(leftFrame ); 298 leftFrameLayout = new QVBoxLayout(leftFrame );
299 } 299 }
300 topLayout->addWidget( mainBox ); 300 topLayout->addWidget( mainBox );
301 mainBoxLayout->addWidget (leftFrame); 301 mainBoxLayout->addWidget (leftFrame);
302 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 302 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
303 "CalendarView::DateNavigator", QDate::currentDate()); 303 "CalendarView::DateNavigator", QDate::currentDate());
304 // mDateNavigator->blockSignals( true ); 304 // mDateNavigator->blockSignals( true );
305 leftFrameLayout->addWidget( mDateNavigator ); 305 leftFrameLayout->addWidget( mDateNavigator );
306 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 306 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
307 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist"); 307 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist");
308 308
309 if ( QApplication::desktop()->width() < 480 ) { 309 if ( QApplication::desktop()->width() < 480 ) {
310 leftFrameLayout->addWidget(mFilterView); 310 leftFrameLayout->addWidget(mFilterView);
311 leftFrameLayout->addWidget(mTodoList, 2 ); 311 leftFrameLayout->addWidget(mTodoList, 2 );
312 312
313 } else { 313 } else {
314 leftFrameLayout->addWidget(mTodoList,2 ); 314 leftFrameLayout->addWidget(mTodoList,2 );
315 leftFrameLayout->addWidget(mFilterView ); 315 leftFrameLayout->addWidget(mFilterView );
316 } 316 }
317 mFilterView->hide(); 317 mFilterView->hide();
318 QWidget *rightBox = new QWidget( mainBox ); 318 QWidget *rightBox = new QWidget( mainBox );
319 mainBoxLayout->addWidget ( rightBox, 10 ); 319 mainBoxLayout->addWidget ( rightBox, 10 );
320 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 320 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
321 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 321 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
322 mRightFrame = new QWidgetStack( rightBox ); 322 mRightFrame = new QWidgetStack( rightBox );
323 rightLayout->addWidget( mNavigatorBar ); 323 rightLayout->addWidget( mNavigatorBar );
324 rightLayout->addWidget( mRightFrame, 10 ); 324 rightLayout->addWidget( mRightFrame, 10 );
325 325
326 mLeftFrame = leftFrame; 326 mLeftFrame = leftFrame;
327 if ( KOPrefs::instance()->mVerticalScreen ) { 327 if ( KOPrefs::instance()->mVerticalScreen ) {
328 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 328 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
329 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 329 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
330 } else { 330 } else {
331 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 331 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
332 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 332 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
333 } 333 }
334 334
335 //qDebug("Calendarview Size %d %d ", width(), height()); 335 //qDebug("Calendarview Size %d %d ", width(), height());
336#endif 336#endif
337 337
338 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 338 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
339 SLOT( showDates( const KCal::DateList & ) ) ); 339 SLOT( showDates( const KCal::DateList & ) ) );
340 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 340 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
341 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 341 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
342 342
343 connect( mNavigatorBar, SIGNAL( goPrevYear() ), 343 connect( mNavigatorBar, SIGNAL( goPrevYear() ),
344 mNavigator, SLOT( selectPreviousYear() ) ); 344 mNavigator, SLOT( selectPreviousYear() ) );
345 connect( mNavigatorBar, SIGNAL( goNextYear() ), 345 connect( mNavigatorBar, SIGNAL( goNextYear() ),
346 mNavigator, SLOT( selectNextYear() ) ); 346 mNavigator, SLOT( selectNextYear() ) );
347 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), 347 connect( mNavigatorBar, SIGNAL( goPrevMonth() ),
348 mNavigator, SLOT( selectPreviousMonth() ) ); 348 mNavigator, SLOT( selectPreviousMonth() ) );
349 connect( mNavigatorBar, SIGNAL( goNextMonth() ), 349 connect( mNavigatorBar, SIGNAL( goNextMonth() ),
350 mNavigator, SLOT( selectNextMonth() ) ); 350 mNavigator, SLOT( selectNextMonth() ) );
351 351
352 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 352 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
353 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) ); 353 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) );
354 354
355 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 355 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
356 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 356 mNavigator, SLOT( selectWeek( const QDate & ) ) );
357 357
358 connect( mDateNavigator, SIGNAL( goPrevYear() ), 358 connect( mDateNavigator, SIGNAL( goPrevYear() ),
359 mNavigator, SLOT( selectPreviousYear() ) ); 359 mNavigator, SLOT( selectPreviousYear() ) );
360 connect( mDateNavigator, SIGNAL( goNextYear() ), 360 connect( mDateNavigator, SIGNAL( goNextYear() ),
361 mNavigator, SLOT( selectNextYear() ) ); 361 mNavigator, SLOT( selectNextYear() ) );
362 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 362 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
363 mNavigator, SLOT( selectPreviousMonth() ) ); 363 mNavigator, SLOT( selectPreviousMonth() ) );
364 connect( mDateNavigator, SIGNAL( goNextMonth() ), 364 connect( mDateNavigator, SIGNAL( goNextMonth() ),
365 mNavigator, SLOT( selectNextMonth() ) ); 365 mNavigator, SLOT( selectNextMonth() ) );
366 366
367 connect( mDateNavigator, SIGNAL( goPrevious() ), 367 connect( mDateNavigator, SIGNAL( goPrevious() ),
368 mNavigator, SLOT( selectPrevious() ) ); 368 mNavigator, SLOT( selectPrevious() ) );
369 connect( mDateNavigator, SIGNAL( goNext() ), 369 connect( mDateNavigator, SIGNAL( goNext() ),
370 mNavigator, SLOT( selectNext() ) ); 370 mNavigator, SLOT( selectNext() ) );
371 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 371 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
372 mNavigator, SLOT( slotMonthSelect( int ) ) ); 372 mNavigator, SLOT( slotMonthSelect( int ) ) );
373 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ), 373 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ),
374 mNavigator, SLOT( slotMonthSelect( int ) ) ); 374 mNavigator, SLOT( slotMonthSelect( int ) ) );
375 375
376 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 376 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
377 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 377 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
378 378
379 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ), 379 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ),
380 SLOT( eventAdded( Event *) ) ); 380 SLOT( eventAdded( Event *) ) );
381 381
382 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 382 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
383 383
384 connect( this, SIGNAL( configChanged() ), 384 connect( this, SIGNAL( configChanged() ),
385 mDateNavigator, SLOT( updateConfig() ) ); 385 mDateNavigator, SLOT( updateConfig() ) );
386 386
387 connect( mTodoList, SIGNAL( newTodoSignal() ), 387 connect( mTodoList, SIGNAL( newTodoSignal() ),
388 SLOT( newTodo() ) ); 388 SLOT( newTodo() ) );
389 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 389 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
390 SLOT( newSubTodo( Todo * ) ) ); 390 SLOT( newSubTodo( Todo * ) ) );
391 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 391 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
392 SLOT( editTodo( Todo * ) ) ); 392 SLOT( editTodo( Todo * ) ) );
393 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 393 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
394 SLOT( showTodo( Todo *) ) ); 394 SLOT( showTodo( Todo *) ) );
395 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 395 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
396 SLOT( deleteTodo( Todo *) ) ); 396 SLOT( deleteTodo( Todo *) ) );
397 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 397 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
398 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 398 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
399 SLOT( purgeCompleted() ) ); 399 SLOT( purgeCompleted() ) );
400 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 400 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
401 SIGNAL( todoModified( Todo *, int ) ) ); 401 SIGNAL( todoModified( Todo *, int ) ) );
402 402
403 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 403 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
404 this, SLOT ( cloneIncidence( Incidence * ) ) ); 404 this, SLOT ( cloneIncidence( Incidence * ) ) );
405 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 405 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
406 this, SLOT (cancelIncidence( Incidence * ) ) ); 406 this, SLOT (cancelIncidence( Incidence * ) ) );
407 407
408 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 408 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
409 this, SLOT ( moveIncidence( Incidence * ) ) ); 409 this, SLOT ( moveIncidence( Incidence * ) ) );
410 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 410 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
411 this, SLOT ( beamIncidence( Incidence * ) ) ); 411 this, SLOT ( beamIncidence( Incidence * ) ) );
412 412
413 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 413 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
414 this, SLOT ( todo_unsub( Todo * ) ) ); 414 this, SLOT ( todo_unsub( Todo * ) ) );
415 415
416 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 416 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
417 SLOT( updateTodo( Todo *, int ) ) ); 417 SLOT( updateTodo( Todo *, int ) ) );
418 connect( this, SIGNAL( todoModified( Todo *, int )), this, 418 connect( this, SIGNAL( todoModified( Todo *, int )), this,
419 SLOT( changeTodoDisplay( Todo *, int ) ) ); 419 SLOT( changeTodoDisplay( Todo *, int ) ) );
420 420
421 421
422 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 422 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
423 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 423 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
424 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 424 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
425 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 425 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
426 426
427 427
428 428
429 429
430 430
431 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 431 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
432 SLOT(checkClipboard())); 432 SLOT(checkClipboard()));
433 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 433 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
434 SLOT( processTodoListSelection( Incidence * ) ) ); 434 SLOT( processTodoListSelection( Incidence * ) ) );
435 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 435 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
436 436
437 // kdDebug() << "CalendarView::CalendarView() done" << endl; 437 // kdDebug() << "CalendarView::CalendarView() done" << endl;
438 438
439 mDateFrame = new QVBox(0,0,WType_Popup); 439 mDateFrame = new QVBox(0,0,WType_Popup);
440 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 440 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
441 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 441 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
442 mDateFrame->setLineWidth(3); 442 mDateFrame->setLineWidth(3);
443 mDateFrame->hide(); 443 mDateFrame->hide();
444 mDateFrame->setCaption( i18n( "Pick a date to display")); 444 mDateFrame->setCaption( i18n( "Pick a date to display"));
445 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 445 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
446 446
447 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 447 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
448 448
449 mEventEditor = mDialogManager->getEventEditor(); 449 mEventEditor = mDialogManager->getEventEditor();
450 mTodoEditor = mDialogManager->getTodoEditor(); 450 mTodoEditor = mDialogManager->getTodoEditor();
451 451
452 mFlagEditDescription = false; 452 mFlagEditDescription = false;
453 453
454 mSuspendTimer = new QTimer( this ); 454 mSuspendTimer = new QTimer( this );
455 mAlarmTimer = new QTimer( this ); 455 mAlarmTimer = new QTimer( this );
456 mRecheckAlarmTimer = new QTimer( this ); 456 mRecheckAlarmTimer = new QTimer( this );
457 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 457 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
458 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 458 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
459 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 459 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
460 mAlarmDialog = new AlarmDialog( this ); 460 mAlarmDialog = new AlarmDialog( this );
461 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 461 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
462 mAlarmDialog->setServerNotification( false ); 462 mAlarmDialog->setServerNotification( false );
463 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 463 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
464} 464}
465 465
466 466
467CalendarView::~CalendarView() 467CalendarView::~CalendarView()
468{ 468{
469 // kdDebug() << "~CalendarView()" << endl; 469 // kdDebug() << "~CalendarView()" << endl;
470 //qDebug("CalendarView::~CalendarView() "); 470 //qDebug("CalendarView::~CalendarView() ");
471 delete mDialogManager; 471 delete mDialogManager;
472 delete mViewManager; 472 delete mViewManager;
473 delete mStorage; 473 delete mStorage;
474 delete mDateFrame ; 474 delete mDateFrame ;
475 delete beamDialog; 475 delete beamDialog;
476 //kdDebug() << "~CalendarView() done" << endl; 476 //kdDebug() << "~CalendarView() done" << endl;
477} 477}
478void CalendarView::timerAlarm() 478void CalendarView::timerAlarm()
479{ 479{
480 //qDebug("CalendarView::timerAlarm() "); 480 //qDebug("CalendarView::timerAlarm() ");
481 computeAlarm(mAlarmNotification ); 481 computeAlarm(mAlarmNotification );
482} 482}
483 483
484void CalendarView::suspendAlarm() 484void CalendarView::suspendAlarm()
485{ 485{
486 //qDebug(" CalendarView::suspendAlarm() "); 486 //qDebug(" CalendarView::suspendAlarm() ");
487 computeAlarm(mSuspendAlarmNotification ); 487 computeAlarm(mSuspendAlarmNotification );
488 488
489} 489}
490 490
491void CalendarView::startAlarm( QString mess , QString filename) 491void CalendarView::startAlarm( QString mess , QString filename)
492{ 492{
493 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 493 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
494 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 494 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
495 495
496} 496}
497 497
498void CalendarView::checkNextTimerAlarm() 498void CalendarView::checkNextTimerAlarm()
499{ 499{
500 mCalendar->checkAlarmForIncidence( 0, true ); 500 mCalendar->checkAlarmForIncidence( 0, true );
501} 501}
502 502
503void CalendarView::computeAlarm( QString msg ) 503void CalendarView::computeAlarm( QString msg )
504{ 504{
505 505
506 QString mess = msg; 506 QString mess = msg;
507 QString mAlarmMessage = mess.mid( 9 ); 507 QString mAlarmMessage = mess.mid( 9 );
508 QString filename = MainWindow::resourcePath(); 508 QString filename = MainWindow::resourcePath();
509 filename += "koalarm.wav"; 509 filename += "koalarm.wav";
510 QString tempfilename; 510 QString tempfilename;
511 if ( mess.left( 13 ) == "suspend_alarm") { 511 if ( mess.left( 13 ) == "suspend_alarm") {
512 bool error = false; 512 bool error = false;
513 int len = mess.mid( 13 ).find("+++"); 513 int len = mess.mid( 13 ).find("+++");
514 if ( len < 2 ) 514 if ( len < 2 )
515 error = true; 515 error = true;
516 else { 516 else {
517 tempfilename = mess.mid( 13, len ); 517 tempfilename = mess.mid( 13, len );
518 if ( !QFile::exists( tempfilename ) ) 518 if ( !QFile::exists( tempfilename ) )
519 error = true; 519 error = true;
520 } 520 }
521 if ( ! error ) { 521 if ( ! error ) {
522 filename = tempfilename; 522 filename = tempfilename;
523 } 523 }
524 mAlarmMessage = mess.mid( 13+len+3 ); 524 mAlarmMessage = mess.mid( 13+len+3 );
525 //qDebug("suspend file %s ",tempfilename.latin1() ); 525 //qDebug("suspend file %s ",tempfilename.latin1() );
526 startAlarm( mAlarmMessage, filename); 526 startAlarm( mAlarmMessage, filename);
527 return; 527 return;
528 } 528 }
529 if ( mess.left( 11 ) == "timer_alarm") { 529 if ( mess.left( 11 ) == "timer_alarm") {
530 //mTimerTime = 0; 530 //mTimerTime = 0;
531 startAlarm( mess.mid( 11 ), filename ); 531 startAlarm( mess.mid( 11 ), filename );
532 return; 532 return;
533 } 533 }
534 if ( mess.left( 10 ) == "proc_alarm") { 534 if ( mess.left( 10 ) == "proc_alarm") {
535 bool error = false; 535 bool error = false;
536 int len = mess.mid( 10 ).find("+++"); 536 int len = mess.mid( 10 ).find("+++");
537 if ( len < 2 ) 537 if ( len < 2 )
538 error = true; 538 error = true;
539 else { 539 else {
540 tempfilename = mess.mid( 10, len ); 540 tempfilename = mess.mid( 10, len );
541 if ( !QFile::exists( tempfilename ) ) 541 if ( !QFile::exists( tempfilename ) )
542 error = true; 542 error = true;
543 } 543 }
544 if ( error ) { 544 if ( error ) {
545 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 545 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
546 mAlarmMessage += mess.mid( 10+len+3+9 ); 546 mAlarmMessage += mess.mid( 10+len+3+9 );
547 } else { 547 } else {
548 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 548 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
549 //qDebug("-----system command %s ",tempfilename.latin1() ); 549 //qDebug("-----system command %s ",tempfilename.latin1() );
550#ifndef _WIN32_ 550#ifndef _WIN32_
551 if ( vfork () == 0 ) { 551 if ( vfork () == 0 ) {
552 execl ( tempfilename.latin1(), 0 ); 552 execl ( tempfilename.latin1(), 0 );
553 return; 553 return;
554 } 554 }
555#else 555#else
556 QProcess* p = new QProcess(); 556 QProcess* p = new QProcess();
557 p->addArgument( tempfilename.latin1() ); 557 p->addArgument( tempfilename.latin1() );
558 p->start(); 558 p->start();
559 return; 559 return;
560#endif 560#endif
561 561
562 return; 562 return;
563 } 563 }
564 564
565 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 565 //qDebug("+++++++system command %s ",tempfilename.latin1() );
566 } 566 }
567 if ( mess.left( 11 ) == "audio_alarm") { 567 if ( mess.left( 11 ) == "audio_alarm") {
568 bool error = false; 568 bool error = false;
569 int len = mess.mid( 11 ).find("+++"); 569 int len = mess.mid( 11 ).find("+++");
570 if ( len < 2 ) 570 if ( len < 2 )
571 error = true; 571 error = true;
572 else { 572 else {
573 tempfilename = mess.mid( 11, len ); 573 tempfilename = mess.mid( 11, len );
574 if ( !QFile::exists( tempfilename ) ) 574 if ( !QFile::exists( tempfilename ) )
575 error = true; 575 error = true;
576 } 576 }
577 if ( ! error ) { 577 if ( ! error ) {
578 filename = tempfilename; 578 filename = tempfilename;
579 } 579 }
580 mAlarmMessage = mess.mid( 11+len+3+9 ); 580 mAlarmMessage = mess.mid( 11+len+3+9 );
581 //qDebug("audio file command %s ",tempfilename.latin1() ); 581 //qDebug("audio file command %s ",tempfilename.latin1() );
582 } 582 }
583 if ( mess.left( 9 ) == "cal_alarm") { 583 if ( mess.left( 9 ) == "cal_alarm") {
584 mAlarmMessage = mess.mid( 9 ) ; 584 mAlarmMessage = mess.mid( 9 ) ;
585 } 585 }
586 586
587 startAlarm( mAlarmMessage, filename ); 587 startAlarm( mAlarmMessage, filename );
588 588
589 589
590} 590}
591 591
592void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 592void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
593{ 593{
594 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 594 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
595 595
596 mSuspendAlarmNotification = noti; 596 mSuspendAlarmNotification = noti;
597 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 597 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
598 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 598 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
599 mSuspendTimer->start( ms , true ); 599 mSuspendTimer->start( ms , true );
600 600
601} 601}
602 602
603void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 603void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
604{ 604{
605 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 605 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
606 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 606 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
607#ifndef DESKTOP_VERSION 607#ifndef DESKTOP_VERSION
608 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 608 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
609#endif 609#endif
610 return; 610 return;
611 } 611 }
612 int maxSec; 612 int maxSec;
613 //maxSec = 5; //testing only 613 //maxSec = 5; //testing only
614 maxSec = 86400+3600; // one day+1hour 614 maxSec = 86400+3600; // one day+1hour
615 mAlarmNotification = noti; 615 mAlarmNotification = noti;
616 int sec = QDateTime::currentDateTime().secsTo( qdt ); 616 int sec = QDateTime::currentDateTime().secsTo( qdt );
617 if ( sec > maxSec ) { 617 if ( sec > maxSec ) {
618 mRecheckAlarmTimer->start( maxSec * 1000 ); 618 mRecheckAlarmTimer->start( maxSec * 1000 );
619 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 619 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
620 return; 620 return;
621 } else { 621 } else {
622 mRecheckAlarmTimer->stop(); 622 mRecheckAlarmTimer->stop();
623 } 623 }
624 //qDebug("Alarm timer started with secs: %d ", sec); 624 //qDebug("Alarm timer started with secs: %d ", sec);
625 mAlarmTimer->start( sec *1000 , true ); 625 mAlarmTimer->start( sec *1000 , true );
626 626
627} 627}
628// called by mRecheckAlarmTimer to get next alarm 628// called by mRecheckAlarmTimer to get next alarm
629// we need this, because a QTimer has only a max range of 25 days 629// we need this, because a QTimer has only a max range of 25 days
630void CalendarView::recheckTimerAlarm() 630void CalendarView::recheckTimerAlarm()
631{ 631{
632 mAlarmTimer->stop(); 632 mAlarmTimer->stop();
633 mRecheckAlarmTimer->stop(); 633 mRecheckAlarmTimer->stop();
634 mCalendar->checkAlarmForIncidence( 0, true ); 634 mCalendar->checkAlarmForIncidence( 0, true );
635} 635}
636void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 636void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
637{ 637{
638 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 638 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
639 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 639 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
640#ifndef DESKTOP_VERSION 640#ifndef DESKTOP_VERSION
641 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 641 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
642#endif 642#endif
643 return; 643 return;
644 } 644 }
645 mAlarmTimer->stop(); 645 mAlarmTimer->stop();
646} 646}
647void CalendarView::selectWeekNum ( int num ) 647void CalendarView::selectWeekNum ( int num )
648{ 648{
649 dateNavigator()->selectWeek( num ); 649 dateNavigator()->selectWeek( num );
650 mViewManager->showWeekView(); 650 mViewManager->showWeekView();
651} 651}
652KOViewManager *CalendarView::viewManager() 652KOViewManager *CalendarView::viewManager()
653{ 653{
654 return mViewManager; 654 return mViewManager;
655} 655}
656 656
657KODialogManager *CalendarView::dialogManager() 657KODialogManager *CalendarView::dialogManager()
658{ 658{
659 return mDialogManager; 659 return mDialogManager;
660} 660}
661 661
662QDate CalendarView::startDate() 662QDate CalendarView::startDate()
663{ 663{
664 DateList dates = mNavigator->selectedDates(); 664 DateList dates = mNavigator->selectedDates();
665 665
666 return dates.first(); 666 return dates.first();
667} 667}
668 668
669QDate CalendarView::endDate() 669QDate CalendarView::endDate()
670{ 670{
671 DateList dates = mNavigator->selectedDates(); 671 DateList dates = mNavigator->selectedDates();
672 672
673 return dates.last(); 673 return dates.last();
674} 674}
675 675
676 676
677void CalendarView::createPrinter() 677void CalendarView::createPrinter()
678{ 678{
679#ifndef KORG_NOPRINTER 679#ifndef KORG_NOPRINTER
680 if (!mCalPrinter) { 680 if (!mCalPrinter) {
681 mCalPrinter = new CalPrinter(this, mCalendar); 681 mCalPrinter = new CalPrinter(this, mCalendar);
682 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 682 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
683 } 683 }
684#endif 684#endif
685} 685}
686 686
687void CalendarView::confSync() 687void CalendarView::confSync()
688{ 688{
689 static KSyncPrefsDialog* sp = 0; 689 static KSyncPrefsDialog* sp = 0;
690 if ( ! sp ) { 690 if ( ! sp ) {
691 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 691 sp = new KSyncPrefsDialog( this, "syncprefs", true );
692 } 692 }
693 sp->usrReadConfig(); 693 sp->usrReadConfig();
694#ifndef DESKTOP_VERSION 694#ifndef DESKTOP_VERSION
695 sp->showMaximized(); 695 sp->showMaximized();
696#else 696#else
697 sp->show(); 697 sp->show();
698#endif 698#endif
699 sp->exec(); 699 sp->exec();
700 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 700 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
701 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 701 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
702} 702}
703 703
704 704
705//KOPrefs::instance()->mWriteBackFile 705//KOPrefs::instance()->mWriteBackFile
706//KOPrefs::instance()->mWriteBackExistingOnly 706//KOPrefs::instance()->mWriteBackExistingOnly
707 707
708// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 708// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
709// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 709// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
710// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 710// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
711// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 711// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
712// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 712// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
713// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 713// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
714 714
715int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 715int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
716{ 716{
717 717
718 //void setZaurusId(int id); 718 //void setZaurusId(int id);
719 // int zaurusId() const; 719 // int zaurusId() const;
720 // void setZaurusUid(int id); 720 // void setZaurusUid(int id);
721 // int zaurusUid() const; 721 // int zaurusUid() const;
722 // void setZaurusStat(int id); 722 // void setZaurusStat(int id);
723 // int zaurusStat() const; 723 // int zaurusStat() const;
724 // 0 equal 724 // 0 equal
725 // 1 take local 725 // 1 take local
726 // 2 take remote 726 // 2 take remote
727 // 3 cancel 727 // 3 cancel
728 QDateTime lastSync = mLastCalendarSync; 728 QDateTime lastSync = mLastCalendarSync;
729 QDateTime localMod = local->lastModified(); 729 QDateTime localMod = local->lastModified();
730 QDateTime remoteMod = remote->lastModified(); 730 QDateTime remoteMod = remote->lastModified();
731 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 731 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
732 bool remCh, locCh; 732 bool remCh, locCh;
733 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 733 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
734 //if ( remCh ) 734 //if ( remCh )
735 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 735 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
736 locCh = ( localMod > mLastCalendarSync ); 736 locCh = ( localMod > mLastCalendarSync );
737 if ( !remCh && ! locCh ) { 737 if ( !remCh && ! locCh ) {
738 //qDebug("both not changed "); 738 //qDebug("both not changed ");
739 lastSync = localMod.addDays(1); 739 lastSync = localMod.addDays(1);
740 if ( mode <= SYNC_PREF_ASK ) 740 if ( mode <= SYNC_PREF_ASK )
741 return 0; 741 return 0;
742 } else { 742 } else {
743 if ( locCh ) { 743 if ( locCh ) {
744 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 744 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
745 lastSync = localMod.addDays( -1 ); 745 lastSync = localMod.addDays( -1 );
746 if ( !remCh ) 746 if ( !remCh )
747 remoteMod = ( lastSync.addDays( -1 ) ); 747 remoteMod = ( lastSync.addDays( -1 ) );
748 } else { 748 } else {
749 //qDebug(" not loc changed "); 749 //qDebug(" not loc changed ");
750 lastSync = localMod.addDays( 1 ); 750 lastSync = localMod.addDays( 1 );
751 if ( remCh ) 751 if ( remCh )
752 remoteMod =( lastSync.addDays( 1 ) ); 752 remoteMod =( lastSync.addDays( 1 ) );
753 753
754 } 754 }
755 } 755 }
756 full = true; 756 full = true;
757 if ( mode < SYNC_PREF_ASK ) 757 if ( mode < SYNC_PREF_ASK )
758 mode = SYNC_PREF_ASK; 758 mode = SYNC_PREF_ASK;
759 } else { 759 } else {
760 if ( localMod == remoteMod ) 760 if ( localMod == remoteMod )
761 if ( local->revision() == remote->revision() ) 761 if ( local->revision() == remote->revision() )
762 return 0; 762 return 0;
763 763
764 } 764 }
765 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 765 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
766 766
767 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 767 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
768 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 768 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
769 //full = true; //debug only 769 //full = true; //debug only
770 if ( full ) { 770 if ( full ) {
771 bool equ = false; 771 bool equ = false;
772 if ( local->type() == "Event" ) { 772 if ( local->type() == "Event" ) {
773 equ = (*((Event*) local) == *((Event*) remote)); 773 equ = (*((Event*) local) == *((Event*) remote));
774 } 774 }
775 else if ( local->type() =="Todo" ) 775 else if ( local->type() =="Todo" )
776 equ = (*((Todo*) local) == (*(Todo*) remote)); 776 equ = (*((Todo*) local) == (*(Todo*) remote));
777 else if ( local->type() =="Journal" ) 777 else if ( local->type() =="Journal" )
778 equ = (*((Journal*) local) == *((Journal*) remote)); 778 equ = (*((Journal*) local) == *((Journal*) remote));
779 if ( equ ) { 779 if ( equ ) {
780 //qDebug("equal "); 780 //qDebug("equal ");
781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 781 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
782 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 782 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
783 } 783 }
784 if ( mode < SYNC_PREF_FORCE_LOCAL ) 784 if ( mode < SYNC_PREF_FORCE_LOCAL )
785 return 0; 785 return 0;
786 786
787 }//else //debug only 787 }//else //debug only
788 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 788 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
789 } 789 }
790 int result; 790 int result;
791 bool localIsNew; 791 bool localIsNew;
792 //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() ); 792 //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() );
793 793
794 if ( full && mode < SYNC_PREF_NEWEST ) 794 if ( full && mode < SYNC_PREF_NEWEST )
795 mode = SYNC_PREF_ASK; 795 mode = SYNC_PREF_ASK;
796 796
797 switch( mode ) { 797 switch( mode ) {
798 case SYNC_PREF_LOCAL: 798 case SYNC_PREF_LOCAL:
799 if ( lastSync > remoteMod ) 799 if ( lastSync > remoteMod )
800 return 1; 800 return 1;
801 if ( lastSync > localMod ) 801 if ( lastSync > localMod )
802 return 2; 802 return 2;
803 return 1; 803 return 1;
804 break; 804 break;
805 case SYNC_PREF_REMOTE: 805 case SYNC_PREF_REMOTE:
806 if ( lastSync > remoteMod ) 806 if ( lastSync > remoteMod )
807 return 1; 807 return 1;
808 if ( lastSync > localMod ) 808 if ( lastSync > localMod )
809 return 2; 809 return 2;
810 return 2; 810 return 2;
811 break; 811 break;
812 case SYNC_PREF_NEWEST: 812 case SYNC_PREF_NEWEST:
813 if ( localMod > remoteMod ) 813 if ( localMod > remoteMod )
814 return 1; 814 return 1;
815 else 815 else
816 return 2; 816 return 2;
817 break; 817 break;
818 case SYNC_PREF_ASK: 818 case SYNC_PREF_ASK:
819 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 819 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
820 if ( lastSync > remoteMod ) 820 if ( lastSync > remoteMod )
821 return 1; 821 return 1;
822 if ( lastSync > localMod ) 822 if ( lastSync > localMod )
823 return 2; 823 return 2;
824 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 824 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
825 localIsNew = localMod >= remoteMod; 825 localIsNew = localMod >= remoteMod;
826 if ( localIsNew ) 826 if ( localIsNew )
827 getEventViewerDialog()->setColorMode( 1 ); 827 getEventViewerDialog()->setColorMode( 1 );
828 else 828 else
829 getEventViewerDialog()->setColorMode( 2 ); 829 getEventViewerDialog()->setColorMode( 2 );
830 getEventViewerDialog()->setIncidence(local); 830 getEventViewerDialog()->setIncidence(local);
831 if ( localIsNew ) 831 if ( localIsNew )
832 getEventViewerDialog()->setColorMode( 2 ); 832 getEventViewerDialog()->setColorMode( 2 );
833 else 833 else
834 getEventViewerDialog()->setColorMode( 1 ); 834 getEventViewerDialog()->setColorMode( 1 );
835 getEventViewerDialog()->addIncidence(remote); 835 getEventViewerDialog()->addIncidence(remote);
836 getEventViewerDialog()->setColorMode( 0 ); 836 getEventViewerDialog()->setColorMode( 0 );
837 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 837 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
838 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 838 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
839 getEventViewerDialog()->showMe(); 839 getEventViewerDialog()->showMe();
840 result = getEventViewerDialog()->executeS( localIsNew ); 840 result = getEventViewerDialog()->executeS( localIsNew );
841 return result; 841 return result;
842 842
843 break; 843 break;
844 case SYNC_PREF_FORCE_LOCAL: 844 case SYNC_PREF_FORCE_LOCAL:
845 return 1; 845 return 1;
846 break; 846 break;
847 case SYNC_PREF_FORCE_REMOTE: 847 case SYNC_PREF_FORCE_REMOTE:
848 return 2; 848 return 2;
849 break; 849 break;
850 850
851 default: 851 default:
852 // SYNC_PREF_TAKE_BOTH not implemented 852 // SYNC_PREF_TAKE_BOTH not implemented
853 break; 853 break;
854 } 854 }
855 return 0; 855 return 0;
856} 856}
857Event* CalendarView::getLastSyncEvent() 857Event* CalendarView::getLastSyncEvent()
858{ 858{
859 Event* lse; 859 Event* lse;
860 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 860 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
861 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 861 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
862 if (!lse) { 862 if (!lse) {
863 lse = new Event(); 863 lse = new Event();
864 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 864 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
865 QString sum = ""; 865 QString sum = "";
866 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 866 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
867 sum = "E: "; 867 sum = "E: ";
868 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 868 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
869 lse->setDtStart( mLastCalendarSync ); 869 lse->setDtStart( mLastCalendarSync );
870 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 870 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
871 lse->setCategories( i18n("SyncEvent") ); 871 lse->setCategories( i18n("SyncEvent") );
872 lse->setReadOnly( true ); 872 lse->setReadOnly( true );
873 mCalendar->addEvent( lse ); 873 mCalendar->addEvent( lse );
874 } 874 }
875 875
876 return lse; 876 return lse;
877 877
878} 878}
879// probaly useless 879// probaly useless
880void CalendarView::setupExternSyncProfiles() 880void CalendarView::setupExternSyncProfiles()
881{ 881{
882 Event* lse; 882 Event* lse;
883 mExternLastSyncEvent.clear(); 883 mExternLastSyncEvent.clear();
884 int i; 884 int i;
885 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { 885 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
886 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); 886 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
887 if ( lse ) 887 if ( lse )
888 mExternLastSyncEvent.append( lse ); 888 mExternLastSyncEvent.append( lse );
889 else 889 else
890 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); 890 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
891 } 891 }
892 892
893} 893}
894// we check, if the to delete event has a id for a profile 894// we check, if the to delete event has a id for a profile
895// if yes, we set this id in the profile to delete 895// if yes, we set this id in the profile to delete
896void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 896void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
897{ 897{
898 if ( lastSync.count() == 0 ) { 898 if ( lastSync.count() == 0 ) {
899 //qDebug(" lastSync.count() == 0"); 899 //qDebug(" lastSync.count() == 0");
900 return; 900 return;
901 } 901 }
902 if ( toDelete->type() == "Journal" ) 902 if ( toDelete->type() == "Journal" )
903 return; 903 return;
904 904
905 Event* eve = lastSync.first(); 905 Event* eve = lastSync.first();
906 906
907 while ( eve ) { 907 while ( eve ) {
908 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 908 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
909 if ( !id.isEmpty() ) { 909 if ( !id.isEmpty() ) {
910 QString des = eve->description(); 910 QString des = eve->description();
911 QString pref = "e"; 911 QString pref = "e";
912 if ( toDelete->type() == "Todo" ) 912 if ( toDelete->type() == "Todo" )
913 pref = "t"; 913 pref = "t";
914 des += pref+ id + ","; 914 des += pref+ id + ",";
915 eve->setReadOnly( false ); 915 eve->setReadOnly( false );
916 eve->setDescription( des ); 916 eve->setDescription( des );
917 //qDebug("setdes %s ", des.latin1()); 917 //qDebug("setdes %s ", des.latin1());
918 eve->setReadOnly( true ); 918 eve->setReadOnly( true );
919 } 919 }
920 eve = lastSync.next(); 920 eve = lastSync.next();
921 } 921 }
922 922
923} 923}
924void CalendarView::checkExternalId( Incidence * inc ) 924void CalendarView::checkExternalId( Incidence * inc )
925{ 925{
926 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 926 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
927 checkExternSyncEvent( lastSync, inc ); 927 checkExternSyncEvent( lastSync, inc );
928 928
929} 929}
930bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 930bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
931{ 931{
932 bool syncOK = true; 932 bool syncOK = true;
933 int addedEvent = 0; 933 int addedEvent = 0;
934 int addedEventR = 0; 934 int addedEventR = 0;
935 int deletedEventR = 0; 935 int deletedEventR = 0;
936 int deletedEventL = 0; 936 int deletedEventL = 0;
937 int changedLocal = 0; 937 int changedLocal = 0;
938 int changedRemote = 0; 938 int changedRemote = 0;
939 //QPtrList<Event> el = local->rawEvents(); 939 //QPtrList<Event> el = local->rawEvents();
940 Event* eventR; 940 Event* eventR;
941 QString uid; 941 QString uid;
942 int take; 942 int take;
943 Event* eventL; 943 Event* eventL;
944 Event* eventRSync; 944 Event* eventRSync;
945 Event* eventLSync; 945 Event* eventLSync;
946 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 946 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
947 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 947 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
948 bool fullDateRange = false; 948 bool fullDateRange = false;
949 local->resetTempSyncStat(); 949 local->resetTempSyncStat();
950 mLastCalendarSync = QDateTime::currentDateTime(); 950 mLastCalendarSync = QDateTime::currentDateTime();
951 QDateTime modifiedCalendar = mLastCalendarSync;; 951 QDateTime modifiedCalendar = mLastCalendarSync;;
952 eventLSync = getLastSyncEvent(); 952 eventLSync = getLastSyncEvent();
953 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 953 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
954 if ( eventR ) { 954 if ( eventR ) {
955 eventRSync = (Event*) eventR->clone(); 955 eventRSync = (Event*) eventR->clone();
956 remote->deleteEvent(eventR ); 956 remote->deleteEvent(eventR );
957 957
958 } else { 958 } else {
959 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 959 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
960 eventRSync = (Event*)eventLSync->clone(); 960 eventRSync = (Event*)eventLSync->clone();
961 } else { 961 } else {
962 fullDateRange = true; 962 fullDateRange = true;
963 eventRSync = new Event(); 963 eventRSync = new Event();
964 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 964 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
965 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 965 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
966 eventRSync->setDtStart( mLastCalendarSync ); 966 eventRSync->setDtStart( mLastCalendarSync );
967 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 967 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
968 eventRSync->setCategories( i18n("SyncEvent") ); 968 eventRSync->setCategories( i18n("SyncEvent") );
969 } 969 }
970 } 970 }
971 if ( eventLSync->dtStart() == mLastCalendarSync ) 971 if ( eventLSync->dtStart() == mLastCalendarSync )
972 fullDateRange = true; 972 fullDateRange = true;
973 973
974 if ( ! fullDateRange ) { 974 if ( ! fullDateRange ) {
975 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 975 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
976 976
977 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 977 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
978 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 978 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
979 fullDateRange = true; 979 fullDateRange = true;
980 } 980 }
981 } 981 }
982 if ( fullDateRange ) 982 if ( fullDateRange )
983 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 983 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
984 else 984 else
985 mLastCalendarSync = eventLSync->dtStart(); 985 mLastCalendarSync = eventLSync->dtStart();
986 // for resyncing if own file has changed 986 // for resyncing if own file has changed
987 if ( mCurrentSyncDevice == "deleteaftersync" ) { 987 if ( mCurrentSyncDevice == "deleteaftersync" ) {
988 mLastCalendarSync = loadedFileVersion; 988 mLastCalendarSync = loadedFileVersion;
989 qDebug("setting mLastCalendarSync "); 989 qDebug("setting mLastCalendarSync ");
990 } 990 }
991 //qDebug("*************************** "); 991 //qDebug("*************************** ");
992 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 992 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
993 QPtrList<Incidence> er = remote->rawIncidences(); 993 QPtrList<Incidence> er = remote->rawIncidences();
994 Incidence* inR = er.first(); 994 Incidence* inR = er.first();
995 Incidence* inL; 995 Incidence* inL;
996 QProgressBar bar( er.count(),0 ); 996 QProgressBar bar( er.count(),0 );
997 bar.setCaption (i18n("Syncing - close to abort!") ); 997 bar.setCaption (i18n("Syncing - close to abort!") );
998 998
999 int w = 300; 999 int w = 300;
1000 if ( QApplication::desktop()->width() < 320 ) 1000 if ( QApplication::desktop()->width() < 320 )
1001 w = 220; 1001 w = 220;
1002 int h = bar.sizeHint().height() ; 1002 int h = bar.sizeHint().height() ;
1003 int dw = QApplication::desktop()->width(); 1003 int dw = QApplication::desktop()->width();
1004 int dh = QApplication::desktop()->height(); 1004 int dh = QApplication::desktop()->height();
1005 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1005 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1006 bar.show(); 1006 bar.show();
1007 int modulo = (er.count()/10)+1; 1007 int modulo = (er.count()/10)+1;
1008 int incCounter = 0; 1008 int incCounter = 0;
1009 while ( inR ) { 1009 while ( inR ) {
1010 if ( ! bar.isVisible() ) 1010 if ( ! bar.isVisible() )
1011 return false; 1011 return false;
1012 if ( incCounter % modulo == 0 ) 1012 if ( incCounter % modulo == 0 )
1013 bar.setProgress( incCounter ); 1013 bar.setProgress( incCounter );
1014 ++incCounter; 1014 ++incCounter;
1015 uid = inR->uid(); 1015 uid = inR->uid();
1016 bool skipIncidence = false; 1016 bool skipIncidence = false;
1017 if ( uid.left(15) == QString("last-syncEvent-") ) 1017 if ( uid.left(15) == QString("last-syncEvent-") )
1018 skipIncidence = true; 1018 skipIncidence = true;
1019 QString idS; 1019 QString idS;
1020 qApp->processEvents(); 1020 qApp->processEvents();
1021 if ( !skipIncidence ) { 1021 if ( !skipIncidence ) {
1022 inL = local->incidence( uid ); 1022 inL = local->incidence( uid );
1023 if ( inL ) { // maybe conflict - same uid in both calendars 1023 if ( inL ) { // maybe conflict - same uid in both calendars
1024 int maxrev = inL->revision(); 1024 int maxrev = inL->revision();
1025 if ( maxrev < inR->revision() ) 1025 if ( maxrev < inR->revision() )
1026 maxrev = inR->revision(); 1026 maxrev = inR->revision();
1027 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1027 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1028 //qDebug("take %d %s ", take, inL->summary().latin1()); 1028 //qDebug("take %d %s ", take, inL->summary().latin1());
1029 if ( take == 3 ) 1029 if ( take == 3 )
1030 return false; 1030 return false;
1031 if ( take == 1 ) {// take local 1031 if ( take == 1 ) {// take local
1032 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1032 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1033 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1033 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1034 else 1034 else
1035 idS = inR->IDStr(); 1035 idS = inR->IDStr();
1036 remote->deleteIncidence( inR ); 1036 remote->deleteIncidence( inR );
1037 if ( inL->revision() < maxrev ) 1037 if ( inL->revision() < maxrev )
1038 inL->setRevision( maxrev ); 1038 inL->setRevision( maxrev );
1039 inR = inL->clone(); 1039 inR = inL->clone();
1040 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1040 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1041 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1041 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1042 inR->setIDStr( idS ); 1042 inR->setIDStr( idS );
1043 remote->addIncidence( inR ); 1043 remote->addIncidence( inR );
1044 ++changedRemote; 1044 ++changedRemote;
1045 } else { 1045 } else {
1046 if ( inR->revision() < maxrev ) 1046 if ( inR->revision() < maxrev )
1047 inR->setRevision( maxrev ); 1047 inR->setRevision( maxrev );
1048 idS = inL->IDStr(); 1048 idS = inL->IDStr();
1049 local->deleteIncidence( inL ); 1049 local->deleteIncidence( inL );
1050 inL = inR->clone(); 1050 inL = inR->clone();
1051 inL->setIDStr( idS ); 1051 inL->setIDStr( idS );
1052 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1052 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1053 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1053 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1054 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1054 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1055 } 1055 }
1056 local->addIncidence( inL ); 1056 local->addIncidence( inL );
1057 ++changedLocal; 1057 ++changedLocal;
1058 } 1058 }
1059 } 1059 }
1060 } else { // no conflict 1060 } else { // no conflict
1061 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1061 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1062 QString des = eventLSync->description(); 1062 QString des = eventLSync->description();
1063 QString pref = "e"; 1063 QString pref = "e";
1064 if ( inR->type() == "Todo" ) 1064 if ( inR->type() == "Todo" )
1065 pref = "t"; 1065 pref = "t";
1066 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1066 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1067 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1067 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1068 //remote->deleteIncidence( inR ); 1068 //remote->deleteIncidence( inR );
1069 ++deletedEventR; 1069 ++deletedEventR;
1070 } else { 1070 } else {
1071 inR->setLastModified( modifiedCalendar ); 1071 inR->setLastModified( modifiedCalendar );
1072 inL = inR->clone(); 1072 inL = inR->clone();
1073 local->addIncidence( inL ); 1073 local->addIncidence( inL );
1074 ++addedEvent; 1074 ++addedEvent;
1075 } 1075 }
1076 } else { 1076 } else {
1077 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1077 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1078 inR->setLastModified( modifiedCalendar ); 1078 inR->setLastModified( modifiedCalendar );
1079 local->addIncidence( inR->clone() ); 1079 local->addIncidence( inR->clone() );
1080 ++addedEvent; 1080 ++addedEvent;
1081 } else { 1081 } else {
1082 checkExternSyncEvent(eventRSyncSharp, inR); 1082 checkExternSyncEvent(eventRSyncSharp, inR);
1083 remote->deleteIncidence( inR ); 1083 remote->deleteIncidence( inR );
1084 ++deletedEventR; 1084 ++deletedEventR;
1085 } 1085 }
1086 } 1086 }
1087 } 1087 }
1088 } 1088 }
1089 inR = er.next(); 1089 inR = er.next();
1090 } 1090 }
1091 QPtrList<Incidence> el = local->rawIncidences(); 1091 QPtrList<Incidence> el = local->rawIncidences();
1092 inL = el.first(); 1092 inL = el.first();
1093 modulo = (el.count()/10)+1; 1093 modulo = (el.count()/10)+1;
1094 bar.setCaption (i18n("Add / remove events") ); 1094 bar.setCaption (i18n("Add / remove events") );
1095 bar.setTotalSteps ( el.count() ) ; 1095 bar.setTotalSteps ( el.count() ) ;
1096 bar.show(); 1096 bar.show();
1097 incCounter = 0; 1097 incCounter = 0;
1098 1098
1099 while ( inL ) { 1099 while ( inL ) {
1100 1100
1101 qApp->processEvents(); 1101 qApp->processEvents();
1102 if ( ! bar.isVisible() ) 1102 if ( ! bar.isVisible() )
1103 return false; 1103 return false;
1104 if ( incCounter % modulo == 0 ) 1104 if ( incCounter % modulo == 0 )
1105 bar.setProgress( incCounter ); 1105 bar.setProgress( incCounter );
1106 ++incCounter; 1106 ++incCounter;
1107 uid = inL->uid(); 1107 uid = inL->uid();
1108 bool skipIncidence = false; 1108 bool skipIncidence = false;
1109 if ( uid.left(15) == QString("last-syncEvent-") ) 1109 if ( uid.left(15) == QString("last-syncEvent-") )
1110 skipIncidence = true; 1110 skipIncidence = true;
1111 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1111 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1112 skipIncidence = true; 1112 skipIncidence = true;
1113 if ( !skipIncidence ) { 1113 if ( !skipIncidence ) {
1114 inR = remote->incidence( uid ); 1114 inR = remote->incidence( uid );
1115 if ( ! inR ) { 1115 if ( ! inR ) {
1116 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1116 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1117 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1117 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1118 checkExternSyncEvent(eventLSyncSharp, inL); 1118 checkExternSyncEvent(eventLSyncSharp, inL);
1119 local->deleteIncidence( inL ); 1119 local->deleteIncidence( inL );
1120 ++deletedEventL; 1120 ++deletedEventL;
1121 } else { 1121 } else {
1122 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1122 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1123 inL->removeID(mCurrentSyncDevice ); 1123 inL->removeID(mCurrentSyncDevice );
1124 ++addedEventR; 1124 ++addedEventR;
1125 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1125 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1126 inL->setLastModified( modifiedCalendar ); 1126 inL->setLastModified( modifiedCalendar );
1127 inR = inL->clone(); 1127 inR = inL->clone();
1128 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1128 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1129 remote->addIncidence( inR ); 1129 remote->addIncidence( inR );
1130 } 1130 }
1131 } 1131 }
1132 } else { 1132 } else {
1133 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1133 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1134 checkExternSyncEvent(eventLSyncSharp, inL); 1134 checkExternSyncEvent(eventLSyncSharp, inL);
1135 local->deleteIncidence( inL ); 1135 local->deleteIncidence( inL );
1136 ++deletedEventL; 1136 ++deletedEventL;
1137 } else { 1137 } else {
1138 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1138 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1139 ++addedEventR; 1139 ++addedEventR;
1140 inL->setLastModified( modifiedCalendar ); 1140 inL->setLastModified( modifiedCalendar );
1141 remote->addIncidence( inL->clone() ); 1141 remote->addIncidence( inL->clone() );
1142 } 1142 }
1143 } 1143 }
1144 } 1144 }
1145 } 1145 }
1146 } 1146 }
1147 inL = el.next(); 1147 inL = el.next();
1148 } 1148 }
1149 int delFut = 0; 1149 int delFut = 0;
1150 if ( KOPrefs::instance()->mWriteBackInFuture ) { 1150 if ( KOPrefs::instance()->mWriteBackInFuture ) {
1151 er = remote->rawIncidences(); 1151 er = remote->rawIncidences();
1152 inR = er.first(); 1152 inR = er.first();
1153 QDateTime dt; 1153 QDateTime dt;
1154 QDateTime cur = QDateTime::currentDateTime(); 1154 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1155 QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 ); 1155 QDateTime end = cur.addDays( (KOPrefs::instance()->mWriteBackInFuture +1 ) *7 );
1156 while ( inR ) { 1156 while ( inR ) {
1157 if ( inR->type() == "Todo" ) { 1157 if ( inR->type() == "Todo" ) {
1158 Todo * t = (Todo*)inR; 1158 Todo * t = (Todo*)inR;
1159 if ( t->hasDueDate() ) 1159 if ( t->hasDueDate() )
1160 dt = t->dtDue(); 1160 dt = t->dtDue();
1161 else 1161 else
1162 dt = cur.addSecs( 62 ); 1162 dt = cur.addSecs( 62 );
1163 } 1163 }
1164 else if (inR->type() == "Event" ) { 1164 else if (inR->type() == "Event" ) {
1165 bool ok; 1165 bool ok;
1166 dt = inR->getNextOccurence( cur, &ok ); 1166 dt = inR->getNextOccurence( cur, &ok );
1167 if ( !ok ) 1167 if ( !ok )
1168 dt = cur.addSecs( -62 ); 1168 dt = cur.addSecs( -62 );
1169 } 1169 }
1170 else 1170 else
1171 dt = inR->dtStart(); 1171 dt = inR->dtStart();
1172 if ( dt < cur || dt > end ) { 1172 if ( dt < cur || dt > end ) {
1173 remote->deleteIncidence( inR ); 1173 remote->deleteIncidence( inR );
1174 ++delFut; 1174 ++delFut;
1175 } 1175 }
1176 inR = er.next(); 1176 inR = er.next();
1177 } 1177 }
1178 } 1178 }
1179 bar.hide(); 1179 bar.hide();
1180 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1180 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1181 eventLSync->setReadOnly( false ); 1181 eventLSync->setReadOnly( false );
1182 eventLSync->setDtStart( mLastCalendarSync ); 1182 eventLSync->setDtStart( mLastCalendarSync );
1183 eventRSync->setDtStart( mLastCalendarSync ); 1183 eventRSync->setDtStart( mLastCalendarSync );
1184 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1184 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1185 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1185 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1186 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1186 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1187 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1187 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1188 eventLSync->setReadOnly( true ); 1188 eventLSync->setReadOnly( true );
1189 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1189 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1190 remote->addEvent( eventRSync ); 1190 remote->addEvent( eventRSync );
1191 QString mes; 1191 QString mes;
1192 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"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); 1192 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"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR );
1193 QString delmess; 1193 QString delmess;
1194 if ( delFut ) { 1194 if ( delFut ) {
1195 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture ); 1195 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture );
1196 mes += delmess; 1196 mes += delmess;
1197 } 1197 }
1198 if ( KOPrefs::instance()->mShowSyncSummary ) { 1198 if ( KOPrefs::instance()->mShowSyncSummary ) {
1199 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1199 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1200 } 1200 }
1201 qDebug( mes ); 1201 qDebug( mes );
1202 mCalendar->checkAlarmForIncidence( 0, true ); 1202 mCalendar->checkAlarmForIncidence( 0, true );
1203 return syncOK; 1203 return syncOK;
1204} 1204}
1205 1205
1206void CalendarView::setSyncDevice( QString s ) 1206void CalendarView::setSyncDevice( QString s )
1207{ 1207{
1208 mCurrentSyncDevice= s; 1208 mCurrentSyncDevice= s;
1209} 1209}
1210void CalendarView::setSyncName( QString s ) 1210void CalendarView::setSyncName( QString s )
1211{ 1211{
1212 mCurrentSyncName= s; 1212 mCurrentSyncName= s;
1213} 1213}
1214bool CalendarView::syncCalendar(QString filename, int mode) 1214bool CalendarView::syncCalendar(QString filename, int mode)
1215{ 1215{
1216 mGlobalSyncMode = SYNC_MODE_NORMAL; 1216 mGlobalSyncMode = SYNC_MODE_NORMAL;
1217 CalendarLocal* calendar = new CalendarLocal(); 1217 CalendarLocal* calendar = new CalendarLocal();
1218 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1218 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1219 FileStorage* storage = new FileStorage( calendar ); 1219 FileStorage* storage = new FileStorage( calendar );
1220 bool syncOK = false; 1220 bool syncOK = false;
1221 storage->setFileName( filename ); 1221 storage->setFileName( filename );
1222 // qDebug("loading ... "); 1222 // qDebug("loading ... ");
1223 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1223 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1224 getEventViewerDialog()->setSyncMode( true ); 1224 getEventViewerDialog()->setSyncMode( true );
1225 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1225 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1226 getEventViewerDialog()->setSyncMode( false ); 1226 getEventViewerDialog()->setSyncMode( false );
1227 if ( syncOK ) { 1227 if ( syncOK ) {
1228 if ( KOPrefs::instance()->mWriteBackFile ) 1228 if ( KOPrefs::instance()->mWriteBackFile )
1229 { 1229 {
1230 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1230 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1231 storage->save(); 1231 storage->save();
1232 } 1232 }
1233 } 1233 }
1234 setModified( true ); 1234 setModified( true );
1235 } 1235 }
1236 delete storage; 1236 delete storage;
1237 delete calendar; 1237 delete calendar;
1238 if ( syncOK ) 1238 if ( syncOK )
1239 updateView(); 1239 updateView();
1240 return syncOK; 1240 return syncOK;
1241} 1241}
1242void CalendarView::syncPhone() 1242void CalendarView::syncPhone()
1243{ 1243{
1244 syncExternal( 1 ); 1244 syncExternal( 1 );
1245} 1245}
1246void CalendarView::syncExternal( int mode ) 1246void CalendarView::syncExternal( int mode )
1247{ 1247{
1248 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1248 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1249 //mCurrentSyncDevice = "sharp-DTM"; 1249 //mCurrentSyncDevice = "sharp-DTM";
1250 if ( KOPrefs::instance()->mAskForPreferences ) 1250 if ( KOPrefs::instance()->mAskForPreferences )
1251 edit_sync_options(); 1251 edit_sync_options();
1252 qApp->processEvents(); 1252 qApp->processEvents();
1253 CalendarLocal* calendar = new CalendarLocal(); 1253 CalendarLocal* calendar = new CalendarLocal();
1254 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1254 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1255 bool syncOK = false; 1255 bool syncOK = false;
1256 bool loadSuccess = false; 1256 bool loadSuccess = false;
1257 PhoneFormat* phoneFormat = 0; 1257 PhoneFormat* phoneFormat = 0;
1258#ifndef DESKTOP_VERSION 1258#ifndef DESKTOP_VERSION
1259 SharpFormat* sharpFormat = 0; 1259 SharpFormat* sharpFormat = 0;
1260 if ( mode == 0 ) { // sharp 1260 if ( mode == 0 ) { // sharp
1261 sharpFormat = new SharpFormat () ; 1261 sharpFormat = new SharpFormat () ;
1262 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1262 loadSuccess = sharpFormat->load( calendar, mCalendar );
1263 1263
1264 } else 1264 } else
1265#endif 1265#endif
1266 if ( mode == 1 ) { // phone 1266 if ( mode == 1 ) { // phone
1267 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1267 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1268 KOPrefs::instance()->mPhoneDevice, 1268 KOPrefs::instance()->mPhoneDevice,
1269 KOPrefs::instance()->mPhoneConnection, 1269 KOPrefs::instance()->mPhoneConnection,
1270 KOPrefs::instance()->mPhoneModel); 1270 KOPrefs::instance()->mPhoneModel);
1271 loadSuccess = phoneFormat->load( calendar,mCalendar); 1271 loadSuccess = phoneFormat->load( calendar,mCalendar);
1272 1272
1273 } else 1273 } else
1274 return; 1274 return;
1275 if ( loadSuccess ) { 1275 if ( loadSuccess ) {
1276 getEventViewerDialog()->setSyncMode( true ); 1276 getEventViewerDialog()->setSyncMode( true );
1277 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1277 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1278 getEventViewerDialog()->setSyncMode( false ); 1278 getEventViewerDialog()->setSyncMode( false );
1279 qApp->processEvents(); 1279 qApp->processEvents();
1280 if ( syncOK ) { 1280 if ( syncOK ) {
1281 if ( KOPrefs::instance()->mWriteBackFile ) 1281 if ( KOPrefs::instance()->mWriteBackFile )
1282 { 1282 {
1283 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1283 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1284 Incidence* inc = iL.first(); 1284 Incidence* inc = iL.first();
1285 if ( phoneFormat ) { 1285 if ( phoneFormat ) {
1286 while ( inc ) { 1286 while ( inc ) {
1287 inc->removeID(mCurrentSyncDevice); 1287 inc->removeID(mCurrentSyncDevice);
1288 inc = iL.next(); 1288 inc = iL.next();
1289 } 1289 }
1290 } 1290 }
1291#ifndef DESKTOP_VERSION 1291#ifndef DESKTOP_VERSION
1292 if ( sharpFormat ) 1292 if ( sharpFormat )
1293 sharpFormat->save(calendar); 1293 sharpFormat->save(calendar);
1294#endif 1294#endif
1295 if ( phoneFormat ) 1295 if ( phoneFormat )
1296 phoneFormat->save(calendar); 1296 phoneFormat->save(calendar);
1297 iL = calendar->rawIncidences(); 1297 iL = calendar->rawIncidences();
1298 inc = iL.first(); 1298 inc = iL.first();
1299 Incidence* loc; 1299 Incidence* loc;
1300 while ( inc ) { 1300 while ( inc ) {
1301 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1301 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1302 loc = mCalendar->incidence(inc->uid() ); 1302 loc = mCalendar->incidence(inc->uid() );
1303 if ( loc ) { 1303 if ( loc ) {
1304 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1304 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1305 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1305 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1306 } 1306 }
1307 } 1307 }
1308 inc = iL.next(); 1308 inc = iL.next();
1309 } 1309 }
1310 Incidence* lse = getLastSyncEvent(); 1310 Incidence* lse = getLastSyncEvent();
1311 if ( lse ) { 1311 if ( lse ) {
1312 lse->setReadOnly( false ); 1312 lse->setReadOnly( false );
1313 lse->setDescription( "" ); 1313 lse->setDescription( "" );
1314 lse->setReadOnly( true ); 1314 lse->setReadOnly( true );
1315 } 1315 }
1316 } 1316 }
1317 } 1317 }
1318 setModified( true ); 1318 setModified( true );
1319 } else { 1319 } else {
1320 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1320 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1321 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1321 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1322 question, i18n("Ok")) ; 1322 question, i18n("Ok")) ;
1323 1323
1324 } 1324 }
1325 delete calendar; 1325 delete calendar;
1326 updateView(); 1326 updateView();
1327 return ;//syncOK; 1327 return ;//syncOK;
1328 1328
1329} 1329}
1330void CalendarView::syncSharp() 1330void CalendarView::syncSharp()
1331{ 1331{
1332 syncExternal( 0 ); 1332 syncExternal( 0 );
1333 1333
1334} 1334}
1335 1335
1336 1336
1337//#include <kabc/stdaddressbook.h> 1337//#include <kabc/stdaddressbook.h>
1338bool CalendarView::importBday() 1338bool CalendarView::importBday()
1339{ 1339{
1340#if 0 1340#if 0
1341 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1341 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1342 KABC::AddressBook::Iterator it; 1342 KABC::AddressBook::Iterator it;
1343 int count = 0; 1343 int count = 0;
1344 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1344 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1345 ++count; 1345 ++count;
1346 } 1346 }
1347 QProgressBar bar(count,0 ); 1347 QProgressBar bar(count,0 );
1348 int w = 300; 1348 int w = 300;
1349 if ( QApplication::desktop()->width() < 320 ) 1349 if ( QApplication::desktop()->width() < 320 )
1350 w = 220; 1350 w = 220;
1351 int h = bar.sizeHint().height() ; 1351 int h = bar.sizeHint().height() ;
1352 int dw = QApplication::desktop()->width(); 1352 int dw = QApplication::desktop()->width();
1353 int dh = QApplication::desktop()->height(); 1353 int dh = QApplication::desktop()->height();
1354 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1354 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1355 bar.show(); 1355 bar.show();
1356 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1356 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1357 qApp->processEvents(); 1357 qApp->processEvents();
1358 count = 0; 1358 count = 0;
1359 int addCount = 0; 1359 int addCount = 0;
1360 KCal::Attendee* a = 0; 1360 KCal::Attendee* a = 0;
1361 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1361 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1362 if ( ! bar.isVisible() ) 1362 if ( ! bar.isVisible() )
1363 return false; 1363 return false;
1364 bar.setProgress( count++ ); 1364 bar.setProgress( count++ );
1365 qApp->processEvents(); 1365 qApp->processEvents();
1366 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1366 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1367 if ( (*it).birthday().date().isValid() ){ 1367 if ( (*it).birthday().date().isValid() ){
1368 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1368 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1369 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1369 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1370 ++addCount; 1370 ++addCount;
1371 } 1371 }
1372 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1372 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1373 if ( anni.isValid() ){ 1373 if ( anni.isValid() ){
1374 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1374 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1375 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1375 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1376 ++addCount; 1376 ++addCount;
1377 } 1377 }
1378 } 1378 }
1379 updateView(); 1379 updateView();
1380 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1380 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1381#endif 1381#endif
1382 return true; 1382 return true;
1383} 1383}
1384 1384
1385bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1385bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1386{ 1386{
1387 //qDebug("addAnni "); 1387 //qDebug("addAnni ");
1388 Event * ev = new Event(); 1388 Event * ev = new Event();
1389 if ( a ) { 1389 if ( a ) {
1390 ev->addAttendee( a ); 1390 ev->addAttendee( a );
1391 } 1391 }
1392 QString kind; 1392 QString kind;
1393 if ( birthday ) 1393 if ( birthday )
1394 kind = i18n( "Birthday" ); 1394 kind = i18n( "Birthday" );
1395 else 1395 else
1396 kind = i18n( "Anniversary" ); 1396 kind = i18n( "Anniversary" );
1397 ev->setSummary( name + " - " + kind ); 1397 ev->setSummary( name + " - " + kind );
1398 ev->setOrganizer( "nobody@nowhere" ); 1398 ev->setOrganizer( "nobody@nowhere" );
1399 ev->setCategories( kind ); 1399 ev->setCategories( kind );
1400 ev->setDtStart( QDateTime(date) ); 1400 ev->setDtStart( QDateTime(date) );
1401 ev->setDtEnd( QDateTime(date) ); 1401 ev->setDtEnd( QDateTime(date) );
1402 ev->setFloats( true ); 1402 ev->setFloats( true );
1403 Recurrence * rec = ev->recurrence(); 1403 Recurrence * rec = ev->recurrence();
1404 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1404 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1405 rec->addYearlyNum( date.month() ); 1405 rec->addYearlyNum( date.month() );
1406 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1406 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1407 delete ev; 1407 delete ev;
1408 return false; 1408 return false;
1409 } 1409 }
1410 return true; 1410 return true;
1411 1411
1412} 1412}
1413bool CalendarView::importQtopia( const QString &categories, 1413bool CalendarView::importQtopia( const QString &categories,
1414 const QString &datebook, 1414 const QString &datebook,
1415 const QString &todolist ) 1415 const QString &todolist )
1416{ 1416{
1417 1417
1418 QtopiaFormat qtopiaFormat; 1418 QtopiaFormat qtopiaFormat;
1419 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1419 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1420 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1420 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1421 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1421 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1422 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1422 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1423 1423
1424 updateView(); 1424 updateView();
1425 return true; 1425 return true;
1426 1426
1427#if 0 1427#if 0
1428 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1428 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1429 mCurrentSyncDevice = "qtopia-XML"; 1429 mCurrentSyncDevice = "qtopia-XML";
1430 if ( KOPrefs::instance()->mAskForPreferences ) 1430 if ( KOPrefs::instance()->mAskForPreferences )
1431 edit_sync_options(); 1431 edit_sync_options();
1432 qApp->processEvents(); 1432 qApp->processEvents();
1433 CalendarLocal* calendar = new CalendarLocal(); 1433 CalendarLocal* calendar = new CalendarLocal();
1434 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1434 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1435 bool syncOK = false; 1435 bool syncOK = false;
1436 QtopiaFormat qtopiaFormat; 1436 QtopiaFormat qtopiaFormat;
1437 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1437 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1438 bool loadOk = true; 1438 bool loadOk = true;
1439 if ( !categories.isEmpty() ) 1439 if ( !categories.isEmpty() )
1440 loadOk = qtopiaFormat.load( calendar, categories ); 1440 loadOk = qtopiaFormat.load( calendar, categories );
1441 if ( loadOk && !datebook.isEmpty() ) 1441 if ( loadOk && !datebook.isEmpty() )
1442 loadOk = qtopiaFormat.load( calendar, datebook ); 1442 loadOk = qtopiaFormat.load( calendar, datebook );
1443 if ( loadOk && !todolist.isEmpty() ) 1443 if ( loadOk && !todolist.isEmpty() )
1444 loadOk = qtopiaFormat.load( calendar, todolist ); 1444 loadOk = qtopiaFormat.load( calendar, todolist );
1445 1445
1446 if ( loadOk ) { 1446 if ( loadOk ) {
1447 getEventViewerDialog()->setSyncMode( true ); 1447 getEventViewerDialog()->setSyncMode( true );
1448 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1448 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1449 getEventViewerDialog()->setSyncMode( false ); 1449 getEventViewerDialog()->setSyncMode( false );
1450 qApp->processEvents(); 1450 qApp->processEvents();
1451 if ( syncOK ) { 1451 if ( syncOK ) {
1452 if ( KOPrefs::instance()->mWriteBackFile ) 1452 if ( KOPrefs::instance()->mWriteBackFile )
1453 { 1453 {
1454 // write back XML file 1454 // write back XML file
1455 1455
1456 } 1456 }
1457 setModified( true ); 1457 setModified( true );
1458 } 1458 }
1459 } else { 1459 } else {
1460 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1460 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1461 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1461 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1462 question, i18n("Ok")) ; 1462 question, i18n("Ok")) ;
1463 } 1463 }
1464 delete calendar; 1464 delete calendar;
1465 updateView(); 1465 updateView();
1466 return syncOK; 1466 return syncOK;
1467 1467
1468 1468
1469#endif 1469#endif
1470 1470
1471} 1471}
1472 1472
1473void CalendarView::setSyncEventsReadOnly() 1473void CalendarView::setSyncEventsReadOnly()
1474{ 1474{
1475 Event * ev; 1475 Event * ev;
1476 QPtrList<Event> eL = mCalendar->rawEvents(); 1476 QPtrList<Event> eL = mCalendar->rawEvents();
1477 ev = eL.first(); 1477 ev = eL.first();
1478 while ( ev ) { 1478 while ( ev ) {
1479 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1479 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1480 ev->setReadOnly( true ); 1480 ev->setReadOnly( true );
1481 ev = eL.next(); 1481 ev = eL.next();
1482 } 1482 }
1483} 1483}
1484bool CalendarView::openCalendar(QString filename, bool merge) 1484bool CalendarView::openCalendar(QString filename, bool merge)
1485{ 1485{
1486 1486
1487 if (filename.isEmpty()) { 1487 if (filename.isEmpty()) {
1488 return false; 1488 return false;
1489 } 1489 }
1490 1490
1491 if (!QFile::exists(filename)) { 1491 if (!QFile::exists(filename)) {
1492 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1492 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1493 return false; 1493 return false;
1494 } 1494 }
1495 1495
1496 globalFlagBlockAgenda = 1; 1496 globalFlagBlockAgenda = 1;
1497 if (!merge) mCalendar->close(); 1497 if (!merge) mCalendar->close();
1498 1498
1499 mStorage->setFileName( filename ); 1499 mStorage->setFileName( filename );
1500 1500
1501 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1501 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1502 if ( merge ) ;//setModified( true ); 1502 if ( merge ) ;//setModified( true );
1503 else { 1503 else {
1504 //setModified( true ); 1504 //setModified( true );
1505 mViewManager->setDocumentId( filename ); 1505 mViewManager->setDocumentId( filename );
1506 mDialogManager->setDocumentId( filename ); 1506 mDialogManager->setDocumentId( filename );
1507 mTodoList->setDocumentId( filename ); 1507 mTodoList->setDocumentId( filename );
1508 } 1508 }
1509 globalFlagBlockAgenda = 2; 1509 globalFlagBlockAgenda = 2;
1510 // if ( getLastSyncEvent() ) 1510 // if ( getLastSyncEvent() )
1511 // getLastSyncEvent()->setReadOnly( true ); 1511 // getLastSyncEvent()->setReadOnly( true );
1512 mCalendar->reInitAlarmSettings(); 1512 mCalendar->reInitAlarmSettings();
1513 setSyncEventsReadOnly(); 1513 setSyncEventsReadOnly();
1514 updateUnmanagedViews(); 1514 updateUnmanagedViews();
1515 updateView(); 1515 updateView();
1516 if ( filename != MainWindow::defaultFileName() ) 1516 if ( filename != MainWindow::defaultFileName() )
1517 saveCalendar( MainWindow::defaultFileName() ); 1517 saveCalendar( MainWindow::defaultFileName() );
1518 loadedFileVersion = QDateTime::currentDateTime(); 1518 loadedFileVersion = QDateTime::currentDateTime();
1519 return true; 1519 return true;
1520 } else { 1520 } else {
1521 // while failing to load, the calendar object could 1521 // while failing to load, the calendar object could
1522 // have become partially populated. Clear it out. 1522 // have become partially populated. Clear it out.
1523 if ( !merge ) mCalendar->close(); 1523 if ( !merge ) mCalendar->close();
1524 1524
1525 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1525 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1526 1526
1527 globalFlagBlockAgenda = 2; 1527 globalFlagBlockAgenda = 2;
1528 updateView(); 1528 updateView();
1529 } 1529 }
1530 return false; 1530 return false;
1531} 1531}
1532void CalendarView::setLoadedFileVersion(QDateTime dt) 1532void CalendarView::setLoadedFileVersion(QDateTime dt)
1533{ 1533{
1534 loadedFileVersion = dt; 1534 loadedFileVersion = dt;
1535} 1535}
1536bool CalendarView::checkFileChanged(QString fn) 1536bool CalendarView::checkFileChanged(QString fn)
1537{ 1537{
1538 QFileInfo finf ( fn ); 1538 QFileInfo finf ( fn );
1539 if ( !finf.exists() ) 1539 if ( !finf.exists() )
1540 return true; 1540 return true;
1541 QDateTime dt = finf.lastModified (); 1541 QDateTime dt = finf.lastModified ();
1542 if ( dt <= loadedFileVersion ) 1542 if ( dt <= loadedFileVersion )
1543 return false; 1543 return false;
1544 return true; 1544 return true;
1545 1545
1546} 1546}
1547bool CalendarView::checkFileVersion(QString fn) 1547bool CalendarView::checkFileVersion(QString fn)
1548{ 1548{
1549 QFileInfo finf ( fn ); 1549 QFileInfo finf ( fn );
1550 if ( !finf.exists() ) 1550 if ( !finf.exists() )
1551 return true; 1551 return true;
1552 QDateTime dt = finf.lastModified (); 1552 QDateTime dt = finf.lastModified ();
1553 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1553 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1554 //qDebug("file on disk version %s",dt.toString().latin1()); 1554 //qDebug("file on disk version %s",dt.toString().latin1());
1555 if ( dt <= loadedFileVersion ) 1555 if ( dt <= loadedFileVersion )
1556 return true; 1556 return true;
1557 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, false)) , 1557 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, false)) ,
1558 i18n("KO/Pi Warning"),i18n("Overwrite"), 1558 i18n("KO/Pi Warning"),i18n("Overwrite"),
1559 i18n("Sync+save")); 1559 i18n("Sync+save"));
1560 1560
1561 if ( km == KMessageBox::Cancel ) 1561 if ( km == KMessageBox::Cancel )
1562 return false; 1562 return false;
1563 if ( km == KMessageBox::Yes ) 1563 if ( km == KMessageBox::Yes )
1564 return true; 1564 return true;
1565 1565
1566 setSyncDevice("deleteaftersync" ); 1566 setSyncDevice("deleteaftersync" );
1567 KOPrefs::instance()->mAskForPreferences = true; 1567 KOPrefs::instance()->mAskForPreferences = true;
1568 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1568 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1569 KOPrefs::instance()->mWriteBackFile = false; 1569 KOPrefs::instance()->mWriteBackFile = false;
1570 KOPrefs::instance()->mWriteBackExistingOnly = false; 1570 KOPrefs::instance()->mWriteBackExistingOnly = false;
1571 KOPrefs::instance()->mShowSyncSummary = false; 1571 KOPrefs::instance()->mShowSyncSummary = false;
1572 syncCalendar( fn, 3 ); 1572 syncCalendar( fn, 3 );
1573 Event * e = getLastSyncEvent(); 1573 Event * e = getLastSyncEvent();
1574 mCalendar->deleteEvent ( e ); 1574 mCalendar->deleteEvent ( e );
1575 updateView(); 1575 updateView();
1576 return true; 1576 return true;
1577} 1577}
1578 1578
1579bool CalendarView::saveCalendar( QString filename ) 1579bool CalendarView::saveCalendar( QString filename )
1580{ 1580{
1581 1581
1582 // Store back all unsaved data into calendar object 1582 // Store back all unsaved data into calendar object
1583 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1583 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1584 if ( mViewManager->currentView() ) 1584 if ( mViewManager->currentView() )
1585 mViewManager->currentView()->flushView(); 1585 mViewManager->currentView()->flushView();
1586 1586
1587 //mStorage->setFileName( filename ); 1587 //mStorage->setFileName( filename );
1588 1588
1589 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1589 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1590 mStorage->setFileName( filename ); 1590 mStorage->setFileName( filename );
1591 bool success; 1591 bool success;
1592 success = mStorage->save(); 1592 success = mStorage->save();
1593 if ( !success ) { 1593 if ( !success ) {
1594 return false; 1594 return false;
1595 } 1595 }
1596 1596
1597 return true; 1597 return true;
1598} 1598}
1599 1599
1600void CalendarView::closeCalendar() 1600void CalendarView::closeCalendar()
1601{ 1601{
1602 1602
1603 // child windows no longer valid 1603 // child windows no longer valid
1604 emit closingDown(); 1604 emit closingDown();
1605 1605
1606 mCalendar->close(); 1606 mCalendar->close();
1607 setModified(false); 1607 setModified(false);
1608 updateView(); 1608 updateView();
1609} 1609}
1610 1610
1611void CalendarView::archiveCalendar() 1611void CalendarView::archiveCalendar()
1612{ 1612{
1613 mDialogManager->showArchiveDialog(); 1613 mDialogManager->showArchiveDialog();
1614} 1614}
1615 1615
1616 1616
1617void CalendarView::readSettings() 1617void CalendarView::readSettings()
1618{ 1618{
1619 1619
1620 1620
1621 // mViewManager->showAgendaView(); 1621 // mViewManager->showAgendaView();
1622 QString str; 1622 QString str;
1623 //qDebug("CalendarView::readSettings() "); 1623 //qDebug("CalendarView::readSettings() ");
1624 // read settings from the KConfig, supplying reasonable 1624 // read settings from the KConfig, supplying reasonable
1625 // defaults where none are to be found 1625 // defaults where none are to be found
1626 KConfig *config = KOGlobals::config(); 1626 KConfig *config = KOGlobals::config();
1627#ifndef KORG_NOSPLITTER 1627#ifndef KORG_NOSPLITTER
1628 config->setGroup("KOrganizer Geometry"); 1628 config->setGroup("KOrganizer Geometry");
1629 1629
1630 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1630 QValueList<int> sizes = config->readIntListEntry("Separator1");
1631 if (sizes.count() != 2) { 1631 if (sizes.count() != 2) {
1632 sizes << mDateNavigator->minimumSizeHint().width(); 1632 sizes << mDateNavigator->minimumSizeHint().width();
1633 sizes << 300; 1633 sizes << 300;
1634 } 1634 }
1635 mPanner->setSizes(sizes); 1635 mPanner->setSizes(sizes);
1636 1636
1637 sizes = config->readIntListEntry("Separator2"); 1637 sizes = config->readIntListEntry("Separator2");
1638 if ( ( mResourceView && sizes.count() == 4 ) || 1638 if ( ( mResourceView && sizes.count() == 4 ) ||
1639 ( !mResourceView && sizes.count() == 3 ) ) { 1639 ( !mResourceView && sizes.count() == 3 ) ) {
1640 mLeftSplitter->setSizes(sizes); 1640 mLeftSplitter->setSizes(sizes);
1641 } 1641 }
1642#endif 1642#endif
1643 globalFlagBlockAgenda = 1; 1643 globalFlagBlockAgenda = 1;
1644 mViewManager->showAgendaView(); 1644 mViewManager->showAgendaView();
1645 //mViewManager->readSettings( config ); 1645 //mViewManager->readSettings( config );
1646 mTodoList->restoreLayout(config,QString("Todo Layout")); 1646 mTodoList->restoreLayout(config,QString("Todo Layout"));
1647 readFilterSettings(config); 1647 readFilterSettings(config);
1648 config->setGroup( "Views" ); 1648 config->setGroup( "Views" );
1649 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1649 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1650 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1650 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1651 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1651 else if ( dateCount == 7 ) mNavigator->selectWeek();
1652 else mNavigator->selectDates( dateCount ); 1652 else mNavigator->selectDates( dateCount );
1653 // mViewManager->readSettings( config ); 1653 // mViewManager->readSettings( config );
1654 updateConfig(); 1654 updateConfig();
1655 globalFlagBlockAgenda = 2; 1655 globalFlagBlockAgenda = 2;
1656 mViewManager->readSettings( config ); 1656 mViewManager->readSettings( config );
1657#ifdef DESKTOP_VERSION 1657#ifdef DESKTOP_VERSION
1658 config->setGroup("WidgetLayout"); 1658 config->setGroup("WidgetLayout");
1659 QStringList list; 1659 QStringList list;
1660 list = config->readListEntry("MainLayout"); 1660 list = config->readListEntry("MainLayout");
1661 int x,y,w,h; 1661 int x,y,w,h;
1662 if ( ! list.isEmpty() ) { 1662 if ( ! list.isEmpty() ) {
1663 x = list[0].toInt(); 1663 x = list[0].toInt();
1664 y = list[1].toInt(); 1664 y = list[1].toInt();
1665 w = list[2].toInt(); 1665 w = list[2].toInt();
1666 h = list[3].toInt(); 1666 h = list[3].toInt();
1667 topLevelWidget()->setGeometry(x,y,w,h); 1667 topLevelWidget()->setGeometry(x,y,w,h);
1668 1668
1669 } else { 1669 } else {
1670 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1670 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1671 } 1671 }
1672 list = config->readListEntry("EditEventLayout"); 1672 list = config->readListEntry("EditEventLayout");
1673 if ( ! list.isEmpty() ) { 1673 if ( ! list.isEmpty() ) {
1674 x = list[0].toInt(); 1674 x = list[0].toInt();
1675 y = list[1].toInt(); 1675 y = list[1].toInt();
1676 w = list[2].toInt(); 1676 w = list[2].toInt();
1677 h = list[3].toInt(); 1677 h = list[3].toInt();
1678 mEventEditor->setGeometry(x,y,w,h); 1678 mEventEditor->setGeometry(x,y,w,h);
1679 1679
1680 } 1680 }
1681 list = config->readListEntry("EditTodoLayout"); 1681 list = config->readListEntry("EditTodoLayout");
1682 if ( ! list.isEmpty() ) { 1682 if ( ! list.isEmpty() ) {
1683 x = list[0].toInt(); 1683 x = list[0].toInt();
1684 y = list[1].toInt(); 1684 y = list[1].toInt();
1685 w = list[2].toInt(); 1685 w = list[2].toInt();
1686 h = list[3].toInt(); 1686 h = list[3].toInt();
1687 mTodoEditor->setGeometry(x,y,w,h); 1687 mTodoEditor->setGeometry(x,y,w,h);
1688 1688
1689 } 1689 }
1690 list = config->readListEntry("ViewerLayout"); 1690 list = config->readListEntry("ViewerLayout");
1691 if ( ! list.isEmpty() ) { 1691 if ( ! list.isEmpty() ) {
1692 x = list[0].toInt(); 1692 x = list[0].toInt();
1693 y = list[1].toInt(); 1693 y = list[1].toInt();
1694 w = list[2].toInt(); 1694 w = list[2].toInt();
1695 h = list[3].toInt(); 1695 h = list[3].toInt();
1696 getEventViewerDialog()->setGeometry(x,y,w,h); 1696 getEventViewerDialog()->setGeometry(x,y,w,h);
1697 } 1697 }
1698#endif 1698#endif
1699 1699
1700} 1700}
1701 1701
1702 1702
1703void CalendarView::writeSettings() 1703void CalendarView::writeSettings()
1704{ 1704{
1705 // kdDebug() << "CalendarView::writeSettings" << endl; 1705 // kdDebug() << "CalendarView::writeSettings" << endl;
1706 1706
1707 KConfig *config = KOGlobals::config(); 1707 KConfig *config = KOGlobals::config();
1708 1708
1709#ifndef KORG_NOSPLITTER 1709#ifndef KORG_NOSPLITTER
1710 config->setGroup("KOrganizer Geometry"); 1710 config->setGroup("KOrganizer Geometry");
1711 1711
1712 QValueList<int> list = mPanner->sizes(); 1712 QValueList<int> list = mPanner->sizes();
1713 config->writeEntry("Separator1",list); 1713 config->writeEntry("Separator1",list);
1714 1714
1715 list = mLeftSplitter->sizes(); 1715 list = mLeftSplitter->sizes();
1716 config->writeEntry("Separator2",list); 1716 config->writeEntry("Separator2",list);
1717#endif 1717#endif
1718 1718
1719 mViewManager->writeSettings( config ); 1719 mViewManager->writeSettings( config );
1720 mTodoList->saveLayout(config,QString("Todo Layout")); 1720 mTodoList->saveLayout(config,QString("Todo Layout"));
1721 mDialogManager->writeSettings( config ); 1721 mDialogManager->writeSettings( config );
1722 //KOPrefs::instance()->usrWriteConfig(); 1722 //KOPrefs::instance()->usrWriteConfig();
1723 KOPrefs::instance()->writeConfig(); 1723 KOPrefs::instance()->writeConfig();
1724 1724
1725 writeFilterSettings(config); 1725 writeFilterSettings(config);
1726 1726
1727 config->setGroup( "Views" ); 1727 config->setGroup( "Views" );
1728 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1728 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1729 1729
1730#ifdef DESKTOP_VERSION 1730#ifdef DESKTOP_VERSION
1731 config->setGroup("WidgetLayout"); 1731 config->setGroup("WidgetLayout");
1732 QStringList list ;//= config->readListEntry("MainLayout"); 1732 QStringList list ;//= config->readListEntry("MainLayout");
1733 int x,y,w,h; 1733 int x,y,w,h;
1734 QWidget* wid; 1734 QWidget* wid;
1735 wid = topLevelWidget(); 1735 wid = topLevelWidget();
1736 x = wid->geometry().x(); 1736 x = wid->geometry().x();
1737 y = wid->geometry().y(); 1737 y = wid->geometry().y();
1738 w = wid->width(); 1738 w = wid->width();
1739 h = wid->height(); 1739 h = wid->height();
1740 list.clear(); 1740 list.clear();
1741 list << QString::number( x ); 1741 list << QString::number( x );
1742 list << QString::number( y ); 1742 list << QString::number( y );
1743 list << QString::number( w ); 1743 list << QString::number( w );
1744 list << QString::number( h ); 1744 list << QString::number( h );
1745 config->writeEntry("MainLayout",list ); 1745 config->writeEntry("MainLayout",list );
1746 1746
1747 wid = mEventEditor; 1747 wid = mEventEditor;
1748 x = wid->geometry().x(); 1748 x = wid->geometry().x();
1749 y = wid->geometry().y(); 1749 y = wid->geometry().y();
1750 w = wid->width(); 1750 w = wid->width();
1751 h = wid->height(); 1751 h = wid->height();
1752 list.clear(); 1752 list.clear();
1753 list << QString::number( x ); 1753 list << QString::number( x );
1754 list << QString::number( y ); 1754 list << QString::number( y );
1755 list << QString::number( w ); 1755 list << QString::number( w );
1756 list << QString::number( h ); 1756 list << QString::number( h );
1757 config->writeEntry("EditEventLayout",list ); 1757 config->writeEntry("EditEventLayout",list );
1758 1758
1759 wid = mTodoEditor; 1759 wid = mTodoEditor;
1760 x = wid->geometry().x(); 1760 x = wid->geometry().x();
1761 y = wid->geometry().y(); 1761 y = wid->geometry().y();
1762 w = wid->width(); 1762 w = wid->width();
1763 h = wid->height(); 1763 h = wid->height();
1764 list.clear(); 1764 list.clear();
1765 list << QString::number( x ); 1765 list << QString::number( x );
1766 list << QString::number( y ); 1766 list << QString::number( y );
1767 list << QString::number( w ); 1767 list << QString::number( w );
1768 list << QString::number( h ); 1768 list << QString::number( h );
1769 config->writeEntry("EditTodoLayout",list ); 1769 config->writeEntry("EditTodoLayout",list );
1770 wid = getEventViewerDialog(); 1770 wid = getEventViewerDialog();
1771 x = wid->geometry().x(); 1771 x = wid->geometry().x();
1772 y = wid->geometry().y(); 1772 y = wid->geometry().y();
1773 w = wid->width(); 1773 w = wid->width();
1774 h = wid->height(); 1774 h = wid->height();
1775 list.clear(); 1775 list.clear();
1776 list << QString::number( x ); 1776 list << QString::number( x );
1777 list << QString::number( y ); 1777 list << QString::number( y );
1778 list << QString::number( w ); 1778 list << QString::number( w );
1779 list << QString::number( h ); 1779 list << QString::number( h );
1780 config->writeEntry("ViewerLayout",list ); 1780 config->writeEntry("ViewerLayout",list );
1781 wid = mDialogManager->getSearchDialog(); 1781 wid = mDialogManager->getSearchDialog();
1782 if ( wid ) { 1782 if ( wid ) {
1783 x = wid->geometry().x(); 1783 x = wid->geometry().x();
1784 y = wid->geometry().y(); 1784 y = wid->geometry().y();
1785 w = wid->width(); 1785 w = wid->width();
1786 h = wid->height(); 1786 h = wid->height();
1787 list.clear(); 1787 list.clear();
1788 list << QString::number( x ); 1788 list << QString::number( x );
1789 list << QString::number( y ); 1789 list << QString::number( y );
1790 list << QString::number( w ); 1790 list << QString::number( w );
1791 list << QString::number( h ); 1791 list << QString::number( h );
1792 config->writeEntry("SearchLayout",list ); 1792 config->writeEntry("SearchLayout",list );
1793 } 1793 }
1794#endif 1794#endif
1795 1795
1796 1796
1797 config->sync(); 1797 config->sync();
1798} 1798}
1799 1799
1800void CalendarView::readFilterSettings(KConfig *config) 1800void CalendarView::readFilterSettings(KConfig *config)
1801{ 1801{
1802 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1802 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1803 1803
1804 mFilters.clear(); 1804 mFilters.clear();
1805 1805
1806 config->setGroup("General"); 1806 config->setGroup("General");
1807 QStringList filterList = config->readListEntry("CalendarFilters"); 1807 QStringList filterList = config->readListEntry("CalendarFilters");
1808 1808
1809 QStringList::ConstIterator it = filterList.begin(); 1809 QStringList::ConstIterator it = filterList.begin();
1810 QStringList::ConstIterator end = filterList.end(); 1810 QStringList::ConstIterator end = filterList.end();
1811 while(it != end) { 1811 while(it != end) {
1812 // kdDebug() << " filter: " << (*it) << endl; 1812 // kdDebug() << " filter: " << (*it) << endl;
1813 1813
1814 CalFilter *filter; 1814 CalFilter *filter;
1815 filter = new CalFilter(*it); 1815 filter = new CalFilter(*it);
1816 config->setGroup("Filter_" + (*it)); 1816 config->setGroup("Filter_" + (*it));
1817 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1817 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1818 filter->setCriteria(config->readNumEntry("Criteria",0)); 1818 filter->setCriteria(config->readNumEntry("Criteria",0));
1819 filter->setCategoryList(config->readListEntry("CategoryList")); 1819 filter->setCategoryList(config->readListEntry("CategoryList"));
1820 mFilters.append(filter); 1820 mFilters.append(filter);
1821 1821
1822 ++it; 1822 ++it;
1823 } 1823 }
1824 1824
1825 if (mFilters.count() == 0) { 1825 if (mFilters.count() == 0) {
1826 CalFilter *filter = new CalFilter(i18n("Default")); 1826 CalFilter *filter = new CalFilter(i18n("Default"));
1827 mFilters.append(filter); 1827 mFilters.append(filter);
1828 } 1828 }
1829 mFilterView->updateFilters(); 1829 mFilterView->updateFilters();
1830 config->setGroup("FilterView"); 1830 config->setGroup("FilterView");
1831 1831
1832 mFilterView->blockSignals(true); 1832 mFilterView->blockSignals(true);
1833 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1833 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1834 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1834 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1835 mFilterView->blockSignals(false); 1835 mFilterView->blockSignals(false);
1836 // We do it manually to avoid it being done twice by the above calls 1836 // We do it manually to avoid it being done twice by the above calls
1837 updateFilter(); 1837 updateFilter();
1838} 1838}
1839 1839
1840void CalendarView::writeFilterSettings(KConfig *config) 1840void CalendarView::writeFilterSettings(KConfig *config)
1841{ 1841{
1842 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1842 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1843 1843
1844 QStringList filterList; 1844 QStringList filterList;
1845 1845
1846 CalFilter *filter = mFilters.first(); 1846 CalFilter *filter = mFilters.first();
1847 while(filter) { 1847 while(filter) {
1848 // kdDebug() << " fn: " << filter->name() << endl; 1848 // kdDebug() << " fn: " << filter->name() << endl;
1849 filterList << filter->name(); 1849 filterList << filter->name();
1850 config->setGroup("Filter_" + filter->name()); 1850 config->setGroup("Filter_" + filter->name());
1851 config->writeEntry("Criteria",filter->criteria()); 1851 config->writeEntry("Criteria",filter->criteria());
1852 config->writeEntry("CategoryList",filter->categoryList()); 1852 config->writeEntry("CategoryList",filter->categoryList());
1853 filter = mFilters.next(); 1853 filter = mFilters.next();
1854 } 1854 }
1855 config->setGroup("General"); 1855 config->setGroup("General");
1856 config->writeEntry("CalendarFilters",filterList); 1856 config->writeEntry("CalendarFilters",filterList);
1857 1857
1858 config->setGroup("FilterView"); 1858 config->setGroup("FilterView");
1859 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1859 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1860 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1860 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1861} 1861}
1862 1862
1863 1863
1864void CalendarView::goToday() 1864void CalendarView::goToday()
1865{ 1865{
1866 mNavigator->selectToday(); 1866 mNavigator->selectToday();
1867} 1867}
1868 1868
1869void CalendarView::goNext() 1869void CalendarView::goNext()
1870{ 1870{
1871 mNavigator->selectNext(); 1871 mNavigator->selectNext();
1872} 1872}
1873 1873
1874void CalendarView::goPrevious() 1874void CalendarView::goPrevious()
1875{ 1875{
1876 mNavigator->selectPrevious(); 1876 mNavigator->selectPrevious();
1877} 1877}
1878void CalendarView::goNextMonth() 1878void CalendarView::goNextMonth()
1879{ 1879{
1880 mNavigator->selectNextMonth(); 1880 mNavigator->selectNextMonth();
1881} 1881}
1882 1882
1883void CalendarView::goPreviousMonth() 1883void CalendarView::goPreviousMonth()
1884{ 1884{
1885 mNavigator->selectPreviousMonth(); 1885 mNavigator->selectPreviousMonth();
1886} 1886}
1887void CalendarView::writeLocale() 1887void CalendarView::writeLocale()
1888{ 1888{
1889 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1889 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1890 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1890 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1891 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1891 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1892 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1892 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1893 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1893 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1894 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1894 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1895 dummy = KOPrefs::instance()->mUserDateFormatShort; 1895 dummy = KOPrefs::instance()->mUserDateFormatShort;
1896 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1896 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1897 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1897 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1898 KOPrefs::instance()->mDaylightsavingStart, 1898 KOPrefs::instance()->mDaylightsavingStart,
1899 KOPrefs::instance()->mDaylightsavingEnd ); 1899 KOPrefs::instance()->mDaylightsavingEnd );
1900 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 1900 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
1901} 1901}
1902void CalendarView::updateConfig() 1902void CalendarView::updateConfig()
1903{ 1903{
1904 writeLocale(); 1904 writeLocale();
1905 if ( KOPrefs::instance()->mUseAppColors ) 1905 if ( KOPrefs::instance()->mUseAppColors )
1906 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 1906 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
1907 emit configChanged(); 1907 emit configChanged();
1908 mTodoList->updateConfig(); 1908 mTodoList->updateConfig();
1909 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 1909 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
1910 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1910 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1911 // To make the "fill window" configurations work 1911 // To make the "fill window" configurations work
1912 //mViewManager->raiseCurrentView(); 1912 //mViewManager->raiseCurrentView();
1913} 1913}
1914 1914
1915 1915
1916void CalendarView::eventChanged(Event *event) 1916void CalendarView::eventChanged(Event *event)
1917{ 1917{
1918 changeEventDisplay(event,KOGlobals::EVENTEDITED); 1918 changeEventDisplay(event,KOGlobals::EVENTEDITED);
1919 //updateUnmanagedViews(); 1919 //updateUnmanagedViews();
1920} 1920}
1921 1921
1922void CalendarView::eventAdded(Event *event) 1922void CalendarView::eventAdded(Event *event)
1923{ 1923{
1924 changeEventDisplay(event,KOGlobals::EVENTADDED); 1924 changeEventDisplay(event,KOGlobals::EVENTADDED);
1925} 1925}
1926 1926
1927void CalendarView::eventToBeDeleted(Event *) 1927void CalendarView::eventToBeDeleted(Event *)
1928{ 1928{
1929 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 1929 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
1930} 1930}
1931 1931
1932void CalendarView::eventDeleted() 1932void CalendarView::eventDeleted()
1933{ 1933{
1934 changeEventDisplay(0,KOGlobals::EVENTDELETED); 1934 changeEventDisplay(0,KOGlobals::EVENTDELETED);
1935} 1935}
1936void CalendarView::changeTodoDisplay(Todo *which, int action) 1936void CalendarView::changeTodoDisplay(Todo *which, int action)
1937{ 1937{
1938 changeIncidenceDisplay((Incidence *)which, action); 1938 changeIncidenceDisplay((Incidence *)which, action);
1939 mDateNavigator->updateView(); //LR 1939 mDateNavigator->updateView(); //LR
1940 //mDialogManager->updateSearchDialog(); 1940 //mDialogManager->updateSearchDialog();
1941 1941
1942 if (which) { 1942 if (which) {
1943 mViewManager->updateWNview(); 1943 mViewManager->updateWNview();
1944 //mTodoList->updateView(); 1944 //mTodoList->updateView();
1945 } 1945 }
1946 1946
1947} 1947}
1948 1948
1949void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 1949void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
1950{ 1950{
1951 updateUnmanagedViews(); 1951 updateUnmanagedViews();
1952 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 1952 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
1953 if ( action == KOGlobals::EVENTDELETED ) { //delete 1953 if ( action == KOGlobals::EVENTDELETED ) { //delete
1954 mCalendar->checkAlarmForIncidence( 0, true ); 1954 mCalendar->checkAlarmForIncidence( 0, true );
1955 if ( mEventViewerDialog ) 1955 if ( mEventViewerDialog )
1956 mEventViewerDialog->hide(); 1956 mEventViewerDialog->hide();
1957 } 1957 }
1958 else 1958 else
1959 mCalendar->checkAlarmForIncidence( which , false ); 1959 mCalendar->checkAlarmForIncidence( which , false );
1960} 1960}
1961 1961
1962// most of the changeEventDisplays() right now just call the view's 1962// most of the changeEventDisplays() right now just call the view's
1963// total update mode, but they SHOULD be recoded to be more refresh-efficient. 1963// total update mode, but they SHOULD be recoded to be more refresh-efficient.
1964void CalendarView::changeEventDisplay(Event *which, int action) 1964void CalendarView::changeEventDisplay(Event *which, int action)
1965{ 1965{
1966 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 1966 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
1967 changeIncidenceDisplay((Incidence *)which, action); 1967 changeIncidenceDisplay((Incidence *)which, action);
1968 mDateNavigator->updateView(); 1968 mDateNavigator->updateView();
1969 //mDialogManager->updateSearchDialog(); 1969 //mDialogManager->updateSearchDialog();
1970 1970
1971 if (which) { 1971 if (which) {
1972 // If there is an event view visible update the display 1972 // If there is an event view visible update the display
1973 mViewManager->currentView()->changeEventDisplay(which,action); 1973 mViewManager->currentView()->changeEventDisplay(which,action);
1974 // TODO: check, if update needed 1974 // TODO: check, if update needed
1975 // if (which->getTodoStatus()) { 1975 // if (which->getTodoStatus()) {
1976 mTodoList->updateView(); 1976 mTodoList->updateView();
1977 // } 1977 // }
1978 } else { 1978 } else {
1979 mViewManager->currentView()->updateView(); 1979 mViewManager->currentView()->updateView();
1980 } 1980 }
1981} 1981}
1982 1982
1983 1983
1984void CalendarView::updateTodoViews() 1984void CalendarView::updateTodoViews()
1985{ 1985{
1986 1986
1987 mTodoList->updateView(); 1987 mTodoList->updateView();
1988 mViewManager->currentView()->updateView(); 1988 mViewManager->currentView()->updateView();
1989 1989
1990} 1990}
1991 1991
1992 1992
1993void CalendarView::updateView(const QDate &start, const QDate &end) 1993void CalendarView::updateView(const QDate &start, const QDate &end)
1994{ 1994{
1995 mTodoList->updateView(); 1995 mTodoList->updateView();
1996 mViewManager->updateView(start, end); 1996 mViewManager->updateView(start, end);
1997 //mDateNavigator->updateView(); 1997 //mDateNavigator->updateView();
1998} 1998}
1999 1999
2000void CalendarView::updateView() 2000void CalendarView::updateView()
2001{ 2001{
2002 DateList tmpList = mNavigator->selectedDates(); 2002 DateList tmpList = mNavigator->selectedDates();
2003 2003
2004 // We assume that the navigator only selects consecutive days. 2004 // We assume that the navigator only selects consecutive days.
2005 updateView( tmpList.first(), tmpList.last() ); 2005 updateView( tmpList.first(), tmpList.last() );
2006} 2006}
2007 2007
2008void CalendarView::updateUnmanagedViews() 2008void CalendarView::updateUnmanagedViews()
2009{ 2009{
2010 mDateNavigator->updateDayMatrix(); 2010 mDateNavigator->updateDayMatrix();
2011} 2011}
2012 2012
2013int CalendarView::msgItemDelete() 2013int CalendarView::msgItemDelete()
2014{ 2014{
2015 return KMessageBox::warningContinueCancel(this, 2015 return KMessageBox::warningContinueCancel(this,
2016 i18n("This item will be\npermanently deleted."), 2016 i18n("This item will be\npermanently deleted."),
2017 i18n("KO/Pi Confirmation"),i18n("Delete")); 2017 i18n("KO/Pi Confirmation"),i18n("Delete"));
2018} 2018}
2019 2019
2020 2020
2021void CalendarView::edit_cut() 2021void CalendarView::edit_cut()
2022{ 2022{
2023 Event *anEvent=0; 2023 Event *anEvent=0;
2024 2024
2025 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2025 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2026 2026
2027 if (mViewManager->currentView()->isEventView()) { 2027 if (mViewManager->currentView()->isEventView()) {
2028 if ( incidence && incidence->type() == "Event" ) { 2028 if ( incidence && incidence->type() == "Event" ) {
2029 anEvent = static_cast<Event *>(incidence); 2029 anEvent = static_cast<Event *>(incidence);
2030 } 2030 }
2031 } 2031 }
2032 2032
2033 if (!anEvent) { 2033 if (!anEvent) {
2034 KNotifyClient::beep(); 2034 KNotifyClient::beep();
2035 return; 2035 return;
2036 } 2036 }
2037 DndFactory factory( mCalendar ); 2037 DndFactory factory( mCalendar );
2038 factory.cutEvent(anEvent); 2038 factory.cutEvent(anEvent);
2039 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2039 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2040} 2040}
2041 2041
2042void CalendarView::edit_copy() 2042void CalendarView::edit_copy()
2043{ 2043{
2044 Event *anEvent=0; 2044 Event *anEvent=0;
2045 2045
2046 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2046 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2047 2047
2048 if (mViewManager->currentView()->isEventView()) { 2048 if (mViewManager->currentView()->isEventView()) {
2049 if ( incidence && incidence->type() == "Event" ) { 2049 if ( incidence && incidence->type() == "Event" ) {
2050 anEvent = static_cast<Event *>(incidence); 2050 anEvent = static_cast<Event *>(incidence);
2051 } 2051 }
2052 } 2052 }
2053 2053
2054 if (!anEvent) { 2054 if (!anEvent) {
2055 KNotifyClient::beep(); 2055 KNotifyClient::beep();
2056 return; 2056 return;
2057 } 2057 }
2058 DndFactory factory( mCalendar ); 2058 DndFactory factory( mCalendar );
2059 factory.copyEvent(anEvent); 2059 factory.copyEvent(anEvent);
2060} 2060}
2061 2061
2062void CalendarView::edit_paste() 2062void CalendarView::edit_paste()
2063{ 2063{
2064 QDate date = mNavigator->selectedDates().first(); 2064 QDate date = mNavigator->selectedDates().first();
2065 2065
2066 DndFactory factory( mCalendar ); 2066 DndFactory factory( mCalendar );
2067 Event *pastedEvent = factory.pasteEvent( date ); 2067 Event *pastedEvent = factory.pasteEvent( date );
2068 2068
2069 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2069 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2070} 2070}
2071 2071
2072void CalendarView::edit_options() 2072void CalendarView::edit_options()
2073{ 2073{
2074 mDialogManager->showOptionsDialog(); 2074 mDialogManager->showOptionsDialog();
2075 //writeSettings(); 2075 //writeSettings();
2076} 2076}
2077void CalendarView::edit_sync_options() 2077void CalendarView::edit_sync_options()
2078{ 2078{
2079 //mDialogManager->showSyncOptions(); 2079 //mDialogManager->showSyncOptions();
2080 //KOPrefs::instance()->mSyncAlgoPrefs 2080 //KOPrefs::instance()->mSyncAlgoPrefs
2081 QDialog dia( this, "dia", true ); 2081 QDialog dia( this, "dia", true );
2082 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 2082 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
2083 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 2083 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
2084 QVBoxLayout lay ( &dia ); 2084 QVBoxLayout lay ( &dia );
2085 lay.setSpacing( 2 ); 2085 lay.setSpacing( 2 );
2086 lay.setMargin( 3 ); 2086 lay.setMargin( 3 );
2087 lay.addWidget(&gr); 2087 lay.addWidget(&gr);
2088 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 2088 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
2089 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 2089 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
2090 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 2090 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
2091 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 2091 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
2092 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 2092 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
2093 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 2093 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
2094 //QRadioButton both( i18n("Take both on conflict"), &gr ); 2094 //QRadioButton both( i18n("Take both on conflict"), &gr );
2095 QPushButton pb ( "OK", &dia); 2095 QPushButton pb ( "OK", &dia);
2096 lay.addWidget( &pb ); 2096 lay.addWidget( &pb );
2097 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2097 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2098 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) { 2098 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) {
2099 case 0: 2099 case 0:
2100 loc.setChecked( true); 2100 loc.setChecked( true);
2101 break; 2101 break;
2102 case 1: 2102 case 1:
2103 rem.setChecked( true ); 2103 rem.setChecked( true );
2104 break; 2104 break;
2105 case 2: 2105 case 2:
2106 newest.setChecked( true); 2106 newest.setChecked( true);
2107 break; 2107 break;
2108 case 3: 2108 case 3:
2109 ask.setChecked( true); 2109 ask.setChecked( true);
2110 break; 2110 break;
2111 case 4: 2111 case 4:
2112 f_loc.setChecked( true); 2112 f_loc.setChecked( true);
2113 break; 2113 break;
2114 case 5: 2114 case 5:
2115 f_rem.setChecked( true); 2115 f_rem.setChecked( true);
2116 break; 2116 break;
2117 case 6: 2117 case 6:
2118 // both.setChecked( true); 2118 // both.setChecked( true);
2119 break; 2119 break;
2120 default: 2120 default:
2121 break; 2121 break;
2122 } 2122 }
2123 if ( dia.exec() ) { 2123 if ( dia.exec() ) {
2124 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 2124 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
2125 } 2125 }
2126 2126
2127} 2127}
2128 2128
2129void CalendarView::slotSelectPickerDate( QDate d) 2129void CalendarView::slotSelectPickerDate( QDate d)
2130{ 2130{
2131 mDateFrame->hide(); 2131 mDateFrame->hide();
2132 if ( mDatePickerMode == 1 ) { 2132 if ( mDatePickerMode == 1 ) {
2133 mNavigator->slotDaySelect( d ); 2133 mNavigator->slotDaySelect( d );
2134 } else if ( mDatePickerMode == 2 ) { 2134 } else if ( mDatePickerMode == 2 ) {
2135 if ( mMoveIncidence->type() == "Todo" ) { 2135 if ( mMoveIncidence->type() == "Todo" ) {
2136 Todo * to = (Todo *) mMoveIncidence; 2136 Todo * to = (Todo *) mMoveIncidence;
2137 QTime tim; 2137 QTime tim;
2138 if ( to->hasDueDate() ) 2138 if ( to->hasDueDate() )
2139 tim = to->dtDue().time(); 2139 tim = to->dtDue().time();
2140 else { 2140 else {
2141 tim = QTime ( 0,0,0 ); 2141 tim = QTime ( 0,0,0 );
2142 to->setFloats( true ); 2142 to->setFloats( true );
2143 to->setHasDueDate( true ); 2143 to->setHasDueDate( true );
2144 } 2144 }
2145 QDateTime dt ( d,tim ); 2145 QDateTime dt ( d,tim );
2146 to->setDtDue( dt ); 2146 to->setDtDue( dt );
2147 todoChanged( to ); 2147 todoChanged( to );
2148 } else { 2148 } else {
2149 QTime tim = mMoveIncidence->dtStart().time(); 2149 QTime tim = mMoveIncidence->dtStart().time();
2150 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2150 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2151 QDateTime dt ( d,tim ); 2151 QDateTime dt ( d,tim );
2152 mMoveIncidence->setDtStart( dt ); 2152 mMoveIncidence->setDtStart( dt );
2153 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2153 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2154 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2154 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2155 } 2155 }
2156 2156
2157 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2157 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2158 } 2158 }
2159} 2159}
2160 2160
2161void CalendarView::removeCategories() 2161void CalendarView::removeCategories()
2162{ 2162{
2163 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2163 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2164 QStringList catList = KOPrefs::instance()->mCustomCategories; 2164 QStringList catList = KOPrefs::instance()->mCustomCategories;
2165 QStringList catIncList; 2165 QStringList catIncList;
2166 QStringList newCatList; 2166 QStringList newCatList;
2167 Incidence* inc = incList.first(); 2167 Incidence* inc = incList.first();
2168 int i; 2168 int i;
2169 int count = 0; 2169 int count = 0;
2170 while ( inc ) { 2170 while ( inc ) {
2171 newCatList.clear(); 2171 newCatList.clear();
2172 catIncList = inc->categories() ; 2172 catIncList = inc->categories() ;
2173 for( i = 0; i< catIncList.count(); ++i ) { 2173 for( i = 0; i< catIncList.count(); ++i ) {
2174 if ( catList.contains (catIncList[i])) 2174 if ( catList.contains (catIncList[i]))
2175 newCatList.append( catIncList[i] ); 2175 newCatList.append( catIncList[i] );
2176 } 2176 }
2177 newCatList.sort(); 2177 newCatList.sort();
2178 inc->setCategories( newCatList.join(",") ); 2178 inc->setCategories( newCatList.join(",") );
2179 inc = incList.next(); 2179 inc = incList.next();
2180 } 2180 }
2181} 2181}
2182 2182
2183int CalendarView::addCategories() 2183int CalendarView::addCategories()
2184{ 2184{
2185 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2185 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2186 QStringList catList = KOPrefs::instance()->mCustomCategories; 2186 QStringList catList = KOPrefs::instance()->mCustomCategories;
2187 QStringList catIncList; 2187 QStringList catIncList;
2188 Incidence* inc = incList.first(); 2188 Incidence* inc = incList.first();
2189 int i; 2189 int i;
2190 int count = 0; 2190 int count = 0;
2191 while ( inc ) { 2191 while ( inc ) {
2192 catIncList = inc->categories() ; 2192 catIncList = inc->categories() ;
2193 for( i = 0; i< catIncList.count(); ++i ) { 2193 for( i = 0; i< catIncList.count(); ++i ) {
2194 if ( !catList.contains (catIncList[i])) { 2194 if ( !catList.contains (catIncList[i])) {
2195 catList.append( catIncList[i] ); 2195 catList.append( catIncList[i] );
2196 //qDebug("add cat %s ", catIncList[i].latin1()); 2196 //qDebug("add cat %s ", catIncList[i].latin1());
2197 ++count; 2197 ++count;
2198 } 2198 }
2199 } 2199 }
2200 inc = incList.next(); 2200 inc = incList.next();
2201 } 2201 }
2202 catList.sort(); 2202 catList.sort();
2203 KOPrefs::instance()->mCustomCategories = catList; 2203 KOPrefs::instance()->mCustomCategories = catList;
2204 return count; 2204 return count;
2205} 2205}
2206 2206
2207void CalendarView::manageCategories() 2207void CalendarView::manageCategories()
2208{ 2208{
2209 KOCatPrefs* cp = new KOCatPrefs(); 2209 KOCatPrefs* cp = new KOCatPrefs();
2210 cp->show(); 2210 cp->show();
2211 int w =cp->sizeHint().width() ; 2211 int w =cp->sizeHint().width() ;
2212 int h = cp->sizeHint().height() ; 2212 int h = cp->sizeHint().height() ;
2213 int dw = QApplication::desktop()->width(); 2213 int dw = QApplication::desktop()->width();
2214 int dh = QApplication::desktop()->height(); 2214 int dh = QApplication::desktop()->height();
2215 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2215 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2216 if ( !cp->exec() ) { 2216 if ( !cp->exec() ) {
2217 delete cp; 2217 delete cp;
2218 return; 2218 return;
2219 } 2219 }
2220 int count = 0; 2220 int count = 0;
2221 if ( cp->addCat() ) { 2221 if ( cp->addCat() ) {
2222 count = addCategories(); 2222 count = addCategories();
2223 if ( count ) { 2223 if ( count ) {
2224 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2224 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2225 writeSettings(); 2225 writeSettings();
2226 } 2226 }
2227 } else { 2227 } else {
2228 removeCategories(); 2228 removeCategories();
2229 updateView(); 2229 updateView();
2230 } 2230 }
2231 delete cp; 2231 delete cp;
2232} 2232}
2233 2233
2234void CalendarView::beamIncidence(Incidence * Inc) 2234void CalendarView::beamIncidence(Incidence * Inc)
2235{ 2235{
2236 QPtrList<Incidence> delSel ; 2236 QPtrList<Incidence> delSel ;
2237 delSel.append(Inc); 2237 delSel.append(Inc);
2238 beamIncidenceList( delSel ); 2238 beamIncidenceList( delSel );
2239} 2239}
2240void CalendarView::beamCalendar() 2240void CalendarView::beamCalendar()
2241{ 2241{
2242 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2242 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2243 //qDebug("beamCalendar() "); 2243 //qDebug("beamCalendar() ");
2244 beamIncidenceList( delSel ); 2244 beamIncidenceList( delSel );
2245} 2245}
2246void CalendarView::beamFilteredCalendar() 2246void CalendarView::beamFilteredCalendar()
2247{ 2247{
2248 QPtrList<Incidence> delSel = mCalendar->incidences(); 2248 QPtrList<Incidence> delSel = mCalendar->incidences();
2249 //qDebug("beamFilteredCalendar() "); 2249 //qDebug("beamFilteredCalendar() ");
2250 beamIncidenceList( delSel ); 2250 beamIncidenceList( delSel );
2251} 2251}
2252void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2252void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2253{ 2253{
2254 if ( beamDialog->exec () == QDialog::Rejected ) 2254 if ( beamDialog->exec () == QDialog::Rejected )
2255 return; 2255 return;
2256 2256
2257 QString fn = "/tmp/kopibeamfile"; 2257 QString fn = "/tmp/kopibeamfile";
2258 QString mes; 2258 QString mes;
2259 bool createbup = true; 2259 bool createbup = true;
2260 if ( createbup ) { 2260 if ( createbup ) {
2261 QString description = "\n"; 2261 QString description = "\n";
2262 CalendarLocal* cal = new CalendarLocal(); 2262 CalendarLocal* cal = new CalendarLocal();
2263 if ( beamDialog->beamLocal() ) 2263 if ( beamDialog->beamLocal() )
2264 cal->setLocalTime(); 2264 cal->setLocalTime();
2265 else 2265 else
2266 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2266 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2267 Incidence *incidence = delSel.first(); 2267 Incidence *incidence = delSel.first();
2268 bool addText = false; 2268 bool addText = false;
2269 if ( delSel.count() < 10 ) 2269 if ( delSel.count() < 10 )
2270 addText = true; 2270 addText = true;
2271 else { 2271 else {
2272 description.sprintf(i18n(" %d items?"),delSel.count() ); 2272 description.sprintf(i18n(" %d items?"),delSel.count() );
2273 } 2273 }
2274 while ( incidence ) { 2274 while ( incidence ) {
2275 Incidence *in = incidence->clone(); 2275 Incidence *in = incidence->clone();
2276 if ( addText ) 2276 if ( addText )
2277 description += in->summary() + "\n"; 2277 description += in->summary() + "\n";
2278 cal->addIncidence( in ); 2278 cal->addIncidence( in );
2279 incidence = delSel.next(); 2279 incidence = delSel.next();
2280 } 2280 }
2281 if ( beamDialog->beamVcal() ) { 2281 if ( beamDialog->beamVcal() ) {
2282 fn += ".vcs"; 2282 fn += ".vcs";
2283 FileStorage storage( cal, fn, new VCalFormat ); 2283 FileStorage storage( cal, fn, new VCalFormat );
2284 storage.save(); 2284 storage.save();
2285 } else { 2285 } else {
2286 fn += ".ics"; 2286 fn += ".ics";
2287 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2287 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2288 storage.save(); 2288 storage.save();
2289 } 2289 }
2290 delete cal; 2290 delete cal;
2291 mes = i18n("KO/Pi: Ready for beaming"); 2291 mes = i18n("KO/Pi: Ready for beaming");
2292 setCaption(mes); 2292 setCaption(mes);
2293 2293
2294#ifndef DESKTOP_VERSION 2294#ifndef DESKTOP_VERSION
2295 Ir *ir = new Ir( this ); 2295 Ir *ir = new Ir( this );
2296 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2296 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2297 ir->send( fn, description, "text/x-vCalendar" ); 2297 ir->send( fn, description, "text/x-vCalendar" );
2298#endif 2298#endif
2299 } 2299 }
2300} 2300}
2301void CalendarView::beamDone( Ir *ir ) 2301void CalendarView::beamDone( Ir *ir )
2302{ 2302{
2303#ifndef DESKTOP_VERSION 2303#ifndef DESKTOP_VERSION
2304 delete ir; 2304 delete ir;
2305#endif 2305#endif
2306} 2306}
2307 2307
2308void CalendarView::moveIncidence(Incidence * inc ) 2308void CalendarView::moveIncidence(Incidence * inc )
2309{ 2309{
2310 if ( !inc ) return; 2310 if ( !inc ) return;
2311 // qDebug("showDatePickerForIncidence( ) "); 2311 // qDebug("showDatePickerForIncidence( ) ");
2312 if ( mDateFrame->isVisible() ) 2312 if ( mDateFrame->isVisible() )
2313 mDateFrame->hide(); 2313 mDateFrame->hide();
2314 else { 2314 else {
2315 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ; 2315 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ;
2316 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ; 2316 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ;
2317 int dw = QApplication::desktop()->width(); 2317 int dw = QApplication::desktop()->width();
2318 int dh = QApplication::desktop()->height(); 2318 int dh = QApplication::desktop()->height();
2319 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2319 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2320 mDateFrame->show(); 2320 mDateFrame->show();
2321 } 2321 }
2322 mDatePickerMode = 2; 2322 mDatePickerMode = 2;
2323 mMoveIncidence = inc ; 2323 mMoveIncidence = inc ;
2324 QDate da; 2324 QDate da;
2325 if ( mMoveIncidence->type() == "Todo" ) { 2325 if ( mMoveIncidence->type() == "Todo" ) {
2326 Todo * to = (Todo *) mMoveIncidence; 2326 Todo * to = (Todo *) mMoveIncidence;
2327 if ( to->hasDueDate() ) 2327 if ( to->hasDueDate() )
2328 da = to->dtDue().date(); 2328 da = to->dtDue().date();
2329 else 2329 else
2330 da = QDate::currentDate(); 2330 da = QDate::currentDate();
2331 } else { 2331 } else {
2332 da = mMoveIncidence->dtStart().date(); 2332 da = mMoveIncidence->dtStart().date();
2333 } 2333 }
2334 mDatePicker->setDate( da ); 2334 mDatePicker->setDate( da );
2335} 2335}
2336void CalendarView::showDatePicker( ) 2336void CalendarView::showDatePicker( )
2337{ 2337{
2338 //qDebug("CalendarView::showDatePicker( ) "); 2338 //qDebug("CalendarView::showDatePicker( ) ");
2339 if ( mDateFrame->isVisible() ) 2339 if ( mDateFrame->isVisible() )
2340 mDateFrame->hide(); 2340 mDateFrame->hide();
2341 else { 2341 else {
2342 int w =mDatePicker->sizeHint().width() ; 2342 int w =mDatePicker->sizeHint().width() ;
2343 int h = mDatePicker->sizeHint().height() ; 2343 int h = mDatePicker->sizeHint().height() ;
2344 int dw = QApplication::desktop()->width(); 2344 int dw = QApplication::desktop()->width();
2345 int dh = QApplication::desktop()->height(); 2345 int dh = QApplication::desktop()->height();
2346 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2346 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2347 mDateFrame->show(); 2347 mDateFrame->show();
2348 } 2348 }
2349 mDatePickerMode = 1; 2349 mDatePickerMode = 1;
2350 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2350 mDatePicker->setDate( mNavigator->selectedDates().first() );
2351} 2351}
2352 2352
2353void CalendarView::showEventEditor() 2353void CalendarView::showEventEditor()
2354{ 2354{
2355#ifdef DESKTOP_VERSION 2355#ifdef DESKTOP_VERSION
2356 mEventEditor->show(); 2356 mEventEditor->show();
2357#else 2357#else
2358 mEventEditor->showMaximized(); 2358 mEventEditor->showMaximized();
2359#endif 2359#endif
2360} 2360}
2361void CalendarView::showTodoEditor() 2361void CalendarView::showTodoEditor()
2362{ 2362{
2363#ifdef DESKTOP_VERSION 2363#ifdef DESKTOP_VERSION
2364 mTodoEditor->show(); 2364 mTodoEditor->show();
2365#else 2365#else
2366 mTodoEditor->showMaximized(); 2366 mTodoEditor->showMaximized();
2367#endif 2367#endif
2368} 2368}
2369void CalendarView::cancelIncidence(Incidence * inc ) 2369void CalendarView::cancelIncidence(Incidence * inc )
2370{ 2370{
2371 inc->setCancelled( ! inc->cancelled() ); 2371 inc->setCancelled( ! inc->cancelled() );
2372 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2372 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2373 updateView(); 2373 updateView();
2374} 2374}
2375void CalendarView::cloneIncidence(Incidence * orgInc ) 2375void CalendarView::cloneIncidence(Incidence * orgInc )
2376{ 2376{
2377 Incidence * newInc = orgInc->clone(); 2377 Incidence * newInc = orgInc->clone();
2378 newInc->recreate(); 2378 newInc->recreate();
2379 2379
2380 if ( newInc->type() == "Todo" ) { 2380 if ( newInc->type() == "Todo" ) {
2381 Todo* t = (Todo*) newInc; 2381 Todo* t = (Todo*) newInc;
2382 mTodoEditor->editTodo( t ); 2382 mTodoEditor->editTodo( t );
2383 showTodoEditor(); 2383 showTodoEditor();
2384 if ( mTodoEditor->exec() ) { 2384 if ( mTodoEditor->exec() ) {
2385 mCalendar->addTodo( t ); 2385 mCalendar->addTodo( t );
2386 updateView(); 2386 updateView();
2387 } else { 2387 } else {
2388 delete t; 2388 delete t;
2389 } 2389 }
2390 } 2390 }
2391 else { 2391 else {
2392 Event* e = (Event*) newInc; 2392 Event* e = (Event*) newInc;
2393 mEventEditor->editEvent( e ); 2393 mEventEditor->editEvent( e );
2394 showEventEditor(); 2394 showEventEditor();
2395 if ( mEventEditor->exec() ) { 2395 if ( mEventEditor->exec() ) {
2396 mCalendar->addEvent( e ); 2396 mCalendar->addEvent( e );
2397 updateView(); 2397 updateView();
2398 } else { 2398 } else {
2399 delete e; 2399 delete e;
2400 } 2400 }
2401 } 2401 }
2402} 2402}
2403 2403
2404void CalendarView::newEvent() 2404void CalendarView::newEvent()
2405{ 2405{
2406 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2406 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2407 KOAgendaView *aView = mViewManager->agendaView(); 2407 KOAgendaView *aView = mViewManager->agendaView();
2408 if (aView) { 2408 if (aView) {
2409 if (aView->selectionStart().isValid()) { 2409 if (aView->selectionStart().isValid()) {
2410 if (aView->selectedIsAllDay()) { 2410 if (aView->selectedIsAllDay()) {
2411 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2411 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2412 } else { 2412 } else {
2413 newEvent(aView->selectionStart(),aView->selectionEnd()); 2413 newEvent(aView->selectionStart(),aView->selectionEnd());
2414 } 2414 }
2415 return; 2415 return;
2416 } 2416 }
2417 } 2417 }
2418 2418
2419 QDate date = mNavigator->selectedDates().first(); 2419 QDate date = mNavigator->selectedDates().first();
2420 QDateTime current = QDateTime::currentDateTime(); 2420 QDateTime current = QDateTime::currentDateTime();
2421 if ( date <= current.date() ) { 2421 if ( date <= current.date() ) {
2422 int hour = current.time().hour() +1; 2422 int hour = current.time().hour() +1;
2423 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2423 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2424 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2424 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2425 } else 2425 } else
2426 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2426 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2427 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2427 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2428 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2428 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2429} 2429}
2430 2430
2431void CalendarView::newEvent(QDateTime fh) 2431void CalendarView::newEvent(QDateTime fh)
2432{ 2432{
2433 newEvent(fh, 2433 newEvent(fh,
2434 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2434 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2435} 2435}
2436 2436
2437void CalendarView::newEvent(QDate dt) 2437void CalendarView::newEvent(QDate dt)
2438{ 2438{
2439 newEvent(QDateTime(dt, QTime(0,0,0)), 2439 newEvent(QDateTime(dt, QTime(0,0,0)),
2440 QDateTime(dt, QTime(0,0,0)), true); 2440 QDateTime(dt, QTime(0,0,0)), true);
2441} 2441}
2442 2442
2443void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2443void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2444{ 2444{
2445 2445
2446 mEventEditor->newEvent(fromHint,toHint,allDay); 2446 mEventEditor->newEvent(fromHint,toHint,allDay);
2447 if ( mFilterView->filtersEnabled() ) { 2447 if ( mFilterView->filtersEnabled() ) {
2448 CalFilter *filter = mFilterView->selectedFilter(); 2448 CalFilter *filter = mFilterView->selectedFilter();
2449 if (filter && filter->showCategories()) { 2449 if (filter && filter->showCategories()) {
2450 mEventEditor->setCategories(filter->categoryList().join(",") ); 2450 mEventEditor->setCategories(filter->categoryList().join(",") );
2451 } 2451 }
2452 if ( filter ) 2452 if ( filter )
2453 mEventEditor->setSecrecy( filter->getSecrecy() ); 2453 mEventEditor->setSecrecy( filter->getSecrecy() );
2454 } 2454 }
2455 showEventEditor(); 2455 showEventEditor();
2456} 2456}
2457void CalendarView::todoAdded(Todo * t) 2457void CalendarView::todoAdded(Todo * t)
2458{ 2458{
2459 2459
2460 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2460 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2461 updateTodoViews(); 2461 updateTodoViews();
2462} 2462}
2463void CalendarView::todoChanged(Todo * t) 2463void CalendarView::todoChanged(Todo * t)
2464{ 2464{
2465 emit todoModified( t, 4 ); 2465 emit todoModified( t, 4 );
2466 // updateTodoViews(); 2466 // updateTodoViews();
2467} 2467}
2468void CalendarView::todoToBeDeleted(Todo *) 2468void CalendarView::todoToBeDeleted(Todo *)
2469{ 2469{
2470 //qDebug("todoToBeDeleted(Todo *) "); 2470 //qDebug("todoToBeDeleted(Todo *) ");
2471 updateTodoViews(); 2471 updateTodoViews();
2472} 2472}
2473void CalendarView::todoDeleted() 2473void CalendarView::todoDeleted()
2474{ 2474{
2475 //qDebug(" todoDeleted()"); 2475 //qDebug(" todoDeleted()");
2476 updateTodoViews(); 2476 updateTodoViews();
2477} 2477}
2478 2478
2479 2479
2480 2480
2481void CalendarView::newTodo() 2481void CalendarView::newTodo()
2482{ 2482{
2483 2483
2484 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true); 2484 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true);
2485 if ( mFilterView->filtersEnabled() ) { 2485 if ( mFilterView->filtersEnabled() ) {
2486 CalFilter *filter = mFilterView->selectedFilter(); 2486 CalFilter *filter = mFilterView->selectedFilter();
2487 if (filter && filter->showCategories()) { 2487 if (filter && filter->showCategories()) {
2488 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2488 mTodoEditor->setCategories(filter->categoryList().join(",") );
2489 } 2489 }
2490 if ( filter ) 2490 if ( filter )
2491 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2491 mTodoEditor->setSecrecy( filter->getSecrecy() );
2492 } 2492 }
2493 showTodoEditor(); 2493 showTodoEditor();
2494} 2494}
2495 2495
2496void CalendarView::newSubTodo() 2496void CalendarView::newSubTodo()
2497{ 2497{
2498 Todo *todo = selectedTodo(); 2498 Todo *todo = selectedTodo();
2499 if ( todo ) newSubTodo( todo ); 2499 if ( todo ) newSubTodo( todo );
2500} 2500}
2501 2501
2502void CalendarView::newSubTodo(Todo *parentEvent) 2502void CalendarView::newSubTodo(Todo *parentEvent)
2503{ 2503{
2504 2504
2505 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true); 2505 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true);
2506 showTodoEditor(); 2506 showTodoEditor();
2507} 2507}
2508 2508
2509void CalendarView::newFloatingEvent() 2509void CalendarView::newFloatingEvent()
2510{ 2510{
2511 DateList tmpList = mNavigator->selectedDates(); 2511 DateList tmpList = mNavigator->selectedDates();
2512 QDate date = tmpList.first(); 2512 QDate date = tmpList.first();
2513 2513
2514 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2514 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2515 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2515 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2516} 2516}
2517 2517
2518 2518
2519void CalendarView::editEvent( Event *event ) 2519void CalendarView::editEvent( Event *event )
2520{ 2520{
2521 2521
2522 if ( !event ) return; 2522 if ( !event ) return;
2523 if ( event->isReadOnly() ) { 2523 if ( event->isReadOnly() ) {
2524 showEvent( event ); 2524 showEvent( event );
2525 return; 2525 return;
2526 } 2526 }
2527 mEventEditor->editEvent( event , mFlagEditDescription); 2527 mEventEditor->editEvent( event , mFlagEditDescription);
2528 showEventEditor(); 2528 showEventEditor();
2529} 2529}
2530void CalendarView::editJournal( Journal *jour ) 2530void CalendarView::editJournal( Journal *jour )
2531{ 2531{
2532 if ( !jour ) return; 2532 if ( !jour ) return;
2533 mDialogManager->hideSearchDialog(); 2533 mDialogManager->hideSearchDialog();
2534 mViewManager->showJournalView(); 2534 mViewManager->showJournalView();
2535 mNavigator->slotDaySelect( jour->dtStart().date() ); 2535 mNavigator->slotDaySelect( jour->dtStart().date() );
2536} 2536}
2537void CalendarView::editTodo( Todo *todo ) 2537void CalendarView::editTodo( Todo *todo )
2538{ 2538{
2539 if ( !todo ) return; 2539 if ( !todo ) return;
2540 2540
2541 if ( todo->isReadOnly() ) { 2541 if ( todo->isReadOnly() ) {
2542 showTodo( todo ); 2542 showTodo( todo );
2543 return; 2543 return;
2544 } 2544 }
2545 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2545 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2546 showTodoEditor(); 2546 showTodoEditor();
2547 2547
2548} 2548}
2549 2549
2550KOEventViewerDialog* CalendarView::getEventViewerDialog() 2550KOEventViewerDialog* CalendarView::getEventViewerDialog()
2551{ 2551{
2552 if ( !mEventViewerDialog ) { 2552 if ( !mEventViewerDialog ) {
2553 mEventViewerDialog = new KOEventViewerDialog(this); 2553 mEventViewerDialog = new KOEventViewerDialog(this);
2554 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2554 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2555 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2555 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2556 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2556 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2557 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2557 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2558 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2558 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2559 viewManager(), SLOT( showAgendaView( bool ) ) ); 2559 viewManager(), SLOT( showAgendaView( bool ) ) );
2560 mEventViewerDialog->resize( 640, 480 ); 2560 mEventViewerDialog->resize( 640, 480 );
2561 2561
2562 } 2562 }
2563 return mEventViewerDialog; 2563 return mEventViewerDialog;
2564} 2564}
2565void CalendarView::showEvent(Event *event) 2565void CalendarView::showEvent(Event *event)
2566{ 2566{
2567 getEventViewerDialog()->setEvent(event); 2567 getEventViewerDialog()->setEvent(event);
2568 getEventViewerDialog()->showMe(); 2568 getEventViewerDialog()->showMe();
2569} 2569}
2570 2570
2571void CalendarView::showTodo(Todo *event) 2571void CalendarView::showTodo(Todo *event)
2572{ 2572{
2573 getEventViewerDialog()->setTodo(event); 2573 getEventViewerDialog()->setTodo(event);
2574 getEventViewerDialog()->showMe(); 2574 getEventViewerDialog()->showMe();
2575} 2575}
2576void CalendarView::showJournal( Journal *jour ) 2576void CalendarView::showJournal( Journal *jour )
2577{ 2577{
2578 getEventViewerDialog()->setJournal(jour); 2578 getEventViewerDialog()->setJournal(jour);
2579 getEventViewerDialog()->showMe(); 2579 getEventViewerDialog()->showMe();
2580 2580
2581} 2581}
2582// void CalendarView::todoModified (Todo *event, int changed) 2582// void CalendarView::todoModified (Todo *event, int changed)
2583// { 2583// {
2584// // if (mDialogList.find (event) != mDialogList.end ()) { 2584// // if (mDialogList.find (event) != mDialogList.end ()) {
2585// // kdDebug() << "Todo modified and open" << endl; 2585// // kdDebug() << "Todo modified and open" << endl;
2586// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2586// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2587// // temp->modified (changed); 2587// // temp->modified (changed);
2588 2588
2589// // } 2589// // }
2590 2590
2591// mViewManager->updateView(); 2591// mViewManager->updateView();
2592// } 2592// }
2593 2593
2594void CalendarView::appointment_show() 2594void CalendarView::appointment_show()
2595{ 2595{
2596 Event *anEvent = 0; 2596 Event *anEvent = 0;
2597 2597
2598 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2598 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2599 2599
2600 if (mViewManager->currentView()->isEventView()) { 2600 if (mViewManager->currentView()->isEventView()) {
2601 if ( incidence && incidence->type() == "Event" ) { 2601 if ( incidence && incidence->type() == "Event" ) {
2602 anEvent = static_cast<Event *>(incidence); 2602 anEvent = static_cast<Event *>(incidence);
2603 } 2603 }
2604 } 2604 }
2605 2605
2606 if (!anEvent) { 2606 if (!anEvent) {
2607 KNotifyClient::beep(); 2607 KNotifyClient::beep();
2608 return; 2608 return;
2609 } 2609 }
2610 2610
2611 showEvent(anEvent); 2611 showEvent(anEvent);
2612} 2612}
2613 2613
2614void CalendarView::appointment_edit() 2614void CalendarView::appointment_edit()
2615{ 2615{
2616 Event *anEvent = 0; 2616 Event *anEvent = 0;
2617 2617
2618 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2618 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2619 2619
2620 if (mViewManager->currentView()->isEventView()) { 2620 if (mViewManager->currentView()->isEventView()) {
2621 if ( incidence && incidence->type() == "Event" ) { 2621 if ( incidence && incidence->type() == "Event" ) {
2622 anEvent = static_cast<Event *>(incidence); 2622 anEvent = static_cast<Event *>(incidence);
2623 } 2623 }
2624 } 2624 }
2625 2625
2626 if (!anEvent) { 2626 if (!anEvent) {
2627 KNotifyClient::beep(); 2627 KNotifyClient::beep();
2628 return; 2628 return;
2629 } 2629 }
2630 2630
2631 editEvent(anEvent); 2631 editEvent(anEvent);
2632} 2632}
2633 2633
2634void CalendarView::appointment_delete() 2634void CalendarView::appointment_delete()
2635{ 2635{
2636 Event *anEvent = 0; 2636 Event *anEvent = 0;
2637 2637
2638 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2638 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2639 2639
2640 if (mViewManager->currentView()->isEventView()) { 2640 if (mViewManager->currentView()->isEventView()) {
2641 if ( incidence && incidence->type() == "Event" ) { 2641 if ( incidence && incidence->type() == "Event" ) {
2642 anEvent = static_cast<Event *>(incidence); 2642 anEvent = static_cast<Event *>(incidence);
2643 } 2643 }
2644 } 2644 }
2645 2645
2646 if (!anEvent) { 2646 if (!anEvent) {
2647 KNotifyClient::beep(); 2647 KNotifyClient::beep();
2648 return; 2648 return;
2649 } 2649 }
2650 2650
2651 deleteEvent(anEvent); 2651 deleteEvent(anEvent);
2652} 2652}
2653 2653
2654void CalendarView::todo_unsub(Todo *anTodo ) 2654void CalendarView::todo_unsub(Todo *anTodo )
2655{ 2655{
2656 // Todo *anTodo = selectedTodo(); 2656 // Todo *anTodo = selectedTodo();
2657 if (!anTodo) return; 2657 if (!anTodo) return;
2658 if (!anTodo->relatedTo()) return; 2658 if (!anTodo->relatedTo()) return;
2659 anTodo->relatedTo()->removeRelation(anTodo); 2659 anTodo->relatedTo()->removeRelation(anTodo);
2660 anTodo->setRelatedTo(0); 2660 anTodo->setRelatedTo(0);
2661 anTodo->updated(); 2661 anTodo->updated();
2662 anTodo->setRelatedToUid(""); 2662 anTodo->setRelatedToUid("");
2663 setModified(true); 2663 setModified(true);
2664 updateView(); 2664 updateView();
2665} 2665}
2666 2666
2667void CalendarView::deleteTodo(Todo *todo) 2667void CalendarView::deleteTodo(Todo *todo)
2668{ 2668{
2669 if (!todo) { 2669 if (!todo) {
2670 KNotifyClient::beep(); 2670 KNotifyClient::beep();
2671 return; 2671 return;
2672 } 2672 }
2673 if (KOPrefs::instance()->mConfirm) { 2673 if (KOPrefs::instance()->mConfirm) {
2674 switch (msgItemDelete()) { 2674 switch (msgItemDelete()) {
2675 case KMessageBox::Continue: // OK 2675 case KMessageBox::Continue: // OK
2676 if (!todo->relations().isEmpty()) { 2676 if (!todo->relations().isEmpty()) {
2677 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2677 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2678 i18n("Delete To-Do")); 2678 i18n("Delete To-Do"));
2679 } else { 2679 } else {
2680 checkExternalId( todo ); 2680 checkExternalId( todo );
2681 calendar()->deleteTodo(todo); 2681 calendar()->deleteTodo(todo);
2682 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2682 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2683 updateView(); 2683 updateView();
2684 } 2684 }
2685 break; 2685 break;
2686 } // switch 2686 } // switch
2687 } else { 2687 } else {
2688 if (!todo->relations().isEmpty()) { 2688 if (!todo->relations().isEmpty()) {
2689 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2689 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2690 i18n("Delete To-Do")); 2690 i18n("Delete To-Do"));
2691 } else { 2691 } else {