summaryrefslogtreecommitdiffabout
path: root/korganizer/datenavigatorcontainer.cpp
authorzautrix <zautrix>2005-03-22 12:05:42 (UTC)
committer zautrix <zautrix>2005-03-22 12:05:42 (UTC)
commit345c70e057e730850493689185b5c358607566f9 (patch) (side-by-side diff)
tree5081ceed28a61012c1c4d2c7200205fdbedc6435 /korganizer/datenavigatorcontainer.cpp
parentdfd7d8d53c7ab916dee820c2371195a5dce134a4 (diff)
downloadkdepimpi-345c70e057e730850493689185b5c358607566f9.zip
kdepimpi-345c70e057e730850493689185b5c358607566f9.tar.gz
kdepimpi-345c70e057e730850493689185b5c358607566f9.tar.bz2
more layout fixes
Diffstat (limited to 'korganizer/datenavigatorcontainer.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/datenavigatorcontainer.cpp83
1 files changed, 63 insertions, 20 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp
index 18756f0..bb27bce 100644
--- a/korganizer/datenavigatorcontainer.cpp
+++ b/korganizer/datenavigatorcontainer.cpp
@@ -46,6 +46,8 @@ DateNavigatorContainer::DateNavigatorContainer( QWidget *parent,
connectNavigatorView( mNavigatorView );
//setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) );
+ mDisplayedEndDate = QDate::currentDate();
+ mLastDisplayedDN = 0;
}
DateNavigatorContainer::~DateNavigatorContainer()
@@ -80,18 +82,18 @@ void DateNavigatorContainer::setCalendar( Calendar *cal )
{
mCalendar = cal;
mNavigatorView->setCalendar( cal );
- KDateNavigator *n;
- for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
- n->setCalendar( cal );
+ 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() ) {
- n->updateDayMatrix();
+ for( uint i = 0; i < mLastDisplayedDN; ++i ) {
+ KDateNavigator *n = mExtraViews.at( i );
+ n->updateDayMatrix();
}
}
@@ -110,30 +112,66 @@ void DateNavigatorContainer::updateToday()
void DateNavigatorContainer::updateView()
{
mNavigatorView->updateView();
- KDateNavigator *n;
- for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
- n->updateView();
+ 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() ) {
- n->updateConfig();
+ for( uint i = 0; i < mLastDisplayedDN; ++i ) {
+ KDateNavigator *n = mExtraViews.at( i );
+ n->updateConfig();
}
}
void DateNavigatorContainer::selectDates( const DateList &dateList )
{
- mNavigatorView->selectDates( dateList );
- setBaseDates();
- if ( mExtraViews.count() ) {
+ 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 ( 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 );
@@ -148,9 +186,9 @@ void DateNavigatorContainer::setBaseDates()
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;
@@ -211,12 +249,14 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
}
}
+ 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();
}
@@ -228,6 +268,8 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
mExtraViews.at( iii )->hide();
++iii;
}
+ if ( setBaseD )
+ setBaseDates();
if ( fontchange ) {
//mNavigatorView->changeFont( fo );
uint i;
@@ -238,6 +280,7 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
}
mHorizontalCount = horizontalCount;
mVerticalCount = verticalCount;
+
}
//qDebug("COUNT %d ", mExtraViews.count());
int height = size().height() / verticalCount;
@@ -249,7 +292,7 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
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;