summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2004-10-14 06:42:01 (UTC)
committer zautrix <zautrix>2004-10-14 06:42:01 (UTC)
commita6dff815a9c6d3a91094573d23c28a8553fc7cc2 (patch) (unidiff)
treea8830e9adcd72faa8178d4ee2517bfc31cda8653 /korganizer
parent909d25797c50fc38c435834a68aaf60bf87e32f9 (diff)
downloadkdepimpi-a6dff815a9c6d3a91094573d23c28a8553fc7cc2.zip
kdepimpi-a6dff815a9c6d3a91094573d23c28a8553fc7cc2.tar.gz
kdepimpi-a6dff815a9c6d3a91094573d23c28a8553fc7cc2.tar.bz2
fixes umlaute in beaming
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 1f2c6da..3e0a27d 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1,3722 +1,3730 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Requires the Qt and KDE widget libraries, available at no cost at 4 Requires the Qt and KDE widget libraries, available at no cost at
5 http://www.troll.no and http://www.kde.org respectively 5 http://www.troll.no and http://www.kde.org respectively
6 6
7 Copyright (c) 1997, 1998, 1999 7 Copyright (c) 1997, 1998, 1999
8 Preston Brown (preston.brown@yale.edu) 8 Preston Brown (preston.brown@yale.edu)
9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl) 9 Fester Zigterman (F.J.F.ZigtermanRustenburg@student.utwente.nl)
10 Ian Dawes (iadawes@globalserve.net) 10 Ian Dawes (iadawes@globalserve.net)
11 Laszlo Boloni (boloni@cs.purdue.edu) 11 Laszlo Boloni (boloni@cs.purdue.edu)
12 12
13 Copyright (c) 2000, 2001, 2002 13 Copyright (c) 2000, 2001, 2002
14 Cornelius Schumacher <schumacher@kde.org> 14 Cornelius Schumacher <schumacher@kde.org>
15 15
16 This program is free software; you can redistribute it and/or modify 16 This program is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by 17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 2 of the License, or 18 the Free Software Foundation; either version 2 of the License, or
19 (at your option) any later version. 19 (at your option) any later version.
20 20
21 This program is distributed in the hope that it will be useful, 21 This program is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the 23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
24 GNU General Public License for more details. 24 GNU General Public License for more details.
25 25
26 You should have received a copy of the GNU General Public License 26 You should have received a copy of the GNU General Public License
27 along with this program; if not, write to the Free Software 27 along with this program; if not, write to the Free Software
28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 28 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32 32
33#include <qapplication.h> 33#include <qapplication.h>
34#include <qradiobutton.h> 34#include <qradiobutton.h>
35#include <qbuttongroup.h> 35#include <qbuttongroup.h>
36#include <qlayout.h> 36#include <qlayout.h>
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qcursor.h> 38#include <qcursor.h>
39#include <qmessagebox.h> 39#include <qmessagebox.h>
40#include <qprogressbar.h> 40#include <qprogressbar.h>
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qwidgetstack.h> 43#include <qwidgetstack.h>
44#include <qptrlist.h> 44#include <qptrlist.h>
45#include <qregexp.h> 45#include <qregexp.h>
46#include <qgroupbox.h> 46#include <qgroupbox.h>
47#include <qfile.h> 47#include <qfile.h>
48#include <qdir.h> 48#include <qdir.h>
49#ifndef KORG_NOSPLITTER 49#ifndef KORG_NOSPLITTER
50#include <qsplitter.h> 50#include <qsplitter.h>
51#endif 51#endif
52 52
53#include <kglobal.h> 53#include <kglobal.h>
54#include <kdebug.h> 54#include <kdebug.h>
55#include <kstandarddirs.h> 55#include <kstandarddirs.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57#include <kmessagebox.h> 57#include <kmessagebox.h>
58#include <knotifyclient.h> 58#include <knotifyclient.h>
59#include <kconfig.h> 59#include <kconfig.h>
60 60
61#include <libkdepim/ksyncprefsdialog.h> 61#include <libkdepim/ksyncprefsdialog.h>
62#include <krun.h> 62#include <krun.h>
63#include <kdirwatch.h> 63#include <kdirwatch.h>
64#include <libkdepim/kdatepicker.h> 64#include <libkdepim/kdatepicker.h>
65#include <libkdepim/ksyncprofile.h> 65#include <libkdepim/ksyncprofile.h>
66#include <libkdepim/kpimglobalprefs.h> 66#include <libkdepim/kpimglobalprefs.h>
67 67
68#include <libkcal/vcaldrag.h> 68#include <libkcal/vcaldrag.h>
69#include <libkcal/icaldrag.h> 69#include <libkcal/icaldrag.h>
70#include <libkcal/icalformat.h> 70#include <libkcal/icalformat.h>
71#include <libkcal/vcalformat.h> 71#include <libkcal/vcalformat.h>
72#include <libkcal/scheduler.h> 72#include <libkcal/scheduler.h>
73#include <libkcal/calendarlocal.h> 73#include <libkcal/calendarlocal.h>
74#include <libkcal/journal.h> 74#include <libkcal/journal.h>
75#include <libkcal/calfilter.h> 75#include <libkcal/calfilter.h>
76#include <libkcal/attendee.h> 76#include <libkcal/attendee.h>
77#include <libkcal/dndfactory.h> 77#include <libkcal/dndfactory.h>
78#include <libkcal/freebusy.h> 78#include <libkcal/freebusy.h>
79#include <libkcal/filestorage.h> 79#include <libkcal/filestorage.h>
80#include <libkcal/calendarresources.h> 80#include <libkcal/calendarresources.h>
81#include <libkcal/qtopiaformat.h> 81#include <libkcal/qtopiaformat.h>
82#include "../kalarmd/alarmdialog.h" 82#include "../kalarmd/alarmdialog.h"
83 83
84#ifndef DESKTOP_VERSION 84#ifndef DESKTOP_VERSION
85#include <libkcal/sharpformat.h> 85#include <libkcal/sharpformat.h>
86#include <externalapphandler.h> 86#include <externalapphandler.h>
87#endif 87#endif
88#include <libkcal/phoneformat.h> 88#include <libkcal/phoneformat.h>
89#ifndef KORG_NOMAIL 89#ifndef KORG_NOMAIL
90#include "komailclient.h" 90#include "komailclient.h"
91#endif 91#endif
92#ifndef KORG_NOPRINTER 92#ifndef KORG_NOPRINTER
93#include "calprinter.h" 93#include "calprinter.h"
94#endif 94#endif
95#ifndef KORG_NOPLUGINS 95#ifndef KORG_NOPLUGINS
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "kodialogmanager.h" 107#include "kodialogmanager.h"
108#include "outgoingdialog.h" 108#include "outgoingdialog.h"
109#include "incomingdialog.h" 109#include "incomingdialog.h"
110#include "statusdialog.h" 110#include "statusdialog.h"
111#include "kdatenavigator.h" 111#include "kdatenavigator.h"
112#include "kotodoview.h" 112#include "kotodoview.h"
113#include "datenavigator.h" 113#include "datenavigator.h"
114#include "resourceview.h" 114#include "resourceview.h"
115#include "navigatorbar.h" 115#include "navigatorbar.h"
116#include "searchdialog.h" 116#include "searchdialog.h"
117#include "mainwindow.h" 117#include "mainwindow.h"
118 118
119#include "calendarview.h" 119#include "calendarview.h"
120#ifndef DESKTOP_VERSION 120#ifndef DESKTOP_VERSION
121#include <qtopia/alarmserver.h> 121#include <qtopia/alarmserver.h>
122#endif 122#endif
123#ifndef _WIN32_ 123#ifndef _WIN32_
124#include <stdlib.h> 124#include <stdlib.h>
125#include <stdio.h> 125#include <stdio.h>
126#include <unistd.h> 126#include <unistd.h>
127#else 127#else
128#include <qprocess.h> 128#include <qprocess.h>
129#endif 129#endif
130 130
131#ifdef DESKTOP_VERSION 131#ifdef DESKTOP_VERSION
132#include <kabc/stdaddressbook.h> 132#include <kabc/stdaddressbook.h>
133#endif 133#endif
134using namespace KOrg; 134using namespace KOrg;
135using namespace KCal; 135using namespace KCal;
136extern int globalFlagBlockAgenda; 136extern int globalFlagBlockAgenda;
137extern int globalFlagBlockStartup; 137extern int globalFlagBlockStartup;
138 138
139 139
140 140
141class KOBeamPrefs : public QDialog 141class KOBeamPrefs : public QDialog
142{ 142{
143 public: 143 public:
144 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 144 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
145 QDialog( parent, name, true ) 145 QDialog( parent, name, true )
146 { 146 {
147 setCaption( i18n("Beam Options") ); 147 setCaption( i18n("Beam Options") );
148 QVBoxLayout* lay = new QVBoxLayout( this ); 148 QVBoxLayout* lay = new QVBoxLayout( this );
149 lay->setSpacing( 3 ); 149 lay->setSpacing( 3 );
150 lay->setMargin( 3 ); 150 lay->setMargin( 3 );
151 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 151 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
152 lay->addWidget( format ); 152 lay->addWidget( format );
153 format->setExclusive ( true ) ; 153 format->setExclusive ( true ) ;
154 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 154 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
155 lay->addWidget( time ); time->setExclusive ( true ) ; 155 lay->addWidget( time ); time->setExclusive ( true ) ;
156 vcal = new QRadioButton(" vCalendar ", format ); 156 vcal = new QRadioButton(" vCalendar ", format );
157 ical = new QRadioButton(" iCalendar ", format ); 157 ical = new QRadioButton(" iCalendar ", format );
158 vcal->setChecked( true ); 158 vcal->setChecked( true );
159 tz = new QRadioButton(i18n(" With timezone "), time ); 159 tz = new QRadioButton(i18n(" With timezone "), time );
160 local = new QRadioButton(i18n(" Local time "), time ); 160 local = new QRadioButton(i18n(" Local time "), time );
161 tz->setChecked( true ); 161 tz->setChecked( true );
162 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 162 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
163 lay->addWidget( ok ); 163 lay->addWidget( ok );
164 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 164 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
165 lay->addWidget( cancel ); 165 lay->addWidget( cancel );
166 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 166 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
167 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 167 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
168 resize( 200, 200 ); 168 resize( 200, 200 );
169 } 169 }
170 170
171 bool beamVcal() { return vcal->isChecked(); } 171 bool beamVcal() { return vcal->isChecked(); }
172 bool beamLocal() { return local->isChecked(); } 172 bool beamLocal() { return local->isChecked(); }
173private: 173private:
174 QRadioButton* vcal, *ical, *local, *tz; 174 QRadioButton* vcal, *ical, *local, *tz;
175}; 175};
176class KOCatPrefs : public QDialog 176class KOCatPrefs : public QDialog
177{ 177{
178 public: 178 public:
179 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 179 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
180 QDialog( parent, name, true ) 180 QDialog( parent, name, true )
181 { 181 {
182 setCaption( i18n("Manage new Categories") ); 182 setCaption( i18n("Manage new Categories") );
183 QVBoxLayout* lay = new QVBoxLayout( this ); 183 QVBoxLayout* lay = new QVBoxLayout( this );
184 lay->setSpacing( 3 ); 184 lay->setSpacing( 3 );
185 lay->setMargin( 3 ); 185 lay->setMargin( 3 );
186 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 ); 186 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 );
187 lay->addWidget( lab ); 187 lay->addWidget( lab );
188 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 188 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
189 lay->addWidget( format ); 189 lay->addWidget( format );
190 format->setExclusive ( true ) ; 190 format->setExclusive ( true ) ;
191 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 191 addCatBut = new QRadioButton(i18n("Add to category list"), format );
192 new QRadioButton(i18n("Remove from Events/Todos"), format ); 192 new QRadioButton(i18n("Remove from Events/Todos"), format );
193 addCatBut->setChecked( true ); 193 addCatBut->setChecked( true );
194 QPushButton * ok = new QPushButton( i18n("OK"), this ); 194 QPushButton * ok = new QPushButton( i18n("OK"), this );
195 lay->addWidget( ok ); 195 lay->addWidget( ok );
196 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 196 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
197 lay->addWidget( cancel ); 197 lay->addWidget( cancel );
198 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 198 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
199 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 199 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
200 resize( 200, 200 ); 200 resize( 200, 200 );
201 } 201 }
202 202
203 bool addCat() { return addCatBut->isChecked(); } 203 bool addCat() { return addCatBut->isChecked(); }
204private: 204private:
205 QRadioButton* addCatBut; 205 QRadioButton* addCatBut;
206}; 206};
207 207
208 208
209 209
210CalendarView::CalendarView( CalendarResources *calendar, 210CalendarView::CalendarView( CalendarResources *calendar,
211 QWidget *parent, const char *name ) 211 QWidget *parent, const char *name )
212 : CalendarViewBase( parent, name ), 212 : CalendarViewBase( parent, name ),
213 mCalendar( calendar ), 213 mCalendar( calendar ),
214 mResourceManager( calendar->resourceManager() ) 214 mResourceManager( calendar->resourceManager() )
215{ 215{
216 216
217 mEventEditor = 0; 217 mEventEditor = 0;
218 mTodoEditor = 0; 218 mTodoEditor = 0;
219 219
220 init(); 220 init();
221} 221}
222 222
223CalendarView::CalendarView( Calendar *calendar, 223CalendarView::CalendarView( Calendar *calendar,
224 QWidget *parent, const char *name ) 224 QWidget *parent, const char *name )
225 : CalendarViewBase( parent, name ), 225 : CalendarViewBase( parent, name ),
226 mCalendar( calendar ), 226 mCalendar( calendar ),
227 mResourceManager( 0 ) 227 mResourceManager( 0 )
228{ 228{
229 229
230 mEventEditor = 0; 230 mEventEditor = 0;
231 mTodoEditor = 0; 231 mTodoEditor = 0;
232 init();} 232 init();}
233 233
234void CalendarView::init() 234void CalendarView::init()
235{ 235{
236 beamDialog = new KOBeamPrefs(); 236 beamDialog = new KOBeamPrefs();
237 mDatePickerMode = 0; 237 mDatePickerMode = 0;
238 mCurrentSyncDevice = ""; 238 mCurrentSyncDevice = "";
239 writeLocale(); 239 writeLocale();
240 mViewManager = new KOViewManager( this ); 240 mViewManager = new KOViewManager( this );
241 mDialogManager = new KODialogManager( this ); 241 mDialogManager = new KODialogManager( this );
242 mEventViewerDialog = 0; 242 mEventViewerDialog = 0;
243 mModified = false; 243 mModified = false;
244 mReadOnly = false; 244 mReadOnly = false;
245 mSelectedIncidence = 0; 245 mSelectedIncidence = 0;
246 mCalPrinter = 0; 246 mCalPrinter = 0;
247 mFilters.setAutoDelete(true); 247 mFilters.setAutoDelete(true);
248 248
249 mCalendar->registerObserver( this ); 249 mCalendar->registerObserver( this );
250 // TODO: Make sure that view is updated, when calendar is changed. 250 // TODO: Make sure that view is updated, when calendar is changed.
251 251
252 mStorage = new FileStorage( mCalendar ); 252 mStorage = new FileStorage( mCalendar );
253 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 253 mNavigator = new DateNavigator( this, "datevav", mViewManager );
254 254
255 QBoxLayout *topLayout = (QBoxLayout*)layout(); 255 QBoxLayout *topLayout = (QBoxLayout*)layout();
256#ifndef KORG_NOSPLITTER 256#ifndef KORG_NOSPLITTER
257 // create the main layout frames. 257 // create the main layout frames.
258 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 258 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
259 topLayout->addWidget(mPanner); 259 topLayout->addWidget(mPanner);
260 260
261 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 261 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
262 "CalendarView::LeftFrame"); 262 "CalendarView::LeftFrame");
263 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 263 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
264 264
265 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE, 265 mDateNavigator = new KDateNavigator(mLeftSplitter, mCalendar, TRUE,
266 "CalendarView::DateNavigator", QDate::currentDate() ); 266 "CalendarView::DateNavigator", QDate::currentDate() );
267 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 267 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
268 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 268 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
269 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 269 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
270 270
271#ifdef KORG_NORESOURCEVIEW 271#ifdef KORG_NORESOURCEVIEW
272 mResourceView = 0; 272 mResourceView = 0;
273#else 273#else
274 if ( mResourceManager ) { 274 if ( mResourceManager ) {
275 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 275 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
276 mResourceView->updateView(); 276 mResourceView->updateView();
277 connect( mResourceView, SIGNAL( resourcesChanged() ), 277 connect( mResourceView, SIGNAL( resourcesChanged() ),
278 SLOT( updateView() ) ); 278 SLOT( updateView() ) );
279 } else { 279 } else {
280 mResourceView = 0; 280 mResourceView = 0;
281 } 281 }
282#endif 282#endif
283 QWidget *rightBox = new QWidget( mPanner ); 283 QWidget *rightBox = new QWidget( mPanner );
284 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 284 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
285 285
286 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 286 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
287 rightLayout->addWidget( mNavigatorBar ); 287 rightLayout->addWidget( mNavigatorBar );
288 288
289 mRightFrame = new QWidgetStack( rightBox ); 289 mRightFrame = new QWidgetStack( rightBox );
290 rightLayout->addWidget( mRightFrame, 1 ); 290 rightLayout->addWidget( mRightFrame, 1 );
291 291
292 mLeftFrame = mLeftSplitter; 292 mLeftFrame = mLeftSplitter;
293#else 293#else
294 QWidget *mainBox = new QWidget( this ); 294 QWidget *mainBox = new QWidget( this );
295 QWidget *leftFrame = new QWidget( mainBox ); 295 QWidget *leftFrame = new QWidget( mainBox );
296 296
297 QBoxLayout * mainBoxLayout; 297 QBoxLayout * mainBoxLayout;
298 QBoxLayout * leftFrameLayout; 298 QBoxLayout * leftFrameLayout;
299 if ( KOPrefs::instance()->mVerticalScreen ) { 299 if ( KOPrefs::instance()->mVerticalScreen ) {
300 mainBoxLayout = new QVBoxLayout(mainBox); 300 mainBoxLayout = new QVBoxLayout(mainBox);
301 leftFrameLayout = new QHBoxLayout(leftFrame ); 301 leftFrameLayout = new QHBoxLayout(leftFrame );
302 } else { 302 } else {
303 mainBoxLayout = new QHBoxLayout(mainBox); 303 mainBoxLayout = new QHBoxLayout(mainBox);
304 leftFrameLayout = new QVBoxLayout(leftFrame ); 304 leftFrameLayout = new QVBoxLayout(leftFrame );
305 } 305 }
306 topLayout->addWidget( mainBox ); 306 topLayout->addWidget( mainBox );
307 mainBoxLayout->addWidget (leftFrame); 307 mainBoxLayout->addWidget (leftFrame);
308 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE, 308 mDateNavigator = new KDateNavigator(leftFrame, mCalendar, TRUE,
309 "CalendarView::DateNavigator", QDate::currentDate()); 309 "CalendarView::DateNavigator", QDate::currentDate());
310 // mDateNavigator->blockSignals( true ); 310 // mDateNavigator->blockSignals( true );
311 leftFrameLayout->addWidget( mDateNavigator ); 311 leftFrameLayout->addWidget( mDateNavigator );
312 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView"); 312 mFilterView = new KOFilterView(&mFilters,leftFrame,"CalendarView::FilterView");
313 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolistsmall"); 313 mTodoList = new KOTodoView(mCalendar, leftFrame, "todolistsmall");
314 314
315 if ( QApplication::desktop()->width() < 480 ) { 315 if ( QApplication::desktop()->width() < 480 ) {
316 leftFrameLayout->addWidget(mFilterView); 316 leftFrameLayout->addWidget(mFilterView);
317 leftFrameLayout->addWidget(mTodoList, 2 ); 317 leftFrameLayout->addWidget(mTodoList, 2 );
318 318
319 } else { 319 } else {
320 leftFrameLayout->addWidget(mTodoList,2 ); 320 leftFrameLayout->addWidget(mTodoList,2 );
321 leftFrameLayout->addWidget(mFilterView ); 321 leftFrameLayout->addWidget(mFilterView );
322 } 322 }
323 mFilterView->hide(); 323 mFilterView->hide();
324 QWidget *rightBox = new QWidget( mainBox ); 324 QWidget *rightBox = new QWidget( mainBox );
325 mainBoxLayout->addWidget ( rightBox, 10 ); 325 mainBoxLayout->addWidget ( rightBox, 10 );
326 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 326 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
327 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" ); 327 mNavigatorBar = new NavigatorBar( QDate::currentDate(), rightBox, "useBigPixmaps" );
328 mRightFrame = new QWidgetStack( rightBox ); 328 mRightFrame = new QWidgetStack( rightBox );
329 rightLayout->addWidget( mNavigatorBar ); 329 rightLayout->addWidget( mNavigatorBar );
330 rightLayout->addWidget( mRightFrame, 10 ); 330 rightLayout->addWidget( mRightFrame, 10 );
331 331
332 mLeftFrame = leftFrame; 332 mLeftFrame = leftFrame;
333 if ( KOPrefs::instance()->mVerticalScreen ) { 333 if ( KOPrefs::instance()->mVerticalScreen ) {
334 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 334 mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
335 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 335 leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
336 } else { 336 } else {
337 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 337 mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
338 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 338 leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
339 } 339 }
340 340
341 //qDebug("Calendarview Size %d %d ", width(), height()); 341 //qDebug("Calendarview Size %d %d ", width(), height());
342#endif 342#endif
343 343
344 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 344 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
345 SLOT( showDates( const KCal::DateList & ) ) ); 345 SLOT( showDates( const KCal::DateList & ) ) );
346 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 346 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
347 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 347 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
348 348
349 connect( mNavigatorBar, SIGNAL( goPrevYear() ), 349 connect( mNavigatorBar, SIGNAL( goPrevYear() ),
350 mNavigator, SLOT( selectPreviousYear() ) ); 350 mNavigator, SLOT( selectPreviousYear() ) );
351 connect( mNavigatorBar, SIGNAL( goNextYear() ), 351 connect( mNavigatorBar, SIGNAL( goNextYear() ),
352 mNavigator, SLOT( selectNextYear() ) ); 352 mNavigator, SLOT( selectNextYear() ) );
353 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), 353 connect( mNavigatorBar, SIGNAL( goPrevMonth() ),
354 mNavigator, SLOT( selectPreviousMonth() ) ); 354 mNavigator, SLOT( selectPreviousMonth() ) );
355 connect( mNavigatorBar, SIGNAL( goNextMonth() ), 355 connect( mNavigatorBar, SIGNAL( goNextMonth() ),
356 mNavigator, SLOT( selectNextMonth() ) ); 356 mNavigator, SLOT( selectNextMonth() ) );
357 357
358 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 358 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
359 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) ); 359 mNavigatorBar, SLOT( selectDates( const KCal::DateList & ) ) );
360 360
361 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 361 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
362 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 362 mNavigator, SLOT( selectWeek( const QDate & ) ) );
363 363
364 connect( mDateNavigator, SIGNAL( goPrevYear() ), 364 connect( mDateNavigator, SIGNAL( goPrevYear() ),
365 mNavigator, SLOT( selectPreviousYear() ) ); 365 mNavigator, SLOT( selectPreviousYear() ) );
366 connect( mDateNavigator, SIGNAL( goNextYear() ), 366 connect( mDateNavigator, SIGNAL( goNextYear() ),
367 mNavigator, SLOT( selectNextYear() ) ); 367 mNavigator, SLOT( selectNextYear() ) );
368 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 368 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
369 mNavigator, SLOT( selectPreviousMonth() ) ); 369 mNavigator, SLOT( selectPreviousMonth() ) );
370 connect( mDateNavigator, SIGNAL( goNextMonth() ), 370 connect( mDateNavigator, SIGNAL( goNextMonth() ),
371 mNavigator, SLOT( selectNextMonth() ) ); 371 mNavigator, SLOT( selectNextMonth() ) );
372 372
373 connect( mDateNavigator, SIGNAL( goPrevious() ), 373 connect( mDateNavigator, SIGNAL( goPrevious() ),
374 mNavigator, SLOT( selectPrevious() ) ); 374 mNavigator, SLOT( selectPrevious() ) );
375 connect( mDateNavigator, SIGNAL( goNext() ), 375 connect( mDateNavigator, SIGNAL( goNext() ),
376 mNavigator, SLOT( selectNext() ) ); 376 mNavigator, SLOT( selectNext() ) );
377 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 377 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
378 mNavigator, SLOT( slotMonthSelect( int ) ) ); 378 mNavigator, SLOT( slotMonthSelect( int ) ) );
379 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ), 379 connect( mNavigatorBar, SIGNAL( monthSelected ( int ) ),
380 mNavigator, SLOT( slotMonthSelect( int ) ) ); 380 mNavigator, SLOT( slotMonthSelect( int ) ) );
381 381
382 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 382 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
383 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 383 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
384 384
385 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ), 385 connect( mDateNavigator, SIGNAL( eventDropped( Event * ) ),
386 SLOT( eventAdded( Event *) ) ); 386 SLOT( eventAdded( Event *) ) );
387 387
388 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 388 connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
389 389
390 connect( this, SIGNAL( configChanged() ), 390 connect( this, SIGNAL( configChanged() ),
391 mDateNavigator, SLOT( updateConfig() ) ); 391 mDateNavigator, SLOT( updateConfig() ) );
392 392
393 connect( mTodoList, SIGNAL( newTodoSignal() ), 393 connect( mTodoList, SIGNAL( newTodoSignal() ),
394 SLOT( newTodo() ) ); 394 SLOT( newTodo() ) );
395 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 395 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
396 SLOT( newSubTodo( Todo * ) ) ); 396 SLOT( newSubTodo( Todo * ) ) );
397 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 397 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
398 SLOT( editTodo( Todo * ) ) ); 398 SLOT( editTodo( Todo * ) ) );
399 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 399 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
400 SLOT( showTodo( Todo *) ) ); 400 SLOT( showTodo( Todo *) ) );
401 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 401 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
402 SLOT( deleteTodo( Todo *) ) ); 402 SLOT( deleteTodo( Todo *) ) );
403 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 403 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
404 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 404 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
405 SLOT( purgeCompleted() ) ); 405 SLOT( purgeCompleted() ) );
406 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 406 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
407 SIGNAL( todoModified( Todo *, int ) ) ); 407 SIGNAL( todoModified( Todo *, int ) ) );
408 408
409 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 409 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
410 this, SLOT ( cloneIncidence( Incidence * ) ) ); 410 this, SLOT ( cloneIncidence( Incidence * ) ) );
411 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 411 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
412 this, SLOT (cancelIncidence( Incidence * ) ) ); 412 this, SLOT (cancelIncidence( Incidence * ) ) );
413 413
414 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 414 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
415 this, SLOT ( moveIncidence( Incidence * ) ) ); 415 this, SLOT ( moveIncidence( Incidence * ) ) );
416 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 416 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
417 this, SLOT ( beamIncidence( Incidence * ) ) ); 417 this, SLOT ( beamIncidence( Incidence * ) ) );
418 418
419 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 419 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
420 this, SLOT ( todo_unsub( Todo * ) ) ); 420 this, SLOT ( todo_unsub( Todo * ) ) );
421 421
422 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 422 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
423 SLOT( updateTodo( Todo *, int ) ) ); 423 SLOT( updateTodo( Todo *, int ) ) );
424 connect( this, SIGNAL( todoModified( Todo *, int )), this, 424 connect( this, SIGNAL( todoModified( Todo *, int )), this,
425 SLOT( changeTodoDisplay( Todo *, int ) ) ); 425 SLOT( changeTodoDisplay( Todo *, int ) ) );
426 426
427 427
428 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 428 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
429 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 429 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
430 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 430 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
431 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 431 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
432 432
433 433
434 434
435 435
436 436
437 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 437 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
438 SLOT(checkClipboard())); 438 SLOT(checkClipboard()));
439 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 439 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
440 SLOT( processTodoListSelection( Incidence * ) ) ); 440 SLOT( processTodoListSelection( Incidence * ) ) );
441 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 441 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
442 442
443 // kdDebug() << "CalendarView::CalendarView() done" << endl; 443 // kdDebug() << "CalendarView::CalendarView() done" << endl;
444 444
445 mDateFrame = new QVBox(0,0,WType_Popup); 445 mDateFrame = new QVBox(0,0,WType_Popup);
446 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 446 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
447 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 447 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
448 mDateFrame->setLineWidth(3); 448 mDateFrame->setLineWidth(3);
449 mDateFrame->hide(); 449 mDateFrame->hide();
450 mDateFrame->setCaption( i18n( "Pick a date to display")); 450 mDateFrame->setCaption( i18n( "Pick a date to display"));
451 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 451 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
452 452
453 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 453 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
454 454
455 mEventEditor = mDialogManager->getEventEditor(); 455 mEventEditor = mDialogManager->getEventEditor();
456 mTodoEditor = mDialogManager->getTodoEditor(); 456 mTodoEditor = mDialogManager->getTodoEditor();
457 457
458 mFlagEditDescription = false; 458 mFlagEditDescription = false;
459 459
460 mSuspendTimer = new QTimer( this ); 460 mSuspendTimer = new QTimer( this );
461 mAlarmTimer = new QTimer( this ); 461 mAlarmTimer = new QTimer( this );
462 mRecheckAlarmTimer = new QTimer( this ); 462 mRecheckAlarmTimer = new QTimer( this );
463 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 463 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
464 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 464 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
465 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 465 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
466 mAlarmDialog = new AlarmDialog( this ); 466 mAlarmDialog = new AlarmDialog( this );
467 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 467 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
468 mAlarmDialog->setServerNotification( false ); 468 mAlarmDialog->setServerNotification( false );
469 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 469 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
470 470
471 471
472#ifndef DESKTOP_VERSION 472#ifndef DESKTOP_VERSION
473//US listen for arriving address resultsets 473//US listen for arriving address resultsets
474 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 474 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
475 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 475 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
476#endif 476#endif
477 477
478} 478}
479 479
480 480
481CalendarView::~CalendarView() 481CalendarView::~CalendarView()
482{ 482{
483 // kdDebug() << "~CalendarView()" << endl; 483 // kdDebug() << "~CalendarView()" << endl;
484 //qDebug("CalendarView::~CalendarView() "); 484 //qDebug("CalendarView::~CalendarView() ");
485 delete mDialogManager; 485 delete mDialogManager;
486 delete mViewManager; 486 delete mViewManager;
487 delete mStorage; 487 delete mStorage;
488 delete mDateFrame ; 488 delete mDateFrame ;
489 delete beamDialog; 489 delete beamDialog;
490 //kdDebug() << "~CalendarView() done" << endl; 490 //kdDebug() << "~CalendarView() done" << endl;
491} 491}
492void CalendarView::timerAlarm() 492void CalendarView::timerAlarm()
493{ 493{
494 //qDebug("CalendarView::timerAlarm() "); 494 //qDebug("CalendarView::timerAlarm() ");
495 computeAlarm(mAlarmNotification ); 495 computeAlarm(mAlarmNotification );
496} 496}
497 497
498void CalendarView::suspendAlarm() 498void CalendarView::suspendAlarm()
499{ 499{
500 //qDebug(" CalendarView::suspendAlarm() "); 500 //qDebug(" CalendarView::suspendAlarm() ");
501 computeAlarm(mSuspendAlarmNotification ); 501 computeAlarm(mSuspendAlarmNotification );
502 502
503} 503}
504 504
505void CalendarView::startAlarm( QString mess , QString filename) 505void CalendarView::startAlarm( QString mess , QString filename)
506{ 506{
507 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 507 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
508 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 508 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
509 509
510} 510}
511 511
512void CalendarView::checkNextTimerAlarm() 512void CalendarView::checkNextTimerAlarm()
513{ 513{
514 mCalendar->checkAlarmForIncidence( 0, true ); 514 mCalendar->checkAlarmForIncidence( 0, true );
515} 515}
516 516
517void CalendarView::computeAlarm( QString msg ) 517void CalendarView::computeAlarm( QString msg )
518{ 518{
519 519
520 QString mess = msg; 520 QString mess = msg;
521 QString mAlarmMessage = mess.mid( 9 ); 521 QString mAlarmMessage = mess.mid( 9 );
522 QString filename = MainWindow::resourcePath(); 522 QString filename = MainWindow::resourcePath();
523 filename += "koalarm.wav"; 523 filename += "koalarm.wav";
524 QString tempfilename; 524 QString tempfilename;
525 if ( mess.left( 13 ) == "suspend_alarm") { 525 if ( mess.left( 13 ) == "suspend_alarm") {
526 bool error = false; 526 bool error = false;
527 int len = mess.mid( 13 ).find("+++"); 527 int len = mess.mid( 13 ).find("+++");
528 if ( len < 2 ) 528 if ( len < 2 )
529 error = true; 529 error = true;
530 else { 530 else {
531 tempfilename = mess.mid( 13, len ); 531 tempfilename = mess.mid( 13, len );
532 if ( !QFile::exists( tempfilename ) ) 532 if ( !QFile::exists( tempfilename ) )
533 error = true; 533 error = true;
534 } 534 }
535 if ( ! error ) { 535 if ( ! error ) {
536 filename = tempfilename; 536 filename = tempfilename;
537 } 537 }
538 mAlarmMessage = mess.mid( 13+len+3 ); 538 mAlarmMessage = mess.mid( 13+len+3 );
539 //qDebug("suspend file %s ",tempfilename.latin1() ); 539 //qDebug("suspend file %s ",tempfilename.latin1() );
540 startAlarm( mAlarmMessage, filename); 540 startAlarm( mAlarmMessage, filename);
541 return; 541 return;
542 } 542 }
543 if ( mess.left( 11 ) == "timer_alarm") { 543 if ( mess.left( 11 ) == "timer_alarm") {
544 //mTimerTime = 0; 544 //mTimerTime = 0;
545 startAlarm( mess.mid( 11 ), filename ); 545 startAlarm( mess.mid( 11 ), filename );
546 return; 546 return;
547 } 547 }
548 if ( mess.left( 10 ) == "proc_alarm") { 548 if ( mess.left( 10 ) == "proc_alarm") {
549 bool error = false; 549 bool error = false;
550 int len = mess.mid( 10 ).find("+++"); 550 int len = mess.mid( 10 ).find("+++");
551 if ( len < 2 ) 551 if ( len < 2 )
552 error = true; 552 error = true;
553 else { 553 else {
554 tempfilename = mess.mid( 10, len ); 554 tempfilename = mess.mid( 10, len );
555 if ( !QFile::exists( tempfilename ) ) 555 if ( !QFile::exists( tempfilename ) )
556 error = true; 556 error = true;
557 } 557 }
558 if ( error ) { 558 if ( error ) {
559 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 559 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
560 mAlarmMessage += mess.mid( 10+len+3+9 ); 560 mAlarmMessage += mess.mid( 10+len+3+9 );
561 } else { 561 } else {
562 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 562 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
563 //qDebug("-----system command %s ",tempfilename.latin1() ); 563 //qDebug("-----system command %s ",tempfilename.latin1() );
564#ifndef _WIN32_ 564#ifndef _WIN32_
565 if ( vfork () == 0 ) { 565 if ( vfork () == 0 ) {
566 execl ( tempfilename.latin1(), 0 ); 566 execl ( tempfilename.latin1(), 0 );
567 return; 567 return;
568 } 568 }
569#else 569#else
570 QProcess* p = new QProcess(); 570 QProcess* p = new QProcess();
571 p->addArgument( tempfilename.latin1() ); 571 p->addArgument( tempfilename.latin1() );
572 p->start(); 572 p->start();
573 return; 573 return;
574#endif 574#endif
575 575
576 return; 576 return;
577 } 577 }
578 578
579 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 579 //qDebug("+++++++system command %s ",tempfilename.latin1() );
580 } 580 }
581 if ( mess.left( 11 ) == "audio_alarm") { 581 if ( mess.left( 11 ) == "audio_alarm") {
582 bool error = false; 582 bool error = false;
583 int len = mess.mid( 11 ).find("+++"); 583 int len = mess.mid( 11 ).find("+++");
584 if ( len < 2 ) 584 if ( len < 2 )
585 error = true; 585 error = true;
586 else { 586 else {
587 tempfilename = mess.mid( 11, len ); 587 tempfilename = mess.mid( 11, len );
588 if ( !QFile::exists( tempfilename ) ) 588 if ( !QFile::exists( tempfilename ) )
589 error = true; 589 error = true;
590 } 590 }
591 if ( ! error ) { 591 if ( ! error ) {
592 filename = tempfilename; 592 filename = tempfilename;
593 } 593 }
594 mAlarmMessage = mess.mid( 11+len+3+9 ); 594 mAlarmMessage = mess.mid( 11+len+3+9 );
595 //qDebug("audio file command %s ",tempfilename.latin1() ); 595 //qDebug("audio file command %s ",tempfilename.latin1() );
596 } 596 }
597 if ( mess.left( 9 ) == "cal_alarm") { 597 if ( mess.left( 9 ) == "cal_alarm") {
598 mAlarmMessage = mess.mid( 9 ) ; 598 mAlarmMessage = mess.mid( 9 ) ;
599 } 599 }
600 600
601 startAlarm( mAlarmMessage, filename ); 601 startAlarm( mAlarmMessage, filename );
602 602
603 603
604} 604}
605 605
606void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 606void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
607{ 607{
608 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 608 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
609 609
610 mSuspendAlarmNotification = noti; 610 mSuspendAlarmNotification = noti;
611 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 611 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
612 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 612 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
613 mSuspendTimer->start( ms , true ); 613 mSuspendTimer->start( ms , true );
614 614
615} 615}
616 616
617void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 617void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
618{ 618{
619 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 619 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
620 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 620 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
621#ifndef DESKTOP_VERSION 621#ifndef DESKTOP_VERSION
622 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 622 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
623#endif 623#endif
624 return; 624 return;
625 } 625 }
626 int maxSec; 626 int maxSec;
627 //maxSec = 5; //testing only 627 //maxSec = 5; //testing only
628 maxSec = 86400+3600; // one day+1hour 628 maxSec = 86400+3600; // one day+1hour
629 mAlarmNotification = noti; 629 mAlarmNotification = noti;
630 int sec = QDateTime::currentDateTime().secsTo( qdt ); 630 int sec = QDateTime::currentDateTime().secsTo( qdt );
631 if ( sec > maxSec ) { 631 if ( sec > maxSec ) {
632 mRecheckAlarmTimer->start( maxSec * 1000 ); 632 mRecheckAlarmTimer->start( maxSec * 1000 );
633 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 633 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
634 return; 634 return;
635 } else { 635 } else {
636 mRecheckAlarmTimer->stop(); 636 mRecheckAlarmTimer->stop();
637 } 637 }
638 //qDebug("Alarm timer started with secs: %d ", sec); 638 //qDebug("Alarm timer started with secs: %d ", sec);
639 mAlarmTimer->start( sec *1000 , true ); 639 mAlarmTimer->start( sec *1000 , true );
640 640
641} 641}
642// called by mRecheckAlarmTimer to get next alarm 642// called by mRecheckAlarmTimer to get next alarm
643// we need this, because a QTimer has only a max range of 25 days 643// we need this, because a QTimer has only a max range of 25 days
644void CalendarView::recheckTimerAlarm() 644void CalendarView::recheckTimerAlarm()
645{ 645{
646 mAlarmTimer->stop(); 646 mAlarmTimer->stop();
647 mRecheckAlarmTimer->stop(); 647 mRecheckAlarmTimer->stop();
648 mCalendar->checkAlarmForIncidence( 0, true ); 648 mCalendar->checkAlarmForIncidence( 0, true );
649} 649}
650void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 650void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
651{ 651{
652 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 652 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
653 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 653 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
654#ifndef DESKTOP_VERSION 654#ifndef DESKTOP_VERSION
655 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 655 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
656#endif 656#endif
657 return; 657 return;
658 } 658 }
659 mAlarmTimer->stop(); 659 mAlarmTimer->stop();
660} 660}
661void CalendarView::selectWeekNum ( int num ) 661void CalendarView::selectWeekNum ( int num )
662{ 662{
663 dateNavigator()->selectWeek( num ); 663 dateNavigator()->selectWeek( num );
664 mViewManager->showWeekView(); 664 mViewManager->showWeekView();
665} 665}
666KOViewManager *CalendarView::viewManager() 666KOViewManager *CalendarView::viewManager()
667{ 667{
668 return mViewManager; 668 return mViewManager;
669} 669}
670 670
671KODialogManager *CalendarView::dialogManager() 671KODialogManager *CalendarView::dialogManager()
672{ 672{
673 return mDialogManager; 673 return mDialogManager;
674} 674}
675 675
676QDate CalendarView::startDate() 676QDate CalendarView::startDate()
677{ 677{
678 DateList dates = mNavigator->selectedDates(); 678 DateList dates = mNavigator->selectedDates();
679 679
680 return dates.first(); 680 return dates.first();
681} 681}
682 682
683QDate CalendarView::endDate() 683QDate CalendarView::endDate()
684{ 684{
685 DateList dates = mNavigator->selectedDates(); 685 DateList dates = mNavigator->selectedDates();
686 686
687 return dates.last(); 687 return dates.last();
688} 688}
689 689
690 690
691void CalendarView::createPrinter() 691void CalendarView::createPrinter()
692{ 692{
693#ifndef KORG_NOPRINTER 693#ifndef KORG_NOPRINTER
694 if (!mCalPrinter) { 694 if (!mCalPrinter) {
695 mCalPrinter = new CalPrinter(this, mCalendar); 695 mCalPrinter = new CalPrinter(this, mCalendar);
696 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 696 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
697 } 697 }
698#endif 698#endif
699} 699}
700 700
701 701
702//KOPrefs::instance()->mWriteBackFile 702//KOPrefs::instance()->mWriteBackFile
703//KOPrefs::instance()->mWriteBackExistingOnly 703//KOPrefs::instance()->mWriteBackExistingOnly
704 704
705// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 705// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
706// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 706// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
707// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 707// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
708// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 708// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
709// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 709// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
710// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 710// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
711 711
712int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 712int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
713{ 713{
714 714
715 //void setZaurusId(int id); 715 //void setZaurusId(int id);
716 // int zaurusId() const; 716 // int zaurusId() const;
717 // void setZaurusUid(int id); 717 // void setZaurusUid(int id);
718 // int zaurusUid() const; 718 // int zaurusUid() const;
719 // void setZaurusStat(int id); 719 // void setZaurusStat(int id);
720 // int zaurusStat() const; 720 // int zaurusStat() const;
721 // 0 equal 721 // 0 equal
722 // 1 take local 722 // 1 take local
723 // 2 take remote 723 // 2 take remote
724 // 3 cancel 724 // 3 cancel
725 QDateTime lastSync = mLastCalendarSync; 725 QDateTime lastSync = mLastCalendarSync;
726 QDateTime localMod = local->lastModified(); 726 QDateTime localMod = local->lastModified();
727 QDateTime remoteMod = remote->lastModified(); 727 QDateTime remoteMod = remote->lastModified();
728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
729 bool remCh, locCh; 729 bool remCh, locCh;
730 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 730 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
731 //if ( remCh ) 731 //if ( remCh )
732 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 732 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
733 locCh = ( localMod > mLastCalendarSync ); 733 locCh = ( localMod > mLastCalendarSync );
734 if ( !remCh && ! locCh ) { 734 if ( !remCh && ! locCh ) {
735 //qDebug("both not changed "); 735 //qDebug("both not changed ");
736 lastSync = localMod.addDays(1); 736 lastSync = localMod.addDays(1);
737 if ( mode <= SYNC_PREF_ASK ) 737 if ( mode <= SYNC_PREF_ASK )
738 return 0; 738 return 0;
739 } else { 739 } else {
740 if ( locCh ) { 740 if ( locCh ) {
741 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 741 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
742 lastSync = localMod.addDays( -1 ); 742 lastSync = localMod.addDays( -1 );
743 if ( !remCh ) 743 if ( !remCh )
744 remoteMod = ( lastSync.addDays( -1 ) ); 744 remoteMod = ( lastSync.addDays( -1 ) );
745 } else { 745 } else {
746 //qDebug(" not loc changed "); 746 //qDebug(" not loc changed ");
747 lastSync = localMod.addDays( 1 ); 747 lastSync = localMod.addDays( 1 );
748 if ( remCh ) 748 if ( remCh )
749 remoteMod =( lastSync.addDays( 1 ) ); 749 remoteMod =( lastSync.addDays( 1 ) );
750 750
751 } 751 }
752 } 752 }
753 full = true; 753 full = true;
754 if ( mode < SYNC_PREF_ASK ) 754 if ( mode < SYNC_PREF_ASK )
755 mode = SYNC_PREF_ASK; 755 mode = SYNC_PREF_ASK;
756 } else { 756 } else {
757 if ( localMod == remoteMod ) 757 if ( localMod == remoteMod )
758 if ( local->revision() == remote->revision() ) 758 if ( local->revision() == remote->revision() )
759 return 0; 759 return 0;
760 760
761 } 761 }
762 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 762 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
763 763
764 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 764 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
765 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 765 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
766 //full = true; //debug only 766 //full = true; //debug only
767 if ( full ) { 767 if ( full ) {
768 bool equ = false; 768 bool equ = false;
769 if ( local->type() == "Event" ) { 769 if ( local->type() == "Event" ) {
770 equ = (*((Event*) local) == *((Event*) remote)); 770 equ = (*((Event*) local) == *((Event*) remote));
771 } 771 }
772 else if ( local->type() =="Todo" ) 772 else if ( local->type() =="Todo" )
773 equ = (*((Todo*) local) == (*(Todo*) remote)); 773 equ = (*((Todo*) local) == (*(Todo*) remote));
774 else if ( local->type() =="Journal" ) 774 else if ( local->type() =="Journal" )
775 equ = (*((Journal*) local) == *((Journal*) remote)); 775 equ = (*((Journal*) local) == *((Journal*) remote));
776 if ( equ ) { 776 if ( equ ) {
777 //qDebug("equal "); 777 //qDebug("equal ");
778 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 778 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
779 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 779 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
780 } 780 }
781 if ( mode < SYNC_PREF_FORCE_LOCAL ) 781 if ( mode < SYNC_PREF_FORCE_LOCAL )
782 return 0; 782 return 0;
783 783
784 }//else //debug only 784 }//else //debug only
785 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 785 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
786 } 786 }
787 int result; 787 int result;
788 bool localIsNew; 788 bool localIsNew;
789 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 789 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
790 790
791 if ( full && mode < SYNC_PREF_NEWEST ) 791 if ( full && mode < SYNC_PREF_NEWEST )
792 mode = SYNC_PREF_ASK; 792 mode = SYNC_PREF_ASK;
793 793
794 switch( mode ) { 794 switch( mode ) {
795 case SYNC_PREF_LOCAL: 795 case SYNC_PREF_LOCAL:
796 if ( lastSync > remoteMod ) 796 if ( lastSync > remoteMod )
797 return 1; 797 return 1;
798 if ( lastSync > localMod ) 798 if ( lastSync > localMod )
799 return 2; 799 return 2;
800 return 1; 800 return 1;
801 break; 801 break;
802 case SYNC_PREF_REMOTE: 802 case SYNC_PREF_REMOTE:
803 if ( lastSync > remoteMod ) 803 if ( lastSync > remoteMod )
804 return 1; 804 return 1;
805 if ( lastSync > localMod ) 805 if ( lastSync > localMod )
806 return 2; 806 return 2;
807 return 2; 807 return 2;
808 break; 808 break;
809 case SYNC_PREF_NEWEST: 809 case SYNC_PREF_NEWEST:
810 if ( localMod > remoteMod ) 810 if ( localMod > remoteMod )
811 return 1; 811 return 1;
812 else 812 else
813 return 2; 813 return 2;
814 break; 814 break;
815 case SYNC_PREF_ASK: 815 case SYNC_PREF_ASK:
816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
817 if ( lastSync > remoteMod ) 817 if ( lastSync > remoteMod )
818 return 1; 818 return 1;
819 if ( lastSync > localMod ) 819 if ( lastSync > localMod )
820 return 2; 820 return 2;
821 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 821 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
822 localIsNew = localMod >= remoteMod; 822 localIsNew = localMod >= remoteMod;
823 if ( localIsNew ) 823 if ( localIsNew )
824 getEventViewerDialog()->setColorMode( 1 ); 824 getEventViewerDialog()->setColorMode( 1 );
825 else 825 else
826 getEventViewerDialog()->setColorMode( 2 ); 826 getEventViewerDialog()->setColorMode( 2 );
827 getEventViewerDialog()->setIncidence(local); 827 getEventViewerDialog()->setIncidence(local);
828 if ( localIsNew ) 828 if ( localIsNew )
829 getEventViewerDialog()->setColorMode( 2 ); 829 getEventViewerDialog()->setColorMode( 2 );
830 else 830 else
831 getEventViewerDialog()->setColorMode( 1 ); 831 getEventViewerDialog()->setColorMode( 1 );
832 getEventViewerDialog()->addIncidence(remote); 832 getEventViewerDialog()->addIncidence(remote);
833 getEventViewerDialog()->setColorMode( 0 ); 833 getEventViewerDialog()->setColorMode( 0 );
834 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 834 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
835 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 835 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
836 getEventViewerDialog()->showMe(); 836 getEventViewerDialog()->showMe();
837 result = getEventViewerDialog()->executeS( localIsNew ); 837 result = getEventViewerDialog()->executeS( localIsNew );
838 return result; 838 return result;
839 839
840 break; 840 break;
841 case SYNC_PREF_FORCE_LOCAL: 841 case SYNC_PREF_FORCE_LOCAL:
842 return 1; 842 return 1;
843 break; 843 break;
844 case SYNC_PREF_FORCE_REMOTE: 844 case SYNC_PREF_FORCE_REMOTE:
845 return 2; 845 return 2;
846 break; 846 break;
847 847
848 default: 848 default:
849 // SYNC_PREF_TAKE_BOTH not implemented 849 // SYNC_PREF_TAKE_BOTH not implemented
850 break; 850 break;
851 } 851 }
852 return 0; 852 return 0;
853} 853}
854Event* CalendarView::getLastSyncEvent() 854Event* CalendarView::getLastSyncEvent()
855{ 855{
856 Event* lse; 856 Event* lse;
857 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 857 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
858 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 858 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
859 if (!lse) { 859 if (!lse) {
860 lse = new Event(); 860 lse = new Event();
861 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 861 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
862 QString sum = ""; 862 QString sum = "";
863 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 863 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
864 sum = "E: "; 864 sum = "E: ";
865 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 865 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
866 lse->setDtStart( mLastCalendarSync ); 866 lse->setDtStart( mLastCalendarSync );
867 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 867 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
868 lse->setCategories( i18n("SyncEvent") ); 868 lse->setCategories( i18n("SyncEvent") );
869 lse->setReadOnly( true ); 869 lse->setReadOnly( true );
870 mCalendar->addEvent( lse ); 870 mCalendar->addEvent( lse );
871 } 871 }
872 872
873 return lse; 873 return lse;
874 874
875} 875}
876 876
877// we check, if the to delete event has a id for a profile 877// we check, if the to delete event has a id for a profile
878// if yes, we set this id in the profile to delete 878// if yes, we set this id in the profile to delete
879void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 879void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
880{ 880{
881 if ( lastSync.count() == 0 ) { 881 if ( lastSync.count() == 0 ) {
882 //qDebug(" lastSync.count() == 0"); 882 //qDebug(" lastSync.count() == 0");
883 return; 883 return;
884 } 884 }
885 if ( toDelete->type() == "Journal" ) 885 if ( toDelete->type() == "Journal" )
886 return; 886 return;
887 887
888 Event* eve = lastSync.first(); 888 Event* eve = lastSync.first();
889 889
890 while ( eve ) { 890 while ( eve ) {
891 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 891 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
892 if ( !id.isEmpty() ) { 892 if ( !id.isEmpty() ) {
893 QString des = eve->description(); 893 QString des = eve->description();
894 QString pref = "e"; 894 QString pref = "e";
895 if ( toDelete->type() == "Todo" ) 895 if ( toDelete->type() == "Todo" )
896 pref = "t"; 896 pref = "t";
897 des += pref+ id + ","; 897 des += pref+ id + ",";
898 eve->setReadOnly( false ); 898 eve->setReadOnly( false );
899 eve->setDescription( des ); 899 eve->setDescription( des );
900 //qDebug("setdes %s ", des.latin1()); 900 //qDebug("setdes %s ", des.latin1());
901 eve->setReadOnly( true ); 901 eve->setReadOnly( true );
902 } 902 }
903 eve = lastSync.next(); 903 eve = lastSync.next();
904 } 904 }
905 905
906} 906}
907void CalendarView::checkExternalId( Incidence * inc ) 907void CalendarView::checkExternalId( Incidence * inc )
908{ 908{
909 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 909 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
910 checkExternSyncEvent( lastSync, inc ); 910 checkExternSyncEvent( lastSync, inc );
911 911
912} 912}
913bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 913bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
914{ 914{
915 bool syncOK = true; 915 bool syncOK = true;
916 int addedEvent = 0; 916 int addedEvent = 0;
917 int addedEventR = 0; 917 int addedEventR = 0;
918 int deletedEventR = 0; 918 int deletedEventR = 0;
919 int deletedEventL = 0; 919 int deletedEventL = 0;
920 int changedLocal = 0; 920 int changedLocal = 0;
921 int changedRemote = 0; 921 int changedRemote = 0;
922 //QPtrList<Event> el = local->rawEvents(); 922 //QPtrList<Event> el = local->rawEvents();
923 Event* eventR; 923 Event* eventR;
924 QString uid; 924 QString uid;
925 int take; 925 int take;
926 Event* eventL; 926 Event* eventL;
927 Event* eventRSync; 927 Event* eventRSync;
928 Event* eventLSync; 928 Event* eventLSync;
929 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 929 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
930 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 930 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
931 bool fullDateRange = false; 931 bool fullDateRange = false;
932 local->resetTempSyncStat(); 932 local->resetTempSyncStat();
933 mLastCalendarSync = QDateTime::currentDateTime(); 933 mLastCalendarSync = QDateTime::currentDateTime();
934 QDateTime modifiedCalendar = mLastCalendarSync;; 934 QDateTime modifiedCalendar = mLastCalendarSync;;
935 eventLSync = getLastSyncEvent(); 935 eventLSync = getLastSyncEvent();
936 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 936 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
937 if ( eventR ) { 937 if ( eventR ) {
938 eventRSync = (Event*) eventR->clone(); 938 eventRSync = (Event*) eventR->clone();
939 remote->deleteEvent(eventR ); 939 remote->deleteEvent(eventR );
940 940
941 } else { 941 } else {
942 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 942 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
943 eventRSync = (Event*)eventLSync->clone(); 943 eventRSync = (Event*)eventLSync->clone();
944 } else { 944 } else {
945 fullDateRange = true; 945 fullDateRange = true;
946 eventRSync = new Event(); 946 eventRSync = new Event();
947 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 947 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
948 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 948 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
949 eventRSync->setDtStart( mLastCalendarSync ); 949 eventRSync->setDtStart( mLastCalendarSync );
950 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 950 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
951 eventRSync->setCategories( i18n("SyncEvent") ); 951 eventRSync->setCategories( i18n("SyncEvent") );
952 } 952 }
953 } 953 }
954 if ( eventLSync->dtStart() == mLastCalendarSync ) 954 if ( eventLSync->dtStart() == mLastCalendarSync )
955 fullDateRange = true; 955 fullDateRange = true;
956 956
957 if ( ! fullDateRange ) { 957 if ( ! fullDateRange ) {
958 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 958 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
959 959
960 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 960 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
961 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 961 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
962 fullDateRange = true; 962 fullDateRange = true;
963 } 963 }
964 } 964 }
965 if ( fullDateRange ) 965 if ( fullDateRange )
966 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 966 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
967 else 967 else
968 mLastCalendarSync = eventLSync->dtStart(); 968 mLastCalendarSync = eventLSync->dtStart();
969 // for resyncing if own file has changed 969 // for resyncing if own file has changed
970 if ( mCurrentSyncDevice == "deleteaftersync" ) { 970 if ( mCurrentSyncDevice == "deleteaftersync" ) {
971 mLastCalendarSync = loadedFileVersion; 971 mLastCalendarSync = loadedFileVersion;
972 qDebug("setting mLastCalendarSync "); 972 qDebug("setting mLastCalendarSync ");
973 } 973 }
974 //qDebug("*************************** "); 974 //qDebug("*************************** ");
975 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 975 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
976 QPtrList<Incidence> er = remote->rawIncidences(); 976 QPtrList<Incidence> er = remote->rawIncidences();
977 Incidence* inR = er.first(); 977 Incidence* inR = er.first();
978 Incidence* inL; 978 Incidence* inL;
979 QProgressBar bar( er.count(),0 ); 979 QProgressBar bar( er.count(),0 );
980 bar.setCaption (i18n("Syncing - close to abort!") ); 980 bar.setCaption (i18n("Syncing - close to abort!") );
981 981
982 int w = 300; 982 int w = 300;
983 if ( QApplication::desktop()->width() < 320 ) 983 if ( QApplication::desktop()->width() < 320 )
984 w = 220; 984 w = 220;
985 int h = bar.sizeHint().height() ; 985 int h = bar.sizeHint().height() ;
986 int dw = QApplication::desktop()->width(); 986 int dw = QApplication::desktop()->width();
987 int dh = QApplication::desktop()->height(); 987 int dh = QApplication::desktop()->height();
988 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 988 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
989 bar.show(); 989 bar.show();
990 int modulo = (er.count()/10)+1; 990 int modulo = (er.count()/10)+1;
991 int incCounter = 0; 991 int incCounter = 0;
992 while ( inR ) { 992 while ( inR ) {
993 if ( ! bar.isVisible() ) 993 if ( ! bar.isVisible() )
994 return false; 994 return false;
995 if ( incCounter % modulo == 0 ) 995 if ( incCounter % modulo == 0 )
996 bar.setProgress( incCounter ); 996 bar.setProgress( incCounter );
997 ++incCounter; 997 ++incCounter;
998 uid = inR->uid(); 998 uid = inR->uid();
999 bool skipIncidence = false; 999 bool skipIncidence = false;
1000 if ( uid.left(15) == QString("last-syncEvent-") ) 1000 if ( uid.left(15) == QString("last-syncEvent-") )
1001 skipIncidence = true; 1001 skipIncidence = true;
1002 QString idS; 1002 QString idS;
1003 qApp->processEvents(); 1003 qApp->processEvents();
1004 if ( !skipIncidence ) { 1004 if ( !skipIncidence ) {
1005 inL = local->incidence( uid ); 1005 inL = local->incidence( uid );
1006 if ( inL ) { // maybe conflict - same uid in both calendars 1006 if ( inL ) { // maybe conflict - same uid in both calendars
1007 int maxrev = inL->revision(); 1007 int maxrev = inL->revision();
1008 if ( maxrev < inR->revision() ) 1008 if ( maxrev < inR->revision() )
1009 maxrev = inR->revision(); 1009 maxrev = inR->revision();
1010 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1010 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1011 //qDebug("take %d %s ", take, inL->summary().latin1()); 1011 //qDebug("take %d %s ", take, inL->summary().latin1());
1012 if ( take == 3 ) 1012 if ( take == 3 )
1013 return false; 1013 return false;
1014 if ( take == 1 ) {// take local 1014 if ( take == 1 ) {// take local
1015 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1015 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1016 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1016 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1017 else 1017 else
1018 idS = inR->IDStr(); 1018 idS = inR->IDStr();
1019 remote->deleteIncidence( inR ); 1019 remote->deleteIncidence( inR );
1020 if ( inL->revision() < maxrev ) 1020 if ( inL->revision() < maxrev )
1021 inL->setRevision( maxrev ); 1021 inL->setRevision( maxrev );
1022 inR = inL->clone(); 1022 inR = inL->clone();
1023 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1023 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1024 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1024 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1025 inR->setIDStr( idS ); 1025 inR->setIDStr( idS );
1026 remote->addIncidence( inR ); 1026 remote->addIncidence( inR );
1027 ++changedRemote; 1027 ++changedRemote;
1028 } else { 1028 } else {
1029 if ( inR->revision() < maxrev ) 1029 if ( inR->revision() < maxrev )
1030 inR->setRevision( maxrev ); 1030 inR->setRevision( maxrev );
1031 idS = inL->IDStr(); 1031 idS = inL->IDStr();
1032 local->deleteIncidence( inL ); 1032 local->deleteIncidence( inL );
1033 inL = inR->clone(); 1033 inL = inR->clone();
1034 inL->setIDStr( idS ); 1034 inL->setIDStr( idS );
1035 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1035 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1036 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1036 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1037 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1037 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1038 } 1038 }
1039 local->addIncidence( inL ); 1039 local->addIncidence( inL );
1040 ++changedLocal; 1040 ++changedLocal;
1041 } 1041 }
1042 } 1042 }
1043 } else { // no conflict 1043 } else { // no conflict
1044 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1044 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1045 QString des = eventLSync->description(); 1045 QString des = eventLSync->description();
1046 QString pref = "e"; 1046 QString pref = "e";
1047 if ( inR->type() == "Todo" ) 1047 if ( inR->type() == "Todo" )
1048 pref = "t"; 1048 pref = "t";
1049 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1049 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1050 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1050 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1051 //remote->deleteIncidence( inR ); 1051 //remote->deleteIncidence( inR );
1052 ++deletedEventR; 1052 ++deletedEventR;
1053 } else { 1053 } else {
1054 inR->setLastModified( modifiedCalendar ); 1054 inR->setLastModified( modifiedCalendar );
1055 inL = inR->clone(); 1055 inL = inR->clone();
1056 local->addIncidence( inL ); 1056 local->addIncidence( inL );
1057 ++addedEvent; 1057 ++addedEvent;
1058 } 1058 }
1059 } else { 1059 } else {
1060 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1060 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1061 inR->setLastModified( modifiedCalendar ); 1061 inR->setLastModified( modifiedCalendar );
1062 local->addIncidence( inR->clone() ); 1062 local->addIncidence( inR->clone() );
1063 ++addedEvent; 1063 ++addedEvent;
1064 } else { 1064 } else {
1065 checkExternSyncEvent(eventRSyncSharp, inR); 1065 checkExternSyncEvent(eventRSyncSharp, inR);
1066 remote->deleteIncidence( inR ); 1066 remote->deleteIncidence( inR );
1067 ++deletedEventR; 1067 ++deletedEventR;
1068 } 1068 }
1069 } 1069 }
1070 } 1070 }
1071 } 1071 }
1072 inR = er.next(); 1072 inR = er.next();
1073 } 1073 }
1074 QPtrList<Incidence> el = local->rawIncidences(); 1074 QPtrList<Incidence> el = local->rawIncidences();
1075 inL = el.first(); 1075 inL = el.first();
1076 modulo = (el.count()/10)+1; 1076 modulo = (el.count()/10)+1;
1077 bar.setCaption (i18n("Add / remove events") ); 1077 bar.setCaption (i18n("Add / remove events") );
1078 bar.setTotalSteps ( el.count() ) ; 1078 bar.setTotalSteps ( el.count() ) ;
1079 bar.show(); 1079 bar.show();
1080 incCounter = 0; 1080 incCounter = 0;
1081 1081
1082 while ( inL ) { 1082 while ( inL ) {
1083 1083
1084 qApp->processEvents(); 1084 qApp->processEvents();
1085 if ( ! bar.isVisible() ) 1085 if ( ! bar.isVisible() )
1086 return false; 1086 return false;
1087 if ( incCounter % modulo == 0 ) 1087 if ( incCounter % modulo == 0 )
1088 bar.setProgress( incCounter ); 1088 bar.setProgress( incCounter );
1089 ++incCounter; 1089 ++incCounter;
1090 uid = inL->uid(); 1090 uid = inL->uid();
1091 bool skipIncidence = false; 1091 bool skipIncidence = false;
1092 if ( uid.left(15) == QString("last-syncEvent-") ) 1092 if ( uid.left(15) == QString("last-syncEvent-") )
1093 skipIncidence = true; 1093 skipIncidence = true;
1094 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1094 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1095 skipIncidence = true; 1095 skipIncidence = true;
1096 if ( !skipIncidence ) { 1096 if ( !skipIncidence ) {
1097 inR = remote->incidence( uid ); 1097 inR = remote->incidence( uid );
1098 if ( ! inR ) { 1098 if ( ! inR ) {
1099 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1099 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1100 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1100 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1101 checkExternSyncEvent(eventLSyncSharp, inL); 1101 checkExternSyncEvent(eventLSyncSharp, inL);
1102 local->deleteIncidence( inL ); 1102 local->deleteIncidence( inL );
1103 ++deletedEventL; 1103 ++deletedEventL;
1104 } else { 1104 } else {
1105 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1105 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1106 inL->removeID(mCurrentSyncDevice ); 1106 inL->removeID(mCurrentSyncDevice );
1107 ++addedEventR; 1107 ++addedEventR;
1108 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1108 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1109 inL->setLastModified( modifiedCalendar ); 1109 inL->setLastModified( modifiedCalendar );
1110 inR = inL->clone(); 1110 inR = inL->clone();
1111 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1111 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1112 remote->addIncidence( inR ); 1112 remote->addIncidence( inR );
1113 } 1113 }
1114 } 1114 }
1115 } else { 1115 } else {
1116 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1116 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1117 checkExternSyncEvent(eventLSyncSharp, inL); 1117 checkExternSyncEvent(eventLSyncSharp, inL);
1118 local->deleteIncidence( inL ); 1118 local->deleteIncidence( inL );
1119 ++deletedEventL; 1119 ++deletedEventL;
1120 } else { 1120 } else {
1121 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1121 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1122 ++addedEventR; 1122 ++addedEventR;
1123 inL->setLastModified( modifiedCalendar ); 1123 inL->setLastModified( modifiedCalendar );
1124 remote->addIncidence( inL->clone() ); 1124 remote->addIncidence( inL->clone() );
1125 } 1125 }
1126 } 1126 }
1127 } 1127 }
1128 } 1128 }
1129 } 1129 }
1130 inL = el.next(); 1130 inL = el.next();
1131 } 1131 }
1132 int delFut = 0; 1132 int delFut = 0;
1133 if ( mSyncManager->mWriteBackInFuture ) { 1133 if ( mSyncManager->mWriteBackInFuture ) {
1134 er = remote->rawIncidences(); 1134 er = remote->rawIncidences();
1135 inR = er.first(); 1135 inR = er.first();
1136 QDateTime dt; 1136 QDateTime dt;
1137 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1137 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1138 QDateTime end = cur.addDays( (mSyncManager->mWriteBackInFuture +1 ) *7 ); 1138 QDateTime end = cur.addDays( (mSyncManager->mWriteBackInFuture +1 ) *7 );
1139 while ( inR ) { 1139 while ( inR ) {
1140 if ( inR->type() == "Todo" ) { 1140 if ( inR->type() == "Todo" ) {
1141 Todo * t = (Todo*)inR; 1141 Todo * t = (Todo*)inR;
1142 if ( t->hasDueDate() ) 1142 if ( t->hasDueDate() )
1143 dt = t->dtDue(); 1143 dt = t->dtDue();
1144 else 1144 else
1145 dt = cur.addSecs( 62 ); 1145 dt = cur.addSecs( 62 );
1146 } 1146 }
1147 else if (inR->type() == "Event" ) { 1147 else if (inR->type() == "Event" ) {
1148 bool ok; 1148 bool ok;
1149 dt = inR->getNextOccurence( cur, &ok ); 1149 dt = inR->getNextOccurence( cur, &ok );
1150 if ( !ok ) 1150 if ( !ok )
1151 dt = cur.addSecs( -62 ); 1151 dt = cur.addSecs( -62 );
1152 } 1152 }
1153 else 1153 else
1154 dt = inR->dtStart(); 1154 dt = inR->dtStart();
1155 if ( dt < cur || dt > end ) { 1155 if ( dt < cur || dt > end ) {
1156 remote->deleteIncidence( inR ); 1156 remote->deleteIncidence( inR );
1157 ++delFut; 1157 ++delFut;
1158 } 1158 }
1159 inR = er.next(); 1159 inR = er.next();
1160 } 1160 }
1161 } 1161 }
1162 bar.hide(); 1162 bar.hide();
1163 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1163 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1164 eventLSync->setReadOnly( false ); 1164 eventLSync->setReadOnly( false );
1165 eventLSync->setDtStart( mLastCalendarSync ); 1165 eventLSync->setDtStart( mLastCalendarSync );
1166 eventRSync->setDtStart( mLastCalendarSync ); 1166 eventRSync->setDtStart( mLastCalendarSync );
1167 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1167 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1168 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1168 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1169 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1169 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1170 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1170 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1171 eventLSync->setReadOnly( true ); 1171 eventLSync->setReadOnly( true );
1172 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1172 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1173 remote->addEvent( eventRSync ); 1173 remote->addEvent( eventRSync );
1174 QString mes; 1174 QString mes;
1175 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 ); 1175 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 );
1176 QString delmess; 1176 QString delmess;
1177 if ( delFut ) { 1177 if ( delFut ) {
1178 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, mSyncManager->mWriteBackInFuture ); 1178 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, mSyncManager->mWriteBackInFuture );
1179 mes += delmess; 1179 mes += delmess;
1180 } 1180 }
1181 if ( mSyncManager->mShowSyncSummary ) { 1181 if ( mSyncManager->mShowSyncSummary ) {
1182 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1182 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1183 } 1183 }
1184 qDebug( mes ); 1184 qDebug( mes );
1185 mCalendar->checkAlarmForIncidence( 0, true ); 1185 mCalendar->checkAlarmForIncidence( 0, true );
1186 return syncOK; 1186 return syncOK;
1187} 1187}
1188 1188
1189void CalendarView::setSyncDevice( QString s ) 1189void CalendarView::setSyncDevice( QString s )
1190{ 1190{
1191 mCurrentSyncDevice= s; 1191 mCurrentSyncDevice= s;
1192} 1192}
1193void CalendarView::setSyncName( QString s ) 1193void CalendarView::setSyncName( QString s )
1194{ 1194{
1195 mCurrentSyncName= s; 1195 mCurrentSyncName= s;
1196} 1196}
1197bool CalendarView::syncCalendar(QString filename, int mode) 1197bool CalendarView::syncCalendar(QString filename, int mode)
1198{ 1198{
1199 //qDebug("syncCalendar %s ", filename.latin1()); 1199 //qDebug("syncCalendar %s ", filename.latin1());
1200 mGlobalSyncMode = SYNC_MODE_NORMAL; 1200 mGlobalSyncMode = SYNC_MODE_NORMAL;
1201 CalendarLocal* calendar = new CalendarLocal(); 1201 CalendarLocal* calendar = new CalendarLocal();
1202 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1202 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1203 FileStorage* storage = new FileStorage( calendar ); 1203 FileStorage* storage = new FileStorage( calendar );
1204 bool syncOK = false; 1204 bool syncOK = false;
1205 storage->setFileName( filename ); 1205 storage->setFileName( filename );
1206 // qDebug("loading ... "); 1206 // qDebug("loading ... ");
1207 if ( storage->load() ) { 1207 if ( storage->load() ) {
1208 getEventViewerDialog()->setSyncMode( true ); 1208 getEventViewerDialog()->setSyncMode( true );
1209 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1209 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1210 getEventViewerDialog()->setSyncMode( false ); 1210 getEventViewerDialog()->setSyncMode( false );
1211 if ( syncOK ) { 1211 if ( syncOK ) {
1212 if ( mSyncManager->mWriteBackFile ) 1212 if ( mSyncManager->mWriteBackFile )
1213 { 1213 {
1214 storage->setSaveFormat( new ICalFormat() ); 1214 storage->setSaveFormat( new ICalFormat() );
1215 storage->save(); 1215 storage->save();
1216 } 1216 }
1217 } 1217 }
1218 setModified( true ); 1218 setModified( true );
1219 } 1219 }
1220 delete storage; 1220 delete storage;
1221 delete calendar; 1221 delete calendar;
1222 if ( syncOK ) 1222 if ( syncOK )
1223 updateView(); 1223 updateView();
1224 return syncOK; 1224 return syncOK;
1225} 1225}
1226 1226
1227void CalendarView::syncExternal( int mode ) 1227void CalendarView::syncExternal( int mode )
1228{ 1228{
1229 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1229 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1230 1230
1231 qApp->processEvents(); 1231 qApp->processEvents();
1232 CalendarLocal* calendar = new CalendarLocal(); 1232 CalendarLocal* calendar = new CalendarLocal();
1233 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1233 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1234 bool syncOK = false; 1234 bool syncOK = false;
1235 bool loadSuccess = false; 1235 bool loadSuccess = false;
1236 PhoneFormat* phoneFormat = 0; 1236 PhoneFormat* phoneFormat = 0;
1237#ifndef DESKTOP_VERSION 1237#ifndef DESKTOP_VERSION
1238 SharpFormat* sharpFormat = 0; 1238 SharpFormat* sharpFormat = 0;
1239 if ( mode == 0 ) { // sharp 1239 if ( mode == 0 ) { // sharp
1240 sharpFormat = new SharpFormat () ; 1240 sharpFormat = new SharpFormat () ;
1241 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1241 loadSuccess = sharpFormat->load( calendar, mCalendar );
1242 1242
1243 } else 1243 } else
1244#endif 1244#endif
1245 if ( mode == 1 ) { // phone 1245 if ( mode == 1 ) { // phone
1246 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1246 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1247 mSyncManager->mPhoneDevice, 1247 mSyncManager->mPhoneDevice,
1248 mSyncManager->mPhoneConnection, 1248 mSyncManager->mPhoneConnection,
1249 mSyncManager->mPhoneModel); 1249 mSyncManager->mPhoneModel);
1250 loadSuccess = phoneFormat->load( calendar,mCalendar); 1250 loadSuccess = phoneFormat->load( calendar,mCalendar);
1251 1251
1252 } else 1252 } else
1253 return; 1253 return;
1254 if ( loadSuccess ) { 1254 if ( loadSuccess ) {
1255 getEventViewerDialog()->setSyncMode( true ); 1255 getEventViewerDialog()->setSyncMode( true );
1256 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1256 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1257 getEventViewerDialog()->setSyncMode( false ); 1257 getEventViewerDialog()->setSyncMode( false );
1258 qApp->processEvents(); 1258 qApp->processEvents();
1259 if ( syncOK ) { 1259 if ( syncOK ) {
1260 if ( mSyncManager->mWriteBackFile ) 1260 if ( mSyncManager->mWriteBackFile )
1261 { 1261 {
1262 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1262 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1263 Incidence* inc = iL.first(); 1263 Incidence* inc = iL.first();
1264 if ( phoneFormat ) { 1264 if ( phoneFormat ) {
1265 while ( inc ) { 1265 while ( inc ) {
1266 inc->removeID(mCurrentSyncDevice); 1266 inc->removeID(mCurrentSyncDevice);
1267 inc = iL.next(); 1267 inc = iL.next();
1268 } 1268 }
1269 } 1269 }
1270#ifndef DESKTOP_VERSION 1270#ifndef DESKTOP_VERSION
1271 if ( sharpFormat ) 1271 if ( sharpFormat )
1272 sharpFormat->save(calendar); 1272 sharpFormat->save(calendar);
1273#endif 1273#endif
1274 if ( phoneFormat ) 1274 if ( phoneFormat )
1275 phoneFormat->save(calendar); 1275 phoneFormat->save(calendar);
1276 iL = calendar->rawIncidences(); 1276 iL = calendar->rawIncidences();
1277 inc = iL.first(); 1277 inc = iL.first();
1278 Incidence* loc; 1278 Incidence* loc;
1279 while ( inc ) { 1279 while ( inc ) {
1280 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1280 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1281 loc = mCalendar->incidence(inc->uid() ); 1281 loc = mCalendar->incidence(inc->uid() );
1282 if ( loc ) { 1282 if ( loc ) {
1283 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1283 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1284 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1284 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1285 } 1285 }
1286 } 1286 }
1287 inc = iL.next(); 1287 inc = iL.next();
1288 } 1288 }
1289 Incidence* lse = getLastSyncEvent(); 1289 Incidence* lse = getLastSyncEvent();
1290 if ( lse ) { 1290 if ( lse ) {
1291 lse->setReadOnly( false ); 1291 lse->setReadOnly( false );
1292 lse->setDescription( "" ); 1292 lse->setDescription( "" );
1293 lse->setReadOnly( true ); 1293 lse->setReadOnly( true );
1294 } 1294 }
1295 } 1295 }
1296 } 1296 }
1297 setModified( true ); 1297 setModified( true );
1298 } else { 1298 } else {
1299 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1299 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1300 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1300 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1301 question, i18n("Ok")) ; 1301 question, i18n("Ok")) ;
1302 1302
1303 } 1303 }
1304 delete calendar; 1304 delete calendar;
1305 updateView(); 1305 updateView();
1306 return ;//syncOK; 1306 return ;//syncOK;
1307 1307
1308} 1308}
1309 1309
1310bool CalendarView::importBday() 1310bool CalendarView::importBday()
1311{ 1311{
1312#ifndef KORG_NOKABC 1312#ifndef KORG_NOKABC
1313 1313
1314#ifdef DESKTOP_VERSION 1314#ifdef DESKTOP_VERSION
1315 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1315 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1316 KABC::AddressBook::Iterator it; 1316 KABC::AddressBook::Iterator it;
1317 int count = 0; 1317 int count = 0;
1318 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1318 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1319 ++count; 1319 ++count;
1320 } 1320 }
1321 QProgressBar bar(count,0 ); 1321 QProgressBar bar(count,0 );
1322 int w = 300; 1322 int w = 300;
1323 if ( QApplication::desktop()->width() < 320 ) 1323 if ( QApplication::desktop()->width() < 320 )
1324 w = 220; 1324 w = 220;
1325 int h = bar.sizeHint().height() ; 1325 int h = bar.sizeHint().height() ;
1326 int dw = QApplication::desktop()->width(); 1326 int dw = QApplication::desktop()->width();
1327 int dh = QApplication::desktop()->height(); 1327 int dh = QApplication::desktop()->height();
1328 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1328 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1329 bar.show(); 1329 bar.show();
1330 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1330 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1331 qApp->processEvents(); 1331 qApp->processEvents();
1332 count = 0; 1332 count = 0;
1333 int addCount = 0; 1333 int addCount = 0;
1334 KCal::Attendee* a = 0; 1334 KCal::Attendee* a = 0;
1335 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1335 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1336 if ( ! bar.isVisible() ) 1336 if ( ! bar.isVisible() )
1337 return false; 1337 return false;
1338 bar.setProgress( count++ ); 1338 bar.setProgress( count++ );
1339 qApp->processEvents(); 1339 qApp->processEvents();
1340 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1340 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1341 if ( (*it).birthday().date().isValid() ){ 1341 if ( (*it).birthday().date().isValid() ){
1342 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1342 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1343 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1343 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1344 ++addCount; 1344 ++addCount;
1345 } 1345 }
1346 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1346 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1347 if ( anni.isValid() ){ 1347 if ( anni.isValid() ){
1348 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1348 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1349 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1349 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1350 ++addCount; 1350 ++addCount;
1351 } 1351 }
1352 } 1352 }
1353 updateView(); 1353 updateView();
1354 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1354 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1355#else //DESKTOP_VERSION 1355#else //DESKTOP_VERSION
1356 1356
1357 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1357 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1358 // the result should now arrive through method insertBirthdays 1358 // the result should now arrive through method insertBirthdays
1359 1359
1360#endif //DESKTOP_VERSION 1360#endif //DESKTOP_VERSION
1361 1361
1362#endif //KORG_NOKABC 1362#endif //KORG_NOKABC
1363 1363
1364 1364
1365 return true; 1365 return true;
1366} 1366}
1367 1367
1368// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1368// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1369void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1369void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1370 const QStringList& anniversaryList, const QStringList& realNameList, 1370 const QStringList& anniversaryList, const QStringList& realNameList,
1371 const QStringList& emailList, const QStringList& assembledNameList, 1371 const QStringList& emailList, const QStringList& assembledNameList,
1372 const QStringList& uidList) 1372 const QStringList& uidList)
1373{ 1373{
1374 qDebug("CalendarView::insertBirthdays"); 1374 qDebug("CalendarView::insertBirthdays");
1375 if (uid == this->name()) 1375 if (uid == this->name())
1376 { 1376 {
1377 int count = birthdayList.count(); 1377 int count = birthdayList.count();
1378 int addCount = 0; 1378 int addCount = 0;
1379 KCal::Attendee* a = 0; 1379 KCal::Attendee* a = 0;
1380 1380
1381 qDebug("CalView 1 %i", count); 1381 qDebug("CalView 1 %i", count);
1382 1382
1383 QProgressBar bar(count,0 ); 1383 QProgressBar bar(count,0 );
1384 int w = 300; 1384 int w = 300;
1385 if ( QApplication::desktop()->width() < 320 ) 1385 if ( QApplication::desktop()->width() < 320 )
1386 w = 220; 1386 w = 220;
1387 int h = bar.sizeHint().height() ; 1387 int h = bar.sizeHint().height() ;
1388 int dw = QApplication::desktop()->width(); 1388 int dw = QApplication::desktop()->width();
1389 int dh = QApplication::desktop()->height(); 1389 int dh = QApplication::desktop()->height();
1390 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1390 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1391 bar.show(); 1391 bar.show();
1392 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1392 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1393 qApp->processEvents(); 1393 qApp->processEvents();
1394 1394
1395 QDate birthday; 1395 QDate birthday;
1396 QDate anniversary; 1396 QDate anniversary;
1397 QString realName; 1397 QString realName;
1398 QString email; 1398 QString email;
1399 QString assembledName; 1399 QString assembledName;
1400 QString uid; 1400 QString uid;
1401 bool ok = true; 1401 bool ok = true;
1402 for ( int i = 0; i < count; i++) 1402 for ( int i = 0; i < count; i++)
1403 { 1403 {
1404 if ( ! bar.isVisible() ) 1404 if ( ! bar.isVisible() )
1405 return; 1405 return;
1406 bar.setProgress( i ); 1406 bar.setProgress( i );
1407 qApp->processEvents(); 1407 qApp->processEvents();
1408 1408
1409 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1409 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1410 if (!ok) { 1410 if (!ok) {
1411 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1411 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1412 } 1412 }
1413 1413
1414 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1414 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1415 if (!ok) { 1415 if (!ok) {
1416 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1416 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1417 } 1417 }
1418 realName = realNameList[i]; 1418 realName = realNameList[i];
1419 email = emailList[i]; 1419 email = emailList[i];
1420 assembledName = assembledNameList[i]; 1420 assembledName = assembledNameList[i];
1421 uid = uidList[i]; 1421 uid = uidList[i];
1422 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 1422 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
1423 1423
1424 if ( birthday.isValid() ){ 1424 if ( birthday.isValid() ){
1425 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1425 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1426 KCal::Attendee::ReqParticipant,uid) ; 1426 KCal::Attendee::ReqParticipant,uid) ;
1427 if ( addAnniversary( birthday, assembledName, a, true ) ) 1427 if ( addAnniversary( birthday, assembledName, a, true ) )
1428 ++addCount; 1428 ++addCount;
1429 } 1429 }
1430 1430
1431 if ( anniversary.isValid() ){ 1431 if ( anniversary.isValid() ){
1432 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1432 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1433 KCal::Attendee::ReqParticipant,uid) ; 1433 KCal::Attendee::ReqParticipant,uid) ;
1434 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1434 if ( addAnniversary( anniversary, assembledName, a, false ) )
1435 ++addCount; 1435 ++addCount;
1436 } 1436 }
1437 } 1437 }
1438 1438
1439 updateView(); 1439 updateView();
1440 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1440 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1441 1441
1442 } 1442 }
1443 1443
1444} 1444}
1445 1445
1446 1446
1447 1447
1448bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1448bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1449{ 1449{
1450 //qDebug("addAnni "); 1450 //qDebug("addAnni ");
1451 Event * ev = new Event(); 1451 Event * ev = new Event();
1452 if ( a ) { 1452 if ( a ) {
1453 ev->addAttendee( a ); 1453 ev->addAttendee( a );
1454 } 1454 }
1455 QString kind; 1455 QString kind;
1456 if ( birthday ) 1456 if ( birthday )
1457 kind = i18n( "Birthday" ); 1457 kind = i18n( "Birthday" );
1458 else 1458 else
1459 kind = i18n( "Anniversary" ); 1459 kind = i18n( "Anniversary" );
1460 ev->setSummary( name + " - " + kind ); 1460 ev->setSummary( name + " - " + kind );
1461 ev->setOrganizer( "nobody@nowhere" ); 1461 ev->setOrganizer( "nobody@nowhere" );
1462 ev->setCategories( kind ); 1462 ev->setCategories( kind );
1463 ev->setDtStart( QDateTime(date) ); 1463 ev->setDtStart( QDateTime(date) );
1464 ev->setDtEnd( QDateTime(date) ); 1464 ev->setDtEnd( QDateTime(date) );
1465 ev->setFloats( true ); 1465 ev->setFloats( true );
1466 Recurrence * rec = ev->recurrence(); 1466 Recurrence * rec = ev->recurrence();
1467 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1467 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1468 rec->addYearlyNum( date.month() ); 1468 rec->addYearlyNum( date.month() );
1469 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1469 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1470 delete ev; 1470 delete ev;
1471 return false; 1471 return false;
1472 } 1472 }
1473 return true; 1473 return true;
1474 1474
1475} 1475}
1476bool CalendarView::importQtopia( const QString &categories, 1476bool CalendarView::importQtopia( const QString &categories,
1477 const QString &datebook, 1477 const QString &datebook,
1478 const QString &todolist ) 1478 const QString &todolist )
1479{ 1479{
1480 1480
1481 QtopiaFormat qtopiaFormat; 1481 QtopiaFormat qtopiaFormat;
1482 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1482 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1483 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1483 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1484 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1484 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1485 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1485 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1486 1486
1487 updateView(); 1487 updateView();
1488 return true; 1488 return true;
1489 1489
1490#if 0 1490#if 0
1491 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1491 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1492 mCurrentSyncDevice = "qtopia-XML"; 1492 mCurrentSyncDevice = "qtopia-XML";
1493 if ( mSyncManager->mAskForPreferences ) 1493 if ( mSyncManager->mAskForPreferences )
1494 edit_sync_options(); 1494 edit_sync_options();
1495 qApp->processEvents(); 1495 qApp->processEvents();
1496 CalendarLocal* calendar = new CalendarLocal(); 1496 CalendarLocal* calendar = new CalendarLocal();
1497 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1497 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1498 bool syncOK = false; 1498 bool syncOK = false;
1499 QtopiaFormat qtopiaFormat; 1499 QtopiaFormat qtopiaFormat;
1500 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1500 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1501 bool loadOk = true; 1501 bool loadOk = true;
1502 if ( !categories.isEmpty() ) 1502 if ( !categories.isEmpty() )
1503 loadOk = qtopiaFormat.load( calendar, categories ); 1503 loadOk = qtopiaFormat.load( calendar, categories );
1504 if ( loadOk && !datebook.isEmpty() ) 1504 if ( loadOk && !datebook.isEmpty() )
1505 loadOk = qtopiaFormat.load( calendar, datebook ); 1505 loadOk = qtopiaFormat.load( calendar, datebook );
1506 if ( loadOk && !todolist.isEmpty() ) 1506 if ( loadOk && !todolist.isEmpty() )
1507 loadOk = qtopiaFormat.load( calendar, todolist ); 1507 loadOk = qtopiaFormat.load( calendar, todolist );
1508 1508
1509 if ( loadOk ) { 1509 if ( loadOk ) {
1510 getEventViewerDialog()->setSyncMode( true ); 1510 getEventViewerDialog()->setSyncMode( true );
1511 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1511 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1512 getEventViewerDialog()->setSyncMode( false ); 1512 getEventViewerDialog()->setSyncMode( false );
1513 qApp->processEvents(); 1513 qApp->processEvents();
1514 if ( syncOK ) { 1514 if ( syncOK ) {
1515 if ( mSyncManager->mWriteBackFile ) 1515 if ( mSyncManager->mWriteBackFile )
1516 { 1516 {
1517 // write back XML file 1517 // write back XML file
1518 1518
1519 } 1519 }
1520 setModified( true ); 1520 setModified( true );
1521 } 1521 }
1522 } else { 1522 } else {
1523 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1523 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1524 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1524 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1525 question, i18n("Ok")) ; 1525 question, i18n("Ok")) ;
1526 } 1526 }
1527 delete calendar; 1527 delete calendar;
1528 updateView(); 1528 updateView();
1529 return syncOK; 1529 return syncOK;
1530 1530
1531 1531
1532#endif 1532#endif
1533 1533
1534} 1534}
1535 1535
1536void CalendarView::setSyncEventsReadOnly() 1536void CalendarView::setSyncEventsReadOnly()
1537{ 1537{
1538 Event * ev; 1538 Event * ev;
1539 QPtrList<Event> eL = mCalendar->rawEvents(); 1539 QPtrList<Event> eL = mCalendar->rawEvents();
1540 ev = eL.first(); 1540 ev = eL.first();
1541 while ( ev ) { 1541 while ( ev ) {
1542 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1542 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1543 ev->setReadOnly( true ); 1543 ev->setReadOnly( true );
1544 ev = eL.next(); 1544 ev = eL.next();
1545 } 1545 }
1546} 1546}
1547bool CalendarView::openCalendar(QString filename, bool merge) 1547bool CalendarView::openCalendar(QString filename, bool merge)
1548{ 1548{
1549 1549
1550 if (filename.isEmpty()) { 1550 if (filename.isEmpty()) {
1551 return false; 1551 return false;
1552 } 1552 }
1553 1553
1554 if (!QFile::exists(filename)) { 1554 if (!QFile::exists(filename)) {
1555 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1555 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1556 return false; 1556 return false;
1557 } 1557 }
1558 1558
1559 globalFlagBlockAgenda = 1; 1559 globalFlagBlockAgenda = 1;
1560 if (!merge) mCalendar->close(); 1560 if (!merge) mCalendar->close();
1561 1561
1562 mStorage->setFileName( filename ); 1562 mStorage->setFileName( filename );
1563 1563
1564 if ( mStorage->load() ) { 1564 if ( mStorage->load() ) {
1565 if ( merge ) ;//setModified( true ); 1565 if ( merge ) ;//setModified( true );
1566 else { 1566 else {
1567 //setModified( true ); 1567 //setModified( true );
1568 mViewManager->setDocumentId( filename ); 1568 mViewManager->setDocumentId( filename );
1569 mDialogManager->setDocumentId( filename ); 1569 mDialogManager->setDocumentId( filename );
1570 mTodoList->setDocumentId( filename ); 1570 mTodoList->setDocumentId( filename );
1571 } 1571 }
1572 globalFlagBlockAgenda = 2; 1572 globalFlagBlockAgenda = 2;
1573 // if ( getLastSyncEvent() ) 1573 // if ( getLastSyncEvent() )
1574 // getLastSyncEvent()->setReadOnly( true ); 1574 // getLastSyncEvent()->setReadOnly( true );
1575 mCalendar->reInitAlarmSettings(); 1575 mCalendar->reInitAlarmSettings();
1576 setSyncEventsReadOnly(); 1576 setSyncEventsReadOnly();
1577 updateUnmanagedViews(); 1577 updateUnmanagedViews();
1578 updateView(); 1578 updateView();
1579 if ( filename != MainWindow::defaultFileName() ) { 1579 if ( filename != MainWindow::defaultFileName() ) {
1580 saveCalendar( MainWindow::defaultFileName() ); 1580 saveCalendar( MainWindow::defaultFileName() );
1581 } else { 1581 } else {
1582 QFileInfo finf ( MainWindow::defaultFileName()); 1582 QFileInfo finf ( MainWindow::defaultFileName());
1583 if ( finf.exists() ) { 1583 if ( finf.exists() ) {
1584 setLoadedFileVersion( finf.lastModified () ); 1584 setLoadedFileVersion( finf.lastModified () );
1585 } 1585 }
1586 } 1586 }
1587 return true; 1587 return true;
1588 } else { 1588 } else {
1589 // while failing to load, the calendar object could 1589 // while failing to load, the calendar object could
1590 // have become partially populated. Clear it out. 1590 // have become partially populated. Clear it out.
1591 if ( !merge ) { 1591 if ( !merge ) {
1592 mCalendar->close(); 1592 mCalendar->close();
1593 mViewManager->setDocumentId( filename ); 1593 mViewManager->setDocumentId( filename );
1594 mDialogManager->setDocumentId( filename ); 1594 mDialogManager->setDocumentId( filename );
1595 mTodoList->setDocumentId( filename ); 1595 mTodoList->setDocumentId( filename );
1596 } 1596 }
1597 1597
1598 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1598 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1599 1599
1600 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1600 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1601 globalFlagBlockAgenda = 2; 1601 globalFlagBlockAgenda = 2;
1602 mCalendar->reInitAlarmSettings(); 1602 mCalendar->reInitAlarmSettings();
1603 setSyncEventsReadOnly(); 1603 setSyncEventsReadOnly();
1604 updateUnmanagedViews(); 1604 updateUnmanagedViews();
1605 updateView(); 1605 updateView();
1606 } 1606 }
1607 return false; 1607 return false;
1608} 1608}
1609void CalendarView::showOpenError() 1609void CalendarView::showOpenError()
1610{ 1610{
1611 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1611 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1612} 1612}
1613void CalendarView::setLoadedFileVersion(QDateTime dt) 1613void CalendarView::setLoadedFileVersion(QDateTime dt)
1614{ 1614{
1615 loadedFileVersion = dt; 1615 loadedFileVersion = dt;
1616} 1616}
1617bool CalendarView::checkFileChanged(QString fn) 1617bool CalendarView::checkFileChanged(QString fn)
1618{ 1618{
1619 QFileInfo finf ( fn ); 1619 QFileInfo finf ( fn );
1620 if ( !finf.exists() ) 1620 if ( !finf.exists() )
1621 return true; 1621 return true;
1622 QDateTime dt = finf.lastModified (); 1622 QDateTime dt = finf.lastModified ();
1623 if ( dt <= loadedFileVersion ) 1623 if ( dt <= loadedFileVersion )
1624 return false; 1624 return false;
1625 return true; 1625 return true;
1626 1626
1627} 1627}
1628void CalendarView::watchSavedFile() 1628void CalendarView::watchSavedFile()
1629{ 1629{
1630 QFileInfo finf ( MainWindow::defaultFileName()); 1630 QFileInfo finf ( MainWindow::defaultFileName());
1631 if ( !finf.exists() ) 1631 if ( !finf.exists() )
1632 return; 1632 return;
1633 QDateTime dt = finf.lastModified (); 1633 QDateTime dt = finf.lastModified ();
1634 if ( dt < loadedFileVersion ) { 1634 if ( dt < loadedFileVersion ) {
1635 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1635 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1636 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1636 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1637 return; 1637 return;
1638 } 1638 }
1639 loadedFileVersion = dt; 1639 loadedFileVersion = dt;
1640} 1640}
1641 1641
1642bool CalendarView::checkFileVersion(QString fn) 1642bool CalendarView::checkFileVersion(QString fn)
1643{ 1643{
1644 QFileInfo finf ( fn ); 1644 QFileInfo finf ( fn );
1645 if ( !finf.exists() ) 1645 if ( !finf.exists() )
1646 return true; 1646 return true;
1647 QDateTime dt = finf.lastModified (); 1647 QDateTime dt = finf.lastModified ();
1648 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1648 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1649 //qDebug("file on disk version %s",dt.toString().latin1()); 1649 //qDebug("file on disk version %s",dt.toString().latin1());
1650 if ( dt <= loadedFileVersion ) 1650 if ( dt <= loadedFileVersion )
1651 return true; 1651 return true;
1652 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1652 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1653 i18n("KO/Pi Warning"),i18n("Overwrite"), 1653 i18n("KO/Pi Warning"),i18n("Overwrite"),
1654 i18n("Sync+save")); 1654 i18n("Sync+save"));
1655 1655
1656 if ( km == KMessageBox::Cancel ) 1656 if ( km == KMessageBox::Cancel )
1657 return false; 1657 return false;
1658 if ( km == KMessageBox::Yes ) 1658 if ( km == KMessageBox::Yes )
1659 return true; 1659 return true;
1660 1660
1661 setSyncDevice("deleteaftersync" ); 1661 setSyncDevice("deleteaftersync" );
1662 mSyncManager->mAskForPreferences = true; 1662 mSyncManager->mAskForPreferences = true;
1663 mSyncManager->mSyncAlgoPrefs = 3; 1663 mSyncManager->mSyncAlgoPrefs = 3;
1664 mSyncManager->mWriteBackFile = false; 1664 mSyncManager->mWriteBackFile = false;
1665 mSyncManager->mWriteBackExistingOnly = false; 1665 mSyncManager->mWriteBackExistingOnly = false;
1666 mSyncManager->mShowSyncSummary = false; 1666 mSyncManager->mShowSyncSummary = false;
1667 syncCalendar( fn, 3 ); 1667 syncCalendar( fn, 3 );
1668 Event * e = getLastSyncEvent(); 1668 Event * e = getLastSyncEvent();
1669 mCalendar->deleteEvent ( e ); 1669 mCalendar->deleteEvent ( e );
1670 updateView(); 1670 updateView();
1671 return true; 1671 return true;
1672} 1672}
1673 1673
1674bool CalendarView::saveCalendar( QString filename ) 1674bool CalendarView::saveCalendar( QString filename )
1675{ 1675{
1676 1676
1677 // Store back all unsaved data into calendar object 1677 // Store back all unsaved data into calendar object
1678 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1678 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1679 if ( mViewManager->currentView() ) 1679 if ( mViewManager->currentView() )
1680 mViewManager->currentView()->flushView(); 1680 mViewManager->currentView()->flushView();
1681 1681
1682 1682
1683 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 1683 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
1684 mStorage->setSaveFormat( new ICalFormat() ); 1684 mStorage->setSaveFormat( new ICalFormat() );
1685 mStorage->setFileName( filename ); 1685 mStorage->setFileName( filename );
1686 bool success; 1686 bool success;
1687 success = mStorage->save(); 1687 success = mStorage->save();
1688 if ( !success ) { 1688 if ( !success ) {
1689 return false; 1689 return false;
1690 } 1690 }
1691 if ( filename == MainWindow::defaultFileName() ) { 1691 if ( filename == MainWindow::defaultFileName() ) {
1692 setLoadedFileVersion( lfv ); 1692 setLoadedFileVersion( lfv );
1693 watchSavedFile(); 1693 watchSavedFile();
1694 } 1694 }
1695 return true; 1695 return true;
1696} 1696}
1697 1697
1698void CalendarView::closeCalendar() 1698void CalendarView::closeCalendar()
1699{ 1699{
1700 1700
1701 // child windows no longer valid 1701 // child windows no longer valid
1702 emit closingDown(); 1702 emit closingDown();
1703 1703
1704 mCalendar->close(); 1704 mCalendar->close();
1705 setModified(false); 1705 setModified(false);
1706 updateView(); 1706 updateView();
1707} 1707}
1708 1708
1709void CalendarView::archiveCalendar() 1709void CalendarView::archiveCalendar()
1710{ 1710{
1711 mDialogManager->showArchiveDialog(); 1711 mDialogManager->showArchiveDialog();
1712} 1712}
1713 1713
1714 1714
1715void CalendarView::readSettings() 1715void CalendarView::readSettings()
1716{ 1716{
1717 1717
1718 1718
1719 // mViewManager->showAgendaView(); 1719 // mViewManager->showAgendaView();
1720 QString str; 1720 QString str;
1721 //qDebug("CalendarView::readSettings() "); 1721 //qDebug("CalendarView::readSettings() ");
1722 // read settings from the KConfig, supplying reasonable 1722 // read settings from the KConfig, supplying reasonable
1723 // defaults where none are to be found 1723 // defaults where none are to be found
1724 KConfig *config = KOGlobals::config(); 1724 KConfig *config = KOGlobals::config();
1725#ifndef KORG_NOSPLITTER 1725#ifndef KORG_NOSPLITTER
1726 config->setGroup("KOrganizer Geometry"); 1726 config->setGroup("KOrganizer Geometry");
1727 1727
1728 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1728 QValueList<int> sizes = config->readIntListEntry("Separator1");
1729 if (sizes.count() != 2) { 1729 if (sizes.count() != 2) {
1730 sizes << mDateNavigator->minimumSizeHint().width(); 1730 sizes << mDateNavigator->minimumSizeHint().width();
1731 sizes << 300; 1731 sizes << 300;
1732 } 1732 }
1733 mPanner->setSizes(sizes); 1733 mPanner->setSizes(sizes);
1734 1734
1735 sizes = config->readIntListEntry("Separator2"); 1735 sizes = config->readIntListEntry("Separator2");
1736 if ( ( mResourceView && sizes.count() == 4 ) || 1736 if ( ( mResourceView && sizes.count() == 4 ) ||
1737 ( !mResourceView && sizes.count() == 3 ) ) { 1737 ( !mResourceView && sizes.count() == 3 ) ) {
1738 mLeftSplitter->setSizes(sizes); 1738 mLeftSplitter->setSizes(sizes);
1739 } 1739 }
1740#endif 1740#endif
1741 globalFlagBlockAgenda = 1; 1741 globalFlagBlockAgenda = 1;
1742 mViewManager->showAgendaView(); 1742 mViewManager->showAgendaView();
1743 //mViewManager->readSettings( config ); 1743 //mViewManager->readSettings( config );
1744 mTodoList->restoreLayout(config,QString("Todo Layout")); 1744 mTodoList->restoreLayout(config,QString("Todo Layout"));
1745 readFilterSettings(config); 1745 readFilterSettings(config);
1746 config->setGroup( "Views" ); 1746 config->setGroup( "Views" );
1747 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1747 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1748 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1748 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1749 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1749 else if ( dateCount == 7 ) mNavigator->selectWeek();
1750 else mNavigator->selectDates( dateCount ); 1750 else mNavigator->selectDates( dateCount );
1751 // mViewManager->readSettings( config ); 1751 // mViewManager->readSettings( config );
1752 updateConfig(); 1752 updateConfig();
1753 globalFlagBlockAgenda = 2; 1753 globalFlagBlockAgenda = 2;
1754 mViewManager->readSettings( config ); 1754 mViewManager->readSettings( config );
1755#ifdef DESKTOP_VERSION 1755#ifdef DESKTOP_VERSION
1756 config->setGroup("WidgetLayout"); 1756 config->setGroup("WidgetLayout");
1757 QStringList list; 1757 QStringList list;
1758 list = config->readListEntry("MainLayout"); 1758 list = config->readListEntry("MainLayout");
1759 int x,y,w,h; 1759 int x,y,w,h;
1760 if ( ! list.isEmpty() ) { 1760 if ( ! list.isEmpty() ) {
1761 x = list[0].toInt(); 1761 x = list[0].toInt();
1762 y = list[1].toInt(); 1762 y = list[1].toInt();
1763 w = list[2].toInt(); 1763 w = list[2].toInt();
1764 h = list[3].toInt(); 1764 h = list[3].toInt();
1765 topLevelWidget()->setGeometry(x,y,w,h); 1765 topLevelWidget()->setGeometry(x,y,w,h);
1766 1766
1767 } else { 1767 } else {
1768 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1768 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1769 } 1769 }
1770 list = config->readListEntry("EditEventLayout"); 1770 list = config->readListEntry("EditEventLayout");
1771 if ( ! list.isEmpty() ) { 1771 if ( ! list.isEmpty() ) {
1772 x = list[0].toInt(); 1772 x = list[0].toInt();
1773 y = list[1].toInt(); 1773 y = list[1].toInt();
1774 w = list[2].toInt(); 1774 w = list[2].toInt();
1775 h = list[3].toInt(); 1775 h = list[3].toInt();
1776 mEventEditor->setGeometry(x,y,w,h); 1776 mEventEditor->setGeometry(x,y,w,h);
1777 1777
1778 } 1778 }
1779 list = config->readListEntry("EditTodoLayout"); 1779 list = config->readListEntry("EditTodoLayout");
1780 if ( ! list.isEmpty() ) { 1780 if ( ! list.isEmpty() ) {
1781 x = list[0].toInt(); 1781 x = list[0].toInt();
1782 y = list[1].toInt(); 1782 y = list[1].toInt();
1783 w = list[2].toInt(); 1783 w = list[2].toInt();
1784 h = list[3].toInt(); 1784 h = list[3].toInt();
1785 mTodoEditor->setGeometry(x,y,w,h); 1785 mTodoEditor->setGeometry(x,y,w,h);
1786 1786
1787 } 1787 }
1788 list = config->readListEntry("ViewerLayout"); 1788 list = config->readListEntry("ViewerLayout");
1789 if ( ! list.isEmpty() ) { 1789 if ( ! list.isEmpty() ) {
1790 x = list[0].toInt(); 1790 x = list[0].toInt();
1791 y = list[1].toInt(); 1791 y = list[1].toInt();
1792 w = list[2].toInt(); 1792 w = list[2].toInt();
1793 h = list[3].toInt(); 1793 h = list[3].toInt();
1794 getEventViewerDialog()->setGeometry(x,y,w,h); 1794 getEventViewerDialog()->setGeometry(x,y,w,h);
1795 } 1795 }
1796#endif 1796#endif
1797 1797
1798} 1798}
1799 1799
1800 1800
1801void CalendarView::writeSettings() 1801void CalendarView::writeSettings()
1802{ 1802{
1803 // kdDebug() << "CalendarView::writeSettings" << endl; 1803 // kdDebug() << "CalendarView::writeSettings" << endl;
1804 1804
1805 KConfig *config = KOGlobals::config(); 1805 KConfig *config = KOGlobals::config();
1806 1806
1807#ifndef KORG_NOSPLITTER 1807#ifndef KORG_NOSPLITTER
1808 config->setGroup("KOrganizer Geometry"); 1808 config->setGroup("KOrganizer Geometry");
1809 1809
1810 QValueList<int> list = mPanner->sizes(); 1810 QValueList<int> list = mPanner->sizes();
1811 config->writeEntry("Separator1",list); 1811 config->writeEntry("Separator1",list);
1812 1812
1813 list = mLeftSplitter->sizes(); 1813 list = mLeftSplitter->sizes();
1814 config->writeEntry("Separator2",list); 1814 config->writeEntry("Separator2",list);
1815#endif 1815#endif
1816 1816
1817 mViewManager->writeSettings( config ); 1817 mViewManager->writeSettings( config );
1818 mTodoList->saveLayout(config,QString("Todo Layout")); 1818 mTodoList->saveLayout(config,QString("Todo Layout"));
1819 mDialogManager->writeSettings( config ); 1819 mDialogManager->writeSettings( config );
1820 //KOPrefs::instance()->usrWriteConfig(); 1820 //KOPrefs::instance()->usrWriteConfig();
1821 KOPrefs::instance()->writeConfig(); 1821 KOPrefs::instance()->writeConfig();
1822 1822
1823 writeFilterSettings(config); 1823 writeFilterSettings(config);
1824 1824
1825 config->setGroup( "Views" ); 1825 config->setGroup( "Views" );
1826 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1826 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1827 1827
1828#ifdef DESKTOP_VERSION 1828#ifdef DESKTOP_VERSION
1829 config->setGroup("WidgetLayout"); 1829 config->setGroup("WidgetLayout");
1830 QStringList list ;//= config->readListEntry("MainLayout"); 1830 QStringList list ;//= config->readListEntry("MainLayout");
1831 int x,y,w,h; 1831 int x,y,w,h;
1832 QWidget* wid; 1832 QWidget* wid;
1833 wid = topLevelWidget(); 1833 wid = topLevelWidget();
1834 x = wid->geometry().x(); 1834 x = wid->geometry().x();
1835 y = wid->geometry().y(); 1835 y = wid->geometry().y();
1836 w = wid->width(); 1836 w = wid->width();
1837 h = wid->height(); 1837 h = wid->height();
1838 list.clear(); 1838 list.clear();
1839 list << QString::number( x ); 1839 list << QString::number( x );
1840 list << QString::number( y ); 1840 list << QString::number( y );
1841 list << QString::number( w ); 1841 list << QString::number( w );
1842 list << QString::number( h ); 1842 list << QString::number( h );
1843 config->writeEntry("MainLayout",list ); 1843 config->writeEntry("MainLayout",list );
1844 1844
1845 wid = mEventEditor; 1845 wid = mEventEditor;
1846 x = wid->geometry().x(); 1846 x = wid->geometry().x();
1847 y = wid->geometry().y(); 1847 y = wid->geometry().y();
1848 w = wid->width(); 1848 w = wid->width();
1849 h = wid->height(); 1849 h = wid->height();
1850 list.clear(); 1850 list.clear();
1851 list << QString::number( x ); 1851 list << QString::number( x );
1852 list << QString::number( y ); 1852 list << QString::number( y );
1853 list << QString::number( w ); 1853 list << QString::number( w );
1854 list << QString::number( h ); 1854 list << QString::number( h );
1855 config->writeEntry("EditEventLayout",list ); 1855 config->writeEntry("EditEventLayout",list );
1856 1856
1857 wid = mTodoEditor; 1857 wid = mTodoEditor;
1858 x = wid->geometry().x(); 1858 x = wid->geometry().x();
1859 y = wid->geometry().y(); 1859 y = wid->geometry().y();
1860 w = wid->width(); 1860 w = wid->width();
1861 h = wid->height(); 1861 h = wid->height();
1862 list.clear(); 1862 list.clear();
1863 list << QString::number( x ); 1863 list << QString::number( x );
1864 list << QString::number( y ); 1864 list << QString::number( y );
1865 list << QString::number( w ); 1865 list << QString::number( w );
1866 list << QString::number( h ); 1866 list << QString::number( h );
1867 config->writeEntry("EditTodoLayout",list ); 1867 config->writeEntry("EditTodoLayout",list );
1868 wid = getEventViewerDialog(); 1868 wid = getEventViewerDialog();
1869 x = wid->geometry().x(); 1869 x = wid->geometry().x();
1870 y = wid->geometry().y(); 1870 y = wid->geometry().y();
1871 w = wid->width(); 1871 w = wid->width();
1872 h = wid->height(); 1872 h = wid->height();
1873 list.clear(); 1873 list.clear();
1874 list << QString::number( x ); 1874 list << QString::number( x );
1875 list << QString::number( y ); 1875 list << QString::number( y );
1876 list << QString::number( w ); 1876 list << QString::number( w );
1877 list << QString::number( h ); 1877 list << QString::number( h );
1878 config->writeEntry("ViewerLayout",list ); 1878 config->writeEntry("ViewerLayout",list );
1879 wid = mDialogManager->getSearchDialog(); 1879 wid = mDialogManager->getSearchDialog();
1880 if ( wid ) { 1880 if ( wid ) {
1881 x = wid->geometry().x(); 1881 x = wid->geometry().x();
1882 y = wid->geometry().y(); 1882 y = wid->geometry().y();
1883 w = wid->width(); 1883 w = wid->width();
1884 h = wid->height(); 1884 h = wid->height();
1885 list.clear(); 1885 list.clear();
1886 list << QString::number( x ); 1886 list << QString::number( x );
1887 list << QString::number( y ); 1887 list << QString::number( y );
1888 list << QString::number( w ); 1888 list << QString::number( w );
1889 list << QString::number( h ); 1889 list << QString::number( h );
1890 config->writeEntry("SearchLayout",list ); 1890 config->writeEntry("SearchLayout",list );
1891 } 1891 }
1892#endif 1892#endif
1893 1893
1894 1894
1895 config->sync(); 1895 config->sync();
1896} 1896}
1897 1897
1898void CalendarView::readFilterSettings(KConfig *config) 1898void CalendarView::readFilterSettings(KConfig *config)
1899{ 1899{
1900 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1900 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1901 1901
1902 mFilters.clear(); 1902 mFilters.clear();
1903 1903
1904 config->setGroup("General"); 1904 config->setGroup("General");
1905 QStringList filterList = config->readListEntry("CalendarFilters"); 1905 QStringList filterList = config->readListEntry("CalendarFilters");
1906 1906
1907 QStringList::ConstIterator it = filterList.begin(); 1907 QStringList::ConstIterator it = filterList.begin();
1908 QStringList::ConstIterator end = filterList.end(); 1908 QStringList::ConstIterator end = filterList.end();
1909 while(it != end) { 1909 while(it != end) {
1910 // kdDebug() << " filter: " << (*it) << endl; 1910 // kdDebug() << " filter: " << (*it) << endl;
1911 1911
1912 CalFilter *filter; 1912 CalFilter *filter;
1913 filter = new CalFilter(*it); 1913 filter = new CalFilter(*it);
1914 config->setGroup("Filter_" + (*it)); 1914 config->setGroup("Filter_" + (*it));
1915 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1915 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1916 filter->setCriteria(config->readNumEntry("Criteria",0)); 1916 filter->setCriteria(config->readNumEntry("Criteria",0));
1917 filter->setCategoryList(config->readListEntry("CategoryList")); 1917 filter->setCategoryList(config->readListEntry("CategoryList"));
1918 mFilters.append(filter); 1918 mFilters.append(filter);
1919 1919
1920 ++it; 1920 ++it;
1921 } 1921 }
1922 1922
1923 if (mFilters.count() == 0) { 1923 if (mFilters.count() == 0) {
1924 CalFilter *filter = new CalFilter(i18n("Default")); 1924 CalFilter *filter = new CalFilter(i18n("Default"));
1925 mFilters.append(filter); 1925 mFilters.append(filter);
1926 } 1926 }
1927 mFilterView->updateFilters(); 1927 mFilterView->updateFilters();
1928 config->setGroup("FilterView"); 1928 config->setGroup("FilterView");
1929 1929
1930 mFilterView->blockSignals(true); 1930 mFilterView->blockSignals(true);
1931 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1931 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1932 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1932 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1933 mFilterView->blockSignals(false); 1933 mFilterView->blockSignals(false);
1934 // We do it manually to avoid it being done twice by the above calls 1934 // We do it manually to avoid it being done twice by the above calls
1935 updateFilter(); 1935 updateFilter();
1936} 1936}
1937 1937
1938void CalendarView::writeFilterSettings(KConfig *config) 1938void CalendarView::writeFilterSettings(KConfig *config)
1939{ 1939{
1940 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1940 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1941 1941
1942 QStringList filterList; 1942 QStringList filterList;
1943 1943
1944 CalFilter *filter = mFilters.first(); 1944 CalFilter *filter = mFilters.first();
1945 while(filter) { 1945 while(filter) {
1946 // kdDebug() << " fn: " << filter->name() << endl; 1946 // kdDebug() << " fn: " << filter->name() << endl;
1947 filterList << filter->name(); 1947 filterList << filter->name();
1948 config->setGroup("Filter_" + filter->name()); 1948 config->setGroup("Filter_" + filter->name());
1949 config->writeEntry("Criteria",filter->criteria()); 1949 config->writeEntry("Criteria",filter->criteria());
1950 config->writeEntry("CategoryList",filter->categoryList()); 1950 config->writeEntry("CategoryList",filter->categoryList());
1951 filter = mFilters.next(); 1951 filter = mFilters.next();
1952 } 1952 }
1953 config->setGroup("General"); 1953 config->setGroup("General");
1954 config->writeEntry("CalendarFilters",filterList); 1954 config->writeEntry("CalendarFilters",filterList);
1955 1955
1956 config->setGroup("FilterView"); 1956 config->setGroup("FilterView");
1957 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1957 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1958 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1958 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1959} 1959}
1960 1960
1961 1961
1962void CalendarView::goToday() 1962void CalendarView::goToday()
1963{ 1963{
1964 mNavigator->selectToday(); 1964 mNavigator->selectToday();
1965} 1965}
1966 1966
1967void CalendarView::goNext() 1967void CalendarView::goNext()
1968{ 1968{
1969 mNavigator->selectNext(); 1969 mNavigator->selectNext();
1970} 1970}
1971 1971
1972void CalendarView::goPrevious() 1972void CalendarView::goPrevious()
1973{ 1973{
1974 mNavigator->selectPrevious(); 1974 mNavigator->selectPrevious();
1975} 1975}
1976void CalendarView::goNextMonth() 1976void CalendarView::goNextMonth()
1977{ 1977{
1978 mNavigator->selectNextMonth(); 1978 mNavigator->selectNextMonth();
1979} 1979}
1980 1980
1981void CalendarView::goPreviousMonth() 1981void CalendarView::goPreviousMonth()
1982{ 1982{
1983 mNavigator->selectPreviousMonth(); 1983 mNavigator->selectPreviousMonth();
1984} 1984}
1985void CalendarView::writeLocale() 1985void CalendarView::writeLocale()
1986{ 1986{
1987 //KPimGlobalPrefs::instance()->setGlobalConfig(); 1987 //KPimGlobalPrefs::instance()->setGlobalConfig();
1988#if 0 1988#if 0
1989 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1989 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1990 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1990 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1991 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1991 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1992 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1992 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1993 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1993 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1994 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1994 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1995 dummy = KOPrefs::instance()->mUserDateFormatShort; 1995 dummy = KOPrefs::instance()->mUserDateFormatShort;
1996 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1996 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1997 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1997 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1998 KOPrefs::instance()->mDaylightsavingStart, 1998 KOPrefs::instance()->mDaylightsavingStart,
1999 KOPrefs::instance()->mDaylightsavingEnd ); 1999 KOPrefs::instance()->mDaylightsavingEnd );
2000 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 2000 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
2001#endif 2001#endif
2002} 2002}
2003void CalendarView::updateConfig() 2003void CalendarView::updateConfig()
2004{ 2004{
2005 writeLocale(); 2005 writeLocale();
2006 if ( KOPrefs::instance()->mUseAppColors ) 2006 if ( KOPrefs::instance()->mUseAppColors )
2007 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2007 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2008 emit configChanged(); 2008 emit configChanged();
2009 mTodoList->updateConfig(); 2009 mTodoList->updateConfig();
2010 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2010 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2011 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2011 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2012 // To make the "fill window" configurations work 2012 // To make the "fill window" configurations work
2013 //mViewManager->raiseCurrentView(); 2013 //mViewManager->raiseCurrentView();
2014} 2014}
2015 2015
2016 2016
2017void CalendarView::eventChanged(Event *event) 2017void CalendarView::eventChanged(Event *event)
2018{ 2018{
2019 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2019 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2020 //updateUnmanagedViews(); 2020 //updateUnmanagedViews();
2021} 2021}
2022 2022
2023void CalendarView::eventAdded(Event *event) 2023void CalendarView::eventAdded(Event *event)
2024{ 2024{
2025 changeEventDisplay(event,KOGlobals::EVENTADDED); 2025 changeEventDisplay(event,KOGlobals::EVENTADDED);
2026} 2026}
2027 2027
2028void CalendarView::eventToBeDeleted(Event *) 2028void CalendarView::eventToBeDeleted(Event *)
2029{ 2029{
2030 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2030 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2031} 2031}
2032 2032
2033void CalendarView::eventDeleted() 2033void CalendarView::eventDeleted()
2034{ 2034{
2035 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2035 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2036} 2036}
2037void CalendarView::changeTodoDisplay(Todo *which, int action) 2037void CalendarView::changeTodoDisplay(Todo *which, int action)
2038{ 2038{
2039 changeIncidenceDisplay((Incidence *)which, action); 2039 changeIncidenceDisplay((Incidence *)which, action);
2040 mDateNavigator->updateView(); //LR 2040 mDateNavigator->updateView(); //LR
2041 //mDialogManager->updateSearchDialog(); 2041 //mDialogManager->updateSearchDialog();
2042 2042
2043 if (which) { 2043 if (which) {
2044 mViewManager->updateWNview(); 2044 mViewManager->updateWNview();
2045 //mTodoList->updateView(); 2045 //mTodoList->updateView();
2046 } 2046 }
2047 2047
2048} 2048}
2049 2049
2050void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2050void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2051{ 2051{
2052 updateUnmanagedViews(); 2052 updateUnmanagedViews();
2053 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2053 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2054 if ( action == KOGlobals::EVENTDELETED ) { //delete 2054 if ( action == KOGlobals::EVENTDELETED ) { //delete
2055 mCalendar->checkAlarmForIncidence( 0, true ); 2055 mCalendar->checkAlarmForIncidence( 0, true );
2056 if ( mEventViewerDialog ) 2056 if ( mEventViewerDialog )
2057 mEventViewerDialog->hide(); 2057 mEventViewerDialog->hide();
2058 } 2058 }
2059 else 2059 else
2060 mCalendar->checkAlarmForIncidence( which , false ); 2060 mCalendar->checkAlarmForIncidence( which , false );
2061} 2061}
2062 2062
2063// most of the changeEventDisplays() right now just call the view's 2063// most of the changeEventDisplays() right now just call the view's
2064// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2064// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2065void CalendarView::changeEventDisplay(Event *which, int action) 2065void CalendarView::changeEventDisplay(Event *which, int action)
2066{ 2066{
2067 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2067 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2068 changeIncidenceDisplay((Incidence *)which, action); 2068 changeIncidenceDisplay((Incidence *)which, action);
2069 mDateNavigator->updateView(); 2069 mDateNavigator->updateView();
2070 //mDialogManager->updateSearchDialog(); 2070 //mDialogManager->updateSearchDialog();
2071 2071
2072 if (which) { 2072 if (which) {
2073 // If there is an event view visible update the display 2073 // If there is an event view visible update the display
2074 mViewManager->currentView()->changeEventDisplay(which,action); 2074 mViewManager->currentView()->changeEventDisplay(which,action);
2075 // TODO: check, if update needed 2075 // TODO: check, if update needed
2076 // if (which->getTodoStatus()) { 2076 // if (which->getTodoStatus()) {
2077 mTodoList->updateView(); 2077 mTodoList->updateView();
2078 // } 2078 // }
2079 } else { 2079 } else {
2080 mViewManager->currentView()->updateView(); 2080 mViewManager->currentView()->updateView();
2081 } 2081 }
2082} 2082}
2083 2083
2084 2084
2085void CalendarView::updateTodoViews() 2085void CalendarView::updateTodoViews()
2086{ 2086{
2087 2087
2088 mTodoList->updateView(); 2088 mTodoList->updateView();
2089 mViewManager->currentView()->updateView(); 2089 mViewManager->currentView()->updateView();
2090 2090
2091} 2091}
2092 2092
2093 2093
2094void CalendarView::updateView(const QDate &start, const QDate &end) 2094void CalendarView::updateView(const QDate &start, const QDate &end)
2095{ 2095{
2096 mTodoList->updateView(); 2096 mTodoList->updateView();
2097 mViewManager->updateView(start, end); 2097 mViewManager->updateView(start, end);
2098 //mDateNavigator->updateView(); 2098 //mDateNavigator->updateView();
2099} 2099}
2100 2100
2101void CalendarView::updateView() 2101void CalendarView::updateView()
2102{ 2102{
2103 DateList tmpList = mNavigator->selectedDates(); 2103 DateList tmpList = mNavigator->selectedDates();
2104 2104
2105 // We assume that the navigator only selects consecutive days. 2105 // We assume that the navigator only selects consecutive days.
2106 updateView( tmpList.first(), tmpList.last() ); 2106 updateView( tmpList.first(), tmpList.last() );
2107} 2107}
2108 2108
2109void CalendarView::updateUnmanagedViews() 2109void CalendarView::updateUnmanagedViews()
2110{ 2110{
2111 mDateNavigator->updateDayMatrix(); 2111 mDateNavigator->updateDayMatrix();
2112} 2112}
2113 2113
2114int CalendarView::msgItemDelete() 2114int CalendarView::msgItemDelete()
2115{ 2115{
2116 return KMessageBox::warningContinueCancel(this, 2116 return KMessageBox::warningContinueCancel(this,
2117 i18n("This item will be\npermanently deleted."), 2117 i18n("This item will be\npermanently deleted."),
2118 i18n("KO/Pi Confirmation"),i18n("Delete")); 2118 i18n("KO/Pi Confirmation"),i18n("Delete"));
2119} 2119}
2120 2120
2121 2121
2122void CalendarView::edit_cut() 2122void CalendarView::edit_cut()
2123{ 2123{
2124 Event *anEvent=0; 2124 Event *anEvent=0;
2125 2125
2126 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2126 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2127 2127
2128 if (mViewManager->currentView()->isEventView()) { 2128 if (mViewManager->currentView()->isEventView()) {
2129 if ( incidence && incidence->type() == "Event" ) { 2129 if ( incidence && incidence->type() == "Event" ) {
2130 anEvent = static_cast<Event *>(incidence); 2130 anEvent = static_cast<Event *>(incidence);
2131 } 2131 }
2132 } 2132 }
2133 2133
2134 if (!anEvent) { 2134 if (!anEvent) {
2135 KNotifyClient::beep(); 2135 KNotifyClient::beep();
2136 return; 2136 return;
2137 } 2137 }
2138 DndFactory factory( mCalendar ); 2138 DndFactory factory( mCalendar );
2139 factory.cutEvent(anEvent); 2139 factory.cutEvent(anEvent);
2140 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2140 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2141} 2141}
2142 2142
2143void CalendarView::edit_copy() 2143void CalendarView::edit_copy()
2144{ 2144{
2145 Event *anEvent=0; 2145 Event *anEvent=0;
2146 2146
2147 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2147 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2148 2148
2149 if (mViewManager->currentView()->isEventView()) { 2149 if (mViewManager->currentView()->isEventView()) {
2150 if ( incidence && incidence->type() == "Event" ) { 2150 if ( incidence && incidence->type() == "Event" ) {
2151 anEvent = static_cast<Event *>(incidence); 2151 anEvent = static_cast<Event *>(incidence);
2152 } 2152 }
2153 } 2153 }
2154 2154
2155 if (!anEvent) { 2155 if (!anEvent) {
2156 KNotifyClient::beep(); 2156 KNotifyClient::beep();
2157 return; 2157 return;
2158 } 2158 }
2159 DndFactory factory( mCalendar ); 2159 DndFactory factory( mCalendar );
2160 factory.copyEvent(anEvent); 2160 factory.copyEvent(anEvent);
2161} 2161}
2162 2162
2163void CalendarView::edit_paste() 2163void CalendarView::edit_paste()
2164{ 2164{
2165 QDate date = mNavigator->selectedDates().first(); 2165 QDate date = mNavigator->selectedDates().first();
2166 2166
2167 DndFactory factory( mCalendar ); 2167 DndFactory factory( mCalendar );
2168 Event *pastedEvent = factory.pasteEvent( date ); 2168 Event *pastedEvent = factory.pasteEvent( date );
2169 2169
2170 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2170 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2171} 2171}
2172 2172
2173void CalendarView::edit_options() 2173void CalendarView::edit_options()
2174{ 2174{
2175 mDialogManager->showOptionsDialog(); 2175 mDialogManager->showOptionsDialog();
2176 //writeSettings(); 2176 //writeSettings();
2177} 2177}
2178 2178
2179void CalendarView::slotSelectPickerDate( QDate d) 2179void CalendarView::slotSelectPickerDate( QDate d)
2180{ 2180{
2181 mDateFrame->hide(); 2181 mDateFrame->hide();
2182 if ( mDatePickerMode == 1 ) { 2182 if ( mDatePickerMode == 1 ) {
2183 mNavigator->slotDaySelect( d ); 2183 mNavigator->slotDaySelect( d );
2184 } else if ( mDatePickerMode == 2 ) { 2184 } else if ( mDatePickerMode == 2 ) {
2185 if ( mMoveIncidence->type() == "Todo" ) { 2185 if ( mMoveIncidence->type() == "Todo" ) {
2186 Todo * to = (Todo *) mMoveIncidence; 2186 Todo * to = (Todo *) mMoveIncidence;
2187 QTime tim; 2187 QTime tim;
2188 if ( to->hasDueDate() ) 2188 if ( to->hasDueDate() )
2189 tim = to->dtDue().time(); 2189 tim = to->dtDue().time();
2190 else { 2190 else {
2191 tim = QTime ( 0,0,0 ); 2191 tim = QTime ( 0,0,0 );
2192 to->setFloats( true ); 2192 to->setFloats( true );
2193 to->setHasDueDate( true ); 2193 to->setHasDueDate( true );
2194 } 2194 }
2195 QDateTime dt ( d,tim ); 2195 QDateTime dt ( d,tim );
2196 to->setDtDue( dt ); 2196 to->setDtDue( dt );
2197 todoChanged( to ); 2197 todoChanged( to );
2198 } else { 2198 } else {
2199 QTime tim = mMoveIncidence->dtStart().time(); 2199 QTime tim = mMoveIncidence->dtStart().time();
2200 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2200 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2201 QDateTime dt ( d,tim ); 2201 QDateTime dt ( d,tim );
2202 mMoveIncidence->setDtStart( dt ); 2202 mMoveIncidence->setDtStart( dt );
2203 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2203 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2204 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2204 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2205 } 2205 }
2206 2206
2207 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2207 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2208 } 2208 }
2209} 2209}
2210 2210
2211void CalendarView::removeCategories() 2211void CalendarView::removeCategories()
2212{ 2212{
2213 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2213 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2214 QStringList catList = KOPrefs::instance()->mCustomCategories; 2214 QStringList catList = KOPrefs::instance()->mCustomCategories;
2215 QStringList catIncList; 2215 QStringList catIncList;
2216 QStringList newCatList; 2216 QStringList newCatList;
2217 Incidence* inc = incList.first(); 2217 Incidence* inc = incList.first();
2218 int i; 2218 int i;
2219 int count = 0; 2219 int count = 0;
2220 while ( inc ) { 2220 while ( inc ) {
2221 newCatList.clear(); 2221 newCatList.clear();
2222 catIncList = inc->categories() ; 2222 catIncList = inc->categories() ;
2223 for( i = 0; i< catIncList.count(); ++i ) { 2223 for( i = 0; i< catIncList.count(); ++i ) {
2224 if ( catList.contains (catIncList[i])) 2224 if ( catList.contains (catIncList[i]))
2225 newCatList.append( catIncList[i] ); 2225 newCatList.append( catIncList[i] );
2226 } 2226 }
2227 newCatList.sort(); 2227 newCatList.sort();
2228 inc->setCategories( newCatList.join(",") ); 2228 inc->setCategories( newCatList.join(",") );
2229 inc = incList.next(); 2229 inc = incList.next();
2230 } 2230 }
2231} 2231}
2232 2232
2233int CalendarView::addCategories() 2233int CalendarView::addCategories()
2234{ 2234{
2235 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2235 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2236 QStringList catList = KOPrefs::instance()->mCustomCategories; 2236 QStringList catList = KOPrefs::instance()->mCustomCategories;
2237 QStringList catIncList; 2237 QStringList catIncList;
2238 Incidence* inc = incList.first(); 2238 Incidence* inc = incList.first();
2239 int i; 2239 int i;
2240 int count = 0; 2240 int count = 0;
2241 while ( inc ) { 2241 while ( inc ) {
2242 catIncList = inc->categories() ; 2242 catIncList = inc->categories() ;
2243 for( i = 0; i< catIncList.count(); ++i ) { 2243 for( i = 0; i< catIncList.count(); ++i ) {
2244 if ( !catList.contains (catIncList[i])) { 2244 if ( !catList.contains (catIncList[i])) {
2245 catList.append( catIncList[i] ); 2245 catList.append( catIncList[i] );
2246 //qDebug("add cat %s ", catIncList[i].latin1()); 2246 //qDebug("add cat %s ", catIncList[i].latin1());
2247 ++count; 2247 ++count;
2248 } 2248 }
2249 } 2249 }
2250 inc = incList.next(); 2250 inc = incList.next();
2251 } 2251 }
2252 catList.sort(); 2252 catList.sort();
2253 KOPrefs::instance()->mCustomCategories = catList; 2253 KOPrefs::instance()->mCustomCategories = catList;
2254 return count; 2254 return count;
2255} 2255}
2256 2256
2257void CalendarView::manageCategories() 2257void CalendarView::manageCategories()
2258{ 2258{
2259 KOCatPrefs* cp = new KOCatPrefs(); 2259 KOCatPrefs* cp = new KOCatPrefs();
2260 cp->show(); 2260 cp->show();
2261 int w =cp->sizeHint().width() ; 2261 int w =cp->sizeHint().width() ;
2262 int h = cp->sizeHint().height() ; 2262 int h = cp->sizeHint().height() ;
2263 int dw = QApplication::desktop()->width(); 2263 int dw = QApplication::desktop()->width();
2264 int dh = QApplication::desktop()->height(); 2264 int dh = QApplication::desktop()->height();
2265 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2265 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2266 if ( !cp->exec() ) { 2266 if ( !cp->exec() ) {
2267 delete cp; 2267 delete cp;
2268 return; 2268 return;
2269 } 2269 }
2270 int count = 0; 2270 int count = 0;
2271 if ( cp->addCat() ) { 2271 if ( cp->addCat() ) {
2272 count = addCategories(); 2272 count = addCategories();
2273 if ( count ) { 2273 if ( count ) {
2274 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2274 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2275 writeSettings(); 2275 writeSettings();
2276 } 2276 }
2277 } else { 2277 } else {
2278 removeCategories(); 2278 removeCategories();
2279 updateView(); 2279 updateView();
2280 } 2280 }
2281 delete cp; 2281 delete cp;
2282} 2282}
2283 2283
2284void CalendarView::beamIncidence(Incidence * Inc) 2284void CalendarView::beamIncidence(Incidence * Inc)
2285{ 2285{
2286 QPtrList<Incidence> delSel ; 2286 QPtrList<Incidence> delSel ;
2287 delSel.append(Inc); 2287 delSel.append(Inc);
2288 beamIncidenceList( delSel ); 2288 beamIncidenceList( delSel );
2289} 2289}
2290void CalendarView::beamCalendar() 2290void CalendarView::beamCalendar()
2291{ 2291{
2292 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2292 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2293 //qDebug("beamCalendar() "); 2293 //qDebug("beamCalendar() ");
2294 beamIncidenceList( delSel ); 2294 beamIncidenceList( delSel );
2295} 2295}
2296void CalendarView::beamFilteredCalendar() 2296void CalendarView::beamFilteredCalendar()
2297{ 2297{
2298 QPtrList<Incidence> delSel = mCalendar->incidences(); 2298 QPtrList<Incidence> delSel = mCalendar->incidences();
2299 //qDebug("beamFilteredCalendar() "); 2299 //qDebug("beamFilteredCalendar() ");
2300 beamIncidenceList( delSel ); 2300 beamIncidenceList( delSel );
2301} 2301}
2302void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2302void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2303{ 2303{
2304 if ( beamDialog->exec () == QDialog::Rejected ) 2304 if ( beamDialog->exec () == QDialog::Rejected )
2305 return; 2305 return;
2306 2306
2307 QString fn = "/tmp/kopibeamfile"; 2307 QString fn = "/tmp/kopibeamfile";
2308 QString mes; 2308 QString mes;
2309 bool createbup = true; 2309 bool createbup = true;
2310 if ( createbup ) { 2310 if ( createbup ) {
2311 QString description = "\n"; 2311 QString description = "\n";
2312 CalendarLocal* cal = new CalendarLocal(); 2312 CalendarLocal* cal = new CalendarLocal();
2313 if ( beamDialog->beamLocal() ) 2313 if ( beamDialog->beamLocal() )
2314 cal->setLocalTime(); 2314 cal->setLocalTime();
2315 else 2315 else
2316 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2316 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2317 Incidence *incidence = delSel.first(); 2317 Incidence *incidence = delSel.first();
2318 bool addText = false; 2318 bool addText = false;
2319 if ( delSel.count() < 10 ) 2319 if ( delSel.count() < 10 )
2320 addText = true; 2320 addText = true;
2321 else { 2321 else {
2322 description.sprintf(i18n(" %d items?"),delSel.count() ); 2322 description.sprintf(i18n(" %d items?"),delSel.count() );
2323 } 2323 }
2324 while ( incidence ) { 2324 while ( incidence ) {
2325 Incidence *in = incidence->clone(); 2325 Incidence *in = incidence->clone();
2326 if ( ! in->summary().isEmpty() ) {
2327 in->setDescription("");
2328 } else {
2329 in->setSummary( in->description().left(20));
2330 in->setDescription("");
2331 }
2326 if ( addText ) 2332 if ( addText )
2327 description += in->summary() + "\n"; 2333 description += in->summary() + "\n";
2328 cal->addIncidence( in ); 2334 cal->addIncidence( in );
2329 incidence = delSel.next(); 2335 incidence = delSel.next();
2330 } 2336 }
2331 if ( beamDialog->beamVcal() ) { 2337 if ( beamDialog->beamVcal() ) {
2332 fn += ".vcs"; 2338 fn += ".vcs";
2333 FileStorage storage( cal, fn, new VCalFormat ); 2339 FileStorage storage( cal, fn, new VCalFormat );
2334 storage.save(); 2340 storage.save();
2335 } else { 2341 } else {
2336 fn += ".ics"; 2342 fn += ".ics";
2337 FileStorage storage( cal, fn, new ICalFormat( ) ); 2343 FileStorage storage( cal, fn, new ICalFormat( ) );
2338 storage.save(); 2344 storage.save();
2339 } 2345 }
2340 delete cal; 2346 delete cal;
2341 mes = i18n("KO/Pi: Ready for beaming"); 2347 mes = i18n("KO/Pi: Ready for beaming");
2342 setCaption(mes); 2348 topLevelWidget()->setCaption(mes);
2343 2349 KApplication::convert2latin1( fn );
2344#ifndef DESKTOP_VERSION 2350#ifndef DESKTOP_VERSION
2345 Ir *ir = new Ir( this ); 2351 Ir *ir = new Ir( this );
2346 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2352 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2347 ir->send( fn, description, "text/x-vCalendar" ); 2353 ir->send( fn, description, "text/x-vCalendar" );
2348#endif 2354#endif
2349 } 2355 }
2350} 2356}
2351void CalendarView::beamDone( Ir *ir ) 2357void CalendarView::beamDone( Ir *ir )
2352{ 2358{
2353#ifndef DESKTOP_VERSION 2359#ifndef DESKTOP_VERSION
2354 delete ir; 2360 delete ir;
2355#endif 2361#endif
2362 topLevelWidget()->setCaption( i18n("KO/Pi: Beaming done.") );
2363 topLevelWidget()->raise();
2356} 2364}
2357 2365
2358void CalendarView::moveIncidence(Incidence * inc ) 2366void CalendarView::moveIncidence(Incidence * inc )
2359{ 2367{
2360 if ( !inc ) return; 2368 if ( !inc ) return;
2361 // qDebug("showDatePickerForIncidence( ) "); 2369 // qDebug("showDatePickerForIncidence( ) ");
2362 if ( mDateFrame->isVisible() ) 2370 if ( mDateFrame->isVisible() )
2363 mDateFrame->hide(); 2371 mDateFrame->hide();
2364 else { 2372 else {
2365 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ; 2373 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ;
2366 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ; 2374 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ;
2367 int dw = QApplication::desktop()->width(); 2375 int dw = QApplication::desktop()->width();
2368 int dh = QApplication::desktop()->height(); 2376 int dh = QApplication::desktop()->height();
2369 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2377 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2370 mDateFrame->show(); 2378 mDateFrame->show();
2371 } 2379 }
2372 mDatePickerMode = 2; 2380 mDatePickerMode = 2;
2373 mMoveIncidence = inc ; 2381 mMoveIncidence = inc ;
2374 QDate da; 2382 QDate da;
2375 if ( mMoveIncidence->type() == "Todo" ) { 2383 if ( mMoveIncidence->type() == "Todo" ) {
2376 Todo * to = (Todo *) mMoveIncidence; 2384 Todo * to = (Todo *) mMoveIncidence;
2377 if ( to->hasDueDate() ) 2385 if ( to->hasDueDate() )
2378 da = to->dtDue().date(); 2386 da = to->dtDue().date();
2379 else 2387 else
2380 da = QDate::currentDate(); 2388 da = QDate::currentDate();
2381 } else { 2389 } else {
2382 da = mMoveIncidence->dtStart().date(); 2390 da = mMoveIncidence->dtStart().date();
2383 } 2391 }
2384 mDatePicker->setDate( da ); 2392 mDatePicker->setDate( da );
2385} 2393}
2386void CalendarView::showDatePicker( ) 2394void CalendarView::showDatePicker( )
2387{ 2395{
2388 //qDebug("CalendarView::showDatePicker( ) "); 2396 //qDebug("CalendarView::showDatePicker( ) ");
2389 if ( mDateFrame->isVisible() ) 2397 if ( mDateFrame->isVisible() )
2390 mDateFrame->hide(); 2398 mDateFrame->hide();
2391 else { 2399 else {
2392 int w =mDatePicker->sizeHint().width() ; 2400 int w =mDatePicker->sizeHint().width() ;
2393 int h = mDatePicker->sizeHint().height() ; 2401 int h = mDatePicker->sizeHint().height() ;
2394 int dw = QApplication::desktop()->width(); 2402 int dw = QApplication::desktop()->width();
2395 int dh = QApplication::desktop()->height(); 2403 int dh = QApplication::desktop()->height();
2396 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2404 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2397 mDateFrame->show(); 2405 mDateFrame->show();
2398 } 2406 }
2399 mDatePickerMode = 1; 2407 mDatePickerMode = 1;
2400 mDatePicker->setDate( mNavigator->selectedDates().first() ); 2408 mDatePicker->setDate( mNavigator->selectedDates().first() );
2401} 2409}
2402 2410
2403void CalendarView::showEventEditor() 2411void CalendarView::showEventEditor()
2404{ 2412{
2405#ifdef DESKTOP_VERSION 2413#ifdef DESKTOP_VERSION
2406 mEventEditor->show(); 2414 mEventEditor->show();
2407#else 2415#else
2408 mEventEditor->showMaximized(); 2416 mEventEditor->showMaximized();
2409#endif 2417#endif
2410} 2418}
2411void CalendarView::showTodoEditor() 2419void CalendarView::showTodoEditor()
2412{ 2420{
2413#ifdef DESKTOP_VERSION 2421#ifdef DESKTOP_VERSION
2414 mTodoEditor->show(); 2422 mTodoEditor->show();
2415#else 2423#else
2416 mTodoEditor->showMaximized(); 2424 mTodoEditor->showMaximized();
2417#endif 2425#endif
2418} 2426}
2419 2427
2420void CalendarView::cloneIncidence() 2428void CalendarView::cloneIncidence()
2421{ 2429{
2422 Incidence *incidence = currentSelection(); 2430 Incidence *incidence = currentSelection();
2423 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2431 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2424 if ( incidence ) { 2432 if ( incidence ) {
2425 cloneIncidence(incidence); 2433 cloneIncidence(incidence);
2426 } 2434 }
2427} 2435}
2428void CalendarView::moveIncidence() 2436void CalendarView::moveIncidence()
2429{ 2437{
2430 Incidence *incidence = currentSelection(); 2438 Incidence *incidence = currentSelection();
2431 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2439 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2432 if ( incidence ) { 2440 if ( incidence ) {
2433 moveIncidence(incidence); 2441 moveIncidence(incidence);
2434 } 2442 }
2435} 2443}
2436void CalendarView::beamIncidence() 2444void CalendarView::beamIncidence()
2437{ 2445{
2438 Incidence *incidence = currentSelection(); 2446 Incidence *incidence = currentSelection();
2439 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2447 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2440 if ( incidence ) { 2448 if ( incidence ) {
2441 beamIncidence(incidence); 2449 beamIncidence(incidence);
2442 } 2450 }
2443} 2451}
2444void CalendarView::toggleCancelIncidence() 2452void CalendarView::toggleCancelIncidence()
2445{ 2453{
2446 Incidence *incidence = currentSelection(); 2454 Incidence *incidence = currentSelection();
2447 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 2455 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
2448 if ( incidence ) { 2456 if ( incidence ) {
2449 cancelIncidence(incidence); 2457 cancelIncidence(incidence);
2450 } 2458 }
2451} 2459}
2452 2460
2453 2461
2454void CalendarView::cancelIncidence(Incidence * inc ) 2462void CalendarView::cancelIncidence(Incidence * inc )
2455{ 2463{
2456 inc->setCancelled( ! inc->cancelled() ); 2464 inc->setCancelled( ! inc->cancelled() );
2457 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED ); 2465 changeIncidenceDisplay( inc,KOGlobals::EVENTEDITED );
2458 updateView(); 2466 updateView();
2459} 2467}
2460void CalendarView::cloneIncidence(Incidence * orgInc ) 2468void CalendarView::cloneIncidence(Incidence * orgInc )
2461{ 2469{
2462 Incidence * newInc = orgInc->clone(); 2470 Incidence * newInc = orgInc->clone();
2463 newInc->recreate(); 2471 newInc->recreate();
2464 2472
2465 if ( newInc->type() == "Todo" ) { 2473 if ( newInc->type() == "Todo" ) {
2466 Todo* t = (Todo*) newInc; 2474 Todo* t = (Todo*) newInc;
2467 mTodoEditor->editTodo( t ); 2475 mTodoEditor->editTodo( t );
2468 showTodoEditor(); 2476 showTodoEditor();
2469 if ( mTodoEditor->exec() ) { 2477 if ( mTodoEditor->exec() ) {
2470 mCalendar->addTodo( t ); 2478 mCalendar->addTodo( t );
2471 updateView(); 2479 updateView();
2472 } else { 2480 } else {
2473 delete t; 2481 delete t;
2474 } 2482 }
2475 } 2483 }
2476 else { 2484 else {
2477 Event* e = (Event*) newInc; 2485 Event* e = (Event*) newInc;
2478 mEventEditor->editEvent( e ); 2486 mEventEditor->editEvent( e );
2479 showEventEditor(); 2487 showEventEditor();
2480 if ( mEventEditor->exec() ) { 2488 if ( mEventEditor->exec() ) {
2481 mCalendar->addEvent( e ); 2489 mCalendar->addEvent( e );
2482 updateView(); 2490 updateView();
2483 } else { 2491 } else {
2484 delete e; 2492 delete e;
2485 } 2493 }
2486 } 2494 }
2487} 2495}
2488 2496
2489void CalendarView::newEvent() 2497void CalendarView::newEvent()
2490{ 2498{
2491 // TODO: Replace this code by a common eventDurationHint of KOBaseView. 2499 // TODO: Replace this code by a common eventDurationHint of KOBaseView.
2492 KOAgendaView *aView = mViewManager->agendaView(); 2500 KOAgendaView *aView = mViewManager->agendaView();
2493 if (aView) { 2501 if (aView) {
2494 if (aView->selectionStart().isValid()) { 2502 if (aView->selectionStart().isValid()) {
2495 if (aView->selectedIsAllDay()) { 2503 if (aView->selectedIsAllDay()) {
2496 newEvent(aView->selectionStart(),aView->selectionEnd(),true); 2504 newEvent(aView->selectionStart(),aView->selectionEnd(),true);
2497 } else { 2505 } else {
2498 newEvent(aView->selectionStart(),aView->selectionEnd()); 2506 newEvent(aView->selectionStart(),aView->selectionEnd());
2499 } 2507 }
2500 return; 2508 return;
2501 } 2509 }
2502 } 2510 }
2503 2511
2504 QDate date = mNavigator->selectedDates().first(); 2512 QDate date = mNavigator->selectedDates().first();
2505 QDateTime current = QDateTime::currentDateTime(); 2513 QDateTime current = QDateTime::currentDateTime();
2506 if ( date <= current.date() ) { 2514 if ( date <= current.date() ) {
2507 int hour = current.time().hour() +1; 2515 int hour = current.time().hour() +1;
2508 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ), 2516 newEvent( QDateTime( current.date(), QTime( hour, 0, 0 ) ),
2509 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2517 QDateTime( current.date(), QTime( hour+ KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2510 } else 2518 } else
2511 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ), 2519 newEvent( QDateTime( date, QTime( KOPrefs::instance()->mStartTime, 0, 0 ) ),
2512 QDateTime( date, QTime( KOPrefs::instance()->mStartTime + 2520 QDateTime( date, QTime( KOPrefs::instance()->mStartTime +
2513 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) ); 2521 KOPrefs::instance()->mDefaultDuration, 0, 0 ) ) );
2514} 2522}
2515 2523
2516void CalendarView::newEvent(QDateTime fh) 2524void CalendarView::newEvent(QDateTime fh)
2517{ 2525{
2518 newEvent(fh, 2526 newEvent(fh,
2519 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration))); 2527 QDateTime(fh.addSecs(3600*KOPrefs::instance()->mDefaultDuration)));
2520} 2528}
2521 2529
2522void CalendarView::newEvent(QDate dt) 2530void CalendarView::newEvent(QDate dt)
2523{ 2531{
2524 newEvent(QDateTime(dt, QTime(0,0,0)), 2532 newEvent(QDateTime(dt, QTime(0,0,0)),
2525 QDateTime(dt, QTime(0,0,0)), true); 2533 QDateTime(dt, QTime(0,0,0)), true);
2526} 2534}
2527 2535
2528void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay) 2536void CalendarView::newEvent(QDateTime fromHint, QDateTime toHint, bool allDay)
2529{ 2537{
2530 2538
2531 mEventEditor->newEvent(fromHint,toHint,allDay); 2539 mEventEditor->newEvent(fromHint,toHint,allDay);
2532 if ( mFilterView->filtersEnabled() ) { 2540 if ( mFilterView->filtersEnabled() ) {
2533 CalFilter *filter = mFilterView->selectedFilter(); 2541 CalFilter *filter = mFilterView->selectedFilter();
2534 if (filter && filter->showCategories()) { 2542 if (filter && filter->showCategories()) {
2535 mEventEditor->setCategories(filter->categoryList().join(",") ); 2543 mEventEditor->setCategories(filter->categoryList().join(",") );
2536 } 2544 }
2537 if ( filter ) 2545 if ( filter )
2538 mEventEditor->setSecrecy( filter->getSecrecy() ); 2546 mEventEditor->setSecrecy( filter->getSecrecy() );
2539 } 2547 }
2540 showEventEditor(); 2548 showEventEditor();
2541} 2549}
2542void CalendarView::todoAdded(Todo * t) 2550void CalendarView::todoAdded(Todo * t)
2543{ 2551{
2544 2552
2545 changeTodoDisplay ( t ,KOGlobals::EVENTADDED); 2553 changeTodoDisplay ( t ,KOGlobals::EVENTADDED);
2546 updateTodoViews(); 2554 updateTodoViews();
2547} 2555}
2548void CalendarView::todoChanged(Todo * t) 2556void CalendarView::todoChanged(Todo * t)
2549{ 2557{
2550 emit todoModified( t, 4 ); 2558 emit todoModified( t, 4 );
2551 // updateTodoViews(); 2559 // updateTodoViews();
2552} 2560}
2553void CalendarView::todoToBeDeleted(Todo *) 2561void CalendarView::todoToBeDeleted(Todo *)
2554{ 2562{
2555 //qDebug("todoToBeDeleted(Todo *) "); 2563 //qDebug("todoToBeDeleted(Todo *) ");
2556 updateTodoViews(); 2564 updateTodoViews();
2557} 2565}
2558void CalendarView::todoDeleted() 2566void CalendarView::todoDeleted()
2559{ 2567{
2560 //qDebug(" todoDeleted()"); 2568 //qDebug(" todoDeleted()");
2561 updateTodoViews(); 2569 updateTodoViews();
2562} 2570}
2563 2571
2564 2572
2565 2573
2566void CalendarView::newTodo() 2574void CalendarView::newTodo()
2567{ 2575{
2568 2576
2569 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true); 2577 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),0,true);
2570 if ( mFilterView->filtersEnabled() ) { 2578 if ( mFilterView->filtersEnabled() ) {
2571 CalFilter *filter = mFilterView->selectedFilter(); 2579 CalFilter *filter = mFilterView->selectedFilter();
2572 if (filter && filter->showCategories()) { 2580 if (filter && filter->showCategories()) {
2573 mTodoEditor->setCategories(filter->categoryList().join(",") ); 2581 mTodoEditor->setCategories(filter->categoryList().join(",") );
2574 } 2582 }
2575 if ( filter ) 2583 if ( filter )
2576 mTodoEditor->setSecrecy( filter->getSecrecy() ); 2584 mTodoEditor->setSecrecy( filter->getSecrecy() );
2577 } 2585 }
2578 showTodoEditor(); 2586 showTodoEditor();
2579} 2587}
2580 2588
2581void CalendarView::newSubTodo() 2589void CalendarView::newSubTodo()
2582{ 2590{
2583 Todo *todo = selectedTodo(); 2591 Todo *todo = selectedTodo();
2584 if ( todo ) newSubTodo( todo ); 2592 if ( todo ) newSubTodo( todo );
2585} 2593}
2586 2594
2587void CalendarView::newSubTodo(Todo *parentEvent) 2595void CalendarView::newSubTodo(Todo *parentEvent)
2588{ 2596{
2589 2597
2590 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true); 2598 mTodoEditor->newTodo(QDateTime::currentDateTime().addDays(7),parentEvent,true);
2591 showTodoEditor(); 2599 showTodoEditor();
2592} 2600}
2593 2601
2594void CalendarView::newFloatingEvent() 2602void CalendarView::newFloatingEvent()
2595{ 2603{
2596 DateList tmpList = mNavigator->selectedDates(); 2604 DateList tmpList = mNavigator->selectedDates();
2597 QDate date = tmpList.first(); 2605 QDate date = tmpList.first();
2598 2606
2599 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ), 2607 newEvent( QDateTime( date, QTime( 12, 0, 0 ) ),
2600 QDateTime( date, QTime( 12, 0, 0 ) ), true ); 2608 QDateTime( date, QTime( 12, 0, 0 ) ), true );
2601} 2609}
2602 2610
2603 2611
2604void CalendarView::editEvent( Event *event ) 2612void CalendarView::editEvent( Event *event )
2605{ 2613{
2606 2614
2607 if ( !event ) return; 2615 if ( !event ) return;
2608 if ( event->isReadOnly() ) { 2616 if ( event->isReadOnly() ) {
2609 showEvent( event ); 2617 showEvent( event );
2610 return; 2618 return;
2611 } 2619 }
2612 mEventEditor->editEvent( event , mFlagEditDescription); 2620 mEventEditor->editEvent( event , mFlagEditDescription);
2613 showEventEditor(); 2621 showEventEditor();
2614} 2622}
2615void CalendarView::editJournal( Journal *jour ) 2623void CalendarView::editJournal( Journal *jour )
2616{ 2624{
2617 if ( !jour ) return; 2625 if ( !jour ) return;
2618 mDialogManager->hideSearchDialog(); 2626 mDialogManager->hideSearchDialog();
2619 mViewManager->showJournalView(); 2627 mViewManager->showJournalView();
2620 mNavigator->slotDaySelect( jour->dtStart().date() ); 2628 mNavigator->slotDaySelect( jour->dtStart().date() );
2621} 2629}
2622void CalendarView::editTodo( Todo *todo ) 2630void CalendarView::editTodo( Todo *todo )
2623{ 2631{
2624 if ( !todo ) return; 2632 if ( !todo ) return;
2625 2633
2626 if ( todo->isReadOnly() ) { 2634 if ( todo->isReadOnly() ) {
2627 showTodo( todo ); 2635 showTodo( todo );
2628 return; 2636 return;
2629 } 2637 }
2630 mTodoEditor->editTodo( todo ,mFlagEditDescription); 2638 mTodoEditor->editTodo( todo ,mFlagEditDescription);
2631 showTodoEditor(); 2639 showTodoEditor();
2632 2640
2633} 2641}
2634 2642
2635KOEventViewerDialog* CalendarView::getEventViewerDialog() 2643KOEventViewerDialog* CalendarView::getEventViewerDialog()
2636{ 2644{
2637 if ( !mEventViewerDialog ) { 2645 if ( !mEventViewerDialog ) {
2638 mEventViewerDialog = new KOEventViewerDialog(this); 2646 mEventViewerDialog = new KOEventViewerDialog(this);
2639 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) ); 2647 connect( mEventViewerDialog, SIGNAL( editIncidence( Incidence* )), this, SLOT(editIncidence( Incidence* ) ) );
2640 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig())); 2648 connect( this, SIGNAL(configChanged()), mEventViewerDialog, SLOT(updateConfig()));
2641 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)), 2649 connect( mEventViewerDialog, SIGNAL(jumpToTime( const QDate &)),
2642 dateNavigator(), SLOT( selectWeek( const QDate & ) ) ); 2650 dateNavigator(), SLOT( selectWeek( const QDate & ) ) );
2643 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ), 2651 connect( mEventViewerDialog, SIGNAL(showAgendaView( bool ) ),
2644 viewManager(), SLOT( showAgendaView( bool ) ) ); 2652 viewManager(), SLOT( showAgendaView( bool ) ) );
2645 mEventViewerDialog->resize( 640, 480 ); 2653 mEventViewerDialog->resize( 640, 480 );
2646 2654
2647 } 2655 }
2648 return mEventViewerDialog; 2656 return mEventViewerDialog;
2649} 2657}
2650void CalendarView::showEvent(Event *event) 2658void CalendarView::showEvent(Event *event)
2651{ 2659{
2652 getEventViewerDialog()->setEvent(event); 2660 getEventViewerDialog()->setEvent(event);
2653 getEventViewerDialog()->showMe(); 2661 getEventViewerDialog()->showMe();
2654} 2662}
2655 2663
2656void CalendarView::showTodo(Todo *event) 2664void CalendarView::showTodo(Todo *event)
2657{ 2665{
2658 getEventViewerDialog()->setTodo(event); 2666 getEventViewerDialog()->setTodo(event);
2659 getEventViewerDialog()->showMe(); 2667 getEventViewerDialog()->showMe();
2660} 2668}
2661void CalendarView::showJournal( Journal *jour ) 2669void CalendarView::showJournal( Journal *jour )
2662{ 2670{
2663 getEventViewerDialog()->setJournal(jour); 2671 getEventViewerDialog()->setJournal(jour);
2664 getEventViewerDialog()->showMe(); 2672 getEventViewerDialog()->showMe();
2665 2673
2666} 2674}
2667// void CalendarView::todoModified (Todo *event, int changed) 2675// void CalendarView::todoModified (Todo *event, int changed)
2668// { 2676// {
2669// // if (mDialogList.find (event) != mDialogList.end ()) { 2677// // if (mDialogList.find (event) != mDialogList.end ()) {
2670// // kdDebug() << "Todo modified and open" << endl; 2678// // kdDebug() << "Todo modified and open" << endl;
2671// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event]; 2679// // KOTodoEditor* temp = (KOTodoEditor *) mDialogList[event];
2672// // temp->modified (changed); 2680// // temp->modified (changed);
2673 2681
2674// // } 2682// // }
2675 2683
2676// mViewManager->updateView(); 2684// mViewManager->updateView();
2677// } 2685// }
2678 2686
2679void CalendarView::appointment_show() 2687void CalendarView::appointment_show()
2680{ 2688{
2681 Event *anEvent = 0; 2689 Event *anEvent = 0;
2682 2690
2683 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2691 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2684 2692
2685 if (mViewManager->currentView()->isEventView()) { 2693 if (mViewManager->currentView()->isEventView()) {
2686 if ( incidence && incidence->type() == "Event" ) { 2694 if ( incidence && incidence->type() == "Event" ) {
2687 anEvent = static_cast<Event *>(incidence); 2695 anEvent = static_cast<Event *>(incidence);
2688 } 2696 }
2689 } 2697 }
2690 2698
2691 if (!anEvent) { 2699 if (!anEvent) {
2692 KNotifyClient::beep(); 2700 KNotifyClient::beep();
2693 return; 2701 return;
2694 } 2702 }
2695 2703
2696 showEvent(anEvent); 2704 showEvent(anEvent);
2697} 2705}
2698 2706
2699void CalendarView::appointment_edit() 2707void CalendarView::appointment_edit()
2700{ 2708{
2701 Event *anEvent = 0; 2709 Event *anEvent = 0;
2702 2710
2703 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2711 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2704 2712
2705 if (mViewManager->currentView()->isEventView()) { 2713 if (mViewManager->currentView()->isEventView()) {
2706 if ( incidence && incidence->type() == "Event" ) { 2714 if ( incidence && incidence->type() == "Event" ) {
2707 anEvent = static_cast<Event *>(incidence); 2715 anEvent = static_cast<Event *>(incidence);
2708 } 2716 }
2709 } 2717 }
2710 2718
2711 if (!anEvent) { 2719 if (!anEvent) {
2712 KNotifyClient::beep(); 2720 KNotifyClient::beep();
2713 return; 2721 return;
2714 } 2722 }
2715 2723
2716 editEvent(anEvent); 2724 editEvent(anEvent);
2717} 2725}
2718 2726
2719void CalendarView::appointment_delete() 2727void CalendarView::appointment_delete()
2720{ 2728{
2721 Event *anEvent = 0; 2729 Event *anEvent = 0;
2722 2730
2723 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2731 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2724 2732
2725 if (mViewManager->currentView()->isEventView()) { 2733 if (mViewManager->currentView()->isEventView()) {
2726 if ( incidence && incidence->type() == "Event" ) { 2734 if ( incidence && incidence->type() == "Event" ) {
2727 anEvent = static_cast<Event *>(incidence); 2735 anEvent = static_cast<Event *>(incidence);
2728 } 2736 }
2729 } 2737 }
2730 2738
2731 if (!anEvent) { 2739 if (!anEvent) {
2732 KNotifyClient::beep(); 2740 KNotifyClient::beep();
2733 return; 2741 return;
2734 } 2742 }
2735 2743
2736 deleteEvent(anEvent); 2744 deleteEvent(anEvent);
2737} 2745}
2738 2746
2739void CalendarView::todo_unsub(Todo *anTodo ) 2747void CalendarView::todo_unsub(Todo *anTodo )
2740{ 2748{
2741 // Todo *anTodo = selectedTodo(); 2749 // Todo *anTodo = selectedTodo();
2742 if (!anTodo) return; 2750 if (!anTodo) return;
2743 if (!anTodo->relatedTo()) return; 2751 if (!anTodo->relatedTo()) return;
2744 anTodo->relatedTo()->removeRelation(anTodo); 2752 anTodo->relatedTo()->removeRelation(anTodo);
2745 anTodo->setRelatedTo(0); 2753 anTodo->setRelatedTo(0);
2746 anTodo->updated(); 2754 anTodo->updated();
2747 anTodo->setRelatedToUid(""); 2755 anTodo->setRelatedToUid("");
2748 setModified(true); 2756 setModified(true);
2749 updateView(); 2757 updateView();
2750} 2758}
2751 2759
2752void CalendarView::deleteTodo(Todo *todo) 2760void CalendarView::deleteTodo(Todo *todo)
2753{ 2761{
2754 if (!todo) { 2762 if (!todo) {
2755 KNotifyClient::beep(); 2763 KNotifyClient::beep();
2756 return; 2764 return;
2757 } 2765 }
2758 if (KOPrefs::instance()->mConfirm) { 2766 if (KOPrefs::instance()->mConfirm) {
2759 switch (msgItemDelete()) { 2767 switch (msgItemDelete()) {
2760 case KMessageBox::Continue: // OK 2768 case KMessageBox::Continue: // OK
2761 if (!todo->relations().isEmpty()) { 2769 if (!todo->relations().isEmpty()) {
2762 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2770 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2763 i18n("Delete To-Do")); 2771 i18n("Delete To-Do"));
2764 } else { 2772 } else {
2765 checkExternalId( todo ); 2773 checkExternalId( todo );
2766 calendar()->deleteTodo(todo); 2774 calendar()->deleteTodo(todo);
2767 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2775 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2768 updateView(); 2776 updateView();
2769 } 2777 }
2770 break; 2778 break;
2771 } // switch 2779 } // switch
2772 } else { 2780 } else {
2773 if (!todo->relations().isEmpty()) { 2781 if (!todo->relations().isEmpty()) {
2774 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."), 2782 KMessageBox::sorry(this,i18n("Cannot delete To-Do\nwhich has children."),
2775 i18n("Delete To-Do")); 2783 i18n("Delete To-Do"));
2776 } else { 2784 } else {
2777 checkExternalId( todo ); 2785 checkExternalId( todo );
2778 mCalendar->deleteTodo(todo); 2786 mCalendar->deleteTodo(todo);
2779 changeTodoDisplay( todo,KOGlobals::EVENTDELETED ); 2787 changeTodoDisplay( todo,KOGlobals::EVENTDELETED );
2780 updateView(); 2788 updateView();
2781 } 2789 }
2782 } 2790 }
2783 emit updateSearchDialog(); 2791 emit updateSearchDialog();
2784} 2792}
2785void CalendarView::deleteJournal(Journal *jour) 2793void CalendarView::deleteJournal(Journal *jour)
2786{ 2794{
2787 if (!jour) { 2795 if (!jour) {
2788 KNotifyClient::beep(); 2796 KNotifyClient::beep();
2789 return; 2797 return;
2790 } 2798 }
2791 if (KOPrefs::instance()->mConfirm) { 2799 if (KOPrefs::instance()->mConfirm) {
2792 switch (msgItemDelete()) { 2800 switch (msgItemDelete()) {
2793 case KMessageBox::Continue: // OK 2801 case KMessageBox::Continue: // OK
2794 calendar()->deleteJournal(jour); 2802 calendar()->deleteJournal(jour);
2795 updateView(); 2803 updateView();
2796 break; 2804 break;
2797 } // switch 2805 } // switch
2798 } else { 2806 } else {
2799 calendar()->deleteJournal(jour);; 2807 calendar()->deleteJournal(jour);;
2800 updateView(); 2808 updateView();
2801 } 2809 }
2802 emit updateSearchDialog(); 2810 emit updateSearchDialog();
2803} 2811}
2804 2812
2805void CalendarView::deleteEvent(Event *anEvent) 2813void CalendarView::deleteEvent(Event *anEvent)
2806{ 2814{
2807 if (!anEvent) { 2815 if (!anEvent) {
2808 KNotifyClient::beep(); 2816 KNotifyClient::beep();
2809 return; 2817 return;
2810 } 2818 }
2811 2819
2812 if (anEvent->recurrence()->doesRecur()) { 2820 if (anEvent->recurrence()->doesRecur()) {
2813 QDate itemDate = mViewManager->currentSelectionDate(); 2821 QDate itemDate = mViewManager->currentSelectionDate();
2814 int km; 2822 int km;
2815 if (!itemDate.isValid()) { 2823 if (!itemDate.isValid()) {
2816 //kdDebug() << "Date Not Valid" << endl; 2824 //kdDebug() << "Date Not Valid" << endl;
2817 if (KOPrefs::instance()->mConfirm) { 2825 if (KOPrefs::instance()->mConfirm) {
2818 km = KMessageBox::warningContinueCancel(this,anEvent->summary() + 2826 km = KMessageBox::warningContinueCancel(this,anEvent->summary() +
2819 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), 2827 i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"),
2820 i18n("KO/Pi Confirmation"),i18n("Delete All")); 2828 i18n("KO/Pi Confirmation"),i18n("Delete All"));
2821 if ( km == KMessageBox::Continue ) 2829 if ( km == KMessageBox::Continue )
2822 km = KMessageBox::No; // No = all below 2830 km = KMessageBox::No; // No = all below
2823 } else 2831 } else
2824 km = KMessageBox::No; 2832 km = KMessageBox::No;
2825 } else { 2833 } else {
2826 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + 2834 km = KMessageBox::warningYesNoCancel(this,anEvent->summary() +
2827 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ 2835 i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+
2828 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"), 2836 KGlobal::locale()->formatDate(itemDate)+i18n(" ?\n\nDelete:\n"),
2829 i18n("KO/Pi Confirmation"),i18n("Current"), 2837 i18n("KO/Pi Confirmation"),i18n("Current"),
2830 i18n("All")); 2838 i18n("All"));
2831 } 2839 }
2832 switch(km) { 2840 switch(km) {
2833 2841
2834 case KMessageBox::No: // Continue // all 2842 case KMessageBox::No: // Continue // all
2835 //qDebug("KMessageBox::No "); 2843 //qDebug("KMessageBox::No ");
2836 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2844 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2837 schedule(Scheduler::Cancel,anEvent); 2845 schedule(Scheduler::Cancel,anEvent);
2838 2846
2839 checkExternalId( anEvent); 2847 checkExternalId( anEvent);
2840 mCalendar->deleteEvent(anEvent); 2848 mCalendar->deleteEvent(anEvent);
2841 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED); 2849 changeEventDisplay(anEvent,KOGlobals::EVENTDELETED);
2842 break; 2850 break;
2843 2851
2844 // Disabled because it does not work 2852 // Disabled because it does not work
2845 //#if 0 2853 //#if 0
2846 case KMessageBox::Yes: // just this one 2854 case KMessageBox::Yes: // just this one
2847 //QDate qd = mNavigator->selectedDates().first(); 2855 //QDate qd = mNavigator->selectedDates().first();
2848 //if (!qd.isValid()) { 2856 //if (!qd.isValid()) {
2849 // kdDebug() << "no date selected, or invalid date" << endl; 2857 // kdDebug() << "no date selected, or invalid date" << endl;
2850 // KNotifyClient::beep(); 2858 // KNotifyClient::beep();
2851 // return; 2859 // return;
2852 //} 2860 //}
2853 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1); 2861 //while (!anEvent->recursOn(qd)) qd = qd.addDays(1);
2854 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) { 2862 if (itemDate!=QDate(1,1,1) || itemDate.isValid()) {
2855 anEvent->addExDate(itemDate); 2863 anEvent->addExDate(itemDate);
2856 int duration = anEvent->recurrence()->duration(); 2864 int duration = anEvent->recurrence()->duration();
2857 if ( duration > 0 ) { 2865 if ( duration > 0 ) {
2858 anEvent->recurrence()->setDuration( duration - 1 ); 2866 anEvent->recurrence()->setDuration( duration - 1 );
2859 } 2867 }
2860 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED); 2868 changeEventDisplay(anEvent, KOGlobals::EVENTEDITED);
2861 } 2869 }
2862 break; 2870 break;
2863 //#endif 2871 //#endif
2864 } // switch 2872 } // switch
2865 } else { 2873 } else {
2866 if (KOPrefs::instance()->mConfirm) { 2874 if (KOPrefs::instance()->mConfirm) {
2867 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + 2875 switch (KMessageBox::warningContinueCancel(this,anEvent->summary() +
2868 i18n("\nAre you sure you want\nto delete this event?"), 2876 i18n("\nAre you sure you want\nto delete this event?"),
2869 i18n("KO/Pi Confirmation"),i18n("Delete"))) { 2877 i18n("KO/Pi Confirmation"),i18n("Delete"))) {
2870 case KMessageBox::Continue: // OK 2878 case KMessageBox::Continue: // OK
2871 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2879 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2872 schedule(Scheduler::Cancel,anEvent); 2880 schedule(Scheduler::Cancel,anEvent);
2873 checkExternalId( anEvent); 2881 checkExternalId( anEvent);
2874 mCalendar->deleteEvent(anEvent); 2882 mCalendar->deleteEvent(anEvent);
2875 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2883 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2876 break; 2884 break;
2877 } // switch 2885 } // switch
2878 } else { 2886 } else {
2879 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0) 2887 if (anEvent->organizer()==KOPrefs::instance()->email() && anEvent->attendeeCount()>0)
2880 schedule(Scheduler::Cancel,anEvent); 2888 schedule(Scheduler::Cancel,anEvent);
2881 checkExternalId( anEvent); 2889 checkExternalId( anEvent);
2882 mCalendar->deleteEvent(anEvent); 2890 mCalendar->deleteEvent(anEvent);
2883 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2891 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2884 } 2892 }
2885 } // if-else 2893 } // if-else
2886 emit updateSearchDialog(); 2894 emit updateSearchDialog();
2887} 2895}
2888 2896
2889bool CalendarView::deleteEvent(const QString &uid) 2897bool CalendarView::deleteEvent(const QString &uid)
2890{ 2898{
2891 Event *ev = mCalendar->event(uid); 2899 Event *ev = mCalendar->event(uid);
2892 if (ev) { 2900 if (ev) {
2893 deleteEvent(ev); 2901 deleteEvent(ev);
2894 return true; 2902 return true;
2895 } else { 2903 } else {
2896 return false; 2904 return false;
2897 } 2905 }
2898} 2906}
2899 2907
2900/*****************************************************************************/ 2908/*****************************************************************************/
2901 2909
2902void CalendarView::action_mail() 2910void CalendarView::action_mail()
2903{ 2911{
2904#ifndef KORG_NOMAIL 2912#ifndef KORG_NOMAIL
2905 KOMailClient mailClient; 2913 KOMailClient mailClient;
2906 2914
2907 Incidence *incidence = currentSelection(); 2915 Incidence *incidence = currentSelection();
2908 2916
2909 if (!incidence) { 2917 if (!incidence) {
2910 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2918 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2911 return; 2919 return;
2912 } 2920 }
2913 if(incidence->attendeeCount() == 0 ) { 2921 if(incidence->attendeeCount() == 0 ) {
2914 KMessageBox::sorry(this, 2922 KMessageBox::sorry(this,
2915 i18n("Can't generate mail:\nNo attendees defined.\n")); 2923 i18n("Can't generate mail:\nNo attendees defined.\n"));
2916 return; 2924 return;
2917 } 2925 }
2918 2926
2919 CalendarLocal cal_tmp; 2927 CalendarLocal cal_tmp;
2920 Event *event = 0; 2928 Event *event = 0;
2921 Event *ev = 0; 2929 Event *ev = 0;
2922 if ( incidence && incidence->type() == "Event" ) { 2930 if ( incidence && incidence->type() == "Event" ) {
2923 event = static_cast<Event *>(incidence); 2931 event = static_cast<Event *>(incidence);
2924 ev = new Event(*event); 2932 ev = new Event(*event);
2925 cal_tmp.addEvent(ev); 2933 cal_tmp.addEvent(ev);
2926 } 2934 }
2927 ICalFormat mForm(); 2935 ICalFormat mForm();
2928 QString attachment = mForm.toString( &cal_tmp ); 2936 QString attachment = mForm.toString( &cal_tmp );
2929 if (ev) delete(ev); 2937 if (ev) delete(ev);
2930 2938
2931 mailClient.mailAttendees(currentSelection(), attachment); 2939 mailClient.mailAttendees(currentSelection(), attachment);
2932 2940
2933#endif 2941#endif
2934 2942
2935#if 0 2943#if 0
2936 Event *anEvent = 0; 2944 Event *anEvent = 0;
2937 if (mViewManager->currentView()->isEventView()) { 2945 if (mViewManager->currentView()->isEventView()) {
2938 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first()); 2946 anEvent = dynamic_cast<Event *>((mViewManager->currentView()->selectedIncidences()).first());
2939 } 2947 }
2940 2948
2941 if (!anEvent) { 2949 if (!anEvent) {
2942 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected.")); 2950 KMessageBox::sorry(this,i18n("Can't generate mail:\nNo event selected."));
2943 return; 2951 return;
2944 } 2952 }
2945 if(anEvent->attendeeCount() == 0 ) { 2953 if(anEvent->attendeeCount() == 0 ) {
2946 KMessageBox::sorry(this, 2954 KMessageBox::sorry(this,
2947 i18n("Can't generate mail:\nNo attendees defined.\n")); 2955 i18n("Can't generate mail:\nNo attendees defined.\n"));
2948 return; 2956 return;
2949 } 2957 }
2950 2958
2951 mailobject.emailEvent(anEvent); 2959 mailobject.emailEvent(anEvent);
2952#endif 2960#endif
2953} 2961}
2954 2962
2955 2963
2956void CalendarView::schedule_publish(Incidence *incidence) 2964void CalendarView::schedule_publish(Incidence *incidence)
2957{ 2965{
2958 Event *event = 0; 2966 Event *event = 0;
2959 Todo *todo = 0; 2967 Todo *todo = 0;
2960 2968
2961 if (incidence == 0) { 2969 if (incidence == 0) {
2962 incidence = mViewManager->currentView()->selectedIncidences().first(); 2970 incidence = mViewManager->currentView()->selectedIncidences().first();
2963 if (incidence == 0) { 2971 if (incidence == 0) {
2964 incidence = mTodoList->selectedIncidences().first(); 2972 incidence = mTodoList->selectedIncidences().first();
2965 } 2973 }
2966 } 2974 }
2967 if ( incidence && incidence->type() == "Event" ) { 2975 if ( incidence && incidence->type() == "Event" ) {
2968 event = static_cast<Event *>(incidence); 2976 event = static_cast<Event *>(incidence);
2969 } else { 2977 } else {
2970 if ( incidence && incidence->type() == "Todo" ) { 2978 if ( incidence && incidence->type() == "Todo" ) {
2971 todo = static_cast<Todo *>(incidence); 2979 todo = static_cast<Todo *>(incidence);
2972 } 2980 }
2973 } 2981 }
2974 2982
2975 if (!event && !todo) { 2983 if (!event && !todo) {
2976 KMessageBox::sorry(this,i18n("No event selected.")); 2984 KMessageBox::sorry(this,i18n("No event selected."));
2977 return; 2985 return;
2978 } 2986 }
2979 2987
2980 PublishDialog *publishdlg = new PublishDialog(); 2988 PublishDialog *publishdlg = new PublishDialog();
2981 if (incidence->attendeeCount()>0) { 2989 if (incidence->attendeeCount()>0) {
2982 QPtrList<Attendee> attendees = incidence->attendees(); 2990 QPtrList<Attendee> attendees = incidence->attendees();
2983 attendees.first(); 2991 attendees.first();
2984 while ( attendees.current()!=0 ) { 2992 while ( attendees.current()!=0 ) {
2985 publishdlg->addAttendee(attendees.current()); 2993 publishdlg->addAttendee(attendees.current());
2986 attendees.next(); 2994 attendees.next();
2987 } 2995 }
2988 } 2996 }
2989 bool send = true; 2997 bool send = true;
2990 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) { 2998 if ( KOPrefs::instance()->mMailClient == KOPrefs::MailClientSendmail ) {
2991 if ( publishdlg->exec() != QDialog::Accepted ) 2999 if ( publishdlg->exec() != QDialog::Accepted )
2992 send = false; 3000 send = false;
2993 } 3001 }
2994 if ( send ) { 3002 if ( send ) {
2995 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3003 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
2996 if ( event ) { 3004 if ( event ) {
2997 Event *ev = new Event(*event); 3005 Event *ev = new Event(*event);
2998 ev->registerObserver(0); 3006 ev->registerObserver(0);
2999 ev->clearAttendees(); 3007 ev->clearAttendees();
3000 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3008 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3001 delete(ev); 3009 delete(ev);
3002 } 3010 }
3003 } else { 3011 } else {
3004 if ( todo ) { 3012 if ( todo ) {
3005 Todo *ev = new Todo(*todo); 3013 Todo *ev = new Todo(*todo);
3006 ev->registerObserver(0); 3014 ev->registerObserver(0);
3007 ev->clearAttendees(); 3015 ev->clearAttendees();
3008 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) { 3016 if (!dlg->addMessage(ev,Scheduler::Publish,publishdlg->addresses())) {
3009 delete(ev); 3017 delete(ev);
3010 } 3018 }
3011 } 3019 }
3012 } 3020 }
3013 } 3021 }
3014 delete publishdlg; 3022 delete publishdlg;
3015} 3023}
3016 3024
3017void CalendarView::schedule_request(Incidence *incidence) 3025void CalendarView::schedule_request(Incidence *incidence)
3018{ 3026{
3019 schedule(Scheduler::Request,incidence); 3027 schedule(Scheduler::Request,incidence);
3020} 3028}
3021 3029
3022void CalendarView::schedule_refresh(Incidence *incidence) 3030void CalendarView::schedule_refresh(Incidence *incidence)
3023{ 3031{
3024 schedule(Scheduler::Refresh,incidence); 3032 schedule(Scheduler::Refresh,incidence);
3025} 3033}
3026 3034
3027void CalendarView::schedule_cancel(Incidence *incidence) 3035void CalendarView::schedule_cancel(Incidence *incidence)
3028{ 3036{
3029 schedule(Scheduler::Cancel,incidence); 3037 schedule(Scheduler::Cancel,incidence);
3030} 3038}
3031 3039
3032void CalendarView::schedule_add(Incidence *incidence) 3040void CalendarView::schedule_add(Incidence *incidence)
3033{ 3041{
3034 schedule(Scheduler::Add,incidence); 3042 schedule(Scheduler::Add,incidence);
3035} 3043}
3036 3044
3037void CalendarView::schedule_reply(Incidence *incidence) 3045void CalendarView::schedule_reply(Incidence *incidence)
3038{ 3046{
3039 schedule(Scheduler::Reply,incidence); 3047 schedule(Scheduler::Reply,incidence);
3040} 3048}
3041 3049
3042void CalendarView::schedule_counter(Incidence *incidence) 3050void CalendarView::schedule_counter(Incidence *incidence)
3043{ 3051{
3044 schedule(Scheduler::Counter,incidence); 3052 schedule(Scheduler::Counter,incidence);
3045} 3053}
3046 3054
3047void CalendarView::schedule_declinecounter(Incidence *incidence) 3055void CalendarView::schedule_declinecounter(Incidence *incidence)
3048{ 3056{
3049 schedule(Scheduler::Declinecounter,incidence); 3057 schedule(Scheduler::Declinecounter,incidence);
3050} 3058}
3051 3059
3052void CalendarView::schedule_publish_freebusy(int daysToPublish) 3060void CalendarView::schedule_publish_freebusy(int daysToPublish)
3053{ 3061{
3054 QDateTime start = QDateTime::currentDateTime(); 3062 QDateTime start = QDateTime::currentDateTime();
3055 QDateTime end = start.addDays(daysToPublish); 3063 QDateTime end = start.addDays(daysToPublish);
3056 3064
3057 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end); 3065 FreeBusy *freebusy = new FreeBusy(mCalendar, start, end);
3058 freebusy->setOrganizer(KOPrefs::instance()->email()); 3066 freebusy->setOrganizer(KOPrefs::instance()->email());
3059 3067
3060 3068
3061 PublishDialog *publishdlg = new PublishDialog(); 3069 PublishDialog *publishdlg = new PublishDialog();
3062 if ( publishdlg->exec() == QDialog::Accepted ) { 3070 if ( publishdlg->exec() == QDialog::Accepted ) {
3063 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3071 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3064 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) { 3072 if (!dlg->addMessage(freebusy,Scheduler::Publish,publishdlg->addresses())) {
3065 delete(freebusy); 3073 delete(freebusy);
3066 } 3074 }
3067 } 3075 }
3068 delete publishdlg; 3076 delete publishdlg;
3069} 3077}
3070 3078
3071void CalendarView::schedule(Scheduler::Method method, Incidence *incidence) 3079void CalendarView::schedule(Scheduler::Method method, Incidence *incidence)
3072{ 3080{
3073 Event *event = 0; 3081 Event *event = 0;
3074 Todo *todo = 0; 3082 Todo *todo = 0;
3075 3083
3076 if (incidence == 0) { 3084 if (incidence == 0) {
3077 incidence = mViewManager->currentView()->selectedIncidences().first(); 3085 incidence = mViewManager->currentView()->selectedIncidences().first();
3078 if (incidence == 0) { 3086 if (incidence == 0) {
3079 incidence = mTodoList->selectedIncidences().first(); 3087 incidence = mTodoList->selectedIncidences().first();
3080 } 3088 }
3081 } 3089 }
3082 if ( incidence && incidence->type() == "Event" ) { 3090 if ( incidence && incidence->type() == "Event" ) {
3083 event = static_cast<Event *>(incidence); 3091 event = static_cast<Event *>(incidence);
3084 } 3092 }
3085 if ( incidence && incidence->type() == "Todo" ) { 3093 if ( incidence && incidence->type() == "Todo" ) {
3086 todo = static_cast<Todo *>(incidence); 3094 todo = static_cast<Todo *>(incidence);
3087 } 3095 }
3088 3096
3089 if (!event && !todo) { 3097 if (!event && !todo) {
3090 KMessageBox::sorry(this,i18n("No event selected.")); 3098 KMessageBox::sorry(this,i18n("No event selected."));
3091 return; 3099 return;
3092 } 3100 }
3093 3101
3094 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) { 3102 if( incidence->attendeeCount() == 0 && method != Scheduler::Publish ) {
3095 KMessageBox::sorry(this,i18n("The event has no attendees.")); 3103 KMessageBox::sorry(this,i18n("The event has no attendees."));
3096 return; 3104 return;
3097 } 3105 }
3098 3106
3099 Event *ev = 0; 3107 Event *ev = 0;
3100 if (event) ev = new Event(*event); 3108 if (event) ev = new Event(*event);
3101 Todo *to = 0; 3109 Todo *to = 0;
3102 if (todo) to = new Todo(*todo); 3110 if (todo) to = new Todo(*todo);
3103 3111
3104 if (method == Scheduler::Reply || method == Scheduler::Refresh) { 3112 if (method == Scheduler::Reply || method == Scheduler::Refresh) {
3105 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 3113 Attendee *me = incidence->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
3106 if (!me) { 3114 if (!me) {
3107 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails.")); 3115 KMessageBox::sorry(this,i18n("Could not find your attendee entry.\nPlease check the emails."));
3108 return; 3116 return;
3109 } 3117 }
3110 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) { 3118 if (me->status()==Attendee::NeedsAction && me->RSVP() && method==Scheduler::Reply) {
3111 StatusDialog *statdlg = new StatusDialog(this); 3119 StatusDialog *statdlg = new StatusDialog(this);
3112 if (!statdlg->exec()==QDialog::Accepted) return; 3120 if (!statdlg->exec()==QDialog::Accepted) return;
3113 me->setStatus( statdlg->status() ); 3121 me->setStatus( statdlg->status() );
3114 delete(statdlg); 3122 delete(statdlg);
3115 } 3123 }
3116 Attendee *menew = new Attendee(*me); 3124 Attendee *menew = new Attendee(*me);
3117 if (ev) { 3125 if (ev) {
3118 ev->clearAttendees(); 3126 ev->clearAttendees();
3119 ev->addAttendee(menew,false); 3127 ev->addAttendee(menew,false);
3120 } else { 3128 } else {
3121 if (to) { 3129 if (to) {
3122 todo->clearAttendees(); 3130 todo->clearAttendees();
3123 todo->addAttendee(menew,false); 3131 todo->addAttendee(menew,false);
3124 } 3132 }
3125 } 3133 }
3126 } 3134 }
3127 3135
3128 OutgoingDialog *dlg = mDialogManager->outgoingDialog(); 3136 OutgoingDialog *dlg = mDialogManager->outgoingDialog();
3129 if (ev) { 3137 if (ev) {
3130 if ( !dlg->addMessage(ev,method) ) delete(ev); 3138 if ( !dlg->addMessage(ev,method) ) delete(ev);
3131 } else { 3139 } else {
3132 if (to) { 3140 if (to) {
3133 if ( !dlg->addMessage(to,method) ) delete(to); 3141 if ( !dlg->addMessage(to,method) ) delete(to);
3134 } 3142 }
3135 } 3143 }
3136} 3144}
3137 3145
3138void CalendarView::openAddressbook() 3146void CalendarView::openAddressbook()
3139{ 3147{
3140 KRun::runCommand("kaddressbook"); 3148 KRun::runCommand("kaddressbook");
3141} 3149}
3142 3150
3143void CalendarView::setModified(bool modified) 3151void CalendarView::setModified(bool modified)
3144{ 3152{
3145 if ( modified ) 3153 if ( modified )
3146 emit signalmodified(); 3154 emit signalmodified();
3147 if (mModified != modified) { 3155 if (mModified != modified) {
3148 mModified = modified; 3156 mModified = modified;
3149 emit modifiedChanged(mModified); 3157 emit modifiedChanged(mModified);
3150 } 3158 }
3151} 3159}
3152 3160
3153bool CalendarView::isReadOnly() 3161bool CalendarView::isReadOnly()
3154{ 3162{
3155 return mReadOnly; 3163 return mReadOnly;
3156} 3164}
3157 3165
3158void CalendarView::setReadOnly(bool readOnly) 3166void CalendarView::setReadOnly(bool readOnly)
3159{ 3167{
3160 if (mReadOnly != readOnly) { 3168 if (mReadOnly != readOnly) {
3161 mReadOnly = readOnly; 3169 mReadOnly = readOnly;
3162 emit readOnlyChanged(mReadOnly); 3170 emit readOnlyChanged(mReadOnly);
3163 } 3171 }
3164} 3172}
3165 3173
3166bool CalendarView::isModified() 3174bool CalendarView::isModified()
3167{ 3175{
3168 return mModified; 3176 return mModified;
3169} 3177}
3170 3178
3171void CalendarView::printSetup() 3179void CalendarView::printSetup()
3172{ 3180{
3173#ifndef KORG_NOPRINTER 3181#ifndef KORG_NOPRINTER
3174 createPrinter(); 3182 createPrinter();
3175 3183
3176 mCalPrinter->setupPrinter(); 3184 mCalPrinter->setupPrinter();
3177#endif 3185#endif
3178} 3186}
3179 3187
3180void CalendarView::print() 3188void CalendarView::print()
3181{ 3189{
3182#ifndef KORG_NOPRINTER 3190#ifndef KORG_NOPRINTER
3183 createPrinter(); 3191 createPrinter();
3184 3192
3185 DateList tmpDateList = mNavigator->selectedDates(); 3193 DateList tmpDateList = mNavigator->selectedDates();
3186 mCalPrinter->print(CalPrinter::Month, 3194 mCalPrinter->print(CalPrinter::Month,
3187 tmpDateList.first(), tmpDateList.last()); 3195 tmpDateList.first(), tmpDateList.last());
3188#endif 3196#endif
3189} 3197}
3190 3198
3191void CalendarView::printPreview() 3199void CalendarView::printPreview()
3192{ 3200{
3193#ifndef KORG_NOPRINTER 3201#ifndef KORG_NOPRINTER
3194 kdDebug() << "CalendarView::printPreview()" << endl; 3202 kdDebug() << "CalendarView::printPreview()" << endl;
3195 3203
3196 createPrinter(); 3204 createPrinter();
3197 3205
3198 DateList tmpDateList = mNavigator->selectedDates(); 3206 DateList tmpDateList = mNavigator->selectedDates();
3199 3207
3200 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(), 3208 mViewManager->currentView()->printPreview(mCalPrinter,tmpDateList.first(),
3201 tmpDateList.last()); 3209 tmpDateList.last());
3202#endif 3210#endif
3203} 3211}
3204 3212
3205void CalendarView::exportICalendar() 3213void CalendarView::exportICalendar()
3206{ 3214{
3207 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this); 3215 QString filename = KFileDialog::getSaveFileName("icalout.ics",i18n("*.ics|ICalendars"),this);
3208 3216
3209 // Force correct extension 3217 // Force correct extension
3210 if (filename.right(4) != ".ics") filename += ".ics"; 3218 if (filename.right(4) != ".ics") filename += ".ics";
3211 3219
3212 FileStorage storage( mCalendar, filename, new ICalFormat() ); 3220 FileStorage storage( mCalendar, filename, new ICalFormat() );
3213 storage.save(); 3221 storage.save();
3214} 3222}
3215 3223
3216bool CalendarView::exportVCalendar( QString filename ) 3224bool CalendarView::exportVCalendar( QString filename )
3217{ 3225{
3218 if (mCalendar->journals().count() > 0) { 3226 if (mCalendar->journals().count() > 0) {
3219 int result = KMessageBox::warningContinueCancel(this, 3227 int result = KMessageBox::warningContinueCancel(this,
3220 i18n("The journal entries can not be\nexported to a vCalendar file."), 3228 i18n("The journal entries can not be\nexported to a vCalendar file."),
3221 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 3229 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
3222 true); 3230 true);
3223 if (result != KMessageBox::Continue) return false; 3231 if (result != KMessageBox::Continue) return false;
3224 } 3232 }
3225 3233
3226 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this); 3234 //QString filename = KFileDialog::getSaveFileName("vcalout.vcs",i18n("*.vcs|VCalendars"),this);
3227 3235
3228 // Force correct extension 3236 // Force correct extension
3229 if (filename.right(4) != ".vcs") filename += ".vcs"; 3237 if (filename.right(4) != ".vcs") filename += ".vcs";
3230 3238
3231 FileStorage storage( mCalendar, filename, new VCalFormat ); 3239 FileStorage storage( mCalendar, filename, new VCalFormat );
3232 return storage.save(); 3240 return storage.save();
3233 3241
3234} 3242}
3235 3243
3236void CalendarView::eventUpdated(Incidence *) 3244void CalendarView::eventUpdated(Incidence *)
3237{ 3245{
3238 setModified(); 3246 setModified();
3239 // Don't call updateView here. The code, which has caused the update of the 3247 // Don't call updateView here. The code, which has caused the update of the
3240 // event is responsible for updating the view. 3248 // event is responsible for updating the view.
3241 // updateView(); 3249 // updateView();
3242} 3250}
3243 3251
3244void CalendarView::adaptNavigationUnits() 3252void CalendarView::adaptNavigationUnits()
3245{ 3253{
3246 if (mViewManager->currentView()->isEventView()) { 3254 if (mViewManager->currentView()->isEventView()) {
3247 int days = mViewManager->currentView()->currentDateCount(); 3255 int days = mViewManager->currentView()->currentDateCount();
3248 if (days == 1) { 3256 if (days == 1) {
3249 emit changeNavStringPrev(i18n("&Previous Day")); 3257 emit changeNavStringPrev(i18n("&Previous Day"));
3250 emit changeNavStringNext(i18n("&Next Day")); 3258 emit changeNavStringNext(i18n("&Next Day"));
3251 } else { 3259 } else {
3252 emit changeNavStringPrev(i18n("&Previous Week")); 3260 emit changeNavStringPrev(i18n("&Previous Week"));
3253 emit changeNavStringNext(i18n("&Next Week")); 3261 emit changeNavStringNext(i18n("&Next Week"));
3254 } 3262 }
3255 } 3263 }
3256} 3264}
3257 3265
3258void CalendarView::processMainViewSelection( Incidence *incidence ) 3266void CalendarView::processMainViewSelection( Incidence *incidence )
3259{ 3267{
3260 if ( incidence ) mTodoList->clearSelection(); 3268 if ( incidence ) mTodoList->clearSelection();
3261 processIncidenceSelection( incidence ); 3269 processIncidenceSelection( incidence );
3262} 3270}
3263 3271
3264void CalendarView::processTodoListSelection( Incidence *incidence ) 3272void CalendarView::processTodoListSelection( Incidence *incidence )
3265{ 3273{
3266 if ( incidence && mViewManager->currentView() ) { 3274 if ( incidence && mViewManager->currentView() ) {
3267 mViewManager->currentView()->clearSelection(); 3275 mViewManager->currentView()->clearSelection();
3268 } 3276 }
3269 processIncidenceSelection( incidence ); 3277 processIncidenceSelection( incidence );
3270} 3278}
3271 3279
3272void CalendarView::processIncidenceSelection( Incidence *incidence ) 3280void CalendarView::processIncidenceSelection( Incidence *incidence )
3273{ 3281{
3274 if ( incidence == mSelectedIncidence ) return; 3282 if ( incidence == mSelectedIncidence ) return;
3275 3283
3276 mSelectedIncidence = incidence; 3284 mSelectedIncidence = incidence;
3277 3285
3278 emit incidenceSelected( mSelectedIncidence ); 3286 emit incidenceSelected( mSelectedIncidence );
3279 3287
3280 if ( incidence && incidence->type() == "Event" ) { 3288 if ( incidence && incidence->type() == "Event" ) {
3281 Event *event = static_cast<Event *>( incidence ); 3289 Event *event = static_cast<Event *>( incidence );
3282 if ( event->organizer() == KOPrefs::instance()->email() ) { 3290 if ( event->organizer() == KOPrefs::instance()->email() ) {
3283 emit organizerEventsSelected( true ); 3291 emit organizerEventsSelected( true );
3284 } else { 3292 } else {
3285 emit organizerEventsSelected(false); 3293 emit organizerEventsSelected(false);
3286 } 3294 }
3287 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3295 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3288 KOPrefs::instance()->email() ) ) { 3296 KOPrefs::instance()->email() ) ) {
3289 emit groupEventsSelected( true ); 3297 emit groupEventsSelected( true );
3290 } else { 3298 } else {
3291 emit groupEventsSelected(false); 3299 emit groupEventsSelected(false);
3292 } 3300 }
3293 return; 3301 return;
3294 } else { 3302 } else {
3295 if ( incidence && incidence->type() == "Todo" ) { 3303 if ( incidence && incidence->type() == "Todo" ) {
3296 emit todoSelected( true ); 3304 emit todoSelected( true );
3297 Todo *event = static_cast<Todo *>( incidence ); 3305 Todo *event = static_cast<Todo *>( incidence );
3298 if ( event->organizer() == KOPrefs::instance()->email() ) { 3306 if ( event->organizer() == KOPrefs::instance()->email() ) {
3299 emit organizerEventsSelected( true ); 3307 emit organizerEventsSelected( true );
3300 } else { 3308 } else {
3301 emit organizerEventsSelected(false); 3309 emit organizerEventsSelected(false);
3302 } 3310 }
3303 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails, 3311 if (event->attendeeByMails( KOPrefs::instance()->mAdditionalMails,
3304 KOPrefs::instance()->email() ) ) { 3312 KOPrefs::instance()->email() ) ) {
3305 emit groupEventsSelected( true ); 3313 emit groupEventsSelected( true );
3306 } else { 3314 } else {
3307 emit groupEventsSelected(false); 3315 emit groupEventsSelected(false);
3308 } 3316 }
3309 return; 3317 return;
3310 } else { 3318 } else {
3311 emit todoSelected( false ); 3319 emit todoSelected( false );
3312 emit organizerEventsSelected(false); 3320 emit organizerEventsSelected(false);
3313 emit groupEventsSelected(false); 3321 emit groupEventsSelected(false);
3314 } 3322 }
3315 return; 3323 return;
3316 } 3324 }
3317 3325
3318 /* if ( incidence && incidence->type() == "Todo" ) { 3326 /* if ( incidence && incidence->type() == "Todo" ) {
3319 emit todoSelected( true ); 3327 emit todoSelected( true );
3320 } else { 3328 } else {
3321 emit todoSelected( false ); 3329 emit todoSelected( false );
3322 }*/ 3330 }*/
3323} 3331}
3324 3332
3325 3333
3326void CalendarView::checkClipboard() 3334void CalendarView::checkClipboard()
3327{ 3335{
3328#ifndef KORG_NODND 3336#ifndef KORG_NODND
3329 if (ICalDrag::canDecode(QApplication::clipboard()->data())) { 3337 if (ICalDrag::canDecode(QApplication::clipboard()->data())) {
3330 emit pasteEnabled(true); 3338 emit pasteEnabled(true);
3331 } else { 3339 } else {
3332 emit pasteEnabled(false); 3340 emit pasteEnabled(false);
3333 } 3341 }
3334#endif 3342#endif
3335} 3343}
3336 3344
3337void CalendarView::showDates(const DateList &selectedDates) 3345void CalendarView::showDates(const DateList &selectedDates)
3338{ 3346{
3339 // kdDebug() << "CalendarView::selectDates()" << endl; 3347 // kdDebug() << "CalendarView::selectDates()" << endl;
3340 3348
3341 if ( mViewManager->currentView() ) { 3349 if ( mViewManager->currentView() ) {
3342 updateView( selectedDates.first(), selectedDates.last() ); 3350 updateView( selectedDates.first(), selectedDates.last() );
3343 } else { 3351 } else {
3344 mViewManager->showAgendaView(); 3352 mViewManager->showAgendaView();
3345 } 3353 }
3346 3354
3347 QString selDates; 3355 QString selDates;
3348 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true); 3356 selDates = KGlobal::locale()->formatDate( selectedDates.first(), true);
3349 if (selectedDates.first() < selectedDates.last() ) 3357 if (selectedDates.first() < selectedDates.last() )
3350 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true); 3358 selDates += " - " + KGlobal::locale()->formatDate( selectedDates.last(),true);
3351 topLevelWidget()->setCaption( i18n("Dates: ") + selDates ); 3359 topLevelWidget()->setCaption( i18n("Dates: ") + selDates );
3352 3360
3353} 3361}
3354 3362
3355QPtrList<CalFilter> CalendarView::filters() 3363QPtrList<CalFilter> CalendarView::filters()
3356{ 3364{
3357 return mFilters; 3365 return mFilters;
3358 3366
3359} 3367}
3360void CalendarView::editFilters() 3368void CalendarView::editFilters()
3361{ 3369{
3362 // kdDebug() << "CalendarView::editFilters()" << endl; 3370 // kdDebug() << "CalendarView::editFilters()" << endl;
3363 3371
3364 CalFilter *filter = mFilters.first(); 3372 CalFilter *filter = mFilters.first();
3365 while(filter) { 3373 while(filter) {
3366 kdDebug() << " Filter: " << filter->name() << endl; 3374 kdDebug() << " Filter: " << filter->name() << endl;
3367 filter = mFilters.next(); 3375 filter = mFilters.next();
3368 } 3376 }
3369 3377
3370 mDialogManager->showFilterEditDialog(&mFilters); 3378 mDialogManager->showFilterEditDialog(&mFilters);
3371} 3379}
3372void CalendarView::toggleFilter() 3380void CalendarView::toggleFilter()
3373{ 3381{
3374 showFilter(! mFilterView->isVisible()); 3382 showFilter(! mFilterView->isVisible());
3375} 3383}
3376 3384
3377KOFilterView *CalendarView::filterView() 3385KOFilterView *CalendarView::filterView()
3378{ 3386{
3379 return mFilterView; 3387 return mFilterView;
3380} 3388}
3381void CalendarView::selectFilter( int fil ) 3389void CalendarView::selectFilter( int fil )
3382{ 3390{
3383 mFilterView->setSelectedFilter( fil ); 3391 mFilterView->setSelectedFilter( fil );
3384} 3392}
3385void CalendarView::showFilter(bool visible) 3393void CalendarView::showFilter(bool visible)
3386{ 3394{
3387 if (visible) mFilterView->show(); 3395 if (visible) mFilterView->show();
3388 else mFilterView->hide(); 3396 else mFilterView->hide();
3389} 3397}
3390void CalendarView::toggleFilerEnabled( ) 3398void CalendarView::toggleFilerEnabled( )
3391{ 3399{
3392 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() ); 3400 mFilterView->setFiltersEnabled ( !mFilterView->filtersEnabled() );
3393 if ( !mFilterView->filtersEnabled() ) 3401 if ( !mFilterView->filtersEnabled() )
3394 topLevelWidget()->setCaption( i18n("Filter disabled ") ); 3402 topLevelWidget()->setCaption( i18n("Filter disabled ") );
3395 3403
3396} 3404}
3397void CalendarView::updateFilter() 3405void CalendarView::updateFilter()
3398{ 3406{
3399 CalFilter *filter = mFilterView->selectedFilter(); 3407 CalFilter *filter = mFilterView->selectedFilter();
3400 if (filter) { 3408 if (filter) {
3401 if (mFilterView->filtersEnabled()) { 3409 if (mFilterView->filtersEnabled()) {
3402 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() ); 3410 topLevelWidget()->setCaption( i18n("Filter selected: ")+filter->name() );
3403 filter->setEnabled(true); 3411 filter->setEnabled(true);
3404 } 3412 }
3405 else filter->setEnabled(false); 3413 else filter->setEnabled(false);
3406 mCalendar->setFilter(filter); 3414 mCalendar->setFilter(filter);
3407 updateView(); 3415 updateView();
3408 } 3416 }
3409} 3417}
3410 3418
3411void CalendarView::filterEdited() 3419void CalendarView::filterEdited()
3412{ 3420{
3413 mFilterView->updateFilters(); 3421 mFilterView->updateFilters();
3414 updateFilter(); 3422 updateFilter();
3415 writeSettings(); 3423 writeSettings();
3416} 3424}
3417 3425
3418 3426
3419void CalendarView::takeOverEvent() 3427void CalendarView::takeOverEvent()
3420{ 3428{
3421 Incidence *incidence = currentSelection(); 3429 Incidence *incidence = currentSelection();
3422 3430
3423 if (!incidence) return; 3431 if (!incidence) return;
3424 3432
3425 incidence->setOrganizer(KOPrefs::instance()->email()); 3433 incidence->setOrganizer(KOPrefs::instance()->email());
3426 incidence->recreate(); 3434 incidence->recreate();
3427 incidence->setReadOnly(false); 3435 incidence->setReadOnly(false);
3428 3436
3429 updateView(); 3437 updateView();
3430} 3438}
3431 3439
3432void CalendarView::takeOverCalendar() 3440void CalendarView::takeOverCalendar()
3433{ 3441{
3434 // TODO: Create Calendar::allIncidences() function and use it here 3442 // TODO: Create Calendar::allIncidences() function and use it here
3435 3443
3436 QPtrList<Event> events = mCalendar->events(); 3444 QPtrList<Event> events = mCalendar->events();
3437 for(uint i=0; i<events.count(); ++i) { 3445 for(uint i=0; i<events.count(); ++i) {
3438 events.at(i)->setOrganizer(KOPrefs::instance()->email()); 3446 events.at(i)->setOrganizer(KOPrefs::instance()->email());
3439 events.at(i)->recreate(); 3447 events.at(i)->recreate();
3440 events.at(i)->setReadOnly(false); 3448 events.at(i)->setReadOnly(false);
3441 } 3449 }
3442 3450
3443 QPtrList<Todo> todos = mCalendar->todos(); 3451 QPtrList<Todo> todos = mCalendar->todos();
3444 for(uint i=0; i<todos.count(); ++i) { 3452 for(uint i=0; i<todos.count(); ++i) {
3445 todos.at(i)->setOrganizer(KOPrefs::instance()->email()); 3453 todos.at(i)->setOrganizer(KOPrefs::instance()->email());
3446 todos.at(i)->recreate(); 3454 todos.at(i)->recreate();
3447 todos.at(i)->setReadOnly(false); 3455 todos.at(i)->setReadOnly(false);
3448 } 3456 }
3449 3457
3450 QPtrList<Journal> journals = mCalendar->journals(); 3458 QPtrList<Journal> journals = mCalendar->journals();
3451 for(uint i=0; i<journals.count(); ++i) { 3459 for(uint i=0; i<journals.count(); ++i) {
3452 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 3460 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
3453 journals.at(i)->recreate(); 3461 journals.at(i)->recreate();
3454 journals.at(i)->setReadOnly(false); 3462 journals.at(i)->setReadOnly(false);
3455 } 3463 }
3456 3464
3457 updateView(); 3465 updateView();
3458} 3466}
3459 3467
3460void CalendarView::showIntro() 3468void CalendarView::showIntro()
3461{ 3469{
3462 kdDebug() << "To be implemented." << endl; 3470 kdDebug() << "To be implemented." << endl;
3463} 3471}
3464 3472
3465QWidgetStack *CalendarView::viewStack() 3473QWidgetStack *CalendarView::viewStack()
3466{ 3474{
3467 return mRightFrame; 3475 return mRightFrame;
3468} 3476}
3469 3477
3470QWidget *CalendarView::leftFrame() 3478QWidget *CalendarView::leftFrame()
3471{ 3479{
3472 return mLeftFrame; 3480 return mLeftFrame;
3473} 3481}
3474 3482
3475DateNavigator *CalendarView::dateNavigator() 3483DateNavigator *CalendarView::dateNavigator()
3476{ 3484{
3477 return mNavigator; 3485 return mNavigator;
3478} 3486}
3479 3487
3480KDateNavigator* CalendarView::dateNavigatorWidget() 3488KDateNavigator* CalendarView::dateNavigatorWidget()
3481{ 3489{
3482 return mDateNavigator; 3490 return mDateNavigator;
3483} 3491}
3484void CalendarView::toggleDateNavigatorWidget() 3492void CalendarView::toggleDateNavigatorWidget()
3485{ 3493{
3486 if (mDateNavigator->isVisible()) 3494 if (mDateNavigator->isVisible())
3487 mDateNavigator->hide(); 3495 mDateNavigator->hide();
3488 else 3496 else
3489 mDateNavigator->show(); 3497 mDateNavigator->show();
3490} 3498}
3491void CalendarView::addView(KOrg::BaseView *view) 3499void CalendarView::addView(KOrg::BaseView *view)
3492{ 3500{
3493 mViewManager->addView(view); 3501 mViewManager->addView(view);
3494} 3502}
3495 3503
3496void CalendarView::showView(KOrg::BaseView *view) 3504void CalendarView::showView(KOrg::BaseView *view)
3497{ 3505{
3498 mViewManager->showView(view, mLeftFrame->isVisible()); 3506 mViewManager->showView(view, mLeftFrame->isVisible());
3499} 3507}
3500 3508
3501Incidence *CalendarView::currentSelection() 3509Incidence *CalendarView::currentSelection()
3502{ 3510{
3503 return mViewManager->currentSelection(); 3511 return mViewManager->currentSelection();
3504} 3512}
3505void CalendarView::toggleAllDaySize() 3513void CalendarView::toggleAllDaySize()
3506{ 3514{
3507 /* 3515 /*
3508 if ( KOPrefs::instance()->mAllDaySize > 47 ) 3516 if ( KOPrefs::instance()->mAllDaySize > 47 )
3509 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 3517 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
3510 else 3518 else
3511 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 3519 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
3512 */ 3520 */
3513 viewManager()->agendaView()->toggleAllDay(); 3521 viewManager()->agendaView()->toggleAllDay();
3514} 3522}
3515void CalendarView::toggleExpand() 3523void CalendarView::toggleExpand()
3516{ 3524{
3517 // if ( mLeftFrame->isHidden() ) { 3525 // if ( mLeftFrame->isHidden() ) {
3518 // mLeftFrame->show(); 3526 // mLeftFrame->show();
3519 // emit calendarViewExpanded( false ); 3527 // emit calendarViewExpanded( false );
3520 // } else { 3528 // } else {
3521 // mLeftFrame->hide(); 3529 // mLeftFrame->hide();
3522 // emit calendarViewExpanded( true ); 3530 // emit calendarViewExpanded( true );
3523 // } 3531 // }
3524 3532
3525 globalFlagBlockAgenda = 1; 3533 globalFlagBlockAgenda = 1;
3526 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 3534 emit calendarViewExpanded( !mLeftFrame->isHidden() );
3527 globalFlagBlockAgenda = 5; 3535 globalFlagBlockAgenda = 5;
3528 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 3536 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
3529 //mViewManager->showView( 0, true ); 3537 //mViewManager->showView( 0, true );
3530} 3538}
3531 3539
3532void CalendarView::calendarModified( bool modified, Calendar * ) 3540void CalendarView::calendarModified( bool modified, Calendar * )
3533{ 3541{
3534 setModified( modified ); 3542 setModified( modified );
3535} 3543}
3536 3544
3537Todo *CalendarView::selectedTodo() 3545Todo *CalendarView::selectedTodo()
3538{ 3546{
3539 Incidence *incidence = currentSelection(); 3547 Incidence *incidence = currentSelection();
3540 if ( incidence && incidence->type() == "Todo" ) { 3548 if ( incidence && incidence->type() == "Todo" ) {
3541 return static_cast<Todo *>( incidence ); 3549 return static_cast<Todo *>( incidence );
3542 } 3550 }
3543 3551
3544 incidence = mTodoList->selectedIncidences().first(); 3552 incidence = mTodoList->selectedIncidences().first();
3545 if ( incidence && incidence->type() == "Todo" ) { 3553 if ( incidence && incidence->type() == "Todo" ) {
3546 return static_cast<Todo *>( incidence ); 3554 return static_cast<Todo *>( incidence );
3547 } 3555 }
3548 3556
3549 return 0; 3557 return 0;
3550} 3558}
3551 3559
3552void CalendarView::dialogClosing(Incidence *in) 3560void CalendarView::dialogClosing(Incidence *in)
3553{ 3561{
3554 // mDialogList.remove(in); 3562 // mDialogList.remove(in);
3555} 3563}
3556 3564
3557void CalendarView::showIncidence() 3565void CalendarView::showIncidence()
3558{ 3566{
3559 Incidence *incidence = currentSelection(); 3567 Incidence *incidence = currentSelection();
3560 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3568 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3561 if ( incidence ) { 3569 if ( incidence ) {
3562 ShowIncidenceVisitor v; 3570 ShowIncidenceVisitor v;
3563 v.act( incidence, this ); 3571 v.act( incidence, this );
3564 } 3572 }
3565} 3573}
3566void CalendarView::editIncidenceDescription() 3574void CalendarView::editIncidenceDescription()
3567{ 3575{
3568 mFlagEditDescription = true; 3576 mFlagEditDescription = true;
3569 editIncidence(); 3577 editIncidence();
3570 mFlagEditDescription = false; 3578 mFlagEditDescription = false;
3571} 3579}
3572void CalendarView::editIncidence() 3580void CalendarView::editIncidence()
3573{ 3581{
3574 // qDebug("editIncidence() "); 3582 // qDebug("editIncidence() ");
3575 Incidence *incidence = currentSelection(); 3583 Incidence *incidence = currentSelection();
3576 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3584 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3577 if ( incidence ) { 3585 if ( incidence ) {
3578 EditIncidenceVisitor v; 3586 EditIncidenceVisitor v;
3579 v.act( incidence, this ); 3587 v.act( incidence, this );
3580 } 3588 }
3581} 3589}
3582 3590
3583void CalendarView::deleteIncidence() 3591void CalendarView::deleteIncidence()
3584{ 3592{
3585 Incidence *incidence = currentSelection(); 3593 Incidence *incidence = currentSelection();
3586 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 3594 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
3587 if ( incidence ) { 3595 if ( incidence ) {
3588 deleteIncidence(incidence); 3596 deleteIncidence(incidence);
3589 } 3597 }
3590} 3598}
3591 3599
3592void CalendarView::showIncidence(Incidence *incidence) 3600void CalendarView::showIncidence(Incidence *incidence)
3593{ 3601{
3594 if ( incidence ) { 3602 if ( incidence ) {
3595 ShowIncidenceVisitor v; 3603 ShowIncidenceVisitor v;
3596 v.act( incidence, this ); 3604 v.act( incidence, this );
3597 } 3605 }
3598} 3606}
3599 3607
3600void CalendarView::editIncidence(Incidence *incidence) 3608void CalendarView::editIncidence(Incidence *incidence)
3601{ 3609{
3602 if ( incidence ) { 3610 if ( incidence ) {
3603 3611
3604 EditIncidenceVisitor v; 3612 EditIncidenceVisitor v;
3605 v.act( incidence, this ); 3613 v.act( incidence, this );
3606 3614
3607 } 3615 }
3608} 3616}
3609 3617
3610void CalendarView::deleteIncidence(Incidence *incidence) 3618void CalendarView::deleteIncidence(Incidence *incidence)
3611{ 3619{
3612 //qDebug(" CalendarView::deleteIncidence "); 3620 //qDebug(" CalendarView::deleteIncidence ");
3613 if ( incidence ) { 3621 if ( incidence ) {
3614 DeleteIncidenceVisitor v; 3622 DeleteIncidenceVisitor v;
3615 v.act( incidence, this ); 3623 v.act( incidence, this );
3616 } 3624 }
3617} 3625}
3618 3626
3619 3627
3620void CalendarView::lookForOutgoingMessages() 3628void CalendarView::lookForOutgoingMessages()
3621{ 3629{
3622 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3630 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3623 ogd->loadMessages(); 3631 ogd->loadMessages();
3624} 3632}
3625 3633
3626void CalendarView::lookForIncomingMessages() 3634void CalendarView::lookForIncomingMessages()
3627{ 3635{
3628 IncomingDialog *icd = mDialogManager->incomingDialog(); 3636 IncomingDialog *icd = mDialogManager->incomingDialog();
3629 icd->retrieve(); 3637 icd->retrieve();
3630} 3638}
3631 3639
3632bool CalendarView::removeCompletedSubTodos( Todo* t ) 3640bool CalendarView::removeCompletedSubTodos( Todo* t )
3633{ 3641{
3634 bool deleteTodo = true; 3642 bool deleteTodo = true;
3635 QPtrList<Incidence> subTodos; 3643 QPtrList<Incidence> subTodos;
3636 Incidence *aTodo; 3644 Incidence *aTodo;
3637 subTodos = t->relations(); 3645 subTodos = t->relations();
3638 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3646 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3639 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3647 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3640 deleteTodo = false; 3648 deleteTodo = false;
3641 } 3649 }
3642 if ( deleteTodo ) { 3650 if ( deleteTodo ) {
3643 if ( t->isCompleted() ) { 3651 if ( t->isCompleted() ) {
3644 checkExternalId( t ); 3652 checkExternalId( t );
3645 mCalendar->deleteTodo( t ); 3653 mCalendar->deleteTodo( t );
3646 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3654 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3647 } 3655 }
3648 else 3656 else
3649 deleteTodo = false; 3657 deleteTodo = false;
3650 } 3658 }
3651 return deleteTodo; 3659 return deleteTodo;
3652 3660
3653} 3661}
3654void CalendarView::purgeCompleted() 3662void CalendarView::purgeCompleted()
3655{ 3663{
3656 int result = KMessageBox::warningContinueCancel(this, 3664 int result = KMessageBox::warningContinueCancel(this,
3657 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3665 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3658 3666
3659 if (result == KMessageBox::Continue) { 3667 if (result == KMessageBox::Continue) {
3660 3668
3661 QPtrList<Todo> todoCal; 3669 QPtrList<Todo> todoCal;
3662 QPtrList<Todo> rootTodos; 3670 QPtrList<Todo> rootTodos;
3663 //QPtrList<Incidence> rel; 3671 //QPtrList<Incidence> rel;
3664 Todo *aTodo;//, *rTodo; 3672 Todo *aTodo;//, *rTodo;
3665 Incidence *rIncidence; 3673 Incidence *rIncidence;
3666 bool childDelete = false; 3674 bool childDelete = false;
3667 bool deletedOne = true; 3675 bool deletedOne = true;
3668 todoCal = calendar()->todos(); 3676 todoCal = calendar()->todos();
3669 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3677 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3670 if ( !aTodo->relatedTo() ) 3678 if ( !aTodo->relatedTo() )
3671 rootTodos.append( aTodo ); 3679 rootTodos.append( aTodo );
3672 } 3680 }
3673 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3681 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3674 removeCompletedSubTodos( aTodo ); 3682 removeCompletedSubTodos( aTodo );
3675 } 3683 }
3676 3684
3677 updateView(); 3685 updateView();
3678 } 3686 }
3679} 3687}
3680 3688
3681void CalendarView::slotCalendarChanged() 3689void CalendarView::slotCalendarChanged()
3682{ 3690{
3683 ; 3691 ;
3684} 3692}
3685 3693
3686NavigatorBar *CalendarView::navigatorBar() 3694NavigatorBar *CalendarView::navigatorBar()
3687{ 3695{
3688 return mNavigatorBar; 3696 return mNavigatorBar;
3689} 3697}
3690 3698
3691 3699
3692 3700
3693void CalendarView::keyPressEvent ( QKeyEvent *e) 3701void CalendarView::keyPressEvent ( QKeyEvent *e)
3694{ 3702{
3695 //qDebug(" alendarView::keyPressEvent "); 3703 //qDebug(" alendarView::keyPressEvent ");
3696 e->ignore(); 3704 e->ignore();
3697} 3705}
3698 3706
3699 3707
3700bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 3708bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
3701{ 3709{
3702 // mSyncManager = manager; 3710 // mSyncManager = manager;
3703 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3711 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3704 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 3712 mCurrentSyncName = mSyncManager->getCurrentSyncName();
3705 return syncCalendar( filename, mode ); 3713 return syncCalendar( filename, mode );
3706} 3714}
3707bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 3715bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
3708{ 3716{
3709 //mSyncManager = manager; 3717 //mSyncManager = manager;
3710 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3718 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3711 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 3719 mCurrentSyncName = mSyncManager->getCurrentSyncName();
3712 if ( resource == "sharp" ) 3720 if ( resource == "sharp" )
3713 syncExternal( 0 ); 3721 syncExternal( 0 );
3714 if ( resource == "phone" ) 3722 if ( resource == "phone" )
3715 syncExternal( 1 ); 3723 syncExternal( 1 );
3716 // pending setmodified 3724 // pending setmodified
3717 return true; 3725 return true;
3718} 3726}
3719void CalendarView::setSyncManager(KSyncManager* manager) 3727void CalendarView::setSyncManager(KSyncManager* manager)
3720{ 3728{
3721 mSyncManager = manager; 3729 mSyncManager = manager;
3722} 3730}