author | zautrix <zautrix> | 2005-03-22 12:05:42 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-22 12:05:42 (UTC) |
commit | 345c70e057e730850493689185b5c358607566f9 (patch) (side-by-side diff) | |
tree | 5081ceed28a61012c1c4d2c7200205fdbedc6435 /korganizer/datenavigatorcontainer.cpp | |
parent | dfd7d8d53c7ab916dee820c2371195a5dce134a4 (diff) | |
download | kdepimpi-345c70e057e730850493689185b5c358607566f9.zip kdepimpi-345c70e057e730850493689185b5c358607566f9.tar.gz kdepimpi-345c70e057e730850493689185b5c358607566f9.tar.bz2 |
more layout fixes
Diffstat (limited to 'korganizer/datenavigatorcontainer.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | korganizer/datenavigatorcontainer.cpp | 71 |
1 files changed, 57 insertions, 14 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp index 18756f0..bb27bce 100644 --- a/korganizer/datenavigatorcontainer.cpp +++ b/korganizer/datenavigatorcontainer.cpp @@ -45,8 +45,10 @@ DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, mNavigatorView = new KDateNavigator( this, name ); connectNavigatorView( mNavigatorView ); //setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); + mDisplayedEndDate = QDate::currentDate(); + mLastDisplayedDN = 0; } DateNavigatorContainer::~DateNavigatorContainer() { @@ -79,19 +81,19 @@ void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) void DateNavigatorContainer::setCalendar( Calendar *cal ) { mCalendar = cal; mNavigatorView->setCalendar( cal ); - KDateNavigator *n; - for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); n->setCalendar( cal ); } } void DateNavigatorContainer::updateDayMatrix() { mNavigatorView->updateDayMatrix(); - KDateNavigator *n; - for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); n->updateDayMatrix(); } } @@ -109,32 +111,68 @@ void DateNavigatorContainer::updateToday() void DateNavigatorContainer::updateView() { mNavigatorView->updateView(); - KDateNavigator *n; - for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); n->updateView(); } } void DateNavigatorContainer::updateConfig() { mNavigatorView->updateConfig(); - KDateNavigator *n; - for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); n->updateConfig(); } } void DateNavigatorContainer::selectDates( const DateList &dateList ) { + if ( !mLastDisplayedDN ) { + mNavigatorView->selectDates( dateList ); + return; + } + QDate fDate = dateList.first(); + QDate lDate = dateList.last(); + if ( mLastDisplayedDN <= 2 ) { + mNavigatorView->selectDates( dateList ); + KDateNavigator *view = mExtraViews.at( 0 ); + QDate bDate = fDate.addDays( fDate.daysInMonth () - fDate.day() +1 ); + view->setBaseDate( bDate, false ); + view->dayMatrix()->setSelectedDaysFrom(fDate , lDate); + if ( mLastDisplayedDN == 2 ) { + view = mExtraViews.at( 1 ); + bDate = bDate.addDays( bDate.daysInMonth () - bDate.day() +1 ); + view->setBaseDate( bDate, false ); + view->dayMatrix()->setSelectedDaysFrom(fDate , lDate); + } + return; + } + 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; + } mNavigatorView->selectDates( dateList ); setBaseDates(); - if ( mExtraViews.count() ) { + if ( mLastDisplayedDN ) { KDateNavigator *view = mExtraViews.at( 0 ); view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); view->dayMatrix()->repaint( false ); - if ( mExtraViews.count() > 1 ) { + if ( mLastDisplayedDN > 1 ) { KDateNavigator *view = mExtraViews.at( 1 ); view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); view->dayMatrix()->repaint( false ); } @@ -147,11 +185,11 @@ void DateNavigatorContainer::setBaseDates() if ( dateList.isEmpty() ) { kdError() << "DateNavigatorContainer::selectDates() empty list." << endl; } QDate baseDate = dateList.first(); - KDateNavigator *n; bool doRepaint = false; // skip first repaint - for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { + for( uint i = 0; i < mLastDisplayedDN; ++i ) { + KDateNavigator *n = mExtraViews.at( i ); baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 ); n->setBaseDate( baseDate, doRepaint ); doRepaint = true; } @@ -210,14 +248,16 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) mNavigatorView->unsetFontChanged(); } } + mLastDisplayedDN = horizontalCount*verticalCount-1; + bool setBaseD = false; while ( count > ( mExtraViews.count() + 1 ) ) { KDateNavigator *n = new KDateNavigator( this ); n->setMonthSignalOffset ( mExtraViews.count()+1 ); mExtraViews.append( n ); n->setCalendar( mCalendar ); - setBaseDates(); + setBaseD = true; connectNavigatorView( n ); n->show(); } int iii = 0; @@ -227,8 +267,10 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) else mExtraViews.at( iii )->hide(); ++iii; } + if ( setBaseD ) + setBaseDates(); if ( fontchange ) { //mNavigatorView->changeFont( fo ); uint i; for( i = 0; i < mExtraViews.count(); ++i ) { @@ -237,8 +279,9 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) } } mHorizontalCount = horizontalCount; mVerticalCount = verticalCount; + } //qDebug("COUNT %d ", mExtraViews.count()); int height = size().height() / verticalCount; int width = size().width() / horizontalCount; @@ -248,9 +291,9 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) else bar->showButtons( true, true ); mNavigatorView->setGeometry(0, 0, width, height ); - for( uint i = 0; i < mExtraViews.count(); ++i ) { + for( uint i = 0; i < mLastDisplayedDN; ++i ) { int x = ( i + 1 ) % horizontalCount; int y = ( i + 1 ) / horizontalCount; KDateNavigator *view = mExtraViews.at( i ); |