summaryrefslogtreecommitdiffabout
path: root/korganizer/calendarview.cpp
Unidiff
Diffstat (limited to 'korganizer/calendarview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 3a16fe6..73aa733 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -190,97 +190,97 @@ class KOCatPrefs : public QDialog
190 lay->addWidget( format ); 190 lay->addWidget( format );
191 format->setExclusive ( true ) ; 191 format->setExclusive ( true ) ;
192 addCatBut = new QRadioButton(i18n("Add to category list"), format ); 192 addCatBut = new QRadioButton(i18n("Add to category list"), format );
193 new QRadioButton(i18n("Remove from Events/Todos"), format ); 193 new QRadioButton(i18n("Remove from Events/Todos"), format );
194 addCatBut->setChecked( true ); 194 addCatBut->setChecked( true );
195 QPushButton * ok = new QPushButton( i18n("OK"), this ); 195 QPushButton * ok = new QPushButton( i18n("OK"), this );
196 lay->addWidget( ok ); 196 lay->addWidget( ok );
197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 197 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
198 lay->addWidget( cancel ); 198 lay->addWidget( cancel );
199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 199 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 200 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
201 resize( 200, 200 ); 201 resize( 200, 200 );
202 } 202 }
203 203
204 bool addCat() { return addCatBut->isChecked(); } 204 bool addCat() { return addCatBut->isChecked(); }
205private: 205private:
206 QRadioButton* addCatBut; 206 QRadioButton* addCatBut;
207}; 207};
208 208
209 209
210 210
211CalendarView::CalendarView( CalendarResources *calendar, 211CalendarView::CalendarView( CalendarResources *calendar,
212 QWidget *parent, const char *name ) 212 QWidget *parent, const char *name )
213 : CalendarViewBase( parent, name ), 213 : CalendarViewBase( parent, name ),
214 mCalendar( calendar ), 214 mCalendar( calendar ),
215 mResourceManager( calendar->resourceManager() ) 215 mResourceManager( calendar->resourceManager() )
216{ 216{
217 217
218 mEventEditor = 0; 218 mEventEditor = 0;
219 mTodoEditor = 0; 219 mTodoEditor = 0;
220 220
221 init(); 221 init();
222} 222}
223 223
224CalendarView::CalendarView( Calendar *calendar, 224CalendarView::CalendarView( Calendar *calendar,
225 QWidget *parent, const char *name ) 225 QWidget *parent, const char *name )
226 : CalendarViewBase( parent, name ), 226 : CalendarViewBase( parent, name ),
227 mCalendar( calendar ), 227 mCalendar( calendar ),
228 mResourceManager( 0 ) 228 mResourceManager( 0 )
229{ 229{
230 230
231 mEventEditor = 0; 231 mEventEditor = 0;
232 mTodoEditor = 0; 232 mTodoEditor = 0;
233 init(); 233 init();
234} 234}
235 235
236void CalendarView::init() 236void CalendarView::init()
237{ 237{
238 238 mNextAlarmDateTime = QDateTime::currentDateTime();
239 setFocusPolicy ( WheelFocus ); 239 setFocusPolicy ( WheelFocus );
240 mViewerCallerIsSearchDialog = false; 240 mViewerCallerIsSearchDialog = false;
241 mBlockShowDates = false; 241 mBlockShowDates = false;
242 beamDialog = new KOBeamPrefs(); 242 beamDialog = new KOBeamPrefs();
243 mDatePickerMode = 0; 243 mDatePickerMode = 0;
244 mCurrentSyncDevice = ""; 244 mCurrentSyncDevice = "";
245 writeLocale(); 245 writeLocale();
246 mViewManager = new KOViewManager( this ); 246 mViewManager = new KOViewManager( this );
247 mDialogManager = new KODialogManager( this ); 247 mDialogManager = new KODialogManager( this );
248 mEventViewerDialog = 0; 248 mEventViewerDialog = 0;
249 mModified = false; 249 mModified = false;
250 mReadOnly = false; 250 mReadOnly = false;
251 mSelectedIncidence = 0; 251 mSelectedIncidence = 0;
252 mCalPrinter = 0; 252 mCalPrinter = 0;
253 mFilters.setAutoDelete(true); 253 mFilters.setAutoDelete(true);
254 254
255 mCalendar->registerObserver( this ); 255 mCalendar->registerObserver( this );
256 // TODO: Make sure that view is updated, when calendar is changed. 256 // TODO: Make sure that view is updated, when calendar is changed.
257 257
258 mStorage = new FileStorage( mCalendar ); 258 mStorage = new FileStorage( mCalendar );
259 mNavigator = new DateNavigator( this, "datevav", mViewManager ); 259 mNavigator = new DateNavigator( this, "datevav", mViewManager );
260 260
261 QBoxLayout *topLayout = (QBoxLayout*)layout(); 261 QBoxLayout *topLayout = (QBoxLayout*)layout();
262#ifndef KORG_NOSPLITTER 262#ifndef KORG_NOSPLITTER
263 // create the main layout frames. 263 // create the main layout frames.
264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner"); 264 mPanner = new QSplitter(QSplitter::Horizontal,this,"CalendarView::Panner");
265 topLayout->addWidget(mPanner); 265 topLayout->addWidget(mPanner);
266 266
267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner, 267 mLeftSplitter = new QSplitter(QSplitter::Vertical,mPanner,
268 "CalendarView::LeftFrame"); 268 "CalendarView::LeftFrame");
269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize); 269 mPanner->setResizeMode(mLeftSplitter,QSplitter::KeepSize);
270 270
271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter, 271 mDateNavigator = new DateNavigatorContainer( mLeftSplitter,
272 "CalendarView::DateNavigator" ); 272 "CalendarView::DateNavigator" );
273 273
274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize); 274 mLeftSplitter->setResizeMode(mDateNavigator,QSplitter::KeepSize);
275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2"); 275 mTodoList = new KOTodoView(mCalendar, mLeftSplitter, "todolist_small2");
276 mTodoList->setNavigator( mNavigator ); 276 mTodoList->setNavigator( mNavigator );
277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView"); 277 mFilterView = new KOFilterView(&mFilters,mLeftSplitter,"CalendarView::FilterView");
278 278
279#ifdef KORG_NORESOURCEVIEW 279#ifdef KORG_NORESOURCEVIEW
280 mResourceView = 0; 280 mResourceView = 0;
281#else 281#else
282 if ( mResourceManager ) { 282 if ( mResourceManager ) {
283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter ); 283 mResourceView = new ResourceView( mResourceManager, mLeftSplitter );
284 mResourceView->updateView(); 284 mResourceView->updateView();
285 connect( mResourceView, SIGNAL( resourcesChanged() ), 285 connect( mResourceView, SIGNAL( resourcesChanged() ),
286 SLOT( updateView() ) ); 286 SLOT( updateView() ) );
@@ -597,96 +597,97 @@ void CalendarView::computeAlarm( QString msg )
597 p->addArgument( tempfilename.latin1() ); 597 p->addArgument( tempfilename.latin1() );
598 p->start(); 598 p->start();
599 return; 599 return;
600#endif 600#endif
601 601
602 return; 602 return;
603 } 603 }
604 604
605 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 605 //qDebug("+++++++system command %s ",tempfilename.latin1() );
606 } 606 }
607 if ( mess.left( 11 ) == "audio_alarm") { 607 if ( mess.left( 11 ) == "audio_alarm") {
608 bool error = false; 608 bool error = false;
609 int len = mess.mid( 11 ).find("+++"); 609 int len = mess.mid( 11 ).find("+++");
610 if ( len < 2 ) 610 if ( len < 2 )
611 error = true; 611 error = true;
612 else { 612 else {
613 tempfilename = mess.mid( 11, len ); 613 tempfilename = mess.mid( 11, len );
614 if ( !QFile::exists( tempfilename ) ) 614 if ( !QFile::exists( tempfilename ) )
615 error = true; 615 error = true;
616 } 616 }
617 if ( ! error ) { 617 if ( ! error ) {
618 filename = tempfilename; 618 filename = tempfilename;
619 } 619 }
620 mAlarmMessage = mess.mid( 11+len+3+9 ); 620 mAlarmMessage = mess.mid( 11+len+3+9 );
621 //qDebug("audio file command %s ",tempfilename.latin1() ); 621 //qDebug("audio file command %s ",tempfilename.latin1() );
622 } 622 }
623 if ( mess.left( 9 ) == "cal_alarm") { 623 if ( mess.left( 9 ) == "cal_alarm") {
624 mAlarmMessage = mess.mid( 9 ) ; 624 mAlarmMessage = mess.mid( 9 ) ;
625 } 625 }
626 626
627 startAlarm( mAlarmMessage, filename ); 627 startAlarm( mAlarmMessage, filename );
628 628
629 629
630} 630}
631 631
632void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 632void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
633{ 633{
634 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 634 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
635 635
636 mSuspendAlarmNotification = noti; 636 mSuspendAlarmNotification = noti;
637 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 637 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
638 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 638 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
639 mSuspendTimer->start( ms , true ); 639 mSuspendTimer->start( ms , true );
640 640
641} 641}
642 642
643void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 643void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
644{ 644{
645 mNextAlarmDateTime = qdt;
645 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 646 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
646 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 647 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
647#ifndef DESKTOP_VERSION 648#ifndef DESKTOP_VERSION
648 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 649 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
649#endif 650#endif
650 return; 651 return;
651 } 652 }
652 int maxSec; 653 int maxSec;
653 //maxSec = 5; //testing only 654 //maxSec = 5; //testing only
654 maxSec = 86400+3600; // one day+1hour 655 maxSec = 86400+3600; // one day+1hour
655 mAlarmNotification = noti; 656 mAlarmNotification = noti;
656 int sec = QDateTime::currentDateTime().secsTo( qdt ); 657 int sec = QDateTime::currentDateTime().secsTo( qdt );
657 if ( sec > maxSec ) { 658 if ( sec > maxSec ) {
658 mRecheckAlarmTimer->start( maxSec * 1000 ); 659 mRecheckAlarmTimer->start( maxSec * 1000 );
659 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 660 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
660 return; 661 return;
661 } else { 662 } else {
662 mRecheckAlarmTimer->stop(); 663 mRecheckAlarmTimer->stop();
663 } 664 }
664 //qDebug("Alarm timer started with secs: %d ", sec); 665 //qDebug("Alarm timer started with secs: %d ", sec);
665 mAlarmTimer->start( sec *1000 , true ); 666 mAlarmTimer->start( sec *1000 , true );
666 667
667} 668}
668// called by mRecheckAlarmTimer to get next alarm 669// called by mRecheckAlarmTimer to get next alarm
669// we need this, because a QTimer has only a max range of 25 days 670// we need this, because a QTimer has only a max range of 25 days
670void CalendarView::recheckTimerAlarm() 671void CalendarView::recheckTimerAlarm()
671{ 672{
672 mAlarmTimer->stop(); 673 mAlarmTimer->stop();
673 mRecheckAlarmTimer->stop(); 674 mRecheckAlarmTimer->stop();
674 mCalendar->checkAlarmForIncidence( 0, true ); 675 mCalendar->checkAlarmForIncidence( 0, true );
675} 676}
676void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 677void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
677{ 678{
678 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 679 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
679 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 680 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
680#ifndef DESKTOP_VERSION 681#ifndef DESKTOP_VERSION
681 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 682 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
682#endif 683#endif
683 return; 684 return;
684 } 685 }
685 mAlarmTimer->stop(); 686 mAlarmTimer->stop();
686} 687}
687void CalendarView::selectWeekNum ( int num ) 688void CalendarView::selectWeekNum ( int num )
688{ 689{
689 dateNavigator()->blockSignals( true ); 690 dateNavigator()->blockSignals( true );
690 dateNavigator()->selectWeek( num ); 691 dateNavigator()->selectWeek( num );
691 dateNavigator()->blockSignals( false ); 692 dateNavigator()->blockSignals( false );
692 mViewManager->showWeekView(); 693 mViewManager->showWeekView();
@@ -4019,48 +4020,63 @@ void CalendarView::setSyncManager(KSyncManager* manager)
4019void CalendarView::removeSyncInfo( QString syncProfile) 4020void CalendarView::removeSyncInfo( QString syncProfile)
4020{ 4021{
4021 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1()); 4022 qDebug("KO: removeSyncInfo for profile %s ", syncProfile.latin1());
4022 mCalendar->removeSyncInfo( syncProfile ); 4023 mCalendar->removeSyncInfo( syncProfile );
4023 4024
4024} 4025}
4025 4026
4026void CalendarView::undo_delete() 4027void CalendarView::undo_delete()
4027{ 4028{
4028 //qDebug("undo_delete() "); 4029 //qDebug("undo_delete() ");
4029 Incidence* undo = mCalendar->undoIncidence(); 4030 Incidence* undo = mCalendar->undoIncidence();
4030 if ( !undo ) { 4031 if ( !undo ) {
4031 KMessageBox::sorry(this,i18n("There is nothing to undo!"), 4032 KMessageBox::sorry(this,i18n("There is nothing to undo!"),
4032 i18n("KO/Pi")); 4033 i18n("KO/Pi"));
4033 return; 4034 return;
4034 } 4035 }
4035 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + 4036 if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) +
4036 i18n("\nAre you sure you want\nto restore this?"), 4037 i18n("\nAre you sure you want\nto restore this?"),
4037 i18n("KO/Pi Confirmation"),i18n("Restore"))) { 4038 i18n("KO/Pi Confirmation"),i18n("Restore"))) {
4038 mCalendar->undoDeleteIncidence(); 4039 mCalendar->undoDeleteIncidence();
4039 updateView(); 4040 updateView();
4040 } 4041 }
4041} 4042}
4042 4043
4043void CalendarView::slotViewerClosed() 4044void CalendarView::slotViewerClosed()
4044{ 4045{
4045 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) ); 4046 QTimer::singleShot( 50, this, SLOT ( resetFocus() ) );
4046} 4047}
4047 4048
4048void CalendarView::resetFocus() 4049void CalendarView::resetFocus()
4049{ 4050{
4050 if ( mViewerCallerIsSearchDialog ) { 4051 if ( mViewerCallerIsSearchDialog ) {
4051 if ( mDialogManager->getSearchDialog()->isVisible() ){ 4052 if ( mDialogManager->getSearchDialog()->isVisible() ){
4052 mDialogManager->getSearchDialog()->raise(); 4053 mDialogManager->getSearchDialog()->raise();
4053 mDialogManager->getSearchDialog()->setActiveWindow(); 4054 mDialogManager->getSearchDialog()->setActiveWindow();
4054 mDialogManager->getSearchDialog()->listview()->resetFocus(); 4055 mDialogManager->getSearchDialog()->listview()->resetFocus();
4055 } else 4056 } else
4056 mViewerCallerIsSearchDialog = false; 4057 mViewerCallerIsSearchDialog = false;
4057 } 4058 }
4058 if ( !mViewerCallerIsSearchDialog ) { 4059 if ( !mViewerCallerIsSearchDialog ) {
4059 //mViewManager->currentView()->setFocus(); 4060 //mViewManager->currentView()->setFocus();
4060 //qDebug("sssssssssssssssset focus "); 4061 //qDebug("sssssssssssssssset focus ");
4061 topLevelWidget()->raise(); 4062 topLevelWidget()->raise();
4062 setActiveWindow(); 4063 setActiveWindow();
4063 //setFocus(); 4064 //setFocus();
4064 } 4065 }
4065 mViewerCallerIsSearchDialog = false; 4066 mViewerCallerIsSearchDialog = false;
4066} 4067}
4068
4069void CalendarView::showNextAlarms()
4070{
4071 QString message;
4072 if ( mNextAlarmDateTime > QDateTime::currentDateTime() ) {
4073 QString sum = mCalendar->nextSummary();
4074 QDateTime nextA = mNextAlarmDateTime;
4075 QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
4076 message = i18n("The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)").arg( KGlobal::locale()->formatDate(nextA.date() , false)).arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
4077 } else {
4078 message = i18n("There is no next alarm.");
4079
4080 }
4081 KMessageBox::information( this, message);
4082}