00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include <qpopupmenu.h>
00021
#include <qfont.h>
00022
#include <qfontmetrics.h>
00023
#include <qkeycode.h>
00024
#include <qhbox.h>
00025
#include <qvbox.h>
00026
#include <qpushbutton.h>
00027
#include <qtooltip.h>
00028
#include <qpainter.h>
00029
#include <qcursor.h>
00030
#include <qlistbox.h>
00031
00032
#include <kdebug.h>
00033
#include <klocale.h>
00034
#include <kglobal.h>
00035
#include <kconfig.h>
00036
#include <kiconloader.h>
00037
#include <kwordwrap.h>
00038
00039
#include <kcalendarsystem.h>
00040
00041
#ifndef KORG_NOPRINTER
00042
#include "calprinter.h"
00043
#endif
00044
#include "koprefs.h"
00045
#ifndef KORG_NOPLUGINS
00046
#include "kocore.h"
00047
#endif
00048
#include "koglobals.h"
00049
#include "koincidencetooltip.h"
00050
00051
#include "komonthview.h"
00052
#include "komonthview.moc"
00053
00054
00055
00056 KOMonthCellToolTip::KOMonthCellToolTip( QWidget* parent,
00057 KNoScrollListBox* lv )
00058 :QToolTip(parent)
00059 {
00060 eventlist=lv;
00061 }
00062
00063
void KOMonthCellToolTip::maybeTip(
const QPoint & pos)
00064 {
00065 QRect r;
00066 QListBoxItem *it = eventlist->itemAt(pos);
00067 MonthViewItem *i = static_cast<MonthViewItem*>(it);
00068
00069
if( i && KOPrefs::instance()->mEnableToolTips ) {
00070
00071 r=eventlist->itemRect( it );
00072
00073 QString tipText;
00074 ToolTipVisitor v;
00075
if (v.act(i->incidence(), &tipText,
true)) {
00076 tip(r, tipText);
00077 }
00078 }
00079
00080 }
00081
00082 KNoScrollListBox::KNoScrollListBox(QWidget *parent,
const char *name)
00083 : QListBox(parent, name),
00084 mSqueezing(false)
00085 {
00086 QPalette pal = palette();
00087 pal.setColor( QColorGroup::Foreground, KOPrefs::instance()->agendaBgColor().dark( 150 ) );
00088 pal.setColor( QColorGroup::Base, KOPrefs::instance()->agendaBgColor() );
00089 setPalette( pal );
00090 }
00091
00092
void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
00093 {
00094
switch(e->key()) {
00095
case Key_Right:
00096 scrollBy(4,0);
00097
break;
00098
case Key_Left:
00099 scrollBy(-4,0);
00100
break;
00101
case Key_Up:
00102
if(!count())
break;
00103 setCurrentItem((currentItem()+count()-1)%count());
00104
if(!itemVisible(currentItem())) {
00105
if((
unsigned int) currentItem() == (count()-1)) {
00106 setTopItem(currentItem()-numItemsVisible()+1);
00107 }
else {
00108 setTopItem(topItem()-1);
00109 }
00110 }
00111
break;
00112
case Key_Down:
00113
if(!count())
break;
00114 setCurrentItem((currentItem()+1)%count());
00115
if(!itemVisible(currentItem())) {
00116
if(currentItem() == 0) {
00117 setTopItem(0);
00118 }
else {
00119 setTopItem(topItem()+1);
00120 }
00121 }
00122
case Key_Shift:
00123 emit shiftDown();
00124
break;
00125
default:
00126
break;
00127 }
00128 }
00129
00130
void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
00131 {
00132
switch(e->key()) {
00133
case Key_Shift:
00134 emit shiftUp();
00135
break;
00136
default:
00137
break;
00138 }
00139 }
00140
00141
void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
00142 {
00143 QListBox::mousePressEvent(e);
00144
00145
if(e->button() == RightButton) {
00146 emit rightClick();
00147 }
00148 }
00149
00150
void KNoScrollListBox::contentsMouseDoubleClickEvent ( QMouseEvent * e )
00151 {
00152 QListBox::contentsMouseDoubleClickEvent( e );
00153 QListBoxItem* item = itemAt( e->pos() );
00154
if (!item) {
00155 emit doubleClicked( item );
00156 }
00157 }
00158
00159
void KNoScrollListBox::resizeEvent(QResizeEvent *e)
00160 {
00161
bool s = count() && ( maxItemWidth() > e->size().width() );
00162
if (mSqueezing || s)
00163 triggerUpdate(
false);
00164
00165 mSqueezing = s;
00166 QListBox::resizeEvent(e);
00167 }
00168
00169 MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd,
const QString & s)
00170 : QListBoxItem()
00171 {
00172 setText( s );
00173
00174 mIncidence = incidence;
00175 mDate = qd;
00176
00177 mAlarmPixmap = KOGlobals::self()->smallIcon(
"bell");
00178 mRecurPixmap = KOGlobals::self()->smallIcon(
"recur");
00179 mReplyPixmap = KOGlobals::self()->smallIcon(
"mail_reply");
00180
00181 mRecur =
false;
00182 mAlarm =
false;
00183 mReply =
false;
00184 }
00185
00186
void MonthViewItem::paint(QPainter *p)
00187 {
00188
#if QT_VERSION >= 0x030000
00189
bool sel = isSelected();
00190
#else
00191
bool sel = selected();
00192
#endif
00193
00194 QColor bgColor = palette().color( QPalette::Normal,
00195 sel ? QColorGroup::Highlight : QColorGroup::Background );
00196
if (KOPrefs::instance()->monthViewUsesCategoryColor())
00197 {
00198 p->setBackgroundColor( bgColor );
00199 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
00200 }
00201
int x = 3;
00202
if ( mRecur ) {
00203 p->drawPixmap( x, 0, mRecurPixmap );
00204 x += mRecurPixmap.width() + 2;
00205 }
00206
if ( mAlarm ) {
00207 p->drawPixmap( x, 0, mAlarmPixmap );
00208 x += mAlarmPixmap.width() + 2;
00209 }
00210
if ( mReply ) {
00211 p->drawPixmap(x, 0, mReplyPixmap );
00212 x += mReplyPixmap.width() + 2;
00213 }
00214 QFontMetrics fm = p->fontMetrics();
00215
int yPos;
00216
int pmheight = QMAX( mRecurPixmap.height(),
00217 QMAX( mAlarmPixmap.height(), mReplyPixmap.height() ) );
00218
if( pmheight < fm.height() )
00219 yPos = fm.ascent() + fm.leading()/2;
00220
else
00221 yPos = pmheight/2 - fm.height()/2 + fm.ascent();
00222 QColor textColor = palette().color( QPalette::Normal, sel ? \
00223 QColorGroup::HighlightedText : QColorGroup::Text );
00224 p->setPen( textColor );
00225
00226 KWordWrap::drawFadeoutText(p, x, yPos, listBox()->width() - x, text());
00227 }
00228
00229
int MonthViewItem::height(
const QListBox *lb)
const
00230
{
00231
return QMAX( QMAX( mRecurPixmap.height(), mReplyPixmap.height() ),
00232 QMAX( mAlarmPixmap.height(), lb->fontMetrics().lineSpacing()+1) );
00233 }
00234
00235
int MonthViewItem::width(
const QListBox *lb)
const
00236
{
00237
int x = 3;
00238
if( mRecur ) {
00239 x += mRecurPixmap.width()+2;
00240 }
00241
if( mAlarm ) {
00242 x += mAlarmPixmap.width()+2;
00243 }
00244
if( mReply ) {
00245 x += mReplyPixmap.width()+2;
00246 }
00247
00248
return( x + lb->fontMetrics().boundingRect( text() ).width() + 1 );
00249 }
00250
00251
00252 MonthViewCell::MonthViewCell( KOMonthView *parent)
00253 : QWidget( parent ),
00254 mMonthView( parent )
00255 {
00256 QVBoxLayout *topLayout =
new QVBoxLayout(
this );
00257
00258 mLabel =
new QLabel(
this );
00259 mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
00260 mLabel->setLineWidth( 1 );
00261 mLabel->setAlignment( AlignCenter );
00262
00263 mItemList =
new KNoScrollListBox(
this );
00264 mItemList->setMinimumSize( 10, 10 );
00265 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
00266 mItemList->setLineWidth( 1 );
00267
00268
new KOMonthCellToolTip( mItemList->viewport(), (KNoScrollListBox*)mItemList );
00269
00270 topLayout->addWidget( mItemList );
00271
00272 mLabel->raise();
00273
00274 mStandardPalette = palette();
00275
00276 enableScrollBars(
false );
00277
00278
updateConfig();
00279
00280 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
00281 SLOT(
defaultAction( QListBoxItem * ) ) );
00282 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
00283
const QPoint &) ),
00284 SLOT( contextMenu( QListBoxItem * ) ) );
00285 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
00286 SLOT( selection( QListBoxItem * ) ) );
00287 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
00288 SLOT( cellClicked( QListBoxItem * ) ) );
00289 }
00290
00291
void MonthViewCell::setDate(
const QDate &date )
00292 {
00293
00294
00295 mDate = date;
00296
00297 QString text;
00298
if ( KOGlobals::self()->calendarSystem()->day( date ) == 1 ) {
00299 text = KOGlobals::self()->calendarSystem()->monthName( date,
true ) +
" ";
00300 QFontMetrics fm( mLabel->font() );
00301 mLabel->resize( mLabelSize + QSize( fm.width( text ), 0 ) );
00302 }
else {
00303 mLabel->resize( mLabelSize );
00304 }
00305 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
00306 mLabel->setText( text );
00307
00308 resizeEvent( 0 );
00309 }
00310
00311 QDate MonthViewCell::date()
const
00312
{
00313
return mDate;
00314 }
00315
00316
void MonthViewCell::setPrimary(
bool primary )
00317 {
00318 mPrimary = primary;
00319
00320
if ( mPrimary ) {
00321 mLabel->setBackgroundMode( PaletteBase );
00322 }
else {
00323 mLabel->setBackgroundMode( PaletteBackground );
00324 }
00325 }
00326
00327
bool MonthViewCell::isPrimary()
const
00328
{
00329
return mPrimary;
00330 }
00331
00332
void MonthViewCell::setHoliday(
bool holiday )
00333 {
00334 mHoliday = holiday;
00335
00336
if ( holiday ) {
00337 setPalette( mHolidayPalette );
00338 }
else {
00339 setPalette( mStandardPalette );
00340 }
00341 }
00342
00343
void MonthViewCell::setHoliday(
const QString &holiday )
00344 {
00345 mHolidayString = holiday;
00346
00347
if ( !holiday.isEmpty() ) {
00348 setHoliday(
true );
00349 }
00350 }
00351
00352
void MonthViewCell::updateCell()
00353 {
00354
if ( mDate == QDate::currentDate() ) {
00355 setPalette( mTodayPalette );
00356 }
00357
else {
00358
if ( mHoliday )
00359 setPalette( mHolidayPalette );
00360
else
00361 setPalette( mStandardPalette );
00362 }
00363
00364 mItemList->clear();
00365
00366
if ( !mHolidayString.isEmpty() ) {
00367 MonthViewItem *item =
new MonthViewItem( 0, mDate, mHolidayString );
00368 item->setPalette( mHolidayPalette );
00369 mItemList->insertItem( item );
00370 }
00371
00372 Event::List events = mMonthView->calendar()->events( mDate,
true );
00373 Event::List::ConstIterator it;
00374
for( it = events.begin(); it != events.end(); ++it ) {
00375 Event *event = *it;
00376 QString text;
00377
if (event->isMultiDay()) {
00378
if (mDate == event->dtStart().date()) {
00379 text =
"(-- " + event->summary();
00380 }
else if (mDate == event->dtEnd().date()) {
00381 text = event->summary() +
" --)";
00382 }
else if (!(event->dtStart().date().daysTo(mDate) % 7)) {
00383 text =
"-- " + event->summary() +
" --";
00384 }
else {
00385 text =
"----------------";
00386 }
00387 }
else {
00388
if (event->doesFloat())
00389 text = event->summary();
00390
else {
00391 text = KGlobal::locale()->formatTime(event->dtStart().time());
00392 text +=
" " + event->summary();
00393 }
00394 }
00395
00396 MonthViewItem *item =
new MonthViewItem( event, mDate, text );
00397
if (KOPrefs::instance()->monthViewUsesCategoryColor()) {
00398 QStringList categories = event->categories();
00399 QString cat = categories.first();
00400
if (cat.isEmpty()) {
00401 item->setPalette(QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor));
00402 }
else {
00403 item->setPalette(QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))));
00404 }
00405 }
else {
00406 item->setPalette( mStandardPalette );
00407 }
00408 item->setRecur( event->doesRecur() );
00409 item->setAlarm( event->isAlarmEnabled() );
00410
00411 Attendee *me = event->attendeeByMails(KOPrefs::instance()->additionalMails(),
00412 KOPrefs::instance()->email());
00413
if ( me != 0 ) {
00414
if ( me->status() == Attendee::NeedsAction && me->RSVP())
00415 item->setReply(
true);
00416
else
00417 item->setReply(
false);
00418 }
else
00419 item->setReply(
false);
00420
00421 mItemList->insertItem( item );
00422 }
00423
00424
00425 Todo::List todos = mMonthView->calendar()->todos( mDate );
00426 Todo::List::ConstIterator it2;
00427
for( it2 = todos.begin(); it2 != todos.end(); ++it2 ) {
00428 Todo *todo = *it2;
00429 QString text;
00430
if (todo->hasDueDate()) {
00431
if (!todo->doesFloat()) {
00432 text += KGlobal::locale()->formatTime(todo->dtDue().time());
00433 text +=
" ";
00434 }
00435 }
00436 text += i18n(
"To-Do: %1").arg(todo->summary());
00437
00438 MonthViewItem *item =
new MonthViewItem( todo, mDate, text );
00439 item->setPalette( mStandardPalette );
00440
00441 mItemList->insertItem( item );
00442 }
00443 }
00444
00445
void MonthViewCell::updateConfig()
00446 {
00447 setFont( KOPrefs::instance()->mMonthViewFont );
00448
00449 QFontMetrics fm( font() );
00450 mLabelSize = fm.size( 0,
"30" ) +
00451 QSize( mLabel->frameWidth() * 2, mLabel->frameWidth() * 2 ) +
00452 QSize( 2, 2 );
00453
00454 mHolidayPalette = mStandardPalette;
00455 mHolidayPalette.setColor(QColorGroup::Foreground,
00456 KOPrefs::instance()->holidayColor());
00457 mHolidayPalette.setColor(QColorGroup::Text,
00458 KOPrefs::instance()->holidayColor());
00459 mTodayPalette = mStandardPalette;
00460 mTodayPalette.setColor(QColorGroup::Foreground,
00461 KOPrefs::instance()->highlightColor());
00462 mTodayPalette.setColor(QColorGroup::Text,
00463 KOPrefs::instance()->highlightColor());
00464 updateCell();
00465 }
00466
00467
void MonthViewCell::enableScrollBars(
bool enabled )
00468 {
00469
if ( enabled ) {
00470 mItemList->setVScrollBarMode(QScrollView::Auto);
00471 mItemList->setHScrollBarMode(QScrollView::Auto);
00472 }
else {
00473 mItemList->setVScrollBarMode(QScrollView::AlwaysOff);
00474 mItemList->setHScrollBarMode(QScrollView::AlwaysOff);
00475 }
00476 }
00477
00478 Incidence *MonthViewCell::selectedIncidence()
00479 {
00480
int index = mItemList->currentItem();
00481
if ( index < 0 )
return 0;
00482
00483 MonthViewItem *item =
00484 static_cast<MonthViewItem *>( mItemList->item( index ) );
00485
00486
if ( !item )
return 0;
00487
00488
return item->incidence();
00489 }
00490
00491 QDate MonthViewCell::selectedIncidenceDate()
00492 {
00493 QDate qd;
00494
int index = mItemList->currentItem();
00495
if ( index < 0 )
return qd;
00496
00497 MonthViewItem *item =
00498 static_cast<MonthViewItem *>( mItemList->item( index ) );
00499
00500
if ( !item )
return qd;
00501
00502
return item->incidenceDate();
00503 }
00504
00505
void MonthViewCell::deselect()
00506 {
00507 mItemList->clearSelection();
00508
00509 enableScrollBars(
false );
00510 }
00511
00512
void MonthViewCell::resizeEvent ( QResizeEvent * )
00513 {
00514 mLabel->move( width() - mLabel->width(), height() - mLabel->height() );
00515 }
00516
00517
void MonthViewCell::defaultAction( QListBoxItem *item )
00518 {
00519
if ( !item ) {
00520 emit
newEventSignal( date() );
00521 }
else {
00522 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
00523 Incidence *incidence = eventItem->incidence();
00524
if ( incidence ) mMonthView->defaultAction( incidence );
00525 }
00526 }
00527
00528
void MonthViewCell::cellClicked( QListBoxItem * )
00529 {
00530
if( KOPrefs::instance()->enableMonthScroll() ) enableScrollBars(
true );
00531 }
00532
00533
void MonthViewCell::contextMenu( QListBoxItem *item )
00534 {
00535
if ( item ) {
00536 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
00537 Incidence *incidence = eventItem->incidence();
00538
if ( incidence ) mMonthView->showEventContextMenu( incidence );
00539 }
00540
else {
00541 mMonthView->showGeneralContextMenu();
00542 }
00543 }
00544
00545
void MonthViewCell::selection( QListBoxItem *item )
00546 {
00547
if ( !item )
return;
00548
00549 mMonthView->setSelectedCell(
this );
00550 }
00551
00552 KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent,
const char *name)
00553 :
KOEventView( calendar, parent, name ),
00554 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
00555 mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
00556 {
00557 mCells.setAutoDelete(
true );
00558
00559 QGridLayout *dayLayout =
new QGridLayout(
this );
00560
00561
00562
00563 mDayLabels.resize( mDaysPerWeek );
00564 QFont bfont = font();
00565 bfont.setBold(
true );
00566
int i;
00567
for( i = 0; i < mDaysPerWeek; i++ ) {
00568 QLabel *label =
new QLabel(
this );
00569 label->setFont(bfont);
00570 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
00571 label->setLineWidth(1);
00572 label->setAlignment(AlignCenter);
00573
00574 mDayLabels.insert( i, label );
00575
00576 dayLayout->addWidget( label, 0, i );
00577 dayLayout->addColSpacing( i, 10 );
00578 dayLayout->setColStretch( i, 1 );
00579 }
00580
00581
int row, col;
00582
00583 mCells.resize( mNumCells );
00584
for( row = 0; row < mNumWeeks; ++row ) {
00585
for( col = 0; col < mDaysPerWeek; ++col ) {
00586 MonthViewCell *cell =
new MonthViewCell(
this );
00587 mCells.insert( row * mDaysPerWeek + col, cell );
00588 dayLayout->addWidget( cell, row + 1, col );
00589
00590 connect( cell, SIGNAL(
defaultAction( Incidence * ) ),
00591 SLOT(
defaultAction( Incidence * ) ) );
00592 connect( cell, SIGNAL(
newEventSignal( QDate ) ),
00593 SIGNAL(
newEventSignal( QDate ) ) );
00594 }
00595 dayLayout->setRowStretch( row + 1, 1 );
00596 }
00597
00598 mEventContextMenu =
eventPopup();
00599
00600
updateConfig();
00601
00602 emit incidenceSelected( 0 );
00603 }
00604
00605 KOMonthView::~KOMonthView()
00606 {
00607
if (mEventContextMenu)
delete mEventContextMenu;
00608 }
00609
00610
int KOMonthView::maxDatesHint()
00611 {
00612
return mNumCells;
00613 }
00614
00615
int KOMonthView::currentDateCount()
00616 {
00617
return mNumCells;
00618 }
00619
00620 Incidence::List KOMonthView::selectedIncidences()
00621 {
00622 Incidence::List selected;
00623
00624
if ( mSelectedCell ) {
00625 Incidence *incidence = mSelectedCell->selectedIncidence();
00626
if ( incidence ) selected.append( incidence );
00627 }
00628
00629
return selected;
00630 }
00631
00632 DateList KOMonthView::selectedDates()
00633 {
00634 DateList selected;
00635
00636
if ( mSelectedCell ) {
00637 QDate qd = mSelectedCell->selectedIncidenceDate();
00638
if ( qd.isValid() ) selected.append( qd );
00639 }
00640
00641
return selected;
00642 }
00643
00644
void KOMonthView::printPreview(
CalPrinter *calPrinter,
const QDate &fd,
00645
const QDate &td)
00646 {
00647
#ifndef KORG_NOPRINTER
00648
calPrinter->
preview(CalPrinter::Month, fd, td);
00649
#endif
00650
}
00651
00652
void KOMonthView::updateConfig()
00653 {
00654 mWeekStartDay = KGlobal::locale()->weekStartDay();
00655
00656 QFontMetrics fontmetric(mDayLabels[0]->font());
00657 mWidthLongDayLabel = 0;
00658
00659
for (
int i = 0; i < 7; i++) {
00660
int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
00661
if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
00662 }
00663
00664 updateDayLabels();
00665
00666
for (uint i = 0; i < mCells.count(); ++i) {
00667 mCells[i]->updateConfig();
00668 }
00669 }
00670
00671
void KOMonthView::updateDayLabels()
00672 {
00673 kdDebug(5850) <<
"KOMonthView::updateDayLabels()" << endl;
00674
00675
const KCalendarSystem*calsys=KOGlobals::self()->calendarSystem();
00676
int currDay;
00677
for (
int i = 0; i < 7; i++) {
00678 currDay = i+mWeekStartDay;
00679
if (currDay>7) currDay-=7;
00680 mDayLabels[i]->setText(calsys->weekDayName(currDay, mShortDayLabels) );
00681 }
00682 }
00683
00684
void KOMonthView::showDates(
const QDate &start,
const QDate &)
00685 {
00686
00687
00688 mStartDate = start;
00689
00690
00691
int weekdayCol=(mStartDate.dayOfWeek()+7-mWeekStartDay)%7;
00692 mStartDate = mStartDate.addDays(-weekdayCol);
00693
00694
bool primary =
false;
00695 uint i;
00696
for( i = 0; i < mCells.size(); ++i ) {
00697 QDate date = mStartDate.addDays( i );
00698
if ( KOGlobals::self()->calendarSystem()->day(date) == 1 ) {
00699 primary = !primary;
00700 }
00701 mCells[i]->setPrimary( primary );
00702
00703
if ( KOGlobals::self()->calendarSystem()->dayOfWeek(date) == KOGlobals::self()->calendarSystem()->weekDayOfPray() ) {
00704 mCells[i]->setHoliday(
true );
00705 }
else {
00706 mCells[i]->setHoliday(
false );
00707 }
00708
00709
#ifndef KORG_NOPLUGINS
00710
00711 QString hstring(KOCore::self()->holiday(date));
00712 mCells[i]->setHoliday( hstring );
00713
#endif
00714
00715 mCells[i]->setDate( date );
00716 }
00717
00718
updateView();
00719 }
00720
00721
void KOMonthView::showEvents(
const Event::List & )
00722 {
00723 kdDebug(5850) <<
"KOMonthView::selectEvents is not implemented yet." << endl;
00724 }
00725
00726
void KOMonthView::changeEventDisplay(Event *,
int)
00727 {
00728
00729
00730
updateView();
00731 }
00732
00733
void KOMonthView::updateView()
00734 {
00735 uint i;
00736
for( i = 0; i < mCells.count(); ++i ) {
00737 mCells[i]->updateCell();
00738 }
00739
00740 processSelectionChange();
00741 }
00742
00743
void KOMonthView::resizeEvent(QResizeEvent *)
00744 {
00745
00746
00747
00748
00749
if( mDayLabels[0]->width() < mWidthLongDayLabel ) {
00750
if ( !mShortDayLabels ) {
00751 mShortDayLabels =
true;
00752 updateDayLabels();
00753 }
00754 }
else {
00755
if ( mShortDayLabels ) {
00756 mShortDayLabels =
false;
00757 updateDayLabels();
00758 }
00759 }
00760 }
00761
00762
void KOMonthView::showEventContextMenu( Incidence *incidence )
00763 {
00764 mEventContextMenu->showIncidencePopup(incidence);
00765
00766
00767
00768
00769
00770
00771
00772
00773 }
00774
00775
void KOMonthView::showGeneralContextMenu()
00776 {
00777 QPopupMenu *menu =
newEventPopup();
00778
00779
if ( menu )
00780 menu->popup( QCursor::pos() );
00781 }
00782
00783
void KOMonthView::setSelectedCell( MonthViewCell *cell )
00784 {
00785
if ( cell == mSelectedCell )
return;
00786
00787
if ( mSelectedCell ) mSelectedCell->deselect();
00788
00789 mSelectedCell = cell;
00790
00791
if ( !mSelectedCell )
00792 emit incidenceSelected( 0 );
00793
else
00794 emit incidenceSelected( mSelectedCell->selectedIncidence() );
00795 }
00796
00797
void KOMonthView::processSelectionChange()
00798 {
00799 Incidence::List incidences =
selectedIncidences();
00800
if (incidences.count() > 0) {
00801 emit incidenceSelected( incidences.first() );
00802 }
else {
00803 emit incidenceSelected( 0 );
00804 }
00805 }
00806
00807
void KOMonthView::clearSelection()
00808 {
00809
if ( mSelectedCell ) {
00810 mSelectedCell->deselect();
00811 mSelectedCell = 0;
00812 }
00813 }