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