summaryrefslogtreecommitdiffabout
path: root/korganizer/kdatenavigator.cpp
Unidiff
Diffstat (limited to 'korganizer/kdatenavigator.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kdatenavigator.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index 83a57ca..1474e4b 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -38,96 +38,97 @@
38#ifndef KORG_NOPLUGINS 38#ifndef KORG_NOPLUGINS
39#include "kocore.h" 39#include "kocore.h"
40#endif 40#endif
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#include "navigatorbar.h" 44#include "navigatorbar.h"
45 45
46#include "kdatenavigator.h" 46#include "kdatenavigator.h"
47 47
48KDateNavigator::KDateNavigator( QWidget *parent, const char *name ) 48KDateNavigator::KDateNavigator( QWidget *parent, const char *name )
49 : QFrame(parent, name), 49 : QFrame(parent, name),
50 updateTimer(0L) 50 updateTimer(0L)
51{ 51{
52 setFrameStyle(QFrame::NoFrame); 52 setFrameStyle(QFrame::NoFrame);
53 QDate startDate = QDate::currentDate(); 53 QDate startDate = QDate::currentDate();
54 QGridLayout *topLayout = new QGridLayout(this,8,8); 54 QGridLayout *topLayout = new QGridLayout(this,8,8);
55 55
56 if (! startDate.isValid()) { 56 if (! startDate.isValid()) {
57 qDebug("KDateNavigator::invalid startdate "); 57 qDebug("KDateNavigator::invalid startdate ");
58 startDate = QDate::currentDate(); 58 startDate = QDate::currentDate();
59 } 59 }
60 mMonthSignalOffset = 0; 60 mMonthSignalOffset = 0;
61 mSelectedDates.append(startDate); 61 mSelectedDates.append(startDate);
62 m_MthYr = startDate; 62 m_MthYr = startDate;
63 m_bShowWeekNums = true; 63 m_bShowWeekNums = true;
64 64
65 setFont( KOPrefs::instance()->mDateNavigatorFont ); 65 setFont( KOPrefs::instance()->mDateNavigatorFont );
66 mNavigatorBar = new NavigatorBar( startDate, this ); 66 mNavigatorBar = new NavigatorBar( startDate, this );
67 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); 67 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 );
68 //mNavigatorBar->resize( 1,1); 68 //mNavigatorBar->resize( 1,1);
69 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 69 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
70 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 70 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
71 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 71 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
72 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 72 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
73 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) ); 73 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) );
74 74
75 // get the day of the week on the first day 75 // get the day of the week on the first day
76 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 76 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
77 m_fstDayOfWk = dayone.dayOfWeek(); 77 m_fstDayOfWk = dayone.dayOfWeek();
78 78
79 int i; 79 int i;
80 80
81 // Set up the heading fields. 81 // Set up the heading fields.
82 for( i = 0; i < 7; i++ ) { 82 for( i = 0; i < 7; i++ ) {
83 headings[i] = new QLabel("",this); 83 headings[i] = new QLabel("",this);
84 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold)); 84 //headings[i]->setFont(QFont("Arial", 10, QFont::Bold));
85 headings[i]->setAlignment(AlignCenter); 85 headings[i]->setAlignment(AlignCenter);
86 headings[i]->installEventFilter(this);
86 87
87 topLayout->addWidget(headings[i],1,i+1); 88 topLayout->addWidget(headings[i],1,i+1);
88 } 89 }
89 90
90 // Create the weeknumber labels 91 // Create the weeknumber labels
91 for( i = 0; i < 6; i++ ) { 92 for( i = 0; i < 6; i++ ) {
92 weeknos[i] = new QLabel(this); 93 weeknos[i] = new QLabel(this);
93 weeknos[i]->setAlignment(AlignCenter); 94 weeknos[i]->setAlignment(AlignCenter);
94 //weeknos[i]->setFont(QFont("Arial", 10)); 95 //weeknos[i]->setFont(QFont("Arial", 10));
95 if(!m_bShowWeekNums) { 96 if(!m_bShowWeekNums) {
96 weeknos[i]->hide(); 97 weeknos[i]->hide();
97 } 98 }
98 weeknos[i]->installEventFilter(this); 99 weeknos[i]->installEventFilter(this);
99 100
100 topLayout->addWidget(weeknos[i],i+2,0); 101 topLayout->addWidget(weeknos[i],i+2,0);
101 } 102 }
102 103
103 daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix"); 104 daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix");
104 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken); 105 daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken);
105 daymatrix->setLineWidth(1); 106 daymatrix->setLineWidth(1);
106 107
107 connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ), 108 connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ),
108 SIGNAL( datesSelected( const KCal::DateList & ) ) ); 109 SIGNAL( datesSelected( const KCal::DateList & ) ) );
109 110
110 connect( daymatrix, SIGNAL( eventDropped( Event * ) ), 111 connect( daymatrix, SIGNAL( eventDropped( Event * ) ),
111 SIGNAL( eventDropped( Event * ) ) ); 112 SIGNAL( eventDropped( Event * ) ) );
112 113
113 topLayout->addMultiCellWidget(daymatrix,2,7,1,7); 114 topLayout->addMultiCellWidget(daymatrix,2,7,1,7);
114 115
115 // read settings from configuration file. 116 // read settings from configuration file.
116 updateConfig(); 117 updateConfig();
117 enableRollover(FollowMonth); 118 enableRollover(FollowMonth);
118 mySizeHint = sizeHintTwoButtons(); 119 mySizeHint = sizeHintTwoButtons();
119 myFullSizeHint = sizeHintTwoButtons( 4 ); 120 myFullSizeHint = sizeHintTwoButtons( 4 );
120 mFontChanged = false; 121 mFontChanged = false;
121} 122}
122void KDateNavigator::changeFont ( QFont fo ) 123void KDateNavigator::changeFont ( QFont fo )
123{ 124{
124 setFont( fo ); 125 setFont( fo );
125 mNavigatorBar->resetFont( fo ); 126 mNavigatorBar->resetFont( fo );
126} 127}
127QFont KDateNavigator::yourFontHint( QSize si , bool *b) 128QFont KDateNavigator::yourFontHint( QSize si , bool *b)
128{ 129{
129 QFont fo = KOPrefs::instance()->mDateNavigatorFont; 130 QFont fo = KOPrefs::instance()->mDateNavigatorFont;
130 *b = false; 131 *b = false;
131 int fontPoint = fo.pointSize(); 132 int fontPoint = fo.pointSize();
132 while ( fontPoint > 5 ) { 133 while ( fontPoint > 5 ) {
133 --fontPoint; 134 --fontPoint;
@@ -394,55 +395,70 @@ void KDateNavigator::selectDates(const DateList& dateList)
394 // month. This needs to be done before calling dayToIndex, since it 395 // month. This needs to be done before calling dayToIndex, since it
395 // relies on this information being up to date. 396 // relies on this information being up to date.
396 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 397 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
397 m_fstDayOfWk = dayone.dayOfWeek(); 398 m_fstDayOfWk = dayone.dayOfWeek();
398 399
399 updateDates(); 400 updateDates();
400 401
401 daymatrix->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); 402 daymatrix->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
402 403
403 updateView(); 404 updateView();
404 } 405 }
405} 406}
406 407
407int KDateNavigator::dayNum(int row, int col) 408int KDateNavigator::dayNum(int row, int col)
408{ 409{
409 return 7 * (row - 1) + (col + 1) - m_fstDayOfWk; 410 return 7 * (row - 1) + (col + 1) - m_fstDayOfWk;
410} 411}
411 412
412int KDateNavigator::dayToIndex(int dayNum) 413int KDateNavigator::dayToIndex(int dayNum)
413{ 414{
414 int row, col; 415 int row, col;
415 416
416 row = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) / 7; 417 row = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) / 7;
417 if (KGlobal::locale()->weekStartsMonday() && (m_fstDayOfWk == 1)) 418 if (KGlobal::locale()->weekStartsMonday() && (m_fstDayOfWk == 1))
418 row++; 419 row++;
419 col = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) % 7; 420 col = (dayNum+m_fstDayOfWk-1-(KGlobal::locale()->weekStartsMonday() ? 1 : 0)) % 7;
420 return row * 7 + col; 421 return row * 7 + col;
421} 422}
422 423
423void KDateNavigator::wheelEvent (QWheelEvent *e) 424void KDateNavigator::wheelEvent (QWheelEvent *e)
424{ 425{
425 if(e->delta()>0) emit goPrevious(); 426 if(e->delta()>0) emit goPrevious();
426 else emit goNext(); 427 else emit goNext();
427 428
428 e->accept(); 429 e->accept();
429} 430}
430 431
431bool KDateNavigator::eventFilter (QObject *o,QEvent *e) 432bool KDateNavigator::eventFilter (QObject *o,QEvent *e)
432{ 433{
433 if (e->type() == QEvent::MouseButtonPress) { 434 if (e->type() == QEvent::MouseButtonPress) {
434 int i; 435 int i;
435 for(i=0;i<6;++i) { 436 for(i=0;i<6;++i) {
436 if (o == weeknos[i]) { 437 if (o == weeknos[i]) {
437 QDate weekstart = daymatrix->getDate(i*7); 438 QDate weekstart = daymatrix->getDate(i*7);
438 emit weekClicked(weekstart); 439 emit weekClicked(weekstart);
439 break; 440 break;
440 } 441 }
441 } 442 }
443 for(i=0;i<7;++i) {
444 if (o == headings[i]) {
445 KCal::DateList selDays;
446 QDate date = daymatrix->getDate(14);
447 int dio = date.daysInMonth();
448 int j;
449 int ye = date.year();
450 int mo = date.month();
451 for ( j = 1; j <= dio; ++j ) {
452 selDays.append( QDate( ye, mo, j ) );
453 }
454 emit datesSelected( selDays );
455 break;
456 }
457 }
442 return true; 458 return true;
443 } else { 459 } else {
444 return false; 460 return false;
445 } 461 }
446} 462}
447 463
448//#include "kdatenavigator.moc" 464//#include "kdatenavigator.moc"