-rw-r--r-- | korganizer/calendarview.cpp | 167 |
1 files changed, 165 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 503ef12..36db9c4 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -93,96 +93,214 @@ | |||
93 | #include "calprinter.h" | 93 | #include "calprinter.h" |
94 | #endif | 94 | #endif |
95 | #ifndef KORG_NOPLUGINS | 95 | #ifndef KORG_NOPLUGINS |
96 | #include "kocore.h" | 96 | #include "kocore.h" |
97 | #endif | 97 | #endif |
98 | #include "koeventeditor.h" | 98 | #include "koeventeditor.h" |
99 | #include "kotodoeditor.h" | 99 | #include "kotodoeditor.h" |
100 | #include "koprefs.h" | 100 | #include "koprefs.h" |
101 | #include "koeventviewerdialog.h" | 101 | #include "koeventviewerdialog.h" |
102 | #include "publishdialog.h" | 102 | #include "publishdialog.h" |
103 | #include "kofilterview.h" | 103 | #include "kofilterview.h" |
104 | #include "koglobals.h" | 104 | #include "koglobals.h" |
105 | #include "koviewmanager.h" | 105 | #include "koviewmanager.h" |
106 | #include "koagendaview.h" | 106 | #include "koagendaview.h" |
107 | #include "kodialogmanager.h" | 107 | #include "kodialogmanager.h" |
108 | #include "outgoingdialog.h" | 108 | #include "outgoingdialog.h" |
109 | #include "incomingdialog.h" | 109 | #include "incomingdialog.h" |
110 | #include "datenavigatorcontainer.h" | 110 | #include "datenavigatorcontainer.h" |
111 | #include "statusdialog.h" | 111 | #include "statusdialog.h" |
112 | #include "kdatenavigator.h" | 112 | #include "kdatenavigator.h" |
113 | #include "kotodoview.h" | 113 | #include "kotodoview.h" |
114 | #include "datenavigator.h" | 114 | #include "datenavigator.h" |
115 | #include "resourceview.h" | 115 | #include "resourceview.h" |
116 | #include "navigatorbar.h" | 116 | #include "navigatorbar.h" |
117 | #include "searchdialog.h" | 117 | #include "searchdialog.h" |
118 | #include "mainwindow.h" | 118 | #include "mainwindow.h" |
119 | 119 | ||
120 | #include "calendarview.h" | 120 | #include "calendarview.h" |
121 | #ifndef DESKTOP_VERSION | 121 | #ifndef DESKTOP_VERSION |
122 | #include <qtopia/alarmserver.h> | 122 | #include <qtopia/alarmserver.h> |
123 | #endif | 123 | #endif |
124 | #ifndef _WIN32_ | 124 | #ifndef _WIN32_ |
125 | #include <stdlib.h> | 125 | #include <stdlib.h> |
126 | #include <stdio.h> | 126 | #include <stdio.h> |
127 | #include <unistd.h> | 127 | #include <unistd.h> |
128 | #else | 128 | #else |
129 | #include <qprocess.h> | 129 | #include <qprocess.h> |
130 | #endif | 130 | #endif |
131 | 131 | ||
132 | #ifdef DESKTOP_VERSION | 132 | #ifdef DESKTOP_VERSION |
133 | #include <kabc/stdaddressbook.h> | 133 | #include <kabc/stdaddressbook.h> |
134 | #endif | 134 | #endif |
135 | using namespace KOrg; | 135 | using namespace KOrg; |
136 | using namespace KCal; | 136 | using namespace KCal; |
137 | extern int globalFlagBlockAgenda; | 137 | extern int globalFlagBlockAgenda; |
138 | extern int globalFlagBlockStartup; | 138 | extern int globalFlagBlockStartup; |
139 | 139 | ||
140 | 140 | ||
141 | MissedAlarmTextBrowser::MissedAlarmTextBrowser(QWidget *parent, QPtrList<Incidence> alarms,QDateTime start ) : QTextBrowser(parent) | ||
142 | |||
143 | { | ||
144 | mAlarms = alarms; | ||
145 | setBackgroundColor( QColor( 86, 153, 205 ) ); | ||
146 | QString mText = "<table width=\"100%\">\n"; | ||
147 | //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; | ||
148 | #ifdef DESKTOP_VERSION | ||
149 | mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>"; | ||
150 | #else | ||
151 | mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; | ||
152 | #endif | ||
153 | // mText += "<img src=\""; | ||
154 | // mText += ipath; | ||
155 | // mText += "\">"; | ||
156 | //mEventDate = QDate::currentDate(); | ||
157 | #ifdef DESKTOP_VERSION | ||
158 | mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h1>"; | ||
159 | #else | ||
160 | mText += "<font color=\"#FFFFFF\"> <em>" + i18n("You missed the alarms for the following events or todos:")+"</em></font></h2>"; | ||
161 | #endif | ||
162 | mText += "</td></tr>\n<tr bgcolor=\"#FF997D\"><td>"; | ||
163 | |||
164 | Incidence * inc = getNextInc( start ); | ||
165 | int time = 0; | ||
166 | mText += "<table>"; | ||
167 | while ( inc ) { | ||
168 | QDateTime dt ; | ||
169 | QString tempText = "<a "; | ||
170 | bool ok; | ||
171 | dt = inc->getNextOccurence( start, &ok ); | ||
172 | if ( !ok ) continue; | ||
173 | if ( inc->type() == "Event" ) { | ||
174 | tempText += "href=\"event:"; | ||
175 | } else if ( inc->type() == "Todo" ) { | ||
176 | tempText += "href=\"todo:"; | ||
177 | } | ||
178 | tempText += inc->uid() + "\">"; | ||
179 | if ( inc->type() == "Todo" ) | ||
180 | tempText += i18n("Todo: "); | ||
181 | if ( inc->summary().length() > 0 ) | ||
182 | tempText += inc->summary(); | ||
183 | else | ||
184 | tempText += i18n("-no summary-"); | ||
185 | QString timestr; | ||
186 | if (!inc->doesFloat()) | ||
187 | timestr = KGlobal::locale()->formatDateTime( dt, KOPrefs::instance()->mShortDateInViewer) +": "; | ||
188 | else | ||
189 | timestr = KGlobal::locale()->formatDate( dt.date() , KOPrefs::instance()->mShortDateInViewer) +": "; | ||
190 | if ( dt.date() == QDate::currentDate() && time == 0 ) { | ||
191 | time = 1; | ||
192 | mText +="</table>"; | ||
193 | mText += "</td></tr>\n<tr bgcolor=\"#FFDC64\"><td>"; | ||
194 | mText += "<table>"; | ||
195 | |||
196 | } | ||
197 | if ( dt.date() > QDate::currentDate() && time != 2 ) { | ||
198 | time = 2; | ||
199 | mText +="</table>"; | ||
200 | mText += "</td></tr>\n<tr bgcolor=\"#6AFF6A\"><td>"; | ||
201 | mText += "<table>"; | ||
202 | } | ||
203 | mText +="<tr><td><b>"; | ||
204 | mText += timestr; | ||
205 | mText += "</b></td><td>"; | ||
206 | mText += tempText; | ||
207 | mText += "</td></tr>\n"; | ||
208 | inc = getNextInc( start ); | ||
209 | } | ||
210 | mText +="</table>"; | ||
211 | setText( mText ); | ||
212 | } | ||
213 | |||
214 | Incidence * MissedAlarmTextBrowser::getNextInc( QDateTime start ) | ||
215 | { | ||
216 | QDateTime dt ; | ||
217 | Incidence * retInc; | ||
218 | Incidence * inc = mAlarms.first(); | ||
219 | if ( inc == 0 ) | ||
220 | return 0; | ||
221 | bool ok; | ||
222 | dt = inc->getNextOccurence( start, &ok ); | ||
223 | if ( ! ok ) return 0; | ||
224 | QDateTime dtn ; | ||
225 | retInc = inc; | ||
226 | inc = mAlarms.next(); | ||
227 | while ( inc ) { | ||
228 | dtn = inc->getNextOccurence( start, &ok ); | ||
229 | if ( ! ok ) return 0; | ||
230 | if ( dtn < dt ) { | ||
231 | dt = dtn; | ||
232 | retInc = inc; | ||
233 | } | ||
234 | inc = mAlarms.next(); | ||
235 | } | ||
236 | mAlarms.remove( retInc ); | ||
237 | return retInc; | ||
238 | |||
239 | } | ||
240 | void MissedAlarmTextBrowser::setSource(const QString & n) | ||
241 | { | ||
242 | if (n.startsWith("event:")) { | ||
243 | #ifdef DESKTOP_VERSION | ||
244 | emit showIncidence(n.mid(8)); | ||
245 | #else | ||
246 | emit showIncidence(n.mid(6)); | ||
247 | #endif | ||
248 | return; | ||
249 | } else if (n.startsWith("todo:")) { | ||
250 | #ifdef DESKTOP_VERSION | ||
251 | emit showIncidence(n.mid(7)); | ||
252 | #else | ||
253 | emit showIncidence(n.mid(5)); | ||
254 | #endif | ||
255 | return; | ||
256 | } | ||
257 | } | ||
258 | |||
141 | 259 | ||
142 | class KOBeamPrefs : public QDialog | 260 | class KOBeamPrefs : public QDialog |
143 | { | 261 | { |
144 | public: | 262 | public: |
145 | KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : | 263 | KOBeamPrefs( QWidget *parent=0, const char *name=0 ) : |
146 | QDialog( parent, name, true ) | 264 | QDialog( parent, name, true ) |
147 | { | 265 | { |
148 | setCaption( i18n("Beam Options") ); | 266 | setCaption( i18n("Beam Options") ); |
149 | QVBoxLayout* lay = new QVBoxLayout( this ); | 267 | QVBoxLayout* lay = new QVBoxLayout( this ); |
150 | lay->setSpacing( 3 ); | 268 | lay->setSpacing( 3 ); |
151 | lay->setMargin( 3 ); | 269 | lay->setMargin( 3 ); |
152 | QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); | 270 | QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("File format"), this ); |
153 | lay->addWidget( format ); | 271 | lay->addWidget( format ); |
154 | format->setExclusive ( true ) ; | 272 | format->setExclusive ( true ) ; |
155 | QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); | 273 | QButtonGroup* time = new QButtonGroup(1, Horizontal, i18n("Time format"), this ); |
156 | lay->addWidget( time ); time->setExclusive ( true ) ; | 274 | lay->addWidget( time ); time->setExclusive ( true ) ; |
157 | vcal = new QRadioButton(" vCalendar ", format ); | 275 | vcal = new QRadioButton(" vCalendar ", format ); |
158 | ical = new QRadioButton(" iCalendar ", format ); | 276 | ical = new QRadioButton(" iCalendar ", format ); |
159 | vcal->setChecked( true ); | 277 | vcal->setChecked( true ); |
160 | tz = new QRadioButton(i18n(" With timezone "), time ); | 278 | tz = new QRadioButton(i18n(" With timezone "), time ); |
161 | local = new QRadioButton(i18n(" Local time "), time ); | 279 | local = new QRadioButton(i18n(" Local time "), time ); |
162 | tz->setChecked( true ); | 280 | tz->setChecked( true ); |
163 | QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); | 281 | QPushButton * ok = new QPushButton( i18n("Beam via IR!"), this ); |
164 | lay->addWidget( ok ); | 282 | lay->addWidget( ok ); |
165 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); | 283 | QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); |
166 | lay->addWidget( cancel ); | 284 | lay->addWidget( cancel ); |
167 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); | 285 | connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); |
168 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); | 286 | connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); |
169 | resize( 200, 200 ); | 287 | resize( 200, 200 ); |
170 | } | 288 | } |
171 | 289 | ||
172 | bool beamVcal() { return vcal->isChecked(); } | 290 | bool beamVcal() { return vcal->isChecked(); } |
173 | bool beamLocal() { return local->isChecked(); } | 291 | bool beamLocal() { return local->isChecked(); } |
174 | private: | 292 | private: |
175 | QRadioButton* vcal, *ical, *local, *tz; | 293 | QRadioButton* vcal, *ical, *local, *tz; |
176 | }; | 294 | }; |
177 | class KOCatPrefs : public QDialog | 295 | class KOCatPrefs : public QDialog |
178 | { | 296 | { |
179 | public: | 297 | public: |
180 | KOCatPrefs( QWidget *parent=0, const char *name=0 ) : | 298 | KOCatPrefs( QWidget *parent=0, const char *name=0 ) : |
181 | QDialog( parent, name, true ) | 299 | QDialog( parent, name, true ) |
182 | { | 300 | { |
183 | setCaption( i18n("Manage new Categories") ); | 301 | setCaption( i18n("Manage new Categories") ); |
184 | QVBoxLayout* lay = new QVBoxLayout( this ); | 302 | QVBoxLayout* lay = new QVBoxLayout( this ); |
185 | lay->setSpacing( 3 ); | 303 | lay->setSpacing( 3 ); |
186 | lay->setMargin( 3 ); | 304 | lay->setMargin( 3 ); |
187 | QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); | 305 | QLabel * lab = new QLabel( i18n("After importing/loading/syncing\nthere may be new categories in\nevents or todos\nwhich are not in the category list.\nPlease choose what to do:\n "), this ); |
188 | lay->addWidget( lab ); | 306 | lay->addWidget( lab ); |
@@ -461,97 +579,135 @@ void CalendarView::init() | |||
461 | mDateFrame = new QVBox(0,0,WType_Popup); | 579 | mDateFrame = new QVBox(0,0,WType_Popup); |
462 | //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); | 580 | //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); |
463 | mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); | 581 | mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); |
464 | mDateFrame->setLineWidth(3); | 582 | mDateFrame->setLineWidth(3); |
465 | mDateFrame->hide(); | 583 | mDateFrame->hide(); |
466 | mDateFrame->setCaption( i18n( "Pick a date to display")); | 584 | mDateFrame->setCaption( i18n( "Pick a date to display")); |
467 | mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); | 585 | mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); |
468 | 586 | ||
469 | connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); | 587 | connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); |
470 | 588 | ||
471 | mEventEditor = mDialogManager->getEventEditor(); | 589 | mEventEditor = mDialogManager->getEventEditor(); |
472 | mTodoEditor = mDialogManager->getTodoEditor(); | 590 | mTodoEditor = mDialogManager->getTodoEditor(); |
473 | 591 | ||
474 | mFlagEditDescription = false; | 592 | mFlagEditDescription = false; |
475 | 593 | ||
476 | mSuspendTimer = new QTimer( this ); | 594 | mSuspendTimer = new QTimer( this ); |
477 | mAlarmTimer = new QTimer( this ); | 595 | mAlarmTimer = new QTimer( this ); |
478 | mRecheckAlarmTimer = new QTimer( this ); | 596 | mRecheckAlarmTimer = new QTimer( this ); |
479 | connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); | 597 | connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); |
480 | connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); | 598 | connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); |
481 | connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); | 599 | connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); |
482 | mAlarmDialog = new AlarmDialog( this ); | 600 | mAlarmDialog = new AlarmDialog( this ); |
483 | connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); | 601 | connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); |
484 | mAlarmDialog->setServerNotification( false ); | 602 | mAlarmDialog->setServerNotification( false ); |
485 | mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); | 603 | mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); |
486 | 604 | ||
487 | 605 | ||
488 | #ifndef DESKTOP_VERSION | 606 | #ifndef DESKTOP_VERSION |
489 | //US listen for arriving address resultsets | 607 | //US listen for arriving address resultsets |
490 | connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), | 608 | connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), |
491 | this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); | 609 | this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); |
492 | #endif | 610 | #endif |
493 | mDateNavigator->setCalendar( mCalendar ); | 611 | mDateNavigator->setCalendar( mCalendar ); |
494 | } | 612 | } |
495 | 613 | ||
496 | 614 | ||
497 | CalendarView::~CalendarView() | 615 | CalendarView::~CalendarView() |
498 | { | 616 | { |
499 | // kdDebug() << "~CalendarView()" << endl; | 617 | // kdDebug() << "~CalendarView()" << endl; |
500 | //qDebug("CalendarView::~CalendarView() "); | 618 | //qDebug("CalendarView::~CalendarView() "); |
501 | delete mDialogManager; | 619 | delete mDialogManager; |
502 | delete mViewManager; | 620 | delete mViewManager; |
503 | delete mStorage; | 621 | delete mStorage; |
504 | delete mDateFrame ; | 622 | delete mDateFrame ; |
505 | delete beamDialog; | 623 | delete beamDialog; |
506 | delete mEventViewerDialog; | 624 | delete mEventViewerDialog; |
507 | //kdDebug() << "~CalendarView() done" << endl; | 625 | //kdDebug() << "~CalendarView() done" << endl; |
508 | } | 626 | } |
627 | void CalendarView::checkAlarms() | ||
628 | { | ||
629 | KConfig *config = KOGlobals::config(); | ||
630 | config->setGroup( "AppRun" ); | ||
631 | QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); | ||
632 | int secs = config->readNumEntry( "LatestProgramStop" ) - 30; | ||
633 | //secs -= ( 3600 * 24*3 ); // debug only | ||
634 | QDateTime latest = dt.addSecs ( secs ); | ||
635 | qDebug("KO: Last termination on %s ", latest.toString().latin1()); | ||
636 | QPtrList<Incidence> el = mCalendar->rawIncidences(); | ||
637 | QPtrList<Incidence> al; | ||
638 | Incidence* inL = el.first(); | ||
639 | while ( inL ) { | ||
640 | bool ok = false; | ||
641 | int offset = 0; | ||
642 | QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; | ||
643 | if ( ok ) { | ||
644 | //qDebug("OK %s",next.toString().latin1()); | ||
645 | if ( next < QDateTime::currentDateTime() ) { | ||
646 | al.append( inL ); | ||
647 | qDebug("found missed alarm: %s ", inL->summary().latin1() ); | ||
648 | } | ||
649 | } | ||
650 | inL = el.next(); | ||
651 | } | ||
652 | if ( al.count() ) { | ||
653 | QDialog dia ( this, "huhu", true ); | ||
654 | dia.setCaption( i18n("KO/Pi: Missing alarm notification!") ); | ||
655 | QVBoxLayout* lay = new QVBoxLayout( &dia ); | ||
656 | lay->setSpacing( 3 ); | ||
657 | lay->setMargin( 3 ); | ||
658 | MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( &dia, al, latest ); | ||
659 | connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); | ||
660 | lay->addWidget( matb ); | ||
661 | dia.resize(240,240); | ||
662 | dia.exec(); | ||
509 | 663 | ||
664 | } | ||
665 | } | ||
510 | void CalendarView::showDay( QDate d ) | 666 | void CalendarView::showDay( QDate d ) |
511 | { | 667 | { |
512 | dateNavigator()->blockSignals( true ); | 668 | dateNavigator()->blockSignals( true ); |
513 | dateNavigator()->selectDate( d ); | 669 | dateNavigator()->selectDate( d ); |
514 | dateNavigator()->blockSignals( false ); | 670 | dateNavigator()->blockSignals( false ); |
515 | mViewManager->showDayView(); | 671 | mViewManager->showDayView(); |
516 | //dateNavigator()->selectDate( d ); | 672 | //dateNavigator()->selectDate( d ); |
517 | } | 673 | } |
518 | void CalendarView::timerAlarm() | 674 | void CalendarView::timerAlarm() |
519 | { | 675 | { |
520 | //qDebug("CalendarView::timerAlarm() "); | 676 | //qDebug("CalendarView::timerAlarm() "); |
521 | computeAlarm(mAlarmNotification ); | 677 | computeAlarm(mAlarmNotification ); |
522 | } | 678 | } |
523 | 679 | ||
524 | void CalendarView::suspendAlarm() | 680 | void CalendarView::suspendAlarm() |
525 | { | 681 | { |
526 | //qDebug(" CalendarView::suspendAlarm() "); | 682 | //qDebug(" CalendarView::suspendAlarm() "); |
527 | computeAlarm(mSuspendAlarmNotification ); | 683 | computeAlarm(mSuspendAlarmNotification ); |
528 | 684 | ||
529 | } | 685 | } |
530 | 686 | ||
531 | void CalendarView::startAlarm( QString mess , QString filename) | 687 | void CalendarView::startAlarm( QString mess , QString filename) |
532 | { | 688 | { |
533 | 689 | ||
534 | topLevelWidget()->showNormal(); | 690 | topLevelWidget()->showNormal(); |
535 | topLevelWidget()->setActiveWindow(); | 691 | topLevelWidget()->setActiveWindow(); |
536 | topLevelWidget()->raise(); | 692 | topLevelWidget()->raise(); |
537 | 693 | ||
538 | mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); | 694 | mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); |
539 | QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); | 695 | QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); |
540 | 696 | ||
541 | } | 697 | } |
542 | 698 | ||
543 | void CalendarView::checkNextTimerAlarm() | 699 | void CalendarView::checkNextTimerAlarm() |
544 | { | 700 | { |
545 | mCalendar->checkAlarmForIncidence( 0, true ); | 701 | mCalendar->checkAlarmForIncidence( 0, true ); |
546 | } | 702 | } |
547 | 703 | ||
548 | void CalendarView::computeAlarm( QString msg ) | 704 | void CalendarView::computeAlarm( QString msg ) |
549 | { | 705 | { |
550 | 706 | ||
551 | QString mess = msg; | 707 | QString mess = msg; |
552 | QString mAlarmMessage = mess.mid( 9 ); | 708 | QString mAlarmMessage = mess.mid( 9 ); |
553 | QString filename = MainWindow::resourcePath(); | 709 | QString filename = MainWindow::resourcePath(); |
554 | filename += "koalarm.wav"; | 710 | filename += "koalarm.wav"; |
555 | QString tempfilename; | 711 | QString tempfilename; |
556 | if ( mess.left( 13 ) == "suspend_alarm") { | 712 | if ( mess.left( 13 ) == "suspend_alarm") { |
557 | bool error = false; | 713 | bool error = false; |
@@ -1924,97 +2080,99 @@ void CalendarView::readSettings() | |||
1924 | mLeftFrame->setSizes(sizes); | 2080 | mLeftFrame->setSizes(sizes); |
1925 | sizes = config->readIntListEntry("Main Splitter Frame"); | 2081 | sizes = config->readIntListEntry("Main Splitter Frame"); |
1926 | resetval = 0; | 2082 | resetval = 0; |
1927 | maxVal = 0; | 2083 | maxVal = 0; |
1928 | if (sizes.count() != 2) { | 2084 | if (sizes.count() != 2) { |
1929 | if ( !KOPrefs::instance()->mVerticalScreen ) { | 2085 | if ( !KOPrefs::instance()->mVerticalScreen ) { |
1930 | resetval = mDateNavigator->sizeHint().width()+2; | 2086 | resetval = mDateNavigator->sizeHint().width()+2; |
1931 | } else { | 2087 | } else { |
1932 | resetval = mDateNavigator->sizeHint().height()+2; | 2088 | resetval = mDateNavigator->sizeHint().height()+2; |
1933 | } | 2089 | } |
1934 | } | 2090 | } |
1935 | if ( resetval ) { | 2091 | if ( resetval ) { |
1936 | sizes.clear(); | 2092 | sizes.clear(); |
1937 | if ( !KOPrefs::instance()->mVerticalScreen ) { | 2093 | if ( !KOPrefs::instance()->mVerticalScreen ) { |
1938 | maxVal = QApplication::desktop()->width() -10; | 2094 | maxVal = QApplication::desktop()->width() -10; |
1939 | } else { | 2095 | } else { |
1940 | maxVal = QApplication::desktop()->height()-10; | 2096 | maxVal = QApplication::desktop()->height()-10; |
1941 | } | 2097 | } |
1942 | sizes << resetval; | 2098 | sizes << resetval; |
1943 | if ( maxVal < resetval + resetval) | 2099 | if ( maxVal < resetval + resetval) |
1944 | resetval = maxVal - resetval; | 2100 | resetval = maxVal - resetval; |
1945 | sizes << resetval; | 2101 | sizes << resetval; |
1946 | } | 2102 | } |
1947 | mMainFrame->setSizes(sizes); | 2103 | mMainFrame->setSizes(sizes); |
1948 | if ( dateCount == 5 ) mNavigator->selectWorkWeek(); | 2104 | if ( dateCount == 5 ) mNavigator->selectWorkWeek(); |
1949 | else if ( dateCount == 7 ) mNavigator->selectWeek(); | 2105 | else if ( dateCount == 7 ) mNavigator->selectWeek(); |
1950 | else mNavigator->selectDates( dateCount ); | 2106 | else mNavigator->selectDates( dateCount ); |
1951 | // mViewManager->readSettings( config ); | 2107 | // mViewManager->readSettings( config ); |
1952 | updateConfig(); | 2108 | updateConfig(); |
1953 | globalFlagBlockAgenda = 2; | 2109 | globalFlagBlockAgenda = 2; |
1954 | mViewManager->readSettings( config ); | 2110 | mViewManager->readSettings( config ); |
1955 | QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); | 2111 | QTimer::singleShot( 1, mDateNavigator, SLOT ( setResizeEnabled() ) ); |
1956 | } | 2112 | } |
1957 | 2113 | ||
1958 | 2114 | ||
1959 | void CalendarView::writeSettings() | 2115 | void CalendarView::writeSettings() |
1960 | { | 2116 | { |
1961 | // kdDebug() << "CalendarView::writeSettings" << endl; | 2117 | // kdDebug() << "CalendarView::writeSettings" << endl; |
1962 | 2118 | ||
1963 | KConfig *config = KOGlobals::config(); | 2119 | KConfig *config = KOGlobals::config(); |
1964 | 2120 | ||
1965 | mViewManager->writeSettings( config ); | 2121 | mViewManager->writeSettings( config ); |
1966 | mTodoList->saveLayout(config,QString("Todo Layout")); | 2122 | mTodoList->saveLayout(config,QString("Todo Layout")); |
1967 | mDialogManager->writeSettings( config ); | 2123 | mDialogManager->writeSettings( config ); |
1968 | //KOPrefs::instance()->usrWriteConfig(); | 2124 | //KOPrefs::instance()->usrWriteConfig(); |
1969 | KOPrefs::instance()->writeConfig(); | 2125 | KOPrefs::instance()->writeConfig(); |
1970 | 2126 | ||
1971 | writeFilterSettings(config); | 2127 | writeFilterSettings(config); |
1972 | 2128 | config->setGroup( "AppRun" ); | |
2129 | QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); | ||
2130 | config->writeEntry( "LatestProgramStop", dt.secsTo( QDateTime::currentDateTime() ) ); | ||
1973 | config->setGroup( "Views" ); | 2131 | config->setGroup( "Views" ); |
1974 | config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); | 2132 | config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); |
1975 | 2133 | ||
1976 | QValueList<int> listINT = mLeftFrame->sizes(); | 2134 | QValueList<int> listINT = mLeftFrame->sizes(); |
1977 | config->writeEntry("Left Splitter Frame",listINT); | 2135 | config->writeEntry("Left Splitter Frame",listINT); |
1978 | QValueList<int> listINT2 = mMainFrame->sizes(); | 2136 | QValueList<int> listINT2 = mMainFrame->sizes(); |
1979 | config->writeEntry("Main Splitter Frame",listINT2); | 2137 | config->writeEntry("Main Splitter Frame",listINT2); |
1980 | #ifdef DESKTOP_VERSION | 2138 | #ifdef DESKTOP_VERSION |
1981 | config->setGroup("WidgetLayout"); | 2139 | config->setGroup("WidgetLayout"); |
1982 | QStringList list ;//= config->readListEntry("MainLayout"); | 2140 | QStringList list ;//= config->readListEntry("MainLayout"); |
1983 | int x,y,w,h; | 2141 | int x,y,w,h; |
1984 | QWidget* wid; | 2142 | QWidget* wid; |
1985 | wid = topLevelWidget(); | 2143 | wid = topLevelWidget(); |
1986 | x = wid->geometry().x(); | 2144 | x = wid->geometry().x(); |
1987 | y = wid->geometry().y(); | 2145 | y = wid->geometry().y(); |
1988 | w = wid->width(); | 2146 | w = wid->width(); |
1989 | h = wid->height(); | 2147 | h = wid->height(); |
1990 | list.clear(); | 2148 | list.clear(); |
1991 | list << QString::number( x ); | 2149 | list << QString::number( x ); |
1992 | list << QString::number( y ); | 2150 | list << QString::number( y ); |
1993 | list << QString::number( w ); | 2151 | list << QString::number( w ); |
1994 | list << QString::number( h ); | 2152 | list << QString::number( h ); |
1995 | config->writeEntry("MainLayout",list ); | 2153 | config->writeEntry("MainLayout",list ); |
1996 | 2154 | ||
1997 | wid = mEventEditor; | 2155 | wid = mEventEditor; |
1998 | x = wid->geometry().x(); | 2156 | x = wid->geometry().x(); |
1999 | y = wid->geometry().y(); | 2157 | y = wid->geometry().y(); |
2000 | w = wid->width(); | 2158 | w = wid->width(); |
2001 | h = wid->height(); | 2159 | h = wid->height(); |
2002 | list.clear(); | 2160 | list.clear(); |
2003 | list << QString::number( x ); | 2161 | list << QString::number( x ); |
2004 | list << QString::number( y ); | 2162 | list << QString::number( y ); |
2005 | list << QString::number( w ); | 2163 | list << QString::number( w ); |
2006 | list << QString::number( h ); | 2164 | list << QString::number( h ); |
2007 | config->writeEntry("EditEventLayout",list ); | 2165 | config->writeEntry("EditEventLayout",list ); |
2008 | 2166 | ||
2009 | wid = mTodoEditor; | 2167 | wid = mTodoEditor; |
2010 | x = wid->geometry().x(); | 2168 | x = wid->geometry().x(); |
2011 | y = wid->geometry().y(); | 2169 | y = wid->geometry().y(); |
2012 | w = wid->width(); | 2170 | w = wid->width(); |
2013 | h = wid->height(); | 2171 | h = wid->height(); |
2014 | list.clear(); | 2172 | list.clear(); |
2015 | list << QString::number( x ); | 2173 | list << QString::number( x ); |
2016 | list << QString::number( y ); | 2174 | list << QString::number( y ); |
2017 | list << QString::number( w ); | 2175 | list << QString::number( w ); |
2018 | list << QString::number( h ); | 2176 | list << QString::number( h ); |
2019 | config->writeEntry("EditTodoLayout",list ); | 2177 | config->writeEntry("EditTodoLayout",list ); |
2020 | wid = getEventViewerDialog(); | 2178 | wid = getEventViewerDialog(); |
@@ -3876,97 +4034,102 @@ Todo *CalendarView::selectedTodo() | |||
3876 | incidence = mTodoList->selectedIncidences().first(); | 4034 | incidence = mTodoList->selectedIncidences().first(); |
3877 | if ( incidence && incidence->type() == "Todo" ) { | 4035 | if ( incidence && incidence->type() == "Todo" ) { |
3878 | return static_cast<Todo *>( incidence ); | 4036 | return static_cast<Todo *>( incidence ); |
3879 | } | 4037 | } |
3880 | 4038 | ||
3881 | return 0; | 4039 | return 0; |
3882 | } | 4040 | } |
3883 | 4041 | ||
3884 | void CalendarView::dialogClosing(Incidence *in) | 4042 | void CalendarView::dialogClosing(Incidence *in) |
3885 | { | 4043 | { |
3886 | // mDialogList.remove(in); | 4044 | // mDialogList.remove(in); |
3887 | } | 4045 | } |
3888 | 4046 | ||
3889 | void CalendarView::showIncidence() | 4047 | void CalendarView::showIncidence() |
3890 | { | 4048 | { |
3891 | mViewerCallerIsSearchDialog = false; | 4049 | mViewerCallerIsSearchDialog = false; |
3892 | Incidence *incidence = currentSelection(); | 4050 | Incidence *incidence = currentSelection(); |
3893 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); | 4051 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); |
3894 | if ( incidence ) { | 4052 | if ( incidence ) { |
3895 | ShowIncidenceVisitor v; | 4053 | ShowIncidenceVisitor v; |
3896 | v.act( incidence, this ); | 4054 | v.act( incidence, this ); |
3897 | } | 4055 | } |
3898 | } | 4056 | } |
3899 | void CalendarView::editIncidenceDescription() | 4057 | void CalendarView::editIncidenceDescription() |
3900 | { | 4058 | { |
3901 | mFlagEditDescription = true; | 4059 | mFlagEditDescription = true; |
3902 | editIncidence(); | 4060 | editIncidence(); |
3903 | mFlagEditDescription = false; | 4061 | mFlagEditDescription = false; |
3904 | } | 4062 | } |
3905 | void CalendarView::editIncidence() | 4063 | void CalendarView::editIncidence() |
3906 | { | 4064 | { |
3907 | // qDebug("editIncidence() "); | 4065 | // qDebug("editIncidence() "); |
3908 | Incidence *incidence = currentSelection(); | 4066 | Incidence *incidence = currentSelection(); |
3909 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); | 4067 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); |
3910 | if ( incidence ) { | 4068 | if ( incidence ) { |
3911 | EditIncidenceVisitor v; | 4069 | EditIncidenceVisitor v; |
3912 | v.act( incidence, this ); | 4070 | v.act( incidence, this ); |
3913 | } | 4071 | } |
3914 | } | 4072 | } |
3915 | 4073 | ||
3916 | void CalendarView::deleteIncidence() | 4074 | void CalendarView::deleteIncidence() |
3917 | { | 4075 | { |
3918 | Incidence *incidence = currentSelection(); | 4076 | Incidence *incidence = currentSelection(); |
3919 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); | 4077 | if ( !incidence ) incidence = mTodoList->selectedIncidences().first(); |
3920 | if ( incidence ) { | 4078 | if ( incidence ) { |
3921 | deleteIncidence(incidence); | 4079 | deleteIncidence(incidence); |
3922 | } | 4080 | } |
3923 | } | 4081 | } |
3924 | 4082 | void CalendarView::showIncidence(QString uid) | |
4083 | { | ||
4084 | Incidence *inc = mCalendar->incidence( uid ); | ||
4085 | if ( inc ) | ||
4086 | showIncidence( inc ); | ||
4087 | } | ||
3925 | void CalendarView::showIncidence(Incidence *incidence) | 4088 | void CalendarView::showIncidence(Incidence *incidence) |
3926 | { | 4089 | { |
3927 | mViewerCallerIsSearchDialog = false; | 4090 | mViewerCallerIsSearchDialog = false; |
3928 | //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); | 4091 | //qDebug("%x %x ",sender (), mDialogManager->getSearchDialog() ); |
3929 | if ( sender() && mDialogManager->getSearchDialog() ) { | 4092 | if ( sender() && mDialogManager->getSearchDialog() ) { |
3930 | if ( sender () == mDialogManager->getSearchDialog()->listview() ) { | 4093 | if ( sender () == mDialogManager->getSearchDialog()->listview() ) { |
3931 | mViewerCallerIsSearchDialog = true; | 4094 | mViewerCallerIsSearchDialog = true; |
3932 | } | 4095 | } |
3933 | } | 4096 | } |
3934 | if ( incidence ) { | 4097 | if ( incidence ) { |
3935 | ShowIncidenceVisitor v; | 4098 | ShowIncidenceVisitor v; |
3936 | v.act( incidence, this ); | 4099 | v.act( incidence, this ); |
3937 | } | 4100 | } |
3938 | } | 4101 | } |
3939 | 4102 | ||
3940 | void CalendarView::editIncidence(Incidence *incidence) | 4103 | void CalendarView::editIncidence(Incidence *incidence) |
3941 | { | 4104 | { |
3942 | if ( incidence ) { | 4105 | if ( incidence ) { |
3943 | 4106 | ||
3944 | EditIncidenceVisitor v; | 4107 | EditIncidenceVisitor v; |
3945 | v.act( incidence, this ); | 4108 | v.act( incidence, this ); |
3946 | 4109 | ||
3947 | } | 4110 | } |
3948 | } | 4111 | } |
3949 | 4112 | ||
3950 | void CalendarView::deleteIncidence(Incidence *incidence) | 4113 | void CalendarView::deleteIncidence(Incidence *incidence) |
3951 | { | 4114 | { |
3952 | //qDebug(" CalendarView::deleteIncidence "); | 4115 | //qDebug(" CalendarView::deleteIncidence "); |
3953 | if ( incidence ) { | 4116 | if ( incidence ) { |
3954 | DeleteIncidenceVisitor v; | 4117 | DeleteIncidenceVisitor v; |
3955 | v.act( incidence, this ); | 4118 | v.act( incidence, this ); |
3956 | } | 4119 | } |
3957 | } | 4120 | } |
3958 | 4121 | ||
3959 | 4122 | ||
3960 | void CalendarView::lookForOutgoingMessages() | 4123 | void CalendarView::lookForOutgoingMessages() |
3961 | { | 4124 | { |
3962 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); | 4125 | OutgoingDialog *ogd = mDialogManager->outgoingDialog(); |
3963 | ogd->loadMessages(); | 4126 | ogd->loadMessages(); |
3964 | } | 4127 | } |
3965 | 4128 | ||
3966 | void CalendarView::lookForIncomingMessages() | 4129 | void CalendarView::lookForIncomingMessages() |
3967 | { | 4130 | { |
3968 | IncomingDialog *icd = mDialogManager->incomingDialog(); | 4131 | IncomingDialog *icd = mDialogManager->incomingDialog(); |
3969 | icd->retrieve(); | 4132 | icd->retrieve(); |
3970 | } | 4133 | } |
3971 | 4134 | ||
3972 | bool CalendarView::removeCompletedSubTodos( Todo* t ) | 4135 | bool CalendarView::removeCompletedSubTodos( Todo* t ) |