-rw-r--r-- | korganizer/koeditorgeneralevent.cpp | 31 | ||||
-rw-r--r-- | korganizer/koeditorrecurrence.cpp | 6 | ||||
-rw-r--r-- | korganizer/kotodoeditor.cpp | 1 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 3 |
4 files changed, 25 insertions, 16 deletions
diff --git a/korganizer/koeditorgeneralevent.cpp b/korganizer/koeditorgeneralevent.cpp index 2a49528..d4aa78c 100644 --- a/korganizer/koeditorgeneralevent.cpp +++ b/korganizer/koeditorgeneralevent.cpp | |||
@@ -283,145 +283,152 @@ void KOEditorGeneralEvent::readEvent( Event *event, bool tmpl ) | |||
283 | mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); | 283 | mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); |
284 | mLocationEdit->load(KOLocationBox::LOCATION); | 284 | mLocationEdit->load(KOLocationBox::LOCATION); |
285 | readIncidence(event); | 285 | readIncidence(event); |
286 | } | 286 | } |
287 | 287 | ||
288 | void KOEditorGeneralEvent::writeEvent(Event *event) | 288 | void KOEditorGeneralEvent::writeEvent(Event *event) |
289 | { | 289 | { |
290 | // kdDebug() << "KOEditorGeneralEvent::writeEvent()" << endl; | 290 | // kdDebug() << "KOEditorGeneralEvent::writeEvent()" << endl; |
291 | 291 | ||
292 | writeIncidence(event); | 292 | writeIncidence(event); |
293 | 293 | ||
294 | QDate tmpDate; | 294 | QDate tmpDate; |
295 | QTime tmpTime; | 295 | QTime tmpTime; |
296 | QDateTime tmpDT; | 296 | QDateTime tmpDT; |
297 | 297 | ||
298 | // temp. until something better happens. | 298 | // temp. until something better happens. |
299 | QString tmpStr; | 299 | QString tmpStr; |
300 | 300 | ||
301 | if (mNoTimeButton->isChecked()) { | 301 | if (mNoTimeButton->isChecked()) { |
302 | event->setFloats(true); | 302 | event->setFloats(true); |
303 | // need to change this. | 303 | // need to change this. |
304 | tmpDate = mStartDateEdit->date(); | 304 | tmpDate = mStartDateEdit->date(); |
305 | tmpTime.setHMS(0,0,0); | 305 | tmpTime.setHMS(0,0,0); |
306 | tmpDT.setDate(tmpDate); | 306 | tmpDT.setDate(tmpDate); |
307 | tmpDT.setTime(tmpTime); | 307 | tmpDT.setTime(tmpTime); |
308 | event->setDtStart(tmpDT); | 308 | event->setDtStart(tmpDT); |
309 | 309 | ||
310 | tmpDate = mEndDateEdit->date(); | 310 | tmpDate = mEndDateEdit->date(); |
311 | tmpTime.setHMS(0,0,0); | 311 | tmpTime.setHMS(0,0,0); |
312 | tmpDT.setDate(tmpDate); | 312 | tmpDT.setDate(tmpDate); |
313 | tmpDT.setTime(tmpTime); | 313 | tmpDT.setTime(tmpTime); |
314 | event->setDtEnd(tmpDT); | 314 | event->setDtEnd(tmpDT); |
315 | } else { | 315 | } else { |
316 | event->setFloats(false); | 316 | event->setFloats(false); |
317 | 317 | ||
318 | // set date/time end | 318 | // set date/time end |
319 | tmpDate = mEndDateEdit->date(); | 319 | tmpDate = mEndDateEdit->date(); |
320 | tmpTime = mEndTimeEdit->getTime(); | 320 | tmpTime = mEndTimeEdit->getTime(); |
321 | tmpDT.setDate(tmpDate); | 321 | tmpDT.setDate(tmpDate); |
322 | tmpDT.setTime(tmpTime); | 322 | tmpDT.setTime(tmpTime); |
323 | event->setDtEnd(tmpDT); | 323 | event->setDtEnd(tmpDT); |
324 | 324 | ||
325 | // set date/time start | 325 | // set date/time start |
326 | tmpDate = mStartDateEdit->date(); | 326 | tmpDate = mStartDateEdit->date(); |
327 | tmpTime = mStartTimeEdit->getTime(); | 327 | tmpTime = mStartTimeEdit->getTime(); |
328 | tmpDT.setDate(tmpDate); | 328 | tmpDT.setDate(tmpDate); |
329 | tmpDT.setTime(tmpTime); | 329 | tmpDT.setTime(tmpTime); |
330 | event->setDtStart(tmpDT); | 330 | event->setDtStart(tmpDT); |
331 | } // check for float | 331 | } // check for float |
332 | mSummaryEdit->save(KOLocationBox::SUMMARYEVENT); | 332 | mSummaryEdit->save(KOLocationBox::SUMMARYEVENT); |
333 | 333 | ||
334 | event->setTransparency(mFreeTimeCombo->currentItem() > 0 | 334 | event->setTransparency(mFreeTimeCombo->currentItem() > 0 |
335 | ? KCal::Event::Transparent | 335 | ? KCal::Event::Transparent |
336 | : KCal::Event::Opaque); | 336 | : KCal::Event::Opaque); |
337 | 337 | ||
338 | // kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl; | 338 | // kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl; |
339 | } | 339 | } |
340 | 340 | ||
341 | void KOEditorGeneralEvent::setDuration() | 341 | void KOEditorGeneralEvent::setDuration() |
342 | { | 342 | { |
343 | QString tmpStr = "", catStr; | 343 | QString tmpStr = "", catStr; |
344 | int hourdiff, minutediff; | 344 | int hourdiff, minutediff; |
345 | // end<date is an accepted temporary state while typing, but don't show | 345 | // end<date is an accepted temporary state while typing, but don't show |
346 | // any duration if this happens | 346 | // any duration if this happens |
347 | if(mCurrEndDateTime >= mCurrStartDateTime) { | 347 | if(mCurrEndDateTime >= mCurrStartDateTime) { |
348 | 348 | ||
349 | if (mNoTimeButton->isChecked()) { | 349 | if (mNoTimeButton->isChecked()) { |
350 | int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1; | 350 | int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1; |
351 | tmpStr = i18n("Duration: "); | 351 | tmpStr = i18n("Duration: "); |
352 | tmpStr.append(i18n("1 Day","%n Days",daydiff)); | 352 | tmpStr.append(i18n("1 Day","%n Days",daydiff)); |
353 | } else { | 353 | } else { |
354 | int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime ); | 354 | int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime ); |
355 | hourdiff = secto / 3600; | 355 | hourdiff = secto / 3600; |
356 | minutediff = (secto/60 ) % 60; | 356 | minutediff = (secto/60 ) % 60; |
357 | if (hourdiff || minutediff){ | 357 | if (hourdiff || minutediff){ |
358 | tmpStr = i18n("Duration: "); | 358 | tmpStr = i18n("Duration: "); |
359 | if (hourdiff){ | 359 | if (hourdiff){ |
360 | catStr = i18n("1 h","%n h",hourdiff); | 360 | catStr = i18n("1 h","%n h",hourdiff); |
361 | tmpStr.append(catStr); | 361 | tmpStr.append(catStr); |
362 | } | 362 | } |
363 | if (hourdiff && minutediff){ | 363 | if (hourdiff && minutediff){ |
364 | tmpStr += i18n(", "); | 364 | tmpStr += i18n(", "); |
365 | } | 365 | } |
366 | if (minutediff){ | 366 | if (minutediff){ |
367 | catStr = i18n("1 min","%n min",minutediff); | 367 | catStr = i18n("1 min","%n min",minutediff); |
368 | tmpStr += catStr; | 368 | tmpStr += catStr; |
369 | } | 369 | } |
370 | } else tmpStr = ""; | 370 | } else tmpStr = ""; |
371 | } | 371 | } |
372 | } | 372 | } |
373 | mDurationLabel->setText(tmpStr); | 373 | mDurationLabel->setText(tmpStr); |
374 | } | 374 | } |
375 | 375 | ||
376 | void KOEditorGeneralEvent::emitDateTimeStr() | 376 | void KOEditorGeneralEvent::emitDateTimeStr() |
377 | { | 377 | { |
378 | KLocale *l = KGlobal::locale(); | 378 | KLocale *l = KGlobal::locale(); |
379 | 379 | QString startString = ""; | |
380 | QString from,to; | 380 | if ( mCurrStartDateTime.date() < mCurrEndDateTime.date() ) { |
381 | if (mNoTimeButton->isChecked()) { | 381 | if ( mNoTimeButton->isChecked() ) { |
382 | from = l->formatDate(mCurrStartDateTime.date()); | 382 | startString = i18n("From: ") + l->formatDate(mCurrStartDateTime.date() ); |
383 | to = l->formatDate(mCurrEndDateTime.date()); | 383 | startString += "\n"+i18n("To: ")+ l->formatDate(mCurrEndDateTime.date()); |
384 | |||
385 | } else { | ||
386 | startString = i18n("From: ") +l->formatDateTime(mCurrStartDateTime, false); | ||
387 | startString += "\n"+i18n("To: ")+l->formatDateTime(mCurrEndDateTime, false); | ||
388 | } | ||
384 | } else { | 389 | } else { |
385 | from = l->formatDateTime(mCurrStartDateTime); | 390 | if ( mNoTimeButton->isChecked() ) { |
386 | to = l->formatDateTime(mCurrEndDateTime); | 391 | startString = i18n("On: ") + l->formatDate(mCurrStartDateTime.date() ); |
392 | } else { | ||
393 | startString = i18n("From: ") + KGlobal::locale()->formatTime(mCurrStartDateTime.time())+ | ||
394 | "-"+KGlobal::locale()->formatTime(mCurrEndDateTime.time()); | ||
395 | startString += i18n(" on ")+KGlobal::locale()->formatDate( mCurrStartDateTime.date(), true); | ||
396 | } | ||
387 | } | 397 | } |
388 | 398 | startString +="\n"+mDurationLabel->text(); | |
389 | QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to) | 399 | emit dateTimeStrChanged(startString); |
390 | .arg(mDurationLabel->text()); | ||
391 | |||
392 | emit dateTimeStrChanged(str); | ||
393 | } | 400 | } |
394 | 401 | ||
395 | bool KOEditorGeneralEvent::validateInput() | 402 | bool KOEditorGeneralEvent::validateInput() |
396 | { | 403 | { |
397 | 404 | ||
398 | if (!mStartDateEdit->inputIsValid()) { | 405 | if (!mStartDateEdit->inputIsValid()) { |
399 | KMessageBox::sorry( 0, | 406 | KMessageBox::sorry( 0, |
400 | i18n("Please specify a valid start date,\nfor example '%1'.") | 407 | i18n("Please specify a valid start date,\nfor example '%1'.") |
401 | .arg( KGlobal::locale()->formatDate( QDate::currentDate(), true ) ) ); | 408 | .arg( KGlobal::locale()->formatDate( QDate::currentDate(), true ) ) ); |
402 | return false; | 409 | return false; |
403 | } | 410 | } |
404 | 411 | ||
405 | if (!mEndDateEdit->inputIsValid()) { | 412 | if (!mEndDateEdit->inputIsValid()) { |
406 | KMessageBox::sorry( 0, | 413 | KMessageBox::sorry( 0, |
407 | i18n("Please specify a valid end date,\nfor example '%1'.") | 414 | i18n("Please specify a valid end date,\nfor example '%1'.") |
408 | .arg( KGlobal::locale()->formatDate( QDate::currentDate(), true ) ) ); | 415 | .arg( KGlobal::locale()->formatDate( QDate::currentDate(), true ) ) ); |
409 | return false; | 416 | return false; |
410 | } | 417 | } |
411 | 418 | ||
412 | QDateTime startDt,endDt; | 419 | QDateTime startDt,endDt; |
413 | startDt.setDate(mStartDateEdit->date()); | 420 | startDt.setDate(mStartDateEdit->date()); |
414 | endDt.setDate(mEndDateEdit->date()); | 421 | endDt.setDate(mEndDateEdit->date()); |
415 | if (!mNoTimeButton->isChecked()) { | 422 | if (!mNoTimeButton->isChecked()) { |
416 | startDt.setTime(mStartTimeEdit->getTime()); | 423 | startDt.setTime(mStartTimeEdit->getTime()); |
417 | endDt.setTime(mEndTimeEdit->getTime()); | 424 | endDt.setTime(mEndTimeEdit->getTime()); |
418 | } | 425 | } |
419 | 426 | ||
420 | if (startDt > endDt) { | 427 | if (startDt > endDt) { |
421 | KMessageBox::sorry(0,i18n("The event ends before it starts.\n" | 428 | KMessageBox::sorry(0,i18n("The event ends before it starts.\n" |
422 | "Please correct dates and times.")); | 429 | "Please correct dates and times.")); |
423 | return false; | 430 | return false; |
424 | } | 431 | } |
425 | 432 | ||
426 | return KOEditorGeneral::validateInput(); | 433 | return KOEditorGeneral::validateInput(); |
427 | } | 434 | } |
diff --git a/korganizer/koeditorrecurrence.cpp b/korganizer/koeditorrecurrence.cpp index bf81b01..01c5773 100644 --- a/korganizer/koeditorrecurrence.cpp +++ b/korganizer/koeditorrecurrence.cpp | |||
@@ -636,209 +636,209 @@ void RecurrenceRangeDialog::setDuration( int duration ) | |||
636 | 636 | ||
637 | int RecurrenceRangeDialog::duration() | 637 | int RecurrenceRangeDialog::duration() |
638 | { | 638 | { |
639 | return mRecurrenceRangeWidget->duration(); | 639 | return mRecurrenceRangeWidget->duration(); |
640 | } | 640 | } |
641 | 641 | ||
642 | void RecurrenceRangeDialog::setEndDate( const QDate &date ) | 642 | void RecurrenceRangeDialog::setEndDate( const QDate &date ) |
643 | { | 643 | { |
644 | mRecurrenceRangeWidget->setEndDate( date ); | 644 | mRecurrenceRangeWidget->setEndDate( date ); |
645 | } | 645 | } |
646 | 646 | ||
647 | QDate RecurrenceRangeDialog::endDate() | 647 | QDate RecurrenceRangeDialog::endDate() |
648 | { | 648 | { |
649 | return mRecurrenceRangeWidget->endDate(); | 649 | return mRecurrenceRangeWidget->endDate(); |
650 | } | 650 | } |
651 | 651 | ||
652 | void RecurrenceRangeDialog::setDateTimes( const QDateTime &start, | 652 | void RecurrenceRangeDialog::setDateTimes( const QDateTime &start, |
653 | const QDateTime &end ) | 653 | const QDateTime &end ) |
654 | { | 654 | { |
655 | mRecurrenceRangeWidget->setDateTimes( start, end ); | 655 | mRecurrenceRangeWidget->setDateTimes( start, end ); |
656 | } | 656 | } |
657 | 657 | ||
658 | //////////////////////////// RecurrenceChooser //////////////////////// | 658 | //////////////////////////// RecurrenceChooser //////////////////////// |
659 | 659 | ||
660 | RecurrenceChooser::RecurrenceChooser( QWidget *parent, const char *name ) : | 660 | RecurrenceChooser::RecurrenceChooser( QWidget *parent, const char *name ) : |
661 | QWidget( parent, name ) | 661 | QWidget( parent, name ) |
662 | { | 662 | { |
663 | QBoxLayout *topLayout = new QVBoxLayout( this ); | 663 | QBoxLayout *topLayout = new QVBoxLayout( this ); |
664 | 664 | ||
665 | mTypeCombo = new QComboBox( this ); | 665 | mTypeCombo = new QComboBox( this ); |
666 | mTypeCombo->insertItem( i18n("Daily") ); | 666 | mTypeCombo->insertItem( i18n("Daily") ); |
667 | mTypeCombo->insertItem( i18n("Weekly") ); | 667 | mTypeCombo->insertItem( i18n("Weekly") ); |
668 | mTypeCombo->insertItem( i18n("Monthly") ); | 668 | mTypeCombo->insertItem( i18n("Monthly") ); |
669 | mTypeCombo->insertItem( i18n("Yearly") ); | 669 | mTypeCombo->insertItem( i18n("Yearly") ); |
670 | 670 | ||
671 | topLayout->addWidget( mTypeCombo ); | 671 | topLayout->addWidget( mTypeCombo ); |
672 | 672 | ||
673 | connect( mTypeCombo, SIGNAL( activated( int ) ), SLOT( emitChoice() ) ); | 673 | connect( mTypeCombo, SIGNAL( activated( int ) ), SLOT( emitChoice() ) ); |
674 | 674 | ||
675 | } | 675 | } |
676 | 676 | ||
677 | int RecurrenceChooser::type() | 677 | int RecurrenceChooser::type() |
678 | { | 678 | { |
679 | if ( mTypeCombo ) { | 679 | if ( mTypeCombo ) { |
680 | return mTypeCombo->currentItem(); | 680 | return mTypeCombo->currentItem(); |
681 | } else { | 681 | } else { |
682 | if ( mDailyButton->isChecked() ) return Daily; | 682 | if ( mDailyButton->isChecked() ) return Daily; |
683 | else if ( mWeeklyButton->isChecked() ) return Weekly; | 683 | else if ( mWeeklyButton->isChecked() ) return Weekly; |
684 | else if ( mMonthlyButton->isChecked() ) return Monthly; | 684 | else if ( mMonthlyButton->isChecked() ) return Monthly; |
685 | else return Yearly; | 685 | else return Yearly; |
686 | } | 686 | } |
687 | } | 687 | } |
688 | 688 | ||
689 | void RecurrenceChooser::setType( int type ) | 689 | void RecurrenceChooser::setType( int type ) |
690 | { | 690 | { |
691 | if ( mTypeCombo ) { | 691 | if ( mTypeCombo ) { |
692 | mTypeCombo->setCurrentItem( type ); | 692 | mTypeCombo->setCurrentItem( type ); |
693 | } else { | 693 | } else { |
694 | switch ( type ) { | 694 | switch ( type ) { |
695 | case Daily: | 695 | case Daily: |
696 | mDailyButton->setChecked( true ); | 696 | mDailyButton->setChecked( true ); |
697 | break; | 697 | break; |
698 | case Weekly: | 698 | case Weekly: |
699 | mWeeklyButton->setChecked( true ); | 699 | mWeeklyButton->setChecked( true ); |
700 | break; | 700 | break; |
701 | case Monthly: | 701 | case Monthly: |
702 | mMonthlyButton->setChecked( true ); | 702 | mMonthlyButton->setChecked( true ); |
703 | break; | 703 | break; |
704 | case Yearly: | 704 | case Yearly: |
705 | default: | 705 | default: |
706 | mYearlyButton->setChecked( true ); | 706 | mYearlyButton->setChecked( true ); |
707 | break; | 707 | break; |
708 | } | 708 | } |
709 | } | 709 | } |
710 | } | 710 | } |
711 | 711 | ||
712 | void RecurrenceChooser::emitChoice() | 712 | void RecurrenceChooser::emitChoice() |
713 | { | 713 | { |
714 | emit chosen ( type() ); | 714 | emit chosen ( type() ); |
715 | } | 715 | } |
716 | 716 | ||
717 | /////////////////////////////// Main Widget ///////////////////////////// | 717 | /////////////////////////////// Main Widget ///////////////////////////// |
718 | 718 | ||
719 | KOEditorRecurrence::KOEditorRecurrence( QWidget* parent, const char *name ) : | 719 | KOEditorRecurrence::KOEditorRecurrence( QWidget* parent, const char *name ) : |
720 | QWidget( parent, name ) | 720 | QWidget( parent, name ) |
721 | { | 721 | { |
722 | QGridLayout *topLayout = new QGridLayout( this, 2,2 ); | 722 | QGridLayout *topLayout = new QGridLayout( this, 2,2 ); |
723 | topLayout->setSpacing( KDialog::spacingHint() ); | 723 | topLayout->setSpacing( KDialog::spacingHint() ); |
724 | topLayout->setMargin( KDialog::marginHintSmall() ); | 724 | topLayout->setMargin( KDialog::marginHintSmall() ); |
725 | 725 | ||
726 | mEnabledCheck = new QCheckBox( i18n("Enable Recurrence"), this ); | 726 | mEnabledCheck = new QCheckBox( i18n("Enable Recurrence"), this ); |
727 | connect( mEnabledCheck, SIGNAL( toggled( bool ) ), | 727 | connect( mEnabledCheck, SIGNAL( toggled( bool ) ), |
728 | SLOT( setEnabled( bool ) ) ); | 728 | SLOT( setEnabled( bool ) ) ); |
729 | topLayout->addMultiCellWidget( mEnabledCheck, 0, 0, 0, 1 ); | 729 | topLayout->addMultiCellWidget( mEnabledCheck, 0, 0, 0, 1 ); |
730 | 730 | ||
731 | 731 | ||
732 | mTimeGroupBox = new QGroupBox( 1, Horizontal, i18n("Appointment Time "), | 732 | mTimeGroupBox = new QGroupBox( 1, Horizontal, i18n("Time"), |
733 | this ); | 733 | this ); |
734 | topLayout->addMultiCellWidget( mTimeGroupBox, 1, 1 , 0 , 1 ); | 734 | topLayout->addMultiCellWidget( mTimeGroupBox, 1, 1 , 0 , 1 ); |
735 | 735 | ||
736 | if ( QApplication::desktop()->width() <= 320) { | 736 | if ( QApplication::desktop()->width() <= 320) { |
737 | mTimeGroupBox->hide(); | 737 | mTimeGroupBox->hide(); |
738 | } | 738 | } |
739 | 739 | ||
740 | // QFrame *timeFrame = new QFrame( mTimeGroupBox ); | 740 | // QFrame *timeFrame = new QFrame( mTimeGroupBox ); |
741 | // QBoxLayout *layoutTimeFrame = new QHBoxLayout( timeFrame ); | 741 | // QBoxLayout *layoutTimeFrame = new QHBoxLayout( timeFrame ); |
742 | // layoutTimeFrame->setSpacing( KDialog::spacingHint() ); | 742 | // layoutTimeFrame->setSpacing( KDialog::spacingHint() ); |
743 | 743 | ||
744 | mDateTimeLabel = new QLabel( mTimeGroupBox ); | 744 | mDateTimeLabel = new QLabel( mTimeGroupBox ); |
745 | // mDateTimeLabel = new QLabel( timeFrame ); | 745 | // mDateTimeLabel = new QLabel( timeFrame ); |
746 | // layoutTimeFrame->addWidget( mDateTimeLabel ); | 746 | // layoutTimeFrame->addWidget( mDateTimeLabel ); |
747 | 747 | //mTimeGroupBox->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum ) ); | |
748 | 748 | //mDateTimeLabel->setSizePolicy( QSizePolicy( QSizePolicy::Preferred, QSizePolicy::Maximum) ); | |
749 | mRuleBox = new QGroupBox( 1, Horizontal, i18n("Recurrence Rule"), this ); | 749 | mRuleBox = new QGroupBox( 1, Horizontal, i18n("Recurrence Rule"), this ); |
750 | topLayout->addMultiCellWidget( mRuleBox, 2, 2, 0, 1 ); | 750 | topLayout->addMultiCellWidget( mRuleBox, 2, 2, 0, 1 ); |
751 | mRecurrenceChooser = new RecurrenceChooser( mRuleBox ); | 751 | mRecurrenceChooser = new RecurrenceChooser( mRuleBox ); |
752 | connect( mRecurrenceChooser, SIGNAL( chosen( int ) ), | 752 | connect( mRecurrenceChooser, SIGNAL( chosen( int ) ), |
753 | SLOT( showCurrentRule( int ) ) ); | 753 | SLOT( showCurrentRule( int ) ) ); |
754 | 754 | ||
755 | 755 | ||
756 | mRuleStack = new QWidgetStack( mRuleBox ); | 756 | mRuleStack = new QWidgetStack( mRuleBox ); |
757 | 757 | ||
758 | mDaily = new RecurDaily( mRuleStack ); | 758 | mDaily = new RecurDaily( mRuleStack ); |
759 | mRuleStack->addWidget( mDaily, 0 ); | 759 | mRuleStack->addWidget( mDaily, 0 ); |
760 | 760 | ||
761 | mWeekly = new RecurWeekly( mRuleStack ); | 761 | mWeekly = new RecurWeekly( mRuleStack ); |
762 | mRuleStack->addWidget( mWeekly, 0 ); | 762 | mRuleStack->addWidget( mWeekly, 0 ); |
763 | 763 | ||
764 | mMonthly = new RecurMonthly( mRuleStack ); | 764 | mMonthly = new RecurMonthly( mRuleStack ); |
765 | mRuleStack->addWidget( mMonthly, 0 ); | 765 | mRuleStack->addWidget( mMonthly, 0 ); |
766 | 766 | ||
767 | mYearly = new RecurYearly( mRuleStack ); | 767 | mYearly = new RecurYearly( mRuleStack ); |
768 | mRuleStack->addWidget( mYearly, 0 ); | 768 | mRuleStack->addWidget( mYearly, 0 ); |
769 | 769 | ||
770 | showCurrentRule( mRecurrenceChooser->type() ); | 770 | showCurrentRule( mRecurrenceChooser->type() ); |
771 | mRecurrenceRangeWidget = 0; | 771 | mRecurrenceRangeWidget = 0; |
772 | mRecurrenceRangeDialog = new RecurrenceRangeDialog( this ); | 772 | mRecurrenceRangeDialog = new RecurrenceRangeDialog( this ); |
773 | mRecurrenceRange = mRecurrenceRangeDialog; | 773 | mRecurrenceRange = mRecurrenceRangeDialog; |
774 | mRecurrenceRangeButton = new QPushButton( i18n("Recurrence Range..."), | 774 | mRecurrenceRangeButton = new QPushButton( i18n("Recurrence Range..."), |
775 | this ); | 775 | this ); |
776 | 776 | ||
777 | connect( mRecurrenceRangeButton, SIGNAL( clicked() ), | 777 | connect( mRecurrenceRangeButton, SIGNAL( clicked() ), |
778 | SLOT( showRecurrenceRangeDialog() ) ); | 778 | SLOT( showRecurrenceRangeDialog() ) ); |
779 | 779 | ||
780 | mExceptionsWidget = 0; | 780 | mExceptionsWidget = 0; |
781 | mExceptionsDialog = new ExceptionsDialog( this ); | 781 | mExceptionsDialog = new ExceptionsDialog( this ); |
782 | mExceptions = mExceptionsDialog; | 782 | mExceptions = mExceptionsDialog; |
783 | mExceptionsButton = new QPushButton( i18n("Exceptions..."), this ); | 783 | mExceptionsButton = new QPushButton( i18n("Exceptions..."), this ); |
784 | if ( QApplication::desktop()->width() < 320 ) { | 784 | if ( QApplication::desktop()->width() < 320 ) { |
785 | topLayout->addMultiCellWidget( mRecurrenceRangeButton, 3, 3, 0, 1 ); | 785 | topLayout->addMultiCellWidget( mRecurrenceRangeButton, 3, 3, 0, 1 ); |
786 | topLayout->addMultiCellWidget( mExceptionsButton, 4, 4, 0, 1 ); | 786 | topLayout->addMultiCellWidget( mExceptionsButton, 4, 4, 0, 1 ); |
787 | } else { | 787 | } else { |
788 | topLayout->addWidget( mRecurrenceRangeButton, 3, 0 ); | 788 | topLayout->addWidget( mRecurrenceRangeButton, 3, 0 ); |
789 | topLayout->addWidget( mExceptionsButton, 3, 1 ); | 789 | topLayout->addWidget( mExceptionsButton, 3, 1 ); |
790 | } | 790 | } |
791 | connect( mExceptionsButton, SIGNAL( clicked() ), | 791 | connect( mExceptionsButton, SIGNAL( clicked() ), |
792 | SLOT( showExceptionsDialog() ) ); | 792 | SLOT( showExceptionsDialog() ) ); |
793 | } | 793 | } |
794 | 794 | ||
795 | KOEditorRecurrence::~KOEditorRecurrence() | 795 | KOEditorRecurrence::~KOEditorRecurrence() |
796 | { | 796 | { |
797 | } | 797 | } |
798 | 798 | ||
799 | void KOEditorRecurrence::setEnabled( bool enabled ) | 799 | void KOEditorRecurrence::setEnabled( bool enabled ) |
800 | { | 800 | { |
801 | // kdDebug() << "KOEditorRecurrence::setEnabled(): " << (enabled ? "on" : "off") << endl; | 801 | // kdDebug() << "KOEditorRecurrence::setEnabled(): " << (enabled ? "on" : "off") << endl; |
802 | 802 | ||
803 | mTimeGroupBox->setEnabled( enabled ); | 803 | mTimeGroupBox->setEnabled( enabled ); |
804 | if ( mRecurrenceRangeWidget ) mRecurrenceRangeWidget->setEnabled( enabled ); | 804 | if ( mRecurrenceRangeWidget ) mRecurrenceRangeWidget->setEnabled( enabled ); |
805 | if ( mRecurrenceRangeButton ) mRecurrenceRangeButton->setEnabled( enabled ); | 805 | if ( mRecurrenceRangeButton ) mRecurrenceRangeButton->setEnabled( enabled ); |
806 | if ( mExceptionsWidget ) mExceptionsWidget->setEnabled( enabled ); | 806 | if ( mExceptionsWidget ) mExceptionsWidget->setEnabled( enabled ); |
807 | if ( mExceptionsButton ) mExceptionsButton->setEnabled( enabled ); | 807 | if ( mExceptionsButton ) mExceptionsButton->setEnabled( enabled ); |
808 | mRuleBox->setEnabled( enabled ); | 808 | mRuleBox->setEnabled( enabled ); |
809 | } | 809 | } |
810 | 810 | ||
811 | void KOEditorRecurrence::showCurrentRule( int current ) | 811 | void KOEditorRecurrence::showCurrentRule( int current ) |
812 | { | 812 | { |
813 | switch ( current ) { | 813 | switch ( current ) { |
814 | case Daily: | 814 | case Daily: |
815 | mRuleStack->raiseWidget( mDaily ); | 815 | mRuleStack->raiseWidget( mDaily ); |
816 | break; | 816 | break; |
817 | case Weekly: | 817 | case Weekly: |
818 | mRuleStack->raiseWidget( mWeekly ); | 818 | mRuleStack->raiseWidget( mWeekly ); |
819 | break; | 819 | break; |
820 | case Monthly: | 820 | case Monthly: |
821 | mRuleStack->raiseWidget( mMonthly ); | 821 | mRuleStack->raiseWidget( mMonthly ); |
822 | break; | 822 | break; |
823 | default: | 823 | default: |
824 | case Yearly: | 824 | case Yearly: |
825 | mRuleStack->raiseWidget( mYearly ); | 825 | mRuleStack->raiseWidget( mYearly ); |
826 | break; | 826 | break; |
827 | } | 827 | } |
828 | } | 828 | } |
829 | 829 | ||
830 | void KOEditorRecurrence::setDateTimes( QDateTime start, QDateTime end ) | 830 | void KOEditorRecurrence::setDateTimes( QDateTime start, QDateTime end ) |
831 | { | 831 | { |
832 | // kdDebug() << "KOEditorRecurrence::setDateTimes" << endl; | 832 | // kdDebug() << "KOEditorRecurrence::setDateTimes" << endl; |
833 | 833 | ||
834 | mRecurrenceRange->setDateTimes( start, end ); | 834 | mRecurrenceRange->setDateTimes( start, end ); |
835 | mExceptions->setDefaults( end ); | 835 | mExceptions->setDefaults( end ); |
836 | 836 | ||
837 | } | 837 | } |
838 | 838 | ||
839 | void KOEditorRecurrence::setDefaults( QDateTime from, QDateTime to, bool ) | 839 | void KOEditorRecurrence::setDefaults( QDateTime from, QDateTime to, bool ) |
840 | { | 840 | { |
841 | 841 | ||
842 | // qDebug("KOEditorRecurrence::setDefaults %s %s ",from.toString().latin1(),to.toString().latin1() ); | 842 | // qDebug("KOEditorRecurrence::setDefaults %s %s ",from.toString().latin1(),to.toString().latin1() ); |
843 | setDateTimes( from, to ); | 843 | setDateTimes( from, to ); |
844 | 844 | ||
diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp index 51e2524..6a05cc8 100644 --- a/korganizer/kotodoeditor.cpp +++ b/korganizer/kotodoeditor.cpp | |||
@@ -1,170 +1,171 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KOrganizer. | 2 | This file is part of KOrganizer. |
3 | Copyright (c) 1997, 1998 Preston Brown | 3 | Copyright (c) 1997, 1998 Preston Brown |
4 | Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> | 4 | Copyright (c) 2000,2001 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 | 24 | ||
25 | #include <qtooltip.h> | 25 | #include <qtooltip.h> |
26 | #include <qframe.h> | 26 | #include <qframe.h> |
27 | #include <qpixmap.h> | 27 | #include <qpixmap.h> |
28 | #include <qlayout.h> | 28 | #include <qlayout.h> |
29 | #include <qhbox.h> | 29 | #include <qhbox.h> |
30 | #include <qdir.h> | 30 | #include <qdir.h> |
31 | #include <qdatetime.h> | 31 | #include <qdatetime.h> |
32 | #include <qapplication.h> | 32 | #include <qapplication.h> |
33 | #include <qtabwidget.h> | 33 | #include <qtabwidget.h> |
34 | 34 | ||
35 | #include <kiconloader.h> | 35 | #include <kiconloader.h> |
36 | #include <klocale.h> | 36 | #include <klocale.h> |
37 | #include <kfiledialog.h> | 37 | #include <kfiledialog.h> |
38 | #include <kstandarddirs.h> | 38 | #include <kstandarddirs.h> |
39 | #include <kmessagebox.h> | 39 | #include <kmessagebox.h> |
40 | 40 | ||
41 | #include <libkdepim/categoryselectdialog.h> | 41 | #include <libkdepim/categoryselectdialog.h> |
42 | #include <libkcal/calendarlocal.h> | 42 | #include <libkcal/calendarlocal.h> |
43 | #include <libkcal/calendarresources.h> | 43 | #include <libkcal/calendarresources.h> |
44 | #include <libkcal/resourcecalendar.h> | 44 | #include <libkcal/resourcecalendar.h> |
45 | #include <libkcal/icalformat.h> | 45 | #include <libkcal/icalformat.h> |
46 | #include <kresources/resourceselectdialog.h> | 46 | #include <kresources/resourceselectdialog.h> |
47 | #include <libkdepim/kdateedit.h> | 47 | #include <libkdepim/kdateedit.h> |
48 | 48 | ||
49 | #include "koprefs.h" | 49 | #include "koprefs.h" |
50 | #include "kolocationbox.h" | 50 | #include "kolocationbox.h" |
51 | 51 | ||
52 | #include "kotodoeditor.h" | 52 | #include "kotodoeditor.h" |
53 | extern int globalFlagBlockAgenda; | 53 | extern int globalFlagBlockAgenda; |
54 | 54 | ||
55 | KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) : | 55 | KOTodoEditor::KOTodoEditor( Calendar *calendar, QWidget *parent ) : |
56 | KOIncidenceEditor( i18n("Edit To-Do"), calendar, parent ) | 56 | KOIncidenceEditor( i18n("Edit To-Do"), calendar, parent ) |
57 | { | 57 | { |
58 | mTodo = 0; | 58 | mTodo = 0; |
59 | mRelatedTodo = 0; | 59 | mRelatedTodo = 0; |
60 | findButton(User1)->hide(); | 60 | findButton(User1)->hide(); |
61 | init(); | 61 | init(); |
62 | } | 62 | } |
63 | 63 | ||
64 | KOTodoEditor::~KOTodoEditor() | 64 | KOTodoEditor::~KOTodoEditor() |
65 | { | 65 | { |
66 | emit dialogClose( mTodo ); | 66 | emit dialogClose( mTodo ); |
67 | } | 67 | } |
68 | 68 | ||
69 | void KOTodoEditor::init() | 69 | void KOTodoEditor::init() |
70 | { | 70 | { |
71 | setupGeneral(); | 71 | setupGeneral(); |
72 | setupAttendeesTab(); | 72 | setupAttendeesTab(); |
73 | setupRecurrence(); | 73 | setupRecurrence(); |
74 | connect(mGeneral,SIGNAL(datesChecked()),this ,SLOT(checkRecurrence())); | 74 | connect(mGeneral,SIGNAL(datesChecked()),this ,SLOT(checkRecurrence())); |
75 | mRecurrence->setDateTimeStr( i18n("<i>The recurrence is computed from the start datetime!</i>") ); | ||
75 | } | 76 | } |
76 | void KOTodoEditor::setupRecurrence() | 77 | void KOTodoEditor::setupRecurrence() |
77 | { | 78 | { |
78 | QFrame *topFrame = addPage( i18n("Recurrence") ); | 79 | QFrame *topFrame = addPage( i18n("Recurrence") ); |
79 | QBoxLayout *topLayout = new QVBoxLayout( topFrame ); | 80 | QBoxLayout *topLayout = new QVBoxLayout( topFrame ); |
80 | 81 | ||
81 | mRecurrence = new KOEditorRecurrence( topFrame ); | 82 | mRecurrence = new KOEditorRecurrence( topFrame ); |
82 | topLayout->addWidget( mRecurrence ); | 83 | topLayout->addWidget( mRecurrence ); |
83 | } | 84 | } |
84 | 85 | ||
85 | void KOTodoEditor::setCategories( QString s ) | 86 | void KOTodoEditor::setCategories( QString s ) |
86 | { | 87 | { |
87 | mGeneral->setCategories(s); | 88 | mGeneral->setCategories(s); |
88 | } | 89 | } |
89 | void KOTodoEditor::setSecrecy( int sec ) | 90 | void KOTodoEditor::setSecrecy( int sec ) |
90 | { | 91 | { |
91 | mGeneral->setSecrecy( sec ); | 92 | mGeneral->setSecrecy( sec ); |
92 | } | 93 | } |
93 | void KOTodoEditor::reload() | 94 | void KOTodoEditor::reload() |
94 | { | 95 | { |
95 | if ( mTodo ) readTodo( mTodo ); | 96 | if ( mTodo ) readTodo( mTodo ); |
96 | } | 97 | } |
97 | 98 | ||
98 | void KOTodoEditor::setupGeneral() | 99 | void KOTodoEditor::setupGeneral() |
99 | { | 100 | { |
100 | mGeneral = new KOEditorGeneralTodo(this); | 101 | mGeneral = new KOEditorGeneralTodo(this); |
101 | connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); | 102 | connect ( mGeneral, SIGNAL ( allAccepted() ), this, SLOT ( slotOk () ) ); |
102 | 103 | ||
103 | // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); | 104 | // connect(mGeneral,SIGNAL(openCategoryDialog()),mCategoryDialog,SLOT(show())); |
104 | //connect(mCategoryDialog, SIGNAL(categoriesSelected(const QString &)), | 105 | //connect(mCategoryDialog, SIGNAL(categoriesSelected(const QString &)), |
105 | // mGeneral,SLOT(setCategories(const QString &))); | 106 | // mGeneral,SLOT(setCategories(const QString &))); |
106 | 107 | ||
107 | if (KOPrefs::instance()->mCompactDialogs) { | 108 | if (KOPrefs::instance()->mCompactDialogs) { |
108 | QFrame *topFrame = addPage(i18n("General")); | 109 | QFrame *topFrame = addPage(i18n("General")); |
109 | 110 | ||
110 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); | 111 | QBoxLayout *topLayout = new QVBoxLayout(topFrame); |
111 | if ( QApplication::desktop()->width() < 480 ) { | 112 | if ( QApplication::desktop()->width() < 480 ) { |
112 | topLayout->setMargin(1); | 113 | topLayout->setMargin(1); |
113 | topLayout->setSpacing(1); | 114 | topLayout->setSpacing(1); |
114 | } else { | 115 | } else { |
115 | topLayout->setMargin(marginHint()-1); | 116 | topLayout->setMargin(marginHint()-1); |
116 | topLayout->setSpacing(spacingHint()-1); | 117 | topLayout->setSpacing(spacingHint()-1); |
117 | } | 118 | } |
118 | mGeneral->initHeader(topFrame,topLayout); | 119 | mGeneral->initHeader(topFrame,topLayout); |
119 | mGeneral->initTime(topFrame,topLayout); | 120 | mGeneral->initTime(topFrame,topLayout); |
120 | mGeneral->initAlarm(topFrame,topLayout); | 121 | mGeneral->initAlarm(topFrame,topLayout); |
121 | mGeneral->enableAlarm( false ); | 122 | mGeneral->enableAlarm( false ); |
122 | 123 | ||
123 | 124 | ||
124 | QBoxLayout *priorityLayout; | 125 | QBoxLayout *priorityLayout; |
125 | if ( QApplication::desktop()->width() < 500 ) | 126 | if ( QApplication::desktop()->width() < 500 ) |
126 | priorityLayout = new QVBoxLayout( topLayout ); | 127 | priorityLayout = new QVBoxLayout( topLayout ); |
127 | else | 128 | else |
128 | priorityLayout = new QHBoxLayout( topLayout ); | 129 | priorityLayout = new QHBoxLayout( topLayout ); |
129 | QWidget* prioWidget = new QWidget (topFrame); | 130 | QWidget* prioWidget = new QWidget (topFrame); |
130 | priorityLayout->addWidget( prioWidget ); | 131 | priorityLayout->addWidget( prioWidget ); |
131 | QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget); | 132 | QHBoxLayout* priorityLayout2 = new QHBoxLayout( prioWidget); |
132 | 133 | ||
133 | 134 | ||
134 | QIconSet icon; | 135 | QIconSet icon; |
135 | if ( QApplication::desktop()->width() < 321 ) | 136 | if ( QApplication::desktop()->width() < 321 ) |
136 | icon = SmallIcon("fileimport16"); | 137 | icon = SmallIcon("fileimport16"); |
137 | else | 138 | else |
138 | icon = SmallIcon("fileimport"); | 139 | icon = SmallIcon("fileimport"); |
139 | QPushButton * loadTemplate = new QPushButton( prioWidget); | 140 | QPushButton * loadTemplate = new QPushButton( prioWidget); |
140 | loadTemplate->setIconSet (icon ) ; | 141 | loadTemplate->setIconSet (icon ) ; |
141 | int size = loadTemplate->sizeHint().height(); | 142 | int size = loadTemplate->sizeHint().height(); |
142 | loadTemplate->setFixedSize( size, size ); | 143 | loadTemplate->setFixedSize( size, size ); |
143 | if ( QApplication::desktop()->width() < 321 ) | 144 | if ( QApplication::desktop()->width() < 321 ) |
144 | icon = SmallIcon("fileexport16"); | 145 | icon = SmallIcon("fileexport16"); |
145 | else | 146 | else |
146 | icon = SmallIcon("fileexport"); | 147 | icon = SmallIcon("fileexport"); |
147 | QPushButton * saveTemplate = new QPushButton( prioWidget); | 148 | QPushButton * saveTemplate = new QPushButton( prioWidget); |
148 | saveTemplate->setIconSet (icon ) ; | 149 | saveTemplate->setIconSet (icon ) ; |
149 | saveTemplate->setFixedSize( size, size ); | 150 | saveTemplate->setFixedSize( size, size ); |
150 | 151 | ||
151 | priorityLayout2->addWidget(loadTemplate); | 152 | priorityLayout2->addWidget(loadTemplate); |
152 | priorityLayout2->addWidget(saveTemplate); | 153 | priorityLayout2->addWidget(saveTemplate); |
153 | mGeneral->initPriority(prioWidget,priorityLayout2); | 154 | mGeneral->initPriority(prioWidget,priorityLayout2); |
154 | mGeneral->initCategories( topFrame, priorityLayout ); | 155 | mGeneral->initCategories( topFrame, priorityLayout ); |
155 | topLayout->addStretch(1); | 156 | topLayout->addStretch(1); |
156 | 157 | ||
157 | QFrame *topFrame2 = addPage(i18n("Details")); | 158 | QFrame *topFrame2 = addPage(i18n("Details")); |
158 | 159 | ||
159 | QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); | 160 | QBoxLayout *topLayout2 = new QVBoxLayout(topFrame2); |
160 | topLayout2->setMargin(marginHint()); | 161 | topLayout2->setMargin(marginHint()); |
161 | topLayout2->setSpacing(spacingHint()); | 162 | topLayout2->setSpacing(spacingHint()); |
162 | 163 | ||
163 | QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 ); | 164 | QHBoxLayout *completionLayout = new QHBoxLayout( topLayout2 ); |
164 | mGeneral->initCompletion(topFrame2,completionLayout); | 165 | mGeneral->initCompletion(topFrame2,completionLayout); |
165 | 166 | ||
166 | 167 | ||
167 | mGeneral->initSecrecy( topFrame2, topLayout2 ); | 168 | mGeneral->initSecrecy( topFrame2, topLayout2 ); |
168 | mGeneral->initDescription(topFrame2,topLayout2); | 169 | mGeneral->initDescription(topFrame2,topLayout2); |
169 | 170 | ||
170 | // QHBox * hb = new QHBox ( topFrame2 ); | 171 | // QHBox * hb = new QHBox ( topFrame2 ); |
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 94f4677..ffc4d9a 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp | |||
@@ -1494,193 +1494,194 @@ void MainWindow::keyBindings() | |||
1494 | i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + | 1494 | i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + |
1495 | i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + | 1495 | i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + |
1496 | i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ | 1496 | i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ |
1497 | i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ | 1497 | i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ |
1498 | i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ | 1498 | i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ |
1499 | i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ | 1499 | i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ |
1500 | i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ | 1500 | i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ |
1501 | i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + | 1501 | i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + |
1502 | i18n("<p><b>White</b>: Item readonly</p>\n"); | 1502 | i18n("<p><b>White</b>: Item readonly</p>\n"); |
1503 | displayText( text, cap); | 1503 | displayText( text, cap); |
1504 | } | 1504 | } |
1505 | void MainWindow::aboutAutoSaving() | 1505 | void MainWindow::aboutAutoSaving() |
1506 | { | 1506 | { |
1507 | QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); | 1507 | QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); |
1508 | 1508 | ||
1509 | KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); | 1509 | KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); |
1510 | 1510 | ||
1511 | } | 1511 | } |
1512 | void MainWindow::aboutKnownBugs() | 1512 | void MainWindow::aboutKnownBugs() |
1513 | { | 1513 | { |
1514 | QMessageBox* msg; | 1514 | QMessageBox* msg; |
1515 | msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), | 1515 | msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), |
1516 | i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ | 1516 | i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ |
1517 | i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ | 1517 | i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ |
1518 | i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + | 1518 | i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.info\n") + |
1519 | i18n("\nor report them in the bugtracker on\n") + | 1519 | i18n("\nor report them in the bugtracker on\n") + |
1520 | i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), | 1520 | i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), |
1521 | QMessageBox::NoIcon, | 1521 | QMessageBox::NoIcon, |
1522 | QMessageBox::Ok, | 1522 | QMessageBox::Ok, |
1523 | QMessageBox::NoButton, | 1523 | QMessageBox::NoButton, |
1524 | QMessageBox::NoButton); | 1524 | QMessageBox::NoButton); |
1525 | msg->exec(); | 1525 | msg->exec(); |
1526 | delete msg; | 1526 | delete msg; |
1527 | 1527 | ||
1528 | } | 1528 | } |
1529 | 1529 | ||
1530 | QString MainWindow::defaultFileName() | 1530 | QString MainWindow::defaultFileName() |
1531 | { | 1531 | { |
1532 | return locateLocal( "data", "korganizer/mycalendar.ics" ); | 1532 | return locateLocal( "data", "korganizer/mycalendar.ics" ); |
1533 | } | 1533 | } |
1534 | QString MainWindow::syncFileName() | 1534 | QString MainWindow::syncFileName() |
1535 | { | 1535 | { |
1536 | #ifdef DESKTOP_VERSION | 1536 | #ifdef DESKTOP_VERSION |
1537 | return locateLocal( "tmp", "synccalendar.ics" ); | 1537 | return locateLocal( "tmp", "synccalendar.ics" ); |
1538 | #else | 1538 | #else |
1539 | return QString( "/tmp/synccalendar.ics" ); | 1539 | return QString( "/tmp/synccalendar.ics" ); |
1540 | #endif | 1540 | #endif |
1541 | } | 1541 | } |
1542 | #include "koglobals.h" | 1542 | #include "koglobals.h" |
1543 | #include <kcalendarsystem.h> | 1543 | #include <kcalendarsystem.h> |
1544 | void MainWindow::updateWeek(QDate seda) | 1544 | void MainWindow::updateWeek(QDate seda) |
1545 | { | 1545 | { |
1546 | int weekNum = KGlobal::locale()->weekNum ( seda ); | 1546 | int weekNum = KGlobal::locale()->weekNum ( seda ); |
1547 | mWeekPixmap.fill( mWeekBgColor ); | 1547 | mWeekPixmap.fill( mWeekBgColor ); |
1548 | QPainter p ( &mWeekPixmap ); | 1548 | QPainter p ( &mWeekPixmap ); |
1549 | p.setFont( mWeekFont ); | 1549 | p.setFont( mWeekFont ); |
1550 | p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); | 1550 | p.drawText( 0,0,mWeekPixmap.width(), mWeekPixmap.height(),AlignCenter, QString::number( weekNum) ); |
1551 | p.end(); | 1551 | p.end(); |
1552 | QIconSet icon3 ( mWeekPixmap ); | 1552 | QIconSet icon3 ( mWeekPixmap ); |
1553 | mWeekAction->setIconSet ( icon3 ); | 1553 | mWeekAction->setIconSet ( icon3 ); |
1554 | 1554 | ||
1555 | } | 1555 | } |
1556 | void MainWindow::updateWeekNum(const DateList &selectedDates) | 1556 | void MainWindow::updateWeekNum(const DateList &selectedDates) |
1557 | { | 1557 | { |
1558 | updateWeek( selectedDates.first() ); | 1558 | updateWeek( selectedDates.first() ); |
1559 | } | 1559 | } |
1560 | void MainWindow::processIncidenceSelection( Incidence *incidence ) | 1560 | void MainWindow::processIncidenceSelection( Incidence *incidence ) |
1561 | { | 1561 | { |
1562 | 1562 | ||
1563 | if ( !incidence ) { | 1563 | if ( !incidence ) { |
1564 | enableIncidenceActions( false ); | 1564 | enableIncidenceActions( false ); |
1565 | 1565 | ||
1566 | mNewSubTodoAction->setEnabled( false ); | 1566 | mNewSubTodoAction->setEnabled( false ); |
1567 | setCaptionToDates(); | 1567 | setCaptionToDates(); |
1568 | return; | 1568 | return; |
1569 | 1569 | ||
1570 | } | 1570 | } |
1571 | 1571 | ||
1572 | //KGlobal::locale()->formatDateTime(nextA, true); | 1572 | //KGlobal::locale()->formatDateTime(nextA, true); |
1573 | QString startString = ""; | 1573 | QString startString = ""; |
1574 | if ( incidence->type() != "Todo" ) { | 1574 | if ( incidence->type() != "Todo" ) { |
1575 | if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { | 1575 | if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { |
1576 | if ( incidence->doesFloat() ) { | 1576 | if ( incidence->doesFloat() ) { |
1577 | startString += ": "+incidence->dtStartDateStr( true ); | 1577 | startString += ": "+incidence->dtStartDateStr( true ); |
1578 | startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); | 1578 | startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); |
1579 | 1579 | ||
1580 | } else { | 1580 | } else { |
1581 | startString = ": "+incidence->dtStartStr(true); | 1581 | startString = ": "+incidence->dtStartStr(true); |
1582 | startString += " --- "+((Event*)incidence)->dtEndStr(true); | 1582 | startString += " --- "+((Event*)incidence)->dtEndStr(true); |
1583 | 1583 | ||
1584 | } | 1584 | } |
1585 | 1585 | ||
1586 | } else { | 1586 | } else { |
1587 | if ( incidence->dtStart().time() != incidence->dtEnd().time() ) | 1587 | if ( incidence->dtStart().time() != incidence->dtEnd().time() ) |
1588 | startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ | 1588 | startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ |
1589 | "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); | 1589 | "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); |
1590 | if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) { | 1590 | |
1591 | if ( incidence->isBirthday() || incidence->isAnniversary() ) { | ||
1591 | bool ok; | 1592 | bool ok; |
1592 | QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); | 1593 | QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok ); |
1593 | if ( ok ) { | 1594 | if ( ok ) { |
1594 | int years = noc.date().year() - incidence->dtStart().date().year(); | 1595 | int years = noc.date().year() - incidence->dtStart().date().year(); |
1595 | startString += i18n(" (%1 y.)"). arg( years ); | 1596 | startString += i18n(" (%1 y.)"). arg( years ); |
1596 | } | 1597 | } |
1597 | } | 1598 | } |
1598 | else | 1599 | else |
1599 | startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); | 1600 | startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); |
1600 | } | 1601 | } |
1601 | 1602 | ||
1602 | } | 1603 | } |
1603 | else | 1604 | else |
1604 | startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); | 1605 | startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); |
1605 | if ( !incidence->location().isEmpty() ) | 1606 | if ( !incidence->location().isEmpty() ) |
1606 | startString += " (" +incidence->location()+")"; | 1607 | startString += " (" +incidence->location()+")"; |
1607 | setCaption( incidence->summary()+startString); | 1608 | setCaption( incidence->summary()+startString); |
1608 | 1609 | ||
1609 | enableIncidenceActions( true ); | 1610 | enableIncidenceActions( true ); |
1610 | 1611 | ||
1611 | if ( incidence->type() == "Event" ) { | 1612 | if ( incidence->type() == "Event" ) { |
1612 | mShowAction->setText( i18n("Show Event...") ); | 1613 | mShowAction->setText( i18n("Show Event...") ); |
1613 | mEditAction->setText( i18n("Edit Event...") ); | 1614 | mEditAction->setText( i18n("Edit Event...") ); |
1614 | mDeleteAction->setText( i18n("Delete Event...") ); | 1615 | mDeleteAction->setText( i18n("Delete Event...") ); |
1615 | 1616 | ||
1616 | mNewSubTodoAction->setEnabled( false ); | 1617 | mNewSubTodoAction->setEnabled( false ); |
1617 | } else if ( incidence->type() == "Todo" ) { | 1618 | } else if ( incidence->type() == "Todo" ) { |
1618 | mShowAction->setText( i18n("Show Todo...") ); | 1619 | mShowAction->setText( i18n("Show Todo...") ); |
1619 | mEditAction->setText( i18n("Edit Todo...") ); | 1620 | mEditAction->setText( i18n("Edit Todo...") ); |
1620 | mDeleteAction->setText( i18n("Delete Todo...") ); | 1621 | mDeleteAction->setText( i18n("Delete Todo...") ); |
1621 | 1622 | ||
1622 | mNewSubTodoAction->setEnabled( true ); | 1623 | mNewSubTodoAction->setEnabled( true ); |
1623 | } else { | 1624 | } else { |
1624 | mShowAction->setText( i18n("Show...") ); | 1625 | mShowAction->setText( i18n("Show...") ); |
1625 | mShowAction->setText( i18n("Edit...") ); | 1626 | mShowAction->setText( i18n("Edit...") ); |
1626 | mShowAction->setText( i18n("Delete...") ); | 1627 | mShowAction->setText( i18n("Delete...") ); |
1627 | 1628 | ||
1628 | mNewSubTodoAction->setEnabled( false ); | 1629 | mNewSubTodoAction->setEnabled( false ); |
1629 | } | 1630 | } |
1630 | } | 1631 | } |
1631 | 1632 | ||
1632 | void MainWindow::enableIncidenceActions( bool enabled ) | 1633 | void MainWindow::enableIncidenceActions( bool enabled ) |
1633 | { | 1634 | { |
1634 | mShowAction->setEnabled( enabled ); | 1635 | mShowAction->setEnabled( enabled ); |
1635 | mEditAction->setEnabled( enabled ); | 1636 | mEditAction->setEnabled( enabled ); |
1636 | mDeleteAction->setEnabled( enabled ); | 1637 | mDeleteAction->setEnabled( enabled ); |
1637 | 1638 | ||
1638 | mCloneAction->setEnabled( enabled ); | 1639 | mCloneAction->setEnabled( enabled ); |
1639 | mMoveAction->setEnabled( enabled ); | 1640 | mMoveAction->setEnabled( enabled ); |
1640 | mBeamAction->setEnabled( enabled ); | 1641 | mBeamAction->setEnabled( enabled ); |
1641 | mCancelAction->setEnabled( enabled ); | 1642 | mCancelAction->setEnabled( enabled ); |
1642 | } | 1643 | } |
1643 | 1644 | ||
1644 | void MainWindow::importOL() | 1645 | void MainWindow::importOL() |
1645 | { | 1646 | { |
1646 | #ifdef _OL_IMPORT_ | 1647 | #ifdef _OL_IMPORT_ |
1647 | KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); | 1648 | KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); |
1648 | id->exec(); | 1649 | id->exec(); |
1649 | delete id; | 1650 | delete id; |
1650 | mView->updateView(); | 1651 | mView->updateView(); |
1651 | #endif | 1652 | #endif |
1652 | } | 1653 | } |
1653 | void MainWindow::importBday() | 1654 | void MainWindow::importBday() |
1654 | { | 1655 | { |
1655 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), | 1656 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), |
1656 | i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), | 1657 | i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), |
1657 | i18n("Import!"), i18n("Cancel"), 0, | 1658 | i18n("Import!"), i18n("Cancel"), 0, |
1658 | 0, 1 ); | 1659 | 0, 1 ); |
1659 | if ( result == 0 ) { | 1660 | if ( result == 0 ) { |
1660 | mView->importBday(); | 1661 | mView->importBday(); |
1661 | 1662 | ||
1662 | } | 1663 | } |
1663 | 1664 | ||
1664 | 1665 | ||
1665 | } | 1666 | } |
1666 | void MainWindow::importQtopia() | 1667 | void MainWindow::importQtopia() |
1667 | { | 1668 | { |
1668 | //#ifndef DESKTOP_VERSION | 1669 | //#ifndef DESKTOP_VERSION |
1669 | QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); | 1670 | QString mess = i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"); |
1670 | #ifdef DESKTOP_VERSION | 1671 | #ifdef DESKTOP_VERSION |
1671 | mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); | 1672 | mess += i18n("The content of the following files will be\nimported (located in your home directory (hd)):\n(hd)/Applications/datebook/datebook.xml\n(hd)/Applications/todolist/todolist.xml\nThe following category file will be used:\n(hd)/Settings/Categories.xml"); |
1672 | #endif | 1673 | #endif |
1673 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, | 1674 | int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mess, |
1674 | i18n("Import!"), i18n("Cancel"), 0, | 1675 | i18n("Import!"), i18n("Cancel"), 0, |
1675 | 0, 1 ); | 1676 | 0, 1 ); |
1676 | if ( result == 0 ) { | 1677 | if ( result == 0 ) { |
1677 | #ifndef DESKTOP_VERSION | 1678 | #ifndef DESKTOP_VERSION |
1678 | QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); | 1679 | QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); |
1679 | QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); | 1680 | QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); |
1680 | QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; | 1681 | QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; |
1681 | #else | 1682 | #else |
1682 | QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; | 1683 | QString datebook = QDir::homeDirPath()+ "/Applications/datebook/datebook.xml"; |
1683 | QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; | 1684 | QString todolist = QDir::homeDirPath()+ "/Applications/todolist/todolist.xml"; |
1684 | QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; | 1685 | QString categories = QDir::homeDirPath()+ "/Settings/Categories.xml"; |
1685 | #endif | 1686 | #endif |
1686 | mView->importQtopia( categories, datebook, todolist ); | 1687 | mView->importQtopia( categories, datebook, todolist ); |