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