summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp16
-rw-r--r--korganizer/calendarview.h1
-rw-r--r--korganizer/kofilterview.cpp6
-rw-r--r--korganizer/kofilterview.h1
4 files changed, 22 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index e31a6e1..28b17a5 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -96,769 +96,771 @@
96#include "kocore.h" 96#include "kocore.h"
97#endif 97#endif
98#include "koeventeditor.h" 98#include "koeventeditor.h"
99#include "kotodoeditor.h" 99#include "kotodoeditor.h"
100#include "koprefs.h" 100#include "koprefs.h"
101#include "koeventviewerdialog.h" 101#include "koeventviewerdialog.h"
102#include "publishdialog.h" 102#include "publishdialog.h"
103#include "kofilterview.h" 103#include "kofilterview.h"
104#include "koglobals.h" 104#include "koglobals.h"
105#include "koviewmanager.h" 105#include "koviewmanager.h"
106#include "koagendaview.h" 106#include "koagendaview.h"
107#include "koagenda.h" 107#include "koagenda.h"
108#include "kodialogmanager.h" 108#include "kodialogmanager.h"
109#include "outgoingdialog.h" 109#include "outgoingdialog.h"
110#include "incomingdialog.h" 110#include "incomingdialog.h"
111#include "datenavigatorcontainer.h" 111#include "datenavigatorcontainer.h"
112#include "statusdialog.h" 112#include "statusdialog.h"
113#include "kdatenavigator.h" 113#include "kdatenavigator.h"
114#include "kotodoview.h" 114#include "kotodoview.h"
115#include "datenavigator.h" 115#include "datenavigator.h"
116#include "resourceview.h" 116#include "resourceview.h"
117#include "navigatorbar.h" 117#include "navigatorbar.h"
118#include "searchdialog.h" 118#include "searchdialog.h"
119#include "mainwindow.h" 119#include "mainwindow.h"
120#include "categoryeditdialog.h" 120#include "categoryeditdialog.h"
121 121
122#include "calendarview.h" 122#include "calendarview.h"
123#ifndef DESKTOP_VERSION 123#ifndef DESKTOP_VERSION
124#include <qtopia/alarmserver.h> 124#include <qtopia/alarmserver.h>
125#endif 125#endif
126#ifndef _WIN32_ 126#ifndef _WIN32_
127#include <stdlib.h> 127#include <stdlib.h>
128#include <stdio.h> 128#include <stdio.h>
129#include <unistd.h> 129#include <unistd.h>
130#else 130#else
131#include <qprocess.h> 131#include <qprocess.h>
132#endif 132#endif
133 133
134#ifdef DESKTOP_VERSION 134#ifdef DESKTOP_VERSION
135#include <kabc/stdaddressbook.h> 135#include <kabc/stdaddressbook.h>
136#endif 136#endif
137using namespace KOrg; 137using namespace KOrg;
138using namespace KCal; 138using namespace KCal;
139extern int globalFlagBlockAgenda; 139extern int globalFlagBlockAgenda;
140extern int globalFlagBlockStartup; 140extern int globalFlagBlockStartup;
141 141
142 142
143MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent) 143MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent)
144 144
145{ 145{
146 mAlarms = alarms; 146 mAlarms = alarms;
147 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) ); 147 viewport()->setBackgroundColor( QColor( 255, 255, 255 ) );
148 QString mText = "<table width=\"100%\">\n"; 148 QString mText = "<table width=\"100%\">\n";
149 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 149 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
150#ifdef DESKTOP_VERSION 150#ifdef DESKTOP_VERSION
151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 151 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
152#else 152#else
153 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>"; 153 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h3>";
154#endif 154#endif
155 // mText += "<img src=\""; 155 // mText += "<img src=\"";
156 // mText += ipath; 156 // mText += ipath;
157 // mText += "\">"; 157 // mText += "\">";
158 //mEventDate = QDate::currentDate(); 158 //mEventDate = QDate::currentDate();
159#ifdef DESKTOP_VERSION 159#ifdef DESKTOP_VERSION
160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>"; 160 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>";
161#else 161#else
162 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>"; 162 mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h3>";
163#endif 163#endif
164 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 164 //mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
165 165
166 Incidence * inc = getNextInc( start ); 166 Incidence * inc = getNextInc( start );
167 int time = 0; 167 int time = 0;
168 //mText += "<table>"; 168 //mText += "<table>";
169 while ( inc ) { 169 while ( inc ) {
170 QDateTime dt ; 170 QDateTime dt ;
171 QString tempText = "<a "; 171 QString tempText = "<a ";
172 bool ok; 172 bool ok;
173 dt = inc->getNextOccurence( start, &ok ); 173 dt = inc->getNextOccurence( start, &ok );
174 if ( !ok ) continue; 174 if ( !ok ) continue;
175 if ( inc->typeID() == eventID ) { 175 if ( inc->typeID() == eventID ) {
176 tempText += "href=\"event:"; 176 tempText += "href=\"event:";
177 } else if ( inc->typeID() == todoID ) { 177 } else if ( inc->typeID() == todoID ) {
178 tempText += "href=\"todo:"; 178 tempText += "href=\"todo:";
179 } 179 }
180 tempText += inc->uid() + "\">"; 180 tempText += inc->uid() + "\">";
181 if ( inc->typeID() == todoID ) 181 if ( inc->typeID() == todoID )
182 tempText += i18n("Todo: "); 182 tempText += i18n("Todo: ");
183 if ( inc->summary().length() > 0 ) 183 if ( inc->summary().length() > 0 )
184 tempText += inc->summary(); 184 tempText += inc->summary();
185 else 185 else
186 tempText += i18n("-no summary-"); 186 tempText += i18n("-no summary-");
187 QString timestr; 187 QString timestr;
188 if (!inc->doesFloat()) 188 if (!inc->doesFloat())
189 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": "; 189 timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": ";
190 else 190 else
191 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 191 timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
192 if ( dt.date() < QDate::currentDate() && time == 0 ) { 192 if ( dt.date() < QDate::currentDate() && time == 0 ) {
193 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; 193 mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>";
194 mText += "<table>"; 194 mText += "<table>";
195 time = 1; 195 time = 1;
196 } 196 }
197 if ( dt.date() == QDate::currentDate() && time <= 1 ) { 197 if ( dt.date() == QDate::currentDate() && time <= 1 ) {
198 if ( time > 0 ) 198 if ( time > 0 )
199 mText +="</table>"; 199 mText +="</table>";
200 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>"; 200 mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>";
201 mText += "<table>"; 201 mText += "<table>";
202 time = 2; 202 time = 2;
203 203
204 } 204 }
205 if ( dt.date() > QDate::currentDate() && time <= 2 ) { 205 if ( dt.date() > QDate::currentDate() && time <= 2 ) {
206 if ( time > 0 ) 206 if ( time > 0 )
207 mText +="</table>"; 207 mText +="</table>";
208 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>"; 208 mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>";
209 mText += "<table>"; 209 mText += "<table>";
210 time = 3; 210 time = 3;
211 } 211 }
212 mText +="<tr><td><b>"; 212 mText +="<tr><td><b>";
213 mText += timestr; 213 mText += timestr;
214 mText += "</b></td><td>"; 214 mText += "</b></td><td>";
215 mText += tempText; 215 mText += tempText;
216 mText += "</td></tr>\n"; 216 mText += "</td></tr>\n";
217 inc = getNextInc( start ); 217 inc = getNextInc( start );
218 } 218 }
219 mText +="</table>"; 219 mText +="</table>";
220 setText( mText ); 220 setText( mText );
221} 221}
222 222
223MissedAlarmTextBrowser::~MissedAlarmTextBrowser() 223MissedAlarmTextBrowser::~MissedAlarmTextBrowser()
224{ 224{
225 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() "); 225 //qDebug("delete MissedAlarmTextBrowser::~MissedAlarmTextBrowser() ");
226} 226}
227Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start ) 227Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start )
228{ 228{
229 QDateTime dt ; 229 QDateTime dt ;
230 Incidence * retInc; 230 Incidence * retInc;
231 Incidence * inc = mAlarms.first(); 231 Incidence * inc = mAlarms.first();
232 if ( inc == 0 ) 232 if ( inc == 0 )
233 return 0; 233 return 0;
234 bool ok; 234 bool ok;
235 dt = inc->getNextOccurence( start, &ok ); 235 dt = inc->getNextOccurence( start, &ok );
236 if ( ! ok ) return 0; 236 if ( ! ok ) return 0;
237 QDateTime dtn ; 237 QDateTime dtn ;
238 retInc = inc; 238 retInc = inc;
239 inc = mAlarms.next(); 239 inc = mAlarms.next();
240 while ( inc ) { 240 while ( inc ) {
241 dtn = inc->getNextOccurence( start, &ok ); 241 dtn = inc->getNextOccurence( start, &ok );
242 if ( ! ok ) return 0; 242 if ( ! ok ) return 0;
243 if ( dtn < dt ) { 243 if ( dtn < dt ) {
244 dt = dtn; 244 dt = dtn;
245 retInc = inc; 245 retInc = inc;
246 } 246 }
247 inc = mAlarms.next(); 247 inc = mAlarms.next();
248 } 248 }
249 mAlarms.remove( retInc ); 249 mAlarms.remove( retInc );
250 return retInc; 250 return retInc;
251 251
252} 252}
253void MissedAlarmTextBrowser::setSource(const QString & n) 253void MissedAlarmTextBrowser::setSource(const QString & n)
254{ 254{
255 if (n.startsWith("event:")) { 255 if (n.startsWith("event:")) {
256#ifdef DESKTOP_VERSION 256#ifdef DESKTOP_VERSION
257 emit showIncidence(n.mid(8)); 257 emit showIncidence(n.mid(8));
258#else 258#else
259 emit showIncidence(n.mid(6)); 259 emit showIncidence(n.mid(6));
260#endif 260#endif
261 return; 261 return;
262 } else if (n.startsWith("todo:")) { 262 } else if (n.startsWith("todo:")) {
263#ifdef DESKTOP_VERSION 263#ifdef DESKTOP_VERSION
264 emit showIncidence(n.mid(7)); 264 emit showIncidence(n.mid(7));
265#else 265#else
266 emit showIncidence(n.mid(5)); 266 emit showIncidence(n.mid(5));
267#endif 267#endif
268 return; 268 return;
269 } 269 }
270} 270}
271 271
272 272
273class KOBeamPrefs : public QDialog 273class KOBeamPrefs : public QDialog
274{ 274{
275 public: 275 public:
276 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : 276 KOBeamPrefs( QWidget *parent=0, const char *name=0 ) :
277 QDialog( parent, name, true ) 277 QDialog( parent, name, true )
278 { 278 {
279 setCaption( i18n("Beam Options") ); 279 setCaption( i18n("Beam Options") );
280 QVBoxLayout* lay = new QVBoxLayout( this ); 280 QVBoxLayout* lay = new QVBoxLayout( this );
281 lay->setSpacing( 3 ); 281 lay->setSpacing( 3 );
282 lay->setMargin( 3 ); 282 lay->setMargin( 3 );
283 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); 283 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this );
284 lay->addWidget( format ); 284 lay->addWidget( format );
285 format->setExclusive ( true ) ; 285 format->setExclusive ( true ) ;
286 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); 286 QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this );
287 lay->addWidget( time ); time->setExclusive ( true ) ; 287 lay->addWidget( time ); time->setExclusive ( true ) ;
288 vcal = new QRadioButton(" vCalendar ", format ); 288 vcal = new QRadioButton(" vCalendar ", format );
289 ical = new QRadioButton(" iCalendar ", format ); 289 ical = new QRadioButton(" iCalendar ", format );
290 vcal->setChecked( true ); 290 vcal->setChecked( true );
291 tz = new QRadioButton(i18n(" With timezone "), time ); 291 tz = new QRadioButton(i18n(" With timezone "), time );
292 local = new QRadioButton(i18n(" Local time "), time ); 292 local = new QRadioButton(i18n(" Local time "), time );
293 tz->setChecked( true ); 293 tz->setChecked( true );
294 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); 294 QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this );
295 lay->addWidget( ok ); 295 lay->addWidget( ok );
296 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 296 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
297 lay->addWidget( cancel ); 297 lay->addWidget( cancel );
298 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 298 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
299 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 299 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
300 resize( 200, 200 ); 300 resize( 200, 200 );
301 } 301 }
302 302
303 bool beamVcal() { return vcal->isChecked(); } 303 bool beamVcal() { return vcal->isChecked(); }
304 bool beamLocal() { return local->isChecked(); } 304 bool beamLocal() { return local->isChecked(); }
305private: 305private:
306 QRadioButton* vcal, *ical, *local, *tz; 306 QRadioButton* vcal, *ical, *local, *tz;
307}; 307};
308class KOCatPrefs : public QDialog 308class KOCatPrefs : public QDialog
309{ 309{
310 public: 310 public:
311 KOCatPrefs( QWidget *parent=0, const char *name=0 ) : 311 KOCatPrefs( QWidget *parent=0, const char *name=0 ) :
312 QDialog( parent, name, true ) 312 QDialog( parent, name, true )
313 { 313 {
314 setCaption( i18n("Manage new Categories") ); 314 setCaption( i18n("Manage new Categories") );
315 QVBoxLayout* lay = new QVBoxLayout( this ); 315 QVBoxLayout* lay = new QVBoxLayout( this );
316 lay->setSpacing( 3 ); 316 lay->setSpacing( 3 );
317 lay->setMargin( 3 ); 317 lay->setMargin( 3 );
318 QLabel * lab = new QLabel( i18n("After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:"), this ); 318 QLabel * lab = new QLabel( i18n("After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:"), this );
319 lay->addWidget( lab ); 319 lay->addWidget( lab );
320 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this ); 320 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("New categories not in list:"), this );
321 lay->addWidget( format ); 321 lay->addWidget( format );
322 format->setExclusive ( true ) ; 322 format->setExclusive ( true ) ;
323 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 323 addCatBut = new QRadioButton(i18n("Add to category list"), format );
324 new QRadioButton(i18n("Remove from Events/Todos"), format ); 324 new QRadioButton(i18n("Remove from Events/Todos"), format );
325 addCatBut->setChecked( true ); 325 addCatBut->setChecked( true );
326 QPushButton * ok = new QPushButton( i18n("Change category list now!"), this ); 326 QPushButton * ok = new QPushButton( i18n("Change category list now!"), this );
327 lay->addWidget( ok ); 327 lay->addWidget( ok );
328 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 328 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
329 lay->addWidget( cancel ); 329 lay->addWidget( cancel );
330 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 330 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
331 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 331 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
332 resize( 200, 200 ); 332 resize( 200, 200 );
333 } 333 }
334 334
335 bool addCat() { return addCatBut->isChecked(); } 335 bool addCat() { return addCatBut->isChecked(); }
336private: 336private:
337 QRadioButton* addCatBut; 337 QRadioButton* addCatBut;
338}; 338};
339 339
340 340
341 341
342CalendarView::CalendarView( CalendarResources *calendar, 342CalendarView::CalendarView( CalendarResources *calendar,
343 QWidget *parent, const char *name ) 343 QWidget *parent, const char *name )
344 : CalendarViewBase( parent, name ), 344 : CalendarViewBase( parent, name ),
345 mCalendar( calendar ), 345 mCalendar( calendar ),
346 mResourceManager( calendar->resourceManager() ) 346 mResourceManager( calendar->resourceManager() )
347{ 347{
348 348
349 mEventEditor = 0; 349 mEventEditor = 0;
350 mTodoEditor = 0; 350 mTodoEditor = 0;
351 351
352 init(); 352 init();
353} 353}
354 354
355CalendarView::CalendarView( Calendar *calendar, 355CalendarView::CalendarView( Calendar *calendar,
356 QWidget *parent, const char *name ) 356 QWidget *parent, const char *name )
357 : CalendarViewBase( parent, name ), 357 : CalendarViewBase( parent, name ),
358 mCalendar( calendar ), 358 mCalendar( calendar ),
359 mResourceManager( 0 ) 359 mResourceManager( 0 )
360{ 360{
361 361
362 mEventEditor = 0; 362 mEventEditor = 0;
363 mTodoEditor = 0; 363 mTodoEditor = 0;
364 init(); 364 init();
365} 365}
366 366
367void CalendarView::init() 367void CalendarView::init()
368{ 368{
369 mNextAlarmDateTime = QDateTime::currentDateTime(); 369 mNextAlarmDateTime = QDateTime::currentDateTime();
370 setFocusPolicy (NoFocus ); 370 setFocusPolicy (NoFocus );
371 mViewerCallerIsSearchDialog = false; 371 mViewerCallerIsSearchDialog = false;
372 mBlockShowDates = false; 372 mBlockShowDates = false;
373 mConflictingEvent = 0; 373 mConflictingEvent = 0;
374 mDatePickerMode = 0; 374 mDatePickerMode = 0;
375 mCurrentSyncDevice = ""; 375 mCurrentSyncDevice = "";
376 mViewManager = new KOViewManager( this ); 376 mViewManager = new KOViewManager( this );
377 mDialogManager = new KODialogManager( this ); 377 mDialogManager = new KODialogManager( this );
378 mEventViewerDialog = 0; 378 mEventViewerDialog = 0;
379 mModified = false; 379 mModified = false;
380 mReadOnly = false; 380 mReadOnly = false;
381 mSelectedIncidence = 0; 381 mSelectedIncidence = 0;
382 mCalPrinter = 0; 382 mCalPrinter = 0;
383 mFilters.setAutoDelete(true); 383 mFilters.setAutoDelete(true);
384 384
385 mCalendar->registerObserver( this ); 385 mCalendar->registerObserver( this );
386 // TODO: Make sure that view is updated, when calendar is changed. 386 // TODO: Make sure that view is updated, when calendar is changed.
387 387
388 mStorage = new FileStorage( mCalendar ); 388 mStorage = new FileStorage( mCalendar );
389 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 389 mNavigator = new DateNavigator( this, "datevav", mViewManager );
390 390
391 QBoxLayout *topLayout = (QBoxLayout*)layout(); 391 QBoxLayout *topLayout = (QBoxLayout*)layout();
392#ifndef KORG_NOSPLITTER 392#ifndef KORG_NOSPLITTER
393 // create the main layout frames. 393 // create the main layout frames.
394 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 394 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
395 topLayout->addWidget(mPanner); 395 topLayout->addWidget(mPanner);
396 396
397 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 397 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
398 "CalendarView::LeftFrame"); 398 "CalendarView::LeftFrame");
399 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 399 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
400 400
401 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 401 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
402 "CalendarView::DateNavigator" ); 402 "CalendarView::DateNavigator" );
403 403
404 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 404 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
405 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 405 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
406 mTodoList->setNavigator( mNavigator ); 406 mTodoList->setNavigator( mNavigator );
407 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 407 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
408 408
409#ifdef KORG_NORESOURCEVIEW 409#ifdef KORG_NORESOURCEVIEW
410 mResourceView = 0; 410 mResourceView = 0;
411#else 411#else
412 if ( mResourceManager ) { 412 if ( mResourceManager ) {
413 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 413 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
414 mResourceView->updateView(); 414 mResourceView->updateView();
415 connect( mResourceView, SIGNAL( resourcesChanged() ), 415 connect( mResourceView, SIGNAL( resourcesChanged() ),
416 SLOT( updateView() ) ); 416 SLOT( updateView() ) );
417 } else { 417 } else {
418 mResourceView = 0; 418 mResourceView = 0;
419 } 419 }
420#endif 420#endif
421 QWidget *rightBox = new QWidget( mPanner ); 421 QWidget *rightBox = new QWidget( mPanner );
422 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 422 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
423 423
424 mRightFrame = new QWidgetStack( rightBox ); 424 mRightFrame = new QWidgetStack( rightBox );
425 rightLayout->addWidget( mRightFrame, 1 ); 425 rightLayout->addWidget( mRightFrame, 1 );
426 426
427 mLeftFrame = mLeftSplitter; 427 mLeftFrame = mLeftSplitter;
428#else 428#else
429 //QWidget *mainBox = new QWidget( this ); 429 //QWidget *mainBox = new QWidget( this );
430 //QWidget *leftFrame = new QWidget( mainBox ); 430 //QWidget *leftFrame = new QWidget( mainBox );
431 //QBoxLayout * mainBoxLayout; 431 //QBoxLayout * mainBoxLayout;
432 if ( KOPrefs::instance()->mVerticalScreen ) { 432 if ( KOPrefs::instance()->mVerticalScreen ) {
433 //mainBoxLayout = new QVBoxLayout(mainBox); 433 //mainBoxLayout = new QVBoxLayout(mainBox);
434 //leftFrameLayout = new QHBoxLayout(leftFrame ); 434 //leftFrameLayout = new QHBoxLayout(leftFrame );
435 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this ); 435 mMainFrame = new KDGanttMinimizeSplitter( Qt::Vertical, this );
436 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 436 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
437 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);; 437 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, mMainFrame);;
438 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 438 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
439 } else { 439 } else {
440 //mainBoxLayout = new QHBoxLayout(mainBox); 440 //mainBoxLayout = new QHBoxLayout(mainBox);
441 //leftFrameLayout = new QVBoxLayout(leftFrame ); 441 //leftFrameLayout = new QVBoxLayout(leftFrame );
442 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 442 mMainFrame = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
443 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left); 443 mMainFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Left);
444 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame); 444 mLeftFrame = new KDGanttMinimizeSplitter( Qt::Vertical, mMainFrame);
445 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up ); 445 mLeftFrame->setMinimizeDirection ( KDGanttMinimizeSplitter::Up );
446 } 446 }
447 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); 447 mMainFrame->setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
448 //QBoxLayout * leftFrameLayout; 448 //QBoxLayout * leftFrameLayout;
449 topLayout->addWidget( mMainFrame ); 449 topLayout->addWidget( mMainFrame );
450#ifdef DESKTOP_VERSION 450#ifdef DESKTOP_VERSION
451 mDateScrollBar = new QScrollBar ( 1, 365, 1,30, 200,QScrollBar::Horizontal, this ); 451 mDateScrollBar = new QScrollBar ( 1, 365, 1,30, 200,QScrollBar::Horizontal, this );
452 topLayout->addWidget( mDateScrollBar ); 452 topLayout->addWidget( mDateScrollBar );
453 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) ); 453 connect( mDateScrollBar, SIGNAL( valueChanged ( int ) ),this, SLOT( scrollBarValue( int )) );
454 if ( QApplication::desktop()->width() < 800 ) 454 if ( QApplication::desktop()->width() < 800 )
455 mDateScrollBar->hide(); 455 mDateScrollBar->hide();
456#endif 456#endif
457 //mainBoxLayout->addWidget (mLeftFrame); 457 //mainBoxLayout->addWidget (mLeftFrame);
458 mDateNavigator = new DateNavigatorContainer( mLeftFrame, 458 mDateNavigator = new DateNavigatorContainer( mLeftFrame,
459 "CalendarView::DateNavigator" ); 459 "CalendarView::DateNavigator" );
460#if 0 460#if 0
461 // FIXME 461 // FIXME
462 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE, 462 mDateNavigator = new KDateNavigator(mLeftFrame, mCalendar, TRUE,
463 "CalendarView::DateNavigator", QDate::currentDate()); 463 "CalendarView::DateNavigator", QDate::currentDate());
464#endif 464#endif
465 // mDateNavigator->blockSignals( true ); 465 // mDateNavigator->blockSignals( true );
466 //leftFrameLayout->addWidget( mDateNavigator ); 466 //leftFrameLayout->addWidget( mDateNavigator );
467 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall"); 467 mTodoList = new KOTodoView(mCalendar, mLeftFrame, "todolistsmall");
468 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView"); 468 mFilterView = new KOFilterView(&mFilters,mLeftFrame,"CalendarView::FilterView");
469 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView"); 469 mCalEditView = new KOCalEditView(mLeftFrame,"CalendarView::CaleditView");
470 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 470 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
471 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 471 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
472 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) ); 472 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) );
473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 473 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
474 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) ); 474 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) );
475 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) ); 475 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
476 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) ); 476 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
477 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) ); 477 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
478 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() )); 478 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() ));
479 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) ); 479 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) );
480 connect( mCalEditView, SIGNAL( requestCalendarInfo( int ) ),this, SLOT( displayCalendarInfo( int ) ) );
480 481
482
481 mTodoList->setNavigator( mNavigator ); 483 mTodoList->setNavigator( mNavigator );
482#if 0 484#if 0
483 if ( QApplication::desktop()->width() < 480 ) { 485 if ( QApplication::desktop()->width() < 480 ) {
484 leftFrameLayout->addWidget(mFilterView); 486 leftFrameLayout->addWidget(mFilterView);
485 leftFrameLayout->addWidget(mTodoList, 2 ); 487 leftFrameLayout->addWidget(mTodoList, 2 );
486 488
487 } else { 489 } else {
488 leftFrameLayout->addWidget(mTodoList,2 ); 490 leftFrameLayout->addWidget(mTodoList,2 );
489 leftFrameLayout->addWidget(mFilterView ); 491 leftFrameLayout->addWidget(mFilterView );
490 } 492 }
491#endif 493#endif
492 mFilterView->hide(); 494 mFilterView->hide();
493 mCalEditView->hide(); 495 mCalEditView->hide();
494 QWidget *rightBox = new QWidget( mMainFrame ); 496 QWidget *rightBox = new QWidget( mMainFrame );
495 //mainBoxLayout->addWidget ( rightBox, 10 ); 497 //mainBoxLayout->addWidget ( rightBox, 10 );
496 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 498 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
497 mRightFrame = new QWidgetStack( rightBox ); 499 mRightFrame = new QWidgetStack( rightBox );
498 rightLayout->addWidget( mRightFrame, 10 ); 500 rightLayout->addWidget( mRightFrame, 10 );
499 501
500 //mLeftFrame = (QWidget *)leftFrame; 502 //mLeftFrame = (QWidget *)leftFrame;
501 if ( KOPrefs::instance()->mVerticalScreen ) { 503 if ( KOPrefs::instance()->mVerticalScreen ) {
502 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 504 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
503 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 505 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
504 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 506 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
505 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 507 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
506 } else { 508 } else {
507 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 509 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
508 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 510 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
509 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 511 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
510 } 512 }
511 if ( !KOPrefs::instance()->mShowDateNavigator) 513 if ( !KOPrefs::instance()->mShowDateNavigator)
512 mDateNavigator->hide(); 514 mDateNavigator->hide();
513 //qDebug("Calendarview Size %d %d ", width(), height()); 515 //qDebug("Calendarview Size %d %d ", width(), height());
514#endif 516#endif
515 517
516 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 518 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
517 SLOT( showDates( const KCal::DateList & ) ) ); 519 SLOT( showDates( const KCal::DateList & ) ) );
518 520
519 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 521 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
520 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 522 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
521 523
522 524
523 525
524 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 526 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
525 mViewManager, SLOT( showMonth( const QDate & ) ) ); 527 mViewManager, SLOT( showMonth( const QDate & ) ) );
526 528
527 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 529 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
528 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 530 mNavigator, SLOT( selectWeek( const QDate & ) ) );
529 531
530 connect( mDateNavigator, SIGNAL( goPrevYear() ), 532 connect( mDateNavigator, SIGNAL( goPrevYear() ),
531 mNavigator, SLOT( selectPreviousYear() ) ); 533 mNavigator, SLOT( selectPreviousYear() ) );
532 connect( mDateNavigator, SIGNAL( goNextYear() ), 534 connect( mDateNavigator, SIGNAL( goNextYear() ),
533 mNavigator, SLOT( selectNextYear() ) ); 535 mNavigator, SLOT( selectNextYear() ) );
534 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 536 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
535 mNavigator, SLOT( selectPreviousMonth() ) ); 537 mNavigator, SLOT( selectPreviousMonth() ) );
536 connect( mDateNavigator, SIGNAL( goNextMonth() ), 538 connect( mDateNavigator, SIGNAL( goNextMonth() ),
537 mNavigator, SLOT( selectNextMonth() ) ); 539 mNavigator, SLOT( selectNextMonth() ) );
538 540
539 connect( mDateNavigator, SIGNAL( goPrevious() ), 541 connect( mDateNavigator, SIGNAL( goPrevious() ),
540 mNavigator, SLOT( selectPrevious() ) ); 542 mNavigator, SLOT( selectPrevious() ) );
541 connect( mDateNavigator, SIGNAL( goNext() ), 543 connect( mDateNavigator, SIGNAL( goNext() ),
542 mNavigator, SLOT( selectNext() ) ); 544 mNavigator, SLOT( selectNext() ) );
543 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 545 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
544 mNavigator, SLOT( slotMonthSelect( int ) ) ); 546 mNavigator, SLOT( slotMonthSelect( int ) ) );
545 547
546 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 548 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
547 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 549 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
548#if 0 550#if 0
549 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 551 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
550 SLOT( incidenceAdded( Incidence *) ) ); 552 SLOT( incidenceAdded( Incidence *) ) );
551#endif 553#endif
552 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 554 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
553 555
554 connect( this, SIGNAL( configChanged() ), 556 connect( this, SIGNAL( configChanged() ),
555 mDateNavigator, SLOT( updateConfig() ) ); 557 mDateNavigator, SLOT( updateConfig() ) );
556 558
557 connect( mTodoList, SIGNAL( newTodoSignal() ), 559 connect( mTodoList, SIGNAL( newTodoSignal() ),
558 SLOT( newTodo() ) ); 560 SLOT( newTodo() ) );
559 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 561 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
560 SLOT( newSubTodo( Todo * ) ) ); 562 SLOT( newSubTodo( Todo * ) ) );
561 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 563 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
562 SLOT( editTodo( Todo * ) ) ); 564 SLOT( editTodo( Todo * ) ) );
563 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 565 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
564 SLOT( showTodo( Todo *) ) ); 566 SLOT( showTodo( Todo *) ) );
565 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 567 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
566 SLOT( deleteTodo( Todo *) ) ); 568 SLOT( deleteTodo( Todo *) ) );
567 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 569 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
568 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 570 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
569 SLOT( purgeCompleted() ) ); 571 SLOT( purgeCompleted() ) );
570 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 572 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
571 SIGNAL( todoModified( Todo *, int ) ) ); 573 SIGNAL( todoModified( Todo *, int ) ) );
572 574
573 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 575 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
574 this, SLOT ( cloneIncidence( Incidence * ) ) ); 576 this, SLOT ( cloneIncidence( Incidence * ) ) );
575 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 577 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
576 this, SLOT (cancelIncidence( Incidence * ) ) ); 578 this, SLOT (cancelIncidence( Incidence * ) ) );
577 579
578 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 580 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
579 this, SLOT ( moveIncidence( Incidence * ) ) ); 581 this, SLOT ( moveIncidence( Incidence * ) ) );
580 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 582 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
581 this, SLOT ( beamIncidence( Incidence * ) ) ); 583 this, SLOT ( beamIncidence( Incidence * ) ) );
582 584
583 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 585 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
584 this, SLOT ( todo_unsub( Todo * ) ) ); 586 this, SLOT ( todo_unsub( Todo * ) ) );
585 587
586 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 588 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
587 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 589 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
588 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 590 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
589 SLOT( updateTodo( Todo *, int ) ) ); 591 SLOT( updateTodo( Todo *, int ) ) );
590 connect( this, SIGNAL( todoModified( Todo *, int )), this, 592 connect( this, SIGNAL( todoModified( Todo *, int )), this,
591 SLOT( changeTodoDisplay( Todo *, int ) ) ); 593 SLOT( changeTodoDisplay( Todo *, int ) ) );
592 594
593 595
594 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 596 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
595 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 597 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
596 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 598 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
597 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 599 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
598 600
599 601
600 602
601 603
602 604
603 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 605 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
604 SLOT(checkClipboard())); 606 SLOT(checkClipboard()));
605 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 607 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
606 SLOT( processTodoListSelection( Incidence * ) ) ); 608 SLOT( processTodoListSelection( Incidence * ) ) );
607 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 609 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
608 610
609 // kdDebug() << "CalendarView::CalendarView() done" << endl; 611 // kdDebug() << "CalendarView::CalendarView() done" << endl;
610 612
611 mDateFrame = new QVBox(0,0,WType_Popup); 613 mDateFrame = new QVBox(0,0,WType_Popup);
612 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 614 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
613 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 615 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
614 mDateFrame->setLineWidth(3); 616 mDateFrame->setLineWidth(3);
615 mDateFrame->hide(); 617 mDateFrame->hide();
616 mDateFrame->setCaption( i18n( "Pick a date to display")); 618 mDateFrame->setCaption( i18n( "Pick a date to display"));
617 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 619 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
618 620
619 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 621 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
620 622
621 mEventEditor = mDialogManager->getEventEditor(); 623 mEventEditor = mDialogManager->getEventEditor();
622 mTodoEditor = mDialogManager->getTodoEditor(); 624 mTodoEditor = mDialogManager->getTodoEditor();
623 625
624 mFlagEditDescription = false; 626 mFlagEditDescription = false;
625 627
626 mSuspendTimer = new QTimer( this ); 628 mSuspendTimer = new QTimer( this );
627 mAlarmTimer = new QTimer( this ); 629 mAlarmTimer = new QTimer( this );
628 mRecheckAlarmTimer = new QTimer( this ); 630 mRecheckAlarmTimer = new QTimer( this );
629 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 631 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
630 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 632 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
631 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 633 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
632 mAlarmDialog = new AlarmDialog( this ); 634 mAlarmDialog = new AlarmDialog( this );
633 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 635 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
634 mAlarmDialog->setServerNotification( false ); 636 mAlarmDialog->setServerNotification( false );
635 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 637 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
636 638
637 639
638#ifndef DESKTOP_VERSION 640#ifndef DESKTOP_VERSION
639//US listen for arriving address resultsets 641//US listen for arriving address resultsets
640 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 642 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
641 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 643 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
642#endif 644#endif
643 mDateNavigator->setCalendar( mCalendar ); 645 mDateNavigator->setCalendar( mCalendar );
644} 646}
645 647
646 648
647CalendarView::~CalendarView() 649CalendarView::~CalendarView()
648{ 650{
649 // kdDebug() << "~CalendarView()" << endl; 651 // kdDebug() << "~CalendarView()" << endl;
650 //qDebug("CalendarView::~CalendarView() "); 652 //qDebug("CalendarView::~CalendarView() ");
651 delete mDialogManager; 653 delete mDialogManager;
652 delete mViewManager; 654 delete mViewManager;
653 delete mStorage; 655 delete mStorage;
654 delete mDateFrame ; 656 delete mDateFrame ;
655 delete mEventViewerDialog; 657 delete mEventViewerDialog;
656 //kdDebug() << "~CalendarView() done" << endl; 658 //kdDebug() << "~CalendarView() done" << endl;
657} 659}
658 660
659 661
660void CalendarView::nextConflict( bool all, bool allday ) 662void CalendarView::nextConflict( bool all, bool allday )
661{ 663{
662 static bool block = false; 664 static bool block = false;
663 if ( block ) return; 665 if ( block ) return;
664 block = true; 666 block = true;
665 QPtrList<Event> testlist = mCalendar->events(); 667 QPtrList<Event> testlist = mCalendar->events();
666 Event * test = testlist.first(); 668 Event * test = testlist.first();
667 while ( test ) { 669 while ( test ) {
668 test->setTagged( false ); 670 test->setTagged( false );
669 test = testlist.next(); 671 test = testlist.next();
670 } 672 }
671 QTime st ( 0,0,0); 673 QTime st ( 0,0,0);
672 if ( mViewManager->currentView() == mViewManager->agendaView() ) 674 if ( mViewManager->currentView() == mViewManager->agendaView() )
673 st = mViewManager->agendaView()->agenda()->getEndTime(); 675 st = mViewManager->agendaView()->agenda()->getEndTime();
674 //qDebug("time %s ", st.toString().latin1()); 676 //qDebug("time %s ", st.toString().latin1());
675 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st); 677 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st);
676 QDateTime conflict; 678 QDateTime conflict;
677 QDateTime retVal; 679 QDateTime retVal;
678 bool found = false; 680 bool found = false;
679 Event * cE = 0; 681 Event * cE = 0;
680 Event * cE2 = 0; 682 Event * cE2 = 0;
681 QPtrList<Event> testlist2 = testlist; 683 QPtrList<Event> testlist2 = testlist;
682 test = testlist.first(); 684 test = testlist.first();
683 bool skip = false; 685 bool skip = false;
684 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 686 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
685 //QTime tm; 687 //QTime tm;
686 //tm.start(); 688 //tm.start();
687 while ( test ) { 689 while ( test ) {
688 qApp->processEvents(); 690 qApp->processEvents();
689 skip = false; 691 skip = false;
690 if ( !all ) skip = ( allday != test->doesFloat() ); 692 if ( !all ) skip = ( allday != test->doesFloat() );
691 if ( !skip ) { 693 if ( !skip ) {
692 if ( found ) 694 if ( found )
693 skip = !test->matchTime( &startDT, &conflict ); 695 skip = !test->matchTime( &startDT, &conflict );
694 else 696 else
695 skip = !test->matchTime( &startDT, 0 ); 697 skip = !test->matchTime( &startDT, 0 );
696 } 698 }
697 if ( !skip ) { 699 if ( !skip ) {
698 Event * test2 = testlist2.first(); 700 Event * test2 = testlist2.first();
699 while ( test2 ) { 701 while ( test2 ) {
700 skip = test2->isTagged(); 702 skip = test2->isTagged();
701 if ( !skip && !all ) skip = ( allday != test2->doesFloat() ); 703 if ( !skip && !all ) skip = ( allday != test2->doesFloat() );
702 if ( !skip ) { 704 if ( !skip ) {
703 if ( found ) 705 if ( found )
704 skip = !test2->matchTime( &startDT, &conflict ); 706 skip = !test2->matchTime( &startDT, &conflict );
705 else 707 else
706 skip = !test2->matchTime( &startDT, 0 ); 708 skip = !test2->matchTime( &startDT, 0 );
707 } 709 }
708 if ( !skip ) { 710 if ( !skip ) {
709 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) { 711 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
710 //qDebug("overlap "); 712 //qDebug("overlap ");
711 if ( ! found ) { 713 if ( ! found ) {
712 if ( retVal >= startDT ) { 714 if ( retVal >= startDT ) {
713 conflict = retVal; 715 conflict = retVal;
714 cE = test; 716 cE = test;
715 cE2 = test2; 717 cE2 = test2;
716 found = true; 718 found = true;
717 } 719 }
718 } else { 720 } else {
719 if ( retVal >= startDT && retVal < conflict ) { 721 if ( retVal >= startDT && retVal < conflict ) {
720 conflict = retVal; 722 conflict = retVal;
721 cE = test; 723 cE = test;
722 cE2 = test2; 724 cE2 = test2;
723 } 725 }
724 } 726 }
725 } 727 }
726 } 728 }
727 test2 = testlist2.next(); 729 test2 = testlist2.next();
728 } 730 }
729 } 731 }
730 test->setTagged( true ); 732 test->setTagged( true );
731 test = testlist.next(); 733 test = testlist.next();
732 } 734 }
733 //qDebug("Search time : %d", tm.elapsed()); 735 //qDebug("Search time : %d", tm.elapsed());
734 if ( found ) { 736 if ( found ) {
735 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 737 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
736 mViewManager->showDayView(); 738 mViewManager->showDayView();
737 mNavigator->slotDaySelect( conflict.date() ); 739 mNavigator->slotDaySelect( conflict.date() );
738 int hour = conflict.time().hour(); 740 int hour = conflict.time().hour();
739 mViewManager->agendaView()->setStartHour( hour ); 741 mViewManager->agendaView()->setStartHour( hour );
740 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) ); 742 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
741 block = false; 743 block = false;
742 return; 744 return;
743 } 745 }
744 746
745 topLevelWidget()->setCaption( i18n("No conflict found") ); 747 topLevelWidget()->setCaption( i18n("No conflict found") );
746 //qDebug("No conflict found "); 748 //qDebug("No conflict found ");
747 block = false; 749 block = false;
748 return; 750 return;
749} 751}
750 752
751void CalendarView::conflictAll() 753void CalendarView::conflictAll()
752{ 754{
753 nextConflict ( true, true ); 755 nextConflict ( true, true );
754} 756}
755void CalendarView::conflictAllday() 757void CalendarView::conflictAllday()
756{ 758{
757 nextConflict ( false, true ); 759 nextConflict ( false, true );
758} 760}
759void CalendarView::conflictNotAll() 761void CalendarView::conflictNotAll()
760{ 762{
761 nextConflict ( false, false ); 763 nextConflict ( false, false );
762} 764}
763 765
764void CalendarView::setCalReadOnly( int id, bool readO ) 766void CalendarView::setCalReadOnly( int id, bool readO )
765{ 767{
766 if ( readO ) { 768 if ( readO ) {
767 emit save(); 769 emit save();
768 } 770 }
769 mCalendar->setReadOnly( id, readO ); 771 mCalendar->setReadOnly( id, readO );
770} 772}
771void CalendarView::setScrollBarStep(int val ) 773void CalendarView::setScrollBarStep(int val )
772{ 774{
773#ifdef DESKTOP_VERSION 775#ifdef DESKTOP_VERSION
774 mDateScrollBar->setLineStep ( val ); 776 mDateScrollBar->setLineStep ( val );
775#endif 777#endif
776} 778}
777void CalendarView::scrollBarValue(int val ) 779void CalendarView::scrollBarValue(int val )
778{ 780{
779#ifdef DESKTOP_VERSION 781#ifdef DESKTOP_VERSION
780 if ( QApplication::desktop()->width() < 800 ) return; 782 if ( QApplication::desktop()->width() < 800 ) return;
781 static bool block = false; 783 static bool block = false;
782 if ( block ) return; 784 if ( block ) return;
783 block = true; 785 block = true;
784 int count = mNavigator->selectedDates().count(); 786 int count = mNavigator->selectedDates().count();
785 int day = mNavigator->selectedDates().first().dayOfYear(); 787 int day = mNavigator->selectedDates().first().dayOfYear();
786 int stepdays = val; 788 int stepdays = val;
787 if ( mDateScrollBar->lineStep () <= count ) { 789 if ( mDateScrollBar->lineStep () <= count ) {
788 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 790 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
789 //qDebug("VAL %d ",val ); 791 //qDebug("VAL %d ",val );
790 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 792 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
791 stepdays = day+stepdays; 793 stepdays = day+stepdays;
792 if ( stepdays < 0 ) stepdays = 0; 794 if ( stepdays < 0 ) stepdays = 0;
793 } 795 }
794 if ( stepdays == day ) { 796 if ( stepdays == day ) {
795 block = false; 797 block = false;
796 return; 798 return;
797 } 799 }
798 int year = mNavigator->selectedDates().first().year(); 800 int year = mNavigator->selectedDates().first().year();
799 QDate d ( year,1,1 ); 801 QDate d ( year,1,1 );
800 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 802 mNavigator->selectDates( d.addDays( stepdays-1) , count );
801 block = false; 803 block = false;
802#endif 804#endif
803 805
804} 806}
805void CalendarView::updateView(const QDate &start, const QDate &end) 807void CalendarView::updateView(const QDate &start, const QDate &end)
806{ 808{
807#ifdef DESKTOP_VERSION 809#ifdef DESKTOP_VERSION
808 if ( ! mDateScrollBar->draggingSlider () ) { 810 if ( ! mDateScrollBar->draggingSlider () ) {
809 int dof = start.dayOfYear(); 811 int dof = start.dayOfYear();
810 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 812 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
811 if ( dof != mDateScrollBar->value() ) { 813 if ( dof != mDateScrollBar->value() ) {
812 mDateScrollBar->blockSignals( true ); 814 mDateScrollBar->blockSignals( true );
813 mDateScrollBar->setValue( start.dayOfYear()); 815 mDateScrollBar->setValue( start.dayOfYear());
814 mDateScrollBar->blockSignals( false ); 816 mDateScrollBar->blockSignals( false );
815 } 817 }
816 } 818 }
817#endif 819#endif
818 mTodoList->updateView(); 820 mTodoList->updateView();
819 mViewManager->updateView(start, end); 821 mViewManager->updateView(start, end);
820 //mDateNavigator->updateView(); 822 //mDateNavigator->updateView();
821} 823}
822 824
823 825
824 826
825void CalendarView::checkFiles() 827void CalendarView::checkFiles()
826{ 828{
827 QString message; 829 QString message;
828 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 830 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
829 KopiCalendarFile * cal = calendars.first(); 831 KopiCalendarFile * cal = calendars.first();
830 while ( cal ) { 832 while ( cal ) {
831 if ( cal->mErrorOnLoad ) { 833 if ( cal->mErrorOnLoad ) {
832 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 834 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
833 } 835 }
834 cal = calendars.next(); 836 cal = calendars.next();
835 } 837 }
836 if ( !message.isEmpty() ) { 838 if ( !message.isEmpty() ) {
837 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 839 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
838 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed")); 840 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed"));
839 } 841 }
840 static bool firstTime = true; 842 static bool firstTime = true;
841 if ( firstTime ) { 843 if ( firstTime ) {
842 firstTime = false; 844 firstTime = false;
843 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 845 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
844 } 846 }
845} 847}
846void CalendarView::checkAlarms() 848void CalendarView::checkAlarms()
847{ 849{
848 KConfig *config = KOGlobals::config(); 850 KConfig *config = KOGlobals::config();
849 config->setGroup( "AppRun" ); 851 config->setGroup( "AppRun" );
850 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 852 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
851 int daysto = dt.daysTo( QDate::currentDate() ); 853 int daysto = dt.daysTo( QDate::currentDate() );
852 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 854 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
853 dt = dt.addDays( days ); 855 dt = dt.addDays( days );
854 int secto = dt.secsTo( QDateTime::currentDateTime() ); 856 int secto = dt.secsTo( QDateTime::currentDateTime() );
855 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 857 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
856 //qDebug("KO: Reading program stop %d ", secs); 858 //qDebug("KO: Reading program stop %d ", secs);
857 //secs -= ( 3600 * 24*3 ); // debug only 859 //secs -= ( 3600 * 24*3 ); // debug only
858 QDateTime latest = dt.addSecs ( secs ); 860 QDateTime latest = dt.addSecs ( secs );
859 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 861 qDebug("KO: Last termination on %s ", latest.toString().latin1());
860 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 862 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
861 QPtrList<Incidence> el = mCalendar->rawIncidences(); 863 QPtrList<Incidence> el = mCalendar->rawIncidences();
862 QPtrList<Incidence> al; 864 QPtrList<Incidence> al;
863 Incidence* inL = el.first(); 865 Incidence* inL = el.first();
864 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 866 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
@@ -4777,384 +4779,398 @@ void CalendarView::takeOverCalendar()
4777 todos.at(i)->setReadOnly(false); 4779 todos.at(i)->setReadOnly(false);
4778 } 4780 }
4779 4781
4780 QPtrList<Journal> journals = mCalendar->journals(); 4782 QPtrList<Journal> journals = mCalendar->journals();
4781 for(uint i=0; i<journals.count(); ++i) { 4783 for(uint i=0; i<journals.count(); ++i) {
4782 journals.at(i)->setOrganizer(KOPrefs::instance()->email()); 4784 journals.at(i)->setOrganizer(KOPrefs::instance()->email());
4783 journals.at(i)->recreate(); 4785 journals.at(i)->recreate();
4784 journals.at(i)->setReadOnly(false); 4786 journals.at(i)->setReadOnly(false);
4785 } 4787 }
4786 4788
4787 updateView(); 4789 updateView();
4788} 4790}
4789 4791
4790void CalendarView::showIntro() 4792void CalendarView::showIntro()
4791{ 4793{
4792 kdDebug() << "To be implemented." << endl; 4794 kdDebug() << "To be implemented." << endl;
4793} 4795}
4794 4796
4795QWidgetStack *CalendarView::viewStack() 4797QWidgetStack *CalendarView::viewStack()
4796{ 4798{
4797 return mRightFrame; 4799 return mRightFrame;
4798} 4800}
4799 4801
4800QWidget *CalendarView::leftFrame() 4802QWidget *CalendarView::leftFrame()
4801{ 4803{
4802 return ( QWidget *)mLeftFrame; 4804 return ( QWidget *)mLeftFrame;
4803} 4805}
4804 4806
4805DateNavigator *CalendarView::dateNavigator() 4807DateNavigator *CalendarView::dateNavigator()
4806{ 4808{
4807 return mNavigator; 4809 return mNavigator;
4808} 4810}
4809 4811
4810KDateNavigator* CalendarView::dateNavigatorWidget() 4812KDateNavigator* CalendarView::dateNavigatorWidget()
4811{ 4813{
4812 return mDateNavigator->navigatorView(); 4814 return mDateNavigator->navigatorView();
4813} 4815}
4814void CalendarView::toggleDateNavigatorWidget() 4816void CalendarView::toggleDateNavigatorWidget()
4815{ 4817{
4816 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ; 4818 KOPrefs::instance()->mShowDateNavigator = !KOPrefs::instance()->mShowDateNavigator ;
4817 4819
4818 if (!KOPrefs::instance()->mShowDateNavigator ) 4820 if (!KOPrefs::instance()->mShowDateNavigator )
4819 mDateNavigator->hide(); 4821 mDateNavigator->hide();
4820 else 4822 else
4821 mDateNavigator->show(); 4823 mDateNavigator->show();
4822} 4824}
4823void CalendarView::addView(KOrg::BaseView *view) 4825void CalendarView::addView(KOrg::BaseView *view)
4824{ 4826{
4825 mViewManager->addView(view); 4827 mViewManager->addView(view);
4826} 4828}
4827 4829
4828void CalendarView::showView(KOrg::BaseView *view) 4830void CalendarView::showView(KOrg::BaseView *view)
4829{ 4831{
4830 mViewManager->showView(view, mLeftFrame->isVisible()); 4832 mViewManager->showView(view, mLeftFrame->isVisible());
4831} 4833}
4832 4834
4833Incidence *CalendarView::currentSelection() 4835Incidence *CalendarView::currentSelection()
4834{ 4836{
4835 return mViewManager->currentSelection(); 4837 return mViewManager->currentSelection();
4836} 4838}
4837void CalendarView::toggleAllDaySize() 4839void CalendarView::toggleAllDaySize()
4838{ 4840{
4839 /* 4841 /*
4840 if ( KOPrefs::instance()->mAllDaySize > 47 ) 4842 if ( KOPrefs::instance()->mAllDaySize > 47 )
4841 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2; 4843 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize /2;
4842 else 4844 else
4843 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2; 4845 KOPrefs::instance()->mAllDaySize = KOPrefs::instance()->mAllDaySize *2;
4844 */ 4846 */
4845 viewManager()->agendaView()->toggleAllDay(); 4847 viewManager()->agendaView()->toggleAllDay();
4846} 4848}
4847void CalendarView::toggleExpand() 4849void CalendarView::toggleExpand()
4848{ 4850{
4849 // if ( mLeftFrame->isHidden() ) { 4851 // if ( mLeftFrame->isHidden() ) {
4850 // mLeftFrame->show(); 4852 // mLeftFrame->show();
4851 // emit calendarViewExpanded( false ); 4853 // emit calendarViewExpanded( false );
4852 // } else { 4854 // } else {
4853 // mLeftFrame->hide(); 4855 // mLeftFrame->hide();
4854 // emit calendarViewExpanded( true ); 4856 // emit calendarViewExpanded( true );
4855 // } 4857 // }
4856 //qDebug(" CalendarView::toggleExpand()"); 4858 //qDebug(" CalendarView::toggleExpand()");
4857 globalFlagBlockAgenda = 1; 4859 globalFlagBlockAgenda = 1;
4858 emit calendarViewExpanded( !mLeftFrame->isHidden() ); 4860 emit calendarViewExpanded( !mLeftFrame->isHidden() );
4859 globalFlagBlockAgenda = 5; 4861 globalFlagBlockAgenda = 5;
4860 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() ); 4862 mViewManager->raiseCurrentView( !mLeftFrame->isHidden() );
4861 //mViewManager->showView( 0, true ); 4863 //mViewManager->showView( 0, true );
4862} 4864}
4863 4865
4864void CalendarView::calendarModified( bool modified, Calendar * ) 4866void CalendarView::calendarModified( bool modified, Calendar * )
4865{ 4867{
4866 setModified( modified ); 4868 setModified( modified );
4867} 4869}
4868 4870
4869Todo *CalendarView::selectedTodo() 4871Todo *CalendarView::selectedTodo()
4870{ 4872{
4871 Incidence *incidence = currentSelection(); 4873 Incidence *incidence = currentSelection();
4872 if ( incidence && incidence->typeID() == todoID ) { 4874 if ( incidence && incidence->typeID() == todoID ) {
4873 return static_cast<Todo *>( incidence ); 4875 return static_cast<Todo *>( incidence );
4874 } 4876 }
4875 4877
4876 incidence = mTodoList->selectedIncidences().first(); 4878 incidence = mTodoList->selectedIncidences().first();
4877 if ( incidence && incidence->typeID() == todoID ) { 4879 if ( incidence && incidence->typeID() == todoID ) {
4878 return static_cast<Todo *>( incidence ); 4880 return static_cast<Todo *>( incidence );
4879 } 4881 }
4880 4882
4881 return 0; 4883 return 0;
4882} 4884}
4883 4885
4884void CalendarView::showIncidence() 4886void CalendarView::showIncidence()
4885{ 4887{
4886 mViewerCallerIsSearchDialog = false; 4888 mViewerCallerIsSearchDialog = false;
4887 Incidence *incidence = currentSelection(); 4889 Incidence *incidence = currentSelection();
4888 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4890 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4889 if ( incidence ) { 4891 if ( incidence ) {
4890 ShowIncidenceVisitor v; 4892 ShowIncidenceVisitor v;
4891 v.act( incidence, this ); 4893 v.act( incidence, this );
4892 } 4894 }
4893} 4895}
4894void CalendarView::editIncidenceDescription() 4896void CalendarView::editIncidenceDescription()
4895{ 4897{
4896 mFlagEditDescription = true; 4898 mFlagEditDescription = true;
4897 editIncidence(); 4899 editIncidence();
4898 mFlagEditDescription = false; 4900 mFlagEditDescription = false;
4899} 4901}
4900void CalendarView::editIncidence() 4902void CalendarView::editIncidence()
4901{ 4903{
4902 // qDebug("editIncidence() "); 4904 // qDebug("editIncidence() ");
4903 Incidence *incidence = currentSelection(); 4905 Incidence *incidence = currentSelection();
4904 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4906 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4905 if ( incidence ) { 4907 if ( incidence ) {
4906 EditIncidenceVisitor v; 4908 EditIncidenceVisitor v;
4907 v.act( incidence, this ); 4909 v.act( incidence, this );
4908 } 4910 }
4909} 4911}
4910 4912
4911void CalendarView::deleteIncidence() 4913void CalendarView::deleteIncidence()
4912{ 4914{
4913 Incidence *incidence = currentSelection(); 4915 Incidence *incidence = currentSelection();
4914 if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); 4916 if ( !incidence ) incidence = mTodoList->selectedIncidences().first();
4915 if ( incidence ) { 4917 if ( incidence ) {
4916 deleteIncidence(incidence); 4918 deleteIncidence(incidence);
4917 } 4919 }
4918} 4920}
4919void CalendarView::showIncidence(QString uid) 4921void CalendarView::showIncidence(QString uid)
4920{ 4922{
4921 Incidence *inc = mCalendar->incidence( uid ); 4923 Incidence *inc = mCalendar->incidence( uid );
4922 if ( inc ) 4924 if ( inc )
4923 showIncidence( inc ); 4925 showIncidence( inc );
4924} 4926}
4925void CalendarView::showIncidence(Incidence *incidence) 4927void CalendarView::showIncidence(Incidence *incidence)
4926{ 4928{
4927 mViewerCallerIsSearchDialog = false; 4929 mViewerCallerIsSearchDialog = false;
4928 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); 4930 //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() );
4929 if ( sender() && mDialogManager->getSearchDialog() ) { 4931 if ( sender() && mDialogManager->getSearchDialog() ) {
4930 if ( sender () == mDialogManager->getSearchDialog()->listview() ) { 4932 if ( sender () == mDialogManager->getSearchDialog()->listview() ) {
4931 mViewerCallerIsSearchDialog = true; 4933 mViewerCallerIsSearchDialog = true;
4932 } 4934 }
4933 } 4935 }
4934 if ( incidence ) { 4936 if ( incidence ) {
4935 ShowIncidenceVisitor v; 4937 ShowIncidenceVisitor v;
4936 v.act( incidence, this ); 4938 v.act( incidence, this );
4937 } 4939 }
4938} 4940}
4939 4941
4940void CalendarView::editIncidence(Incidence *incidence) 4942void CalendarView::editIncidence(Incidence *incidence)
4941{ 4943{
4942 if ( incidence ) { 4944 if ( incidence ) {
4943 4945
4944 EditIncidenceVisitor v; 4946 EditIncidenceVisitor v;
4945 v.act( incidence, this ); 4947 v.act( incidence, this );
4946 4948
4947 } 4949 }
4948} 4950}
4949 4951
4950void CalendarView::deleteIncidence(Incidence *incidence) 4952void CalendarView::deleteIncidence(Incidence *incidence)
4951{ 4953{
4952 //qDebug(" CalendarView::deleteIncidence "); 4954 //qDebug(" CalendarView::deleteIncidence ");
4953 if ( incidence == 0 ) { 4955 if ( incidence == 0 ) {
4954 updateView(); 4956 updateView();
4955 emit updateSearchDialog(); 4957 emit updateSearchDialog();
4956 return; 4958 return;
4957 } 4959 }
4958 if ( incidence ) { 4960 if ( incidence ) {
4959 DeleteIncidenceVisitor v; 4961 DeleteIncidenceVisitor v;
4960 v.act( incidence, this ); 4962 v.act( incidence, this );
4961 } 4963 }
4962} 4964}
4963 4965
4964 4966
4965void CalendarView::lookForOutgoingMessages() 4967void CalendarView::lookForOutgoingMessages()
4966{ 4968{
4967 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 4969 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
4968 ogd->loadMessages(); 4970 ogd->loadMessages();
4969} 4971}
4970 4972
4971void CalendarView::lookForIncomingMessages() 4973void CalendarView::lookForIncomingMessages()
4972{ 4974{
4973 IncomingDialog *icd = mDialogManager->incomingDialog(); 4975 IncomingDialog *icd = mDialogManager->incomingDialog();
4974 icd->retrieve(); 4976 icd->retrieve();
4975} 4977}
4976 4978
4977bool CalendarView::removeCompletedSubTodos( Todo* t ) 4979bool CalendarView::removeCompletedSubTodos( Todo* t )
4978{ 4980{
4979 bool deleteTodo = true; 4981 bool deleteTodo = true;
4980 QPtrList<Incidence> subTodos; 4982 QPtrList<Incidence> subTodos;
4981 Incidence *aTodo; 4983 Incidence *aTodo;
4982 subTodos = t->relations(); 4984 subTodos = t->relations();
4983 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 4985 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
4984 if (! removeCompletedSubTodos( (Todo*) aTodo )) 4986 if (! removeCompletedSubTodos( (Todo*) aTodo ))
4985 deleteTodo = false; 4987 deleteTodo = false;
4986 } 4988 }
4987 if ( deleteTodo ) { 4989 if ( deleteTodo ) {
4988 if ( t->isCompleted() && !t->doesRecur()) { 4990 if ( t->isCompleted() && !t->doesRecur()) {
4989 checkExternalId( t ); 4991 checkExternalId( t );
4990 mCalendar->deleteTodo( t ); 4992 mCalendar->deleteTodo( t );
4991 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 4993 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
4992 } 4994 }
4993 else 4995 else
4994 deleteTodo = false; 4996 deleteTodo = false;
4995 } 4997 }
4996 return deleteTodo; 4998 return deleteTodo;
4997 4999
4998} 5000}
4999void CalendarView::purgeCompleted() 5001void CalendarView::purgeCompleted()
5000{ 5002{
5001 int result = KMessageBox::warningContinueCancel(this, 5003 int result = KMessageBox::warningContinueCancel(this,
5002 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge")); 5004 i18n("Delete all completed todos?\n(Completed recurring todos\nwill not be deleted!)"),i18n("Purge Todos"),i18n("Purge"));
5003 5005
5004 if (result == KMessageBox::Continue) { 5006 if (result == KMessageBox::Continue) {
5005 5007
5006 QPtrList<Todo> todoCal; 5008 QPtrList<Todo> todoCal;
5007 QPtrList<Todo> rootTodos; 5009 QPtrList<Todo> rootTodos;
5008 //QPtrList<Incidence> rel; 5010 //QPtrList<Incidence> rel;
5009 Todo *aTodo; 5011 Todo *aTodo;
5010 todoCal = calendar()->todos(); 5012 todoCal = calendar()->todos();
5011 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 5013 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
5012 if ( !aTodo->relatedTo() ) 5014 if ( !aTodo->relatedTo() )
5013 rootTodos.append( aTodo ); 5015 rootTodos.append( aTodo );
5014 } 5016 }
5015 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 5017 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
5016 removeCompletedSubTodos( aTodo ); 5018 removeCompletedSubTodos( aTodo );
5017 } 5019 }
5018 5020
5019 updateView(); 5021 updateView();
5020 } 5022 }
5021} 5023}
5022 5024
5023void CalendarView::slotCalendarChanged() 5025void CalendarView::slotCalendarChanged()
5024{ 5026{
5025 ; 5027 ;
5026} 5028}
5027 5029
5028void CalendarView::keyPressEvent ( QKeyEvent *e) 5030void CalendarView::keyPressEvent ( QKeyEvent *e)
5029{ 5031{
5030 //qDebug("CalendarView::keyPressEvent "); 5032 //qDebug("CalendarView::keyPressEvent ");
5031 e->ignore(); 5033 e->ignore();
5032} 5034}
5033 5035
5034 5036
5035bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 5037bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
5036{ 5038{
5037 5039
5038 if ( manager != mSyncManager) 5040 if ( manager != mSyncManager)
5039 qDebug("KO: Internal error-1. SyncManager mismatch "); 5041 qDebug("KO: Internal error-1. SyncManager mismatch ");
5040 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) { 5042 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
5041 qDebug("KO: SyncKDE request detected!"); 5043 qDebug("KO: SyncKDE request detected!");
5042 } 5044 }
5043 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 5045 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
5044 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 5046 mCurrentSyncName = mSyncManager->getCurrentSyncName();
5045 return syncCalendar( filename, mode ); 5047 return syncCalendar( filename, mode );
5046} 5048}
5047bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 5049bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
5048{ 5050{
5049 //mSyncManager = manager; 5051 //mSyncManager = manager;
5050 if ( manager != mSyncManager) 5052 if ( manager != mSyncManager)
5051 qDebug("KO: Internal error-2. SyncManager mismatch "); 5053 qDebug("KO: Internal error-2. SyncManager mismatch ");
5052 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 5054 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
5053 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 5055 mCurrentSyncName = mSyncManager->getCurrentSyncName();
5054 if ( resource == "sharp" ) 5056 if ( resource == "sharp" )
5055 syncExternal( 0 ); 5057 syncExternal( 0 );
5056 if ( resource == "phone" ) 5058 if ( resource == "phone" )
5057 syncExternal( 1 ); 5059 syncExternal( 1 );
5058 // pending setmodified 5060 // pending setmodified
5059 return true; 5061 return true;
5060} 5062}
5061void CalendarView::setSyncManager(KSyncManager* manager) 5063void CalendarView::setSyncManager(KSyncManager* manager)
5062{ 5064{
5063 mSyncManager = manager; 5065 mSyncManager = manager;
5064} 5066}
5065 5067
5066void CalendarView::removeSyncInfo( QString syncProfile) 5068void CalendarView::removeSyncInfo( QString syncProfile)
5067{ 5069{
5068 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 5070 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
5069 mCalendar->removeSyncInfo( syncProfile ); 5071 mCalendar->removeSyncInfo( syncProfile );
5070 5072
5071} 5073}
5072 5074
5073void CalendarView::undo_delete() 5075void CalendarView::undo_delete()
5074{ 5076{
5075 //qDebug("undo_delete() "); 5077 //qDebug("undo_delete() ");
5076 Incidence* undo = mCalendar->undoIncidence(); 5078 Incidence* undo = mCalendar->undoIncidence();
5077 if ( !undo ) { 5079 if ( !undo ) {
5078 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 5080 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
5079 i18n("KO/Pi")); 5081 i18n("KO/Pi"));
5080 return; 5082 return;
5081 } 5083 }
5082 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) + 5084 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,KGlobal::formatMessage ( undo->summary(),0 ) +
5083 i18n("\nAre you sure you want\nto restore this?"), 5085 i18n("\nAre you sure you want\nto restore this?"),
5084 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 5086 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
5085 mCalendar->undoDeleteIncidence(); 5087 mCalendar->undoDeleteIncidence();
5086 updateView(); 5088 updateView();
5087 } 5089 }
5088} 5090}
5089 5091
5090void CalendarView::slotViewerClosed() 5092void CalendarView::slotViewerClosed()
5091{ 5093{
5092 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 5094 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
5093} 5095}
5094 5096
5095void CalendarView::resetFocus() 5097void CalendarView::resetFocus()
5096{ 5098{
5097 if ( mViewerCallerIsSearchDialog ) { 5099 if ( mViewerCallerIsSearchDialog ) {
5098 if ( mDialogManager->getSearchDialog()->isVisible() ){ 5100 if ( mDialogManager->getSearchDialog()->isVisible() ){
5099 mDialogManager->getSearchDialog()->raise(); 5101 mDialogManager->getSearchDialog()->raise();
5100 mDialogManager->getSearchDialog()->setActiveWindow(); 5102 mDialogManager->getSearchDialog()->setActiveWindow();
5101 mDialogManager->getSearchDialog()->listview()->resetFocus(); 5103 mDialogManager->getSearchDialog()->listview()->resetFocus();
5102 } else 5104 } else
5103 mViewerCallerIsSearchDialog = false; 5105 mViewerCallerIsSearchDialog = false;
5104 } 5106 }
5105 if ( !mViewerCallerIsSearchDialog ) { 5107 if ( !mViewerCallerIsSearchDialog ) {
5106 //mViewManager->currentView()->setFocus(); 5108 //mViewManager->currentView()->setFocus();
5107 //qDebug("sssssssssssssssset focus "); 5109 //qDebug("sssssssssssssssset focus ");
5108 topLevelWidget()->raise(); 5110 topLevelWidget()->raise();
5109 setActiveWindow(); 5111 setActiveWindow();
5110 //setFocus(); 5112 //setFocus();
5111 } 5113 }
5112 mViewerCallerIsSearchDialog = false; 5114 mViewerCallerIsSearchDialog = false;
5113} 5115}
5114 5116
5115void CalendarView::showNextAlarms() 5117void CalendarView::showNextAlarms()
5116{ 5118{
5117 QString message; 5119 QString message;
5118 QDateTime nextAl = mCalendar->nextAlarmEventDateTime(); 5120 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
5119 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) { 5121 if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
5120 QString sum = mCalendar->nextSummary(); 5122 QString sum = mCalendar->nextSummary();
5121 QDateTime nextA = mNextAlarmDateTime; 5123 QDateTime nextA = mNextAlarmDateTime;
5122 QDateTime cur = QDateTime::currentDateTime(); 5124 QDateTime cur = QDateTime::currentDateTime();
5123 int secs = cur.secsTo( nextA ); 5125 int secs = cur.secsTo( nextA );
5124 int min = secs /60; 5126 int min = secs /60;
5125 int hours = min /60; 5127 int hours = min /60;
5126 min = min % 60; 5128 min = min % 60;
5127 int days = hours /24; 5129 int days = hours /24;
5128 hours = hours % 24; 5130 hours = hours % 24;
5129 5131
5130 //message = i18n("The next alarm is in:\n"); 5132 //message = i18n("The next alarm is in:\n");
5131 if ( days > 1 ) 5133 if ( days > 1 )
5132 message += i18n("%1 days\n").arg( days ); 5134 message += i18n("%1 days\n").arg( days );
5133 else if ( days == 1 ) 5135 else if ( days == 1 )
5134 message += i18n("1 day\n"); 5136 message += i18n("1 day\n");
5135 if ( hours > 1 ) 5137 if ( hours > 1 )
5136 message += i18n("%1 hours\n").arg( hours ); 5138 message += i18n("%1 hours\n").arg( hours );
5137 else if ( hours == 1 ) 5139 else if ( hours == 1 )
5138 message += i18n("1 hour\n"); 5140 message += i18n("1 hour\n");
5139 if ( min > 1 ) 5141 if ( min > 1 )
5140 message += i18n("%1 minutes\n").arg( min ); 5142 message += i18n("%1 minutes\n").arg( min );
5141 else if ( min == 1 ) 5143 else if ( min == 1 )
5142 message += i18n("1 minute\n"); 5144 message += i18n("1 minute\n");
5143 if ( message.isEmpty() ) 5145 if ( message.isEmpty() )
5144 message = i18n("The next alarm is in\nless than one minute!"); 5146 message = i18n("The next alarm is in\nless than one minute!");
5145 else 5147 else
5146 message = i18n("The next alarm is in:\n") + message; 5148 message = i18n("The next alarm is in:\n") + message;
5147 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ; 5149 message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
5148 } else { 5150 } else {
5149 message = i18n("There is no next alarm."); 5151 message = i18n("There is no next alarm.");
5150 5152
5151 } 5153 }
5152#ifdef DESKTOP_VERSION 5154#ifdef DESKTOP_VERSION
5153 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 5155 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
5154 message += i18n("\nThe internal alarm notification is disabled!\n"); 5156 message += i18n("\nThe internal alarm notification is disabled!\n");
5155 message += i18n("Enable it in the settings menu, TAB alarm."); 5157 message += i18n("Enable it in the settings menu, TAB alarm.");
5156 } 5158 }
5157 5159
5158#endif 5160#endif
5159 KMessageBox::information( this, message); 5161 KMessageBox::information( this, message);
5160} 5162}
5163
5164void CalendarView::displayCalendarInfo( int id )
5165{
5166 int e, t,j;
5167 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
5168 QString name = kkf->mName;
5169 mCalendar->getIncidenceCount( id, e, t, j );
5170 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 );
5171 QString mess = i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file);
5172 mess += i18n("<br>The calendar contains<br><b>%1 events<br>%2 todos<br>%3 journals</b>").arg( e ).arg( t ).arg( j );
5173 KMessageBox::information( this, mess );
5174
5175
5176}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 8670832..0924f07 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -1,587 +1,588 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000, 2001 3 Copyright (c) 2000, 2001
4 Cornelius Schumacher <schumacher@kde.org> 4 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#include <qscrollbar.h> 33#include <qscrollbar.h>
34#ifndef DESKTOP_VERSION 34#ifndef DESKTOP_VERSION
35#include <qtopia/ir.h> 35#include <qtopia/ir.h>
36#else 36#else
37#define Ir char 37#define Ir char
38#endif 38#endif
39#include <libkcal/calendar.h> 39#include <libkcal/calendar.h>
40#include <libkcal/scheduler.h> 40#include <libkcal/scheduler.h>
41#include <libkcal/calendarresources.h> 41#include <libkcal/calendarresources.h>
42#include <libkcal/resourcecalendar.h> 42#include <libkcal/resourcecalendar.h>
43#include <KDGanttMinimizeSplitter.h> 43#include <KDGanttMinimizeSplitter.h>
44 44
45#include <korganizer/calendarviewbase.h> 45#include <korganizer/calendarviewbase.h>
46 46
47#include <ksyncmanager.h> 47#include <ksyncmanager.h>
48//#include <koprefs.h> 48//#include <koprefs.h>
49 49
50class QWidgetStack; 50class QWidgetStack;
51class QSplitter; 51class QSplitter;
52class KopiCalendarFile; 52class KopiCalendarFile;
53class CalPrinter; 53class CalPrinter;
54class KOFilterView; 54class KOFilterView;
55class KOCalEditView; 55class KOCalEditView;
56class KOViewManager; 56class KOViewManager;
57class KODialogManager; 57class KODialogManager;
58class KOTodoView; 58class KOTodoView;
59class KDateNavigator; 59class KDateNavigator;
60class DateNavigatorContainer; 60class DateNavigatorContainer;
61class DateNavigator; 61class DateNavigator;
62class KOIncidenceEditor; 62class KOIncidenceEditor;
63class KDatePicker; 63class KDatePicker;
64class ResourceView; 64class ResourceView;
65class KOEventEditor; 65class KOEventEditor;
66class KOTodoEditor ; 66class KOTodoEditor ;
67class KOEventViewerDialog; 67class KOEventViewerDialog;
68class KOBeamPrefs; 68class KOBeamPrefs;
69class KSyncProfile; 69class KSyncProfile;
70class AlarmDialog; 70class AlarmDialog;
71class KCal::Attendee; 71class KCal::Attendee;
72 72
73namespace KCal { class FileStorage; } 73namespace KCal { class FileStorage; }
74 74
75using namespace KCal; 75using namespace KCal;
76 76
77/** 77/**
78 This is the main calendar widget. It provides the different vies on t he 78 This is the main calendar widget. It provides the different vies on t he
79 calendar data as well as the date navigator. It also handles synchronisation 79 calendar data as well as the date navigator. It also handles synchronisation
80 of the different views and controls the different dialogs like preferences, 80 of the different views and controls the different dialogs like preferences,
81 event editor, search dialog etc. 81 event editor, search dialog etc.
82 82
83 @short main calendar view widget 83 @short main calendar view widget
84 @author Cornelius Schumacher 84 @author Cornelius Schumacher
85*/ 85*/
86 86
87#include <qtextbrowser.h> 87#include <qtextbrowser.h>
88#include <qtextcodec.h> 88#include <qtextcodec.h>
89 89
90class MissedAlarmTextBrowser : public QTextBrowser { 90class MissedAlarmTextBrowser : public QTextBrowser {
91 Q_OBJECT 91 Q_OBJECT
92 public: 92 public:
93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start); 93 MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms ,QDateTime start);
94 ~MissedAlarmTextBrowser(); 94 ~MissedAlarmTextBrowser();
95 void setSource(const QString & n); 95 void setSource(const QString & n);
96 96
97 private: 97 private:
98 Incidence * getNextInc(QDateTime start ); 98 Incidence * getNextInc(QDateTime start );
99 QPtrList<Incidence> mAlarms; 99 QPtrList<Incidence> mAlarms;
100 signals: 100 signals:
101 void showIncidence( QString uid); 101 void showIncidence( QString uid);
102}; 102};
103 103
104 104
105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface 105class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer, public KSyncInterface
106{ 106{
107 Q_OBJECT 107 Q_OBJECT
108 public: 108 public:
109 /** 109 /**
110 Constructs a new calendar view widget. 110 Constructs a new calendar view widget.
111 111
112 @param calendar calendar document 112 @param calendar calendar document
113 @param parent parent window 113 @param parent parent window
114 @param name Qt internal widget object name 114 @param name Qt internal widget object name
115 */ 115 */
116 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 116 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
117 const char *name = 0 ); 117 const char *name = 0 );
118 CalendarView( Calendar *calendar, QWidget *parent = 0, 118 CalendarView( Calendar *calendar, QWidget *parent = 0,
119 const char *name = 0 ); 119 const char *name = 0 );
120 virtual ~CalendarView(); 120 virtual ~CalendarView();
121 121
122 Calendar *calendar() { return mCalendar; } 122 Calendar *calendar() { return mCalendar; }
123 123
124 KOViewManager *viewManager(); 124 KOViewManager *viewManager();
125 KODialogManager *dialogManager(); 125 KODialogManager *dialogManager();
126 126
127 QDate startDate(); 127 QDate startDate();
128 QDate endDate(); 128 QDate endDate();
129 129
130 QWidgetStack *viewStack(); 130 QWidgetStack *viewStack();
131 QWidget *leftFrame(); 131 QWidget *leftFrame();
132 132
133 DateNavigator *dateNavigator(); 133 DateNavigator *dateNavigator();
134 KDateNavigator *dateNavigatorWidget(); 134 KDateNavigator *dateNavigatorWidget();
135 135
136 void addView(KOrg::BaseView *); 136 void addView(KOrg::BaseView *);
137 void showView(KOrg::BaseView *); 137 void showView(KOrg::BaseView *);
138 KOEventViewerDialog* getEventViewerDialog(); 138 KOEventViewerDialog* getEventViewerDialog();
139 Incidence *currentSelection(); 139 Incidence *currentSelection();
140 void checkSuspendAlarm(); 140 void checkSuspendAlarm();
141 void mergeFile( QString fn ); 141 void mergeFile( QString fn );
142 142
143 signals: 143 signals:
144 void save (); 144 void save ();
145 void saveStopTimer (); 145 void saveStopTimer ();
146 void tempDisableBR(bool); 146 void tempDisableBR(bool);
147 /** This todo has been modified */ 147 /** This todo has been modified */
148 void todoModified(Todo *, int); 148 void todoModified(Todo *, int);
149 149
150 /** when change is made to options dialog, the topwidget will catch this 150 /** when change is made to options dialog, the topwidget will catch this
151 * and emit this signal which notifies all widgets which have registered 151 * and emit this signal which notifies all widgets which have registered
152 * for notification to update their settings. */ 152 * for notification to update their settings. */
153 void configChanged(); 153 void configChanged();
154 /** emitted when the topwidget is closing down, so that any attached 154 /** emitted when the topwidget is closing down, so that any attached
155 child windows can also close. */ 155 child windows can also close. */
156 void closingDown(); 156 void closingDown();
157 /** emitted right before we die */ 157 /** emitted right before we die */
158 void closed(QWidget *); 158 void closed(QWidget *);
159 159
160 /** Emitted when state of modified flag changes */ 160 /** Emitted when state of modified flag changes */
161 void modifiedChanged(bool); 161 void modifiedChanged(bool);
162 void signalmodified(); 162 void signalmodified();
163 163
164 /** Emitted when state of read-only flag changes */ 164 /** Emitted when state of read-only flag changes */
165 void readOnlyChanged(bool); 165 void readOnlyChanged(bool);
166 166
167 /** Emitted when the unit of navigation changes */ 167 /** Emitted when the unit of navigation changes */
168 void changeNavStringPrev(const QString &); 168 void changeNavStringPrev(const QString &);
169 void changeNavStringNext(const QString &); 169 void changeNavStringNext(const QString &);
170 170
171 /** Emitted when state of events selection has changed and user is organizer*/ 171 /** Emitted when state of events selection has changed and user is organizer*/
172 void organizerEventsSelected(bool); 172 void organizerEventsSelected(bool);
173 /** Emitted when state of events selection has changed and user is attendee*/ 173 /** Emitted when state of events selection has changed and user is attendee*/
174 void groupEventsSelected(bool); 174 void groupEventsSelected(bool);
175 /** 175 /**
176 Emitted when an incidence gets selected. If the selection is cleared the 176 Emitted when an incidence gets selected. If the selection is cleared the
177 signal is emitted with 0 as argument. 177 signal is emitted with 0 as argument.
178 */ 178 */
179 void incidenceSelected( Incidence * ); 179 void incidenceSelected( Incidence * );
180 /** Emitted, when a todoitem is selected or deselected. */ 180 /** Emitted, when a todoitem is selected or deselected. */
181 void todoSelected( bool ); 181 void todoSelected( bool );
182 182
183 /** 183 /**
184 Emitted, when clipboard content changes. Parameter indicates if paste 184 Emitted, when clipboard content changes. Parameter indicates if paste
185 is possible or not. 185 is possible or not.
186 */ 186 */
187 void pasteEnabled(bool); 187 void pasteEnabled(bool);
188 188
189 /** Emitted, when the number of incoming messages has changed. */ 189 /** Emitted, when the number of incoming messages has changed. */
190 void numIncomingChanged(int); 190 void numIncomingChanged(int);
191 191
192 /** Emitted, when the number of outgoing messages has changed. */ 192 /** Emitted, when the number of outgoing messages has changed. */
193 void numOutgoingChanged(int); 193 void numOutgoingChanged(int);
194 194
195 /** Send status message, which can e.g. be displayed in the status bar. */ 195 /** Send status message, which can e.g. be displayed in the status bar. */
196 void statusMessage(const QString &); 196 void statusMessage(const QString &);
197 197
198 void calendarViewExpanded( bool ); 198 void calendarViewExpanded( bool );
199 void updateSearchDialog(); 199 void updateSearchDialog();
200 void filtersUpdated(); 200 void filtersUpdated();
201 201
202 202
203 public slots: 203 public slots:
204 void displayCalendarInfo( int id );
204 void nextConflict( bool all, bool allday ); 205 void nextConflict( bool all, bool allday );
205 void conflictAll(); 206 void conflictAll();
206 void conflictAllday(); 207 void conflictAllday();
207 void conflictNotAll(); 208 void conflictNotAll();
208 void setCalReadOnly( int id, bool readO ); 209 void setCalReadOnly( int id, bool readO );
209 void checkAlarms(); 210 void checkAlarms();
210 void checkFiles(); 211 void checkFiles();
211 void slotprintSelInc(); 212 void slotprintSelInc();
212 void showNextAlarms(); 213 void showNextAlarms();
213 void showOpenError(); 214 void showOpenError();
214 void watchSavedFile(); 215 void watchSavedFile();
215 void recheckTimerAlarm(); 216 void recheckTimerAlarm();
216 void checkNextTimerAlarm(); 217 void checkNextTimerAlarm();
217 void addAlarm(const QDateTime &qdt, const QString &noti ); 218 void addAlarm(const QDateTime &qdt, const QString &noti );
218 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 219 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
219 void removeAlarm(const QDateTime &qdt, const QString &noti ); 220 void removeAlarm(const QDateTime &qdt, const QString &noti );
220 221
221 /** options dialog made a changed to the configuration. we catch this 222 /** options dialog made a changed to the configuration. we catch this
222 * and notify all widgets which need to update their configuration. */ 223 * and notify all widgets which need to update their configuration. */
223 void updateConfig(); 224 void updateConfig();
224 225
225 void insertBirthdays(const QString& uid, const QStringList& birthdayList, 226 void insertBirthdays(const QString& uid, const QStringList& birthdayList,
226 const QStringList& anniversaryList, const QStringList& realNameList, 227 const QStringList& anniversaryList, const QStringList& realNameList,
227 const QStringList& emailList, const QStringList& assembledNameList, 228 const QStringList& emailList, const QStringList& assembledNameList,
228 const QStringList& uidList); 229 const QStringList& uidList);
229 230
230 /** 231 /**
231 Load calendar from file \a filename. If \a merge is true, load 232 Load calendar from file \a filename. If \a merge is true, load
232 calendar into existing one, if it is false, clear calendar, before 233 calendar into existing one, if it is false, clear calendar, before
233 loading. Return true, if calendar could be successfully loaded. 234 loading. Return true, if calendar could be successfully loaded.
234 */ 235 */
235 bool openCalendar(QString filename, bool merge=false); 236 bool openCalendar(QString filename, bool merge=false);
236 bool loadCalendars(); 237 bool loadCalendars();
237 bool saveCalendars(); 238 bool saveCalendars();
238 bool restoreCalendarSettings(); 239 bool restoreCalendarSettings();
239 bool addCalendar( KopiCalendarFile * ); 240 bool addCalendar( KopiCalendarFile * );
240 void addCalendarId( int id ); 241 void addCalendarId( int id );
241 bool syncCalendar(QString filename,int mode = 0 ); 242 bool syncCalendar(QString filename,int mode = 0 );
242 243
243 /** 244 /**
244 Save calendar data to file. Return true if calendar could be 245 Save calendar data to file. Return true if calendar could be
245 successfully saved. 246 successfully saved.
246 */ 247 */
247 bool saveCalendar(QString filename); 248 bool saveCalendar(QString filename);
248 249
249 /** 250 /**
250 Close calendar. Clear calendar data and reset views to display an empty 251 Close calendar. Clear calendar data and reset views to display an empty
251 calendar. 252 calendar.
252 */ 253 */
253 void closeCalendar(); 254 void closeCalendar();
254 255
255 /** Archive old events of calendar */ 256 /** Archive old events of calendar */
256 void archiveCalendar(); 257 void archiveCalendar();
257 258
258 void showIncidence(); 259 void showIncidence();
259 void editIncidence(); 260 void editIncidence();
260 void editIncidenceDescription(); 261 void editIncidenceDescription();
261 void deleteIncidence(); 262 void deleteIncidence();
262 void cloneIncidence(); 263 void cloneIncidence();
263 void moveIncidence(); 264 void moveIncidence();
264 void beamIncidence(); 265 void beamIncidence();
265 void toggleCancelIncidence(); 266 void toggleCancelIncidence();
266 267
267 /** create an editeventwin with supplied date/time, and if bool is true, 268 /** create an editeventwin with supplied date/time, and if bool is true,
268 * make the event take all day. */ 269 * make the event take all day. */
269 void newEvent(QDateTime, QDateTime, bool allDay ); 270 void newEvent(QDateTime, QDateTime, bool allDay );
270 void newEvent(QDateTime, QDateTime); 271 void newEvent(QDateTime, QDateTime);
271 void newEvent(QDateTime fh); 272 void newEvent(QDateTime fh);
272 void newEvent(QDate dt); 273 void newEvent(QDate dt);
273 /** create new event without having a date hint. Takes current date as 274 /** create new event without having a date hint. Takes current date as
274 default hint. */ 275 default hint. */
275 void newEvent(); 276 void newEvent();
276 void newFloatingEvent(); 277 void newFloatingEvent();
277 278
278 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/ 279 /** Create a read-only viewer dialog for the supplied incidence. It calls the correct showXXX method*/
279 void showIncidence(Incidence *); 280 void showIncidence(Incidence *);
280 void showIncidence(QString uid); 281 void showIncidence(QString uid);
281 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/ 282 /** Create an editor for the supplied incidence. It calls the correct editXXX method*/
282 void editIncidence(Incidence *); 283 void editIncidence(Incidence *);
283 /** Delete the supplied incidence. It calls the correct deleteXXX method*/ 284 /** Delete the supplied incidence. It calls the correct deleteXXX method*/
284 void deleteIncidence(Incidence *); 285 void deleteIncidence(Incidence *);
285 void cloneIncidence(Incidence *); 286 void cloneIncidence(Incidence *);
286 void cancelIncidence(Incidence *); 287 void cancelIncidence(Incidence *);
287 /** Create an editor for the supplied event. */ 288 /** Create an editor for the supplied event. */
288 void editEvent(Event *); 289 void editEvent(Event *);
289 /** Delete the supplied event. */ 290 /** Delete the supplied event. */
290 void deleteEvent(Event *); 291 void deleteEvent(Event *);
291 /** Delete the event with the given unique ID. Returns false, if event wasn't 292 /** Delete the event with the given unique ID. Returns false, if event wasn't
292 found. */ 293 found. */
293 bool deleteEvent(const QString &uid); 294 bool deleteEvent(const QString &uid);
294 /** Create a read-only viewer dialog for the supplied event. */ 295 /** Create a read-only viewer dialog for the supplied event. */
295 void showEvent(Event *); 296 void showEvent(Event *);
296 297
297 void editJournal(Journal *); 298 void editJournal(Journal *);
298 void showJournal(Journal *); 299 void showJournal(Journal *);
299 void deleteJournal(Journal *); 300 void deleteJournal(Journal *);
300 /** Create an editor dialog for a todo */ 301 /** Create an editor dialog for a todo */
301 void editTodo(Todo *); 302 void editTodo(Todo *);
302 /** Create a read-only viewer dialog for the supplied todo */ 303 /** Create a read-only viewer dialog for the supplied todo */
303 void showTodo(Todo *); 304 void showTodo(Todo *);
304 /** create new todo */ 305 /** create new todo */
305 void newTodo(); 306 void newTodo();
306 void newTodoDateTime(QDateTime, bool allday); 307 void newTodoDateTime(QDateTime, bool allday);
307 /** create new todo with a parent todo */ 308 /** create new todo with a parent todo */
308 void newSubTodo(); 309 void newSubTodo();
309 /** create new todo with a parent todo */ 310 /** create new todo with a parent todo */
310 void newSubTodo(Todo *); 311 void newSubTodo(Todo *);
311 /** Delete todo */ 312 /** Delete todo */
312 void deleteTodo(Todo *); 313 void deleteTodo(Todo *);
313 314
314 315
315 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is 316 /** Check if clipboard contains vCalendar event. The signal pasteEnabled() is
316 * emitted as result. */ 317 * emitted as result. */
317 void checkClipboard(); 318 void checkClipboard();
318 319
319 /** using the KConfig associated with the kapp variable, read in the 320 /** using the KConfig associated with the kapp variable, read in the
320 * settings from the config file. 321 * settings from the config file.
321 */ 322 */
322 void readSettings(); 323 void readSettings();
323 324
324 /** write current state to config file. */ 325 /** write current state to config file. */
325 void writeSettings(); 326 void writeSettings();
326 327
327 /** read settings for calendar filters */ 328 /** read settings for calendar filters */
328 void readFilterSettings(KConfig *config); 329 void readFilterSettings(KConfig *config);
329 330
330 /** write settings for calendar filters */ 331 /** write settings for calendar filters */
331 void writeFilterSettings(KConfig *config); 332 void writeFilterSettings(KConfig *config);
332 333
333 /** passes on the message that an event has changed to the currently 334 /** passes on the message that an event has changed to the currently
334 * activated view so that it can make appropriate display changes. */ 335 * activated view so that it can make appropriate display changes. */
335 void changeEventDisplay(Event *, int); 336 void changeEventDisplay(Event *, int);
336 void changeIncidenceDisplay(Incidence *, int); 337 void changeIncidenceDisplay(Incidence *, int);
337 void changeTodoDisplay(Todo *, int); 338 void changeTodoDisplay(Todo *, int);
338 339
339 void eventAdded(Event *); 340 void eventAdded(Event *);
340 void eventChanged(Event *); 341 void eventChanged(Event *);
341 void eventToBeDeleted(Event *); 342 void eventToBeDeleted(Event *);
342 void eventDeleted(); 343 void eventDeleted();
343 344
344 void todoAdded(Todo *); 345 void todoAdded(Todo *);
345 void todoChanged(Todo *); 346 void todoChanged(Todo *);
346 void todoToBeDeleted(Todo *); 347 void todoToBeDeleted(Todo *);
347 void todoDeleted(); 348 void todoDeleted();
348 349
349 void updateView(const QDate &start, const QDate &end); 350 void updateView(const QDate &start, const QDate &end);
350 void updateView(); 351 void updateView();
351 void clearAllViews(); 352 void clearAllViews();
352 353
353 /** Full update of visible todo views */ 354 /** Full update of visible todo views */
354 void updateTodoViews(); 355 void updateTodoViews();
355 356
356 void updateUnmanagedViews(); 357 void updateUnmanagedViews();
357 358
358 /** cut the current appointment to the clipboard */ 359 /** cut the current appointment to the clipboard */
359 void edit_cut(); 360 void edit_cut();
360 361
361 /** copy the current appointment(s) to the clipboard */ 362 /** copy the current appointment(s) to the clipboard */
362 void edit_copy(); 363 void edit_copy();
363 364
364 /** paste the current vobject(s) in the clipboard buffer into calendar */ 365 /** paste the current vobject(s) in the clipboard buffer into calendar */
365 void edit_paste(); 366 void edit_paste();
366 367
367 /** edit viewing and configuration options. */ 368 /** edit viewing and configuration options. */
368 void edit_options(); 369 void edit_options();
369 void edit_global_options(); 370 void edit_global_options();
370 /** 371 /**
371 Functions for printing, previewing a print, and setting up printing 372 Functions for printing, previewing a print, and setting up printing
372 parameters. 373 parameters.
373 */ 374 */
374 void print(); 375 void print();
375 void printSetup(); 376 void printSetup();
376 void printPreview(); 377 void printPreview();
377 378
378 /** Export as iCalendar file */ 379 /** Export as iCalendar file */
379 bool exportICalendar(); 380 bool exportICalendar();
380 bool exportICalendar( QString fn ); 381 bool exportICalendar( QString fn );
381 382
382 /** Export as vCalendar file */ 383 /** Export as vCalendar file */
383 bool exportVCalendar( QString fn); 384 bool exportVCalendar( QString fn);
384 385
385 /** pop up a dialog to show an existing appointment. */ 386 /** pop up a dialog to show an existing appointment. */
386 void appointment_show(); 387 void appointment_show();
387 /** 388 /**
388 * pop up an Appointment Dialog to edit an existing appointment.Get 389 * pop up an Appointment Dialog to edit an existing appointment.Get
389 * information on the appointment from the list of unique IDs that is 390 * information on the appointment from the list of unique IDs that is
390 * currently in the View, called currIds. 391 * currently in the View, called currIds.
391 */ 392 */
392 void appointment_edit(); 393 void appointment_edit();
393 /** 394 /**
394 * pop up dialog confirming deletion of currently selected event in the 395 * pop up dialog confirming deletion of currently selected event in the
395 * View. 396 * View.
396 */ 397 */
397 void appointment_delete(); 398 void appointment_delete();
398 399
399 /** mails the currently selected event to a particular user as a vCalendar 400 /** mails the currently selected event to a particular user as a vCalendar
400 attachment. */ 401 attachment. */
401 void action_mail(); 402 void action_mail();
402 403
403 /* frees a subtodo from it's relation */ 404 /* frees a subtodo from it's relation */
404 void todo_unsub( Todo * ); 405 void todo_unsub( Todo * );
405 void todo_resub( Todo * parent, Todo * sub ); 406 void todo_resub( Todo * parent, Todo * sub );
406 407
407 /** Take ownership of selected event. */ 408 /** Take ownership of selected event. */
408 void takeOverEvent(); 409 void takeOverEvent();
409 410
410 /** Take ownership of all events in calendar. */ 411 /** Take ownership of all events in calendar. */
411 void takeOverCalendar(); 412 void takeOverCalendar();
412 413
413 /** query whether or not the calendar is "dirty". */ 414 /** query whether or not the calendar is "dirty". */
414 bool isModified(); 415 bool isModified();
415 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */ 416 /** set the state of calendar. Modified means "dirty", i.e. needing a save. */
416 void setModified(bool modified=true); 417 void setModified(bool modified=true);
417 418
418 /** query if the calendar is read-only. */ 419 /** query if the calendar is read-only. */
419 bool isReadOnly(); 420 bool isReadOnly();
420 /** set state of calendar to read-only */ 421 /** set state of calendar to read-only */
421 void setReadOnly(bool readOnly=true); 422 void setReadOnly(bool readOnly=true);
422 423
423 void eventUpdated(Incidence *); 424 void eventUpdated(Incidence *);
424 425
425 /* iTIP scheduling actions */ 426 /* iTIP scheduling actions */
426 void schedule_publish(Incidence *incidence = 0); 427 void schedule_publish(Incidence *incidence = 0);
427 void schedule_request(Incidence *incidence = 0); 428 void schedule_request(Incidence *incidence = 0);
428 void schedule_refresh(Incidence *incidence = 0); 429 void schedule_refresh(Incidence *incidence = 0);
429 void schedule_cancel(Incidence *incidence = 0); 430 void schedule_cancel(Incidence *incidence = 0);
430 void schedule_add(Incidence *incidence = 0); 431 void schedule_add(Incidence *incidence = 0);
431 void schedule_reply(Incidence *incidence = 0); 432 void schedule_reply(Incidence *incidence = 0);
432 void schedule_counter(Incidence *incidence = 0); 433 void schedule_counter(Incidence *incidence = 0);
433 void schedule_declinecounter(Incidence *incidence = 0); 434 void schedule_declinecounter(Incidence *incidence = 0);
434 void schedule_publish_freebusy(int daysToPublish = 30); 435 void schedule_publish_freebusy(int daysToPublish = 30);
435 436
436 void openAddressbook(); 437 void openAddressbook();
437 438
438 void editFilters(); 439 void editFilters();
439 void toggleFilerEnabled(); 440 void toggleFilerEnabled();
440 QPtrList<CalFilter> filters(); 441 QPtrList<CalFilter> filters();
441 void toggleFilter(); 442 void toggleFilter();
442 void showFilter(bool visible); 443 void showFilter(bool visible);
443 void updateFilter(); 444 void updateFilter();
444 void filterEdited(); 445 void filterEdited();
445 void selectFilter( int ); 446 void selectFilter( int );
446 KOFilterView *filterView(); 447 KOFilterView *filterView();
447 448
448 void showIntro(); 449 void showIntro();
449 450
450 /** Move the curdatepient view date to today */ 451 /** Move the curdatepient view date to today */
451 void goToday(); 452 void goToday();
452 453
453 /** Move to the next date(s) in the current view */ 454 /** Move to the next date(s) in the current view */
454 void goNext(); 455 void goNext();
455 456
456 /** Move to the previous date(s) in the current view */ 457 /** Move to the previous date(s) in the current view */
457 void goPrevious(); 458 void goPrevious();
458 /** Move to the next date(s) in the current view */ 459 /** Move to the next date(s) in the current view */
459 void goNextMonth(); 460 void goNextMonth();
460 461
461 /** Move to the previous date(s) in the current view */ 462 /** Move to the previous date(s) in the current view */
462 void goPreviousMonth(); 463 void goPreviousMonth();
463 464
464 void toggleExpand(); 465 void toggleExpand();
465 void toggleDateNavigatorWidget(); 466 void toggleDateNavigatorWidget();
466 void toggleAllDaySize(); 467 void toggleAllDaySize();
467 468
468 /** Look for new messages in the inbox */ 469 /** Look for new messages in the inbox */
469 void lookForIncomingMessages(); 470 void lookForIncomingMessages();
470 /** Look for new messages in the outbox */ 471 /** Look for new messages in the outbox */
471 void lookForOutgoingMessages(); 472 void lookForOutgoingMessages();
472 473
473 void processMainViewSelection( Incidence * ); 474 void processMainViewSelection( Incidence * );
474 void processTodoListSelection( Incidence * ); 475 void processTodoListSelection( Incidence * );
475 476
476 void processIncidenceSelection( Incidence * ); 477 void processIncidenceSelection( Incidence * );
477 478
478 void purgeCompleted(); 479 void purgeCompleted();
479 bool removeCompletedSubTodos( Todo* ); 480 bool removeCompletedSubTodos( Todo* );
480 void slotCalendarChanged(); 481 void slotCalendarChanged();
481 bool importBday(); 482 bool importBday();
482 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 483 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
483 bool importQtopia( const QString &categoriesFile, 484 bool importQtopia( const QString &categoriesFile,
484 const QString &datebookFile, 485 const QString &datebookFile,
485 const QString &tasklistFile ); 486 const QString &tasklistFile );
486 void syncExternal( int mode ); 487 void syncExternal( int mode );
487 void slotSelectPickerDate( QDate ) ; 488 void slotSelectPickerDate( QDate ) ;
488 void showDatePicker() ; 489 void showDatePicker() ;
489 void showDatePickerPopup() ; 490 void showDatePickerPopup() ;
490 void moveIncidence(Incidence *) ; 491 void moveIncidence(Incidence *) ;
491 void beamIncidence(Incidence *) ; 492 void beamIncidence(Incidence *) ;
492 void beamCalendar() ; 493 void beamCalendar() ;
493 void beamFilteredCalendar() ; 494 void beamFilteredCalendar() ;
494 void beamIncidenceList(QPtrList<Incidence>) ; 495 void beamIncidenceList(QPtrList<Incidence>) ;
495 void manageCategories(); 496 void manageCategories();
496 void editCategories(); 497 void editCategories();
497 int addCategories(); 498 int addCategories();
498 void removeCategories(); 499 void removeCategories();
499 void setSyncDevice( QString ); 500 void setSyncDevice( QString );
500 void setSyncName( QString ); 501 void setSyncName( QString );
501 void showDay( QDate ); 502 void showDay( QDate );
502 void undo_delete(); 503 void undo_delete();
503 protected slots: 504 protected slots:
504 void resetFocus(); 505 void resetFocus();
505 void scrollBarValue(int); 506 void scrollBarValue(int);
506 void slotViewerClosed(); 507 void slotViewerClosed();
507 void timerAlarm(); 508 void timerAlarm();
508 void suspendAlarm(); 509 void suspendAlarm();
509 void beamDone( Ir *ir ); 510 void beamDone( Ir *ir );
510 /** Select a view or adapt the current view to display the specified dates. */ 511 /** Select a view or adapt the current view to display the specified dates. */
511 void showDates( const KCal::DateList & ); 512 void showDates( const KCal::DateList & );
512 void selectWeekNum ( int ); 513 void selectWeekNum ( int );
513 void checkConflictForEvent(); 514 void checkConflictForEvent();
514 515
515 public: 516 public:
516 void createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval ); 517 void createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval );
517 // show a standard warning 518 // show a standard warning
518 // returns KMsgBox::yesNoCancel() 519 // returns KMsgBox::yesNoCancel()
519 int msgCalModified(); 520 int msgCalModified();
520 virtual bool sync(KSyncManager* manager, QString filename, int mode); 521 virtual bool sync(KSyncManager* manager, QString filename, int mode);
521 522
522 virtual bool syncExternal(KSyncManager* manager, QString resource); 523 virtual bool syncExternal(KSyncManager* manager, QString resource);
523 virtual void removeSyncInfo( QString syncProfile); 524 virtual void removeSyncInfo( QString syncProfile);
524 void setSyncManager(KSyncManager* manager); 525 void setSyncManager(KSyncManager* manager);
525 void setLoadedFileVersion(QDateTime); 526 void setLoadedFileVersion(QDateTime);
526 bool checkFileVersion(QString fn); 527 bool checkFileVersion(QString fn);
527 bool checkAllFileVersions(); 528 bool checkAllFileVersions();
528 bool checkFileChanged(QString fn); 529 bool checkFileChanged(QString fn);
529 Event* getLastSyncEvent(); 530 Event* getLastSyncEvent();
530 /** Adapt navigation units correpsonding to step size of navigation of the 531 /** Adapt navigation units correpsonding to step size of navigation of the
531 * current view. 532 * current view.
532 */ 533 */
533 void adaptNavigationUnits(); 534 void adaptNavigationUnits();
534 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 535 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
535 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 536 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
536 //Attendee* getYourAttendee(Event *event); 537 //Attendee* getYourAttendee(Event *event);
537 void setBlockShowDates( bool b ) { mBlockShowDates = b ;} 538 void setBlockShowDates( bool b ) { mBlockShowDates = b ;}
538 void setScrollBarStep(int val ); 539 void setScrollBarStep(int val );
539 540
540 protected: 541 protected:
541 Event *mConflictingEvent; 542 Event *mConflictingEvent;
542 void schedule(Scheduler::Method, Incidence *incidence = 0); 543 void schedule(Scheduler::Method, Incidence *incidence = 0);
543 544
544 // returns KMsgBox::OKCandel() 545 // returns KMsgBox::OKCandel()
545 int msgItemDelete(const QString name); 546 int msgItemDelete(const QString name);
546 void showEventEditor(); 547 void showEventEditor();
547 void showTodoEditor(); 548 void showTodoEditor();
548 Todo *selectedTodo(); 549 Todo *selectedTodo();
549 private: 550 private:
550#ifdef DESKTOP_VERSION 551#ifdef DESKTOP_VERSION
551 QScrollBar * mDateScrollBar; 552 QScrollBar * mDateScrollBar;
552#endif 553#endif
553 QDateTime mNextAlarmDateTime; 554 QDateTime mNextAlarmDateTime;
554 bool mViewerCallerIsSearchDialog; 555 bool mViewerCallerIsSearchDialog;
555 bool mBlockShowDates; 556 bool mBlockShowDates;
556 KSyncManager* mSyncManager; 557 KSyncManager* mSyncManager;
557 AlarmDialog * mAlarmDialog; 558 AlarmDialog * mAlarmDialog;
558 QString mAlarmNotification; 559 QString mAlarmNotification;
559 QString mSuspendAlarmNotification; 560 QString mSuspendAlarmNotification;
560 QTimer* mSuspendTimer; 561 QTimer* mSuspendTimer;
561 QTimer* mAlarmTimer; 562 QTimer* mAlarmTimer;
562 QTimer* mRecheckAlarmTimer; 563 QTimer* mRecheckAlarmTimer;
563 void computeAlarm( QString ); 564 void computeAlarm( QString );
564 void startAlarm( QString, QString ); 565 void startAlarm( QString, QString );
565 void setSyncEventsReadOnly(); 566 void setSyncEventsReadOnly();
566 567
567 QDateTime loadedFileVersion; 568 QDateTime loadedFileVersion;
568 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 569 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
569 void checkExternalId( Incidence * inc ); 570 void checkExternalId( Incidence * inc );
570 int mGlobalSyncMode; 571 int mGlobalSyncMode;
571 QString mCurrentSyncDevice; 572 QString mCurrentSyncDevice;
572 QString mCurrentSyncName; 573 QString mCurrentSyncName;
573 void init(); 574 void init();
574 int mDatePickerMode; 575 int mDatePickerMode;
575 bool mFlagEditDescription; 576 bool mFlagEditDescription;
576 QDateTime mLastCalendarSync; 577 QDateTime mLastCalendarSync;
577 void createPrinter(); 578 void createPrinter();
578 579
579 void calendarModified( bool, Calendar * ); 580 void calendarModified( bool, Calendar * );
580 581
581 CalPrinter *mCalPrinter; 582 CalPrinter *mCalPrinter;
582 583
583 QSplitter *mPanner; 584 QSplitter *mPanner;
584 QSplitter *mLeftSplitter; 585 QSplitter *mLeftSplitter;
585 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame; 586 KDGanttMinimizeSplitter *mLeftFrame, *mMainFrame;
586 QWidgetStack *mRightFrame; 587 QWidgetStack *mRightFrame;
587 588
diff --git a/korganizer/kofilterview.cpp b/korganizer/kofilterview.cpp
index ef25fd0..ee9c9f6 100644
--- a/korganizer/kofilterview.cpp
+++ b/korganizer/kofilterview.cpp
@@ -1,497 +1,499 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@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 <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qcombobox.h> 25#include <qcombobox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qlabel.h> 28#include <qlabel.h>
29#include <qdialog.h> 29#include <qdialog.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31#include <qtextcodec.h> 31#include <qtextcodec.h>
32#include <qwhatsthis.h> 32#include <qwhatsthis.h>
33#include <qdir.h> 33#include <qdir.h>
34 34
35 35
36#include <libkcal/calfilter.h> 36#include <libkcal/calfilter.h>
37 37
38#include "kofilterview.h" 38#include "kofilterview.h"
39#include "koprefs.h" 39#include "koprefs.h"
40#include <kiconloader.h> 40#include <kiconloader.h>
41#include <kglobal.h> 41#include <kglobal.h>
42#include <kglobalsettings.h> 42#include <kglobalsettings.h>
43#include <kcolorbutton.h> 43#include <kcolorbutton.h>
44#include <kmessagebox.h> 44#include <kmessagebox.h>
45 45
46 46
47 47
48 48
49 49
50KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent, 50KOFilterView::KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent,
51 const char* name,WFlags fl ) 51 const char* name,WFlags fl )
52 : KOFilterView_base(parent,name,fl) 52 : KOFilterView_base(parent,name,fl)
53{ 53{
54 mFilters = filterList; 54 mFilters = filterList;
55 55
56 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged())); 56 connect(mSelectionCombo,SIGNAL(activated(int)),SIGNAL(filterChanged()));
57 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged())); 57 connect(mEnabledCheck,SIGNAL(clicked()),SIGNAL(filterChanged()));
58 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters())); 58 connect(mEditButton,SIGNAL(clicked()),SIGNAL(editFilters()));
59} 59}
60 60
61KOFilterView::~KOFilterView() 61KOFilterView::~KOFilterView()
62{ 62{
63 // no need to delete child widgets, Qt does it all for us 63 // no need to delete child widgets, Qt does it all for us
64} 64}
65 65
66bool KOFilterView::filtersEnabled() 66bool KOFilterView::filtersEnabled()
67{ 67{
68 return mEnabledCheck->isChecked(); 68 return mEnabledCheck->isChecked();
69} 69}
70 70
71void KOFilterView::setFiltersEnabled(bool set) 71void KOFilterView::setFiltersEnabled(bool set)
72{ 72{
73 mEnabledCheck->setChecked(set); 73 mEnabledCheck->setChecked(set);
74 emit filterChanged(); 74 emit filterChanged();
75} 75}
76 76
77 77
78void KOFilterView::updateFilters() 78void KOFilterView::updateFilters()
79{ 79{
80 mSelectionCombo->clear(); 80 mSelectionCombo->clear();
81 81
82 CalFilter *filter = mFilters->first(); 82 CalFilter *filter = mFilters->first();
83 while(filter) { 83 while(filter) {
84 mSelectionCombo->insertItem(filter->name()); 84 mSelectionCombo->insertItem(filter->name());
85 filter = mFilters->next(); 85 filter = mFilters->next();
86 } 86 }
87} 87}
88 88
89CalFilter *KOFilterView::selectedFilter() 89CalFilter *KOFilterView::selectedFilter()
90{ 90{
91 CalFilter *f = mFilters->at(mSelectionCombo->currentItem()); 91 CalFilter *f = mFilters->at(mSelectionCombo->currentItem());
92 return f; 92 return f;
93} 93}
94 94
95void KOFilterView::setSelectedFilter(QString filterName) 95void KOFilterView::setSelectedFilter(QString filterName)
96{ 96{
97 int filter_num = mSelectionCombo->count(); 97 int filter_num = mSelectionCombo->count();
98 int i; 98 int i;
99 for (i=0;i<filter_num;i++) { 99 for (i=0;i<filter_num;i++) {
100 if (mSelectionCombo->text(i)==filterName) 100 if (mSelectionCombo->text(i)==filterName)
101 mSelectionCombo->setCurrentItem(i); 101 mSelectionCombo->setCurrentItem(i);
102 } 102 }
103 emit filterChanged(); 103 emit filterChanged();
104} 104}
105void KOFilterView::setSelectedFilter( int fil ) 105void KOFilterView::setSelectedFilter( int fil )
106{ 106{
107 if ( fil >= mSelectionCombo->count() ) 107 if ( fil >= mSelectionCombo->count() )
108 return; 108 return;
109 mSelectionCombo->setCurrentItem( fil ); 109 mSelectionCombo->setCurrentItem( fil );
110 emit filterChanged(); 110 emit filterChanged();
111} 111}
112 112
113 113
114 114
115KOCalEditView::KOCalEditView(QWidget* parent, 115KOCalEditView::KOCalEditView(QWidget* parent,
116 const char* name ) 116 const char* name )
117 : QScrollView(parent,name) 117 : QScrollView(parent,name)
118{ 118{
119 mw = 0; 119 mw = 0;
120 setResizePolicy( AutoOneFit ); 120 setResizePolicy( AutoOneFit );
121 setFrameStyle ( QFrame::Panel | QFrame::Plain ); 121 setFrameStyle ( QFrame::Panel | QFrame::Plain );
122 setLineWidth ( 1 ); 122 setLineWidth ( 1 );
123 setMidLineWidth ( 1 ); 123 setMidLineWidth ( 1 );
124 setFocusPolicy(NoFocus); 124 setFocusPolicy(NoFocus);
125} 125}
126 126
127KOCalEditView::~KOCalEditView() 127KOCalEditView::~KOCalEditView()
128{ 128{
129 // no need to delete child widgets, Qt does it all for us 129 // no need to delete child widgets, Qt does it all for us
130} 130}
131void KOCalEditView::selectCal(int id ,bool b) 131void KOCalEditView::selectCal(int id ,bool b)
132{ 132{
133 KOPrefs::instance()->getCalendar( id )->isEnabled = b; 133 KOPrefs::instance()->getCalendar( id )->isEnabled = b;
134 emit calendarEnabled ( id, b ); 134 emit calendarEnabled ( id, b );
135 emit needsUpdate(); 135 emit needsUpdate();
136 136
137} 137}
138void KOCalEditView::selectStdCal( int id ) 138void KOCalEditView::selectStdCal( int id )
139{ 139{
140 KOCalRadioButton* it = mStdandardB.first(); 140 KOCalRadioButton* it = mStdandardB.first();
141 while ( it ) { 141 while ( it ) {
142 it->blockSignals( true ); 142 it->blockSignals( true );
143 it->setChecked( it->num() == id ); 143 it->setChecked( it->num() == id );
144 it->blockSignals( false ); 144 it->blockSignals( false );
145 it = mStdandardB.next(); 145 it = mStdandardB.next();
146 } 146 }
147 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 147 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
148 while ( kkf ) { 148 while ( kkf ) {
149 kkf->isStandard = (kkf->mCalNumber == id ); 149 kkf->isStandard = (kkf->mCalNumber == id );
150 kkf = KOPrefs::instance()->mCalendars.next(); 150 kkf = KOPrefs::instance()->mCalendars.next();
151 } 151 }
152 emit setCalendarDefault ( id ); 152 emit setCalendarDefault ( id );
153} 153}
154 154
155void KOCalEditView::selectCalAlarm(int id ,bool b ) 155void KOCalEditView::selectCalAlarm(int id ,bool b )
156{ 156{
157 KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b; 157 KOPrefs::instance()->getCalendar( id )->isAlarmEnabled = b;
158 emit alarmEnabled ( id , b ); 158 emit alarmEnabled ( id , b );
159 emit needsUpdate(); 159 emit needsUpdate();
160} 160}
161void KOCalEditView::selectReadOnly(int id ,bool b ) 161void KOCalEditView::selectReadOnly(int id ,bool b )
162{ 162{
163 163
164 emit calendarReadonly ( id , b ); 164 emit calendarReadonly ( id , b );
165 KOPrefs::instance()->getCalendar( id )->isReadOnly = b; 165 KOPrefs::instance()->getCalendar( id )->isReadOnly = b;
166 if ( KOPrefs::instance()->getCalendar( id )->isStandard && b ) { 166 if ( KOPrefs::instance()->getCalendar( id )->isStandard && b ) {
167 findNewStandard(); 167 findNewStandard();
168 } 168 }
169 if ( !b ){ 169 if ( !b ){
170 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 170 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
171 while ( kkf ) { 171 while ( kkf ) {
172 if (kkf->isReadOnly && kkf->isStandard ) { 172 if (kkf->isReadOnly && kkf->isStandard ) {
173 selectStdCal( id ); 173 selectStdCal( id );
174 break; 174 break;
175 } 175 }
176 kkf = KOPrefs::instance()->mCalendars.next(); 176 kkf = KOPrefs::instance()->mCalendars.next();
177 } 177 }
178 } 178 }
179 179
180 mStdandardB.at(id-1)->setEnabled( !b ); 180 mStdandardB.at(id-1)->setEnabled( !b );
181 emit needsUpdate(); 181 emit needsUpdate();
182 182
183} 183}
184void KOCalEditView::findNewStandard() 184void KOCalEditView::findNewStandard()
185{ 185{
186 bool found = false; 186 bool found = false;
187 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 187 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
188 while ( kkf ) { 188 while ( kkf ) {
189 if (!kkf->isReadOnly && !kkf->mErrorOnLoad ) { 189 if (!kkf->isReadOnly && !kkf->mErrorOnLoad ) {
190 found = true; 190 found = true;
191 selectStdCal( kkf->mCalNumber ); 191 selectStdCal( kkf->mCalNumber );
192 break; 192 break;
193 } 193 }
194 kkf = KOPrefs::instance()->mCalendars.next(); 194 kkf = KOPrefs::instance()->mCalendars.next();
195 } 195 }
196 if ( !found ) { 196 if ( !found ) {
197 KMessageBox::error( this,i18n("\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n"), 197 KMessageBox::error( this,i18n("\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n"),
198 i18n("Houston, we have a problem!") ); 198 i18n("Houston, we have a problem!") );
199 199
200 } 200 }
201} 201}
202 202
203void KOCalEditView::setColor( const QColor& c, int id ) 203void KOCalEditView::setColor( const QColor& c, int id )
204{ 204{
205 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c; 205 KOPrefs::instance()->getCalendar( id )->mDefaultColor = c;
206 emit needsUpdate(); 206 emit needsUpdate();
207} 207}
208void KOCalEditView::deleteCal( int id ) 208void KOCalEditView::deleteCal( int id )
209{ 209{
210 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id ); 210 KopiCalendarFile * kkf = KOPrefs::instance()->getCalendar( id );
211 QString name = kkf->mName; 211 QString name = kkf->mName;
212 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 ); 212 QString file = KGlobal::formatMessage ( kkf->mFileName ,0 );
213 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return; 213 if ( KMessageBox::warningContinueCancel( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>. Do you want to remove this calendar from KO/Pi? (The file is not removed!)").arg(name).arg(file) ) != KMessageBox::Continue ) return;
214 bool findnewstd = kkf->isStandard; 214 bool findnewstd = kkf->isStandard;
215 emit removeCalendar ( id ); 215 emit removeCalendar ( id );
216 KOPrefs::instance()->mCalendars.remove ( kkf ); 216 KOPrefs::instance()->mCalendars.remove ( kkf );
217 if ( findnewstd ) findNewStandard(); 217 if ( findnewstd ) findNewStandard();
218 emit needsUpdate(); 218 emit needsUpdate();
219 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 219 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
220} 220}
221void KOCalEditView::infoCal( int id ) 221void KOCalEditView::infoCal( int id )
222{ 222{
223 QString name = KOPrefs::instance()->getCalendar( id )->mName; 223 QString name = KOPrefs::instance()->getCalendar( id )->mName;
224 QString file = KGlobal::formatMessage ( KOPrefs::instance()->getCalendar( id )->mFileName, 0 ); 224 QString file = KGlobal::formatMessage ( KOPrefs::instance()->getCalendar( id )->mFileName, 0 );
225 if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) { 225 if ( KOPrefs::instance()->getCalendar( id )->mErrorOnLoad ) {
226 if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) { 226 if ( KMessageBox::Yes == KMessageBox::questionYesNo( this, i18n("The calendar <b>%1</b> is not loaded! Loading of file <b>%2</b> failed! <b>Try again to load the calendar?</b>").arg(name).arg(file) ) ) {
227 emit calendarAdded( id ); 227 emit calendarAdded( id );
228 emit needsUpdate(); 228 emit needsUpdate();
229 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 229 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
230 QTimer::singleShot( 100, this, SIGNAL ( checkCalendar() ) ); 230 QTimer::singleShot( 100, this, SIGNAL ( checkCalendar() ) );
231 } 231 }
232 } 232 }
233 else 233 else {
234 KMessageBox::information( this, i18n("The calendar <b>%1</b> is displaying file <b>%2</b>").arg(name).arg(file) ); 234 emit requestCalendarInfo( id );
235
236 }
235} 237}
236void KOCalEditView::readConfig() 238void KOCalEditView::readConfig()
237{ 239{
238 240
239 mStdandardB.clear(); 241 mStdandardB.clear();
240 mEnabledB.clear(); 242 mEnabledB.clear();
241 mAlarmB.clear(); 243 mAlarmB.clear();
242 mROB.clear(); 244 mROB.clear();
243 245
244 if ( mw ) delete mw; 246 if ( mw ) delete mw;
245 mw = new QWidget ( viewport() ); 247 mw = new QWidget ( viewport() );
246 addChild(mw); 248 addChild(mw);
247 int ii = 0; 249 int ii = 0;
248 mainLayout = new QGridLayout ( mw , 2, 8 ); 250 mainLayout = new QGridLayout ( mw , 2, 8 );
249 mainLayout->setMargin( 2 ); 251 mainLayout->setMargin( 2 );
250 mainLayout->setSpacing( 2 ); 252 mainLayout->setSpacing( 2 );
251 QPushButton * addButT = new QPushButton ( mw ); 253 QPushButton * addButT = new QPushButton ( mw );
252 addButT->setFocusPolicy(NoFocus); 254 addButT->setFocusPolicy(NoFocus);
253 mainLayout->addWidget( addButT,0,0 ); 255 mainLayout->addWidget( addButT,0,0 );
254 addButT->setText( "D"); 256 addButT->setText( "D");
255 connect(addButT,SIGNAL(clicked()),SLOT(defaultInfo())); 257 connect(addButT,SIGNAL(clicked()),SLOT(defaultInfo()));
256 QWhatsThis::add( addButT, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") ); 258 QWhatsThis::add( addButT, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") );
257 //addBut->setPixmap ( SmallIcon("greenhook16")); 259 //addBut->setPixmap ( SmallIcon("greenhook16"));
258 QPushButton *addBut = new QPushButton ( mw ); 260 QPushButton *addBut = new QPushButton ( mw );
259 addBut->setFocusPolicy(NoFocus); 261 addBut->setFocusPolicy(NoFocus);
260 mainLayout->addWidget( addBut,0,++ii ); 262 mainLayout->addWidget( addBut,0,++ii );
261 addBut->setPixmap ( SmallIcon("eye")); 263 addBut->setPixmap ( SmallIcon("eye"));
262 QWhatsThis::add( addBut, i18n("In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.") ); 264 QWhatsThis::add( addBut, i18n("In this column you can <b>set a calendar to be visible</b>. If a calendar is not visible its entries are not displayed in the views. You can add items to it and it is loaded/saved as usual.") );
263 connect(addBut,SIGNAL(clicked()),SLOT(enableAll())); 265 connect(addBut,SIGNAL(clicked()),SLOT(enableAll()));
264 int max = addBut->sizeHint().height(); 266 int max = addBut->sizeHint().height();
265 addBut->setMaximumWidth( max ); 267 addBut->setMaximumWidth( max );
266 addButT->setFixedSize( QSize( max, max ) ); 268 addButT->setFixedSize( QSize( max, max ) );
267 QLabel* lab = new QLabel (i18n(" Calendar \n Resource "), mw ); 269 QLabel* lab = new QLabel (i18n(" Calendar \n Resource "), mw );
268 mainLayout->addWidget( lab,0,++ii ); 270 mainLayout->addWidget( lab,0,++ii );
269 QWhatsThis::add( lab, i18n("In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.") ); 271 QWhatsThis::add( lab, i18n("In this column you can see the <b>name of the calendar</b>. If you click on the name button you will get an information box about the loaded calendar file. If the file was not loaded at startup you can try to load it here again.") );
270 //lab = new QLabel ( i18n(" "), mw ); 272 //lab = new QLabel ( i18n(" "), mw );
271 //mainLayout->addWidget( lab,0,++ii ); 273 //mainLayout->addWidget( lab,0,++ii );
272 //lab->setFixedWidth( 1 ); 274 //lab->setFixedWidth( 1 );
273 addBut = new QPushButton ( mw ); 275 addBut = new QPushButton ( mw );
274 addBut->setFocusPolicy(NoFocus); 276 addBut->setFocusPolicy(NoFocus);
275 mainLayout->addWidget( addBut,0,++ii ); 277 mainLayout->addWidget( addBut,0,++ii );
276 addBut->setPixmap ( SmallIcon("bell")); 278 addBut->setPixmap ( SmallIcon("bell"));
277 QWhatsThis::add( addBut, i18n("In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as \"do not use\". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.") ); 279 QWhatsThis::add( addBut, i18n("In this column you can <b>disable the alarms of a calendar all together</b>. The alarm data in the calendar itself is not changed, the alarms are marked internally as \"do not use\". Useful if you load a calendar of another person but do not want to get notified about alarms of that person.") );
278 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm())); 280 connect(addBut,SIGNAL(clicked()),SLOT(enableAlarm()));
279 addBut->setMaximumWidth( addBut->sizeHint().height() ); 281 addBut->setMaximumWidth( addBut->sizeHint().height() );
280 282
281 addBut = new QPushButton ( mw ); 283 addBut = new QPushButton ( mw );
282 addBut->setFocusPolicy(NoFocus); 284 addBut->setFocusPolicy(NoFocus);
283 mainLayout->addWidget( addBut,0,++ii ); 285 mainLayout->addWidget( addBut,0,++ii );
284 addBut->setPixmap ( SmallIcon("pencil")); 286 addBut->setPixmap ( SmallIcon("pencil"));
285 QWhatsThis::add( addBut, i18n("In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.") ); 287 QWhatsThis::add( addBut, i18n("In this column you can <b>set a calendar and all entries of the calendar to read only</b>. If a calendar is readonly the entries cannot be edited and no items can be added to the calendar. If you change a setting of a calendar to readonly in this column all data will be saved because the data of a readonly calendar is not saved later.") );
286 connect(addBut,SIGNAL(clicked()),SLOT(disableRO())); 288 connect(addBut,SIGNAL(clicked()),SLOT(disableRO()));
287 addBut->setMaximumWidth( addBut->sizeHint().height() ); 289 addBut->setMaximumWidth( addBut->sizeHint().height() );
288 lab = new QLabel ( "", mw ); 290 lab = new QLabel ( "", mw );
289 mainLayout->addWidget( lab,0,++ii ); 291 mainLayout->addWidget( lab,0,++ii );
290 292
291 addBut = new QPushButton ( mw ); 293 addBut = new QPushButton ( mw );
292 addBut->setFocusPolicy(NoFocus); 294 addBut->setFocusPolicy(NoFocus);
293 mainLayout->addWidget( addBut,0,++ii ); 295 mainLayout->addWidget( addBut,0,++ii );
294 addBut->setPixmap ( SmallIcon("plus")); 296 addBut->setPixmap ( SmallIcon("plus"));
295 connect(addBut,SIGNAL(clicked()),SLOT(addCal())); 297 connect(addBut,SIGNAL(clicked()),SLOT(addCal()));
296 QWhatsThis::add( addBut, i18n("Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.") ); 298 QWhatsThis::add( addBut, i18n("Click this button to <b>add a calendar</b>. You can add an existing calendar file or you can add a new calendar and KO/Pi creates a new empty calendar file for you.") );
297 lab = new QLabel ( " ", mw ); 299 lab = new QLabel ( " ", mw );
298 mainLayout->addWidget( lab,0,++ii ); 300 mainLayout->addWidget( lab,0,++ii );
299 301
300 302
301 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 303 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
302 int row = 1; 304 int row = 1;
303 bool errorLoadStandard = false; 305 bool errorLoadStandard = false;
304 while ( kkf ) { 306 while ( kkf ) {
305 int iii = 0; 307 int iii = 0;
306 KOCalRadioButton* rb = new KOCalRadioButton( mw ); 308 KOCalRadioButton* rb = new KOCalRadioButton( mw );
307 mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb ); 309 mainLayout->addWidget( rb,row,0 );mStdandardB.append( rb );
308 rb->setChecked( kkf->isStandard ); 310 rb->setChecked( kkf->isStandard );
309 if ( kkf->isStandard && ( kkf->mErrorOnLoad || kkf->isReadOnly ) ) 311 if ( kkf->isStandard && ( kkf->mErrorOnLoad || kkf->isReadOnly ) )
310 errorLoadStandard = true; 312 errorLoadStandard = true;
311 rb->setNum( kkf->mCalNumber ); 313 rb->setNum( kkf->mCalNumber );
312 connect (rb, SIGNAL (selectNum(int)), SLOT ( selectStdCal(int) ) ); 314 connect (rb, SIGNAL (selectNum(int)), SLOT ( selectStdCal(int) ) );
313 if ( kkf->mErrorOnLoad || kkf->isReadOnly ) 315 if ( kkf->mErrorOnLoad || kkf->isReadOnly )
314 rb->setEnabled( false ); 316 rb->setEnabled( false );
315 KOCalCheckButton* cb = new KOCalCheckButton( mw ); 317 KOCalCheckButton* cb = new KOCalCheckButton( mw );
316 mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb ); 318 mainLayout->addWidget( cb,row,++iii );mEnabledB.append( cb );
317 cb->setChecked( kkf->isEnabled && !kkf->mErrorOnLoad ); 319 cb->setChecked( kkf->isEnabled && !kkf->mErrorOnLoad );
318 cb->setNum( kkf->mCalNumber ); 320 cb->setNum( kkf->mCalNumber );
319 if ( kkf->mErrorOnLoad ) 321 if ( kkf->mErrorOnLoad )
320 cb->setEnabled( false ); 322 cb->setEnabled( false );
321 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) ); 323 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCal(int,bool) ) );
322 KOCalButton* name = new KOCalButton( mw ); 324 KOCalButton* name = new KOCalButton( mw );
323 name->setNum( kkf->mCalNumber ); 325 name->setNum( kkf->mCalNumber );
324 name->setText( kkf->mName ); 326 name->setText( kkf->mName );
325 mainLayout->addWidget( name,row,++iii ); 327 mainLayout->addWidget( name,row,++iii );
326 connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) ); 328 connect (name, SIGNAL (selectNum(int)), SLOT ( infoCal(int) ) );
327 //lab = new QLabel (" ", mw ); 329 //lab = new QLabel (" ", mw );
328 //mainLayout->addWidget( lab,row,++iii ); 330 //mainLayout->addWidget( lab,row,++iii );
329 cb = new KOCalCheckButton( mw ); 331 cb = new KOCalCheckButton( mw );
330 mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb ); 332 mainLayout->addWidget( cb,row,++iii );mAlarmB.append( cb );
331 cb->setChecked( kkf->isAlarmEnabled && !kkf->mErrorOnLoad); 333 cb->setChecked( kkf->isAlarmEnabled && !kkf->mErrorOnLoad);
332 cb->setNum( kkf->mCalNumber ); 334 cb->setNum( kkf->mCalNumber );
333 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) ); 335 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectCalAlarm(int,bool) ) );
334 if ( kkf->mErrorOnLoad ) 336 if ( kkf->mErrorOnLoad )
335 cb->setEnabled( false ); 337 cb->setEnabled( false );
336 cb = new KOCalCheckButton( mw ); 338 cb = new KOCalCheckButton( mw );
337 mainLayout->addWidget( cb,row,++iii );mROB.append( cb ); 339 mainLayout->addWidget( cb,row,++iii );mROB.append( cb );
338 cb->setChecked( kkf->isReadOnly ); 340 cb->setChecked( kkf->isReadOnly );
339 cb->setNum( kkf->mCalNumber ); 341 cb->setNum( kkf->mCalNumber );
340 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) ); 342 connect (cb, SIGNAL (selectNum(int,bool)), SLOT ( selectReadOnly(int,bool) ) );
341 if ( kkf->mErrorOnLoad ) 343 if ( kkf->mErrorOnLoad )
342 cb->setEnabled( false ); 344 cb->setEnabled( false );
343 if ( row > 1) { 345 if ( row > 1) {
344 KColorButton *colb = new KColorButton( mw ); 346 KColorButton *colb = new KColorButton( mw );
345 mainLayout->addWidget( colb,row,++iii ); 347 mainLayout->addWidget( colb,row,++iii );
346 colb->setID( kkf->mCalNumber ); 348 colb->setID( kkf->mCalNumber );
347 colb->setColor( kkf->mDefaultColor ); 349 colb->setColor( kkf->mDefaultColor );
348 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) ); 350 connect (colb, SIGNAL (changedID(const QColor&, int )), SLOT ( setColor(const QColor&,int) ) );
349 KOCalButton* calb = new KOCalButton( mw ); 351 KOCalButton* calb = new KOCalButton( mw );
350 mainLayout->addWidget( calb,row,++iii ); 352 mainLayout->addWidget( calb,row,++iii );
351 calb->setNum( kkf->mCalNumber ); 353 calb->setNum( kkf->mCalNumber );
352 calb->setPixmap ( SmallIcon("minus")); 354 calb->setPixmap ( SmallIcon("minus"));
353 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) ); 355 connect (calb, SIGNAL (selectNum(int)), SLOT ( deleteCal(int) ) );
354 int hei = calb->sizeHint().height(); 356 int hei = calb->sizeHint().height();
355 //calb->setMaximumSize( hei*9/10, hei*9/10 ); 357 //calb->setMaximumSize( hei*9/10, hei*9/10 );
356 } 358 }
357 ++row; 359 ++row;
358 kkf = KOPrefs::instance()->mCalendars.next(); 360 kkf = KOPrefs::instance()->mCalendars.next();
359 } 361 }
360 if ( errorLoadStandard ) 362 if ( errorLoadStandard )
361 findNewStandard(); 363 findNewStandard();
362 lab = new QLabel ( "", mw ); 364 lab = new QLabel ( "", mw );
363 mainLayout->addWidget( lab,row,0 ); 365 mainLayout->addWidget( lab,row,0 );
364 mw->show(); 366 mw->show();
365 367
366} 368}
367 369
368void KOCalEditView::defaultInfo() 370void KOCalEditView::defaultInfo()
369{ 371{
370 KMessageBox::information( this, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") ); 372 KMessageBox::information( this, i18n("Please choose the <b>default calendar</b> in this column. Newly created or imported items are added to the default calendar.") );
371} 373}
372void KOCalEditView::addCal() 374void KOCalEditView::addCal()
373{ 375{
374 bool tryagain = true; 376 bool tryagain = true;
375 QString name, file = KGlobalSettings::calendarDir()+"newCal.ics"; 377 QString name, file = KGlobalSettings::calendarDir()+"newCal.ics";
376 while ( tryagain ) { 378 while ( tryagain ) {
377 KONewCalPrefs prefs ( this ); 379 KONewCalPrefs prefs ( this );
378 prefs.nameE->setText( name ); 380 prefs.nameE->setText( name );
379 prefs.url->setURL( file ); 381 prefs.url->setURL( file );
380 if ( ! prefs.exec() ) 382 if ( ! prefs.exec() )
381 return; 383 return;
382 name = prefs.calName(); 384 name = prefs.calName();
383 file = prefs.calFileName(); 385 file = prefs.calFileName();
384 tryagain = false; 386 tryagain = false;
385 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 387 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
386 while ( kkf ) { 388 while ( kkf ) {
387 if ( kkf->mName == name ) { 389 if ( kkf->mName == name ) {
388 KMessageBox::information( this, i18n("Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!").arg( name ) ); 390 KMessageBox::information( this, i18n("Sorry, the calendar name \n%1\nalready exists!\nPlease choose another name!").arg( name ) );
389 name = ""; 391 name = "";
390 tryagain = true; 392 tryagain = true;
391 break; 393 break;
392 } 394 }
393 if ( kkf->mFileName == file ) { 395 if ( kkf->mFileName == file ) {
394 KMessageBox::information( this, i18n("Sorry, the file \n%1\nis already loaded!\nPlease choose another file!").arg( KGlobal::formatMessage (file, 0 )) ); 396 KMessageBox::information( this, i18n("Sorry, the file \n%1\nis already loaded!\nPlease choose another file!").arg( KGlobal::formatMessage (file, 0 )) );
395 tryagain = true; 397 tryagain = true;
396 file = KGlobalSettings::calendarDir()+"newCal.ics"; 398 file = KGlobalSettings::calendarDir()+"newCal.ics";
397 break; 399 break;
398 } 400 }
399 kkf = KOPrefs::instance()->mCalendars.next(); 401 kkf = KOPrefs::instance()->mCalendars.next();
400 } 402 }
401 QFileInfo fi ( file ); 403 QFileInfo fi ( file );
402 if ( fi.isDir() ) { 404 if ( fi.isDir() ) {
403 tryagain = true; 405 tryagain = true;
404 } 406 }
405 } 407 }
406 addCalendar ( name, file ); 408 addCalendar ( name, file );
407 QTimer::singleShot( 100, this, SIGNAL ( checkCalendar() ) ); 409 QTimer::singleShot( 100, this, SIGNAL ( checkCalendar() ) );
408} 410}
409int KOCalEditView::addCalendar( QString name, QString file, bool ask ) 411int KOCalEditView::addCalendar( QString name, QString file, bool ask )
410{ 412{
411 file = QDir::convertSeparators( file ); 413 file = QDir::convertSeparators( file );
412 QFileInfo fi ( file ); 414 QFileInfo fi ( file );
413 QString absFile = file; 415 QString absFile = file;
414 bool isRelative = false; 416 bool isRelative = false;
415 if ( fi.isRelative() ) { 417 if ( fi.isRelative() ) {
416 isRelative = true; 418 isRelative = true;
417 absFile = QDir::convertSeparators( KGlobalSettings::calendarDir()+file ); 419 absFile = QDir::convertSeparators( KGlobalSettings::calendarDir()+file );
418 fi.setFile( absFile ); 420 fi.setFile( absFile );
419 } else { 421 } else {
420 QString cd = QDir::convertSeparators( KGlobalSettings::calendarDir() ); 422 QString cd = QDir::convertSeparators( KGlobalSettings::calendarDir() );
421 if ( file.left( cd.length() ) == cd ) { 423 if ( file.left( cd.length() ) == cd ) {
422 isRelative = true; 424 isRelative = true;
423 file = fi.fileName (); 425 file = fi.fileName ();
424 fi.setFile( absFile ); 426 fi.setFile( absFile );
425 } 427 }
426 } 428 }
427 if (!fi.exists() ) { 429 if (!fi.exists() ) {
428 if ( ask ) 430 if ( ask )
429 if ( KMessageBox::questionYesNo(this, i18n("The file\n%1\ndoes not exist!\nShall I create it for you?").arg( KGlobal::formatMessage (absFile,0) ) )== KMessageBox::No ) 431 if ( KMessageBox::questionYesNo(this, i18n("The file\n%1\ndoes not exist!\nShall I create it for you?").arg( KGlobal::formatMessage (absFile,0) ) )== KMessageBox::No )
430 return 0; 432 return 0;
431 QFile fileIn( absFile ); 433 QFile fileIn( absFile );
432 if (!fileIn.open( IO_WriteOnly ) ) { 434 if (!fileIn.open( IO_WriteOnly ) ) {
433 KMessageBox::sorry( this, i18n("Sorry, cannot create the file\n%1!\nNo calendar added!").arg( file ) ); 435 KMessageBox::sorry( this, i18n("Sorry, cannot create the file\n%1!\nNo calendar added!").arg( file ) );
434 return 0; 436 return 0;
435 } 437 }
436 QTextStream tsIn( &fileIn ); 438 QTextStream tsIn( &fileIn );
437 tsIn.setCodec( QTextCodec::codecForName("utf8") ); 439 tsIn.setCodec( QTextCodec::codecForName("utf8") );
438 tsIn << "BEGIN:VCALENDAR\nPRODID:-//KDE-Pim//Platform-independent 2.1.0\nVERSION:2.0\nEND:VCALENDAR\n"; 440 tsIn << "BEGIN:VCALENDAR\nPRODID:-//KDE-Pim//Platform-independent 2.1.0\nVERSION:2.0\nEND:VCALENDAR\n";
439 fileIn.close(); 441 fileIn.close();
440 } 442 }
441 KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar(); 443 KopiCalendarFile * kkf = KOPrefs::instance()->getNewCalendar();
442 kkf->mName = name; 444 kkf->mName = name;
443 kkf->mFileName = absFile; 445 kkf->mFileName = absFile;
444 kkf->mSavedFileName = file; 446 kkf->mSavedFileName = file;
445 kkf->isRelative = isRelative; 447 kkf->isRelative = isRelative;
446 emit calendarAdded( kkf->mCalNumber ); 448 emit calendarAdded( kkf->mCalNumber );
447 if ( ask ) 449 if ( ask )
448 emit needsUpdate(); 450 emit needsUpdate();
449 QTimer::singleShot( 0, this, SLOT ( readConfig() ) ); 451 QTimer::singleShot( 0, this, SLOT ( readConfig() ) );
450 return kkf->mCalNumber; 452 return kkf->mCalNumber;
451} 453}
452int KOCalEditView::getBirtdayID() 454int KOCalEditView::getBirtdayID()
453{ 455{
454 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 456 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
455 while ( kkf ) { 457 while ( kkf ) {
456 if ( kkf->mName == i18n("Birthdays") ) 458 if ( kkf->mName == i18n("Birthdays") )
457 return kkf->mCalNumber; 459 return kkf->mCalNumber;
458 kkf = KOPrefs::instance()->mCalendars.next(); 460 kkf = KOPrefs::instance()->mCalendars.next();
459 } 461 }
460 QString file = locateLocal( "data", "korganizer/birthdays.ics" ); 462 QString file = locateLocal( "data", "korganizer/birthdays.ics" );
461 return addCalendar( i18n("Birthdays"), file, false ); 463 return addCalendar( i18n("Birthdays"), file, false );
462} 464}
463 465
464void KOCalEditView::enableAll() 466void KOCalEditView::enableAll()
465{ 467{
466 toggleList( mEnabledB ); 468 toggleList( mEnabledB );
467} 469}
468void KOCalEditView::enableAlarm() 470void KOCalEditView::enableAlarm()
469{ 471{
470 toggleList( mAlarmB ); 472 toggleList( mAlarmB );
471} 473}
472void KOCalEditView::disableRO() 474void KOCalEditView::disableRO()
473{ 475{
474 toggleList( mROB, false ); 476 toggleList( mROB, false );
475} 477}
476void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list , bool enable ) 478void KOCalEditView::toggleList ( QPtrList<KOCalCheckButton> list , bool enable )
477{ 479{
478 bool dis = !enable; 480 bool dis = !enable;
479 KOCalCheckButton* it = list.first(); 481 KOCalCheckButton* it = list.first();
480 while ( it ) { 482 while ( it ) {
481 if ( !it->isChecked() == enable && it->isEnabled() ) { 483 if ( !it->isChecked() == enable && it->isEnabled() ) {
482 dis = !dis; 484 dis = !dis;
483 break; 485 break;
484 } 486 }
485 it = list.next(); 487 it = list.next();
486 } 488 }
487 it = list.first(); 489 it = list.first();
488 while ( it ) { 490 while ( it ) {
489 if ( it->isEnabled() ) 491 if ( it->isEnabled() )
490 it->setChecked(dis); 492 it->setChecked(dis);
491 it = list.next(); 493 it = list.next();
492 } 494 }
493} 495}
494void KOCalEditView::deleteAll() 496void KOCalEditView::deleteAll()
495{ 497{
496 qDebug("delteAll"); 498 qDebug("delteAll");
497} 499}
diff --git a/korganizer/kofilterview.h b/korganizer/kofilterview.h
index d534dbf..0dd423a 100644
--- a/korganizer/kofilterview.h
+++ b/korganizer/kofilterview.h
@@ -1,256 +1,257 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@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#ifndef KOFILTERVIEW_H 23#ifndef KOFILTERVIEW_H
24#define KOFILTERVIEW_H 24#define KOFILTERVIEW_H
25 25
26#include <qstring.h> 26#include <qstring.h>
27#include <qcheckbox.h> 27#include <qcheckbox.h>
28#include <qapplication.h> 28#include <qapplication.h>
29#include <qradiobutton.h> 29#include <qradiobutton.h>
30#include <qlayout.h> 30#include <qlayout.h>
31#include <qlabel.h> 31#include <qlabel.h>
32#include <qdialog.h> 32#include <qdialog.h>
33#include <qscrollview.h> 33#include <qscrollview.h>
34#include <qpushbutton.h> 34#include <qpushbutton.h>
35#include <kconfig.h> 35#include <kconfig.h>
36#include "kofilterview_base.h" 36#include "kofilterview_base.h"
37 37
38#include <libkcal/calfilter.h> 38#include <libkcal/calfilter.h>
39 39
40#include <kurlrequester.h> 40#include <kurlrequester.h>
41#include <klineedit.h> 41#include <klineedit.h>
42#include <kglobal.h> 42#include <kglobal.h>
43#include <kmessagebox.h> 43#include <kmessagebox.h>
44 44
45class QGridLayout; 45class QGridLayout;
46 46
47using namespace KCal; 47using namespace KCal;
48 48
49class KONewCalPrefs : public QDialog 49class KONewCalPrefs : public QDialog
50{ 50{
51 Q_OBJECT 51 Q_OBJECT
52 public: 52 public:
53 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) : 53 KONewCalPrefs( QWidget *parent=0, const char *name=0 ) :
54 QDialog( parent, name, true ) 54 QDialog( parent, name, true )
55 { 55 {
56 setCaption( i18n("Add new Calendar") ); 56 setCaption( i18n("Add new Calendar") );
57 QVBoxLayout* lay = new QVBoxLayout( this ); 57 QVBoxLayout* lay = new QVBoxLayout( this );
58 lay->setSpacing( 3 ); 58 lay->setSpacing( 3 );
59 lay->setMargin( 3 ); 59 lay->setMargin( 3 );
60 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this ); 60 QLabel * lab = new QLabel( i18n("<b>Name of new calendar:</b>"), this );
61 lay->addWidget( lab ); 61 lay->addWidget( lab );
62 nameE = new KLineEdit( this ); 62 nameE = new KLineEdit( this );
63 lay->addWidget( nameE ); 63 lay->addWidget( nameE );
64 lab = new QLabel( i18n("<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)"), this ); 64 lab = new QLabel( i18n("<b>iCal (*.ics) file on disk:</b><br>(will be created, if not existing)"), this );
65 lay->addWidget( lab ); 65 lay->addWidget( lab );
66 url = new KURLRequester ( this ); 66 url = new KURLRequester ( this );
67 lay->addWidget( url ); 67 lay->addWidget( url );
68 QPushButton * ok = new QPushButton( i18n("OK"), this ); 68 QPushButton * ok = new QPushButton( i18n("OK"), this );
69 lay->addWidget( ok ); 69 lay->addWidget( ok );
70 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 70 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
71 lay->addWidget( cancel ); 71 lay->addWidget( cancel );
72 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) ); 72 connect ( ok,SIGNAL(clicked() ),this , SLOT ( checkValid() ) );
73 connect (cancel, SIGNAL( clicked() ), this, SLOT ( reject()) ); 73 connect (cancel, SIGNAL( clicked() ), this, SLOT ( reject()) );
74 int minwid = 440; 74 int minwid = 440;
75 if ( QApplication::desktop()->width() < 480 ) minwid = 220; 75 if ( QApplication::desktop()->width() < 480 ) minwid = 220;
76 setMinimumWidth( minwid ); 76 setMinimumWidth( minwid );
77 resize(sizeHint() ); 77 resize(sizeHint() );
78 } 78 }
79 79
80 QString calName() { return nameE->text(); } 80 QString calName() { return nameE->text(); }
81 QString calFileName() { return url->url(); } 81 QString calFileName() { return url->url(); }
82 82
83public slots: 83public slots:
84void checkValid() { 84void checkValid() {
85 if ( nameE->text().isEmpty() ) { 85 if ( nameE->text().isEmpty() ) {
86 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") ); 86 KMessageBox::information( this, i18n("Sorry, the calendar name is empty!") );
87 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () )); 87 nameE->setText( "LPQJ_"+ QString::number( QTime::currentTime().msec () ));
88 return; 88 return;
89 } 89 }
90 if ( url->url().isEmpty() ) { 90 if ( url->url().isEmpty() ) {
91 KMessageBox::information( this, i18n("Sorry, the file name is empty!") ); 91 KMessageBox::information( this, i18n("Sorry, the file name is empty!") );
92 url->setURL( nameE->text() + ".ics" ); 92 url->setURL( nameE->text() + ".ics" );
93 return; 93 return;
94 } 94 }
95 accept(); 95 accept();
96} 96}
97 97
98public: 98public:
99 KLineEdit* nameE; 99 KLineEdit* nameE;
100 KURLRequester *url; 100 KURLRequester *url;
101}; 101};
102 102
103class KOCalButton : public QPushButton 103class KOCalButton : public QPushButton
104{ 104{
105 Q_OBJECT 105 Q_OBJECT
106 public: 106 public:
107 KOCalButton( QWidget *parent=0, const char *name=0 ) : 107 KOCalButton( QWidget *parent=0, const char *name=0 ) :
108 QPushButton( parent, name) 108 QPushButton( parent, name)
109 { 109 {
110 connect( this, SIGNAL( clicked() ), 110 connect( this, SIGNAL( clicked() ),
111 SLOT( bottonClicked() )); 111 SLOT( bottonClicked() ));
112 mNumber = -1; 112 mNumber = -1;
113 setFocusPolicy(NoFocus); 113 setFocusPolicy(NoFocus);
114 } 114 }
115 void setNum ( int num ) {mNumber = num; } 115 void setNum ( int num ) {mNumber = num; }
116 signals: 116 signals:
117 void selectNum ( int ); 117 void selectNum ( int );
118private: 118private:
119 int mNumber; 119 int mNumber;
120 void keyPressEvent ( QKeyEvent * e ) 120 void keyPressEvent ( QKeyEvent * e )
121 { 121 {
122 e->ignore(); 122 e->ignore();
123 } 123 }
124 124
125private slots : 125private slots :
126 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); } 126 void bottonClicked() { if ( mNumber > 0 ) emit selectNum ( mNumber ); }
127}; 127};
128class KOCalCheckButton : public QCheckBox 128class KOCalCheckButton : public QCheckBox
129{ 129{
130 Q_OBJECT 130 Q_OBJECT
131 public: 131 public:
132 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) : 132 KOCalCheckButton( QWidget *parent=0, const char *name=0 ) :
133 QCheckBox( parent, name) 133 QCheckBox( parent, name)
134 { 134 {
135 connect( this, SIGNAL( toggled ( bool ) ), 135 connect( this, SIGNAL( toggled ( bool ) ),
136 SLOT( bottonClicked( bool ) )); 136 SLOT( bottonClicked( bool ) ));
137 mNumber = -1; 137 mNumber = -1;
138 setFocusPolicy(NoFocus); 138 setFocusPolicy(NoFocus);
139 //setMaximumWidth( 10 ); 139 //setMaximumWidth( 10 );
140 140
141 } 141 }
142 void setNum ( int num ) {mNumber = num; } 142 void setNum ( int num ) {mNumber = num; }
143 signals: 143 signals:
144 void selectNum ( int, bool ); 144 void selectNum ( int, bool );
145private: 145private:
146 int mNumber; 146 int mNumber;
147 void keyPressEvent ( QKeyEvent * e ) 147 void keyPressEvent ( QKeyEvent * e )
148 { 148 {
149 e->ignore(); 149 e->ignore();
150 } 150 }
151 151
152private slots : 152private slots :
153 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); } 153 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber , b); }
154}; 154};
155 155
156class KOCalRadioButton : public QRadioButton 156class KOCalRadioButton : public QRadioButton
157{ 157{
158 Q_OBJECT 158 Q_OBJECT
159 public: 159 public:
160 KOCalRadioButton( QWidget *parent=0, const char *name=0 ) : 160 KOCalRadioButton( QWidget *parent=0, const char *name=0 ) :
161 QRadioButton( parent, name) 161 QRadioButton( parent, name)
162 { 162 {
163 connect( this, SIGNAL( toggled ( bool ) ), 163 connect( this, SIGNAL( toggled ( bool ) ),
164 SLOT( bottonClicked( bool ) )); 164 SLOT( bottonClicked( bool ) ));
165 mNumber = -1; 165 mNumber = -1;
166 setFocusPolicy(NoFocus); 166 setFocusPolicy(NoFocus);
167 //setMaximumWidth( 10 ); 167 //setMaximumWidth( 10 );
168 168
169 } 169 }
170 int num() { return mNumber;} 170 int num() { return mNumber;}
171 void setNum ( int num ) {mNumber = num; } 171 void setNum ( int num ) {mNumber = num; }
172 signals: 172 signals:
173 void selectNum ( int ); 173 void selectNum ( int );
174private: 174private:
175 int mNumber; 175 int mNumber;
176 void keyPressEvent ( QKeyEvent * e ) 176 void keyPressEvent ( QKeyEvent * e )
177 { 177 {
178 e->ignore(); 178 e->ignore();
179 } 179 }
180 180
181private slots : 181private slots :
182 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); } 182 void bottonClicked( bool b) { if ( mNumber > 0 ) emit selectNum ( mNumber); }
183}; 183};
184 184
185 185
186 186
187class KOFilterView : public KOFilterView_base 187class KOFilterView : public KOFilterView_base
188{ 188{
189 Q_OBJECT 189 Q_OBJECT
190 public: 190 public:
191 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0); 191 KOFilterView(QPtrList<CalFilter> *filterList,QWidget* parent=0,const char* name=0, WFlags fl=0);
192 ~KOFilterView(); 192 ~KOFilterView();
193 193
194 void updateFilters(); 194 void updateFilters();
195 195
196 bool filtersEnabled(); 196 bool filtersEnabled();
197 void setFiltersEnabled(bool); 197 void setFiltersEnabled(bool);
198 CalFilter *selectedFilter(); 198 CalFilter *selectedFilter();
199 void setSelectedFilter(QString); 199 void setSelectedFilter(QString);
200 void setSelectedFilter( int ); 200 void setSelectedFilter( int );
201 201
202 signals: 202 signals:
203 void filterChanged(); 203 void filterChanged();
204 void editFilters(); 204 void editFilters();
205 205
206 private: 206 private:
207 QPtrList<CalFilter> *mFilters; 207 QPtrList<CalFilter> *mFilters;
208}; 208};
209 209
210class KOCalEditView : public QScrollView 210class KOCalEditView : public QScrollView
211{ 211{
212 Q_OBJECT 212 Q_OBJECT
213 public: 213 public:
214 KOCalEditView( QWidget* parent=0,const char* name=0); 214 KOCalEditView( QWidget* parent=0,const char* name=0);
215 ~KOCalEditView(); 215 ~KOCalEditView();
216 int addCalendar( QString calName, QString fileName, bool ask = true ); 216 int addCalendar( QString calName, QString fileName, bool ask = true );
217 int getBirtdayID(); 217 int getBirtdayID();
218 public slots: 218 public slots:
219 void addCal(); 219 void addCal();
220 void enableAll(); 220 void enableAll();
221 void enableAlarm(); 221 void enableAlarm();
222 void disableRO(); 222 void disableRO();
223 void deleteAll(); 223 void deleteAll();
224 void selectStdCal(int); 224 void selectStdCal(int);
225 void selectCal(int,bool ); 225 void selectCal(int,bool );
226 void selectCalAlarm(int,bool ); 226 void selectCalAlarm(int,bool );
227 void selectReadOnly(int,bool ); 227 void selectReadOnly(int,bool );
228 void setColor(const QColor &,int) ; 228 void setColor(const QColor &,int) ;
229 void deleteCal(int) ; 229 void deleteCal(int) ;
230 void infoCal(int) ; 230 void infoCal(int) ;
231 void readConfig(); 231 void readConfig();
232 void defaultInfo(); 232 void defaultInfo();
233 void findNewStandard(); 233 void findNewStandard();
234 signals: 234 signals:
235 void alarmEnabled ( int cal, bool enable ); 235 void alarmEnabled ( int cal, bool enable );
236 void calendarEnabled ( int cal, bool enable ); 236 void calendarEnabled ( int cal, bool enable );
237 void calendarReadonly ( int cal, bool readonly ); 237 void calendarReadonly ( int cal, bool readonly );
238 void setCalendarDefault ( int cal ); 238 void setCalendarDefault ( int cal );
239 void removeCalendar ( int cal ); 239 void removeCalendar ( int cal );
240 void calendarAdded( int ); 240 void calendarAdded( int );
241 void needsUpdate(); 241 void needsUpdate();
242 void checkCalendar(); 242 void checkCalendar();
243 void requestCalendarInfo( int id );
243 244
244 private: 245 private:
245 QWidget *mw; 246 QWidget *mw;
246 void toggleList ( QPtrList<KOCalCheckButton> , bool b = true ); 247 void toggleList ( QPtrList<KOCalCheckButton> , bool b = true );
247 QPtrList<KOCalRadioButton> mStdandardB; 248 QPtrList<KOCalRadioButton> mStdandardB;
248 QPtrList<KOCalCheckButton> mEnabledB; 249 QPtrList<KOCalCheckButton> mEnabledB;
249 QPtrList<KOCalCheckButton> mAlarmB; 250 QPtrList<KOCalCheckButton> mAlarmB;
250 QPtrList<KOCalCheckButton> mROB; 251 QPtrList<KOCalCheckButton> mROB;
251 QGridLayout* mainLayout; 252 QGridLayout* mainLayout;
252}; 253};
253 254
254 255
255 256
256#endif // KOFILTERVIEW_H 257#endif // KOFILTERVIEW_H