summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index fab4540..5150455 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,1979 +1,1979 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) 1997, 1998, 1999
8 Preston Brown (preston.brown@yale.edu) 8 Preston Brown (preston.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66 66
67#include <libkcal/vcaldrag.h> 67#include <libkcal/vcaldrag.h>
68#include <libkcal/icaldrag.h> 68#include <libkcal/icaldrag.h>
69#include <libkcal/icalformat.h> 69#include <libkcal/icalformat.h>
70#include <libkcal/vcalformat.h> 70#include <libkcal/vcalformat.h>
71#include <libkcal/scheduler.h> 71#include <libkcal/scheduler.h>
72#include <libkcal/calendarlocal.h> 72#include <libkcal/calendarlocal.h>
73#include <libkcal/journal.h> 73#include <libkcal/journal.h>
74#include <libkcal/calfilter.h> 74#include <libkcal/calfilter.h>
75#include <libkcal/attendee.h> 75#include <libkcal/attendee.h>
76#include <libkcal/dndfactory.h> 76#include <libkcal/dndfactory.h>
77#include <libkcal/freebusy.h> 77#include <libkcal/freebusy.h>
78#include <libkcal/filestorage.h> 78#include <libkcal/filestorage.h>
79#include <libkcal/calendarresources.h> 79#include <libkcal/calendarresources.h>
80#include <libkcal/qtopiaformat.h> 80#include <libkcal/qtopiaformat.h>
81#include "../kalarmd/alarmdialog.h" 81#include "../kalarmd/alarmdialog.h"
82 82
83#ifndef DESKTOP_VERSION 83#ifndef DESKTOP_VERSION
84#include <libkcal/sharpformat.h> 84#include <libkcal/sharpformat.h>
85#endif 85#endif
86#ifndef KORG_NOMAIL 86#ifndef KORG_NOMAIL
87#include "komailclient.h" 87#include "komailclient.h"
88#endif 88#endif
89#ifndef KORG_NOPRINTER 89#ifndef KORG_NOPRINTER
90#include "calprinter.h" 90#include "calprinter.h"
91#endif 91#endif
92#ifndef KORG_NOPLUGINS 92#ifndef KORG_NOPLUGINS
93#include "kocore.h" 93#include "kocore.h"
94#endif 94#endif
95#include "koeventeditor.h" 95#include "koeventeditor.h"
96#include "kotodoeditor.h" 96#include "kotodoeditor.h"
97#include "koprefs.h" 97#include "koprefs.h"
98#include "koeventviewerdialog.h" 98#include "koeventviewerdialog.h"
99#include "publishdialog.h" 99#include "publishdialog.h"
100#include "kofilterview.h" 100#include "kofilterview.h"
101#include "koglobals.h" 101#include "koglobals.h"
102#include "koviewmanager.h" 102#include "koviewmanager.h"
103#include "koagendaview.h" 103#include "koagendaview.h"
104#include "kodialogmanager.h" 104#include "kodialogmanager.h"
105#include "outgoingdialog.h" 105#include "outgoingdialog.h"
106#include "incomingdialog.h" 106#include "incomingdialog.h"
107#include "statusdialog.h" 107#include "statusdialog.h"
108#include "kdatenavigator.h" 108#include "kdatenavigator.h"
109#include "kotodoview.h" 109#include "kotodoview.h"
110#include "datenavigator.h" 110#include "datenavigator.h"
111#include "resourceview.h" 111#include "resourceview.h"
112#include "navigatorbar.h" 112#include "navigatorbar.h"
113#include "searchdialog.h" 113#include "searchdialog.h"
114#include "mainwindow.h" 114#include "mainwindow.h"
115 115
116#include "calendarview.h" 116#include "calendarview.h"
117#ifndef DESKTOP_VERSION 117#ifndef DESKTOP_VERSION
118#include <qtopia/alarmserver.h> 118#include <qtopia/alarmserver.h>
119#endif 119#endif
120#ifndef _WIN32_ 120#ifndef _WIN32_
121#include <stdlib.h> 121#include <stdlib.h>
122#include <stdio.h> 122#include <stdio.h>
123#include <unistd.h> 123#include <unistd.h>
124#else 124#else
125#include <qprocess.h> 125#include <qprocess.h>
126#endif 126#endif
127using namespace KOrg; 127using namespace KOrg;
128using namespace KCal; 128using namespace KCal;
129extern int globalFlagBlockAgenda; 129extern int globalFlagBlockAgenda;
130extern int globalFlagBlockStartup; 130extern int globalFlagBlockStartup;
131 131
132 132
133 133
134class KOBeamPrefs : public QDialog 134class KOBeamPrefs : public QDialog
135{ 135{
136 public: 136 public:
137 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 137 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
138 QDialog( parent, name, true ) 138 QDialog( parent, name, true )
139 { 139 {
140 setCaption( i18n("Beam Options") ); 140 setCaption( i18n("Beam Options") );
141 QVBoxLayout* lay = new QVBoxLayout( this ); 141 QVBoxLayout* lay = new QVBoxLayout( this );
142 lay->setSpacing( 3 ); 142 lay->setSpacing( 3 );
143 lay->setMargin( 3 ); 143 lay->setMargin( 3 );
144 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 144 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
145 lay->addWidget( format ); 145 lay->addWidget( format );
146 format->setExclusive ( true ) ; 146 format->setExclusive ( true ) ;
147 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 147 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
148 lay->addWidget( time ); time->setExclusive ( true ) ; 148 lay->addWidget( time ); time->setExclusive ( true ) ;
149 vcal = new QRadioButton(" vCalendar ", format ); 149 vcal = new QRadioButton(" vCalendar ", format );
150 ical = new QRadioButton(" iCalendar ", format ); 150 ical = new QRadioButton(" iCalendar ", format );
151 vcal->setChecked( true ); 151 vcal->setChecked( true );
152 tz = new QRadioButton(i18n(" With timezone "), time ); 152 tz = new QRadioButton(i18n(" With timezone "), time );
153 local = new QRadioButton(i18n(" Local time "), time ); 153 local = new QRadioButton(i18n(" Local time "), time );
154 tz->setChecked( true ); 154 tz->setChecked( true );
155 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 155 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
156 lay->addWidget( ok ); 156 lay->addWidget( ok );
157 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 157 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
158 lay->addWidget( cancel ); 158 lay->addWidget( cancel );
159 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 159 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
160 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 160 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
161 resize( 200, 200 ); 161 resize( 200, 200 );
162 } 162 }
163 163
164 bool beamVcal() { return vcal->isChecked(); } 164 bool beamVcal() { return vcal->isChecked(); }
165 bool beamLocal() { return local->isChecked(); } 165 bool beamLocal() { return local->isChecked(); }
166private: 166private:
167 QRadioButton* vcal, *ical, *local, *tz; 167 QRadioButton* vcal, *ical, *local, *tz;
168}; 168};
169class KOCatPrefs : public QDialog 169class KOCatPrefs : public QDialog
170{ 170{
171 public: 171 public:
172 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 172 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
173 QDialog( parent, name, true ) 173 QDialog( parent, name, true )
174 { 174 {
175 setCaption( i18n("Manage new Categories") ); 175 setCaption( i18n("Manage new Categories") );
176 QVBoxLayout* lay = new QVBoxLayout( this ); 176 QVBoxLayout* lay = new QVBoxLayout( this );
177 lay->setSpacing( 3 ); 177 lay->setSpacing( 3 );
178 lay->setMargin( 3 ); 178 lay->setMargin( 3 );
179 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 ); 179 QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this );
180 lay->addWidget( lab ); 180 lay->addWidget( lab );
181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 181 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
182 lay->addWidget( format ); 182 lay->addWidget( format );
183 format->setExclusive ( true ) ; 183 format->setExclusive ( true ) ;
184 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 184 addCatBut = new QRadioButton(i18n("Add to category list"), format );
185 new QRadioButton(i18n("Remove from Events/Todos"), format ); 185 new QRadioButton(i18n("Remove from Events/Todos"), format );
186 addCatBut->setChecked( true ); 186 addCatBut->setChecked( true );
187 QPushButton * ok = new QPushButton( i18n("OK"), this ); 187 QPushButton * ok = new QPushButton( i18n("OK"), this );
188 lay->addWidget( ok ); 188 lay->addWidget( ok );
189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 189 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
190 lay->addWidget( cancel ); 190 lay->addWidget( cancel );
191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 191 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 192 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
193 resize( 200, 200 ); 193 resize( 200, 200 );
194 } 194 }
195 195
196 bool addCat() { return addCatBut->isChecked(); } 196 bool addCat() { return addCatBut->isChecked(); }
197private: 197private:
198 QRadioButton* addCatBut; 198 QRadioButton* addCatBut;
199}; 199};
200 200
201 201
202 202
203CalendarView::CalendarView( CalendarResources *calendar, 203CalendarView::CalendarView( CalendarResources *calendar,
204 QWidget *parent, const char *name ) 204 QWidget *parent, const char *name )
205 : CalendarViewBase( parent, name ), 205 : CalendarViewBase( parent, name ),
206 mCalendar( calendar ), 206 mCalendar( calendar ),
207 mResourceManager( calendar->resourceManager() ) 207 mResourceManager( calendar->resourceManager() )
208{ 208{
209 209
210 mEventEditor = 0; 210 mEventEditor = 0;
211 mTodoEditor = 0; 211 mTodoEditor = 0;
212 212
213 init(); 213 init();
214} 214}
215 215
216CalendarView::CalendarView( Calendar *calendar, 216CalendarView::CalendarView( Calendar *calendar,
217 QWidget *parent, const char *name ) 217 QWidget *parent, const char *name )
218 : CalendarViewBase( parent, name ), 218 : CalendarViewBase( parent, name ),
219 mCalendar( calendar ), 219 mCalendar( calendar ),
220 mResourceManager( 0 ) 220 mResourceManager( 0 )
221{ 221{
222 222
223 mEventEditor = 0; 223 mEventEditor = 0;
224 mTodoEditor = 0; 224 mTodoEditor = 0;
225 init();} 225 init();}
226 226
227void CalendarView::init() 227void CalendarView::init()
228{ 228{
229 beamDialog = new KOBeamPrefs(); 229 beamDialog = new KOBeamPrefs();
230 mDatePickerMode = 0; 230 mDatePickerMode = 0;
231 mCurrentSyncDevice = ""; 231 mCurrentSyncDevice = "";
232 writeLocale(); 232 writeLocale();
233 mViewManager = new KOViewManager( this ); 233 mViewManager = new KOViewManager( this );
234 mDialogManager = new KODialogManager( this ); 234 mDialogManager = new KODialogManager( this );
235 mEventViewerDialog = 0; 235 mEventViewerDialog = 0;
236 mModified = false; 236 mModified = false;
237 mReadOnly = false; 237 mReadOnly = false;
238 mSelectedIncidence = 0; 238 mSelectedIncidence = 0;
239 mCalPrinter = 0; 239 mCalPrinter = 0;
240 mFilters.setAutoDelete(true); 240 mFilters.setAutoDelete(true);
241 241
242 mCalendar->registerObserver( this ); 242 mCalendar->registerObserver( this );
243 // TODO: Make sure that view is updated, when calendar is changed. 243 // TODO: Make sure that view is updated, when calendar is changed.
244 244
245 mStorage = new FileStorage( mCalendar ); 245 mStorage = new FileStorage( mCalendar );
246 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 246 mNavigator = new DateNavigator( this, "datevav", mViewManager );
247 247
248 QBoxLayout *topLayout = (QBoxLayout*)layout(); 248 QBoxLayout *topLayout = (QBoxLayout*)layout();
249#ifndef KORG_NOSPLITTER 249#ifndef KORG_NOSPLITTER
250 // create the main layout frames. 250 // create the main layout frames.
251 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 251 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
252 topLayout->addWidget(mPanner); 252 topLayout->addWidget(mPanner);
253 253
254 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 254 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
255 "CalendarView::LeftFrame"); 255 "CalendarView::LeftFrame");
256 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 256 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
257 257
258 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 258 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
259 "CalendarView::DateNavigator", QDate::currentDate() ); 259 "CalendarView::DateNavigator", QDate::currentDate() );
260 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 260 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
261 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 261 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
262 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 262 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
263 263
264#ifdef KORG_NORESOURCEVIEW 264#ifdef KORG_NORESOURCEVIEW
265 mResourceView = 0; 265 mResourceView = 0;
266#else 266#else
267 if ( mResourceManager ) { 267 if ( mResourceManager ) {
268 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 268 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
269 mResourceView->updateView(); 269 mResourceView->updateView();
270 connect( mResourceView, SIGNAL( resourcesChanged() ), 270 connect( mResourceView, SIGNAL( resourcesChanged() ),
271 SLOT( updateView() ) ); 271 SLOT( updateView() ) );
272 } else { 272 } else {
273 mResourceView = 0; 273 mResourceView = 0;
274 } 274 }
275#endif 275#endif
276 QWidget *rightBox = new QWidget( mPanner ); 276 QWidget *rightBox = new QWidget( mPanner );
277 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 277 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
278 278
279 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 279 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
280 rightLayout->addWidget( mNavigatorBar ); 280 rightLayout->addWidget( mNavigatorBar );
281 281
282 mRightFrame = new QWidgetStack( rightBox ); 282 mRightFrame = new QWidgetStack( rightBox );
283 rightLayout->addWidget( mRightFrame, 1 ); 283 rightLayout->addWidget( mRightFrame, 1 );
284 284
285 mLeftFrame = mLeftSplitter; 285 mLeftFrame = mLeftSplitter;
286#else 286#else
287 QWidget *mainBox = new QWidget( this ); 287 QWidget *mainBox = new QWidget( this );
288 QWidget *leftFrame = new QWidget( mainBox ); 288 QWidget *leftFrame = new QWidget( mainBox );
289 289
290 QBoxLayout * mainBoxLayout; 290 QBoxLayout * mainBoxLayout;
291 QBoxLayout * leftFrameLayout; 291 QBoxLayout * leftFrameLayout;
292 if ( KOPrefs::instance()->mVerticalScreen ) { 292 if ( KOPrefs::instance()->mVerticalScreen ) {
293 mainBoxLayout = new QVBoxLayout(mainBox); 293 mainBoxLayout = new QVBoxLayout(mainBox);
294 leftFrameLayout = new QHBoxLayout(leftFrame ); 294 leftFrameLayout = new QHBoxLayout(leftFrame );
295 } else { 295 } else {
296 mainBoxLayout = new QHBoxLayout(mainBox); 296 mainBoxLayout = new QHBoxLayout(mainBox);
297 leftFrameLayout = new QVBoxLayout(leftFrame ); 297 leftFrameLayout = new QVBoxLayout(leftFrame );
298 } 298 }
299 topLayout->addWidget( mainBox ); 299 topLayout->addWidget( mainBox );
300 mainBoxLayout->addWidget (leftFrame); 300 mainBoxLayout->addWidget (leftFrame);
301 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 301 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
302 "CalendarView::DateNavigator", QDate::currentDate()); 302 "CalendarView::DateNavigator", QDate::currentDate());
303 // mDateNavigator->blockSignals( true ); 303 // mDateNavigator->blockSignals( true );
304 leftFrameLayout->addWidget( mDateNavigator ); 304 leftFrameLayout->addWidget( mDateNavigator );
305 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 305 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
306 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist"); 306 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolist");
307 307
308 if ( QApplication::desktop()->width() < 480 ) { 308 if ( QApplication::desktop()->width() < 480 ) {
309 leftFrameLayout->addWidget(mFilterView); 309 leftFrameLayout->addWidget(mFilterView);
310 leftFrameLayout->addWidget(mTodoList, 2 ); 310 leftFrameLayout->addWidget(mTodoList, 2 );
311 311
312 } else { 312 } else {
313 leftFrameLayout->addWidget(mTodoList,2 ); 313 leftFrameLayout->addWidget(mTodoList,2 );
314 leftFrameLayout->addWidget(mFilterView ); 314 leftFrameLayout->addWidget(mFilterView );
315 } 315 }
316 mFilterView->hide(); 316 mFilterView->hide();
317 QWidget *rightBox = new QWidget( mainBox ); 317 QWidget *rightBox = new QWidget( mainBox );
318 mainBoxLayout->addWidget ( rightBox, 10 ); 318 mainBoxLayout->addWidget ( rightBox, 10 );
319 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 319 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
320 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 320 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
321 mRightFrame = new QWidgetStack( rightBox ); 321 mRightFrame = new QWidgetStack( rightBox );
322 rightLayout->addWidget( mNavigatorBar ); 322 rightLayout->addWidget( mNavigatorBar );
323 rightLayout->addWidget( mRightFrame, 10 ); 323 rightLayout->addWidget( mRightFrame, 10 );
324 324
325 mLeftFrame = leftFrame; 325 mLeftFrame = leftFrame;
326 if ( KOPrefs::instance()->mVerticalScreen ) { 326 if ( KOPrefs::instance()->mVerticalScreen ) {
327 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 327 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
328 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 328 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
329 } else { 329 } else {
330 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 330 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
331 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 331 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
332 } 332 }
333 333
334 //qDebug("Calendarview Size %d %d ", width(), height()); 334 //qDebug("Calendarview Size %d %d ", width(), height());
335#endif 335#endif
336 336
337 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 337 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
338 SLOT( showDates( const KCal::DateList & ) ) ); 338 SLOT( showDates( const KCal::DateList & ) ) );
339 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 339 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
340 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 340 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
341 341
342 connect( mNavigatorBar, SIGNAL( goPrevYear() ), 342 connect( mNavigatorBar, SIGNAL( goPrevYear() ),
343 mNavigator, SLOT( selectPreviousYear() ) ); 343 mNavigator, SLOT( selectPreviousYear() ) );
344 connect( mNavigatorBar, SIGNAL( goNextYear() ), 344 connect( mNavigatorBar, SIGNAL( goNextYear() ),
345 mNavigator, SLOT( selectNextYear() ) ); 345 mNavigator, SLOT( selectNextYear() ) );
346 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), 346 connect( mNavigatorBar, SIGNAL( goPrevMonth() ),
347 mNavigator, SLOT( selectPreviousMonth() ) ); 347 mNavigator, SLOT( selectPreviousMonth() ) );
348 connect( mNavigatorBar, SIGNAL( goNextMonth() ), 348 connect( mNavigatorBar, SIGNAL( goNextMonth() ),
349 mNavigator, SLOT( selectNextMonth() ) ); 349 mNavigator, SLOT( selectNextMonth() ) );
350 350
351 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 351 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
352 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) ); 352 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) );
353 353
354 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 354 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
355 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 355 mNavigator, SLOT( selectWeek( const QDate & ) ) );
356 356
357 connect( mDateNavigator, SIGNAL( goPrevYear() ), 357 connect( mDateNavigator, SIGNAL( goPrevYear() ),
358 mNavigator, SLOT( selectPreviousYear() ) ); 358 mNavigator, SLOT( selectPreviousYear() ) );
359 connect( mDateNavigator, SIGNAL( goNextYear() ), 359 connect( mDateNavigator, SIGNAL( goNextYear() ),
360 mNavigator, SLOT( selectNextYear() ) ); 360 mNavigator, SLOT( selectNextYear() ) );
361 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 361 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
362 mNavigator, SLOT( selectPreviousMonth() ) ); 362 mNavigator, SLOT( selectPreviousMonth() ) );
363 connect( mDateNavigator, SIGNAL( goNextMonth() ), 363 connect( mDateNavigator, SIGNAL( goNextMonth() ),
364 mNavigator, SLOT( selectNextMonth() ) ); 364 mNavigator, SLOT( selectNextMonth() ) );
365 365
366 connect( mDateNavigator, SIGNAL( goPrevious() ), 366 connect( mDateNavigator, SIGNAL( goPrevious() ),
367 mNavigator, SLOT( selectPrevious() ) ); 367 mNavigator, SLOT( selectPrevious() ) );
368 connect( mDateNavigator, SIGNAL( goNext() ), 368 connect( mDateNavigator, SIGNAL( goNext() ),
369 mNavigator, SLOT( selectNext() ) ); 369 mNavigator, SLOT( selectNext() ) );
370 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 370 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
371 mNavigator, SLOT( slotMonthSelect( int ) ) ); 371 mNavigator, SLOT( slotMonthSelect( int ) ) );
372 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ), 372 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ),
373 mNavigator, SLOT( slotMonthSelect( int ) ) ); 373 mNavigator, SLOT( slotMonthSelect( int ) ) );
374 374
375 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 375 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
376 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 376 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
377 377
378 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ), 378 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ),
379 SLOT( eventAdded( Event *) ) ); 379 SLOT( eventAdded( Event *) ) );
380 380
381 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 381 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
382 382
383 connect( this, SIGNAL( configChanged() ), 383 connect( this, SIGNAL( configChanged() ),
384 mDateNavigator, SLOT( updateConfig() ) ); 384 mDateNavigator, SLOT( updateConfig() ) );
385 385
386 connect( mTodoList, SIGNAL( newTodoSignal() ), 386 connect( mTodoList, SIGNAL( newTodoSignal() ),
387 SLOT( newTodo() ) ); 387 SLOT( newTodo() ) );
388 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 388 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
389 SLOT( newSubTodo( Todo * ) ) ); 389 SLOT( newSubTodo( Todo * ) ) );
390 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 390 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
391 SLOT( editTodo( Todo * ) ) ); 391 SLOT( editTodo( Todo * ) ) );
392 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 392 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
393 SLOT( showTodo( Todo *) ) ); 393 SLOT( showTodo( Todo *) ) );
394 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 394 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
395 SLOT( deleteTodo( Todo *) ) ); 395 SLOT( deleteTodo( Todo *) ) );
396 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 396 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
397 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 397 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
398 SLOT( purgeCompleted() ) ); 398 SLOT( purgeCompleted() ) );
399 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 399 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
400 SIGNAL( todoModified( Todo *, int ) ) ); 400 SIGNAL( todoModified( Todo *, int ) ) );
401 401
402 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 402 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
403 this, SLOT ( cloneIncidence( Incidence * ) ) ); 403 this, SLOT ( cloneIncidence( Incidence * ) ) );
404 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 404 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
405 this, SLOT (cancelIncidence( Incidence * ) ) ); 405 this, SLOT (cancelIncidence( Incidence * ) ) );
406 406
407 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 407 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
408 this, SLOT ( moveIncidence( Incidence * ) ) ); 408 this, SLOT ( moveIncidence( Incidence * ) ) );
409 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 409 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
410 this, SLOT ( beamIncidence( Incidence * ) ) ); 410 this, SLOT ( beamIncidence( Incidence * ) ) );
411 411
412 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 412 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
413 this, SLOT ( todo_unsub( Todo * ) ) ); 413 this, SLOT ( todo_unsub( Todo * ) ) );
414 414
415 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 415 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
416 SLOT( updateTodo( Todo *, int ) ) ); 416 SLOT( updateTodo( Todo *, int ) ) );
417 connect( this, SIGNAL( todoModified( Todo *, int )), this, 417 connect( this, SIGNAL( todoModified( Todo *, int )), this,
418 SLOT( changeTodoDisplay( Todo *, int ) ) ); 418 SLOT( changeTodoDisplay( Todo *, int ) ) );
419 419
420 420
421 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 421 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
422 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 422 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
423 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 423 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
424 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 424 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
425 425
426 426
427 427
428 428
429 429
430 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 430 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
431 SLOT(checkClipboard())); 431 SLOT(checkClipboard()));
432 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 432 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
433 SLOT( processTodoListSelection( Incidence * ) ) ); 433 SLOT( processTodoListSelection( Incidence * ) ) );
434 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 434 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
435 435
436 // kdDebug() << "CalendarView::CalendarView() done" << endl; 436 // kdDebug() << "CalendarView::CalendarView() done" << endl;
437 437
438 mDateFrame = new QVBox(0,0,WType_Popup); 438 mDateFrame = new QVBox(0,0,WType_Popup);
439 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 439 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
440 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 440 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
441 mDateFrame->setLineWidth(3); 441 mDateFrame->setLineWidth(3);
442 mDateFrame->hide(); 442 mDateFrame->hide();
443 mDateFrame->setCaption( i18n( "Pick a date to display")); 443 mDateFrame->setCaption( i18n( "Pick a date to display"));
444 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 444 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
445 445
446 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 446 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
447 447
448 mEventEditor = mDialogManager->getEventEditor(); 448 mEventEditor = mDialogManager->getEventEditor();
449 mTodoEditor = mDialogManager->getTodoEditor(); 449 mTodoEditor = mDialogManager->getTodoEditor();
450 450
451 mFlagEditDescription = false; 451 mFlagEditDescription = false;
452 452
453 mSuspendTimer = new QTimer( this ); 453 mSuspendTimer = new QTimer( this );
454 mAlarmTimer = new QTimer( this ); 454 mAlarmTimer = new QTimer( this );
455 mRecheckAlarmTimer = new QTimer( this ); 455 mRecheckAlarmTimer = new QTimer( this );
456 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 456 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
457 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 457 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
458 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 458 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
459 mAlarmDialog = new AlarmDialog( this ); 459 mAlarmDialog = new AlarmDialog( this );
460 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 460 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
461 mAlarmDialog->setServerNotification( false ); 461 mAlarmDialog->setServerNotification( false );
462 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 462 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
463} 463}
464 464
465 465
466CalendarView::~CalendarView() 466CalendarView::~CalendarView()
467{ 467{
468 // kdDebug() << "~CalendarView()" << endl; 468 // kdDebug() << "~CalendarView()" << endl;
469 //qDebug("CalendarView::~CalendarView() "); 469 //qDebug("CalendarView::~CalendarView() ");
470 delete mDialogManager; 470 delete mDialogManager;
471 delete mViewManager; 471 delete mViewManager;
472 delete mStorage; 472 delete mStorage;
473 delete mDateFrame ; 473 delete mDateFrame ;
474 delete beamDialog; 474 delete beamDialog;
475 //kdDebug() << "~CalendarView() done" << endl; 475 //kdDebug() << "~CalendarView() done" << endl;
476} 476}
477void CalendarView::timerAlarm() 477void CalendarView::timerAlarm()
478{ 478{
479 //qDebug("CalendarView::timerAlarm() "); 479 //qDebug("CalendarView::timerAlarm() ");
480 computeAlarm(mAlarmNotification ); 480 computeAlarm(mAlarmNotification );
481} 481}
482 482
483void CalendarView::suspendAlarm() 483void CalendarView::suspendAlarm()
484{ 484{
485 //qDebug(" CalendarView::suspendAlarm() "); 485 //qDebug(" CalendarView::suspendAlarm() ");
486 computeAlarm(mSuspendAlarmNotification ); 486 computeAlarm(mSuspendAlarmNotification );
487 487
488} 488}
489 489
490void CalendarView::startAlarm( QString mess , QString filename) 490void CalendarView::startAlarm( QString mess , QString filename)
491{ 491{
492 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 492 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
493 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 493 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
494 494
495} 495}
496 496
497void CalendarView::checkNextTimerAlarm() 497void CalendarView::checkNextTimerAlarm()
498{ 498{
499 mCalendar->checkAlarmForIncidence( 0, true ); 499 mCalendar->checkAlarmForIncidence( 0, true );
500} 500}
501 501
502void CalendarView::computeAlarm( QString msg ) 502void CalendarView::computeAlarm( QString msg )
503{ 503{
504 504
505 QString mess = msg; 505 QString mess = msg;
506 QString mAlarmMessage = mess.mid( 9 ); 506 QString mAlarmMessage = mess.mid( 9 );
507 QString filename = MainWindow::resourcePath(); 507 QString filename = MainWindow::resourcePath();
508 filename += "koalarm.wav"; 508 filename += "koalarm.wav";
509 QString tempfilename; 509 QString tempfilename;
510 if ( mess.left( 13 ) == "suspend_alarm") { 510 if ( mess.left( 13 ) == "suspend_alarm") {
511 bool error = false; 511 bool error = false;
512 int len = mess.mid( 13 ).find("+++"); 512 int len = mess.mid( 13 ).find("+++");
513 if ( len < 2 ) 513 if ( len < 2 )
514 error = true; 514 error = true;
515 else { 515 else {
516 tempfilename = mess.mid( 13, len ); 516 tempfilename = mess.mid( 13, len );
517 if ( !QFile::exists( tempfilename ) ) 517 if ( !QFile::exists( tempfilename ) )
518 error = true; 518 error = true;
519 } 519 }
520 if ( ! error ) { 520 if ( ! error ) {
521 filename = tempfilename; 521 filename = tempfilename;
522 } 522 }
523 mAlarmMessage = mess.mid( 13+len+3 ); 523 mAlarmMessage = mess.mid( 13+len+3 );
524 //qDebug("suspend file %s ",tempfilename.latin1() ); 524 //qDebug("suspend file %s ",tempfilename.latin1() );
525 startAlarm( mAlarmMessage, filename); 525 startAlarm( mAlarmMessage, filename);
526 return; 526 return;
527 } 527 }
528 if ( mess.left( 11 ) == "timer_alarm") { 528 if ( mess.left( 11 ) == "timer_alarm") {
529 //mTimerTime = 0; 529 //mTimerTime = 0;
530 startAlarm( mess.mid( 11 ), filename ); 530 startAlarm( mess.mid( 11 ), filename );
531 return; 531 return;
532 } 532 }
533 if ( mess.left( 10 ) == "proc_alarm") { 533 if ( mess.left( 10 ) == "proc_alarm") {
534 bool error = false; 534 bool error = false;
535 int len = mess.mid( 10 ).find("+++"); 535 int len = mess.mid( 10 ).find("+++");
536 if ( len < 2 ) 536 if ( len < 2 )
537 error = true; 537 error = true;
538 else { 538 else {
539 tempfilename = mess.mid( 10, len ); 539 tempfilename = mess.mid( 10, len );
540 if ( !QFile::exists( tempfilename ) ) 540 if ( !QFile::exists( tempfilename ) )
541 error = true; 541 error = true;
542 } 542 }
543 if ( error ) { 543 if ( error ) {
544 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 544 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
545 mAlarmMessage += mess.mid( 10+len+3+9 ); 545 mAlarmMessage += mess.mid( 10+len+3+9 );
546 } else { 546 } else {
547 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 547 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
548 //qDebug("-----system command %s ",tempfilename.latin1() ); 548 //qDebug("-----system command %s ",tempfilename.latin1() );
549#ifndef _WIN32_ 549#ifndef _WIN32_
550 if ( vfork () == 0 ) { 550 if ( vfork () == 0 ) {
551 execl ( tempfilename.latin1(), 0 ); 551 execl ( tempfilename.latin1(), 0 );
552 return; 552 return;
553 } 553 }
554#else 554#else
555 QProcess* p = new QProcess(); 555 QProcess* p = new QProcess();
556 p->addArgument( tempfilename.latin1() ); 556 p->addArgument( tempfilename.latin1() );
557 p->start(); 557 p->start();
558 return; 558 return;
559#endif 559#endif
560 560
561 return; 561 return;
562 } 562 }
563 563
564 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 564 //qDebug("+++++++system command %s ",tempfilename.latin1() );
565 } 565 }
566 if ( mess.left( 11 ) == "audio_alarm") { 566 if ( mess.left( 11 ) == "audio_alarm") {
567 bool error = false; 567 bool error = false;
568 int len = mess.mid( 11 ).find("+++"); 568 int len = mess.mid( 11 ).find("+++");
569 if ( len < 2 ) 569 if ( len < 2 )
570 error = true; 570 error = true;
571 else { 571 else {
572 tempfilename = mess.mid( 11, len ); 572 tempfilename = mess.mid( 11, len );
573 if ( !QFile::exists( tempfilename ) ) 573 if ( !QFile::exists( tempfilename ) )
574 error = true; 574 error = true;
575 } 575 }
576 if ( ! error ) { 576 if ( ! error ) {
577 filename = tempfilename; 577 filename = tempfilename;
578 } 578 }
579 mAlarmMessage = mess.mid( 11+len+3+9 ); 579 mAlarmMessage = mess.mid( 11+len+3+9 );
580 //qDebug("audio file command %s ",tempfilename.latin1() ); 580 //qDebug("audio file command %s ",tempfilename.latin1() );
581 } 581 }
582 if ( mess.left( 9 ) == "cal_alarm") { 582 if ( mess.left( 9 ) == "cal_alarm") {
583 mAlarmMessage = mess.mid( 9 ) ; 583 mAlarmMessage = mess.mid( 9 ) ;
584 } 584 }
585 585
586 startAlarm( mAlarmMessage, filename ); 586 startAlarm( mAlarmMessage, filename );
587 587
588 588
589} 589}
590 590
591void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 591void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
592{ 592{
593 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 593 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
594 594
595 mSuspendAlarmNotification = noti; 595 mSuspendAlarmNotification = noti;
596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 596 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 597 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
598 mSuspendTimer->start( ms , true ); 598 mSuspendTimer->start( ms , true );
599 599
600} 600}
601 601
602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 602void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
603{ 603{
604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 604 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 605 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
606#ifndef DESKTOP_VERSION 606#ifndef DESKTOP_VERSION
607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 607 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
608#endif 608#endif
609 return; 609 return;
610 } 610 }
611 int maxSec; 611 int maxSec;
612 //maxSec = 5; //testing only 612 //maxSec = 5; //testing only
613 maxSec = 86400+3600; // one day+1hour 613 maxSec = 86400+3600; // one day+1hour
614 mAlarmNotification = noti; 614 mAlarmNotification = noti;
615 int sec = QDateTime::currentDateTime().secsTo( qdt ); 615 int sec = QDateTime::currentDateTime().secsTo( qdt );
616 if ( sec > maxSec ) { 616 if ( sec > maxSec ) {
617 mRecheckAlarmTimer->start( maxSec * 1000 ); 617 mRecheckAlarmTimer->start( maxSec * 1000 );
618 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 618 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
619 return; 619 return;
620 } else { 620 } else {
621 mRecheckAlarmTimer->stop(); 621 mRecheckAlarmTimer->stop();
622 } 622 }
623 //qDebug("Alarm timer started with secs: %d ", sec); 623 //qDebug("Alarm timer started with secs: %d ", sec);
624 mAlarmTimer->start( sec *1000 , true ); 624 mAlarmTimer->start( sec *1000 , true );
625 625
626} 626}
627// called by mRecheckAlarmTimer to get next alarm 627// called by mRecheckAlarmTimer to get next alarm
628// we need this, because a QTimer has only a max range of 25 days 628// we need this, because a QTimer has only a max range of 25 days
629void CalendarView::recheckTimerAlarm() 629void CalendarView::recheckTimerAlarm()
630{ 630{
631 mAlarmTimer->stop(); 631 mAlarmTimer->stop();
632 mRecheckAlarmTimer->stop(); 632 mRecheckAlarmTimer->stop();
633 mCalendar->checkAlarmForIncidence( 0, true ); 633 mCalendar->checkAlarmForIncidence( 0, true );
634} 634}
635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
636{ 636{
637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
639#ifndef DESKTOP_VERSION 639#ifndef DESKTOP_VERSION
640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
641#endif 641#endif
642 return; 642 return;
643 } 643 }
644 mAlarmTimer->stop(); 644 mAlarmTimer->stop();
645} 645}
646void CalendarView::selectWeekNum ( int num ) 646void CalendarView::selectWeekNum ( int num )
647{ 647{
648 dateNavigator()->selectWeek( num ); 648 dateNavigator()->selectWeek( num );
649 mViewManager->showWeekView(); 649 mViewManager->showWeekView();
650} 650}
651KOViewManager *CalendarView::viewManager() 651KOViewManager *CalendarView::viewManager()
652{ 652{
653 return mViewManager; 653 return mViewManager;
654} 654}
655 655
656KODialogManager *CalendarView::dialogManager() 656KODialogManager *CalendarView::dialogManager()
657{ 657{
658 return mDialogManager; 658 return mDialogManager;
659} 659}
660 660
661QDate CalendarView::startDate() 661QDate CalendarView::startDate()
662{ 662{
663 DateList dates = mNavigator->selectedDates(); 663 DateList dates = mNavigator->selectedDates();
664 664
665 return dates.first(); 665 return dates.first();
666} 666}
667 667
668QDate CalendarView::endDate() 668QDate CalendarView::endDate()
669{ 669{
670 DateList dates = mNavigator->selectedDates(); 670 DateList dates = mNavigator->selectedDates();
671 671
672 return dates.last(); 672 return dates.last();
673} 673}
674 674
675 675
676void CalendarView::createPrinter() 676void CalendarView::createPrinter()
677{ 677{
678#ifndef KORG_NOPRINTER 678#ifndef KORG_NOPRINTER
679 if (!mCalPrinter) { 679 if (!mCalPrinter) {
680 mCalPrinter = new CalPrinter(this, mCalendar); 680 mCalPrinter = new CalPrinter(this, mCalendar);
681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
682 } 682 }
683#endif 683#endif
684} 684}
685 685
686void CalendarView::confSync() 686void CalendarView::confSync()
687{ 687{
688 static KSyncPrefsDialog* sp = 0; 688 static KSyncPrefsDialog* sp = 0;
689 if ( ! sp ) { 689 if ( ! sp ) {
690 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 690 sp = new KSyncPrefsDialog( this, "syncprefs", true );
691 } 691 }
692 sp->usrReadConfig(); 692 sp->usrReadConfig();
693#ifndef DESKTOP_VERSION 693#ifndef DESKTOP_VERSION
694 sp->showMaximized(); 694 sp->showMaximized();
695#else 695#else
696 sp->show(); 696 sp->show();
697#endif 697#endif
698 sp->exec(); 698 sp->exec();
699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
701} 701}
702 702
703 703
704//KOPrefs::instance()->mWriteBackFile 704//KOPrefs::instance()->mWriteBackFile
705//KOPrefs::instance()->mWriteBackExistingOnly 705//KOPrefs::instance()->mWriteBackExistingOnly
706 706
707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
713 713
714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
715{ 715{
716 716
717 //void setZaurusId(int id); 717 //void setZaurusId(int id);
718 // int zaurusId() const; 718 // int zaurusId() const;
719 // void setZaurusUid(int id); 719 // void setZaurusUid(int id);
720 // int zaurusUid() const; 720 // int zaurusUid() const;
721 // void setZaurusStat(int id); 721 // void setZaurusStat(int id);
722 // int zaurusStat() const; 722 // int zaurusStat() const;
723 // 0 equal 723 // 0 equal
724 // 1 take local 724 // 1 take local
725 // 2 take remote 725 // 2 take remote
726 // 3 cancel 726 // 3 cancel
727 QDateTime lastSync = mLastCalendarSync; 727 QDateTime lastSync = mLastCalendarSync;
728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
729 bool remCh, locCh; 729 bool remCh, locCh;
730 remCh = ( remote->zaurusUid() != local->zaurusUid() ); 730 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
731 locCh = ( local->lastModified() > mLastCalendarSync ); 731 locCh = ( local->lastModified() > mLastCalendarSync );
732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() ); 732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() );
733 if ( !remCh && ! locCh ) { 733 if ( !remCh && ! locCh ) {
734 //qDebug("both not changed "); 734 //qDebug("both not changed ");
735 lastSync = local->lastModified().addDays(1); 735 lastSync = local->lastModified().addDays(1);
736 } else { 736 } else {
737 if ( locCh ) { 737 if ( locCh ) {
738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() ); 738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() );
739 lastSync = local->lastModified().addDays( -1 ); 739 lastSync = local->lastModified().addDays( -1 );
740 if ( !remCh ) 740 if ( !remCh )
741 remote->setLastModified( lastSync.addDays( -1 ) ); 741 remote->setLastModified( lastSync.addDays( -1 ) );
742 } else { 742 } else {
743 //qDebug(" not loc changed "); 743 //qDebug(" not loc changed ");
744 lastSync = local->lastModified().addDays( 1 ); 744 lastSync = local->lastModified().addDays( 1 );
745 if ( remCh ) 745 if ( remCh )
746 remote->setLastModified( lastSync.addDays( 1 ) ); 746 remote->setLastModified( lastSync.addDays( 1 ) );
747 747
748 } 748 }
749 } 749 }
750 full = true; 750 full = true;
751 if ( mode < SYNC_PREF_ASK ) 751 if ( mode < SYNC_PREF_ASK )
752 mode = SYNC_PREF_ASK; 752 mode = SYNC_PREF_ASK;
753 } else { 753 } else {
754 if ( local->lastModified() == remote->lastModified() ) 754 if ( local->lastModified() == remote->lastModified() )
755 if ( local->revision() == remote->revision() ) 755 if ( local->revision() == remote->revision() )
756 return 0; 756 return 0;
757 757
758 } 758 }
759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
760 760
761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision()); 761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
763 //full = true; //debug only 763 //full = true; //debug only
764 if ( full ) { 764 if ( full ) {
765 bool equ = false; 765 bool equ = false;
766 if ( local->type() == "Event" ) { 766 if ( local->type() == "Event" ) {
767 equ = (*((Event*) local) == *((Event*) remote)); 767 equ = (*((Event*) local) == *((Event*) remote));
768 } 768 }
769 else if ( local->type() =="Todo" ) 769 else if ( local->type() =="Todo" )
770 equ = (*((Todo*) local) == (*(Todo*) remote)); 770 equ = (*((Todo*) local) == (*(Todo*) remote));
771 else if ( local->type() =="Journal" ) 771 else if ( local->type() =="Journal" )
772 equ = (*((Journal*) local) == *((Journal*) remote)); 772 equ = (*((Journal*) local) == *((Journal*) remote));
773 if ( equ ) { 773 if ( equ ) {
774 //qDebug("equal "); 774 //qDebug("equal ");
775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
776 local->setZaurusUid( remote->zaurusUid() ); 776 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
777 } 777 }
778 if ( mode < SYNC_PREF_FORCE_LOCAL ) 778 if ( mode < SYNC_PREF_FORCE_LOCAL )
779 return 0; 779 return 0;
780 780
781 }//else //debug only 781 }//else //debug only
782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
783 } 783 }
784 int result; 784 int result;
785 bool localIsNew; 785 bool localIsNew;
786 if ( full && mode < SYNC_PREF_NEWEST ) 786 if ( full && mode < SYNC_PREF_NEWEST )
787 mode = SYNC_PREF_ASK; 787 mode = SYNC_PREF_ASK;
788 788
789 switch( mode ) { 789 switch( mode ) {
790 case SYNC_PREF_LOCAL: 790 case SYNC_PREF_LOCAL:
791 if ( lastSync > remote->lastModified() ) 791 if ( lastSync > remote->lastModified() )
792 return 1; 792 return 1;
793 if ( lastSync > local->lastModified() ) 793 if ( lastSync > local->lastModified() )
794 return 2; 794 return 2;
795 return 1; 795 return 1;
796 break; 796 break;
797 case SYNC_PREF_REMOTE: 797 case SYNC_PREF_REMOTE:
798 if ( lastSync > remote->lastModified() ) 798 if ( lastSync > remote->lastModified() )
799 return 1; 799 return 1;
800 if ( lastSync > local->lastModified() ) 800 if ( lastSync > local->lastModified() )
801 return 2; 801 return 2;
802 return 2; 802 return 2;
803 break; 803 break;
804 case SYNC_PREF_NEWEST: 804 case SYNC_PREF_NEWEST:
805 if ( local->lastModified() > remote->lastModified() ) 805 if ( local->lastModified() > remote->lastModified() )
806 return 1; 806 return 1;
807 else 807 else
808 return 2; 808 return 2;
809 break; 809 break;
810 case SYNC_PREF_ASK: 810 case SYNC_PREF_ASK:
811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
812 if ( lastSync > remote->lastModified() ) 812 if ( lastSync > remote->lastModified() )
813 return 1; 813 return 1;
814 if ( lastSync > local->lastModified() ) 814 if ( lastSync > local->lastModified() )
815 return 2; 815 return 2;
816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
817 localIsNew = local->lastModified() > remote->lastModified(); 817 localIsNew = local->lastModified() > remote->lastModified();
818 if ( localIsNew ) 818 if ( localIsNew )
819 getEventViewerDialog()->setColorMode( 1 ); 819 getEventViewerDialog()->setColorMode( 1 );
820 else 820 else
821 getEventViewerDialog()->setColorMode( 2 ); 821 getEventViewerDialog()->setColorMode( 2 );
822 getEventViewerDialog()->setIncidence(local); 822 getEventViewerDialog()->setIncidence(local);
823 if ( localIsNew ) 823 if ( localIsNew )
824 getEventViewerDialog()->setColorMode( 2 ); 824 getEventViewerDialog()->setColorMode( 2 );
825 else 825 else
826 getEventViewerDialog()->setColorMode( 1 ); 826 getEventViewerDialog()->setColorMode( 1 );
827 getEventViewerDialog()->addIncidence(remote); 827 getEventViewerDialog()->addIncidence(remote);
828 getEventViewerDialog()->setColorMode( 0 ); 828 getEventViewerDialog()->setColorMode( 0 );
829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
831 getEventViewerDialog()->showMe(); 831 getEventViewerDialog()->showMe();
832 result = getEventViewerDialog()->executeS( localIsNew ); 832 result = getEventViewerDialog()->executeS( localIsNew );
833 return result; 833 return result;
834 834
835 break; 835 break;
836 case SYNC_PREF_FORCE_LOCAL: 836 case SYNC_PREF_FORCE_LOCAL:
837 return 1; 837 return 1;
838 break; 838 break;
839 case SYNC_PREF_FORCE_REMOTE: 839 case SYNC_PREF_FORCE_REMOTE:
840 return 2; 840 return 2;
841 break; 841 break;
842 842
843 default: 843 default:
844 // SYNC_PREF_TAKE_BOTH not implemented 844 // SYNC_PREF_TAKE_BOTH not implemented
845 break; 845 break;
846 } 846 }
847 return 0; 847 return 0;
848} 848}
849Event* CalendarView::getLastSyncEvent() 849Event* CalendarView::getLastSyncEvent()
850{ 850{
851 Event* lse; 851 Event* lse;
852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
854 if (!lse) { 854 if (!lse) {
855 lse = new Event(); 855 lse = new Event();
856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
857 QString sum = ""; 857 QString sum = "";
858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
859 sum = "E: "; 859 sum = "E: ";
860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
861 lse->setDtStart( mLastCalendarSync ); 861 lse->setDtStart( mLastCalendarSync );
862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
863 lse->setCategories( i18n("SyncEvent") ); 863 lse->setCategories( i18n("SyncEvent") );
864 lse->setReadOnly( true ); 864 lse->setReadOnly( true );
865 mCalendar->addEvent( lse ); 865 mCalendar->addEvent( lse );
866 } 866 }
867 867
868 return lse; 868 return lse;
869 869
870} 870}
871// probaly useless 871// probaly useless
872void CalendarView::setupExternSyncProfiles() 872void CalendarView::setupExternSyncProfiles()
873{ 873{
874 Event* lse; 874 Event* lse;
875 mExternLastSyncEvent.clear(); 875 mExternLastSyncEvent.clear();
876 int i; 876 int i;
877 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { 877 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
878 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); 878 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
879 if ( lse ) 879 if ( lse )
880 mExternLastSyncEvent.append( lse ); 880 mExternLastSyncEvent.append( lse );
881 else 881 else
882 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); 882 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
883 } 883 }
884 884
885} 885}
886// we check, if the to delete event has a id for a profile 886// we check, if the to delete event has a id for a profile
887// if yes, we set this id in the profile to delete 887// if yes, we set this id in the profile to delete
888void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 888void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
889{ 889{
890 if ( ! lastSync.count() == 0 ) 890 if ( ! lastSync.count() == 0 )
891 return; 891 return;
892 if ( toDelete->type() == "Journal" ) 892 if ( toDelete->type() == "Journal" )
893 return; 893 return;
894 894
895 Event* eve = lastSync.first(); 895 Event* eve = lastSync.first();
896 896
897 while ( eve ) { 897 while ( eve ) {
898 int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 898 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
899 if ( id >= 0 ) { 899 if ( !id.isEmpty() ) {
900 QString des = eve->description(); 900 QString des = eve->description();
901 QString pref = "e"; 901 QString pref = "e";
902 if ( toDelete->type() == "Todo" ) 902 if ( toDelete->type() == "Todo" )
903 pref = "t"; 903 pref = "t";
904 des += pref+ QString::number ( id ) + ","; 904 des += pref+ id + ",";
905 eve->setReadOnly( false ); 905 eve->setReadOnly( false );
906 eve->setDescription( des ); 906 eve->setDescription( des );
907 eve->setReadOnly( true ); 907 eve->setReadOnly( true );
908 } 908 }
909 eve = lastSync.next(); 909 eve = lastSync.next();
910 } 910 }
911 911
912} 912}
913void CalendarView::checkExternalId( Incidence * inc ) 913void CalendarView::checkExternalId( Incidence * inc )
914{ 914{
915 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 915 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
916 checkExternSyncEvent( lastSync, inc ); 916 checkExternSyncEvent( lastSync, inc );
917 917
918} 918}
919bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 919bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
920{ 920{
921 bool syncOK = true; 921 bool syncOK = true;
922 int addedEvent = 0; 922 int addedEvent = 0;
923 int addedEventR = 0; 923 int addedEventR = 0;
924 int deletedEventR = 0; 924 int deletedEventR = 0;
925 int deletedEventL = 0; 925 int deletedEventL = 0;
926 int changedLocal = 0; 926 int changedLocal = 0;
927 int changedRemote = 0; 927 int changedRemote = 0;
928 //QPtrList<Event> el = local->rawEvents(); 928 //QPtrList<Event> el = local->rawEvents();
929 Event* eventR; 929 Event* eventR;
930 QString uid; 930 QString uid;
931 int take; 931 int take;
932 Event* eventL; 932 Event* eventL;
933 Event* eventRSync; 933 Event* eventRSync;
934 Event* eventLSync; 934 Event* eventLSync;
935 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 935 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
936 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 936 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
937 bool fullDateRange = false; 937 bool fullDateRange = false;
938 mLastCalendarSync = QDateTime::currentDateTime(); 938 mLastCalendarSync = QDateTime::currentDateTime();
939 QDateTime modifiedCalendar = mLastCalendarSync;; 939 QDateTime modifiedCalendar = mLastCalendarSync;;
940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
941 if ( eventR ) { 941 if ( eventR ) {
942 eventRSync = (Event*) eventR->clone(); 942 eventRSync = (Event*) eventR->clone();
943 remote->deleteEvent(eventR ); 943 remote->deleteEvent(eventR );
944 944
945 } else { 945 } else {
946 fullDateRange = true; 946 fullDateRange = true;
947 eventRSync = new Event(); 947 eventRSync = new Event();
948 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 948 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
949 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 949 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
950 eventRSync->setDtStart( mLastCalendarSync ); 950 eventRSync->setDtStart( mLastCalendarSync );
951 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 951 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
952 eventRSync->setCategories( i18n("SyncEvent") ); 952 eventRSync->setCategories( i18n("SyncEvent") );
953 } 953 }
954 eventLSync = getLastSyncEvent(); 954 eventLSync = getLastSyncEvent();
955 if ( eventLSync->dtStart() == mLastCalendarSync ) 955 if ( eventLSync->dtStart() == mLastCalendarSync )
956 fullDateRange = true; 956 fullDateRange = true;
957 957
958 if ( ! fullDateRange ) { 958 if ( ! fullDateRange ) {
959 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 959 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
960 960
961 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 961 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
962 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 962 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
963 fullDateRange = true; 963 fullDateRange = true;
964 } 964 }
965 } 965 }
966 if ( fullDateRange ) 966 if ( fullDateRange )
967 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 967 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
968 else 968 else
969 mLastCalendarSync = eventLSync->dtStart(); 969 mLastCalendarSync = eventLSync->dtStart();
970 // for resyncing if own file has changed 970 // for resyncing if own file has changed
971 if ( mCurrentSyncDevice == "deleteaftersync" ) { 971 if ( mCurrentSyncDevice == "deleteaftersync" ) {
972 mLastCalendarSync = loadedFileVersion; 972 mLastCalendarSync = loadedFileVersion;
973 qDebug("setting mLastCalendarSync "); 973 qDebug("setting mLastCalendarSync ");
974 } 974 }
975 //qDebug("*************************** "); 975 //qDebug("*************************** ");
976 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 976 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
977 QPtrList<Incidence> er = remote->rawIncidences(); 977 QPtrList<Incidence> er = remote->rawIncidences();
978 Incidence* inR = er.first(); 978 Incidence* inR = er.first();
979 Incidence* inL; 979 Incidence* inL;
980 QProgressBar bar( er.count(),0 ); 980 QProgressBar bar( er.count(),0 );
981 bar.setCaption (i18n("Syncing - close to abort!") ); 981 bar.setCaption (i18n("Syncing - close to abort!") );
982 982
983 int w = 300; 983 int w = 300;
984 if ( QApplication::desktop()->width() < 320 ) 984 if ( QApplication::desktop()->width() < 320 )
985 w = 220; 985 w = 220;
986 int h = bar.sizeHint().height() ; 986 int h = bar.sizeHint().height() ;
987 int dw = QApplication::desktop()->width(); 987 int dw = QApplication::desktop()->width();
988 int dh = QApplication::desktop()->height(); 988 int dh = QApplication::desktop()->height();
989 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 989 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
990 bar.show(); 990 bar.show();
991 int modulo = (er.count()/10)+1; 991 int modulo = (er.count()/10)+1;
992 int incCounter = 0; 992 int incCounter = 0;
993 while ( inR ) { 993 while ( inR ) {
994 if ( ! bar.isVisible() ) 994 if ( ! bar.isVisible() )
995 return false; 995 return false;
996 if ( incCounter % modulo == 0 ) 996 if ( incCounter % modulo == 0 )
997 bar.setProgress( incCounter ); 997 bar.setProgress( incCounter );
998 ++incCounter; 998 ++incCounter;
999 uid = inR->uid(); 999 uid = inR->uid();
1000 bool skipIncidence = false; 1000 bool skipIncidence = false;
1001 if ( uid.left(15) == QString("last-syncEvent-") ) 1001 if ( uid.left(15) == QString("last-syncEvent-") )
1002 skipIncidence = true; 1002 skipIncidence = true;
1003 1003
1004 qApp->processEvents(); 1004 qApp->processEvents();
1005 if ( !skipIncidence ) { 1005 if ( !skipIncidence ) {
1006 inL = local->incidence( uid ); 1006 inL = local->incidence( uid );
1007 if ( inL ) { // maybe conflict - same uid in both calendars 1007 if ( inL ) { // maybe conflict - same uid in both calendars
1008 int maxrev = inL->revision(); 1008 int maxrev = inL->revision();
1009 if ( maxrev < inR->revision() ) 1009 if ( maxrev < inR->revision() )
1010 maxrev = inR->revision(); 1010 maxrev = inR->revision();
1011 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1011 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1012 //qDebug("take %d %s ", take, inL->summary().latin1()); 1012 //qDebug("take %d %s ", take, inL->summary().latin1());
1013 if ( take == 3 ) 1013 if ( take == 3 )
1014 return false; 1014 return false;
1015 if ( take == 1 ) {// take local 1015 if ( take == 1 ) {// take local
1016 inL->setZaurusUid( inR->zaurusUid() ); 1016 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1017 remote->deleteIncidence( inR ); 1017 remote->deleteIncidence( inR );
1018 if ( inL->revision() < maxrev ) 1018 if ( inL->revision() < maxrev )
1019 inL->setRevision( maxrev ); 1019 inL->setRevision( maxrev );
1020 remote->addIncidence( inL->clone() ); 1020 remote->addIncidence( inL->clone() );
1021 ++changedRemote; 1021 ++changedRemote;
1022 } else { 1022 } else {
1023 if ( inR->revision() < maxrev ) 1023 if ( inR->revision() < maxrev )
1024 inR->setRevision( maxrev ); 1024 inR->setRevision( maxrev );
1025 local->deleteIncidence( inL ); 1025 local->deleteIncidence( inL );
1026 local->addIncidence( inR->clone() ); 1026 local->addIncidence( inR->clone() );
1027 ++changedLocal; 1027 ++changedLocal;
1028 } 1028 }
1029 } 1029 }
1030 } else { // no conflict 1030 } else { // no conflict
1031 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1031 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1032 QString des = eventLSync->description(); 1032 QString des = eventLSync->description();
1033 QString pref = "e"; 1033 QString pref = "e";
1034 if ( inR->type() == "Todo" ) 1034 if ( inR->type() == "Todo" )
1035 pref = "t"; 1035 pref = "t";
1036 if ( des.find(pref+QString::number( inR->getID(mCurrentSyncDevice) ) +"," ) >= 0 && mode != 5) { // delete it 1036 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1037 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1037 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1038 //remote->deleteIncidence( inR ); 1038 //remote->deleteIncidence( inR );
1039 ++deletedEventR; 1039 ++deletedEventR;
1040 } else { 1040 } else {
1041 inR->setLastModified( modifiedCalendar ); 1041 inR->setLastModified( modifiedCalendar );
1042 local->addIncidence( inR->clone() ); 1042 local->addIncidence( inR->clone() );
1043 ++addedEvent; 1043 ++addedEvent;
1044 } 1044 }
1045 } else { 1045 } else {
1046 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1046 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1047 inR->setLastModified( modifiedCalendar ); 1047 inR->setLastModified( modifiedCalendar );
1048 local->addIncidence( inR->clone() ); 1048 local->addIncidence( inR->clone() );
1049 ++addedEvent; 1049 ++addedEvent;
1050 } else { 1050 } else {
1051 checkExternSyncEvent(eventRSyncSharp, inR); 1051 checkExternSyncEvent(eventRSyncSharp, inR);
1052 remote->deleteIncidence( inR ); 1052 remote->deleteIncidence( inR );
1053 ++deletedEventR; 1053 ++deletedEventR;
1054 } 1054 }
1055 } 1055 }
1056 } 1056 }
1057 } 1057 }
1058 inR = er.next(); 1058 inR = er.next();
1059 } 1059 }
1060 QPtrList<Incidence> el = local->rawIncidences(); 1060 QPtrList<Incidence> el = local->rawIncidences();
1061 inL = el.first(); 1061 inL = el.first();
1062 modulo = (el.count()/10)+1; 1062 modulo = (el.count()/10)+1;
1063 bar.setCaption (i18n("Add / remove events") ); 1063 bar.setCaption (i18n("Add / remove events") );
1064 bar.setTotalSteps ( el.count() ) ; 1064 bar.setTotalSteps ( el.count() ) ;
1065 bar.show(); 1065 bar.show();
1066 incCounter = 0; 1066 incCounter = 0;
1067 1067
1068 while ( inL ) { 1068 while ( inL ) {
1069 1069
1070 qApp->processEvents(); 1070 qApp->processEvents();
1071 if ( ! bar.isVisible() ) 1071 if ( ! bar.isVisible() )
1072 return false; 1072 return false;
1073 if ( incCounter % modulo == 0 ) 1073 if ( incCounter % modulo == 0 )
1074 bar.setProgress( incCounter ); 1074 bar.setProgress( incCounter );
1075 ++incCounter; 1075 ++incCounter;
1076 uid = inL->uid(); 1076 uid = inL->uid();
1077 bool skipIncidence = false; 1077 bool skipIncidence = false;
1078 if ( uid.left(15) == QString("last-syncEvent-") ) 1078 if ( uid.left(15) == QString("last-syncEvent-") )
1079 skipIncidence = true; 1079 skipIncidence = true;
1080 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1080 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1081 skipIncidence = true; 1081 skipIncidence = true;
1082 if ( !skipIncidence ) { 1082 if ( !skipIncidence ) {
1083 inR = remote->incidence( uid ); 1083 inR = remote->incidence( uid );
1084 if ( ! inR ) { 1084 if ( ! inR ) {
1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1086 if ( inL->getID(mCurrentSyncDevice) >= 0 && mode != 4 ) { 1086 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1087 local->deleteIncidence( inL ); 1087 local->deleteIncidence( inL );
1088 ++deletedEventL; 1088 ++deletedEventL;
1089 } else { 1089 } else {
1090 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1090 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1091 inL->setID(mCurrentSyncDevice, -1 ); 1091 inL->removeID(mCurrentSyncDevice );
1092 ++addedEventR; 1092 ++addedEventR;
1093 inL->setLastModified( modifiedCalendar ); 1093 inL->setLastModified( modifiedCalendar );
1094 remote->addIncidence( inL->clone() ); 1094 remote->addIncidence( inL->clone() );
1095 } 1095 }
1096 } 1096 }
1097 } else { 1097 } else {
1098 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1098 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1099 checkExternSyncEvent(eventLSyncSharp, inL); 1099 checkExternSyncEvent(eventLSyncSharp, inL);
1100 local->deleteIncidence( inL ); 1100 local->deleteIncidence( inL );
1101 ++deletedEventL; 1101 ++deletedEventL;
1102 } else { 1102 } else {
1103 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1103 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1104 ++addedEventR; 1104 ++addedEventR;
1105 inL->setLastModified( modifiedCalendar ); 1105 inL->setLastModified( modifiedCalendar );
1106 remote->addIncidence( inL->clone() ); 1106 remote->addIncidence( inL->clone() );
1107 } 1107 }
1108 } 1108 }
1109 } 1109 }
1110 } 1110 }
1111 } 1111 }
1112 inL = el.next(); 1112 inL = el.next();
1113 } 1113 }
1114 1114
1115 bar.hide(); 1115 bar.hide();
1116 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1116 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1117 eventLSync->setReadOnly( false ); 1117 eventLSync->setReadOnly( false );
1118 eventLSync->setDtStart( mLastCalendarSync ); 1118 eventLSync->setDtStart( mLastCalendarSync );
1119 eventRSync->setDtStart( mLastCalendarSync ); 1119 eventRSync->setDtStart( mLastCalendarSync );
1120 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1120 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1121 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1121 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1122 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1122 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1123 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1123 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1124 eventLSync->setReadOnly( true ); 1124 eventLSync->setReadOnly( true );
1125 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1125 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1126 remote->addEvent( eventRSync ); 1126 remote->addEvent( eventRSync );
1127 QString mes; 1127 QString mes;
1128 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 ); 1128 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 );
1129 if ( KOPrefs::instance()->mShowSyncSummary ) { 1129 if ( KOPrefs::instance()->mShowSyncSummary ) {
1130 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1130 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1131 } 1131 }
1132 qDebug( mes ); 1132 qDebug( mes );
1133 mCalendar->checkAlarmForIncidence( 0, true ); 1133 mCalendar->checkAlarmForIncidence( 0, true );
1134 return syncOK; 1134 return syncOK;
1135} 1135}
1136 1136
1137void CalendarView::setSyncDevice( QString s ) 1137void CalendarView::setSyncDevice( QString s )
1138{ 1138{
1139 mCurrentSyncDevice= s; 1139 mCurrentSyncDevice= s;
1140} 1140}
1141void CalendarView::setSyncName( QString s ) 1141void CalendarView::setSyncName( QString s )
1142{ 1142{
1143 mCurrentSyncName= s; 1143 mCurrentSyncName= s;
1144} 1144}
1145bool CalendarView::syncCalendar(QString filename, int mode) 1145bool CalendarView::syncCalendar(QString filename, int mode)
1146{ 1146{
1147 mGlobalSyncMode = SYNC_MODE_NORMAL; 1147 mGlobalSyncMode = SYNC_MODE_NORMAL;
1148 CalendarLocal* calendar = new CalendarLocal(); 1148 CalendarLocal* calendar = new CalendarLocal();
1149 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1149 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1150 FileStorage* storage = new FileStorage( calendar ); 1150 FileStorage* storage = new FileStorage( calendar );
1151 bool syncOK = false; 1151 bool syncOK = false;
1152 storage->setFileName( filename ); 1152 storage->setFileName( filename );
1153 // qDebug("loading ... "); 1153 // qDebug("loading ... ");
1154 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1154 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1155 getEventViewerDialog()->setSyncMode( true ); 1155 getEventViewerDialog()->setSyncMode( true );
1156 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1156 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1157 getEventViewerDialog()->setSyncMode( false ); 1157 getEventViewerDialog()->setSyncMode( false );
1158 if ( syncOK ) { 1158 if ( syncOK ) {
1159 if ( KOPrefs::instance()->mWriteBackFile ) 1159 if ( KOPrefs::instance()->mWriteBackFile )
1160 { 1160 {
1161 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1161 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1162 storage->save(); 1162 storage->save();
1163 } 1163 }
1164 } 1164 }
1165 setModified( true ); 1165 setModified( true );
1166 } 1166 }
1167 delete storage; 1167 delete storage;
1168 delete calendar; 1168 delete calendar;
1169 if ( syncOK ) 1169 if ( syncOK )
1170 updateView(); 1170 updateView();
1171 return syncOK; 1171 return syncOK;
1172} 1172}
1173void CalendarView::syncSharp() 1173void CalendarView::syncSharp()
1174{ 1174{
1175#ifndef DESKTOP_VERSION 1175#ifndef DESKTOP_VERSION
1176 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1176 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1177 //mCurrentSyncDevice = "sharp-DTM"; 1177 //mCurrentSyncDevice = "sharp-DTM";
1178 if ( KOPrefs::instance()->mAskForPreferences ) 1178 if ( KOPrefs::instance()->mAskForPreferences )
1179 edit_sync_options(); 1179 edit_sync_options();
1180 qApp->processEvents(); 1180 qApp->processEvents();
1181 CalendarLocal* calendar = new CalendarLocal(); 1181 CalendarLocal* calendar = new CalendarLocal();
1182 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1182 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1183 bool syncOK = false; 1183 bool syncOK = false;
1184 SharpFormat sharpFormat; 1184 SharpFormat sharpFormat;
1185 if ( sharpFormat.load( calendar, mCalendar ) ) { 1185 if ( sharpFormat.load( calendar, mCalendar ) ) {
1186 getEventViewerDialog()->setSyncMode( true ); 1186 getEventViewerDialog()->setSyncMode( true );
1187 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1187 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1188 getEventViewerDialog()->setSyncMode( false ); 1188 getEventViewerDialog()->setSyncMode( false );
1189 qApp->processEvents(); 1189 qApp->processEvents();
1190 if ( syncOK ) { 1190 if ( syncOK ) {
1191 if ( KOPrefs::instance()->mWriteBackFile ) 1191 if ( KOPrefs::instance()->mWriteBackFile )
1192 { 1192 {
1193 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1193 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1194 Incidence* inc = iL.first(); 1194 Incidence* inc = iL.first();
1195 /* obsolete 1195 /* obsolete
1196 while ( inc ) { 1196 while ( inc ) {
1197 inc->setZaurusStat( inc->revision () ); 1197 inc->setZaurusStat( inc->revision () );
1198 inc = iL.next(); 1198 inc = iL.next();
1199 } 1199 }
1200 */ 1200 */
1201 // pending: clean last sync event description 1201 // pending: clean last sync event description
1202 sharpFormat.save(calendar); 1202 sharpFormat.save(calendar);
1203 iL = calendar->rawIncidences(); 1203 iL = calendar->rawIncidences();
1204 inc = iL.first(); 1204 inc = iL.first();
1205 Incidence* loc; 1205 Incidence* loc;
1206 while ( inc ) { 1206 while ( inc ) {
1207 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1207 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1208 loc = mCalendar->incidence(inc->uid() ); 1208 loc = mCalendar->incidence(inc->uid() );
1209 if ( loc ) { 1209 if ( loc ) {
1210 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1210 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1211 loc->setZaurusUid( inc->zaurusUid() ); 1211 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1212 } 1212 }
1213 } 1213 }
1214 inc = iL.next(); 1214 inc = iL.next();
1215 } 1215 }
1216 Incidence* lse = getLastSyncEvent(); 1216 Incidence* lse = getLastSyncEvent();
1217 if ( lse ) { 1217 if ( lse ) {
1218 lse->setReadOnly( false ); 1218 lse->setReadOnly( false );
1219 lse->setDescription( "" ); 1219 lse->setDescription( "" );
1220 lse->setReadOnly( true ); 1220 lse->setReadOnly( true );
1221 } 1221 }
1222 } 1222 }
1223 } 1223 }
1224 setModified( true ); 1224 setModified( true );
1225 } else { 1225 } else {
1226 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1226 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1227 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1227 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1228 question, i18n("Ok")) ; 1228 question, i18n("Ok")) ;
1229 1229
1230 } 1230 }
1231 delete calendar; 1231 delete calendar;
1232 updateView(); 1232 updateView();
1233 return ;//syncOK; 1233 return ;//syncOK;
1234#endif 1234#endif
1235} 1235}
1236 1236
1237 1237
1238#include <kabc/stdaddressbook.h> 1238#include <kabc/stdaddressbook.h>
1239bool CalendarView::importBday() 1239bool CalendarView::importBday()
1240{ 1240{
1241 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1241 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1242 KABC::AddressBook::Iterator it; 1242 KABC::AddressBook::Iterator it;
1243 int count = 0; 1243 int count = 0;
1244 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1244 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1245 ++count; 1245 ++count;
1246 } 1246 }
1247 QProgressBar bar(count,0 ); 1247 QProgressBar bar(count,0 );
1248 int w = 300; 1248 int w = 300;
1249 if ( QApplication::desktop()->width() < 320 ) 1249 if ( QApplication::desktop()->width() < 320 )
1250 w = 220; 1250 w = 220;
1251 int h = bar.sizeHint().height() ; 1251 int h = bar.sizeHint().height() ;
1252 int dw = QApplication::desktop()->width(); 1252 int dw = QApplication::desktop()->width();
1253 int dh = QApplication::desktop()->height(); 1253 int dh = QApplication::desktop()->height();
1254 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1254 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1255 bar.show(); 1255 bar.show();
1256 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1256 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1257 qApp->processEvents(); 1257 qApp->processEvents();
1258 count = 0; 1258 count = 0;
1259 int addCount = 0; 1259 int addCount = 0;
1260 KCal::Attendee* a = 0; 1260 KCal::Attendee* a = 0;
1261 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1261 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1262 if ( ! bar.isVisible() ) 1262 if ( ! bar.isVisible() )
1263 return false; 1263 return false;
1264 bar.setProgress( count++ ); 1264 bar.setProgress( count++ );
1265 qApp->processEvents(); 1265 qApp->processEvents();
1266 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1266 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1267 if ( (*it).birthday().date().isValid() ){ 1267 if ( (*it).birthday().date().isValid() ){
1268 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1268 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1269 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1269 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1270 ++addCount; 1270 ++addCount;
1271 } 1271 }
1272 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1272 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1273 if ( anni.isValid() ){ 1273 if ( anni.isValid() ){
1274 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1274 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1275 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1275 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1276 ++addCount; 1276 ++addCount;
1277 } 1277 }
1278 } 1278 }
1279 updateView(); 1279 updateView();
1280 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1280 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1281 return true; 1281 return true;
1282} 1282}
1283 1283
1284bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1284bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1285{ 1285{
1286 //qDebug("addAnni "); 1286 //qDebug("addAnni ");
1287 Event * ev = new Event(); 1287 Event * ev = new Event();
1288 if ( a ) { 1288 if ( a ) {
1289 ev->addAttendee( a ); 1289 ev->addAttendee( a );
1290 } 1290 }
1291 QString kind; 1291 QString kind;
1292 if ( birthday ) 1292 if ( birthday )
1293 kind = i18n( "Birthday" ); 1293 kind = i18n( "Birthday" );
1294 else 1294 else
1295 kind = i18n( "Anniversary" ); 1295 kind = i18n( "Anniversary" );
1296 ev->setSummary( name + " - " + kind ); 1296 ev->setSummary( name + " - " + kind );
1297 ev->setOrganizer( "nobody@nowhere" ); 1297 ev->setOrganizer( "nobody@nowhere" );
1298 ev->setCategories( kind ); 1298 ev->setCategories( kind );
1299 ev->setDtStart( QDateTime(date) ); 1299 ev->setDtStart( QDateTime(date) );
1300 ev->setDtEnd( QDateTime(date) ); 1300 ev->setDtEnd( QDateTime(date) );
1301 ev->setFloats( true ); 1301 ev->setFloats( true );
1302 Recurrence * rec = ev->recurrence(); 1302 Recurrence * rec = ev->recurrence();
1303 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1303 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1304 rec->addYearlyNum( date.month() ); 1304 rec->addYearlyNum( date.month() );
1305 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1305 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1306 delete ev; 1306 delete ev;
1307 return false; 1307 return false;
1308 } 1308 }
1309 return true; 1309 return true;
1310 1310
1311} 1311}
1312bool CalendarView::importQtopia( const QString &categories, 1312bool CalendarView::importQtopia( const QString &categories,
1313 const QString &datebook, 1313 const QString &datebook,
1314 const QString &todolist ) 1314 const QString &todolist )
1315{ 1315{
1316 1316
1317 QtopiaFormat qtopiaFormat; 1317 QtopiaFormat qtopiaFormat;
1318 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1318 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1319 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1319 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1320 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1320 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1321 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1321 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1322 1322
1323 updateView(); 1323 updateView();
1324 return true; 1324 return true;
1325 1325
1326#if 0 1326#if 0
1327 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1327 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1328 mCurrentSyncDevice = "qtopia-XML"; 1328 mCurrentSyncDevice = "qtopia-XML";
1329 if ( KOPrefs::instance()->mAskForPreferences ) 1329 if ( KOPrefs::instance()->mAskForPreferences )
1330 edit_sync_options(); 1330 edit_sync_options();
1331 qApp->processEvents(); 1331 qApp->processEvents();
1332 CalendarLocal* calendar = new CalendarLocal(); 1332 CalendarLocal* calendar = new CalendarLocal();
1333 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1333 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1334 bool syncOK = false; 1334 bool syncOK = false;
1335 QtopiaFormat qtopiaFormat; 1335 QtopiaFormat qtopiaFormat;
1336 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1336 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1337 bool loadOk = true; 1337 bool loadOk = true;
1338 if ( !categories.isEmpty() ) 1338 if ( !categories.isEmpty() )
1339 loadOk = qtopiaFormat.load( calendar, categories ); 1339 loadOk = qtopiaFormat.load( calendar, categories );
1340 if ( loadOk && !datebook.isEmpty() ) 1340 if ( loadOk && !datebook.isEmpty() )
1341 loadOk = qtopiaFormat.load( calendar, datebook ); 1341 loadOk = qtopiaFormat.load( calendar, datebook );
1342 if ( loadOk && !todolist.isEmpty() ) 1342 if ( loadOk && !todolist.isEmpty() )
1343 loadOk = qtopiaFormat.load( calendar, todolist ); 1343 loadOk = qtopiaFormat.load( calendar, todolist );
1344 1344
1345 if ( loadOk ) { 1345 if ( loadOk ) {
1346 getEventViewerDialog()->setSyncMode( true ); 1346 getEventViewerDialog()->setSyncMode( true );
1347 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1347 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1348 getEventViewerDialog()->setSyncMode( false ); 1348 getEventViewerDialog()->setSyncMode( false );
1349 qApp->processEvents(); 1349 qApp->processEvents();
1350 if ( syncOK ) { 1350 if ( syncOK ) {
1351 if ( KOPrefs::instance()->mWriteBackFile ) 1351 if ( KOPrefs::instance()->mWriteBackFile )
1352 { 1352 {
1353 // write back XML file 1353 // write back XML file
1354 1354
1355 } 1355 }
1356 setModified( true ); 1356 setModified( true );
1357 } 1357 }
1358 } else { 1358 } else {
1359 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1359 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1360 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1360 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1361 question, i18n("Ok")) ; 1361 question, i18n("Ok")) ;
1362 } 1362 }
1363 delete calendar; 1363 delete calendar;
1364 updateView(); 1364 updateView();
1365 return syncOK; 1365 return syncOK;
1366 1366
1367 1367
1368#endif 1368#endif
1369 1369
1370} 1370}
1371 1371
1372void CalendarView::setSyncEventsReadOnly() 1372void CalendarView::setSyncEventsReadOnly()
1373{ 1373{
1374 Event * ev; 1374 Event * ev;
1375 QPtrList<Event> eL = mCalendar->rawEvents(); 1375 QPtrList<Event> eL = mCalendar->rawEvents();
1376 ev = eL.first(); 1376 ev = eL.first();
1377 while ( ev ) { 1377 while ( ev ) {
1378 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1378 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1379 ev->setReadOnly( true ); 1379 ev->setReadOnly( true );
1380 ev = eL.next(); 1380 ev = eL.next();
1381 } 1381 }
1382} 1382}
1383bool CalendarView::openCalendar(QString filename, bool merge) 1383bool CalendarView::openCalendar(QString filename, bool merge)
1384{ 1384{
1385 1385
1386 if (filename.isEmpty()) { 1386 if (filename.isEmpty()) {
1387 return false; 1387 return false;
1388 } 1388 }
1389 1389
1390 if (!QFile::exists(filename)) { 1390 if (!QFile::exists(filename)) {
1391 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1391 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1392 return false; 1392 return false;
1393 } 1393 }
1394 1394
1395 globalFlagBlockAgenda = 1; 1395 globalFlagBlockAgenda = 1;
1396 if (!merge) mCalendar->close(); 1396 if (!merge) mCalendar->close();
1397 1397
1398 mStorage->setFileName( filename ); 1398 mStorage->setFileName( filename );
1399 1399
1400 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1400 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1401 if ( merge ) ;//setModified( true ); 1401 if ( merge ) ;//setModified( true );
1402 else { 1402 else {
1403 //setModified( true ); 1403 //setModified( true );
1404 mViewManager->setDocumentId( filename ); 1404 mViewManager->setDocumentId( filename );
1405 mDialogManager->setDocumentId( filename ); 1405 mDialogManager->setDocumentId( filename );
1406 mTodoList->setDocumentId( filename ); 1406 mTodoList->setDocumentId( filename );
1407 } 1407 }
1408 globalFlagBlockAgenda = 2; 1408 globalFlagBlockAgenda = 2;
1409 // if ( getLastSyncEvent() ) 1409 // if ( getLastSyncEvent() )
1410 // getLastSyncEvent()->setReadOnly( true ); 1410 // getLastSyncEvent()->setReadOnly( true );
1411 mCalendar->reInitAlarmSettings(); 1411 mCalendar->reInitAlarmSettings();
1412 setSyncEventsReadOnly(); 1412 setSyncEventsReadOnly();
1413 updateUnmanagedViews(); 1413 updateUnmanagedViews();
1414 updateView(); 1414 updateView();
1415 if ( filename != MainWindow::defaultFileName() ) 1415 if ( filename != MainWindow::defaultFileName() )
1416 saveCalendar( MainWindow::defaultFileName() ); 1416 saveCalendar( MainWindow::defaultFileName() );
1417 loadedFileVersion = QDateTime::currentDateTime(); 1417 loadedFileVersion = QDateTime::currentDateTime();
1418 return true; 1418 return true;
1419 } else { 1419 } else {
1420 // while failing to load, the calendar object could 1420 // while failing to load, the calendar object could
1421 // have become partially populated. Clear it out. 1421 // have become partially populated. Clear it out.
1422 if ( !merge ) mCalendar->close(); 1422 if ( !merge ) mCalendar->close();
1423 1423
1424 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1424 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1425 1425
1426 globalFlagBlockAgenda = 2; 1426 globalFlagBlockAgenda = 2;
1427 updateView(); 1427 updateView();
1428 } 1428 }
1429 return false; 1429 return false;
1430} 1430}
1431void CalendarView::setLoadedFileVersion(QDateTime dt) 1431void CalendarView::setLoadedFileVersion(QDateTime dt)
1432{ 1432{
1433 loadedFileVersion = dt; 1433 loadedFileVersion = dt;
1434} 1434}
1435bool CalendarView::checkFileChanged(QString fn) 1435bool CalendarView::checkFileChanged(QString fn)
1436{ 1436{
1437 QFileInfo finf ( fn ); 1437 QFileInfo finf ( fn );
1438 if ( !finf.exists() ) 1438 if ( !finf.exists() )
1439 return true; 1439 return true;
1440 QDateTime dt = finf.lastModified (); 1440 QDateTime dt = finf.lastModified ();
1441 if ( dt <= loadedFileVersion ) 1441 if ( dt <= loadedFileVersion )
1442 return false; 1442 return false;
1443 return true; 1443 return true;
1444 1444
1445} 1445}
1446bool CalendarView::checkFileVersion(QString fn) 1446bool CalendarView::checkFileVersion(QString fn)
1447{ 1447{
1448 QFileInfo finf ( fn ); 1448 QFileInfo finf ( fn );
1449 if ( !finf.exists() ) 1449 if ( !finf.exists() )
1450 return true; 1450 return true;
1451 QDateTime dt = finf.lastModified (); 1451 QDateTime dt = finf.lastModified ();
1452 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1452 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1453 //qDebug("file on disk version %s",dt.toString().latin1()); 1453 //qDebug("file on disk version %s",dt.toString().latin1());
1454 if ( dt <= loadedFileVersion ) 1454 if ( dt <= loadedFileVersion )
1455 return true; 1455 return true;
1456 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) , 1456 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) ,
1457 i18n("KO/Pi Warning"),i18n("Overwrite"), 1457 i18n("KO/Pi Warning"),i18n("Overwrite"),
1458 i18n("Sync+save")); 1458 i18n("Sync+save"));
1459 1459
1460 if ( km == KMessageBox::Cancel ) 1460 if ( km == KMessageBox::Cancel )
1461 return false; 1461 return false;
1462 if ( km == KMessageBox::Yes ) 1462 if ( km == KMessageBox::Yes )
1463 return true; 1463 return true;
1464 1464
1465 setSyncDevice("deleteaftersync" ); 1465 setSyncDevice("deleteaftersync" );
1466 KOPrefs::instance()->mAskForPreferences = true; 1466 KOPrefs::instance()->mAskForPreferences = true;
1467 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1467 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1468 KOPrefs::instance()->mWriteBackFile = false; 1468 KOPrefs::instance()->mWriteBackFile = false;
1469 KOPrefs::instance()->mWriteBackExistingOnly = false; 1469 KOPrefs::instance()->mWriteBackExistingOnly = false;
1470 KOPrefs::instance()->mShowSyncSummary = false; 1470 KOPrefs::instance()->mShowSyncSummary = false;
1471 syncCalendar( fn, 3 ); 1471 syncCalendar( fn, 3 );
1472 Event * e = getLastSyncEvent(); 1472 Event * e = getLastSyncEvent();
1473 mCalendar->deleteEvent ( e ); 1473 mCalendar->deleteEvent ( e );
1474 updateView(); 1474 updateView();
1475 return true; 1475 return true;
1476} 1476}
1477 1477
1478bool CalendarView::saveCalendar( QString filename ) 1478bool CalendarView::saveCalendar( QString filename )
1479{ 1479{
1480 1480
1481 // Store back all unsaved data into calendar object 1481 // Store back all unsaved data into calendar object
1482 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1482 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1483 if ( mViewManager->currentView() ) 1483 if ( mViewManager->currentView() )
1484 mViewManager->currentView()->flushView(); 1484 mViewManager->currentView()->flushView();
1485 1485
1486 //mStorage->setFileName( filename ); 1486 //mStorage->setFileName( filename );
1487 1487
1488 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1488 mStorage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1489 mStorage->setFileName( filename ); 1489 mStorage->setFileName( filename );
1490 bool success; 1490 bool success;
1491 success = mStorage->save(); 1491 success = mStorage->save();
1492 if ( !success ) { 1492 if ( !success ) {
1493 return false; 1493 return false;
1494 } 1494 }
1495 1495
1496 return true; 1496 return true;
1497} 1497}
1498 1498
1499void CalendarView::closeCalendar() 1499void CalendarView::closeCalendar()
1500{ 1500{
1501 1501
1502 // child windows no longer valid 1502 // child windows no longer valid
1503 emit closingDown(); 1503 emit closingDown();
1504 1504
1505 mCalendar->close(); 1505 mCalendar->close();
1506 setModified(false); 1506 setModified(false);
1507 updateView(); 1507 updateView();
1508} 1508}
1509 1509
1510void CalendarView::archiveCalendar() 1510void CalendarView::archiveCalendar()
1511{ 1511{
1512 mDialogManager->showArchiveDialog(); 1512 mDialogManager->showArchiveDialog();
1513} 1513}
1514 1514
1515 1515
1516void CalendarView::readSettings() 1516void CalendarView::readSettings()
1517{ 1517{
1518 1518
1519 1519
1520 // mViewManager->showAgendaView(); 1520 // mViewManager->showAgendaView();
1521 QString str; 1521 QString str;
1522 //qDebug("CalendarView::readSettings() "); 1522 //qDebug("CalendarView::readSettings() ");
1523 // read settings from the KConfig, supplying reasonable 1523 // read settings from the KConfig, supplying reasonable
1524 // defaults where none are to be found 1524 // defaults where none are to be found
1525 KConfig *config = KOGlobals::config(); 1525 KConfig *config = KOGlobals::config();
1526#ifndef KORG_NOSPLITTER 1526#ifndef KORG_NOSPLITTER
1527 config->setGroup("KOrganizer Geometry"); 1527 config->setGroup("KOrganizer Geometry");
1528 1528
1529 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1529 QValueList<int> sizes = config->readIntListEntry("Separator1");
1530 if (sizes.count() != 2) { 1530 if (sizes.count() != 2) {
1531 sizes << mDateNavigator->minimumSizeHint().width(); 1531 sizes << mDateNavigator->minimumSizeHint().width();
1532 sizes << 300; 1532 sizes << 300;
1533 } 1533 }
1534 mPanner->setSizes(sizes); 1534 mPanner->setSizes(sizes);
1535 1535
1536 sizes = config->readIntListEntry("Separator2"); 1536 sizes = config->readIntListEntry("Separator2");
1537 if ( ( mResourceView && sizes.count() == 4 ) || 1537 if ( ( mResourceView && sizes.count() == 4 ) ||
1538 ( !mResourceView && sizes.count() == 3 ) ) { 1538 ( !mResourceView && sizes.count() == 3 ) ) {
1539 mLeftSplitter->setSizes(sizes); 1539 mLeftSplitter->setSizes(sizes);
1540 } 1540 }
1541#endif 1541#endif
1542 globalFlagBlockAgenda = 1; 1542 globalFlagBlockAgenda = 1;
1543 mViewManager->showAgendaView(); 1543 mViewManager->showAgendaView();
1544 //mViewManager->readSettings( config ); 1544 //mViewManager->readSettings( config );
1545 mTodoList->restoreLayout(config,QString("Todo Layout")); 1545 mTodoList->restoreLayout(config,QString("Todo Layout"));
1546 readFilterSettings(config); 1546 readFilterSettings(config);
1547 config->setGroup( "Views" ); 1547 config->setGroup( "Views" );
1548 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1548 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1549 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1549 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1550 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1550 else if ( dateCount == 7 ) mNavigator->selectWeek();
1551 else mNavigator->selectDates( dateCount ); 1551 else mNavigator->selectDates( dateCount );
1552 // mViewManager->readSettings( config ); 1552 // mViewManager->readSettings( config );
1553 updateConfig(); 1553 updateConfig();
1554 globalFlagBlockAgenda = 2; 1554 globalFlagBlockAgenda = 2;
1555 mViewManager->readSettings( config ); 1555 mViewManager->readSettings( config );
1556#ifdef DESKTOP_VERSION 1556#ifdef DESKTOP_VERSION
1557 config->setGroup("WidgetLayout"); 1557 config->setGroup("WidgetLayout");
1558 QStringList list; 1558 QStringList list;
1559 list = config->readListEntry("MainLayout"); 1559 list = config->readListEntry("MainLayout");
1560 int x,y,w,h; 1560 int x,y,w,h;
1561 if ( ! list.isEmpty() ) { 1561 if ( ! list.isEmpty() ) {
1562 x = list[0].toInt(); 1562 x = list[0].toInt();
1563 y = list[1].toInt(); 1563 y = list[1].toInt();
1564 w = list[2].toInt(); 1564 w = list[2].toInt();
1565 h = list[3].toInt(); 1565 h = list[3].toInt();
1566 topLevelWidget()->setGeometry(x,y,w,h); 1566 topLevelWidget()->setGeometry(x,y,w,h);
1567 1567
1568 } else { 1568 } else {
1569 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1569 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1570 } 1570 }
1571 list = config->readListEntry("EditEventLayout"); 1571 list = config->readListEntry("EditEventLayout");
1572 if ( ! list.isEmpty() ) { 1572 if ( ! list.isEmpty() ) {
1573 x = list[0].toInt(); 1573 x = list[0].toInt();
1574 y = list[1].toInt(); 1574 y = list[1].toInt();
1575 w = list[2].toInt(); 1575 w = list[2].toInt();
1576 h = list[3].toInt(); 1576 h = list[3].toInt();
1577 mEventEditor->setGeometry(x,y,w,h); 1577 mEventEditor->setGeometry(x,y,w,h);
1578 1578
1579 } 1579 }
1580 list = config->readListEntry("EditTodoLayout"); 1580 list = config->readListEntry("EditTodoLayout");
1581 if ( ! list.isEmpty() ) { 1581 if ( ! list.isEmpty() ) {
1582 x = list[0].toInt(); 1582 x = list[0].toInt();
1583 y = list[1].toInt(); 1583 y = list[1].toInt();
1584 w = list[2].toInt(); 1584 w = list[2].toInt();
1585 h = list[3].toInt(); 1585 h = list[3].toInt();
1586 mTodoEditor->setGeometry(x,y,w,h); 1586 mTodoEditor->setGeometry(x,y,w,h);
1587 1587
1588 } 1588 }
1589 list = config->readListEntry("ViewerLayout"); 1589 list = config->readListEntry("ViewerLayout");
1590 if ( ! list.isEmpty() ) { 1590 if ( ! list.isEmpty() ) {
1591 x = list[0].toInt(); 1591 x = list[0].toInt();
1592 y = list[1].toInt(); 1592 y = list[1].toInt();
1593 w = list[2].toInt(); 1593 w = list[2].toInt();
1594 h = list[3].toInt(); 1594 h = list[3].toInt();
1595 getEventViewerDialog()->setGeometry(x,y,w,h); 1595 getEventViewerDialog()->setGeometry(x,y,w,h);
1596 } 1596 }
1597#endif 1597#endif
1598 1598
1599} 1599}
1600 1600
1601 1601
1602void CalendarView::writeSettings() 1602void CalendarView::writeSettings()
1603{ 1603{
1604 // kdDebug() << "CalendarView::writeSettings" << endl; 1604 // kdDebug() << "CalendarView::writeSettings" << endl;
1605 1605
1606 KConfig *config = KOGlobals::config(); 1606 KConfig *config = KOGlobals::config();
1607 1607
1608#ifndef KORG_NOSPLITTER 1608#ifndef KORG_NOSPLITTER
1609 config->setGroup("KOrganizer Geometry"); 1609 config->setGroup("KOrganizer Geometry");
1610 1610
1611 QValueList<int> list = mPanner->sizes(); 1611 QValueList<int> list = mPanner->sizes();
1612 config->writeEntry("Separator1",list); 1612 config->writeEntry("Separator1",list);
1613 1613
1614 list = mLeftSplitter->sizes(); 1614 list = mLeftSplitter->sizes();
1615 config->writeEntry("Separator2",list); 1615 config->writeEntry("Separator2",list);
1616#endif 1616#endif
1617 1617
1618 mViewManager->writeSettings( config ); 1618 mViewManager->writeSettings( config );
1619 mTodoList->saveLayout(config,QString("Todo Layout")); 1619 mTodoList->saveLayout(config,QString("Todo Layout"));
1620 mDialogManager->writeSettings( config ); 1620 mDialogManager->writeSettings( config );
1621 //KOPrefs::instance()->usrWriteConfig(); 1621 //KOPrefs::instance()->usrWriteConfig();
1622 KOPrefs::instance()->writeConfig(); 1622 KOPrefs::instance()->writeConfig();
1623 1623
1624 writeFilterSettings(config); 1624 writeFilterSettings(config);
1625 1625
1626 config->setGroup( "Views" ); 1626 config->setGroup( "Views" );
1627 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1627 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1628 1628
1629#ifdef DESKTOP_VERSION 1629#ifdef DESKTOP_VERSION
1630 config->setGroup("WidgetLayout"); 1630 config->setGroup("WidgetLayout");
1631 QStringList list ;//= config->readListEntry("MainLayout"); 1631 QStringList list ;//= config->readListEntry("MainLayout");
1632 int x,y,w,h; 1632 int x,y,w,h;
1633 QWidget* wid; 1633 QWidget* wid;
1634 wid = topLevelWidget(); 1634 wid = topLevelWidget();
1635 x = wid->geometry().x(); 1635 x = wid->geometry().x();
1636 y = wid->geometry().y(); 1636 y = wid->geometry().y();
1637 w = wid->width(); 1637 w = wid->width();
1638 h = wid->height(); 1638 h = wid->height();
1639 list.clear(); 1639 list.clear();
1640 list << QString::number( x ); 1640 list << QString::number( x );
1641 list << QString::number( y ); 1641 list << QString::number( y );
1642 list << QString::number( w ); 1642 list << QString::number( w );
1643 list << QString::number( h ); 1643 list << QString::number( h );
1644 config->writeEntry("MainLayout",list ); 1644 config->writeEntry("MainLayout",list );
1645 1645
1646 wid = mEventEditor; 1646 wid = mEventEditor;
1647 x = wid->geometry().x(); 1647 x = wid->geometry().x();
1648 y = wid->geometry().y(); 1648 y = wid->geometry().y();
1649 w = wid->width(); 1649 w = wid->width();
1650 h = wid->height(); 1650 h = wid->height();
1651 list.clear(); 1651 list.clear();
1652 list << QString::number( x ); 1652 list << QString::number( x );
1653 list << QString::number( y ); 1653 list << QString::number( y );
1654 list << QString::number( w ); 1654 list << QString::number( w );
1655 list << QString::number( h ); 1655 list << QString::number( h );
1656 config->writeEntry("EditEventLayout",list ); 1656 config->writeEntry("EditEventLayout",list );
1657 1657
1658 wid = mTodoEditor; 1658 wid = mTodoEditor;
1659 x = wid->geometry().x(); 1659 x = wid->geometry().x();
1660 y = wid->geometry().y(); 1660 y = wid->geometry().y();
1661 w = wid->width(); 1661 w = wid->width();
1662 h = wid->height(); 1662 h = wid->height();
1663 list.clear(); 1663 list.clear();
1664 list << QString::number( x ); 1664 list << QString::number( x );
1665 list << QString::number( y ); 1665 list << QString::number( y );
1666 list << QString::number( w ); 1666 list << QString::number( w );
1667 list << QString::number( h ); 1667 list << QString::number( h );
1668 config->writeEntry("EditTodoLayout",list ); 1668 config->writeEntry("EditTodoLayout",list );
1669 wid = getEventViewerDialog(); 1669 wid = getEventViewerDialog();
1670 x = wid->geometry().x(); 1670 x = wid->geometry().x();
1671 y = wid->geometry().y(); 1671 y = wid->geometry().y();
1672 w = wid->width(); 1672 w = wid->width();
1673 h = wid->height(); 1673 h = wid->height();
1674 list.clear(); 1674 list.clear();
1675 list << QString::number( x ); 1675 list << QString::number( x );
1676 list << QString::number( y ); 1676 list << QString::number( y );
1677 list << QString::number( w ); 1677 list << QString::number( w );
1678 list << QString::number( h ); 1678 list << QString::number( h );
1679 config->writeEntry("ViewerLayout",list ); 1679 config->writeEntry("ViewerLayout",list );
1680 wid = mDialogManager->getSearchDialog(); 1680 wid = mDialogManager->getSearchDialog();
1681 if ( wid ) { 1681 if ( wid ) {
1682 x = wid->geometry().x(); 1682 x = wid->geometry().x();
1683 y = wid->geometry().y(); 1683 y = wid->geometry().y();
1684 w = wid->width(); 1684 w = wid->width();
1685 h = wid->height(); 1685 h = wid->height();
1686 list.clear(); 1686 list.clear();
1687 list << QString::number( x ); 1687 list << QString::number( x );
1688 list << QString::number( y ); 1688 list << QString::number( y );
1689 list << QString::number( w ); 1689 list << QString::number( w );
1690 list << QString::number( h ); 1690 list << QString::number( h );
1691 config->writeEntry("SearchLayout",list ); 1691 config->writeEntry("SearchLayout",list );
1692 } 1692 }
1693#endif 1693#endif
1694 1694
1695 1695
1696 config->sync(); 1696 config->sync();
1697} 1697}
1698 1698
1699void CalendarView::readFilterSettings(KConfig *config) 1699void CalendarView::readFilterSettings(KConfig *config)
1700{ 1700{
1701 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1701 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1702 1702
1703 mFilters.clear(); 1703 mFilters.clear();
1704 1704
1705 config->setGroup("General"); 1705 config->setGroup("General");
1706 QStringList filterList = config->readListEntry("CalendarFilters"); 1706 QStringList filterList = config->readListEntry("CalendarFilters");
1707 1707
1708 QStringList::ConstIterator it = filterList.begin(); 1708 QStringList::ConstIterator it = filterList.begin();
1709 QStringList::ConstIterator end = filterList.end(); 1709 QStringList::ConstIterator end = filterList.end();
1710 while(it != end) { 1710 while(it != end) {
1711 // kdDebug() << " filter: " << (*it) << endl; 1711 // kdDebug() << " filter: " << (*it) << endl;
1712 1712
1713 CalFilter *filter; 1713 CalFilter *filter;
1714 filter = new CalFilter(*it); 1714 filter = new CalFilter(*it);
1715 config->setGroup("Filter_" + (*it)); 1715 config->setGroup("Filter_" + (*it));
1716 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1716 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1717 filter->setCriteria(config->readNumEntry("Criteria",0)); 1717 filter->setCriteria(config->readNumEntry("Criteria",0));
1718 filter->setCategoryList(config->readListEntry("CategoryList")); 1718 filter->setCategoryList(config->readListEntry("CategoryList"));
1719 mFilters.append(filter); 1719 mFilters.append(filter);
1720 1720
1721 ++it; 1721 ++it;
1722 } 1722 }
1723 1723
1724 if (mFilters.count() == 0) { 1724 if (mFilters.count() == 0) {
1725 CalFilter *filter = new CalFilter(i18n("Default")); 1725 CalFilter *filter = new CalFilter(i18n("Default"));
1726 mFilters.append(filter); 1726 mFilters.append(filter);
1727 } 1727 }
1728 mFilterView->updateFilters(); 1728 mFilterView->updateFilters();
1729 config->setGroup("FilterView"); 1729 config->setGroup("FilterView");
1730 1730
1731 mFilterView->blockSignals(true); 1731 mFilterView->blockSignals(true);
1732 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1732 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1733 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1733 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1734 mFilterView->blockSignals(false); 1734 mFilterView->blockSignals(false);
1735 // We do it manually to avoid it being done twice by the above calls 1735 // We do it manually to avoid it being done twice by the above calls
1736 updateFilter(); 1736 updateFilter();
1737} 1737}
1738 1738
1739void CalendarView::writeFilterSettings(KConfig *config) 1739void CalendarView::writeFilterSettings(KConfig *config)
1740{ 1740{
1741 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1741 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1742 1742
1743 QStringList filterList; 1743 QStringList filterList;
1744 1744
1745 CalFilter *filter = mFilters.first(); 1745 CalFilter *filter = mFilters.first();
1746 while(filter) { 1746 while(filter) {
1747 // kdDebug() << " fn: " << filter->name() << endl; 1747 // kdDebug() << " fn: " << filter->name() << endl;
1748 filterList << filter->name(); 1748 filterList << filter->name();
1749 config->setGroup("Filter_" + filter->name()); 1749 config->setGroup("Filter_" + filter->name());
1750 config->writeEntry("Criteria",filter->criteria()); 1750 config->writeEntry("Criteria",filter->criteria());
1751 config->writeEntry("CategoryList",filter->categoryList()); 1751 config->writeEntry("CategoryList",filter->categoryList());
1752 filter = mFilters.next(); 1752 filter = mFilters.next();
1753 } 1753 }
1754 config->setGroup("General"); 1754 config->setGroup("General");
1755 config->writeEntry("CalendarFilters",filterList); 1755 config->writeEntry("CalendarFilters",filterList);
1756 1756
1757 config->setGroup("FilterView"); 1757 config->setGroup("FilterView");
1758 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1758 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1759 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1759 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1760} 1760}
1761 1761
1762 1762
1763void CalendarView::goToday() 1763void CalendarView::goToday()
1764{ 1764{
1765 mNavigator->selectToday(); 1765 mNavigator->selectToday();
1766} 1766}
1767 1767
1768void CalendarView::goNext() 1768void CalendarView::goNext()
1769{ 1769{
1770 mNavigator->selectNext(); 1770 mNavigator->selectNext();
1771} 1771}
1772 1772
1773void CalendarView::goPrevious() 1773void CalendarView::goPrevious()
1774{ 1774{
1775 mNavigator->selectPrevious(); 1775 mNavigator->selectPrevious();
1776} 1776}
1777void CalendarView::goNextMonth() 1777void CalendarView::goNextMonth()
1778{ 1778{
1779 mNavigator->selectNextMonth(); 1779 mNavigator->selectNextMonth();
1780} 1780}
1781 1781
1782void CalendarView::goPreviousMonth() 1782void CalendarView::goPreviousMonth()
1783{ 1783{
1784 mNavigator->selectPreviousMonth(); 1784 mNavigator->selectPreviousMonth();
1785} 1785}
1786void CalendarView::writeLocale() 1786void CalendarView::writeLocale()
1787{ 1787{
1788 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1788 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1789 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1789 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1790 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1790 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1791 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1791 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1792 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1792 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1793 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1793 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1794 dummy = KOPrefs::instance()->mUserDateFormatShort; 1794 dummy = KOPrefs::instance()->mUserDateFormatShort;
1795 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1795 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1796 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1796 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1797 KOPrefs::instance()->mDaylightsavingStart, 1797 KOPrefs::instance()->mDaylightsavingStart,
1798 KOPrefs::instance()->mDaylightsavingEnd ); 1798 KOPrefs::instance()->mDaylightsavingEnd );
1799 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 1799 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
1800} 1800}
1801void CalendarView::updateConfig() 1801void CalendarView::updateConfig()
1802{ 1802{
1803 writeLocale(); 1803 writeLocale();
1804 if ( KOPrefs::instance()->mUseAppColors ) 1804 if ( KOPrefs::instance()->mUseAppColors )
1805 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 1805 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
1806 emit configChanged(); 1806 emit configChanged();
1807 mTodoList->updateConfig(); 1807 mTodoList->updateConfig();
1808 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 1808 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
1809 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1809 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1810 // To make the "fill window" configurations work 1810 // To make the "fill window" configurations work
1811 //mViewManager->raiseCurrentView(); 1811 //mViewManager->raiseCurrentView();
1812} 1812}
1813 1813
1814 1814
1815void CalendarView::eventChanged(Event *event) 1815void CalendarView::eventChanged(Event *event)
1816{ 1816{
1817 changeEventDisplay(event,KOGlobals::EVENTEDITED); 1817 changeEventDisplay(event,KOGlobals::EVENTEDITED);
1818 //updateUnmanagedViews(); 1818 //updateUnmanagedViews();
1819} 1819}
1820 1820
1821void CalendarView::eventAdded(Event *event) 1821void CalendarView::eventAdded(Event *event)
1822{ 1822{
1823 changeEventDisplay(event,KOGlobals::EVENTADDED); 1823 changeEventDisplay(event,KOGlobals::EVENTADDED);
1824} 1824}
1825 1825
1826void CalendarView::eventToBeDeleted(Event *) 1826void CalendarView::eventToBeDeleted(Event *)
1827{ 1827{
1828 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 1828 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
1829} 1829}
1830 1830
1831void CalendarView::eventDeleted() 1831void CalendarView::eventDeleted()
1832{ 1832{
1833 changeEventDisplay(0,KOGlobals::EVENTDELETED); 1833 changeEventDisplay(0,KOGlobals::EVENTDELETED);
1834} 1834}
1835void CalendarView::changeTodoDisplay(Todo *which, int action) 1835void CalendarView::changeTodoDisplay(Todo *which, int action)
1836{ 1836{
1837 changeIncidenceDisplay((Incidence *)which, action); 1837 changeIncidenceDisplay((Incidence *)which, action);
1838} 1838}
1839 1839
1840void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 1840void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
1841{ 1841{
1842 updateUnmanagedViews(); 1842 updateUnmanagedViews();
1843 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 1843 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
1844 if ( action == KOGlobals::EVENTDELETED ) { //delete 1844 if ( action == KOGlobals::EVENTDELETED ) { //delete
1845 mCalendar->checkAlarmForIncidence( 0, true ); 1845 mCalendar->checkAlarmForIncidence( 0, true );
1846 if ( mEventViewerDialog ) 1846 if ( mEventViewerDialog )
1847 mEventViewerDialog->hide(); 1847 mEventViewerDialog->hide();
1848 } 1848 }
1849 else 1849 else
1850 mCalendar->checkAlarmForIncidence( which , false ); 1850 mCalendar->checkAlarmForIncidence( which , false );
1851} 1851}
1852 1852
1853// most of the changeEventDisplays() right now just call the view's 1853// most of the changeEventDisplays() right now just call the view's
1854// total update mode, but they SHOULD be recoded to be more refresh-efficient. 1854// total update mode, but they SHOULD be recoded to be more refresh-efficient.
1855void CalendarView::changeEventDisplay(Event *which, int action) 1855void CalendarView::changeEventDisplay(Event *which, int action)
1856{ 1856{
1857 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 1857 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
1858 changeIncidenceDisplay((Incidence *)which, action); 1858 changeIncidenceDisplay((Incidence *)which, action);
1859 mDateNavigator->updateView(); 1859 mDateNavigator->updateView();
1860 //mDialogManager->updateSearchDialog(); 1860 //mDialogManager->updateSearchDialog();
1861 1861
1862 if (which) { 1862 if (which) {
1863 // If there is an event view visible update the display 1863 // If there is an event view visible update the display
1864 mViewManager->currentView()->changeEventDisplay(which,action); 1864 mViewManager->currentView()->changeEventDisplay(which,action);
1865 // TODO: check, if update needed 1865 // TODO: check, if update needed
1866 // if (which->getTodoStatus()) { 1866 // if (which->getTodoStatus()) {
1867 mTodoList->updateView(); 1867 mTodoList->updateView();
1868 // } 1868 // }
1869 } else { 1869 } else {
1870 mViewManager->currentView()->updateView(); 1870 mViewManager->currentView()->updateView();
1871 } 1871 }
1872} 1872}
1873 1873
1874 1874
1875void CalendarView::updateTodoViews() 1875void CalendarView::updateTodoViews()
1876{ 1876{
1877 1877
1878 mTodoList->updateView(); 1878 mTodoList->updateView();
1879 mViewManager->currentView()->updateView(); 1879 mViewManager->currentView()->updateView();
1880 1880
1881} 1881}
1882 1882
1883 1883
1884void CalendarView::updateView(const QDate &start, const QDate &end) 1884void CalendarView::updateView(const QDate &start, const QDate &end)
1885{ 1885{
1886 mTodoList->updateView(); 1886 mTodoList->updateView();
1887 mViewManager->updateView(start, end); 1887 mViewManager->updateView(start, end);
1888 //mDateNavigator->updateView(); 1888 //mDateNavigator->updateView();
1889} 1889}
1890 1890
1891void CalendarView::updateView() 1891void CalendarView::updateView()
1892{ 1892{
1893 DateList tmpList = mNavigator->selectedDates(); 1893 DateList tmpList = mNavigator->selectedDates();
1894 1894
1895 // We assume that the navigator only selects consecutive days. 1895 // We assume that the navigator only selects consecutive days.
1896 updateView( tmpList.first(), tmpList.last() ); 1896 updateView( tmpList.first(), tmpList.last() );
1897} 1897}
1898 1898
1899void CalendarView::updateUnmanagedViews() 1899void CalendarView::updateUnmanagedViews()
1900{ 1900{
1901 mDateNavigator->updateDayMatrix(); 1901 mDateNavigator->updateDayMatrix();
1902} 1902}
1903 1903
1904int CalendarView::msgItemDelete() 1904int CalendarView::msgItemDelete()
1905{ 1905{
1906 return KMessageBox::warningContinueCancel(this, 1906 return KMessageBox::warningContinueCancel(this,
1907 i18n("This item will be\npermanently deleted."), 1907 i18n("This item will be\npermanently deleted."),
1908 i18n("KO/Pi Confirmation"),i18n("Delete")); 1908 i18n("KO/Pi Confirmation"),i18n("Delete"));
1909} 1909}
1910 1910
1911 1911
1912void CalendarView::edit_cut() 1912void CalendarView::edit_cut()
1913{ 1913{
1914 Event *anEvent=0; 1914 Event *anEvent=0;
1915 1915
1916 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 1916 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
1917 1917
1918 if (mViewManager->currentView()->isEventView()) { 1918 if (mViewManager->currentView()->isEventView()) {
1919 if ( incidence && incidence->type() == "Event" ) { 1919 if ( incidence && incidence->type() == "Event" ) {
1920 anEvent = static_cast<Event *>(incidence); 1920 anEvent = static_cast<Event *>(incidence);
1921 } 1921 }
1922 } 1922 }
1923 1923
1924 if (!anEvent) { 1924 if (!anEvent) {
1925 KNotifyClient::beep(); 1925 KNotifyClient::beep();
1926 return; 1926 return;
1927 } 1927 }
1928 DndFactory factory( mCalendar ); 1928 DndFactory factory( mCalendar );
1929 factory.cutEvent(anEvent); 1929 factory.cutEvent(anEvent);
1930 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 1930 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
1931} 1931}
1932 1932
1933void CalendarView::edit_copy() 1933void CalendarView::edit_copy()
1934{ 1934{
1935 Event *anEvent=0; 1935 Event *anEvent=0;
1936 1936
1937 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 1937 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
1938 1938
1939 if (mViewManager->currentView()->isEventView()) { 1939 if (mViewManager->currentView()->isEventView()) {
1940 if ( incidence && incidence->type() == "Event" ) { 1940 if ( incidence && incidence->type() == "Event" ) {
1941 anEvent = static_cast<Event *>(incidence); 1941 anEvent = static_cast<Event *>(incidence);
1942 } 1942 }
1943 } 1943 }
1944 1944
1945 if (!anEvent) { 1945 if (!anEvent) {
1946 KNotifyClient::beep(); 1946 KNotifyClient::beep();
1947 return; 1947 return;
1948 } 1948 }
1949 DndFactory factory( mCalendar ); 1949 DndFactory factory( mCalendar );
1950 factory.copyEvent(anEvent); 1950 factory.copyEvent(anEvent);
1951} 1951}
1952 1952
1953void CalendarView::edit_paste() 1953void CalendarView::edit_paste()
1954{ 1954{
1955 QDate date = mNavigator->selectedDates().first(); 1955 QDate date = mNavigator->selectedDates().first();
1956 1956
1957 DndFactory factory( mCalendar ); 1957 DndFactory factory( mCalendar );
1958 Event *pastedEvent = factory.pasteEvent( date ); 1958 Event *pastedEvent = factory.pasteEvent( date );
1959 1959
1960 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 1960 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
1961} 1961}
1962 1962
1963void CalendarView::edit_options() 1963void CalendarView::edit_options()
1964{ 1964{
1965 mDialogManager->showOptionsDialog(); 1965 mDialogManager->showOptionsDialog();
1966 //writeSettings(); 1966 //writeSettings();
1967} 1967}
1968void CalendarView::edit_sync_options() 1968void CalendarView::edit_sync_options()
1969{ 1969{
1970 //mDialogManager->showSyncOptions(); 1970 //mDialogManager->showSyncOptions();
1971 //KOPrefs::instance()->mSyncAlgoPrefs 1971 //KOPrefs::instance()->mSyncAlgoPrefs
1972 QDialog dia( this, "dia", true ); 1972 QDialog dia( this, "dia", true );
1973 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 1973 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
1974 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 1974 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
1975 QVBoxLayout lay ( &dia ); 1975 QVBoxLayout lay ( &dia );
1976 lay.setSpacing( 2 ); 1976 lay.setSpacing( 2 );
1977 lay.setMargin( 3 ); 1977 lay.setMargin( 3 );
1978 lay.addWidget(&gr); 1978 lay.addWidget(&gr);
1979 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 1979 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );