summaryrefslogtreecommitdiffabout
path: root/korganizer/komonthview.cpp
Unidiff
Diffstat (limited to 'korganizer/komonthview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp52
1 files changed, 42 insertions, 10 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index dfa89e2..df5e060 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -91,76 +91,91 @@ QString KNoScrollListBox::getWhatsThisText(QPoint p)
91{ 91{
92 QListBoxItem* item = itemAt ( p ); 92 QListBoxItem* item = itemAt ( p );
93 if ( ! item ) { 93 if ( ! item ) {
94 return i18n("Click in the cell\nto add an event!"); 94 return i18n("Click in the cell\nto add an event!");
95 } 95 }
96 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence()); 96 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
97} 97}
98void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 98void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
99{ 99{
100 100
101 switch(e->key()) { 101 switch(e->key()) {
102 case Key_Right: 102 case Key_Right:
103 // if ( e->state() == Qt::ControlButton ) 103 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
104 { 104 {
105 e->ignore(); 105 e->ignore();
106 return; 106 return;
107 } 107 }
108 scrollBy(4,0); 108 scrollBy(10,0);
109 break; 109 break;
110 case Key_Left: 110 case Key_Left:
111 // if ( e->state() == Qt::ControlButton ) 111 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
112 { 112 {
113 e->ignore(); 113 e->ignore();
114 return; 114 return;
115 } 115 }
116 scrollBy(-4,0); 116 scrollBy(-10,0);
117 break; 117 break;
118 case Key_Up: 118 case Key_Up:
119 if(count() < 2) { 119 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
120 e->ignore(); 120 e->ignore();
121 break; 121 break;
122 } 122 }
123 setCurrentItem((currentItem()+count()-1)%count()); 123 setCurrentItem((currentItem()+count()-1)%count());
124 if(!itemVisible(currentItem())) { 124 if(!itemVisible(currentItem())) {
125 if((unsigned int) currentItem() == (count()-1)) { 125 if((unsigned int) currentItem() == (count()-1)) {
126 setTopItem(currentItem()-numItemsVisible()+1); 126 setTopItem(currentItem()-numItemsVisible()+1);
127 } else { 127 } else {
128 setTopItem(topItem()-1); 128 setTopItem(topItem()-1);
129 } 129 }
130 } 130 }
131 break; 131 break;
132 case Key_Down: 132 case Key_Down:
133 if(count() < 2) { 133 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
134 e->ignore(); 134 e->ignore();
135 break; 135 break;
136 } 136 }
137 setCurrentItem((currentItem()+1)%count()); 137 setCurrentItem((currentItem()+1)%count());
138 if(!itemVisible(currentItem())) { 138 if(!itemVisible(currentItem())) {
139 if(currentItem() == 0) { 139 if(currentItem() == 0) {
140 setTopItem(0); 140 setTopItem(0);
141 } else { 141 } else {
142 setTopItem(topItem()+1); 142 setTopItem(topItem()+1);
143 } 143 }
144 } 144 }
145 break; 145 break;
146 case Key_I:
147 QTimer::singleShot( 11, this, SLOT ( oneDown() ) );
148 e->ignore();
149 break;
146 case Key_Shift: 150 case Key_Shift:
147 emit shiftDown(); 151 emit shiftDown();
148 break; 152 break;
149 default: 153 default:
150 e->ignore(); 154 e->ignore();
151 break; 155 break;
152 } 156 }
153} 157}
154 158
159void KNoScrollListBox::oneDown()
160{
161 setCurrentItem((currentItem()+1)%count());
162 if(!itemVisible(currentItem())) {
163 if(currentItem() == 0) {
164 setTopItem(0);
165 } else {
166 setTopItem(topItem()+1);
167 }
168 }
169}
155void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 170void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
156{ 171{
157 switch(e->key()) { 172 switch(e->key()) {
158 case Key_Shift: 173 case Key_Shift:
159 emit shiftUp(); 174 emit shiftUp();
160 break; 175 break;
161 default: 176 default:
162 break; 177 break;
163 } 178 }
164} 179}
165 180
166void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 181void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
@@ -273,24 +288,25 @@ MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
273 : QWidget( par ), 288 : QWidget( par ),
274 mMonthView( parent ) 289 mMonthView( parent )
275{ 290{
276 291
277 QVBoxLayout *topLayout = new QVBoxLayout( this ); 292 QVBoxLayout *topLayout = new QVBoxLayout( this );
278 293
279 // mLabel = new QLabel( this );QPushButton 294 // mLabel = new QLabel( this );QPushButton
280 mLabel = new QPushButton( this ); 295 mLabel = new QPushButton( this );
281 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 296 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
282 //mLabel->setLineWidth( 1 ); 297 //mLabel->setLineWidth( 1 );
283 //mLabel->setAlignment( AlignCenter ); 298 //mLabel->setAlignment( AlignCenter );
284 mLabel->setFlat( true ); 299 mLabel->setFlat( true );
300 mLabel->setFocusPolicy(NoFocus);
285 mItemList = new KNoScrollListBox( this ); 301 mItemList = new KNoScrollListBox( this );
286 mItemList->setMinimumSize( 10, 10 ); 302 mItemList->setMinimumSize( 10, 10 );
287 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); 303 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
288 mItemList->setLineWidth( 1 ); 304 mItemList->setLineWidth( 1 );
289 topLayout->addWidget( mItemList ); 305 topLayout->addWidget( mItemList );
290 mLabel->raise(); 306 mLabel->raise();
291 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 307 // QColor( 0,0,255 ) QColor( 160,1600,255 )
292 mStandardPalette = palette(); 308 mStandardPalette = palette();
293 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 309 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
294 310
295 enableScrollBars( false ); 311 enableScrollBars( false );
296 updateConfig(); 312 updateConfig();
@@ -392,26 +408,28 @@ void MonthViewCell::keyPressEvent ( QKeyEvent * e )
392} 408}
393void MonthViewCell::clear() 409void MonthViewCell::clear()
394{ 410{
395 mItemList->clear(); 411 mItemList->clear();
396 QApplication::removePostedEvents ( mItemList ); 412 QApplication::removePostedEvents ( mItemList );
397 QApplication::removePostedEvents ( mLabel ); 413 QApplication::removePostedEvents ( mLabel );
398 QApplication::removePostedEvents ( this ); 414 QApplication::removePostedEvents ( this );
399} 415}
400 416
401void MonthViewCell::startUpdateCell() 417void MonthViewCell::startUpdateCell()
402{ 418{
403 419
420 mItemList->setFocusPolicy(NoFocus);
404 if ( !mMonthView->isUpdatePossible() ) 421 if ( !mMonthView->isUpdatePossible() )
405 return; 422 return;
423
406 /* 424 /*
407 if ( !isVisible() ){ 425 if ( !isVisible() ){
408 return; 426 return;
409 } 427 }
410 */ 428 */
411 // qDebug("MonthViewCell::updateCell() "); 429 // qDebug("MonthViewCell::updateCell() ");
412 setPrimary( mDate.month()%2 ); 430 setPrimary( mDate.month()%2 );
413 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 431 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
414 if ( mDate == QDate::currentDate() ) { 432 if ( mDate == QDate::currentDate() ) {
415 mItemList->setLineWidth( 3 ); 433 mItemList->setLineWidth( 3 );
416 } else { 434 } else {
417 mItemList->setLineWidth( 1 ); 435 mItemList->setLineWidth( 1 );
@@ -424,24 +442,26 @@ void MonthViewCell::startUpdateCell()
424 mToolTip = ""; 442 mToolTip = "";
425 //qApp->processEvents(); 443 //qApp->processEvents();
426 if ( !mHolidayString.isEmpty() ) { 444 if ( !mHolidayString.isEmpty() ) {
427 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 445 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
428 item->setPalette( mHolidayPalette ); 446 item->setPalette( mHolidayPalette );
429 mItemList->insertItem( item ); 447 mItemList->insertItem( item );
430 mToolTip += mHolidayString+"\n"; 448 mToolTip += mHolidayString+"\n";
431 } 449 }
432} 450}
433 451
434void MonthViewCell::insertEvent(Event *event) 452void MonthViewCell::insertEvent(Event *event)
435{ 453{
454
455 mItemList->setFocusPolicy(WheelFocus);
436 if ( !(event->doesRecur() == Recurrence::rNone) ) { 456 if ( !(event->doesRecur() == Recurrence::rNone) ) {
437 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 457 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
438 return; 458 return;
439 else 459 else
440 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 460 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
441 return; 461 return;
442 } 462 }
443 463
444 if ( event->categories().contains("Holiday") || 464 if ( event->categories().contains("Holiday") ||
445 event->categories().contains(i18n("Holiday"))) { 465 event->categories().contains(i18n("Holiday"))) {
446 setHoliday( true ); 466 setHoliday( true );
447 if ( mDate.dayOfWeek() == 7 ) 467 if ( mDate.dayOfWeek() == 7 )
@@ -529,25 +549,25 @@ void MonthViewCell::insertEvent(Event *event)
529 mItemList->insertItem( item ); 549 mItemList->insertItem( item );
530 mToolTip += "\n"; 550 mToolTip += "\n";
531} 551}
532void MonthViewCell::insertTodo(Todo *todo) 552void MonthViewCell::insertTodo(Todo *todo)
533{ 553{
534 QString text; 554 QString text;
535 if (todo->hasDueDate()) { 555 if (todo->hasDueDate()) {
536 if (!todo->doesFloat()) { 556 if (!todo->doesFloat()) {
537 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 557 text += KGlobal::locale()->formatTime(todo->dtDue().time());
538 text += " "; 558 text += " ";
539 } 559 }
540 } 560 }
541 text += i18n("To-Do: %1").arg(todo->summary()); 561 text += i18n("Td: %1").arg(todo->summary());
542 562
543 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 563 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
544 //item->setPalette( mStandardPalette ); 564 //item->setPalette( mStandardPalette );
545 QPalette pal; 565 QPalette pal;
546 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 566 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
547 QStringList categories = todo->categories(); 567 QStringList categories = todo->categories();
548 QString cat = categories.first(); 568 QString cat = categories.first();
549 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 569 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
550 pal = getPalette(); 570 pal = getPalette();
551 if (cat.isEmpty()) { 571 if (cat.isEmpty()) {
552 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 572 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
553 } else { 573 } else {
@@ -817,38 +837,40 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
817 label->setFont(bfont); 837 label->setFont(bfont);
818 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 838 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
819 label->setLineWidth(1); 839 label->setLineWidth(1);
820 label->setAlignment(AlignCenter); 840 label->setAlignment(AlignCenter);
821 mDayLabelsW.insert( i, label ); 841 mDayLabelsW.insert( i, label );
822 } 842 }
823 843
824 bfont.setBold( false ); 844 bfont.setBold( false );
825 mWeekLabels.resize( mNumWeeks+1 ); 845 mWeekLabels.resize( mNumWeeks+1 );
826 mWeekLabelsW.resize( 2 ); 846 mWeekLabelsW.resize( 2 );
827 for( i = 0; i < mNumWeeks+1; i++ ) { 847 for( i = 0; i < mNumWeeks+1; i++ ) {
828 KOWeekButton *label = new KOWeekButton( mMonthView ); 848 KOWeekButton *label = new KOWeekButton( mMonthView );
849 label->setFocusPolicy(NoFocus);
829 label->setFont(bfont); 850 label->setFont(bfont);
830 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 851 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
831 label->setFlat(true); 852 label->setFlat(true);
832 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 853 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
833 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 854 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
834 //label->setLineWidth(1); 855 //label->setLineWidth(1);
835 //label->setAlignment(AlignCenter); 856 //label->setAlignment(AlignCenter);
836 mWeekLabels.insert( i, label ); 857 mWeekLabels.insert( i, label );
837 } 858 }
838 mWeekLabels[mNumWeeks]->setText( i18n("W")); 859 mWeekLabels[mNumWeeks]->setText( i18n("W"));
839 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 860 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
840 861
841 for( i = 0; i < 1+1; i++ ) { 862 for( i = 0; i < 1+1; i++ ) {
842 KOWeekButton *label = new KOWeekButton( mWeekView ); 863 KOWeekButton *label = new KOWeekButton( mWeekView );
864 label->setFocusPolicy(NoFocus);
843 label->setFont(bfont); 865 label->setFont(bfont);
844 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 866 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
845 label->setFlat(true); 867 label->setFlat(true);
846 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 868 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
847 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 869 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
848 //label->setLineWidth(1); 870 //label->setLineWidth(1);
849 //label->setAlignment(AlignCenter); 871 //label->setAlignment(AlignCenter);
850 mWeekLabelsW.insert( i, label ); 872 mWeekLabelsW.insert( i, label );
851 } 873 }
852 mWeekLabelsW[1]->setText( i18n("W")); 874 mWeekLabelsW[1]->setText( i18n("W"));
853 875
854 876
@@ -894,34 +916,37 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
894 if ( mShowWeekView ) 916 if ( mShowWeekView )
895 mWidStack->raiseWidget( mWeekView ); 917 mWidStack->raiseWidget( mWeekView );
896 else 918 else
897 mWidStack->raiseWidget( mMonthView ); 919 mWidStack->raiseWidget( mMonthView );
898 920
899 emit incidenceSelected( 0 ); 921 emit incidenceSelected( 0 );
900} 922}
901 923
902KOMonthView::~KOMonthView() 924KOMonthView::~KOMonthView()
903{ 925{
904 delete mContextMenu; 926 delete mContextMenu;
905} 927}
906void KOMonthView::selectDateWeekNum ( int )
907{
908 928
909}
910void KOMonthView::selectInternalWeekNum ( int n ) 929void KOMonthView::selectInternalWeekNum ( int n )
911{ 930{
912 switchView(); 931 switchView();
913 emit selectWeekNum ( n ); 932 emit selectWeekNum ( n );
914} 933}
915 934
935int KOMonthView::currentWeek()
936{
937 if ( mShowWeekView )
938 return mWeekLabelsW[0]->getWeekNum();
939 return mWeekLabels[0]->getWeekNum();
940}
916void KOMonthView::switchView() 941void KOMonthView::switchView()
917{ 942{
918 943
919 if ( selectedCell( ) ) 944 if ( selectedCell( ) )
920 selectedCell()->deselect(); 945 selectedCell()->deselect();
921 mShowWeekView = !mShowWeekView; 946 mShowWeekView = !mShowWeekView;
922 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 947 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
923 //emit showNavigator( !mShowWeekView ); 948 //emit showNavigator( !mShowWeekView );
924 if ( clPending ) { 949 if ( clPending ) {
925 computeLayout(); 950 computeLayout();
926 updateConfig(); 951 updateConfig();
927 } 952 }
@@ -1530,17 +1555,24 @@ void KOMonthView::keyPressEvent ( QKeyEvent * e )
1530 mCells[0]->setFocus(); 1555 mCells[0]->setFocus();
1531 } 1556 }
1532 e->accept(); 1557 e->accept();
1533 break; 1558 break;
1534 case Key_Down: 1559 case Key_Down:
1535 { 1560 {
1536 emit nextMonth(); 1561 emit nextMonth();
1537 mCells[0]->setFocus(); 1562 mCells[0]->setFocus();
1538 1563
1539 } 1564 }
1540 e->accept(); 1565 e->accept();
1541 break; 1566 break;
1567 case Key_Return:
1568 case Key_Enter:
1569 {
1570 selectInternalWeekNum ( currentWeek() );
1571 }
1572 e->accept();
1573 break;
1542 default: 1574 default:
1543 e->ignore(); 1575 e->ignore();
1544 break; 1576 break;
1545 } 1577 }
1546} 1578}