author | zautrix <zautrix> | 2005-06-03 23:10:45 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-06-03 23:10:45 (UTC) |
commit | 858b047efb5627824438cb3877e7bec0cebb3751 (patch) (unidiff) | |
tree | 7b36963344d4f5019f3a1ecb5eb9290f27c3b3c7 /korganizer/calendarview.cpp | |
parent | 0207d193bdb6c66201562a17e68872e018ec223c (diff) | |
download | kdepimpi-858b047efb5627824438cb3877e7bec0cebb3751.zip kdepimpi-858b047efb5627824438cb3877e7bec0cebb3751.tar.gz kdepimpi-858b047efb5627824438cb3877e7bec0cebb3751.tar.bz2 |
fixxx
-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 | |||
@@ -135,12 +135,130 @@ | |||
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 ) |
@@ -503,13 +621,51 @@ CalendarView::~CalendarView() | |||
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(); |
@@ -1966,13 +2122,15 @@ void CalendarView::writeSettings() | |||
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(); |
@@ -3918,13 +4076,18 @@ void CalendarView::deleteIncidence() | |||
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() ) { |