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