author | zautrix <zautrix> | 2005-03-22 14:37:47 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-22 14:37:47 (UTC) |
commit | 03b3e902ed6362d8f72d0acfc5a9be9d9ee1ef21 (patch) (side-by-side diff) | |
tree | 0c3f06e4a3c73acebd8b9f80271010ee5b8d26e1 | |
parent | 345c70e057e730850493689185b5c358607566f9 (diff) | |
download | kdepimpi-03b3e902ed6362d8f72d0acfc5a9be9d9ee1ef21.zip kdepimpi-03b3e902ed6362d8f72d0acfc5a9be9d9ee1ef21.tar.gz kdepimpi-03b3e902ed6362d8f72d0acfc5a9be9d9ee1ef21.tar.bz2 |
more layout fixes
-rw-r--r-- | korganizer/datenavigatorcontainer.cpp | 114 | ||||
-rw-r--r-- | korganizer/datenavigatorcontainer.h | 7 | ||||
-rw-r--r-- | korganizer/kdatenavigator.cpp | 1 |
3 files changed, 98 insertions, 24 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp index bb27bce..6de7c45 100644 --- a/korganizer/datenavigatorcontainer.cpp +++ b/korganizer/datenavigatorcontainer.cpp @@ -48,3 +48,2 @@ DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, //setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); - mDisplayedEndDate = QDate::currentDate(); mLastDisplayedDN = 0; @@ -77,5 +76,54 @@ void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) - connect( v, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) ); + connect( v, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) ); } +void DateNavigatorContainer::slotMonthSelected( int month ) +{ + //qDebug("slotMonthSelected %d ", month); + QDate baseDate = mNavigatorView->baseDate(); + if ( baseDate.month() == month ) + return; + //qDebug("month %d %d ",baseDate.month(),month); + QDate date = QDate ( baseDate.year(), baseDate.month() , 15 ); + date = date.addDays( -(baseDate.month()-month ) *30 ); + QDate newBase = QDate ( date.year(), date.month() , baseDate.day() ); + +#if 0 + mFirstSelectedDate = dateList.first() ; + mSelectedDateCount = dateList.count() ; + + KDateNavigator *view = mExtraViews.at( 0 ); + QDate date = view->baseDate(); + + QDate curEnd = date.addDays( (mLastDisplayedDN)*30 +7); + //qDebug("End %s %s ",lDate.toString().latin1(),curEnd.toString().latin1() ); + if ( lDate < curEnd && date.addDays( -30 ) < fDate) { + mNavigatorView->dayMatrix()->setSelectedDaysFrom( fDate , lDate ); + mNavigatorView->dayMatrix()->repaint( false ); + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); + if ( n->dayMatrix()->setSelectedDaysFrom( fDate , lDate ) ) { + n->dayMatrix()->repaint( false ); + } + } + return; + } +#endif + //qDebug("NEW BASE %s", newBase.toString().latin1()); + mNavigatorView->setBaseDate( newBase ); + QDate last = lastAvailableDate(); + QDate first = firstAvailableDate(); + + QDate selFirst = mFirstSelectedDate; + QDate selLast = selFirst.addDays( mSelectedDateCount-1 ); + if ( selFirst >= first && selLast <= last ) { + setBaseDates(); + updateDayMatrixDates(); + } + else { + setBaseDates(); + updateDayMatrixDates(); + emit monthSelected( month ); + } +} void DateNavigatorContainer::setCalendar( Calendar *cal ) @@ -89,2 +137,16 @@ void DateNavigatorContainer::setCalendar( Calendar *cal ) } +void DateNavigatorContainer::updateDayMatrixDates() +{ + + QDate fDate = mFirstSelectedDate; + QDate lDate = fDate.addDays( mSelectedDateCount - 1 ); + mNavigatorView->dayMatrix()->setSelectedDaysFrom( fDate , lDate ); + mNavigatorView->dayMatrix()->repaint( false ); + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); + if ( n->dayMatrix()->setSelectedDaysFrom( fDate , lDate ) ) { + n->dayMatrix()->repaint( false ); + } + } +} @@ -128,5 +190,26 @@ void DateNavigatorContainer::updateConfig() } - +QDate DateNavigatorContainer::lastAvailableDate() const +{ + QDate date = mNavigatorView->baseDate(); + QDate last = QDate ( date.year(), date.month(), date.daysInMonth() ); + int iii = mLastDisplayedDN; + if ( mLastDisplayedDN ) + last = last.addDays( 1); + while ( iii ) { + last = last.addDays( last.daysInMonth ()); + //qDebug("DATE %s ", last.toString().latin1() ); + --iii; + } + if ( mLastDisplayedDN ) + last = last.addDays( -1); + return last; +} +QDate DateNavigatorContainer::firstAvailableDate() const +{ + return QDate ( mNavigatorView->baseDate().year(), mNavigatorView->baseDate().month(), 1 ); +} void DateNavigatorContainer::selectDates( const DateList &dateList ) { + mFirstSelectedDate = dateList.first() ; + mSelectedDateCount = dateList.count() ; if ( !mLastDisplayedDN ) { @@ -151,16 +234,6 @@ void DateNavigatorContainer::selectDates( const DateList &dateList ) } - KDateNavigator *view = mExtraViews.at( 0 ); - QDate date = view->baseDate(); - - QDate curEnd = date.addDays( (mLastDisplayedDN)*30 +7); + //qDebug("%s %s ", lastAvailableDate().toString().latin1(), firstAvailableDate().toString().latin1() ); //qDebug("End %s %s ",lDate.toString().latin1(),curEnd.toString().latin1() ); - if ( lDate < curEnd && date.addDays( -30 ) < fDate) { - mNavigatorView->dayMatrix()->setSelectedDaysFrom( fDate , lDate ); - mNavigatorView->dayMatrix()->repaint( false ); - for( uint i = 0; i < mLastDisplayedDN; ++i ) { - KDateNavigator *n = mExtraViews.at( i ); - if ( n->dayMatrix()->setSelectedDaysFrom( fDate , lDate ) ) { - n->dayMatrix()->repaint( false ); - } - } + if ( lDate <= lastAvailableDate() && firstAvailableDate() <= fDate) { + updateDayMatrixDates(); return; @@ -183,8 +256,4 @@ void DateNavigatorContainer::setBaseDates() { - KCal::DateList dateList = mNavigatorView->selectedDates(); - if ( dateList.isEmpty() ) { - kdError() << "DateNavigatorContainer::selectDates() empty list." << endl; - } - QDate baseDate = dateList.first(); - bool doRepaint = false; // skip first repaint + QDate baseDate = mNavigatorView->baseDate(); + bool doRepaint = true; for( uint i = 0; i < mLastDisplayedDN; ++i ) { @@ -193,3 +262,2 @@ void DateNavigatorContainer::setBaseDates() n->setBaseDate( baseDate, doRepaint ); - doRepaint = true; } diff --git a/korganizer/datenavigatorcontainer.h b/korganizer/datenavigatorcontainer.h index f45af20..d5e5adf 100644 --- a/korganizer/datenavigatorcontainer.h +++ b/korganizer/datenavigatorcontainer.h @@ -48,2 +48,4 @@ class DateNavigatorContainer: public QWidget KDateNavigator * navigatorView() { return mNavigatorView;} + QDate lastAvailableDate() const ; + QDate firstAvailableDate() const ; @@ -54,3 +56,5 @@ class DateNavigatorContainer: public QWidget void updateDayMatrix(); + void updateDayMatrixDates(); void updateToday(); + void slotMonthSelected( int month ); @@ -80,3 +84,4 @@ class DateNavigatorContainer: public QWidget int mLastDisplayedDN; - QDate mDisplayedEndDate; + QDate mFirstSelectedDate; + int mSelectedDateCount; KDateNavigator *mNavigatorView; diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp index 231095f..83a57ca 100644 --- a/korganizer/kdatenavigator.cpp +++ b/korganizer/kdatenavigator.cpp @@ -192,2 +192,3 @@ void KDateNavigator::setBaseDate( const QDate &date , bool doRepaint ) // = true m_MthYr = date; + //qDebug("KDateNavigator::setBaseDate %s ", date.toString().latin1()); |