summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2004-09-21 10:08:57 (UTC)
committer zautrix <zautrix>2004-09-21 10:08:57 (UTC)
commit19f445f0b6e7d4591db46b89e877ed9f4332ecd4 (patch) (unidiff)
treefd21a5dc32332060197d792552ef1eb469e92175 /korganizer
parent1cf4cc6e7bf25ee309852c7c97155de86917289f (diff)
downloadkdepimpi-19f445f0b6e7d4591db46b89e877ed9f4332ecd4.zip
kdepimpi-19f445f0b6e7d4591db46b89e877ed9f4332ecd4.tar.gz
kdepimpi-19f445f0b6e7d4591db46b89e877ed9f4332ecd4.tar.bz2
more sync fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index bbed05b..7fae4a9 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,3612 +1,3616 @@
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 ) {
1053 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1054 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1055 }
1052 local->addIncidence( inL ); 1056 local->addIncidence( inL );
1053 ++changedLocal; 1057 ++changedLocal;
1054 } 1058 }
1055 } 1059 }
1056 } else { // no conflict 1060 } else { // no conflict
1057 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1061 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1058 QString des = eventLSync->description(); 1062 QString des = eventLSync->description();
1059 QString pref = "e"; 1063 QString pref = "e";
1060 if ( inR->type() == "Todo" ) 1064 if ( inR->type() == "Todo" )
1061 pref = "t"; 1065 pref = "t";
1062 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
1063 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1067 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1064 //remote->deleteIncidence( inR ); 1068 //remote->deleteIncidence( inR );
1065 ++deletedEventR; 1069 ++deletedEventR;
1066 } else { 1070 } else {
1067 inR->setLastModified( modifiedCalendar ); 1071 inR->setLastModified( modifiedCalendar );
1068 inL = inR->clone(); 1072 inL = inR->clone();
1069 local->addIncidence( inL ); 1073 local->addIncidence( inL );
1070 ++addedEvent; 1074 ++addedEvent;
1071 } 1075 }
1072 } else { 1076 } else {
1073 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1077 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1074 inR->setLastModified( modifiedCalendar ); 1078 inR->setLastModified( modifiedCalendar );
1075 local->addIncidence( inR->clone() ); 1079 local->addIncidence( inR->clone() );
1076 ++addedEvent; 1080 ++addedEvent;
1077 } else { 1081 } else {
1078 checkExternSyncEvent(eventRSyncSharp, inR); 1082 checkExternSyncEvent(eventRSyncSharp, inR);
1079 remote->deleteIncidence( inR ); 1083 remote->deleteIncidence( inR );
1080 ++deletedEventR; 1084 ++deletedEventR;
1081 } 1085 }
1082 } 1086 }
1083 } 1087 }
1084 } 1088 }
1085 inR = er.next(); 1089 inR = er.next();
1086 } 1090 }
1087 QPtrList<Incidence> el = local->rawIncidences(); 1091 QPtrList<Incidence> el = local->rawIncidences();
1088 inL = el.first(); 1092 inL = el.first();
1089 modulo = (el.count()/10)+1; 1093 modulo = (el.count()/10)+1;
1090 bar.setCaption (i18n("Add / remove events") ); 1094 bar.setCaption (i18n("Add / remove events") );
1091 bar.setTotalSteps ( el.count() ) ; 1095 bar.setTotalSteps ( el.count() ) ;
1092 bar.show(); 1096 bar.show();
1093 incCounter = 0; 1097 incCounter = 0;
1094 1098
1095 while ( inL ) { 1099 while ( inL ) {
1096 1100
1097 qApp->processEvents(); 1101 qApp->processEvents();
1098 if ( ! bar.isVisible() ) 1102 if ( ! bar.isVisible() )
1099 return false; 1103 return false;
1100 if ( incCounter % modulo == 0 ) 1104 if ( incCounter % modulo == 0 )
1101 bar.setProgress( incCounter ); 1105 bar.setProgress( incCounter );
1102 ++incCounter; 1106 ++incCounter;
1103 uid = inL->uid(); 1107 uid = inL->uid();
1104 bool skipIncidence = false; 1108 bool skipIncidence = false;
1105 if ( uid.left(15) == QString("last-syncEvent-") ) 1109 if ( uid.left(15) == QString("last-syncEvent-") )
1106 skipIncidence = true; 1110 skipIncidence = true;
1107 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1111 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1108 skipIncidence = true; 1112 skipIncidence = true;
1109 if ( !skipIncidence ) { 1113 if ( !skipIncidence ) {
1110 inR = remote->incidence( uid ); 1114 inR = remote->incidence( uid );
1111 if ( ! inR ) { 1115 if ( ! inR ) {
1112 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1116 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1113 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1117 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1114 checkExternSyncEvent(eventLSyncSharp, inL); 1118 checkExternSyncEvent(eventLSyncSharp, inL);
1115 local->deleteIncidence( inL ); 1119 local->deleteIncidence( inL );
1116 ++deletedEventL; 1120 ++deletedEventL;
1117 } else { 1121 } else {
1118 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1122 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1119 inL->removeID(mCurrentSyncDevice ); 1123 inL->removeID(mCurrentSyncDevice );
1120 ++addedEventR; 1124 ++addedEventR;
1121 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1125 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1122 inL->setLastModified( modifiedCalendar ); 1126 inL->setLastModified( modifiedCalendar );
1123 inR = inL->clone(); 1127 inR = inL->clone();
1124 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1128 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1125 remote->addIncidence( inR ); 1129 remote->addIncidence( inR );
1126 } 1130 }
1127 } 1131 }
1128 } else { 1132 } else {
1129 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1133 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1130 checkExternSyncEvent(eventLSyncSharp, inL); 1134 checkExternSyncEvent(eventLSyncSharp, inL);
1131 local->deleteIncidence( inL ); 1135 local->deleteIncidence( inL );
1132 ++deletedEventL; 1136 ++deletedEventL;
1133 } else { 1137 } else {
1134 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1138 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1135 ++addedEventR; 1139 ++addedEventR;
1136 inL->setLastModified( modifiedCalendar ); 1140 inL->setLastModified( modifiedCalendar );
1137 remote->addIncidence( inL->clone() ); 1141 remote->addIncidence( inL->clone() );
1138 } 1142 }
1139 } 1143 }
1140 } 1144 }
1141 } 1145 }
1142 } 1146 }
1143 inL = el.next(); 1147 inL = el.next();
1144 } 1148 }
1145 int delFut = 0; 1149 int delFut = 0;
1146 if ( KOPrefs::instance()->mWriteBackInFuture ) { 1150 if ( KOPrefs::instance()->mWriteBackInFuture ) {
1147 er = remote->rawIncidences(); 1151 er = remote->rawIncidences();
1148 inR = er.first(); 1152 inR = er.first();
1149 QDateTime dt; 1153 QDateTime dt;
1150 QDateTime cur = QDateTime::currentDateTime(); 1154 QDateTime cur = QDateTime::currentDateTime();
1151 QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 ); 1155 QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 );
1152 while ( inR ) { 1156 while ( inR ) {
1153 if ( inR->type() == "Todo" ) { 1157 if ( inR->type() == "Todo" ) {
1154 Todo * t = (Todo*)inR; 1158 Todo * t = (Todo*)inR;
1155 if ( t->hasDueDate() ) 1159 if ( t->hasDueDate() )
1156 dt = t->dtDue(); 1160 dt = t->dtDue();
1157 else 1161 else
1158 dt = cur.addSecs( 62 ); 1162 dt = cur.addSecs( 62 );
1159 } 1163 }
1160 else if (inR->type() == "Event" ) { 1164 else if (inR->type() == "Event" ) {
1161 bool ok; 1165 bool ok;
1162 dt = inR->getNextOccurence( cur, &ok ); 1166 dt = inR->getNextOccurence( cur, &ok );
1163 if ( !ok ) 1167 if ( !ok )
1164 dt = cur.addSecs( -62 ); 1168 dt = cur.addSecs( -62 );
1165 } 1169 }
1166 else 1170 else
1167 dt = inR->dtStart(); 1171 dt = inR->dtStart();
1168 if ( dt < cur || dt > end ) { 1172 if ( dt < cur || dt > end ) {
1169 remote->deleteIncidence( inR ); 1173 remote->deleteIncidence( inR );
1170 ++delFut; 1174 ++delFut;
1171 } 1175 }
1172 inR = er.next(); 1176 inR = er.next();
1173 } 1177 }
1174 } 1178 }
1175 bar.hide(); 1179 bar.hide();
1176 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1180 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1177 eventLSync->setReadOnly( false ); 1181 eventLSync->setReadOnly( false );
1178 eventLSync->setDtStart( mLastCalendarSync ); 1182 eventLSync->setDtStart( mLastCalendarSync );
1179 eventRSync->setDtStart( mLastCalendarSync ); 1183 eventRSync->setDtStart( mLastCalendarSync );
1180 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1184 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1181 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1185 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1182 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1186 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1183 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1187 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1184 eventLSync->setReadOnly( true ); 1188 eventLSync->setReadOnly( true );
1185 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1189 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1186 remote->addEvent( eventRSync ); 1190 remote->addEvent( eventRSync );
1187 QString mes; 1191 QString mes;
1188 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 );
1189 QString delmess; 1193 QString delmess;
1190 if ( delFut ) { 1194 if ( delFut ) {
1191 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 );
1192 mes += delmess; 1196 mes += delmess;
1193 } 1197 }
1194 if ( KOPrefs::instance()->mShowSyncSummary ) { 1198 if ( KOPrefs::instance()->mShowSyncSummary ) {
1195 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1199 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1196 } 1200 }
1197 qDebug( mes ); 1201 qDebug( mes );
1198 mCalendar->checkAlarmForIncidence( 0, true ); 1202 mCalendar->checkAlarmForIncidence( 0, true );
1199 return syncOK; 1203 return syncOK;
1200} 1204}
1201 1205
1202void CalendarView::setSyncDevice( QString s ) 1206void CalendarView::setSyncDevice( QString s )
1203{ 1207{
1204 mCurrentSyncDevice= s; 1208 mCurrentSyncDevice= s;
1205} 1209}
1206void CalendarView::setSyncName( QString s ) 1210void CalendarView::setSyncName( QString s )
1207{ 1211{
1208 mCurrentSyncName= s; 1212 mCurrentSyncName= s;
1209} 1213}
1210bool CalendarView::syncCalendar(QString filename, int mode) 1214bool CalendarView::syncCalendar(QString filename, int mode)
1211{ 1215{
1212 mGlobalSyncMode = SYNC_MODE_NORMAL; 1216 mGlobalSyncMode = SYNC_MODE_NORMAL;
1213 CalendarLocal* calendar = new CalendarLocal(); 1217 CalendarLocal* calendar = new CalendarLocal();
1214 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1218 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1215 FileStorage* storage = new FileStorage( calendar ); 1219 FileStorage* storage = new FileStorage( calendar );
1216 bool syncOK = false; 1220 bool syncOK = false;
1217 storage->setFileName( filename ); 1221 storage->setFileName( filename );
1218 // qDebug("loading ... "); 1222 // qDebug("loading ... ");
1219 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1223 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1220 getEventViewerDialog()->setSyncMode( true ); 1224 getEventViewerDialog()->setSyncMode( true );
1221 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1225 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1222 getEventViewerDialog()->setSyncMode( false ); 1226 getEventViewerDialog()->setSyncMode( false );
1223 if ( syncOK ) { 1227 if ( syncOK ) {
1224 if ( KOPrefs::instance()->mWriteBackFile ) 1228 if ( KOPrefs::instance()->mWriteBackFile )
1225 { 1229 {
1226 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1230 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1227 storage->save(); 1231 storage->save();
1228 } 1232 }
1229 } 1233 }
1230 setModified( true ); 1234 setModified( true );
1231 } 1235 }
1232 delete storage; 1236 delete storage;
1233 delete calendar; 1237 delete calendar;
1234 if ( syncOK ) 1238 if ( syncOK )
1235 updateView(); 1239 updateView();
1236 return syncOK; 1240 return syncOK;
1237} 1241}
1238void CalendarView::syncPhone() 1242void CalendarView::syncPhone()
1239{ 1243{
1240 syncExternal( 1 ); 1244 syncExternal( 1 );
1241} 1245}
1242void CalendarView::syncExternal( int mode ) 1246void CalendarView::syncExternal( int mode )
1243{ 1247{
1244 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1248 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1245 //mCurrentSyncDevice = "sharp-DTM"; 1249 //mCurrentSyncDevice = "sharp-DTM";
1246 if ( KOPrefs::instance()->mAskForPreferences ) 1250 if ( KOPrefs::instance()->mAskForPreferences )
1247 edit_sync_options(); 1251 edit_sync_options();
1248 qApp->processEvents(); 1252 qApp->processEvents();
1249 CalendarLocal* calendar = new CalendarLocal(); 1253 CalendarLocal* calendar = new CalendarLocal();
1250 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1254 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1251 bool syncOK = false; 1255 bool syncOK = false;
1252 bool loadSuccess = false; 1256 bool loadSuccess = false;
1253 PhoneFormat* phoneFormat = 0; 1257 PhoneFormat* phoneFormat = 0;
1254#ifndef DESKTOP_VERSION 1258#ifndef DESKTOP_VERSION
1255 SharpFormat* sharpFormat = 0; 1259 SharpFormat* sharpFormat = 0;
1256 if ( mode == 0 ) { // sharp 1260 if ( mode == 0 ) { // sharp
1257 sharpFormat = new SharpFormat () ; 1261 sharpFormat = new SharpFormat () ;
1258 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1262 loadSuccess = sharpFormat->load( calendar, mCalendar );
1259 1263
1260 } else 1264 } else
1261#endif 1265#endif
1262 if ( mode == 1 ) { // phone 1266 if ( mode == 1 ) { // phone
1263 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1267 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1264 KOPrefs::instance()->mPhoneDevice, 1268 KOPrefs::instance()->mPhoneDevice,
1265 KOPrefs::instance()->mPhoneConnection, 1269 KOPrefs::instance()->mPhoneConnection,
1266 KOPrefs::instance()->mPhoneModel); 1270 KOPrefs::instance()->mPhoneModel);
1267 loadSuccess = phoneFormat->load( calendar,mCalendar); 1271 loadSuccess = phoneFormat->load( calendar,mCalendar);
1268 1272
1269 } else 1273 } else
1270 return; 1274 return;
1271 if ( loadSuccess ) { 1275 if ( loadSuccess ) {
1272 getEventViewerDialog()->setSyncMode( true ); 1276 getEventViewerDialog()->setSyncMode( true );
1273 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1277 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1274 getEventViewerDialog()->setSyncMode( false ); 1278 getEventViewerDialog()->setSyncMode( false );
1275 qApp->processEvents(); 1279 qApp->processEvents();
1276 if ( syncOK ) { 1280 if ( syncOK ) {
1277 if ( KOPrefs::instance()->mWriteBackFile ) 1281 if ( KOPrefs::instance()->mWriteBackFile )
1278 { 1282 {
1279 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1283 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1280 Incidence* inc = iL.first(); 1284 Incidence* inc = iL.first();
1281 if ( phoneFormat ) { 1285 if ( phoneFormat ) {
1282 while ( inc ) { 1286 while ( inc ) {
1283 inc->removeID(mCurrentSyncDevice); 1287 inc->removeID(mCurrentSyncDevice);
1284 inc = iL.next(); 1288 inc = iL.next();
1285 } 1289 }
1286 } 1290 }
1287#ifndef DESKTOP_VERSION 1291#ifndef DESKTOP_VERSION
1288 if ( sharpFormat ) 1292 if ( sharpFormat )
1289 sharpFormat->save(calendar); 1293 sharpFormat->save(calendar);
1290#endif 1294#endif
1291 if ( phoneFormat ) 1295 if ( phoneFormat )
1292 phoneFormat->save(calendar); 1296 phoneFormat->save(calendar);
1293 iL = calendar->rawIncidences(); 1297 iL = calendar->rawIncidences();
1294 inc = iL.first(); 1298 inc = iL.first();
1295 Incidence* loc; 1299 Incidence* loc;
1296 while ( inc ) { 1300 while ( inc ) {
1297 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1301 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1298 loc = mCalendar->incidence(inc->uid() ); 1302 loc = mCalendar->incidence(inc->uid() );
1299 if ( loc ) { 1303 if ( loc ) {
1300 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1304 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1301 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1305 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1302 } 1306 }
1303 } 1307 }
1304 inc = iL.next(); 1308 inc = iL.next();
1305 } 1309 }
1306 Incidence* lse = getLastSyncEvent(); 1310 Incidence* lse = getLastSyncEvent();
1307 if ( lse ) { 1311 if ( lse ) {
1308 lse->setReadOnly( false ); 1312 lse->setReadOnly( false );
1309 lse->setDescription( "" ); 1313 lse->setDescription( "" );
1310 lse->setReadOnly( true ); 1314 lse->setReadOnly( true );
1311 } 1315 }
1312 } 1316 }
1313 } 1317 }
1314 setModified( true ); 1318 setModified( true );
1315 } else { 1319 } else {
1316 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") ;
1317 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1321 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1318 question, i18n("Ok")) ; 1322 question, i18n("Ok")) ;
1319 1323
1320 } 1324 }
1321 delete calendar; 1325 delete calendar;
1322 updateView(); 1326 updateView();
1323 return ;//syncOK; 1327 return ;//syncOK;
1324 1328
1325} 1329}
1326void CalendarView::syncSharp() 1330void CalendarView::syncSharp()
1327{ 1331{
1328 syncExternal( 0 ); 1332 syncExternal( 0 );
1329 1333
1330} 1334}
1331 1335
1332 1336
1333//#include <kabc/stdaddressbook.h> 1337//#include <kabc/stdaddressbook.h>
1334bool CalendarView::importBday() 1338bool CalendarView::importBday()
1335{ 1339{
1336#if 0 1340#if 0
1337 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1341 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1338 KABC::AddressBook::Iterator it; 1342 KABC::AddressBook::Iterator it;
1339 int count = 0; 1343 int count = 0;
1340 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1344 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1341 ++count; 1345 ++count;
1342 } 1346 }
1343 QProgressBar bar(count,0 ); 1347 QProgressBar bar(count,0 );
1344 int w = 300; 1348 int w = 300;
1345 if ( QApplication::desktop()->width() < 320 ) 1349 if ( QApplication::desktop()->width() < 320 )
1346 w = 220; 1350 w = 220;
1347 int h = bar.sizeHint().height() ; 1351 int h = bar.sizeHint().height() ;
1348 int dw = QApplication::desktop()->width(); 1352 int dw = QApplication::desktop()->width();
1349 int dh = QApplication::desktop()->height(); 1353 int dh = QApplication::desktop()->height();
1350 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1354 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1351 bar.show(); 1355 bar.show();
1352 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1356 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1353 qApp->processEvents(); 1357 qApp->processEvents();
1354 count = 0; 1358 count = 0;
1355 int addCount = 0; 1359 int addCount = 0;
1356 KCal::Attendee* a = 0; 1360 KCal::Attendee* a = 0;
1357 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1361 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1358 if ( ! bar.isVisible() ) 1362 if ( ! bar.isVisible() )
1359 return false; 1363 return false;
1360 bar.setProgress( count++ ); 1364 bar.setProgress( count++ );
1361 qApp->processEvents(); 1365 qApp->processEvents();
1362 //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() );
1363 if ( (*it).birthday().date().isValid() ){ 1367 if ( (*it).birthday().date().isValid() ){
1364 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()) ;
1365 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1369 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1366 ++addCount; 1370 ++addCount;
1367 } 1371 }
1368 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");
1369 if ( anni.isValid() ){ 1373 if ( anni.isValid() ){
1370 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()) ;
1371 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1375 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1372 ++addCount; 1376 ++addCount;
1373 } 1377 }
1374 } 1378 }
1375 updateView(); 1379 updateView();
1376 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1380 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1377#endif 1381#endif
1378 return true; 1382 return true;
1379} 1383}
1380 1384
1381bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1385bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1382{ 1386{
1383 //qDebug("addAnni "); 1387 //qDebug("addAnni ");
1384 Event * ev = new Event(); 1388 Event * ev = new Event();
1385 if ( a ) { 1389 if ( a ) {
1386 ev->addAttendee( a ); 1390 ev->addAttendee( a );
1387 } 1391 }
1388 QString kind; 1392 QString kind;
1389 if ( birthday ) 1393 if ( birthday )
1390 kind = i18n( "Birthday" ); 1394 kind = i18n( "Birthday" );
1391 else 1395 else
1392 kind = i18n( "Anniversary" ); 1396 kind = i18n( "Anniversary" );
1393 ev->setSummary( name + " - " + kind ); 1397 ev->setSummary( name + " - " + kind );
1394 ev->setOrganizer( "nobody@nowhere" ); 1398 ev->setOrganizer( "nobody@nowhere" );
1395 ev->setCategories( kind ); 1399 ev->setCategories( kind );
1396 ev->setDtStart( QDateTime(date) ); 1400 ev->setDtStart( QDateTime(date) );
1397 ev->setDtEnd( QDateTime(date) ); 1401 ev->setDtEnd( QDateTime(date) );
1398 ev->setFloats( true ); 1402 ev->setFloats( true );
1399 Recurrence * rec = ev->recurrence(); 1403 Recurrence * rec = ev->recurrence();
1400 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1404 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1401 rec->addYearlyNum( date.month() ); 1405 rec->addYearlyNum( date.month() );
1402 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1406 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1403 delete ev; 1407 delete ev;
1404 return false; 1408 return false;
1405 } 1409 }
1406 return true; 1410 return true;
1407 1411
1408} 1412}
1409bool CalendarView::importQtopia( const QString &categories, 1413bool CalendarView::importQtopia( const QString &categories,
1410 const QString &datebook, 1414 const QString &datebook,
1411 const QString &todolist ) 1415 const QString &todolist )
1412{ 1416{
1413 1417
1414 QtopiaFormat qtopiaFormat; 1418 QtopiaFormat qtopiaFormat;
1415 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1419 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1416 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1420 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1417 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1421 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1418 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1422 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1419 1423
1420 updateView(); 1424 updateView();
1421 return true; 1425 return true;
1422 1426
1423#if 0 1427#if 0
1424 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1428 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1425 mCurrentSyncDevice = "qtopia-XML"; 1429 mCurrentSyncDevice = "qtopia-XML";
1426 if ( KOPrefs::instance()->mAskForPreferences ) 1430 if ( KOPrefs::instance()->mAskForPreferences )
1427 edit_sync_options(); 1431 edit_sync_options();
1428 qApp->processEvents(); 1432 qApp->processEvents();
1429 CalendarLocal* calendar = new CalendarLocal(); 1433 CalendarLocal* calendar = new CalendarLocal();
1430 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1434 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1431 bool syncOK = false; 1435 bool syncOK = false;
1432 QtopiaFormat qtopiaFormat; 1436 QtopiaFormat qtopiaFormat;
1433 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1437 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1434 bool loadOk = true; 1438 bool loadOk = true;
1435 if ( !categories.isEmpty() ) 1439 if ( !categories.isEmpty() )
1436 loadOk = qtopiaFormat.load( calendar, categories ); 1440 loadOk = qtopiaFormat.load( calendar, categories );
1437 if ( loadOk && !datebook.isEmpty() ) 1441 if ( loadOk && !datebook.isEmpty() )
1438 loadOk = qtopiaFormat.load( calendar, datebook ); 1442 loadOk = qtopiaFormat.load( calendar, datebook );
1439 if ( loadOk && !todolist.isEmpty() ) 1443 if ( loadOk && !todolist.isEmpty() )
1440 loadOk = qtopiaFormat.load( calendar, todolist ); 1444 loadOk = qtopiaFormat.load( calendar, todolist );
1441 1445
1442 if ( loadOk ) { 1446 if ( loadOk ) {
1443 getEventViewerDialog()->setSyncMode( true ); 1447 getEventViewerDialog()->setSyncMode( true );
1444 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1448 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1445 getEventViewerDialog()->setSyncMode( false ); 1449 getEventViewerDialog()->setSyncMode( false );
1446 qApp->processEvents(); 1450 qApp->processEvents();
1447 if ( syncOK ) { 1451 if ( syncOK ) {
1448 if ( KOPrefs::instance()->mWriteBackFile ) 1452 if ( KOPrefs::instance()->mWriteBackFile )
1449 { 1453 {
1450 // write back XML file 1454 // write back XML file
1451 1455
1452 } 1456 }
1453 setModified( true ); 1457 setModified( true );
1454 } 1458 }
1455 } else { 1459 } else {
1456 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") ;
1457 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1461 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1458 question, i18n("Ok")) ; 1462 question, i18n("Ok")) ;
1459 } 1463 }
1460 delete calendar; 1464 delete calendar;
1461 updateView(); 1465 updateView();
1462 return syncOK; 1466 return syncOK;
1463 1467
1464 1468
1465#endif 1469#endif
1466 1470
1467} 1471}
1468 1472
1469void CalendarView::setSyncEventsReadOnly() 1473void CalendarView::setSyncEventsReadOnly()
1470{ 1474{
1471 Event * ev; 1475 Event * ev;
1472 QPtrList<Event> eL = mCalendar->rawEvents(); 1476 QPtrList<Event> eL = mCalendar->rawEvents();
1473 ev = eL.first(); 1477 ev = eL.first();
1474 while ( ev ) { 1478 while ( ev ) {
1475 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1479 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1476 ev->setReadOnly( true ); 1480 ev->setReadOnly( true );
1477 ev = eL.next(); 1481 ev = eL.next();
1478 } 1482 }
1479} 1483}
1480bool CalendarView::openCalendar(QString filename, bool merge) 1484bool CalendarView::openCalendar(QString filename, bool merge)
1481{ 1485{
1482 1486
1483 if (filename.isEmpty()) { 1487 if (filename.isEmpty()) {
1484 return false; 1488 return false;
1485 } 1489 }
1486 1490
1487 if (!QFile::exists(filename)) { 1491 if (!QFile::exists(filename)) {
1488 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));
1489 return false; 1493 return false;
1490 } 1494 }
1491 1495
1492 globalFlagBlockAgenda = 1; 1496 globalFlagBlockAgenda = 1;
1493 if (!merge) mCalendar->close(); 1497 if (!merge) mCalendar->close();
1494 1498
1495 mStorage->setFileName( filename ); 1499 mStorage->setFileName( filename );
1496 1500
1497 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1501 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1498 if ( merge ) ;//setModified( true ); 1502 if ( merge ) ;//setModified( true );
1499 else { 1503 else {
1500 //setModified( true ); 1504 //setModified( true );
1501 mViewManager->setDocumentId( filename ); 1505 mViewManager->setDocumentId( filename );
1502 mDialogManager->setDocumentId( filename ); 1506 mDialogManager->setDocumentId( filename );
1503 mTodoList->setDocumentId( filename ); 1507 mTodoList->setDocumentId( filename );
1504 } 1508 }
1505 globalFlagBlockAgenda = 2; 1509 globalFlagBlockAgenda = 2;
1506 // if ( getLastSyncEvent() ) 1510 // if ( getLastSyncEvent() )
1507 // getLastSyncEvent()->setReadOnly( true ); 1511 // getLastSyncEvent()->setReadOnly( true );
1508 mCalendar->reInitAlarmSettings(); 1512 mCalendar->reInitAlarmSettings();
1509 setSyncEventsReadOnly(); 1513 setSyncEventsReadOnly();
1510 updateUnmanagedViews(); 1514 updateUnmanagedViews();
1511 updateView(); 1515 updateView();
1512 if ( filename != MainWindow::defaultFileName() ) 1516 if ( filename != MainWindow::defaultFileName() )
1513 saveCalendar( MainWindow::defaultFileName() ); 1517 saveCalendar( MainWindow::defaultFileName() );
1514 loadedFileVersion = QDateTime::currentDateTime(); 1518 loadedFileVersion = QDateTime::currentDateTime();
1515 return true; 1519 return true;
1516 } else { 1520 } else {
1517 // while failing to load, the calendar object could 1521 // while failing to load, the calendar object could
1518 // have become partially populated. Clear it out. 1522 // have become partially populated. Clear it out.
1519 if ( !merge ) mCalendar->close(); 1523 if ( !merge ) mCalendar->close();
1520 1524
1521 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));
1522 1526
1523 globalFlagBlockAgenda = 2; 1527 globalFlagBlockAgenda = 2;
1524 updateView(); 1528 updateView();
1525 } 1529 }
1526 return false; 1530 return false;
1527} 1531}
1528void CalendarView::setLoadedFileVersion(QDateTime dt) 1532void CalendarView::setLoadedFileVersion(QDateTime dt)
1529{ 1533{
1530 loadedFileVersion = dt; 1534 loadedFileVersion = dt;
1531} 1535}
1532bool CalendarView::checkFileChanged(QString fn) 1536bool CalendarView::checkFileChanged(QString fn)
1533{ 1537{
1534 QFileInfo finf ( fn ); 1538 QFileInfo finf ( fn );
1535 if ( !finf.exists() ) 1539 if ( !finf.exists() )
1536 return true; 1540 return true;
1537 QDateTime dt = finf.lastModified (); 1541 QDateTime dt = finf.lastModified ();
1538 if ( dt <= loadedFileVersion ) 1542 if ( dt <= loadedFileVersion )
1539 return false; 1543 return false;
1540 return true; 1544 return true;
1541 1545
1542} 1546}
1543bool CalendarView::checkFileVersion(QString fn) 1547bool CalendarView::checkFileVersion(QString fn)
1544{ 1548{
1545 QFileInfo finf ( fn ); 1549 QFileInfo finf ( fn );
1546 if ( !finf.exists() ) 1550 if ( !finf.exists() )
1547 return true; 1551 return true;
1548 QDateTime dt = finf.lastModified (); 1552 QDateTime dt = finf.lastModified ();
1549 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1553 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1550 //qDebug("file on disk version %s",dt.toString().latin1()); 1554 //qDebug("file on disk version %s",dt.toString().latin1());
1551 if ( dt <= loadedFileVersion ) 1555 if ( dt <= loadedFileVersion )
1552 return true; 1556 return true;
1553 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)) ,
1554 i18n("KO/Pi Warning"),i18n("Overwrite"), 1558 i18n("KO/Pi Warning"),i18n("Overwrite"),
1555 i18n("Sync+save")); 1559 i18n("Sync+save"));
1556 1560
1557 if ( km == KMessageBox::Cancel ) 1561 if ( km == KMessageBox::Cancel )
1558 return false; 1562 return false;
1559 if ( km == KMessageBox::Yes ) 1563 if ( km == KMessageBox::Yes )
1560 return true; 1564 return true;
1561 1565
1562 setSyncDevice("deleteaftersync" ); 1566 setSyncDevice("deleteaftersync" );
1563 KOPrefs::instance()->mAskForPreferences = true; 1567 KOPrefs::instance()->mAskForPreferences = true;
1564 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1568 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1565 KOPrefs::instance()->mWriteBackFile = false; 1569 KOPrefs::instance()->mWriteBackFile = false;
1566 KOPrefs::instance()->mWriteBackExistingOnly = false; 1570 KOPrefs::instance()->mWriteBackExistingOnly = false;
1567 KOPrefs::instance()->mShowSyncSummary = false; 1571 KOPrefs::instance()->mShowSyncSummary = false;
1568 syncCalendar( fn, 3 ); 1572 syncCalendar( fn, 3 );
1569 Event * e = getLastSyncEvent(); 1573 Event * e = getLastSyncEvent();
1570 mCalendar->deleteEvent ( e ); 1574 mCalendar->deleteEvent ( e );
1571 updateView(); 1575 updateView();
1572 return true; 1576 return true;
1573} 1577}
1574 1578
1575bool CalendarView::saveCalendar( QString filename ) 1579bool CalendarView::saveCalendar( QString filename )
1576{ 1580{
1577 1581
1578 // Store back all unsaved data into calendar object 1582 // Store back all unsaved data into calendar object
1579 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1583 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1580 if ( mViewManager->currentView() ) 1584 if ( mViewManager->currentView() )
1581 mViewManager->currentView()->flushView(); 1585 mViewManager->currentView()->flushView();
1582 1586
1583 //mStorage->setFileName( filename ); 1587 //mStorage->setFileName( filename );
1584 1588
1585 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1589 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1586 mStorage->setFileName( filename ); 1590 mStorage->setFileName( filename );
1587 bool success; 1591 bool success;
1588 success = mStorage->save(); 1592 success = mStorage->save();
1589 if ( !success ) { 1593 if ( !success ) {
1590 return false; 1594 return false;
1591 } 1595 }
1592 1596
1593 return true; 1597 return true;
1594} 1598}
1595 1599
1596void CalendarView::closeCalendar() 1600void CalendarView::closeCalendar()
1597{ 1601{
1598 1602
1599 // child windows no longer valid 1603 // child windows no longer valid
1600 emit closingDown(); 1604 emit closingDown();
1601 1605
1602 mCalendar->close(); 1606 mCalendar->close();
1603 setModified(false); 1607 setModified(false);
1604 updateView(); 1608 updateView();
1605} 1609}
1606 1610
1607void CalendarView::archiveCalendar() 1611void CalendarView::archiveCalendar()
1608{ 1612{
1609 mDialogManager->showArchiveDialog(); 1613 mDialogManager->showArchiveDialog();
1610} 1614}
1611 1615
1612 1616
1613void CalendarView::readSettings() 1617void CalendarView::readSettings()
1614{ 1618{
1615 1619
1616 1620
1617 // mViewManager->showAgendaView(); 1621 // mViewManager->showAgendaView();
1618 QString str; 1622 QString str;
1619 //qDebug("CalendarView::readSettings() "); 1623 //qDebug("CalendarView::readSettings() ");
1620 // read settings from the KConfig, supplying reasonable 1624 // read settings from the KConfig, supplying reasonable
1621 // defaults where none are to be found 1625 // defaults where none are to be found
1622 KConfig *config = KOGlobals::config(); 1626 KConfig *config = KOGlobals::config();
1623#ifndef KORG_NOSPLITTER 1627#ifndef KORG_NOSPLITTER
1624 config->setGroup("KOrganizer Geometry"); 1628 config->setGroup("KOrganizer Geometry");
1625 1629
1626 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1630 QValueList<int> sizes = config->readIntListEntry("Separator1");
1627 if (sizes.count() != 2) { 1631 if (sizes.count() != 2) {
1628 sizes << mDateNavigator->minimumSizeHint().width(); 1632 sizes << mDateNavigator->minimumSizeHint().width();
1629 sizes << 300; 1633 sizes << 300;
1630 } 1634 }
1631 mPanner->setSizes(sizes); 1635 mPanner->setSizes(sizes);
1632 1636
1633 sizes = config->readIntListEntry("Separator2"); 1637 sizes = config->readIntListEntry("Separator2");
1634 if ( ( mResourceView && sizes.count() == 4 ) || 1638 if ( ( mResourceView && sizes.count() == 4 ) ||
1635 ( !mResourceView && sizes.count() == 3 ) ) { 1639 ( !mResourceView && sizes.count() == 3 ) ) {
1636 mLeftSplitter->setSizes(sizes); 1640 mLeftSplitter->setSizes(sizes);
1637 } 1641 }
1638#endif 1642#endif
1639 globalFlagBlockAgenda = 1; 1643 globalFlagBlockAgenda = 1;
1640 mViewManager->showAgendaView(); 1644 mViewManager->showAgendaView();
1641 //mViewManager->readSettings( config ); 1645 //mViewManager->readSettings( config );
1642 mTodoList->restoreLayout(config,QString("Todo Layout")); 1646 mTodoList->restoreLayout(config,QString("Todo Layout"));
1643 readFilterSettings(config); 1647 readFilterSettings(config);
1644 config->setGroup( "Views" ); 1648 config->setGroup( "Views" );
1645 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1649 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1646 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1650 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1647 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1651 else if ( dateCount == 7 ) mNavigator->selectWeek();
1648 else mNavigator->selectDates( dateCount ); 1652 else mNavigator->selectDates( dateCount );
1649 // mViewManager->readSettings( config ); 1653 // mViewManager->readSettings( config );
1650 updateConfig(); 1654 updateConfig();
1651 globalFlagBlockAgenda = 2; 1655 globalFlagBlockAgenda = 2;
1652 mViewManager->readSettings( config ); 1656 mViewManager->readSettings( config );
1653#ifdef DESKTOP_VERSION 1657#ifdef DESKTOP_VERSION
1654 config->setGroup("WidgetLayout"); 1658 config->setGroup("WidgetLayout");
1655 QStringList list; 1659 QStringList list;
1656 list = config->readListEntry("MainLayout"); 1660 list = config->readListEntry("MainLayout");
1657 int x,y,w,h; 1661 int x,y,w,h;
1658 if ( ! list.isEmpty() ) { 1662 if ( ! list.isEmpty() ) {
1659 x = list[0].toInt(); 1663 x = list[0].toInt();
1660 y = list[1].toInt(); 1664 y = list[1].toInt();
1661 w = list[2].toInt(); 1665 w = list[2].toInt();
1662 h = list[3].toInt(); 1666 h = list[3].toInt();
1663 topLevelWidget()->setGeometry(x,y,w,h); 1667 topLevelWidget()->setGeometry(x,y,w,h);
1664 1668
1665 } else { 1669 } else {
1666 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1670 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1667 } 1671 }
1668 list = config->readListEntry("EditEventLayout"); 1672 list = config->readListEntry("EditEventLayout");
1669 if ( ! list.isEmpty() ) { 1673 if ( ! list.isEmpty() ) {
1670 x = list[0].toInt(); 1674 x = list[0].toInt();
1671 y = list[1].toInt(); 1675 y = list[1].toInt();
1672 w = list[2].toInt(); 1676 w = list[2].toInt();
1673 h = list[3].toInt(); 1677 h = list[3].toInt();
1674 mEventEditor->setGeometry(x,y,w,h); 1678 mEventEditor->setGeometry(x,y,w,h);
1675 1679
1676 } 1680 }
1677 list = config->readListEntry("EditTodoLayout"); 1681 list = config->readListEntry("EditTodoLayout");
1678 if ( ! list.isEmpty() ) { 1682 if ( ! list.isEmpty() ) {
1679 x = list[0].toInt(); 1683 x = list[0].toInt();
1680 y = list[1].toInt(); 1684 y = list[1].toInt();
1681 w = list[2].toInt(); 1685 w = list[2].toInt();
1682 h = list[3].toInt(); 1686 h = list[3].toInt();
1683 mTodoEditor->setGeometry(x,y,w,h); 1687 mTodoEditor->setGeometry(x,y,w,h);
1684 1688
1685 } 1689 }
1686 list = config->readListEntry("ViewerLayout"); 1690 list = config->readListEntry("ViewerLayout");
1687 if ( ! list.isEmpty() ) { 1691 if ( ! list.isEmpty() ) {
1688 x = list[0].toInt(); 1692 x = list[0].toInt();
1689 y = list[1].toInt(); 1693 y = list[1].toInt();
1690 w = list[2].toInt(); 1694 w = list[2].toInt();
1691 h = list[3].toInt(); 1695 h = list[3].toInt();
1692 getEventViewerDialog()->setGeometry(x,y,w,h); 1696 getEventViewerDialog()->setGeometry(x,y,w,h);
1693 } 1697 }
1694#endif 1698#endif
1695 1699
1696} 1700}
1697 1701
1698 1702
1699void CalendarView::writeSettings() 1703void CalendarView::writeSettings()
1700{ 1704{
1701 // kdDebug() << "CalendarView::writeSettings" << endl; 1705 // kdDebug() << "CalendarView::writeSettings" << endl;
1702 1706
1703 KConfig *config = KOGlobals::config(); 1707 KConfig *config = KOGlobals::config();
1704 1708
1705#ifndef KORG_NOSPLITTER 1709#ifndef KORG_NOSPLITTER
1706 config->setGroup("KOrganizer Geometry"); 1710 config->setGroup("KOrganizer Geometry");
1707 1711
1708 QValueList<int> list = mPanner->sizes(); 1712 QValueList<int> list = mPanner->sizes();
1709 config->writeEntry("Separator1",list); 1713 config->writeEntry("Separator1",list);
1710 1714
1711 list = mLeftSplitter->sizes(); 1715 list = mLeftSplitter->sizes();
1712 config->writeEntry("Separator2",list); 1716 config->writeEntry("Separator2",list);
1713#endif 1717#endif
1714 1718
1715 mViewManager->writeSettings( config ); 1719 mViewManager->writeSettings( config );
1716 mTodoList->saveLayout(config,QString("Todo Layout")); 1720 mTodoList->saveLayout(config,QString("Todo Layout"));
1717 mDialogManager->writeSettings( config ); 1721 mDialogManager->writeSettings( config );
1718 //KOPrefs::instance()->usrWriteConfig(); 1722 //KOPrefs::instance()->usrWriteConfig();
1719 KOPrefs::instance()->writeConfig(); 1723 KOPrefs::instance()->writeConfig();
1720 1724
1721 writeFilterSettings(config); 1725 writeFilterSettings(config);
1722 1726
1723 config->setGroup( "Views" ); 1727 config->setGroup( "Views" );
1724 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1728 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1725 1729
1726#ifdef DESKTOP_VERSION 1730#ifdef DESKTOP_VERSION
1727 config->setGroup("WidgetLayout"); 1731 config->setGroup("WidgetLayout");
1728 QStringList list ;//= config->readListEntry("MainLayout"); 1732 QStringList list ;//= config->readListEntry("MainLayout");
1729 int x,y,w,h; 1733 int x,y,w,h;
1730 QWidget* wid; 1734 QWidget* wid;
1731 wid = topLevelWidget(); 1735 wid = topLevelWidget();
1732 x = wid->geometry().x(); 1736 x = wid->geometry().x();
1733 y = wid->geometry().y(); 1737 y = wid->geometry().y();
1734 w = wid->width(); 1738 w = wid->width();
1735 h = wid->height(); 1739 h = wid->height();
1736 list.clear(); 1740 list.clear();
1737 list << QString::number( x ); 1741 list << QString::number( x );
1738 list << QString::number( y ); 1742 list << QString::number( y );
1739 list << QString::number( w ); 1743 list << QString::number( w );
1740 list << QString::number( h ); 1744 list << QString::number( h );
1741 config->writeEntry("MainLayout",list ); 1745 config->writeEntry("MainLayout",list );
1742 1746
1743 wid = mEventEditor; 1747 wid = mEventEditor;
1744 x = wid->geometry().x(); 1748 x = wid->geometry().x();
1745 y = wid->geometry().y(); 1749 y = wid->geometry().y();
1746 w = wid->width(); 1750 w = wid->width();
1747 h = wid->height(); 1751 h = wid->height();
1748 list.clear(); 1752 list.clear();
1749 list << QString::number( x ); 1753 list << QString::number( x );
1750 list << QString::number( y ); 1754 list << QString::number( y );
1751 list << QString::number( w ); 1755 list << QString::number( w );
1752 list << QString::number( h ); 1756 list << QString::number( h );
1753 config->writeEntry("EditEventLayout",list ); 1757 config->writeEntry("EditEventLayout",list );
1754 1758
1755 wid = mTodoEditor; 1759 wid = mTodoEditor;
1756 x = wid->geometry().x(); 1760 x = wid->geometry().x();
1757 y = wid->geometry().y(); 1761 y = wid->geometry().y();
1758 w = wid->width(); 1762 w = wid->width();
1759 h = wid->height(); 1763 h = wid->height();
1760 list.clear(); 1764 list.clear();
1761 list << QString::number( x ); 1765 list << QString::number( x );
1762 list << QString::number( y ); 1766 list << QString::number( y );
1763 list << QString::number( w ); 1767 list << QString::number( w );
1764 list << QString::number( h ); 1768 list << QString::number( h );
1765 config->writeEntry("EditTodoLayout",list ); 1769 config->writeEntry("EditTodoLayout",list );
1766 wid = getEventViewerDialog(); 1770 wid = getEventViewerDialog();
1767 x = wid->geometry().x(); 1771 x = wid->geometry().x();
1768 y = wid->geometry().y(); 1772 y = wid->geometry().y();
1769 w = wid->width(); 1773 w = wid->width();
1770 h = wid->height(); 1774 h = wid->height();
1771 list.clear(); 1775 list.clear();
1772 list << QString::number( x ); 1776 list << QString::number( x );
1773 list << QString::number( y ); 1777 list << QString::number( y );
1774 list << QString::number( w ); 1778 list << QString::number( w );
1775 list << QString::number( h ); 1779 list << QString::number( h );
1776 config->writeEntry("ViewerLayout",list ); 1780 config->writeEntry("ViewerLayout",list );
1777 wid = mDialogManager->getSearchDialog(); 1781 wid = mDialogManager->getSearchDialog();
1778 if ( wid ) { 1782 if ( wid ) {
1779 x = wid->geometry().x(); 1783 x = wid->geometry().x();
1780 y = wid->geometry().y(); 1784 y = wid->geometry().y();
1781 w = wid->width(); 1785 w = wid->width();
1782 h = wid->height(); 1786 h = wid->height();
1783 list.clear(); 1787 list.clear();
1784 list << QString::number( x ); 1788 list << QString::number( x );
1785 list << QString::number( y ); 1789 list << QString::number( y );
1786 list << QString::number( w ); 1790 list << QString::number( w );
1787 list << QString::number( h ); 1791 list << QString::number( h );
1788 config->writeEntry("SearchLayout",list ); 1792 config->writeEntry("SearchLayout",list );
1789 } 1793 }
1790#endif 1794#endif
1791 1795
1792 1796
1793 config->sync(); 1797 config->sync();
1794} 1798}
1795 1799
1796void CalendarView::readFilterSettings(KConfig *config) 1800void CalendarView::readFilterSettings(KConfig *config)
1797{ 1801{
1798 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1802 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1799 1803
1800 mFilters.clear(); 1804 mFilters.clear();
1801 1805
1802 config->setGroup("General"); 1806 config->setGroup("General");
1803 QStringList filterList = config->readListEntry("CalendarFilters"); 1807 QStringList filterList = config->readListEntry("CalendarFilters");
1804 1808
1805 QStringList::ConstIterator it = filterList.begin(); 1809 QStringList::ConstIterator it = filterList.begin();
1806 QStringList::ConstIterator end = filterList.end(); 1810 QStringList::ConstIterator end = filterList.end();
1807 while(it != end) { 1811 while(it != end) {
1808 // kdDebug() << " filter: " << (*it) << endl; 1812 // kdDebug() << " filter: " << (*it) << endl;
1809 1813
1810 CalFilter *filter; 1814 CalFilter *filter;
1811 filter = new CalFilter(*it); 1815 filter = new CalFilter(*it);
1812 config->setGroup("Filter_" + (*it)); 1816 config->setGroup("Filter_" + (*it));
1813 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1817 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1814 filter->setCriteria(config->readNumEntry("Criteria",0)); 1818 filter->setCriteria(config->readNumEntry("Criteria",0));
1815 filter->setCategoryList(config->readListEntry("CategoryList")); 1819 filter->setCategoryList(config->readListEntry("CategoryList"));
1816 mFilters.append(filter); 1820 mFilters.append(filter);
1817 1821
1818 ++it; 1822 ++it;
1819 } 1823 }
1820 1824
1821 if (mFilters.count() == 0) { 1825 if (mFilters.count() == 0) {
1822 CalFilter *filter = new CalFilter(i18n("Default")); 1826 CalFilter *filter = new CalFilter(i18n("Default"));
1823 mFilters.append(filter); 1827 mFilters.append(filter);
1824 } 1828 }
1825 mFilterView->updateFilters(); 1829 mFilterView->updateFilters();
1826 config->setGroup("FilterView"); 1830 config->setGroup("FilterView");
1827 1831
1828 mFilterView->blockSignals(true); 1832 mFilterView->blockSignals(true);
1829 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1833 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1830 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1834 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1831 mFilterView->blockSignals(false); 1835 mFilterView->blockSignals(false);
1832 // 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
1833 updateFilter(); 1837 updateFilter();
1834} 1838}
1835 1839
1836void CalendarView::writeFilterSettings(KConfig *config) 1840void CalendarView::writeFilterSettings(KConfig *config)
1837{ 1841{
1838 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1842 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1839 1843
1840 QStringList filterList; 1844 QStringList filterList;
1841 1845
1842 CalFilter *filter = mFilters.first(); 1846 CalFilter *filter = mFilters.first();
1843 while(filter) { 1847 while(filter) {
1844 // kdDebug() << " fn: " << filter->name() << endl; 1848 // kdDebug() << " fn: " << filter->name() << endl;
1845 filterList << filter->name(); 1849 filterList << filter->name();
1846 config->setGroup("Filter_" + filter->name()); 1850 config->setGroup("Filter_" + filter->name());
1847 config->writeEntry("Criteria",filter->criteria()); 1851 config->writeEntry("Criteria",filter->criteria());
1848 config->writeEntry("CategoryList",filter->categoryList()); 1852 config->writeEntry("CategoryList",filter->categoryList());
1849 filter = mFilters.next(); 1853 filter = mFilters.next();
1850 } 1854 }
1851 config->setGroup("General"); 1855 config->setGroup("General");
1852 config->writeEntry("CalendarFilters",filterList); 1856 config->writeEntry("CalendarFilters",filterList);
1853 1857
1854 config->setGroup("FilterView"); 1858 config->setGroup("FilterView");
1855 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1859 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1856 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1860 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1857} 1861}
1858 1862
1859 1863
1860void CalendarView::goToday() 1864void CalendarView::goToday()
1861{ 1865{
1862 mNavigator->selectToday(); 1866 mNavigator->selectToday();
1863} 1867}
1864 1868
1865void CalendarView::goNext() 1869void CalendarView::goNext()
1866{ 1870{
1867 mNavigator->selectNext(); 1871 mNavigator->selectNext();
1868} 1872}
1869 1873
1870void CalendarView::goPrevious() 1874void CalendarView::goPrevious()
1871{ 1875{
1872 mNavigator->selectPrevious(); 1876 mNavigator->selectPrevious();
1873} 1877}
1874void CalendarView::goNextMonth() 1878void CalendarView::goNextMonth()
1875{ 1879{
1876 mNavigator->selectNextMonth(); 1880 mNavigator->selectNextMonth();
1877} 1881}
1878 1882
1879void CalendarView::goPreviousMonth() 1883void CalendarView::goPreviousMonth()
1880{ 1884{
1881 mNavigator->selectPreviousMonth(); 1885 mNavigator->selectPreviousMonth();
1882} 1886}
1883void CalendarView::writeLocale() 1887void CalendarView::writeLocale()
1884{ 1888{
1885 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1889 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1886 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1890 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1887 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1891 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1888 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1892 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1889 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1893 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1890 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1894 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1891 dummy = KOPrefs::instance()->mUserDateFormatShort; 1895 dummy = KOPrefs::instance()->mUserDateFormatShort;
1892 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1896 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1893 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1897 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1894 KOPrefs::instance()->mDaylightsavingStart, 1898 KOPrefs::instance()->mDaylightsavingStart,
1895 KOPrefs::instance()->mDaylightsavingEnd ); 1899 KOPrefs::instance()->mDaylightsavingEnd );
1896 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 1900 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
1897} 1901}
1898void CalendarView::updateConfig() 1902void CalendarView::updateConfig()
1899{ 1903{
1900 writeLocale(); 1904 writeLocale();
1901 if ( KOPrefs::instance()->mUseAppColors ) 1905 if ( KOPrefs::instance()->mUseAppColors )
1902 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 1906 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
1903 emit configChanged(); 1907 emit configChanged();
1904 mTodoList->updateConfig(); 1908 mTodoList->updateConfig();
1905 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 1909 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
1906 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1910 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1907 // To make the "fill window" configurations work 1911 // To make the "fill window" configurations work
1908 //mViewManager->raiseCurrentView(); 1912 //mViewManager->raiseCurrentView();
1909} 1913}
1910 1914
1911 1915
1912void CalendarView::eventChanged(Event *event) 1916void CalendarView::eventChanged(Event *event)
1913{ 1917{
1914 changeEventDisplay(event,KOGlobals::EVENTEDITED); 1918 changeEventDisplay(event,KOGlobals::EVENTEDITED);
1915 //updateUnmanagedViews(); 1919 //updateUnmanagedViews();
1916} 1920}
1917 1921
1918void CalendarView::eventAdded(Event *event) 1922void CalendarView::eventAdded(Event *event)
1919{ 1923{
1920 changeEventDisplay(event,KOGlobals::EVENTADDED); 1924 changeEventDisplay(event,KOGlobals::EVENTADDED);
1921} 1925}
1922 1926
1923void CalendarView::eventToBeDeleted(Event *) 1927void CalendarView::eventToBeDeleted(Event *)
1924{ 1928{
1925 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 1929 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
1926} 1930}
1927 1931
1928void CalendarView::eventDeleted() 1932void CalendarView::eventDeleted()
1929{ 1933{
1930 changeEventDisplay(0,KOGlobals::EVENTDELETED); 1934 changeEventDisplay(0,KOGlobals::EVENTDELETED);
1931} 1935}
1932void CalendarView::changeTodoDisplay(Todo *which, int action) 1936void CalendarView::changeTodoDisplay(Todo *which, int action)
1933{ 1937{
1934 changeIncidenceDisplay((Incidence *)which, action); 1938 changeIncidenceDisplay((Incidence *)which, action);
1935 mDateNavigator->updateView(); //LR 1939 mDateNavigator->updateView(); //LR
1936 //mDialogManager->updateSearchDialog(); 1940 //mDialogManager->updateSearchDialog();
1937 1941
1938 if (which) { 1942 if (which) {
1939 mViewManager->updateWNview(); 1943 mViewManager->updateWNview();
1940 //mTodoList->updateView(); 1944 //mTodoList->updateView();
1941 } 1945 }
1942 1946
1943} 1947}
1944 1948
1945void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 1949void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
1946{ 1950{
1947 updateUnmanagedViews(); 1951 updateUnmanagedViews();
1948 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 1952 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
1949 if ( action == KOGlobals::EVENTDELETED ) { //delete 1953 if ( action == KOGlobals::EVENTDELETED ) { //delete
1950 mCalendar->checkAlarmForIncidence( 0, true ); 1954 mCalendar->checkAlarmForIncidence( 0, true );
1951 if ( mEventViewerDialog ) 1955 if ( mEventViewerDialog )
1952 mEventViewerDialog->hide(); 1956 mEventViewerDialog->hide();
1953 } 1957 }
1954 else 1958 else
1955 mCalendar->checkAlarmForIncidence( which , false ); 1959 mCalendar->checkAlarmForIncidence( which , false );
1956} 1960}
1957 1961
1958// most of the changeEventDisplays() right now just call the view's 1962// most of the changeEventDisplays() right now just call the view's
1959// 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.
1960void CalendarView::changeEventDisplay(Event *which, int action) 1964void CalendarView::changeEventDisplay(Event *which, int action)
1961{ 1965{
1962 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 1966 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
1963 changeIncidenceDisplay((Incidence *)which, action); 1967 changeIncidenceDisplay((Incidence *)which, action);
1964 mDateNavigator->updateView(); 1968 mDateNavigator->updateView();
1965 //mDialogManager->updateSearchDialog(); 1969 //mDialogManager->updateSearchDialog();
1966 1970
1967 if (which) { 1971 if (which) {
1968 // If there is an event view visible update the display 1972 // If there is an event view visible update the display
1969 mViewManager->currentView()->changeEventDisplay(which,action); 1973 mViewManager->currentView()->changeEventDisplay(which,action);
1970 // TODO: check, if update needed 1974 // TODO: check, if update needed
1971 // if (which->getTodoStatus()) { 1975 // if (which->getTodoStatus()) {
1972 mTodoList->updateView(); 1976 mTodoList->updateView();
1973 // } 1977 // }
1974 } else { 1978 } else {
1975 mViewManager->currentView()->updateView(); 1979 mViewManager->currentView()->updateView();
1976 } 1980 }
1977} 1981}
1978 1982
1979 1983
1980void CalendarView::updateTodoViews() 1984void CalendarView::updateTodoViews()
1981{ 1985{
1982 1986
1983 mTodoList->updateView(); 1987 mTodoList->updateView();
1984 mViewManager->currentView()->updateView(); 1988 mViewManager->currentView()->updateView();
1985 1989
1986} 1990}
1987 1991
1988 1992
1989void CalendarView::updateView(const QDate &start, const QDate &end) 1993void CalendarView::updateView(const QDate &start, const QDate &end)
1990{ 1994{
1991 mTodoList->updateView(); 1995 mTodoList->updateView();
1992 mViewManager->updateView(start, end); 1996 mViewManager->updateView(start, end);
1993 //mDateNavigator->updateView(); 1997 //mDateNavigator->updateView();
1994} 1998}
1995 1999
1996void CalendarView::updateView() 2000void CalendarView::updateView()
1997{ 2001{
1998 DateList tmpList = mNavigator->selectedDates(); 2002 DateList tmpList = mNavigator->selectedDates();
1999 2003
2000 // We assume that the navigator only selects consecutive days. 2004 // We assume that the navigator only selects consecutive days.
2001 updateView( tmpList.first(), tmpList.last() ); 2005 updateView( tmpList.first(), tmpList.last() );
2002} 2006}
2003 2007
2004void CalendarView::updateUnmanagedViews() 2008void CalendarView::updateUnmanagedViews()
2005{ 2009{
2006 mDateNavigator->updateDayMatrix(); 2010 mDateNavigator->updateDayMatrix();
2007} 2011}
2008 2012
2009int CalendarView::msgItemDelete() 2013int CalendarView::msgItemDelete()
2010{ 2014{
2011 return KMessageBox::warningContinueCancel(this, 2015 return KMessageBox::warningContinueCancel(this,
2012 i18n("This item will be\npermanently deleted."), 2016 i18n("This item will be\npermanently deleted."),
2013 i18n("KO/Pi Confirmation"),i18n("Delete")); 2017 i18n("KO/Pi Confirmation"),i18n("Delete"));
2014} 2018}
2015 2019
2016 2020
2017void CalendarView::edit_cut() 2021void CalendarView::edit_cut()
2018{ 2022{
2019 Event *anEvent=0; 2023 Event *anEvent=0;
2020 2024
2021 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2025 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2022 2026
2023 if (mViewManager->currentView()->isEventView()) { 2027 if (mViewManager->currentView()->isEventView()) {
2024 if ( incidence && incidence->type() == "Event" ) { 2028 if ( incidence && incidence->type() == "Event" ) {
2025 anEvent = static_cast<Event *>(incidence); 2029 anEvent = static_cast<Event *>(incidence);
2026 } 2030 }
2027 } 2031 }
2028 2032
2029 if (!anEvent) { 2033 if (!anEvent) {
2030 KNotifyClient::beep(); 2034 KNotifyClient::beep();
2031 return; 2035 return;
2032 } 2036 }
2033 DndFactory factory( mCalendar ); 2037 DndFactory factory( mCalendar );
2034 factory.cutEvent(anEvent); 2038 factory.cutEvent(anEvent);
2035 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2039 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2036} 2040}
2037 2041
2038void CalendarView::edit_copy() 2042void CalendarView::edit_copy()
2039{ 2043{
2040 Event *anEvent=0; 2044 Event *anEvent=0;
2041 2045
2042 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2046 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2043 2047
2044 if (mViewManager->currentView()->isEventView()) { 2048 if (mViewManager->currentView()->isEventView()) {
2045 if ( incidence && incidence->type() == "Event" ) { 2049 if ( incidence && incidence->type() == "Event" ) {
2046 anEvent = static_cast<Event *>(incidence); 2050 anEvent = static_cast<Event *>(incidence);
2047 } 2051 }
2048 } 2052 }
2049 2053
2050 if (!anEvent) { 2054 if (!anEvent) {
2051 KNotifyClient::beep(); 2055 KNotifyClient::beep();
2052 return; 2056 return;
2053 } 2057 }
2054 DndFactory factory( mCalendar ); 2058 DndFactory factory( mCalendar );
2055 factory.copyEvent(anEvent); 2059 factory.copyEvent(anEvent);
2056} 2060}
2057 2061
2058void CalendarView::edit_paste() 2062void CalendarView::edit_paste()
2059{ 2063{
2060 QDate date = mNavigator->selectedDates().first(); 2064 QDate date = mNavigator->selectedDates().first();
2061 2065
2062 DndFactory factory( mCalendar ); 2066 DndFactory factory( mCalendar );
2063 Event *pastedEvent = factory.pasteEvent( date ); 2067 Event *pastedEvent = factory.pasteEvent( date );
2064 2068
2065 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2069 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2066} 2070}
2067 2071
2068void CalendarView::edit_options() 2072void CalendarView::edit_options()
2069{ 2073{
2070 mDialogManager->showOptionsDialog(); 2074 mDialogManager->showOptionsDialog();
2071 //writeSettings(); 2075 //writeSettings();
2072} 2076}
2073void CalendarView::edit_sync_options() 2077void CalendarView::edit_sync_options()
2074{ 2078{
2075 //mDialogManager->showSyncOptions(); 2079 //mDialogManager->showSyncOptions();
2076 //KOPrefs::instance()->mSyncAlgoPrefs 2080 //KOPrefs::instance()->mSyncAlgoPrefs
2077 QDialog dia( this, "dia", true ); 2081 QDialog dia( this, "dia", true );
2078 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 2082 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
2079 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 2083 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
2080 QVBoxLayout lay ( &dia ); 2084 QVBoxLayout lay ( &dia );
2081 lay.setSpacing( 2 ); 2085 lay.setSpacing( 2 );
2082 lay.setMargin( 3 ); 2086 lay.setMargin( 3 );
2083 lay.addWidget(&gr); 2087 lay.addWidget(&gr);
2084 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 2088 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
2085 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 2089 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
2086 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 2090 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
2087 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 2091 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
2088 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 2092 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
2089 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 2093 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
2090 //QRadioButton both( i18n("Take both on conflict"), &gr ); 2094 //QRadioButton both( i18n("Take both on conflict"), &gr );
2091 QPushButton pb ( "OK", &dia); 2095 QPushButton pb ( "OK", &dia);
2092 lay.addWidget( &pb ); 2096 lay.addWidget( &pb );
2093 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2097 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2094 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) { 2098 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) {
2095 case 0: 2099 case 0:
2096 loc.setChecked( true); 2100 loc.setChecked( true);
2097 break; 2101 break;
2098 case 1: 2102 case 1:
2099 rem.setChecked( true ); 2103 rem.setChecked( true );
2100 break; 2104 break;
2101 case 2: 2105 case 2:
2102 newest.setChecked( true); 2106 newest.setChecked( true);
2103 break; 2107 break;
2104 case 3: 2108 case 3:
2105 ask.setChecked( true); 2109 ask.setChecked( true);
2106 break; 2110 break;
2107 case 4: 2111 case 4:
2108 f_loc.setChecked( true); 2112 f_loc.setChecked( true);
2109 break; 2113 break;
2110 case 5: 2114 case 5:
2111 f_rem.setChecked( true); 2115 f_rem.setChecked( true);
2112 break; 2116 break;
2113 case 6: 2117 case 6:
2114 // both.setChecked( true); 2118 // both.setChecked( true);
2115 break; 2119 break;
2116 default: 2120 default:
2117 break; 2121 break;
2118 } 2122 }
2119 if ( dia.exec() ) { 2123 if ( dia.exec() ) {
2120 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 ;
2121 } 2125 }
2122 2126
2123} 2127}
2124 2128
2125void CalendarView::slotSelectPickerDate( QDate d) 2129void CalendarView::slotSelectPickerDate( QDate d)
2126{ 2130{
2127 mDateFrame->hide(); 2131 mDateFrame->hide();
2128 if ( mDatePickerMode == 1 ) { 2132 if ( mDatePickerMode == 1 ) {
2129 mNavigator->slotDaySelect( d ); 2133 mNavigator->slotDaySelect( d );
2130 } else if ( mDatePickerMode == 2 ) { 2134 } else if ( mDatePickerMode == 2 ) {
2131 if ( mMoveIncidence->type() == "Todo" ) { 2135 if ( mMoveIncidence->type() == "Todo" ) {
2132 Todo * to = (Todo *) mMoveIncidence; 2136 Todo * to = (Todo *) mMoveIncidence;
2133 QTime tim; 2137 QTime tim;
2134 if ( to->hasDueDate() ) 2138 if ( to->hasDueDate() )
2135 tim = to->dtDue().time(); 2139 tim = to->dtDue().time();
2136 else { 2140 else {
2137 tim = QTime ( 0,0,0 ); 2141 tim = QTime ( 0,0,0 );
2138 to->setFloats( true ); 2142 to->setFloats( true );
2139 to->setHasDueDate( true ); 2143 to->setHasDueDate( true );
2140 } 2144 }
2141 QDateTime dt ( d,tim ); 2145 QDateTime dt ( d,tim );
2142 to->setDtDue( dt ); 2146 to->setDtDue( dt );
2143 todoChanged( to ); 2147 todoChanged( to );
2144 } else { 2148 } else {
2145 QTime tim = mMoveIncidence->dtStart().time(); 2149 QTime tim = mMoveIncidence->dtStart().time();
2146 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2150 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2147 QDateTime dt ( d,tim ); 2151 QDateTime dt ( d,tim );
2148 mMoveIncidence->setDtStart( dt ); 2152 mMoveIncidence->setDtStart( dt );
2149 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2153 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2150 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2154 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2151 } 2155 }
2152 2156
2153 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2157 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2154 } 2158 }
2155} 2159}
2156 2160
2157void CalendarView::removeCategories() 2161void CalendarView::removeCategories()
2158{ 2162{
2159 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2163 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2160 QStringList catList = KOPrefs::instance()->mCustomCategories; 2164 QStringList catList = KOPrefs::instance()->mCustomCategories;
2161 QStringList catIncList; 2165 QStringList catIncList;
2162 QStringList newCatList; 2166 QStringList newCatList;
2163 Incidence* inc = incList.first(); 2167 Incidence* inc = incList.first();
2164 int i; 2168 int i;
2165 int count = 0; 2169 int count = 0;
2166 while ( inc ) { 2170 while ( inc ) {
2167 newCatList.clear(); 2171 newCatList.clear();
2168 catIncList = inc->categories() ; 2172 catIncList = inc->categories() ;
2169 for( i = 0; i< catIncList.count(); ++i ) { 2173 for( i = 0; i< catIncList.count(); ++i ) {
2170 if ( catList.contains (catIncList[i])) 2174 if ( catList.contains (catIncList[i]))
2171 newCatList.append( catIncList[i] ); 2175 newCatList.append( catIncList[i] );
2172 } 2176 }
2173 newCatList.sort(); 2177 newCatList.sort();
2174 inc->setCategories( newCatList.join(",") ); 2178 inc->setCategories( newCatList.join(",") );
2175 inc = incList.next(); 2179 inc = incList.next();
2176 } 2180 }
2177} 2181}
2178 2182
2179int CalendarView::addCategories() 2183int CalendarView::addCategories()
2180{ 2184{
2181 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2185 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2182 QStringList catList = KOPrefs::instance()->mCustomCategories; 2186 QStringList catList = KOPrefs::instance()->mCustomCategories;
2183 QStringList catIncList; 2187 QStringList catIncList;
2184 Incidence* inc = incList.first(); 2188 Incidence* inc = incList.first();
2185 int i; 2189 int i;
2186 int count = 0; 2190 int count = 0;
2187 while ( inc ) { 2191 while ( inc ) {
2188 catIncList = inc->categories() ; 2192 catIncList = inc->categories() ;
2189 for( i = 0; i< catIncList.count(); ++i ) { 2193 for( i = 0; i< catIncList.count(); ++i ) {
2190 if ( !catList.contains (catIncList[i])) { 2194 if ( !catList.contains (catIncList[i])) {
2191 catList.append( catIncList[i] ); 2195 catList.append( catIncList[i] );
2192 //qDebug("add cat %s ", catIncList[i].latin1()); 2196 //qDebug("add cat %s ", catIncList[i].latin1());
2193 ++count; 2197 ++count;
2194 } 2198 }
2195 } 2199 }
2196 inc = incList.next(); 2200 inc = incList.next();
2197 } 2201 }
2198 catList.sort(); 2202 catList.sort();
2199 KOPrefs::instance()->mCustomCategories = catList; 2203 KOPrefs::instance()->mCustomCategories = catList;
2200 return count; 2204 return count;
2201} 2205}
2202 2206
2203void CalendarView::manageCategories() 2207void CalendarView::manageCategories()
2204{ 2208{
2205 KOCatPrefs* cp = new KOCatPrefs(); 2209 KOCatPrefs* cp = new KOCatPrefs();
2206 cp->show(); 2210 cp->show();
2207 int w =cp->sizeHint().width() ; 2211 int w =cp->sizeHint().width() ;
2208 int h = cp->sizeHint().height() ; 2212 int h = cp->sizeHint().height() ;
2209 int dw = QApplication::desktop()->width(); 2213 int dw = QApplication::desktop()->width();
2210 int dh = QApplication::desktop()->height(); 2214 int dh = QApplication::desktop()->height();
2211 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2215 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2212 if ( !cp->exec() ) { 2216 if ( !cp->exec() ) {
2213 delete cp; 2217 delete cp;
2214 return; 2218 return;
2215 } 2219 }
2216 int count = 0; 2220 int count = 0;
2217 if ( cp->addCat() ) { 2221 if ( cp->addCat() ) {
2218 count = addCategories(); 2222 count = addCategories();
2219 if ( count ) { 2223 if ( count ) {
2220 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2224 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2221 writeSettings(); 2225 writeSettings();
2222 } 2226 }
2223 } else { 2227 } else {
2224 removeCategories(); 2228 removeCategories();
2225 updateView(); 2229 updateView();
2226 } 2230 }
2227 delete cp; 2231 delete cp;
2228} 2232}
2229 2233
2230void CalendarView::beamIncidence(Incidence * Inc) 2234void CalendarView::beamIncidence(Incidence * Inc)
2231{ 2235{
2232 QPtrList<Incidence> delSel ; 2236 QPtrList<Incidence> delSel ;
2233 delSel.append(Inc); 2237 delSel.append(Inc);
2234 beamIncidenceList( delSel ); 2238 beamIncidenceList( delSel );
2235} 2239}
2236void CalendarView::beamCalendar() 2240void CalendarView::beamCalendar()
2237{ 2241{
2238 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2242 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2239 //qDebug("beamCalendar() "); 2243 //qDebug("beamCalendar() ");
2240 beamIncidenceList( delSel ); 2244 beamIncidenceList( delSel );
2241} 2245}
2242void CalendarView::beamFilteredCalendar() 2246void CalendarView::beamFilteredCalendar()
2243{ 2247{
2244 QPtrList<Incidence> delSel = mCalendar->incidences(); 2248 QPtrList<Incidence> delSel = mCalendar->incidences();
2245 //qDebug("beamFilteredCalendar() "); 2249 //qDebug("beamFilteredCalendar() ");
2246 beamIncidenceList( delSel ); 2250 beamIncidenceList( delSel );
2247} 2251}
2248void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2252void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2249{ 2253{
2250 if ( beamDialog->exec () == QDialog::Rejected ) 2254 if ( beamDialog->exec () == QDialog::Rejected )
2251 return; 2255 return;
2252 2256
2253 QString fn = "/tmp/kopibeamfile"; 2257 QString fn = "/tmp/kopibeamfile";
2254 QString mes; 2258 QString mes;
2255 bool createbup = true; 2259 bool createbup = true;
2256 if ( createbup ) { 2260 if ( createbup ) {
2257 QString description = "\n"; 2261 QString description = "\n";
2258 CalendarLocal* cal = new CalendarLocal(); 2262 CalendarLocal* cal = new CalendarLocal();
2259 if ( beamDialog->beamLocal() ) 2263 if ( beamDialog->beamLocal() )
2260 cal->setLocalTime(); 2264 cal->setLocalTime();
2261 else 2265 else
2262 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2266 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2263 Incidence *incidence = delSel.first(); 2267 Incidence *incidence = delSel.first();
2264 bool addText = false; 2268 bool addText = false;
2265 if ( delSel.count() < 10 ) 2269 if ( delSel.count() < 10 )
2266 addText = true; 2270 addText = true;
2267 else { 2271 else {
2268 description.sprintf(i18n(" %d items?"),delSel.count() ); 2272 description.sprintf(i18n(" %d items?"),delSel.count() );
2269 } 2273 }
2270 while ( incidence ) { 2274 while ( incidence ) {
2271 Incidence *in = incidence->clone(); 2275 Incidence *in = incidence->clone();
2272 if ( addText ) 2276 if ( addText )
2273 description += in->summary() + "\n"; 2277 description += in->summary() + "\n";
2274 cal->addIncidence( in ); 2278 cal->addIncidence( in );
2275 incidence = delSel.next(); 2279 incidence = delSel.next();
2276 } 2280 }
2277 if ( beamDialog->beamVcal() ) { 2281 if ( beamDialog->beamVcal() ) {
2278 fn += ".vcs"; 2282 fn += ".vcs";
2279 FileStorage storage( cal, fn, new VCalFormat ); 2283 FileStorage storage( cal, fn, new VCalFormat );
2280 storage.save(); 2284 storage.save();
2281 } else { 2285 } else {
2282 fn += ".ics"; 2286 fn += ".ics";
2283 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2287 FileStorage storage( cal, fn, new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2284 storage.save(); 2288 storage.save();
2285 } 2289 }
2286 delete cal; 2290 delete cal;
2287 mes = i18n("KO/Pi: Ready for beaming"); 2291 mes = i18n("KO/Pi: Ready for beaming");
2288 setCaption(mes); 2292 setCaption(mes);
2289 2293
2290#ifndef DESKTOP_VERSION 2294#ifndef DESKTOP_VERSION
2291 Ir *ir = new Ir( this ); 2295 Ir *ir = new Ir( this );
2292 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2296 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2293 ir->send( fn, description, "text/x-vCalendar" ); 2297 ir->send( fn, description, "text/x-vCalendar" );
2294#endif 2298#endif
2295 } 2299 }
2296} 2300}
2297void CalendarView::beamDone( Ir *ir ) 2301void CalendarView::beamDone( Ir *ir )
2298{ 2302{
2299#ifndef DESKTOP_VERSION 2303#ifndef DESKTOP_VERSION
2300 delete ir; 2304 delete ir;
2301#endif 2305#endif
2302} 2306}
2303 2307
2304void CalendarView::moveIncidence(Incidence * inc ) 2308void CalendarView::moveIncidence(Incidence * inc )
2305{ 2309{
2306 if ( !inc ) return; 2310 if ( !inc ) return;
2307 // qDebug("showDatePickerForIncidence( ) "); 2311 // qDebug("showDatePickerForIncidence( ) ");
2308 if ( mDateFrame->isVisible() ) 2312 if ( mDateFrame->isVisible() )
2309 mDateFrame->hide(); 2313 mDateFrame->hide();
2310 else { 2314 else {
2311 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ; 2315 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ;
2312 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ; 2316 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ;
2313 int dw = QApplication::desktop()->width(); 2317 int dw = QApplication::desktop()->width();
2314 int dh = QApplication::desktop()->height(); 2318 int dh = QApplication::desktop()->height();
2315 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2319 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2316 mDateFrame->show(); 2320 mDateFrame->show();
2317 } 2321 }
2318 mDatePickerMode = 2; 2322 mDatePickerMode = 2;
2319 mMoveIncidence = inc ; 2323 mMoveIncidence = inc ;
2320 QDate da; 2324 QDate da;
2321 if ( mMoveIncidence->type() == "Todo" ) { 2325 if ( mMoveIncidence->type() == "Todo" ) {
2322 Todo * to = (Todo *) mMoveIncidence; 2326 Todo * to = (Todo *) mMoveIncidence;
2323 if ( to->hasDueDate() ) 2327 if ( to->hasDueDate() )
2324 da = to->dtDue().date(); 2328 da = to->dtDue().date();
2325 else 2329 else
2326 da = QDate::currentDate(); 2330 da = QDate::currentDate();
2327 } else { 2331 } else {
2328 da = mMoveIncidence->dtStart().date(); 2332 da = mMoveIncidence->dtStart().date();
2329 } 2333 }
2330 mDatePicker->setDate( da ); 2334 mDatePicker->setDate( da );
2331} 2335}
2332void CalendarView::showDatePicker( ) 2336void CalendarView::showDatePicker( )
2333{ 2337{
2334 //qDebug("CalendarView::showDatePicker( ) "); 2338 //qDebug("CalendarView::showDatePicker( ) ");
2335 if ( mDateFrame->isVisible() ) 2339 if ( mDateFrame->isVisible() )
2336 mDateFrame->hide(); 2340 mDateFrame->hide();
2337 else { 2341 else {
2338 int w =mDatePicker->sizeHint().width() ; 2342 int w =mDatePicker->sizeHint().width() ;
2339 int h = mDatePicker->sizeHint().height() ; 2343 int h = mDatePicker->sizeHint().height() ;
2340 int dw = QApplication::desktop()->width(); 2344 int dw = QApplication::desktop()->width();
2341 int dh = QApplication::desktop()->height(); 2345 int dh = QApplication::desktop()->height();
2342 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2346 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2343 mDateFrame->show(); 2347 mDateFrame->show();
2344 } 2348 }
2345 mDatePickerMode = 1; 2349 mDatePickerMode = 1;
2346 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2350 mDatePicker->setDate( mNavigator->selectedDates().first() );
2347} 2351}
2348 2352
2349void CalendarView::showEventEditor() 2353void CalendarView::showEventEditor()
2350{ 2354{
2351#ifdef DESKTOP_VERSION 2355#ifdef DESKTOP_VERSION
2352 mEventEditor->show(); 2356 mEventEditor->show();
2353#else 2357#else
2354 mEventEditor->showMaximized(); 2358 mEventEditor->showMaximized();
2355#endif 2359#endif
2356} 2360}
2357void CalendarView::showTodoEditor() 2361void CalendarView::showTodoEditor()
2358{ 2362{
2359#ifdef DESKTOP_VERSION 2363#ifdef DESKTOP_VERSION
2360 mTodoEditor->show(); 2364 mTodoEditor->show();
2361#else 2365#else
2362 mTodoEditor->showMaximized(); 2366 mTodoEditor->showMaximized();
2363#endif 2367#endif
2364} 2368}
2365void CalendarView::cancelIncidence(Incidence * inc ) 2369void CalendarView::cancelIncidence(Incidence * inc )
2366{ 2370{
2367 inc->setCancelled( ! inc->cancelled() ); 2371 inc->setCancelled( ! inc->cancelled() );
2368 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2372 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2369 updateView(); 2373 updateView();
2370} 2374}
2371void CalendarView::cloneIncidence(Incidence * orgInc ) 2375void CalendarView::cloneIncidence(Incidence * orgInc )
2372{ 2376{
2373 Incidence * newInc = orgInc->clone(); 2377 Incidence * newInc = orgInc->clone();
2374 newInc->recreate(); 2378 newInc->recreate();
2375 2379
2376 if ( newInc->type() == "Todo" ) { 2380 if ( newInc->type() == "Todo" ) {
2377 Todo* t = (Todo*) newInc; 2381 Todo* t = (Todo*) newInc;
2378 mTodoEditor->editTodo( t ); 2382 mTodoEditor->editTodo( t );
2379 showTodoEditor(); 2383 showTodoEditor();
2380 if ( mTodoEditor->exec() ) { 2384 if ( mTodoEditor->exec() ) {
2381 mCalendar->addTodo( t ); 2385 mCalendar->addTodo( t );
2382 updateView(); 2386 updateView();
2383 } else { 2387 } else {
2384 delete t; 2388 delete t;
2385 } 2389 }
2386 } 2390 }
2387 else { 2391 else {
2388 Event* e = (Event*) newInc; 2392 Event* e = (Event*) newInc;
2389 mEventEditor->editEvent( e ); 2393 mEventEditor->editEvent( e );
2390 showEventEditor(); 2394 showEventEditor();
2391 if ( mEventEditor->exec() ) { 2395 if ( mEventEditor->exec() ) {
2392 mCalendar->addEvent( e ); 2396 mCalendar->addEvent( e );
2393 updateView(); 2397 updateView();
2394 } else { 2398 } else {
2395 delete e; 2399 delete e;
2396 } 2400 }
2397 } 2401 }
2398} 2402}
2399 2403
2400void CalendarView::newEvent() 2404void CalendarView::newEvent()
2401{ 2405{
2402 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2406 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2403 KOAgendaView *aView = mViewManager->agendaView(); 2407 KOAgendaView *aView = mViewManager->agendaView();
2404 if (aView) { 2408 if (aView) {
2405 if (aView->selectionStart().isValid()) { 2409 if (aView->selectionStart().isValid()) {
2406 if (aView->selectedIsAllDay()) { 2410 if (aView->selectedIsAllDay()) {
2407 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2411 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2408 } else { 2412 } else {
2409 newEvent(aView->selectionStart(),aView->selectionEnd()); 2413 newEvent(aView->selectionStart(),aView->selectionEnd());
2410 } 2414 }
2411 return; 2415 return;
2412 } 2416 }
2413 } 2417 }
2414 2418
2415 QDate date = mNavigator->selectedDates().first(); 2419 QDate date = mNavigator->selectedDates().first();
2416 QDateTime current = QDateTime::currentDateTime(); 2420 QDateTime current = QDateTime::currentDateTime();
2417 if ( date <= current.date() ) { 2421 if ( date <= current.date() ) {
2418 int hour = current.time().hour() +1; 2422 int hour = current.time().hour() +1;
2419 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2423 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2420 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2424 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2421 } else 2425 } else
2422 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2426 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2423 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2427 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2424 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2428 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2425} 2429}
2426 2430
2427void CalendarView::newEvent(QDateTime fh) 2431void CalendarView::newEvent(QDateTime fh)
2428{ 2432{
2429 newEvent(fh, 2433 newEvent(fh,
2430 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2434 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2431} 2435}
2432 2436
2433void CalendarView::newEvent(QDate dt) 2437void CalendarView::newEvent(QDate dt)
2434{ 2438{
2435 newEvent(QDateTime(dt, QTime(0,0,0)), 2439 newEvent(QDateTime(dt, QTime(0,0,0)),
2436 QDateTime(dt, QTime(0,0,0)), true); 2440 QDateTime(dt, QTime(0,0,0)), true);
2437} 2441}
2438 2442
2439void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2443void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2440{ 2444{
2441 2445
2442 mEventEditor->newEvent(fromHint,toHint,allDay); 2446 mEventEditor->newEvent(fromHint,toHint,allDay);
2443 if ( mFilterView->filtersEnabled() ) { 2447 if ( mFilterView->filtersEnabled() ) {
2444 CalFilter *filter = mFilterView->selectedFilter(); 2448 CalFilter *filter = mFilterView->selectedFilter();
2445 if (filter && filter->showCategories()) { 2449 if (filter && filter->showCategories()) {
2446 mEventEditor->setCategories(filter->categoryList().join(",") ); 2450 mEventEditor->setCategories(filter->categoryList().join(",") );
2447 } 2451 }
2448 if ( filter ) 2452 if ( filter )
2449 mEventEditor->setSecrecy( filter->getSecrecy() ); 2453 mEventEditor->setSecrecy( filter->getSecrecy() );
2450 } 2454 }
2451 showEventEditor(); 2455 showEventEditor();
2452} 2456}
2453void CalendarView::todoAdded(Todo * t) 2457void CalendarView::todoAdded(Todo * t)
2454{ 2458{
2455 2459
2456 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2460 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2457 updateTodoViews(); 2461 updateTodoViews();
2458} 2462}
2459void CalendarView::todoChanged(Todo * t) 2463void CalendarView::todoChanged(Todo * t)
2460{ 2464{
2461 emit todoModified( t, 4 ); 2465 emit todoModified( t, 4 );
2462 // updateTodoViews(); 2466 // updateTodoViews();
2463} 2467}
2464void CalendarView::todoToBeDeleted(Todo *) 2468void CalendarView::todoToBeDeleted(Todo *)
2465{ 2469{
2466 //qDebug("todoToBeDeleted(Todo *) "); 2470 //qDebug("todoToBeDeleted(Todo *) ");
2467 updateTodoViews(); 2471 updateTodoViews();
2468} 2472}
2469void CalendarView::todoDeleted() 2473void CalendarView::todoDeleted()
2470{ 2474{
2471 //qDebug(" todoDeleted()"); 2475 //qDebug(" todoDeleted()");
2472 updateTodoViews(); 2476 updateTodoViews();
2473} 2477}
2474 2478
2475 2479
2476 2480
2477void CalendarView::newTodo() 2481void CalendarView::newTodo()
2478{ 2482{
2479 2483
2480 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true); 2484 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true);
2481 if ( mFilterView->filtersEnabled() ) { 2485 if ( mFilterView->filtersEnabled() ) {
2482 CalFilter *filter = mFilterView->selectedFilter(); 2486 CalFilter *filter = mFilterView->selectedFilter();
2483 if (filter && filter->showCategories()) { 2487 if (filter && filter->showCategories()) {
2484 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2488 mTodoEditor->setCategories(filter->categoryList().join(",") );
2485 } 2489 }
2486 if ( filter ) 2490 if ( filter )
2487 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2491 mTodoEditor->setSecrecy( filter->getSecrecy() );
2488 } 2492 }
2489 showTodoEditor(); 2493 showTodoEditor();
2490} 2494}
2491 2495
2492void CalendarView::newSubTodo() 2496void CalendarView::newSubTodo()
2493{ 2497{
2494 Todo *todo = selectedTodo(); 2498 Todo *todo = selectedTodo();
2495 if ( todo ) newSubTodo( todo ); 2499 if ( todo ) newSubTodo( todo );
2496} 2500}
2497 2501
2498void CalendarView::newSubTodo(Todo *parentEvent) 2502void CalendarView::newSubTodo(Todo *parentEvent)
2499{ 2503{
2500 2504
2501 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true); 2505 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true);
2502 showTodoEditor(); 2506 showTodoEditor();
2503} 2507}
2504 2508
2505void CalendarView::newFloatingEvent() 2509void CalendarView::newFloatingEvent()
2506{ 2510{
2507 DateList tmpList = mNavigator->selectedDates(); 2511 DateList tmpList = mNavigator->selectedDates();
2508 QDate date = tmpList.first(); 2512 QDate date = tmpList.first();
2509 2513
2510 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2514 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2511 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2515 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2512} 2516}
2513 2517
2514 2518
2515void CalendarView::editEvent( Event *event ) 2519void CalendarView::editEvent( Event *event )
2516{ 2520{
2517 2521
2518 if ( !event ) return; 2522 if ( !event ) return;
2519 if ( event->isReadOnly() ) { 2523 if ( event->isReadOnly() ) {
2520 showEvent( event ); 2524 showEvent( event );
2521 return; 2525 return;
2522 } 2526 }
2523 mEventEditor->editEvent( event , mFlagEditDescription); 2527 mEventEditor->editEvent( event , mFlagEditDescription);
2524 showEventEditor(); 2528 showEventEditor();
2525} 2529}
2526void CalendarView::editJournal( Journal *jour ) 2530void CalendarView::editJournal( Journal *jour )
2527{ 2531{
2528 if ( !jour ) return; 2532 if ( !jour ) return;
2529 mDialogManager->hideSearchDialog(); 2533 mDialogManager->hideSearchDialog();
2530 mViewManager->showJournalView(); 2534 mViewManager->showJournalView();
2531 mNavigator->slotDaySelect( jour->dtStart().date() ); 2535 mNavigator->slotDaySelect( jour->dtStart().date() );
2532} 2536}
2533void CalendarView::editTodo( Todo *todo ) 2537void CalendarView::editTodo( Todo *todo )
2534{ 2538{
2535 if ( !todo ) return; 2539 if ( !todo ) return;
2536 2540
2537 if ( todo->isReadOnly() ) { 2541 if ( todo->isReadOnly() ) {
2538 showTodo( todo ); 2542 showTodo( todo );
2539 return; 2543 return;
2540 } 2544 }
2541 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2545 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2542 showTodoEditor(); 2546 showTodoEditor();
2543 2547
2544} 2548}
2545 2549
2546KOEventViewerDialog* CalendarView::getEventViewerDialog() 2550KOEventViewerDialog* CalendarView::getEventViewerDialog()
2547{ 2551{
2548 if ( !mEventViewerDialog ) { 2552 if ( !mEventViewerDialog ) {
2549 mEventViewerDialog = new KOEventViewerDialog(this); 2553 mEventViewerDialog = new KOEventViewerDialog(this);
2550 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2554 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2551 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2555 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2552 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2556 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2553 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2557 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2554 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2558 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2555 viewManager(), SLOT( showAgendaView( bool ) ) ); 2559 viewManager(), SLOT( showAgendaView( bool ) ) );
2556 mEventViewerDialog->resize( 640, 480 ); 2560 mEventViewerDialog->resize( 640, 480 );
2557 2561
2558 } 2562 }
2559 return mEventViewerDialog; 2563 return mEventViewerDialog;
2560} 2564}
2561void CalendarView::showEvent(Event *event) 2565void CalendarView::showEvent(Event *event)
2562{ 2566{
2563 getEventViewerDialog()->setEvent(event); 2567 getEventViewerDialog()->setEvent(event);
2564 getEventViewerDialog()->showMe(); 2568 getEventViewerDialog()->showMe();
2565} 2569}
2566 2570
2567void CalendarView::showTodo(Todo *event) 2571void CalendarView::showTodo(Todo *event)
2568{ 2572{
2569 getEventViewerDialog()->setTodo(event); 2573 getEventViewerDialog()->setTodo(event);
2570 getEventViewerDialog()->showMe(); 2574 getEventViewerDialog()->showMe();
2571} 2575}
2572void CalendarView::showJournal( Journal *jour ) 2576void CalendarView::showJournal( Journal *jour )
2573{ 2577{
2574 getEventViewerDialog()->setJournal(jour); 2578 getEventViewerDialog()->setJournal(jour);
2575 getEventViewerDialog()->showMe(); 2579 getEventViewerDialog()->showMe();
2576 2580
2577} 2581}
2578// void CalendarView::todoModified (Todo *event, int changed) 2582// void CalendarView::todoModified (Todo *event, int changed)
2579// { 2583// {
2580// // if (mDialogList.find (event) != mDialogList.end ()) { 2584// // if (mDialogList.find (event) != mDialogList.end ()) {
2581// // kdDebug() << "Todo modified and open" << endl; 2585// // kdDebug() << "Todo modified and open" << endl;
2582// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2586// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2583// // temp->modified (changed); 2587// // temp->modified (changed);
2584 2588
2585// // } 2589// // }
2586 2590
2587// mViewManager->updateView(); 2591// mViewManager->updateView();
2588// } 2592// }
2589 2593
2590void CalendarView::appointment_show() 2594void CalendarView::appointment_show()
2591{ 2595{
2592 Event *anEvent = 0; 2596 Event *anEvent = 0;
2593 2597
2594 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2598 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2595 2599
2596 if (mViewManager->currentView()->isEventView()) { 2600 if (mViewManager->currentView()->isEventView()) {
2597 if ( incidence && incidence->type() == "Event" ) { 2601 if ( incidence && incidence->type() == "Event" ) {
2598 anEvent = static_cast<Event *>(incidence); 2602 anEvent = static_cast<Event *>(incidence);
2599 } 2603 }
2600 } 2604 }
2601 2605
2602 if (!anEvent) { 2606 if (!anEvent) {
2603 KNotifyClient::beep(); 2607 KNotifyClient::beep();
2604 return; 2608 return;
2605 } 2609 }
2606 2610
2607 showEvent(anEvent); 2611 showEvent(anEvent);
2608} 2612}
2609 2613
2610void CalendarView::appointment_edit() 2614void CalendarView::appointment_edit()
2611{ 2615{
2612 Event *anEvent = 0; 2616 Event *anEvent = 0;
2613 2617
2614 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2618 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2615 2619
2616 if (mViewManager->currentView()->isEventView()) { 2620 if (mViewManager->currentView()->isEventView()) {
2617 if ( incidence && incidence->type() == "Event" ) { 2621 if ( incidence && incidence->type() == "Event" ) {
2618 anEvent = static_cast<Event *>(incidence); 2622 anEvent = static_cast<Event *>(incidence);
2619 } 2623 }
2620 } 2624 }
2621 2625
2622 if (!anEvent) { 2626 if (!anEvent) {
2623 KNotifyClient::beep(); 2627 KNotifyClient::beep();
2624 return; 2628 return;
2625 } 2629 }
2626 2630
2627 editEvent(anEvent); 2631 editEvent(anEvent);
2628} 2632}
2629 2633
2630void CalendarView::appointment_delete() 2634void CalendarView::appointment_delete()
2631{ 2635{
2632 Event *anEvent = 0; 2636 Event *anEvent = 0;
2633 2637
2634 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2638 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2635 2639
2636 if (mViewManager->currentView()->isEventView()) { 2640 if (mViewManager->currentView()->isEventView()) {
2637 if ( incidence && incidence->type() == "Event" ) { 2641 if ( incidence && incidence->type() == "Event" ) {
2638 anEvent = static_cast<Event *>(incidence); 2642 anEvent = static_cast<Event *>(incidence);
2639 } 2643 }
2640 } 2644 }
2641 2645
2642 if (!anEvent) { 2646 if (!anEvent) {
2643 KNotifyClient::beep(); 2647 KNotifyClient::beep();
2644 return; 2648 return;
2645 } 2649 }
2646 2650
2647 deleteEvent(anEvent); 2651 deleteEvent(anEvent);
2648} 2652}
2649 2653
2650void CalendarView::todo_unsub(Todo *anTodo ) 2654void CalendarView::todo_unsub(Todo *anTodo )
2651{ 2655{
2652 // Todo *anTodo = selectedTodo(); 2656 // Todo *anTodo = selectedTodo();
2653 if (!anTodo) return; 2657 if (!anTodo) return;
2654 if (!anTodo->relatedTo()) return; 2658 if (!anTodo->relatedTo()) return;
2655 anTodo->relatedTo()->removeRelation(anTodo); 2659 anTodo->relatedTo()->removeRelation(anTodo);
2656 anTodo->setRelatedTo(0); 2660 anTodo->setRelatedTo(0);
2657 anTodo->updated(); 2661 anTodo->updated();
2658 anTodo->setRelatedToUid(""); 2662 anTodo->setRelatedToUid("");
2659 setModified(true); 2663 setModified(true);
2660 updateView(); 2664 updateView();
2661} 2665}
2662 2666
2663void CalendarView::deleteTodo(Todo *todo) 2667void CalendarView::deleteTodo(Todo *todo)
2664{ 2668{
2665 if (!todo) { 2669 if (!todo) {
2666 KNotifyClient::beep(); 2670 KNotifyClient::beep();
2667 return; 2671 return;
2668 } 2672 }
2669 if (KOPrefs::instance()->mConfirm) { 2673 if (KOPrefs::instance()->mConfirm) {
2670 switch (msgItemDelete()) { 2674 switch (msgItemDelete()) {
2671 case KMessageBox::Continue: // OK 2675 case KMessageBox::Continue: // OK
2672 if (!todo->relations().isEmpty()) { 2676 if (!todo->relations().isEmpty()) {
2673 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2677 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2674 i18n("Delete To-Do")); 2678 i18n("Delete To-Do"));
2675 } else { 2679 } else {
2676 checkExternalId( todo ); 2680 checkExternalId( todo );
2677 calendar()->deleteTodo(todo); 2681 calendar()->deleteTodo(todo);
2678 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2682 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2679 updateView(); 2683 updateView();
2680 } 2684 }
2681 break; 2685 break;
2682 } // switch 2686 } // switch
2683 } else { 2687 } else {
2684 if (!todo->relations().isEmpty()) { 2688 if (!todo->relations().isEmpty()) {
2685 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2689 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2686 i18n("Delete To-Do")); 2690 i18n("Delete To-Do"));
2687 } else { 2691 } else {
2688 checkExternalId( todo ); 2692 checkExternalId( todo );
2689 mCalendar->deleteTodo(todo); 2693 mCalendar->deleteTodo(todo);
2690 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2694 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2691 updateView(); 2695 updateView();
2692 } 2696 }
2693 } 2697 }
2694 emit updateSearchDialog(); 2698 emit updateSearchDialog();
2695} 2699}
2696void CalendarView::deleteJournal(Journal *jour) 2700void CalendarView::deleteJournal(Journal *jour)
2697{ 2701{
2698 if (!jour) { 2702 if (!jour) {
2699 KNotifyClient::beep(); 2703 KNotifyClient::beep();
2700 return; 2704 return;
2701 } 2705 }
2702 if (KOPrefs::instance()->mConfirm) { 2706 if (KOPrefs::instance()->mConfirm) {
2703 switch (msgItemDelete()) { 2707 switch (msgItemDelete()) {
2704 case KMessageBox::Continue: // OK 2708 case KMessageBox::Continue: // OK
2705 calendar()->deleteJournal(jour); 2709 calendar()->deleteJournal(jour);
2706 updateView(); 2710 updateView();
2707 break; 2711 break;
2708 } // switch 2712 } // switch
2709 } else { 2713 } else {
2710 calendar()->deleteJournal(jour);; 2714 calendar()->deleteJournal(jour);;
2711 updateView(); 2715 updateView();
2712 } 2716 }
2713 emit updateSearchDialog(); 2717 emit updateSearchDialog();
2714} 2718}
2715 2719
2716void CalendarView::deleteEvent(Event *anEvent) 2720void CalendarView::deleteEvent(Event *anEvent)
2717{ 2721{
2718 if (!anEvent) { 2722 if (!anEvent) {
2719 KNotifyClient::beep(); 2723 KNotifyClient::beep();
2720 return; 2724 return;
2721 } 2725 }
2722 2726
2723 if (anEvent->recurrence()->doesRecur()) { 2727 if (anEvent->recurrence()->doesRecur()) {
2724 QDate itemDate = mViewManager->currentSelectionDate(); 2728 QDate itemDate = mViewManager->currentSelectionDate();
2725 int km; 2729 int km;
2726 if (!itemDate.isValid()) { 2730 if (!itemDate.isValid()) {
2727 //kdDebug() << "Date Not Valid" << endl; 2731 //kdDebug() << "Date Not Valid" << endl;
2728 if (KOPrefs::instance()->mConfirm) { 2732 if (KOPrefs::instance()->mConfirm) {
2729 km = KMessageBox::warningContinueCancel(this,anEvent->summary() + 2733 km = KMessageBox::warningContinueCancel(this,anEvent->summary() +
2730 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 2734 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
2731 i18n("KO/Pi Confirmation"),i18n("Delete All")); 2735 i18n("KO/Pi Confirmation"),i18n("Delete All"));
2732 if ( km == KMessageBox::Continue ) 2736 if ( km == KMessageBox::Continue )
2733 km = KMessageBox::No; // No = all below 2737 km = KMessageBox::No; // No = all below
2734 } else 2738 } else
2735 km = KMessageBox::No; 2739 km = KMessageBox::No;
2736 } else { 2740 } else {
2737 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + 2741 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() +
2738 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 2742 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
2739 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 2743 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
2740 i18n("KO/Pi Confirmation"),i18n("Current"), 2744 i18n("KO/Pi Confirmation"),i18n("Current"),
2741 i18n("All")); 2745 i18n("All"));
2742 } 2746 }
2743 switch(km) { 2747 switch(km) {
2744 2748
2745 case KMessageBox::No: // Continue // all 2749 case KMessageBox::No: // Continue // all
2746 //qDebug("KMessageBox::No "); 2750 //qDebug("KMessageBox::No ");
2747 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2751 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2748 schedule(Scheduler::Cancel,anEvent); 2752 schedule(Scheduler::Cancel,anEvent);
2749 2753
2750 checkExternalId( anEvent); 2754 checkExternalId( anEvent);
2751 mCalendar->deleteEvent(anEvent); 2755 mCalendar->deleteEvent(anEvent);
2752 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 2756 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
2753 break; 2757 break;
2754 2758
2755 // Disabled because it does not work 2759 // Disabled because it does not work
2756 //#if 0 2760 //#if 0
2757 case KMessageBox::Yes: // just this one 2761 case KMessageBox::Yes: // just this one
2758 //QDate qd = mNavigator->selectedDates().first(); 2762 //QDate qd = mNavigator->selectedDates().first();
2759 //if (!qd.isValid()) { 2763 //if (!qd.isValid()) {
2760 // kdDebug() << "no date selected, or invalid date" << endl; 2764 // kdDebug() << "no date selected, or invalid date" << endl;
2761 // KNotifyClient::beep(); 2765 // KNotifyClient::beep();
2762 // return; 2766 // return;
2763 //} 2767 //}
2764 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 2768 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
2765 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 2769 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
2766 anEvent->addExDate(itemDate); 2770 anEvent->addExDate(itemDate);
2767 int duration = anEvent->recurrence()->duration(); 2771 int duration = anEvent->recurrence()->duration();
2768 if ( duration > 0 ) { 2772 if ( duration > 0 ) {
2769 anEvent->recurrence()->setDuration( duration - 1 ); 2773 anEvent->recurrence()->setDuration( duration - 1 );
2770 } 2774 }
2771 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 2775 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
2772 } 2776 }
2773 break; 2777 break;
2774 //#endif 2778 //#endif
2775 } // switch 2779 } // switch
2776 } else { 2780 } else {
2777 if (KOPrefs::instance()->mConfirm) { 2781 if (KOPrefs::instance()->mConfirm) {
2778 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + 2782 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() +
2779 i18n("\nAre you sure you want\nto delete this event?"), 2783 i18n("\nAre you sure you want\nto delete this event?"),
2780 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 2784 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
2781 case KMessageBox::Continue: // OK 2785 case KMessageBox::Continue: // OK
2782 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2786 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2783 schedule(Scheduler::Cancel,anEvent); 2787 schedule(Scheduler::Cancel,anEvent);
2784 checkExternalId( anEvent); 2788 checkExternalId( anEvent);
2785 mCalendar->deleteEvent(anEvent); 2789 mCalendar->deleteEvent(anEvent);
2786 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2790 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2787 break; 2791 break;
2788 } // switch 2792 } // switch
2789 } else { 2793 } else {
2790 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2794 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2791 schedule(Scheduler::Cancel,anEvent); 2795 schedule(Scheduler::Cancel,anEvent);
2792 checkExternalId( anEvent); 2796 checkExternalId( anEvent);
2793 mCalendar->deleteEvent(anEvent); 2797 mCalendar->deleteEvent(anEvent);
2794 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2798 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2795 } 2799 }
2796 } // if-else 2800 } // if-else
2797 emit updateSearchDialog(); 2801 emit updateSearchDialog();
2798} 2802}
2799 2803
2800bool CalendarView::deleteEvent(const QString &uid) 2804bool CalendarView::deleteEvent(const QString &uid)
2801{ 2805{
2802 Event *ev = mCalendar->event(uid); 2806 Event *ev = mCalendar->event(uid);
2803 if (ev) { 2807 if (ev) {
2804 deleteEvent(ev); 2808 deleteEvent(ev);
2805 return true; 2809 return true;
2806 } else { 2810 } else {
2807 return false; 2811 return false;
2808 } 2812 }
2809} 2813}
2810 2814
2811/*****************************************************************************/ 2815/*****************************************************************************/
2812 2816
2813void CalendarView::action_mail() 2817void CalendarView::action_mail()
2814{ 2818{
2815#ifndef KORG_NOMAIL 2819#ifndef KORG_NOMAIL
2816 KOMailClient mailClient; 2820 KOMailClient mailClient;
2817 2821
2818 Incidence *incidence = currentSelection(); 2822 Incidence *incidence = currentSelection();
2819 2823
2820 if (!incidence) { 2824 if (!incidence) {
2821 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2825 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2822 return; 2826 return;
2823 } 2827 }
2824 if(incidence->attendeeCount() == 0 ) { 2828 if(incidence->attendeeCount() == 0 ) {
2825 KMessageBox::sorry(this, 2829 KMessageBox::sorry(this,
2826 i18n("Can't generate mail:\nNo attendees defined.\n")); 2830 i18n("Can't generate mail:\nNo attendees defined.\n"));
2827 return; 2831 return;
2828 } 2832 }
2829 2833
2830 CalendarLocal cal_tmp; 2834 CalendarLocal cal_tmp;
2831 Event *event = 0; 2835 Event *event = 0;
2832 Event *ev = 0; 2836 Event *ev = 0;
2833 if ( incidence && incidence->type() == "Event" ) { 2837 if ( incidence && incidence->type() == "Event" ) {
2834 event = static_cast<Event *>(incidence); 2838 event = static_cast<Event *>(incidence);
2835 ev = new Event(*event); 2839 ev = new Event(*event);
2836 cal_tmp.addEvent(ev); 2840 cal_tmp.addEvent(ev);
2837 } 2841 }
2838 ICalFormat mForm( KOPrefs::instance()->mUseQuicksave); 2842 ICalFormat mForm( KOPrefs::instance()->mUseQuicksave);
2839 QString attachment = mForm.toString( &cal_tmp ); 2843 QString attachment = mForm.toString( &cal_tmp );
2840 if (ev) delete(ev); 2844 if (ev) delete(ev);
2841 2845
2842 mailClient.mailAttendees(currentSelection(), attachment); 2846 mailClient.mailAttendees(currentSelection(), attachment);
2843 2847
2844#endif 2848#endif
2845 2849
2846#if 0 2850#if 0
2847 Event *anEvent = 0; 2851 Event *anEvent = 0;
2848 if (mViewManager->currentView()->isEventView()) { 2852 if (mViewManager->currentView()->isEventView()) {
2849 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 2853 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
2850 } 2854 }
2851 2855
2852 if (!anEvent) { 2856 if (!anEvent) {
2853 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2857 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2854 return; 2858 return;
2855 } 2859 }
2856 if(anEvent->attendeeCount() == 0 ) { 2860 if(anEvent->attendeeCount() == 0 ) {
2857 KMessageBox::sorry(this, 2861 KMessageBox::sorry(this,
2858 i18n("Can't generate mail:\nNo attendees defined.\n")); 2862 i18n("Can't generate mail:\nNo attendees defined.\n"));
2859 return; 2863 return;
2860 } 2864 }
2861 2865
2862 mailobject.emailEvent(anEvent); 2866 mailobject.emailEvent(anEvent);
2863#endif 2867#endif
2864} 2868}
2865 2869
2866 2870
2867void CalendarView::schedule_publish(Incidence *incidence) 2871void CalendarView::schedule_publish(Incidence *incidence)
2868{ 2872{
2869 Event *event = 0; 2873 Event *event = 0;
2870 Todo *todo = 0; 2874 Todo *todo = 0;
2871 2875
2872 if (incidence == 0) { 2876 if (incidence == 0) {
2873 incidence = mViewManager->currentView()->selectedIncidences().first(); 2877 incidence = mViewManager->currentView()->selectedIncidences().first();
2874 if (incidence == 0) { 2878 if (incidence == 0) {
2875 incidence = mTodoList->selectedIncidences().first(); 2879 incidence = mTodoList->selectedIncidences().first();
2876 } 2880 }
2877 } 2881 }
2878 if ( incidence && incidence->type() == "Event" ) { 2882 if ( incidence && incidence->type() == "Event" ) {
2879 event = static_cast<Event *>(incidence); 2883 event = static_cast<Event *>(incidence);
2880 } else { 2884 } else {
2881 if ( incidence && incidence->type() == "Todo" ) { 2885 if ( incidence && incidence->type() == "Todo" ) {
2882 todo = static_cast<Todo *>(incidence); 2886 todo = static_cast<Todo *>(incidence);
2883 } 2887 }
2884 } 2888 }
2885 2889
2886 if (!event && !todo) { 2890 if (!event && !todo) {
2887 KMessageBox::sorry(this,i18n("No event selected.")); 2891 KMessageBox::sorry(this,i18n("No event selected."));
2888 return; 2892 return;
2889 } 2893 }
2890 2894
2891 PublishDialog *publishdlg = new PublishDialog(); 2895 PublishDialog *publishdlg = new PublishDialog();
2892 if (incidence->attendeeCount()>0) { 2896 if (incidence->attendeeCount()>0) {
2893 QPtrList<Attendee> attendees = incidence->attendees(); 2897 QPtrList<Attendee> attendees = incidence->attendees();
2894 attendees.first(); 2898 attendees.first();
2895 while ( attendees.current()!=0 ) { 2899 while ( attendees.current()!=0 ) {
2896 publishdlg->addAttendee(attendees.current()); 2900 publishdlg->addAttendee(attendees.current());
2897 attendees.next(); 2901 attendees.next();
2898 } 2902 }
2899 } 2903 }
2900 bool send = true; 2904 bool send = true;
2901 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 2905 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
2902 if ( publishdlg->exec() != QDialog::Accepted ) 2906 if ( publishdlg->exec() != QDialog::Accepted )
2903 send = false; 2907 send = false;
2904 } 2908 }
2905 if ( send ) { 2909 if ( send ) {
2906 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 2910 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
2907 if ( event ) { 2911 if ( event ) {
2908 Event *ev = new Event(*event); 2912 Event *ev = new Event(*event);
2909 ev->registerObserver(0); 2913 ev->registerObserver(0);
2910 ev->clearAttendees(); 2914 ev->clearAttendees();
2911 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 2915 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
2912 delete(ev); 2916 delete(ev);
2913 } 2917 }
2914 } else { 2918 } else {
2915 if ( todo ) { 2919 if ( todo ) {
2916 Todo *ev = new Todo(*todo); 2920 Todo *ev = new Todo(*todo);
2917 ev->registerObserver(0); 2921 ev->registerObserver(0);
2918 ev->clearAttendees(); 2922 ev->clearAttendees();
2919 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 2923 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
2920 delete(ev); 2924 delete(ev);
2921 } 2925 }
2922 } 2926 }
2923 } 2927 }
2924 } 2928 }
2925 delete publishdlg; 2929 delete publishdlg;
2926} 2930}
2927 2931
2928void CalendarView::schedule_request(Incidence *incidence) 2932void CalendarView::schedule_request(Incidence *incidence)
2929{ 2933{
2930 schedule(Scheduler::Request,incidence); 2934 schedule(Scheduler::Request,incidence);
2931} 2935}
2932 2936
2933void CalendarView::schedule_refresh(Incidence *incidence) 2937void CalendarView::schedule_refresh(Incidence *incidence)
2934{ 2938{
2935 schedule(Scheduler::Refresh,incidence); 2939 schedule(Scheduler::Refresh,incidence);
2936} 2940}
2937 2941
2938void CalendarView::schedule_cancel(Incidence *incidence) 2942void CalendarView::schedule_cancel(Incidence *incidence)
2939{ 2943{
2940 schedule(Scheduler::Cancel,incidence); 2944 schedule(Scheduler::Cancel,incidence);
2941} 2945}
2942 2946
2943void CalendarView::schedule_add(Incidence *incidence) 2947void CalendarView::schedule_add(Incidence *incidence)
2944{ 2948{
2945 schedule(Scheduler::Add,incidence); 2949 schedule(Scheduler::Add,incidence);
2946} 2950}
2947 2951
2948void CalendarView::schedule_reply(Incidence *incidence) 2952void CalendarView::schedule_reply(Incidence *incidence)
2949{ 2953{
2950 schedule(Scheduler::Reply,incidence); 2954 schedule(Scheduler::Reply,incidence);
2951} 2955}
2952 2956
2953void CalendarView::schedule_counter(Incidence *incidence) 2957void CalendarView::schedule_counter(Incidence *incidence)
2954{ 2958{
2955 schedule(Scheduler::Counter,incidence); 2959 schedule(Scheduler::Counter,incidence);
2956} 2960}
2957 2961
2958void CalendarView::schedule_declinecounter(Incidence *incidence) 2962void CalendarView::schedule_declinecounter(Incidence *incidence)
2959{ 2963{
2960 schedule(Scheduler::Declinecounter,incidence); 2964 schedule(Scheduler::Declinecounter,incidence);
2961} 2965}
2962 2966
2963void CalendarView::schedule_publish_freebusy(int daysToPublish) 2967void CalendarView::schedule_publish_freebusy(int daysToPublish)
2964{ 2968{
2965 QDateTime start = QDateTime::currentDateTime(); 2969 QDateTime start = QDateTime::currentDateTime();
2966 QDateTime end = start.addDays(daysToPublish); 2970 QDateTime end = start.addDays(daysToPublish);
2967 2971
2968 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 2972 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
2969 freebusy->setOrganizer(KOPrefs::instance()->email()); 2973 freebusy->setOrganizer(KOPrefs::instance()->email());
2970 2974
2971 2975
2972 PublishDialog *publishdlg = new PublishDialog(); 2976 PublishDialog *publishdlg = new PublishDialog();
2973 if ( publishdlg->exec() == QDialog::Accepted ) { 2977 if ( publishdlg->exec() == QDialog::Accepted ) {
2974 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 2978 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
2975 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 2979 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
2976 delete(freebusy); 2980 delete(freebusy);
2977 } 2981 }
2978 } 2982 }
2979 delete publishdlg; 2983 delete publishdlg;
2980} 2984}
2981 2985
2982void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 2986void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
2983{ 2987{
2984 Event *event = 0; 2988 Event *event = 0;
2985 Todo *todo = 0; 2989 Todo *todo = 0;
2986 2990
2987 if (incidence == 0) { 2991 if (incidence == 0) {
2988 incidence = mViewManager->currentView()->selectedIncidences().first(); 2992 incidence = mViewManager->currentView()->selectedIncidences().first();
2989 if (incidence == 0) { 2993 if (incidence == 0) {
2990 incidence = mTodoList->selectedIncidences().first(); 2994 incidence = mTodoList->selectedIncidences().first();
2991 } 2995 }
2992 } 2996 }
2993 if ( incidence && incidence->type() == "Event" ) { 2997 if ( incidence && incidence->type() == "Event" ) {
2994 event = static_cast<Event *>(incidence); 2998 event = static_cast<Event *>(incidence);
2995 } 2999 }
2996 if ( incidence && incidence->type() == "Todo" ) { 3000 if ( incidence && incidence->type() == "Todo" ) {
2997 todo = static_cast<Todo *>(incidence); 3001 todo = static_cast<Todo *>(incidence);
2998 } 3002 }
2999 3003
3000 if (!event && !todo) { 3004 if (!event && !todo) {
3001 KMessageBox::sorry(this,i18n("No event selected.")); 3005 KMessageBox::sorry(this,i18n("No event selected."));
3002 return; 3006 return;
3003 } 3007 }
3004 3008
3005 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3009 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3006 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3010 KMessageBox::sorry(this,i18n("The event has no attendees."));
3007 return; 3011 return;
3008 } 3012 }
3009 3013
3010 Event *ev = 0; 3014 Event *ev = 0;
3011 if (event) ev = new Event(*event); 3015 if (event) ev = new Event(*event);
3012 Todo *to = 0; 3016 Todo *to = 0;
3013 if (todo) to = new Todo(*todo); 3017 if (todo) to = new Todo(*todo);
3014 3018
3015 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3019 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3016 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3020 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3017 if (!me) { 3021 if (!me) {
3018 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3022 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3019 return; 3023 return;
3020 } 3024 }
3021 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3025 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3022 StatusDialog *statdlg = new StatusDialog(this); 3026 StatusDialog *statdlg = new StatusDialog(this);
3023 if (!statdlg->exec()==QDialog::Accepted) return; 3027 if (!statdlg->exec()==QDialog::Accepted) return;
3024 me->setStatus( statdlg->status() ); 3028 me->setStatus( statdlg->status() );
3025 delete(statdlg); 3029 delete(statdlg);
3026 } 3030 }
3027 Attendee *menew = new Attendee(*me); 3031 Attendee *menew = new Attendee(*me);
3028 if (ev) { 3032 if (ev) {
3029 ev->clearAttendees(); 3033 ev->clearAttendees();
3030 ev->addAttendee(menew,false); 3034 ev->addAttendee(menew,false);
3031 } else { 3035 } else {
3032 if (to) { 3036 if (to) {
3033 todo->clearAttendees(); 3037 todo->clearAttendees();
3034 todo->addAttendee(menew,false); 3038 todo->addAttendee(menew,false);
3035 } 3039 }
3036 } 3040 }
3037 } 3041 }
3038 3042
3039 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3043 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3040 if (ev) { 3044 if (ev) {
3041 if ( !dlg->addMessage(ev,method) ) delete(ev); 3045 if ( !dlg->addMessage(ev,method) ) delete(ev);
3042 } else { 3046 } else {
3043 if (to) { 3047 if (to) {
3044 if ( !dlg->addMessage(to,method) ) delete(to); 3048 if ( !dlg->addMessage(to,method) ) delete(to);
3045 } 3049 }
3046 } 3050 }
3047} 3051}
3048 3052
3049void CalendarView::openAddressbook() 3053void CalendarView::openAddressbook()
3050{ 3054{
3051 KRun::runCommand("kaddressbook"); 3055 KRun::runCommand("kaddressbook");
3052} 3056}
3053 3057
3054void CalendarView::setModified(bool modified) 3058void CalendarView::setModified(bool modified)
3055{ 3059{
3056 if ( modified ) 3060 if ( modified )
3057 emit signalmodified(); 3061 emit signalmodified();
3058 if (mModified != modified) { 3062 if (mModified != modified) {
3059 mModified = modified; 3063 mModified = modified;
3060 emit modifiedChanged(mModified); 3064 emit modifiedChanged(mModified);
3061 } 3065 }
3062} 3066}
3063 3067
3064bool CalendarView::isReadOnly() 3068bool CalendarView::isReadOnly()
3065{ 3069{
3066 return mReadOnly; 3070 return mReadOnly;
3067} 3071}
3068 3072
3069void CalendarView::setReadOnly(bool readOnly) 3073void CalendarView::setReadOnly(bool readOnly)
3070{ 3074{
3071 if (mReadOnly != readOnly) { 3075 if (mReadOnly != readOnly) {
3072 mReadOnly = readOnly; 3076 mReadOnly = readOnly;
3073 emit readOnlyChanged(mReadOnly); 3077 emit readOnlyChanged(mReadOnly);
3074 } 3078 }
3075} 3079}
3076 3080
3077bool CalendarView::isModified() 3081bool CalendarView::isModified()
3078{ 3082{
3079 return mModified; 3083 return mModified;
3080} 3084}
3081 3085
3082void CalendarView::printSetup() 3086void CalendarView::printSetup()
3083{ 3087{
3084#ifndef KORG_NOPRINTER 3088#ifndef KORG_NOPRINTER
3085 createPrinter(); 3089 createPrinter();
3086 3090
3087 mCalPrinter->setupPrinter(); 3091 mCalPrinter->setupPrinter();
3088#endif 3092#endif
3089} 3093}
3090 3094
3091void CalendarView::print() 3095void CalendarView::print()
3092{ 3096{
3093#ifndef KORG_NOPRINTER 3097#ifndef KORG_NOPRINTER
3094 createPrinter(); 3098 createPrinter();
3095 3099
3096 DateList tmpDateList = mNavigator->selectedDates(); 3100 DateList tmpDateList = mNavigator->selectedDates();
3097 mCalPrinter->print(CalPrinter::Month, 3101 mCalPrinter->print(CalPrinter::Month,
3098 tmpDateList.first(), tmpDateList.last()); 3102 tmpDateList.first(), tmpDateList.last());
3099#endif 3103#endif
3100} 3104}
3101 3105
3102void CalendarView::printPreview() 3106void CalendarView::printPreview()
3103{ 3107{
3104#ifndef KORG_NOPRINTER 3108#ifndef KORG_NOPRINTER
3105 kdDebug() << "CalendarView::printPreview()" << endl; 3109 kdDebug() << "CalendarView::printPreview()" << endl;
3106 3110
3107 createPrinter(); 3111 createPrinter();
3108 3112
3109 DateList tmpDateList = mNavigator->selectedDates(); 3113 DateList tmpDateList = mNavigator->selectedDates();
3110 3114
3111 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3115 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3112 tmpDateList.last()); 3116 tmpDateList.last());
3113#endif 3117#endif
3114} 3118}
3115 3119
3116void CalendarView::exportICalendar() 3120void CalendarView::exportICalendar()
3117{ 3121{
3118 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3122 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3119 3123
3120 // Force correct extension 3124 // Force correct extension
3121 if (filename.right(4) != ".ics") filename += ".ics"; 3125 if (filename.right(4) != ".ics") filename += ".ics";
3122 3126
3123 FileStorage storage( mCalendar, filename, new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 3127 FileStorage storage( mCalendar, filename, new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
3124 storage.save(); 3128 storage.save();
3125} 3129}
3126 3130
3127bool CalendarView::exportVCalendar( QString filename ) 3131bool CalendarView::exportVCalendar( QString filename )
3128{ 3132{
3129 if (mCalendar->journals().count() > 0) { 3133 if (mCalendar->journals().count() > 0) {
3130 int result = KMessageBox::warningContinueCancel(this, 3134 int result = KMessageBox::warningContinueCancel(this,
3131 i18n("The journal entries can not be\nexported to a vCalendar file."), 3135 i18n("The journal entries can not be\nexported to a vCalendar file."),
3132 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3136 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3133 true); 3137 true);
3134 if (result != KMessageBox::Continue) return false; 3138 if (result != KMessageBox::Continue) return false;
3135 } 3139 }
3136 3140
3137 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3141 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3138 3142
3139 // Force correct extension 3143 // Force correct extension
3140 if (filename.right(4) != ".vcs") filename += ".vcs"; 3144 if (filename.right(4) != ".vcs") filename += ".vcs";
3141 3145
3142 FileStorage storage( mCalendar, filename, new VCalFormat ); 3146 FileStorage storage( mCalendar, filename, new VCalFormat );
3143 return storage.save(); 3147 return storage.save();
3144 3148
3145} 3149}
3146 3150
3147void CalendarView::eventUpdated(Incidence *) 3151void CalendarView::eventUpdated(Incidence *)
3148{ 3152{
3149 setModified(); 3153 setModified();
3150 // Don't call updateView here. The code, which has caused the update of the 3154 // Don't call updateView here. The code, which has caused the update of the
3151 // event is responsible for updating the view. 3155 // event is responsible for updating the view.
3152 // updateView(); 3156 // updateView();
3153} 3157}
3154 3158
3155void CalendarView::adaptNavigationUnits() 3159void CalendarView::adaptNavigationUnits()
3156{ 3160{
3157 if (mViewManager->currentView()->isEventView()) { 3161 if (mViewManager->currentView()->isEventView()) {
3158 int days = mViewManager->currentView()->currentDateCount(); 3162 int days = mViewManager->currentView()->currentDateCount();
3159 if (days == 1) { 3163 if (days == 1) {
3160 emit changeNavStringPrev(i18n("&Previous Day")); 3164 emit changeNavStringPrev(i18n("&Previous Day"));
3161 emit changeNavStringNext(i18n("&Next Day")); 3165 emit changeNavStringNext(i18n("&Next Day"));
3162 } else { 3166 } else {
3163 emit changeNavStringPrev(i18n("&Previous Week")); 3167 emit changeNavStringPrev(i18n("&Previous Week"));
3164 emit changeNavStringNext(i18n("&Next Week")); 3168 emit changeNavStringNext(i18n("&Next Week"));
3165 } 3169 }
3166 } 3170 }
3167} 3171}
3168 3172
3169void CalendarView::processMainViewSelection( Incidence *incidence ) 3173void CalendarView::processMainViewSelection( Incidence *incidence )
3170{ 3174{
3171 if ( incidence ) mTodoList->clearSelection(); 3175 if ( incidence ) mTodoList->clearSelection();
3172 processIncidenceSelection( incidence ); 3176 processIncidenceSelection( incidence );
3173} 3177}
3174 3178
3175void CalendarView::processTodoListSelection( Incidence *incidence ) 3179void CalendarView::processTodoListSelection( Incidence *incidence )
3176{ 3180{
3177 if ( incidence && mViewManager->currentView() ) { 3181 if ( incidence && mViewManager->currentView() ) {
3178 mViewManager->currentView()->clearSelection(); 3182 mViewManager->currentView()->clearSelection();
3179 } 3183 }
3180 processIncidenceSelection( incidence ); 3184 processIncidenceSelection( incidence );
3181} 3185}
3182 3186
3183void CalendarView::processIncidenceSelection( Incidence *incidence ) 3187void CalendarView::processIncidenceSelection( Incidence *incidence )
3184{ 3188{
3185 if ( incidence == mSelectedIncidence ) return; 3189 if ( incidence == mSelectedIncidence ) return;
3186 3190
3187 mSelectedIncidence = incidence; 3191 mSelectedIncidence = incidence;
3188 3192
3189 emit incidenceSelected( mSelectedIncidence ); 3193 emit incidenceSelected( mSelectedIncidence );
3190 3194
3191 if ( incidence && incidence->type() == "Event" ) { 3195 if ( incidence && incidence->type() == "Event" ) {
3192 Event *event = static_cast<Event *>( incidence ); 3196 Event *event = static_cast<Event *>( incidence );
3193 if ( event->organizer() == KOPrefs::instance()->email() ) { 3197 if ( event->organizer() == KOPrefs::instance()->email() ) {
3194 emit organizerEventsSelected( true ); 3198 emit organizerEventsSelected( true );
3195 } else { 3199 } else {
3196 emit organizerEventsSelected(false); 3200 emit organizerEventsSelected(false);
3197 } 3201 }
3198 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3202 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3199 KOPrefs::instance()->email() ) ) { 3203 KOPrefs::instance()->email() ) ) {
3200 emit groupEventsSelected( true ); 3204 emit groupEventsSelected( true );
3201 } else { 3205 } else {
3202 emit groupEventsSelected(false); 3206 emit groupEventsSelected(false);
3203 } 3207 }
3204 return; 3208 return;
3205 } else { 3209 } else {
3206 if ( incidence && incidence->type() == "Todo" ) { 3210 if ( incidence && incidence->type() == "Todo" ) {
3207 emit todoSelected( true ); 3211 emit todoSelected( true );
3208 Todo *event = static_cast<Todo *>( incidence ); 3212 Todo *event = static_cast<Todo *>( incidence );
3209 if ( event->organizer() == KOPrefs::instance()->email() ) { 3213 if ( event->organizer() == KOPrefs::instance()->email() ) {
3210 emit organizerEventsSelected( true ); 3214 emit organizerEventsSelected( true );
3211 } else { 3215 } else {
3212 emit organizerEventsSelected(false); 3216 emit organizerEventsSelected(false);
3213 } 3217 }
3214 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3218 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3215 KOPrefs::instance()->email() ) ) { 3219 KOPrefs::instance()->email() ) ) {
3216 emit groupEventsSelected( true ); 3220 emit groupEventsSelected( true );
3217 } else { 3221 } else {
3218 emit groupEventsSelected(false); 3222 emit groupEventsSelected(false);
3219 } 3223 }
3220 return; 3224 return;
3221 } else { 3225 } else {
3222 emit todoSelected( false ); 3226 emit todoSelected( false );
3223 emit organizerEventsSelected(false); 3227 emit organizerEventsSelected(false);
3224 emit groupEventsSelected(false); 3228 emit groupEventsSelected(false);
3225 } 3229 }
3226 return; 3230 return;
3227 } 3231 }
3228 3232
3229 /* if ( incidence && incidence->type() == "Todo" ) { 3233 /* if ( incidence && incidence->type() == "Todo" ) {
3230 emit todoSelected( true ); 3234 emit todoSelected( true );
3231 } else { 3235 } else {
3232 emit todoSelected( false ); 3236 emit todoSelected( false );
3233 }*/ 3237 }*/
3234} 3238}
3235 3239
3236 3240
3237void CalendarView::checkClipboard() 3241void CalendarView::checkClipboard()
3238{ 3242{
3239#ifndef KORG_NODND 3243#ifndef KORG_NODND
3240 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3244 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3241 emit pasteEnabled(true); 3245 emit pasteEnabled(true);
3242 } else { 3246 } else {
3243 emit pasteEnabled(false); 3247 emit pasteEnabled(false);
3244 } 3248 }
3245#endif 3249#endif
3246} 3250}
3247 3251
3248void CalendarView::showDates(const DateList &selectedDates) 3252void CalendarView::showDates(const DateList &selectedDates)
3249{ 3253{
3250 // kdDebug() << "CalendarView::selectDates()" << endl; 3254 // kdDebug() << "CalendarView::selectDates()" << endl;
3251 3255
3252 if ( mViewManager->currentView() ) { 3256 if ( mViewManager->currentView() ) {
3253 updateView( selectedDates.first(), selectedDates.last() ); 3257 updateView( selectedDates.first(), selectedDates.last() );
3254 } else { 3258 } else {
3255 mViewManager->showAgendaView(); 3259 mViewManager->showAgendaView();
3256 } 3260 }
3257 3261
3258 QString selDates; 3262 QString selDates;
3259 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); 3263 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true);
3260 if (selectedDates.first() < selectedDates.last() ) 3264 if (selectedDates.first() < selectedDates.last() )
3261 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3265 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3262 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3266 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3263 3267
3264} 3268}
3265 3269
3266QPtrList<CalFilter> CalendarView::filters() 3270QPtrList<CalFilter> CalendarView::filters()
3267{ 3271{
3268 return mFilters; 3272 return mFilters;
3269 3273
3270} 3274}
3271void CalendarView::editFilters() 3275void CalendarView::editFilters()
3272{ 3276{
3273 // kdDebug() << "CalendarView::editFilters()" << endl; 3277 // kdDebug() << "CalendarView::editFilters()" << endl;
3274 3278
3275 CalFilter *filter = mFilters.first(); 3279 CalFilter *filter = mFilters.first();
3276 while(filter) { 3280 while(filter) {
3277 kdDebug() << " Filter: " << filter->name() << endl; 3281 kdDebug() << " Filter: " << filter->name() << endl;
3278 filter = mFilters.next(); 3282 filter = mFilters.next();
3279 } 3283 }
3280 3284
3281 mDialogManager->showFilterEditDialog(&mFilters); 3285 mDialogManager->showFilterEditDialog(&mFilters);
3282} 3286}
3283void CalendarView::toggleFilter() 3287void CalendarView::toggleFilter()
3284{ 3288{
3285 showFilter(! mFilterView->isVisible()); 3289 showFilter(! mFilterView->isVisible());
3286} 3290}
3287 3291
3288KOFilterView *CalendarView::filterView() 3292KOFilterView *CalendarView::filterView()
3289{ 3293{
3290 return mFilterView; 3294 return mFilterView;
3291} 3295}
3292void CalendarView::selectFilter( int fil ) 3296void CalendarView::selectFilter( int fil )
3293{ 3297{
3294 mFilterView->setSelectedFilter( fil ); 3298 mFilterView->setSelectedFilter( fil );
3295} 3299}
3296void CalendarView::showFilter(bool visible) 3300void CalendarView::showFilter(bool visible)
3297{ 3301{
3298 if (visible) mFilterView->show(); 3302 if (visible) mFilterView->show();
3299 else mFilterView->hide(); 3303 else mFilterView->hide();
3300} 3304}
3301void CalendarView::toggleFilerEnabled( ) 3305void CalendarView::toggleFilerEnabled( )
3302{ 3306{
3303 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3307 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3304 if ( !mFilterView->filtersEnabled() ) 3308 if ( !mFilterView->filtersEnabled() )
3305 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3309 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3306 3310
3307} 3311}
3308void CalendarView::updateFilter() 3312void CalendarView::updateFilter()
3309{ 3313{
3310 CalFilter *filter = mFilterView->selectedFilter(); 3314 CalFilter *filter = mFilterView->selectedFilter();
3311 if (filter) { 3315 if (filter) {
3312 if (mFilterView->filtersEnabled()) { 3316 if (mFilterView->filtersEnabled()) {
3313 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); 3317 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() );
3314 filter->setEnabled(true); 3318 filter->setEnabled(true);
3315 } 3319 }
3316 else filter->setEnabled(false); 3320 else filter->setEnabled(false);
3317 mCalendar->setFilter(filter); 3321 mCalendar->setFilter(filter);
3318 updateView(); 3322 updateView();
3319 } 3323 }
3320} 3324}
3321 3325
3322void CalendarView::filterEdited() 3326void CalendarView::filterEdited()
3323{ 3327{
3324 mFilterView->updateFilters(); 3328 mFilterView->updateFilters();
3325 updateFilter(); 3329 updateFilter();
3326 writeSettings(); 3330 writeSettings();
3327} 3331}
3328 3332
3329 3333
3330void CalendarView::takeOverEvent() 3334void CalendarView::takeOverEvent()
3331{ 3335{
3332 Incidence *incidence = currentSelection(); 3336 Incidence *incidence = currentSelection();
3333 3337
3334 if (!incidence) return; 3338 if (!incidence) return;
3335 3339
3336 incidence->setOrganizer(KOPrefs::instance()->email()); 3340 incidence->setOrganizer(KOPrefs::instance()->email());
3337 incidence->recreate(); 3341 incidence->recreate();
3338 incidence->setReadOnly(false); 3342 incidence->setReadOnly(false);
3339 3343
3340 updateView(); 3344 updateView();
3341} 3345}
3342 3346
3343void CalendarView::takeOverCalendar() 3347void CalendarView::takeOverCalendar()
3344{ 3348{
3345 // TODO: Create Calendar::allIncidences() function and use it here 3349 // TODO: Create Calendar::allIncidences() function and use it here
3346 3350
3347 QPtrList<Event> events = mCalendar->events(); 3351 QPtrList<Event> events = mCalendar->events();
3348 for(uint i=0; i<events.count(); ++i) { 3352 for(uint i=0; i<events.count(); ++i) {
3349 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3353 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3350 events.at(i)->recreate(); 3354 events.at(i)->recreate();
3351 events.at(i)->setReadOnly(false); 3355 events.at(i)->setReadOnly(false);
3352 } 3356 }
3353 3357
3354 QPtrList<Todo> todos = mCalendar->todos(); 3358 QPtrList<Todo> todos = mCalendar->todos();
3355 for(uint i=0; i<todos.count(); ++i) { 3359 for(uint i=0; i<todos.count(); ++i) {
3356 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3360 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3357 todos.at(i)->recreate(); 3361 todos.at(i)->recreate();
3358 todos.at(i)->setReadOnly(false); 3362 todos.at(i)->setReadOnly(false);
3359 } 3363 }
3360 3364
3361 QPtrList<Journal> journals = mCalendar->journals(); 3365 QPtrList<Journal> journals = mCalendar->journals();
3362 for(uint i=0; i<journals.count(); ++i) { 3366 for(uint i=0; i<journals.count(); ++i) {
3363 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3367 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3364 journals.at(i)->recreate(); 3368 journals.at(i)->recreate();
3365 journals.at(i)->setReadOnly(false); 3369 journals.at(i)->setReadOnly(false);
3366 } 3370 }
3367 3371
3368 updateView(); 3372 updateView();
3369} 3373}
3370 3374
3371void CalendarView::showIntro() 3375void CalendarView::showIntro()
3372{ 3376{
3373 kdDebug() << "To be implemented." << endl; 3377 kdDebug() << "To be implemented." << endl;
3374} 3378}
3375 3379
3376QWidgetStack *CalendarView::viewStack() 3380QWidgetStack *CalendarView::viewStack()
3377{ 3381{
3378 return mRightFrame; 3382 return mRightFrame;
3379} 3383}
3380 3384
3381QWidget *CalendarView::leftFrame() 3385QWidget *CalendarView::leftFrame()
3382{ 3386{
3383 return mLeftFrame; 3387 return mLeftFrame;
3384} 3388}
3385 3389
3386DateNavigator *CalendarView::dateNavigator() 3390DateNavigator *CalendarView::dateNavigator()
3387{ 3391{
3388 return mNavigator; 3392 return mNavigator;
3389} 3393}
3390 3394
3391KDateNavigator* CalendarView::dateNavigatorWidget() 3395KDateNavigator* CalendarView::dateNavigatorWidget()
3392{ 3396{
3393 return mDateNavigator; 3397 return mDateNavigator;
3394} 3398}
3395void CalendarView::toggleDateNavigatorWidget() 3399void CalendarView::toggleDateNavigatorWidget()
3396{ 3400{
3397 if (mDateNavigator->isVisible()) 3401 if (mDateNavigator->isVisible())
3398 mDateNavigator->hide(); 3402 mDateNavigator->hide();
3399 else 3403 else
3400 mDateNavigator->show(); 3404 mDateNavigator->show();
3401} 3405}
3402void CalendarView::addView(KOrg::BaseView *view) 3406void CalendarView::addView(KOrg::BaseView *view)
3403{ 3407{
3404 mViewManager->addView(view); 3408 mViewManager->addView(view);
3405} 3409}
3406 3410
3407void CalendarView::showView(KOrg::BaseView *view) 3411void CalendarView::showView(KOrg::BaseView *view)
3408{ 3412{
3409 mViewManager->showView(view, mLeftFrame->isVisible()); 3413 mViewManager->showView(view, mLeftFrame->isVisible());
3410} 3414}
3411 3415
3412Incidence *CalendarView::currentSelection() 3416Incidence *CalendarView::currentSelection()
3413{ 3417{
3414 return mViewManager->currentSelection(); 3418 return mViewManager->currentSelection();
3415} 3419}
3416void CalendarView::toggleAllDaySize() 3420void CalendarView::toggleAllDaySize()
3417{ 3421{
3418 /* 3422 /*
3419 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3423 if ( KOPrefs::instance()->mAllDaySize > 47 )
3420 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3424 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3421 else 3425 else
3422 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3426 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3423 */ 3427 */
3424 viewManager()->agendaView()->toggleAllDay(); 3428 viewManager()->agendaView()->toggleAllDay();
3425} 3429}
3426void CalendarView::toggleExpand() 3430void CalendarView::toggleExpand()
3427{ 3431{
3428 // if ( mLeftFrame->isHidden() ) { 3432 // if ( mLeftFrame->isHidden() ) {
3429 // mLeftFrame->show(); 3433 // mLeftFrame->show();
3430 // emit calendarViewExpanded( false ); 3434 // emit calendarViewExpanded( false );
3431 // } else { 3435 // } else {
3432 // mLeftFrame->hide(); 3436 // mLeftFrame->hide();
3433 // emit calendarViewExpanded( true ); 3437 // emit calendarViewExpanded( true );
3434 // } 3438 // }
3435 3439
3436 globalFlagBlockAgenda = 1; 3440 globalFlagBlockAgenda = 1;
3437 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3441 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3438 globalFlagBlockAgenda = 5; 3442 globalFlagBlockAgenda = 5;
3439 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3443 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3440 //mViewManager->showView( 0, true ); 3444 //mViewManager->showView( 0, true );
3441} 3445}
3442 3446
3443void CalendarView::calendarModified( bool modified, Calendar * ) 3447void CalendarView::calendarModified( bool modified, Calendar * )
3444{ 3448{
3445 setModified( modified ); 3449 setModified( modified );
3446} 3450}
3447 3451
3448Todo *CalendarView::selectedTodo() 3452Todo *CalendarView::selectedTodo()
3449{ 3453{
3450 Incidence *incidence = currentSelection(); 3454 Incidence *incidence = currentSelection();
3451 if ( incidence && incidence->type() == "Todo" ) { 3455 if ( incidence && incidence->type() == "Todo" ) {
3452 return static_cast<Todo *>( incidence ); 3456 return static_cast<Todo *>( incidence );
3453 } 3457 }
3454 3458
3455 incidence = mTodoList->selectedIncidences().first(); 3459 incidence = mTodoList->selectedIncidences().first();
3456 if ( incidence && incidence->type() == "Todo" ) { 3460 if ( incidence && incidence->type() == "Todo" ) {
3457 return static_cast<Todo *>( incidence ); 3461 return static_cast<Todo *>( incidence );
3458 } 3462 }
3459 3463
3460 return 0; 3464 return 0;
3461} 3465}
3462 3466
3463void CalendarView::dialogClosing(Incidence *in) 3467void CalendarView::dialogClosing(Incidence *in)
3464{ 3468{
3465 // mDialogList.remove(in); 3469 // mDialogList.remove(in);
3466} 3470}
3467 3471
3468void CalendarView::showIncidence() 3472void CalendarView::showIncidence()
3469{ 3473{
3470 Incidence *incidence = currentSelection(); 3474 Incidence *incidence = currentSelection();
3471 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3475 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3472 if ( incidence ) { 3476 if ( incidence ) {
3473 ShowIncidenceVisitor v; 3477 ShowIncidenceVisitor v;
3474 v.act( incidence, this ); 3478 v.act( incidence, this );
3475 } 3479 }
3476} 3480}
3477void CalendarView::editIncidenceDescription() 3481void CalendarView::editIncidenceDescription()
3478{ 3482{
3479 mFlagEditDescription = true; 3483 mFlagEditDescription = true;
3480 editIncidence(); 3484 editIncidence();
3481 mFlagEditDescription = false; 3485 mFlagEditDescription = false;
3482} 3486}
3483void CalendarView::editIncidence() 3487void CalendarView::editIncidence()
3484{ 3488{
3485 // qDebug("editIncidence() "); 3489 // qDebug("editIncidence() ");
3486 Incidence *incidence = currentSelection(); 3490 Incidence *incidence = currentSelection();
3487 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3491 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3488 if ( incidence ) { 3492 if ( incidence ) {
3489 EditIncidenceVisitor v; 3493 EditIncidenceVisitor v;
3490 v.act( incidence, this ); 3494 v.act( incidence, this );
3491 } 3495 }
3492} 3496}
3493 3497
3494void CalendarView::deleteIncidence() 3498void CalendarView::deleteIncidence()
3495{ 3499{
3496 Incidence *incidence = currentSelection(); 3500 Incidence *incidence = currentSelection();
3497 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3501 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3498 if ( incidence ) { 3502 if ( incidence ) {
3499 deleteIncidence(incidence); 3503 deleteIncidence(incidence);
3500 } 3504 }
3501} 3505}
3502 3506
3503void CalendarView::showIncidence(Incidence *incidence) 3507void CalendarView::showIncidence(Incidence *incidence)
3504{ 3508{
3505 if ( incidence ) { 3509 if ( incidence ) {
3506 ShowIncidenceVisitor v; 3510 ShowIncidenceVisitor v;
3507 v.act( incidence, this ); 3511 v.act( incidence, this );
3508 } 3512 }
3509} 3513}
3510 3514
3511void CalendarView::editIncidence(Incidence *incidence) 3515void CalendarView::editIncidence(Incidence *incidence)
3512{ 3516{
3513 if ( incidence ) { 3517 if ( incidence ) {
3514 3518
3515 EditIncidenceVisitor v; 3519 EditIncidenceVisitor v;
3516 v.act( incidence, this ); 3520 v.act( incidence, this );
3517 3521
3518 } 3522 }
3519} 3523}
3520 3524
3521void CalendarView::deleteIncidence(Incidence *incidence) 3525void CalendarView::deleteIncidence(Incidence *incidence)
3522{ 3526{
3523 //qDebug(" CalendarView::deleteIncidence "); 3527 //qDebug(" CalendarView::deleteIncidence ");
3524 if ( incidence ) { 3528 if ( incidence ) {
3525 DeleteIncidenceVisitor v; 3529 DeleteIncidenceVisitor v;
3526 v.act( incidence, this ); 3530 v.act( incidence, this );
3527 } 3531 }
3528} 3532}
3529 3533
3530 3534
3531void CalendarView::lookForOutgoingMessages() 3535void CalendarView::lookForOutgoingMessages()
3532{ 3536{
3533 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3537 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3534 ogd->loadMessages(); 3538 ogd->loadMessages();
3535} 3539}
3536 3540
3537void CalendarView::lookForIncomingMessages() 3541void CalendarView::lookForIncomingMessages()
3538{ 3542{
3539 IncomingDialog *icd = mDialogManager->incomingDialog(); 3543 IncomingDialog *icd = mDialogManager->incomingDialog();
3540 icd->retrieve(); 3544 icd->retrieve();
3541} 3545}
3542 3546
3543bool CalendarView::removeCompletedSubTodos( Todo* t ) 3547bool CalendarView::removeCompletedSubTodos( Todo* t )
3544{ 3548{
3545 bool deleteTodo = true; 3549 bool deleteTodo = true;
3546 QPtrList<Incidence> subTodos; 3550 QPtrList<Incidence> subTodos;
3547 Incidence *aTodo; 3551 Incidence *aTodo;
3548 subTodos = t->relations(); 3552 subTodos = t->relations();
3549 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3553 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3550 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3554 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3551 deleteTodo = false; 3555 deleteTodo = false;
3552 } 3556 }
3553 if ( deleteTodo ) { 3557 if ( deleteTodo ) {
3554 if ( t->isCompleted() ) { 3558 if ( t->isCompleted() ) {
3555 checkExternalId( t ); 3559 checkExternalId( t );
3556 mCalendar->deleteTodo( t ); 3560 mCalendar->deleteTodo( t );
3557 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3561 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3558 } 3562 }
3559 else 3563 else
3560 deleteTodo = false; 3564 deleteTodo = false;
3561 } 3565 }
3562 return deleteTodo; 3566 return deleteTodo;
3563 3567
3564} 3568}
3565void CalendarView::purgeCompleted() 3569void CalendarView::purgeCompleted()
3566{ 3570{
3567 int result = KMessageBox::warningContinueCancel(this, 3571 int result = KMessageBox::warningContinueCancel(this,
3568 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3572 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3569 3573
3570 if (result == KMessageBox::Continue) { 3574 if (result == KMessageBox::Continue) {
3571 3575
3572 QPtrList<Todo> todoCal; 3576 QPtrList<Todo> todoCal;
3573 QPtrList<Todo> rootTodos; 3577 QPtrList<Todo> rootTodos;
3574 //QPtrList<Incidence> rel; 3578 //QPtrList<Incidence> rel;
3575 Todo *aTodo;//, *rTodo; 3579 Todo *aTodo;//, *rTodo;
3576 Incidence *rIncidence; 3580 Incidence *rIncidence;
3577 bool childDelete = false; 3581 bool childDelete = false;
3578 bool deletedOne = true; 3582 bool deletedOne = true;
3579 todoCal = calendar()->todos(); 3583 todoCal = calendar()->todos();
3580 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3584 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3581 if ( !aTodo->relatedTo() ) 3585 if ( !aTodo->relatedTo() )
3582 rootTodos.append( aTodo ); 3586 rootTodos.append( aTodo );
3583 } 3587 }
3584 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3588 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3585 removeCompletedSubTodos( aTodo ); 3589 removeCompletedSubTodos( aTodo );
3586 } 3590 }
3587 3591
3588 updateView(); 3592 updateView();
3589 } 3593 }
3590} 3594}
3591 3595
3592void CalendarView::slotCalendarChanged() 3596void CalendarView::slotCalendarChanged()
3593{ 3597{
3594 ; 3598 ;
3595} 3599}
3596 3600
3597NavigatorBar *CalendarView::navigatorBar() 3601NavigatorBar *CalendarView::navigatorBar()
3598{ 3602{
3599 return mNavigatorBar; 3603 return mNavigatorBar;
3600} 3604}
3601 3605
3602 3606
3603 3607
3604void CalendarView::keyPressEvent ( QKeyEvent *e) 3608void CalendarView::keyPressEvent ( QKeyEvent *e)
3605{ 3609{
3606 //qDebug(" alendarView::keyPressEvent "); 3610 //qDebug(" alendarView::keyPressEvent ");
3607 e->ignore(); 3611 e->ignore();
3608} 3612}
3609 3613
3610//#include "calendarview.moc" 3614//#include "calendarview.moc"
3611 3615
3612//#include "calendarviewbase.moc" 3616//#include "calendarviewbase.moc"