summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-04 22:22:10 (UTC)
committer zautrix <zautrix>2005-02-04 22:22:10 (UTC)
commit936b4b2aa37e699052a2517dc2d928d717398cf6 (patch) (unidiff)
tree964ac33783c2126ecbaea0a2ee72b83ae6475b52
parent4659ee80518c7d5108c21ba04a12a25eab783113 (diff)
downloadkdepimpi-936b4b2aa37e699052a2517dc2d928d717398cf6.zip
kdepimpi-936b4b2aa37e699052a2517dc2d928d717398cf6.tar.gz
kdepimpi-936b4b2aa37e699052a2517dc2d928d717398cf6.tar.bz2
fifi
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt5
-rw-r--r--korganizer/kdatenavigator.cpp2
-rw-r--r--korganizer/komonthview.cpp52
-rw-r--r--korganizer/komonthview.h4
4 files changed, 51 insertions, 12 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 3ba0841..7214035 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,38 +1,43 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.3 ************ 3********** VERSION 2.0.3 ************
4 4
5KO/Pi: 5KO/Pi:
6Added feature for changing alarm settings for many items at once: 6Added feature for changing alarm settings for many items at once:
7Open list view (or search dialog), select the desired items and choose in 7Open list view (or search dialog), select the desired items and choose in
8the popup menu: Set alarm for selected... 8the popup menu: Set alarm for selected...
9 9
10Added to the event/todo viewer the option to send an email to 10Added to the event/todo viewer the option to send an email to
11all attendees or all selected (with RSVP) attendees. 11all attendees or all selected (with RSVP) attendees.
12 12
13Made the week-month mode changing in month view faster. 13Made the week-month mode changing in month view faster.
14 14
15Made month view better useable with keyboard.
16Now TAB key jumps to next cell with an event/todo.
17Scroll in cell with coursor keys, scroll in time (next week) with
18Shift/Control + coursorkeys.
19
15********** VERSION 2.0.2 ************ 20********** VERSION 2.0.2 ************
16 21
17KO/Pi: 22KO/Pi:
18Fixed the layout problem of the day label buttons 23Fixed the layout problem of the day label buttons
19of the agenda view introduced in version 2.0.1. 24of the agenda view introduced in version 2.0.1.
20 25
21Added WhatsThis support for the todo view and the list view. 26Added WhatsThis support for the todo view and the list view.
22 27
23Added a quite useful feature to the montview. 28Added a quite useful feature to the montview.
24Just click on the week numbers on the left. 29Just click on the week numbers on the left.
25And in the top right corner of month view/agenda view 30And in the top right corner of month view/agenda view
26there is now a "week number quick selector". 31there is now a "week number quick selector".
27(Click on the black triangle). 32(Click on the black triangle).
28 33
29Made the quite difficult timezone change in KO/Pi easy. 34Made the quite difficult timezone change in KO/Pi easy.
30 35
31OM/Pi: 36OM/Pi:
32Fixed too small icons on desktop. 37Fixed too small icons on desktop.
33Fixed non visible icons in mainwindow on Z with fastload enabled. 38Fixed non visible icons in mainwindow on Z with fastload enabled.
34Added signature file setting to smtp account config. 39Added signature file setting to smtp account config.
35And the signature can be edited and saved in the edit mail dialog. 40And the signature can be edited and saved in the edit mail dialog.
36That does mean: 41That does mean:
37Simply edit the signature for the selected smtp account in the 42Simply edit the signature for the selected smtp account in the
38edit new mail dialog and press the "save signature" button there. 43edit new mail dialog and press the "save signature" button there.
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index f31e50a..c08f44f 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -37,49 +37,49 @@
37#include "koprefs.h" 37#include "koprefs.h"
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, Calendar *calendar, 48KDateNavigator::KDateNavigator( QWidget *parent, Calendar *calendar,
49 bool show_week_nums, const char *name, 49 bool show_week_nums, const char *name,
50 QDate startDate ) 50 QDate startDate )
51 : QFrame(parent, name), 51 : QFrame(parent, name),
52 updateTimer(0L) 52 updateTimer(0L)
53{ 53{
54 mCalendar = calendar; 54 mCalendar = calendar;
55 55
56 setFrameStyle(QFrame::NoFrame); 56 setFrameStyle(QFrame::NoFrame);
57 57
58 QGridLayout *topLayout = new QGridLayout(this,8,8); 58 QGridLayout *topLayout = new QGridLayout(this,8,8);
59 59
60 if (! startDate.isValid()) { 60 if (! startDate.isValid()) {
61 kdDebug() << "KDateNavigator::KDateNavigator(): an invalid date was passed as a parameter!" << endl; 61 qDebug("KDateNavigator::invalid startdate ");
62 startDate = QDate::currentDate(); 62 startDate = QDate::currentDate();
63 } 63 }
64 64
65 mSelectedDates.append(startDate); 65 mSelectedDates.append(startDate);
66 m_MthYr = startDate; 66 m_MthYr = startDate;
67 m_bShowWeekNums = show_week_nums; 67 m_bShowWeekNums = show_week_nums;
68 68
69 setFont( KOPrefs::instance()->mDateNavigatorFont ); 69 setFont( KOPrefs::instance()->mDateNavigatorFont );
70 mNavigatorBar = new NavigatorBar( startDate, this ); 70 mNavigatorBar = new NavigatorBar( startDate, this );
71 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); 71 topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 );
72 //mNavigatorBar->resize( 1,1); 72 //mNavigatorBar->resize( 1,1);
73 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 73 connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
74 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 74 connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
75 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 75 connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
76 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 76 connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
77 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) ); 77 connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) );
78 78
79 // get the day of the week on the first day 79 // get the day of the week on the first day
80 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); 80 QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
81 m_fstDayOfWk = dayone.dayOfWeek(); 81 m_fstDayOfWk = dayone.dayOfWeek();
82 82
83 int i; 83 int i;
84 84
85 // Set up the heading fields. 85 // Set up the heading fields.
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index dfa89e2..df5e060 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -79,100 +79,115 @@ KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
79 : QListBox(parent, name, WRepaintNoErase) 79 : QListBox(parent, name, WRepaintNoErase)
80{ 80{
81#ifndef DESKTOP_VERSION 81#ifndef DESKTOP_VERSION
82 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 82 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
83#endif 83#endif
84 mWT = new KNOWhatsThis(this); 84 mWT = new KNOWhatsThis(this);
85} 85}
86KNoScrollListBox::~KNoScrollListBox() 86KNoScrollListBox::~KNoScrollListBox()
87{ 87{
88 88
89} 89}
90QString KNoScrollListBox::getWhatsThisText(QPoint p) 90QString 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)
167{ 182{
168 QListBox::mousePressEvent(e); 183 QListBox::mousePressEvent(e);
169 184
170 if(e->button() == RightButton) { 185 if(e->button() == RightButton) {
171 emit rightClick(); 186 emit rightClick();
172 } 187 }
173} 188}
174 189
175MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 190MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
176 : QListBoxItem() 191 : QListBoxItem()
177{ 192{
178 setText( s ); 193 setText( s );
@@ -261,48 +276,49 @@ int MonthViewItem::width(const QListBox *lb) const
261 if( mAlarm ) { 276 if( mAlarm ) {
262 x += size+1; 277 x += size+1;
263 } 278 }
264 if( mReply ) { 279 if( mReply ) {
265 x += size+1; 280 x += size+1;
266 } 281 }
267 282
268 return( x + lb->fontMetrics().width( text() ) + 1 ); 283 return( x + lb->fontMetrics().width( text() ) + 1 );
269} 284}
270 285
271 286
272MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par ) 287MonthViewCell::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();
297 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 313 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
298 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 314 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
299 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 315 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
300 SLOT( defaultAction( QListBoxItem * ) ) ); 316 SLOT( defaultAction( QListBoxItem * ) ) );
301 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 317 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
302 const QPoint &) ), 318 const QPoint &) ),
303 SLOT( contextMenu( QListBoxItem * ) ) ); 319 SLOT( contextMenu( QListBoxItem * ) ) );
304 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 320 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
305 SLOT( selection( QListBoxItem * ) ) ); 321 SLOT( selection( QListBoxItem * ) ) );
306 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 322 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
307 SLOT( cellClicked( QListBoxItem * ) ) ); 323 SLOT( cellClicked( QListBoxItem * ) ) );
308 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 324 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
@@ -380,80 +396,84 @@ void MonthViewCell::setHoliday( const QString &holiday )
380{ 396{
381 mHolidayString = holiday; 397 mHolidayString = holiday;
382 398
383 if ( !holiday.isEmpty() ) { 399 if ( !holiday.isEmpty() ) {
384 setHoliday( true ); 400 setHoliday( true );
385 } 401 }
386} 402}
387void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 403void MonthViewCell::keyPressEvent ( QKeyEvent * e )
388{ 404{
389 405
390 e->ignore(); 406 e->ignore();
391 407
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 );
418 } 436 }
419 mItemList->clear(); 437 mItemList->clear();
420 438
421#ifdef DESKTOP_VERSION 439#ifdef DESKTOP_VERSION
422 QToolTip::remove(this); 440 QToolTip::remove(this);
423#endif 441#endif
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 )
448 mItemList->setLineWidth( 3 ); 468 mItemList->setLineWidth( 3 );
449 } 469 }
450 QString text; 470 QString text;
451 if (event->isMultiDay()) { 471 if (event->isMultiDay()) {
452 QString prefix = "<->"; 472 QString prefix = "<->";
453 if ( event->doesRecur() ) { 473 if ( event->doesRecur() ) {
454 if ( event->recursOn( mDate) ) 474 if ( event->recursOn( mDate) )
455 prefix ="->" ; 475 prefix ="->" ;
456 else { 476 else {
457 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 477 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
458 if ( event->recursOn( mDate.addDays( -days)) ) 478 if ( event->recursOn( mDate.addDays( -days)) )
459 prefix ="<-" ; 479 prefix ="<-" ;
@@ -517,49 +537,49 @@ void MonthViewCell::insertEvent(Event *event)
517 item->setMoreInfo( event->description().length() > 0 ); 537 item->setMoreInfo( event->description().length() > 0 );
518#ifdef DESKTOP_VERSION 538#ifdef DESKTOP_VERSION
519 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 539 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
520 KOPrefs::instance()->email()); 540 KOPrefs::instance()->email());
521 if ( me != 0 ) { 541 if ( me != 0 ) {
522 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 542 if ( me->status() == Attendee::NeedsAction && me->RSVP())
523 item->setReply(true); 543 item->setReply(true);
524 else 544 else
525 item->setReply(false); 545 item->setReply(false);
526 } else 546 } else
527 item->setReply(false); 547 item->setReply(false);
528#endif 548#endif
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 {
554 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 574 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
555 } 575 }
556 576
557 } else { 577 } else {
558 if (cat.isEmpty()) { 578 if (cat.isEmpty()) {
559 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 579 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
560 } else { 580 } else {
561 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 581 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
562 } 582 }
563 } 583 }
564 584
565 } else { 585 } else {
@@ -805,62 +825,64 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
805 } 825 }
806 bfont.setBold( true ); 826 bfont.setBold( true );
807 int i; 827 int i;
808 828
809 for( i = 0; i < mDaysPerWeek; i++ ) { 829 for( i = 0; i < mDaysPerWeek; i++ ) {
810 QLabel *label = new QLabel( mMonthView ); 830 QLabel *label = new QLabel( mMonthView );
811 label->setFont(bfont); 831 label->setFont(bfont);
812 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 832 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
813 label->setLineWidth(1); 833 label->setLineWidth(1);
814 label->setAlignment(AlignCenter); 834 label->setAlignment(AlignCenter);
815 mDayLabels.insert( i, label ); 835 mDayLabels.insert( i, label );
816 label = new QLabel( mWeekView ); 836 label = new QLabel( mWeekView );
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
855 int row, col; 877 int row, col;
856 mCells.resize( mNumCells ); 878 mCells.resize( mNumCells );
857 for( row = 0; row < mNumWeeks; ++row ) { 879 for( row = 0; row < mNumWeeks; ++row ) {
858 for( col = 0; col < mDaysPerWeek; ++col ) { 880 for( col = 0; col < mDaysPerWeek; ++col ) {
859 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 881 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
860 mCells.insert( row * mDaysPerWeek + col, cell ); 882 mCells.insert( row * mDaysPerWeek + col, cell );
861 883
862 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 884 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
863 SLOT( defaultAction( Incidence * ) ) ); 885 SLOT( defaultAction( Incidence * ) ) );
864 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 886 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
865 SIGNAL( newEventSignal( QDateTime ) ) ); 887 SIGNAL( newEventSignal( QDateTime ) ) );
866 connect( cell, SIGNAL( showDaySignal( QDate ) ), 888 connect( cell, SIGNAL( showDaySignal( QDate ) ),
@@ -882,58 +904,61 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
882 } 904 }
883 905
884 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 906 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
885 mContextMenu = eventPopup(); 907 mContextMenu = eventPopup();
886 // updateConfig(); //useless here 908 // updateConfig(); //useless here
887 909
888 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 910 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
889#if 0 911#if 0
890 mWidStack = new QWidgetStack( this ); 912 mWidStack = new QWidgetStack( this );
891 mMonthView = new QWidget( mWidStack ); 913 mMonthView = new QWidget( mWidStack );
892 mWeekView = new QWidget( mWidStack ); 914 mWeekView = new QWidget( mWidStack );
893#endif 915#endif
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 }
928 if ( mShowWeekView ) 953 if ( mShowWeekView )
929 mWidStack->raiseWidget( mWeekView ); 954 mWidStack->raiseWidget( mWeekView );
930 else 955 else
931 mWidStack->raiseWidget( mMonthView ); 956 mWidStack->raiseWidget( mMonthView );
932 clPending = false; 957 clPending = false;
933} 958}
934 959
935int KOMonthView::maxDatesHint() 960int KOMonthView::maxDatesHint()
936{ 961{
937 return mNumCells; 962 return mNumCells;
938} 963}
939 964
@@ -1518,29 +1543,36 @@ void KOMonthView::clearSelection()
1518 if ( mSelectedCell ) { 1543 if ( mSelectedCell ) {
1519 mSelectedCell->deselect(); 1544 mSelectedCell->deselect();
1520 mSelectedCell = 0; 1545 mSelectedCell = 0;
1521 } 1546 }
1522} 1547}
1523void KOMonthView::keyPressEvent ( QKeyEvent * e ) 1548void KOMonthView::keyPressEvent ( QKeyEvent * e )
1524{ 1549{
1525 //qDebug("KOMonthView::keyPressEvent "); 1550 //qDebug("KOMonthView::keyPressEvent ");
1526 switch(e->key()) { 1551 switch(e->key()) {
1527 case Key_Up: 1552 case Key_Up:
1528 { 1553 {
1529 emit prevMonth(); 1554 emit prevMonth();
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}
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 700f098..51eb9e6 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -33,70 +33,72 @@
33#include <qptrvector.h> 33#include <qptrvector.h>
34 34
35#include <libkcal/calendar.h> 35#include <libkcal/calendar.h>
36#include <libkcal/event.h> 36#include <libkcal/event.h>
37 37
38#include "koeventview.h" 38#include "koeventview.h"
39 39
40#ifdef DESKTOP_VERSION 40#ifdef DESKTOP_VERSION
41class QToolTipGroup; 41class QToolTipGroup;
42#endif 42#endif
43 43
44class KNOWhatsThis; 44class KNOWhatsThis;
45class KOWeekButton : public QPushButton 45class KOWeekButton : public QPushButton
46{ 46{
47 Q_OBJECT 47 Q_OBJECT
48 public: 48 public:
49 KOWeekButton( QWidget *parent=0, const char *name=0 ) : 49 KOWeekButton( QWidget *parent=0, const char *name=0 ) :
50 QPushButton( parent, name) 50 QPushButton( parent, name)
51 { 51 {
52 connect( this, SIGNAL( clicked() ), 52 connect( this, SIGNAL( clicked() ),
53 SLOT( bottonClicked() )); 53 SLOT( bottonClicked() ));
54 mNumber = -1; 54 mNumber = -1;
55 } 55 }
56 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));} 56 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));}
57 int getWeekNum() { return mNumber;}
57 signals: 58 signals:
58 void selectWeekNum ( int ); 59 void selectWeekNum ( int );
59private: 60private:
60 int mNumber; 61 int mNumber;
61private slots : 62private slots :
62 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); } 63 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); }
63}; 64};
64 65
65class KNoScrollListBox: public QListBox 66class KNoScrollListBox: public QListBox
66{ 67{
67 Q_OBJECT 68 Q_OBJECT
68 public: 69 public:
69 KNoScrollListBox(QWidget *parent=0, const char *name=0); 70 KNoScrollListBox(QWidget *parent=0, const char *name=0);
70 ~KNoScrollListBox(); 71 ~KNoScrollListBox();
71 QString getWhatsThisText(QPoint p) ; 72 QString getWhatsThisText(QPoint p) ;
72 73
73 signals: 74 signals:
74 void shiftDown(); 75 void shiftDown();
75 void shiftUp(); 76 void shiftUp();
76 void rightClick(); 77 void rightClick();
77 78
78 protected slots: 79 protected slots:
80 void oneDown();
79 void keyPressEvent(QKeyEvent *); 81 void keyPressEvent(QKeyEvent *);
80 void keyReleaseEvent(QKeyEvent *); 82 void keyReleaseEvent(QKeyEvent *);
81 void mousePressEvent(QMouseEvent *); 83 void mousePressEvent(QMouseEvent *);
82 84
83 private: 85 private:
84 KNOWhatsThis * mWT; 86 KNOWhatsThis * mWT;
85}; 87};
86 88
87 89
88class MonthViewItem: public QListBoxItem 90class MonthViewItem: public QListBoxItem
89{ 91{
90 public: 92 public:
91 MonthViewItem( Incidence *, QDate qd, const QString & title ); 93 MonthViewItem( Incidence *, QDate qd, const QString & title );
92 94
93 void setRecur(bool on) { mRecur = on; } 95 void setRecur(bool on) { mRecur = on; }
94 void setAlarm(bool on) { mAlarm = on; } 96 void setAlarm(bool on) { mAlarm = on; }
95 void setReply(bool on) { mReply = on; } 97 void setReply(bool on) { mReply = on; }
96 void setMoreInfo(bool on) { mInfo = on; } 98 void setMoreInfo(bool on) { mInfo = on; }
97 99
98 100
99 void setPalette(const QPalette &p) { mPalette = p; } 101 void setPalette(const QPalette &p) { mPalette = p; }
100 QPalette palette() const { return mPalette; } 102 QPalette palette() const { return mPalette; }
101 103
102 Incidence *incidence() const { return mIncidence; } 104 Incidence *incidence() const { return mIncidence; }
@@ -220,64 +222,64 @@ class KOMonthView: public KOEventView
220 /** returns dates of the currently selected events */ 222 /** returns dates of the currently selected events */
221 virtual DateList selectedDates(); 223 virtual DateList selectedDates();
222 224
223 virtual void printPreview(CalPrinter *calPrinter, 225 virtual void printPreview(CalPrinter *calPrinter,
224 const QDate &, const QDate &); 226 const QDate &, const QDate &);
225 bool isMonthView() { return true; } 227 bool isMonthView() { return true; }
226 bool isUpdatePossible() { return updatePossible; } 228 bool isUpdatePossible() { return updatePossible; }
227 229
228 MonthViewCell * selectedCell(); 230 MonthViewCell * selectedCell();
229 public slots: 231 public slots:
230 virtual void updateView(); 232 virtual void updateView();
231 virtual void updateConfig(); 233 virtual void updateConfig();
232 virtual void showDates(const QDate &start, const QDate &end); 234 virtual void showDates(const QDate &start, const QDate &end);
233 virtual void showEvents(QPtrList<Event> eventList); 235 virtual void showEvents(QPtrList<Event> eventList);
234 236
235 void changeEventDisplay(Event *, int); 237 void changeEventDisplay(Event *, int);
236 238
237 void clearSelection(); 239 void clearSelection();
238 240
239 void showContextMenu( Incidence * ); 241 void showContextMenu( Incidence * );
240 242
241 void setSelectedCell( MonthViewCell * ); 243 void setSelectedCell( MonthViewCell * );
242 244
243 protected slots: 245 protected slots:
244 void selectDateWeekNum ( int );
245 void selectInternalWeekNum ( int ); 246 void selectInternalWeekNum ( int );
246 void switchView(); 247 void switchView();
247 void processSelectionChange(); 248 void processSelectionChange();
248 signals: 249 signals:
249 void nextMonth(); 250 void nextMonth();
250 void prevMonth(); 251 void prevMonth();
251 void showNavigator( bool ); 252 void showNavigator( bool );
252 void selectWeekNum ( int ); 253 void selectWeekNum ( int );
253 void showDaySignal( QDate ); 254 void showDaySignal( QDate );
254 protected: 255 protected:
255 void resizeEvent(QResizeEvent *); 256 void resizeEvent(QResizeEvent *);
256 void viewChanged(); 257 void viewChanged();
257 void updateDayLabels(); 258 void updateDayLabels();
258 259
259 private: 260 private:
261 int currentWeek();
260 bool clPending; 262 bool clPending;
261 QWidgetStack * mWidStack; 263 QWidgetStack * mWidStack;
262 QWidget* mMonthView; 264 QWidget* mMonthView;
263 QWidget* mWeekView; 265 QWidget* mWeekView;
264 bool mShowWeekView; 266 bool mShowWeekView;
265 bool updatePossible; 267 bool updatePossible;
266 int mDaysPerWeek; 268 int mDaysPerWeek;
267 int mNumWeeks; 269 int mNumWeeks;
268 int mNumCells; 270 int mNumCells;
269 bool mWeekStartsMonday; 271 bool mWeekStartsMonday;
270 bool mShowSatSunComp; 272 bool mShowSatSunComp;
271 void computeLayout(); 273 void computeLayout();
272 void computeLayoutWeek(); 274 void computeLayoutWeek();
273 275
274 QPtrVector<MonthViewCell> mCells; 276 QPtrVector<MonthViewCell> mCells;
275 QPtrVector<QLabel> mDayLabels; 277 QPtrVector<QLabel> mDayLabels;
276 QPtrVector<KOWeekButton> mWeekLabels; 278 QPtrVector<KOWeekButton> mWeekLabels;
277 QPtrVector<MonthViewCell> mCellsW; 279 QPtrVector<MonthViewCell> mCellsW;
278 QPtrVector<QLabel> mDayLabelsW; 280 QPtrVector<QLabel> mDayLabelsW;
279 QPtrVector<KOWeekButton> mWeekLabelsW; 281 QPtrVector<KOWeekButton> mWeekLabelsW;
280 282
281 bool mShortDayLabels; 283 bool mShortDayLabels;
282 int mWidthLongDayLabel; 284 int mWidthLongDayLabel;
283 285