-rw-r--r-- | korganizer/komonthview.cpp | 855 | ||||
-rw-r--r-- | korganizer/komonthview.h | 2 | ||||
-rw-r--r-- | korganizer/koviewmanager.cpp | 4 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 2 |
4 files changed, 447 insertions, 416 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 437debe..10e4f1d 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -1,21 +1,21 @@ /* - This file is part of KOrganizer. - Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + This file is part of KOrganizer. + Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <qpopupmenu.h> #include <qfont.h> @@ -54,21 +54,21 @@ #include "komonthview.h" #define PIXMAP_SIZE 5 #ifdef DESKTOP_VERSION - QToolTipGroup *MonthViewCell::mToolTipGroup = 0; +QToolTipGroup *MonthViewCell::mToolTipGroup = 0; #endif class KNOWhatsThis :public QWhatsThis { public: KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { }; //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); }; protected: - virtual QString text( const QPoint& p) - { - return _wid->getWhatsThisText(p) ; - }; + virtual QString text( const QPoint& p) + { + return _wid->getWhatsThisText(p) ; + }; private: KNoScrollListBox* _wid; }; @@ -96,233 +96,239 @@ QString KNoScrollListBox::getWhatsThisText(QPoint p) } void KNoScrollListBox::keyPressEvent(QKeyEvent *e) { - switch(e->key()) { + switch(e->key()) { case Key_Right: // if ( e->state() == Qt::ControlButton ) { e->ignore(); return; } scrollBy(4,0); - break; + break; case Key_Left: // if ( e->state() == Qt::ControlButton ) - { + { e->ignore(); return; } - scrollBy(-4,0); - break; + scrollBy(-4,0); + break; case Key_Up: - if(!count()) break; - setCurrentItem((currentItem()+count()-1)%count()); - if(!itemVisible(currentItem())) { - if((unsigned int) currentItem() == (count()-1)) { - setTopItem(currentItem()-numItemsVisible()+1); - } else { - setTopItem(topItem()-1); + if(count() < 2) { + e->ignore(); + break; } - } - break; + setCurrentItem((currentItem()+count()-1)%count()); + if(!itemVisible(currentItem())) { + if((unsigned int) currentItem() == (count()-1)) { + setTopItem(currentItem()-numItemsVisible()+1); + } else { + setTopItem(topItem()-1); + } + } + break; case Key_Down: - if(!count()) break; - setCurrentItem((currentItem()+1)%count()); - if(!itemVisible(currentItem())) { - if(currentItem() == 0) { - setTopItem(0); - } else { - setTopItem(topItem()+1); + if(count() < 2) { + e->ignore(); + break; } - } - break; + setCurrentItem((currentItem()+1)%count()); + if(!itemVisible(currentItem())) { + if(currentItem() == 0) { + setTopItem(0); + } else { + setTopItem(topItem()+1); + } + } + break; case Key_Shift: - emit shiftDown(); - break; + emit shiftDown(); + break; default: e->ignore(); - break; - } + break; + } } void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) { - switch(e->key()) { + switch(e->key()) { case Key_Shift: - emit shiftUp(); - break; + emit shiftUp(); + break; default: - break; - } + break; + } } void KNoScrollListBox::mousePressEvent(QMouseEvent *e) { - QListBox::mousePressEvent(e); + QListBox::mousePressEvent(e); - if(e->button() == RightButton) { - emit rightClick(); - } + if(e->button() == RightButton) { + emit rightClick(); + } } MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) - : QListBoxItem() + : QListBoxItem() { - setText( s ); - - mIncidence = incidence; - mDate = qd; - // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); - mRecur = false; - mAlarm = false; - mReply = false; - mInfo = false; + setText( s ); + + mIncidence = incidence; + mDate = qd; + // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); + mRecur = false; + mAlarm = false; + mReply = false; + mInfo = false; } void MonthViewItem::paint(QPainter *p) { #if QT_VERSION >= 0x030000 - bool sel = isSelected(); + bool sel = isSelected(); #else - bool sel = selected(); + bool sel = selected(); #endif - if (KOPrefs::instance()->mMonthViewUsesCategoryColor) - { - p->setBackgroundColor( palette().color( QPalette::Normal, \ - sel ? QColorGroup::Highlight : QColorGroup::Background ) ); - p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); - } - int x = 1; - int y = 3;//(height() - mRecurPixmap.height()) /2; - int size = PIXMAP_SIZE; - if ( QApplication::desktop()->width() < 300 ) - size = 3; - if ( KOPrefs::instance()->mMonthShowIcons ) { - if ( mInfo ) { - p->fillRect ( x, y,size,size, Qt::darkGreen ); - x += size + 1; - } - if ( mRecur ) { - p->fillRect ( x, y,size,size, Qt::blue ); - x += size + 1; - } - if ( mAlarm ) { - p->fillRect ( x, y,size,size, Qt::red ); - x += size + 1; - } - if ( mReply ) { - p->fillRect ( x, y,size,size, Qt::yellow ); - x += size + 1; - } - } - QFontMetrics fm = p->fontMetrics(); - int yPos; - int pmheight = size; - if( pmheight < fm.height() ) - yPos = fm.ascent() + fm.leading()/2; - else - yPos = pmheight/2 - fm.height()/2 + fm.ascent(); - p->setPen( palette().color( QPalette::Normal, sel ? \ - QColorGroup::HighlightedText : QColorGroup::Foreground ) ); - p->drawText( x, yPos, text() ); - if ( mIncidence->cancelled() ) { - int wid = fm.width( text() ); - p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2); - } + if (KOPrefs::instance()->mMonthViewUsesCategoryColor) + { + p->setBackgroundColor( palette().color( QPalette::Normal, \ + sel ? QColorGroup::Highlight : QColorGroup::Background ) ); + p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); + } + int x = 1; + int y = 3;//(height() - mRecurPixmap.height()) /2; + int size = PIXMAP_SIZE; + if ( QApplication::desktop()->width() < 300 ) + size = 3; + if ( KOPrefs::instance()->mMonthShowIcons ) { + if ( mInfo ) { + p->fillRect ( x, y,size,size, Qt::darkGreen ); + x += size + 1; + } + if ( mRecur ) { + p->fillRect ( x, y,size,size, Qt::blue ); + x += size + 1; + } + if ( mAlarm ) { + p->fillRect ( x, y,size,size, Qt::red ); + x += size + 1; + } + if ( mReply ) { + p->fillRect ( x, y,size,size, Qt::yellow ); + x += size + 1; + } + } + QFontMetrics fm = p->fontMetrics(); + int yPos; + int pmheight = size; + if( pmheight < fm.height() ) + yPos = fm.ascent() + fm.leading()/2; + else + yPos = pmheight/2 - fm.height()/2 + fm.ascent(); + p->setPen( palette().color( QPalette::Normal, sel ? \ + QColorGroup::HighlightedText : QColorGroup::Foreground ) ); + p->drawText( x, yPos, text() ); + if ( mIncidence->cancelled() ) { + int wid = fm.width( text() ); + p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2); + } } int MonthViewItem::height(const QListBox *lb) const { - return lb->fontMetrics().lineSpacing()+1; + return lb->fontMetrics().lineSpacing()+1; } int MonthViewItem::width(const QListBox *lb) const { int size = PIXMAP_SIZE; - if ( QApplication::desktop()->width() < 300 ) - size = 3; - int x = 1; - if ( mInfo ) { - x += size + 1; - } - if( mRecur ) { - x += size+1; - } - if( mAlarm ) { - x += size+1; - } - if( mReply ) { - x += size+1; - } - - return( x + lb->fontMetrics().width( text() ) + 1 ); + if ( QApplication::desktop()->width() < 300 ) + size = 3; + int x = 1; + if ( mInfo ) { + x += size + 1; + } + if( mRecur ) { + x += size+1; + } + if( mAlarm ) { + x += size+1; + } + if( mReply ) { + x += size+1; + } + + return( x + lb->fontMetrics().width( text() ) + 1 ); } MonthViewCell::MonthViewCell( KOMonthView *parent) - : QWidget( parent ), - mMonthView( parent ) + : QWidget( parent ), + mMonthView( parent ) { - QVBoxLayout *topLayout = new QVBoxLayout( this ); - - // mLabel = new QLabel( this );QPushButton - mLabel = new QPushButton( this ); - //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); - //mLabel->setLineWidth( 1 ); - //mLabel->setAlignment( AlignCenter ); - mLabel->setFlat( true ); - mItemList = new KNoScrollListBox( this ); - mItemList->setMinimumSize( 10, 10 ); - mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); - mItemList->setLineWidth( 1 ); - topLayout->addWidget( mItemList ); - mLabel->raise(); - // QColor( 0,0,255 ) QColor( 160,1600,255 ) - mStandardPalette = palette(); - mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); - - enableScrollBars( false ); - updateConfig(); - //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); - connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); - connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), - SLOT( defaultAction( QListBoxItem * ) ) ); - connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, - const QPoint &) ), - SLOT( contextMenu( QListBoxItem * ) ) ); - connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), - SLOT( selection( QListBoxItem * ) ) ); - connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), - SLOT( cellClicked( QListBoxItem * ) ) ); - connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), - SLOT( selection( QListBoxItem * ) ) ); + QVBoxLayout *topLayout = new QVBoxLayout( this ); + + // mLabel = new QLabel( this );QPushButton + mLabel = new QPushButton( this ); + //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); + //mLabel->setLineWidth( 1 ); + //mLabel->setAlignment( AlignCenter ); + mLabel->setFlat( true ); + mItemList = new KNoScrollListBox( this ); + mItemList->setMinimumSize( 10, 10 ); + mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); + mItemList->setLineWidth( 1 ); + topLayout->addWidget( mItemList ); + mLabel->raise(); + // QColor( 0,0,255 ) QColor( 160,1600,255 ) + mStandardPalette = palette(); + mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); + + enableScrollBars( false ); + updateConfig(); + //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); + connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); + connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), + SLOT( defaultAction( QListBoxItem * ) ) ); + connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, + const QPoint &) ), + SLOT( contextMenu( QListBoxItem * ) ) ); + connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), + SLOT( selection( QListBoxItem * ) ) ); + connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), + SLOT( cellClicked( QListBoxItem * ) ) ); + connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), + SLOT( selection( QListBoxItem * ) ) ); } #ifdef DESKTOP_VERSION QToolTipGroup *MonthViewCell::toolTipGroup() { - if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); - return mToolTipGroup; + if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); + return mToolTipGroup; } #endif void MonthViewCell::setDate( const QDate &date ) { -// kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; - mDate = date; + // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; + mDate = date; - //resizeEvent( 0 ); + //resizeEvent( 0 ); } QDate MonthViewCell::date() const { - return mDate; + return mDate; } void MonthViewCell::setPrimary( bool primary ) { @@ -359,29 +365,29 @@ QPalette MonthViewCell::getPalette () return mNonPrimaryPalette; } bool MonthViewCell::isPrimary() const { - return mPrimary; + return mPrimary; } void MonthViewCell::setHoliday( bool holiday ) { - mHoliday = holiday; - //setMyPalette(); + mHoliday = holiday; + //setMyPalette(); } void MonthViewCell::setHoliday( const QString &holiday ) { - mHolidayString = holiday; + mHolidayString = holiday; - if ( !holiday.isEmpty() ) { - setHoliday( true ); - } + if ( !holiday.isEmpty() ) { + setHoliday( true ); + } } void MonthViewCell::keyPressEvent ( QKeyEvent * e ) { - e->ignore(); + e->ignore(); } void MonthViewCell::clear() { @@ -395,18 +401,18 @@ void MonthViewCell::updateCell() if ( !mMonthView->isUpdatePossible() ) return; /* if ( !isVisible() ){ - return; - } + return; + } */ // qDebug("MonthViewCell::updateCell() "); setPrimary( mDate.month()%2 ); setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); if ( mDate == QDate::currentDate() ) { mItemList->setLineWidth( 3 ); } else { - mItemList->setLineWidth( 1 ); + mItemList->setLineWidth( 1 ); } mItemList->clear(); #ifdef DESKTOP_VERSION @@ -584,73 +590,73 @@ void MonthViewCell::updateCell() void MonthViewCell::updateConfig() { - setFont( KOPrefs::instance()->mMonthViewFont ); - - QFontMetrics fm( font() ); - mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); - mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); - mHolidayPalette = mStandardPalette; - mPrimaryPalette = mStandardPalette; - mNonPrimaryPalette = mStandardPalette; - if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { - mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); - mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); - mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); - mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); - mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); - mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); - mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); - mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); - mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); - } - updateCell(); + setFont( KOPrefs::instance()->mMonthViewFont ); + + QFontMetrics fm( font() ); + mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); + mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); + mHolidayPalette = mStandardPalette; + mPrimaryPalette = mStandardPalette; + mNonPrimaryPalette = mStandardPalette; + if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { + mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); + mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); + mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); + mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); + mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); + mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); + mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); + mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); + mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); + } + updateCell(); } void MonthViewCell::enableScrollBars( bool enabled ) { - if ( enabled ) { - mItemList->setVScrollBarMode(QScrollView::Auto); - mItemList->setHScrollBarMode(QScrollView::Auto); - } else { - mItemList->setVScrollBarMode(QScrollView::AlwaysOff); - mItemList->setHScrollBarMode(QScrollView::AlwaysOff); - } + if ( enabled ) { + mItemList->setVScrollBarMode(QScrollView::Auto); + mItemList->setHScrollBarMode(QScrollView::Auto); + } else { + mItemList->setVScrollBarMode(QScrollView::AlwaysOff); + mItemList->setHScrollBarMode(QScrollView::AlwaysOff); + } } Incidence *MonthViewCell::selectedIncidence() { - int index = mItemList->currentItem(); - if ( index < 0 ) return 0; + int index = mItemList->currentItem(); + if ( index < 0 ) return 0; - MonthViewItem *item = - static_cast<MonthViewItem *>( mItemList->item( index ) ); + MonthViewItem *item = + static_cast<MonthViewItem *>( mItemList->item( index ) ); - if ( !item ) return 0; + if ( !item ) return 0; - return item->incidence(); + return item->incidence(); } QDate MonthViewCell::selectedIncidenceDate() { - QDate qd; - int index = mItemList->currentItem(); - if ( index < 0 ) return qd; + QDate qd; + int index = mItemList->currentItem(); + if ( index < 0 ) return qd; - MonthViewItem *item = - static_cast<MonthViewItem *>( mItemList->item( index ) ); + MonthViewItem *item = + static_cast<MonthViewItem *>( mItemList->item( index ) ); - if ( !item ) return qd; + if ( !item ) return qd; - return item->incidenceDate(); + return item->incidenceDate(); } void MonthViewCell::deselect() { - mItemList->clearSelection(); - enableScrollBars( false ); - // updateCell(); + mItemList->clearSelection(); + enableScrollBars( false ); + // updateCell(); } void MonthViewCell::select() { ;// updateCell(); @@ -676,13 +682,13 @@ void MonthViewCell::resizeEvent ( QResizeEvent * ) } void MonthViewCell::defaultAction( QListBoxItem *item ) { - if ( !item ) return; + if ( !item ) return; - MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); - Incidence *incidence = eventItem->incidence(); - if ( incidence ) mMonthView->defaultAction( incidence ); + MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); + Incidence *incidence = eventItem->incidence(); + if ( incidence ) mMonthView->defaultAction( incidence ); } void MonthViewCell::showDay() { emit showDaySignal( date() ); @@ -699,35 +705,35 @@ void MonthViewCell::cellClicked( QListBoxItem *item ) QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); emit newEventSignal( dt ); return; } - /* - if ( lastClicked ) + /* + if ( lastClicked ) if ( ! item ) { - if ( lastClicked->listBox() != item->listBox() ) - lastClicked->listBox()->clearSelection(); + if ( lastClicked->listBox() != item->listBox() ) + lastClicked->listBox()->clearSelection(); } - */ + */ - mMonthView->setSelectedCell( this ); - if( KOPrefs::instance()->mEnableMonthScroll ) enableScrollBars( true ); - select(); + mMonthView->setSelectedCell( this ); + if( KOPrefs::instance()->mEnableMonthScroll ) enableScrollBars( true ); + select(); } void MonthViewCell::contextMenu( QListBoxItem *item ) { - if ( !item ) return; + if ( !item ) return; - MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); - Incidence *incidence = eventItem->incidence(); - if ( incidence ) mMonthView->showContextMenu( incidence ); + MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); + Incidence *incidence = eventItem->incidence(); + if ( incidence ) mMonthView->showContextMenu( incidence ); } void MonthViewCell::selection( QListBoxItem *item ) { - if ( !item ) return; + if ( !item ) return; - mMonthView->setSelectedCell( this ); + mMonthView->setSelectedCell( this ); } // ******************************************************************************* @@ -740,200 +746,200 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) { - updatePossible = false; - mCells.setAutoDelete( true ); - mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; - // mDayLayout = new QGridLayout( this ); - // create the day of the week labels (Sun, Mon, etc) and add them to - // the layout. - mDayLabels.resize( mDaysPerWeek ); - QFont bfont = font(); - if ( QApplication::desktop()->width() < 650 ) { - bfont.setPointSize( bfont.pointSize() - 2 ); - } - bfont.setBold( true ); - int i; + updatePossible = false; + mCells.setAutoDelete( true ); + mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; + // mDayLayout = new QGridLayout( this ); + // create the day of the week labels (Sun, Mon, etc) and add them to + // the layout. + mDayLabels.resize( mDaysPerWeek ); + QFont bfont = font(); + if ( QApplication::desktop()->width() < 650 ) { + bfont.setPointSize( bfont.pointSize() - 2 ); + } + bfont.setBold( true ); + int i; - for( i = 0; i < mDaysPerWeek; i++ ) { - QLabel *label = new QLabel( this ); - label->setFont(bfont); - label->setFrameStyle(QFrame::Panel|QFrame::Raised); - label->setLineWidth(1); - label->setAlignment(AlignCenter); - mDayLabels.insert( i, label ); - } - - bfont.setBold( false ); - mWeekLabels.resize( mNumWeeks+1 ); - for( i = 0; i < mNumWeeks+1; i++ ) { - KOWeekButton *label = new KOWeekButton( this ); - label->setFont(bfont); - connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) ); - label->setFlat(true); - QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view")); - //label->setFrameStyle(QFrame::Panel|QFrame::Raised); - //label->setLineWidth(1); - //label->setAlignment(AlignCenter); - mWeekLabels.insert( i, label ); - } - mWeekLabels[mNumWeeks]->setText( i18n("W")); - int row, col; - mCells.resize( mNumCells ); - for( row = 0; row < mNumWeeks; ++row ) { - for( col = 0; col < mDaysPerWeek; ++col ) { - MonthViewCell *cell = new MonthViewCell( this ); - mCells.insert( row * mDaysPerWeek + col, cell ); - - connect( cell, SIGNAL( defaultAction( Incidence * ) ), - SLOT( defaultAction( Incidence * ) ) ); - connect( cell, SIGNAL( newEventSignal( QDateTime ) ), - SIGNAL( newEventSignal( QDateTime ) ) ); - connect( cell, SIGNAL( showDaySignal( QDate ) ), - SIGNAL( showDaySignal( QDate ) ) ); + for( i = 0; i < mDaysPerWeek; i++ ) { + QLabel *label = new QLabel( this ); + label->setFont(bfont); + label->setFrameStyle(QFrame::Panel|QFrame::Raised); + label->setLineWidth(1); + label->setAlignment(AlignCenter); + mDayLabels.insert( i, label ); } - } - mContextMenu = eventPopup(); - // updateConfig(); //useless here + bfont.setBold( false ); + mWeekLabels.resize( mNumWeeks+1 ); + for( i = 0; i < mNumWeeks+1; i++ ) { + KOWeekButton *label = new KOWeekButton( this ); + label->setFont(bfont); + connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) ); + label->setFlat(true); + QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view")); + //label->setFrameStyle(QFrame::Panel|QFrame::Raised); + //label->setLineWidth(1); + //label->setAlignment(AlignCenter); + mWeekLabels.insert( i, label ); + } + mWeekLabels[mNumWeeks]->setText( i18n("W")); + int row, col; + mCells.resize( mNumCells ); + for( row = 0; row < mNumWeeks; ++row ) { + for( col = 0; col < mDaysPerWeek; ++col ) { + MonthViewCell *cell = new MonthViewCell( this ); + mCells.insert( row * mDaysPerWeek + col, cell ); + + connect( cell, SIGNAL( defaultAction( Incidence * ) ), + SLOT( defaultAction( Incidence * ) ) ); + connect( cell, SIGNAL( newEventSignal( QDateTime ) ), + SIGNAL( newEventSignal( QDateTime ) ) ); + connect( cell, SIGNAL( showDaySignal( QDate ) ), + SIGNAL( showDaySignal( QDate ) ) ); + } + } - emit incidenceSelected( 0 ); + mContextMenu = eventPopup(); + // updateConfig(); //useless here + + emit incidenceSelected( 0 ); } KOMonthView::~KOMonthView() { - delete mContextMenu; + delete mContextMenu; } int KOMonthView::maxDatesHint() { - return mNumCells; + return mNumCells; } int KOMonthView::currentDateCount() { - return mNumCells; + return mNumCells; } QPtrList<Incidence> KOMonthView::selectedIncidences() { - QPtrList<Incidence> selected; + QPtrList<Incidence> selected; - if ( mSelectedCell ) { - Incidence *incidence = mSelectedCell->selectedIncidence(); - if ( incidence ) selected.append( incidence ); - } + if ( mSelectedCell ) { + Incidence *incidence = mSelectedCell->selectedIncidence(); + if ( incidence ) selected.append( incidence ); + } - return selected; + return selected; } DateList KOMonthView::selectedDates() { - DateList selected; + DateList selected; - if ( mSelectedCell ) { - QDate qd = mSelectedCell->selectedIncidenceDate(); - if ( qd.isValid() ) selected.append( qd ); - } + if ( mSelectedCell ) { + QDate qd = mSelectedCell->selectedIncidenceDate(); + if ( qd.isValid() ) selected.append( qd ); + } - return selected; + return selected; } void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td) { #ifndef KORG_NOPRINTER - calPrinter->preview(CalPrinter::Month, fd, td); + calPrinter->preview(CalPrinter::Month, fd, td); #endif } void KOMonthView::updateConfig() { - mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); - - QFontMetrics fontmetric(mDayLabels[0]->font()); - mWidthLongDayLabel = 0; - - for (int i = 0; i < 7; i++) { - int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); - if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; - } - bool temp = mShowSatSunComp ; - mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; - if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) - computeLayout(); - updateDayLabels(); - //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); - int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; - //resizeEvent( 0 ); - for (uint i = 0; i < mCells.count(); ++i) { - mCells[i]->updateConfig(); - } + mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); + + QFontMetrics fontmetric(mDayLabels[0]->font()); + mWidthLongDayLabel = 0; + + for (int i = 0; i < 7; i++) { + int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); + if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; + } + bool temp = mShowSatSunComp ; + mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; + if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) + computeLayout(); + updateDayLabels(); + //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); + int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; + //resizeEvent( 0 ); + for (uint i = 0; i < mCells.count(); ++i) { + mCells[i]->updateConfig(); + } #ifdef DESKTOP_VERSION - MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); + MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); #endif } void KOMonthView::updateDayLabels() { - for (int i = 0; i < 7; i++) { - if (mWeekStartsMonday) { - bool show = mShortDayLabels; - if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() ) - show = true; - mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); - } else { - if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels)); - else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels)); + for (int i = 0; i < 7; i++) { + if (mWeekStartsMonday) { + bool show = mShortDayLabels; + if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() ) + show = true; + mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); + } else { + if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels)); + else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels)); + } } - } } void KOMonthView::showDates(const QDate &start, const QDate &) { -// kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; + // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; - mStartDate = start; + mStartDate = start; - int startWeekDay = mWeekStartsMonday ? 1 : 7; + int startWeekDay = mWeekStartsMonday ? 1 : 7; - while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { - mStartDate = mStartDate.addDays( -1 ); - } + while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { + mStartDate = mStartDate.addDays( -1 ); + } - bool primary = false; - uint i; - for( i = 0; i < mCells.size(); ++i ) { - QDate date = mStartDate.addDays( i ); - mCells[i]->setDate( date ); + bool primary = false; + uint i; + for( i = 0; i < mCells.size(); ++i ) { + QDate date = mStartDate.addDays( i ); + mCells[i]->setDate( date ); #ifndef KORG_NOPLUGINS - // add holiday, if present - QString hstring(KOCore::self()->holiday(date)); - mCells[i]->setHoliday( hstring ); + // add holiday, if present + QString hstring(KOCore::self()->holiday(date)); + mCells[i]->setHoliday( hstring ); #endif - } - QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); - for( i = 0; i < 6; ++i ) { - int wno; - // remember, according to ISO 8601, the first week of the year is the - // first week that contains a thursday. Thus we must subtract off 4, - // not just 1. - int dayOfYear = date.dayOfYear(); - if (dayOfYear % 7 != 0) - wno = dayOfYear / 7 + 1; - else - wno =dayOfYear / 7; - mWeekLabels[i]->setWeekNum( wno ); - date = date.addDays( 7 ); - } - updateView(); + } + QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); + for( i = 0; i < 6; ++i ) { + int wno; + // remember, according to ISO 8601, the first week of the year is the + // first week that contains a thursday. Thus we must subtract off 4, + // not just 1. + int dayOfYear = date.dayOfYear(); + if (dayOfYear % 7 != 0) + wno = dayOfYear / 7 + 1; + else + wno =dayOfYear / 7; + mWeekLabels[i]->setWeekNum( wno ); + date = date.addDays( 7 ); + } + updateView(); } void KOMonthView::showEvents(QPtrList<Event>) { @@ -941,38 +947,40 @@ void KOMonthView::showEvents(QPtrList<Event>) } void KOMonthView::changeEventDisplay(Event *, int) { - // this should be re-written to be much more efficient, but this - // quick-and-dirty-hack gets the job done for right now. - updateView(); + // this should be re-written to be much more efficient, but this + // quick-and-dirty-hack gets the job done for right now. + updateView(); } void KOMonthView::updateView() -{ +{ + if ( !updatePossible ) return; //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); int i; - for( i = 0; i < mCells.count(); ++i ) { - mCells[i]->updateCell(); - } + for( i = 0; i < mCells.count(); ++i ) { + mCells[i]->updateCell(); + } - //qDebug("KOMonthView::updateView() "); - processSelectionChange(); - // qDebug("---------------------------------------------------------------------+ "); + //qDebug("KOMonthView::updateView() "); + processSelectionChange(); + // qDebug("---------------------------------------------------------------------+ "); + setFocus(); } void KOMonthView::resizeEvent(QResizeEvent * e) { computeLayout(); } void KOMonthView::computeLayout() { - // select the appropriate heading string size. E.g. "Wednesday" or "Wed". - // note this only changes the text if the requested size crosses the - // threshold between big enough to support the full name and not big - // enough. + // select the appropriate heading string size. E.g. "Wednesday" or "Wed". + // note this only changes the text if the requested size crosses the + // threshold between big enough to support the full name and not big + // enough. int daysToShow = 7; bool combinedSatSun = false; if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { @@ -1072,17 +1080,17 @@ void KOMonthView::computeLayout() } void KOMonthView::showContextMenu( Incidence *incidence ) { - mContextMenu->showIncidencePopup(incidence); - /* - if( incidence && incidence->type() == "Event" ) { - Event *event = static_cast<Event *>(incidence); - mContextMenu->showEventPopup(event); - } else { - kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; - } - */ + mContextMenu->showIncidencePopup(incidence); + /* + if( incidence && incidence->type() == "Event" ) { + Event *event = static_cast<Event *>(incidence); + mContextMenu->showEventPopup(event); + } else { + kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; + } + */ } MonthViewCell * KOMonthView::selectedCell( ) { return mSelectedCell; @@ -1095,35 +1103,52 @@ void KOMonthView::setSelectedCell( MonthViewCell *cell ) mSelectedCell = cell; mvc->deselect(); } else mSelectedCell = cell; - // if ( mSelectedCell ) -// mSelectedCell->select(); - if ( !mSelectedCell ) - emit incidenceSelected( 0 ); - else - emit incidenceSelected( mSelectedCell->selectedIncidence() ); + // if ( mSelectedCell ) + // mSelectedCell->select(); + if ( !mSelectedCell ) + emit incidenceSelected( 0 ); + else + emit incidenceSelected( mSelectedCell->selectedIncidence() ); } void KOMonthView::processSelectionChange() { - QPtrList<Incidence> incidences = selectedIncidences(); - if (incidences.count() > 0) { - emit incidenceSelected( incidences.first() ); - } else { - emit incidenceSelected( 0 ); - } + QPtrList<Incidence> incidences = selectedIncidences(); + if (incidences.count() > 0) { + emit incidenceSelected( incidences.first() ); + } else { + emit incidenceSelected( 0 ); + } } void KOMonthView::clearSelection() { - if ( mSelectedCell ) { - mSelectedCell->deselect(); - mSelectedCell = 0; - } + if ( mSelectedCell ) { + mSelectedCell->deselect(); + mSelectedCell = 0; + } } void KOMonthView::keyPressEvent ( QKeyEvent * e ) { - - e->ignore(); - + switch(e->key()) { + break; + case Key_Up: + { + emit prevMonth(); + setFocus(); + } + e->accept(); + break; + case Key_Down: + { + emit nextMonth(); + setFocus(); + } + e->accept(); + break; + default: + e->ignore(); + break; + } } diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h index a965bf3..50903b3 100644 --- a/korganizer/komonthview.h +++ b/korganizer/komonthview.h @@ -236,8 +236,10 @@ class KOMonthView: public KOEventView protected slots: void processSelectionChange(); signals: + void nextMonth(); + void prevMonth(); void selectWeekNum ( int ); void showDaySignal( QDate ); protected: void resizeEvent(QResizeEvent *); diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp index 94c459b..e8d5ab1 100644 --- a/korganizer/koviewmanager.cpp +++ b/korganizer/koviewmanager.cpp @@ -456,8 +456,12 @@ void KOViewManager::showMonthView() mMainView, SLOT ( selectWeekNum( int ) ) ); connect( mMonthView, SIGNAL( showDaySignal( QDate ) ), mMainView, SLOT ( showDay( QDate ) ) ); connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig())); + connect( mMonthView, SIGNAL(nextMonth() ), + mMainView->navigatorBar(), SIGNAL(goNextMonth() ) ); + connect( mMonthView, SIGNAL(prevMonth() ), + mMainView->navigatorBar(), SIGNAL(goPrevMonth() ) ); mMonthView->updateConfig(); } globalFlagBlockAgenda = 1; diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 145b36c..950d2ec 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -1735,9 +1735,9 @@ void MainWindow::showConfigureAgenda( ) int iii; for ( iii = 1;iii<= 10 ;++iii ){ configureAgendaMenu->setItemChecked( (iii+1)*2, false ); } - configureAgendaMenu->setItemChecked( KOPrefs::instance()->mHourSize, true ); + configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true ); } void MainWindow::configureAgenda( int item ) { if ( KOPrefs::instance()->mHourSize == item ) |