Diffstat (limited to 'korganizer/datenavigatorcontainer.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | korganizer/datenavigatorcontainer.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp index 9720146..ba97fa6 100644 --- a/korganizer/datenavigatorcontainer.cpp +++ b/korganizer/datenavigatorcontainer.cpp | |||
@@ -44,12 +44,15 @@ DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, | |||
44 | 44 | ||
45 | mNavigatorView = new KDateNavigator( this, name ); | 45 | mNavigatorView = new KDateNavigator( this, name ); |
46 | 46 | ||
47 | connectNavigatorView( mNavigatorView ); | 47 | connectNavigatorView( mNavigatorView ); |
48 | //setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); | 48 | //setSizePolicy( QSizePolicy (QSizePolicy::Expanding,QSizePolicy::Expanding) ); |
49 | mLastDisplayedDN = 0; | 49 | mLastDisplayedDN = 0; |
50 | mUpdateTimer; | ||
51 | mUpdateTimer = new QTimer( this ); | ||
52 | connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( checkUpdateDayMatrixDates() )); | ||
50 | } | 53 | } |
51 | 54 | ||
52 | DateNavigatorContainer::~DateNavigatorContainer() | 55 | DateNavigatorContainer::~DateNavigatorContainer() |
53 | { | 56 | { |
54 | } | 57 | } |
55 | 58 | ||
@@ -132,15 +135,30 @@ void DateNavigatorContainer::setCalendar( Calendar *cal ) | |||
132 | mNavigatorView->setCalendar( cal ); | 135 | mNavigatorView->setCalendar( cal ); |
133 | for( uint i = 0; i < mLastDisplayedDN; ++i ) { | 136 | for( uint i = 0; i < mLastDisplayedDN; ++i ) { |
134 | KDateNavigator *n = mExtraViews.at( i ); | 137 | KDateNavigator *n = mExtraViews.at( i ); |
135 | n->setCalendar( cal ); | 138 | n->setCalendar( cal ); |
136 | } | 139 | } |
137 | } | 140 | } |
138 | void DateNavigatorContainer::updateDayMatrixDates() | 141 | void DateNavigatorContainer::checkUpdateDayMatrixDates() |
139 | { | 142 | { |
143 | QDate last = lastAvailableDate(); | ||
144 | QDate first = firstAvailableDate(); | ||
140 | 145 | ||
146 | QDate selFirst = mFirstSelectedDate; | ||
147 | QDate selLast = selFirst.addDays( mSelectedDateCount-1 ); | ||
148 | if ( selFirst >= first && selLast <= last ) { | ||
149 | updateDayMatrixDates(); | ||
150 | } | ||
151 | else { | ||
152 | updateDayMatrixDates(); | ||
153 | emit monthSelected( mFirstSelectedDate.month() ); | ||
154 | } | ||
155 | } | ||
156 | void DateNavigatorContainer::updateDayMatrixDates() | ||
157 | { | ||
158 | mUpdateTimer->stop(); | ||
141 | QDate fDate = mFirstSelectedDate; | 159 | QDate fDate = mFirstSelectedDate; |
142 | QDate lDate = fDate.addDays( mSelectedDateCount - 1 ); | 160 | QDate lDate = fDate.addDays( mSelectedDateCount - 1 ); |
143 | mNavigatorView->dayMatrix()->setSelectedDaysFrom( fDate , lDate ); | 161 | mNavigatorView->dayMatrix()->setSelectedDaysFrom( fDate , lDate ); |
144 | mNavigatorView->dayMatrix()->repaint( false ); | 162 | mNavigatorView->dayMatrix()->repaint( false ); |
145 | for( uint i = 0; i < mLastDisplayedDN; ++i ) { | 163 | for( uint i = 0; i < mLastDisplayedDN; ++i ) { |
146 | KDateNavigator *n = mExtraViews.at( i ); | 164 | KDateNavigator *n = mExtraViews.at( i ); |
@@ -215,26 +233,12 @@ void DateNavigatorContainer::selectDates( const DateList &dateList ) | |||
215 | if ( !mLastDisplayedDN ) { | 233 | if ( !mLastDisplayedDN ) { |
216 | mNavigatorView->selectDates( dateList ); | 234 | mNavigatorView->selectDates( dateList ); |
217 | return; | 235 | return; |
218 | } | 236 | } |
219 | QDate fDate = dateList.first(); | 237 | QDate fDate = dateList.first(); |
220 | QDate lDate = dateList.last(); | 238 | QDate lDate = dateList.last(); |
221 | if ( mLastDisplayedDN <= 2 ) { | ||
222 | mNavigatorView->selectDates( dateList ); | ||
223 | KDateNavigator *view = mExtraViews.at( 0 ); | ||
224 | QDate bDate = fDate.addDays( fDate.daysInMonth () - fDate.day() +1 ); | ||
225 | view->setBaseDate( bDate, false ); | ||
226 | view->dayMatrix()->setSelectedDaysFrom(fDate , lDate); | ||
227 | if ( mLastDisplayedDN == 2 ) { | ||
228 | view = mExtraViews.at( 1 ); | ||
229 | bDate = bDate.addDays( bDate.daysInMonth () - bDate.day() +1 ); | ||
230 | view->setBaseDate( bDate, false ); | ||
231 | view->dayMatrix()->setSelectedDaysFrom(fDate , lDate); | ||
232 | } | ||
233 | return; | ||
234 | } | ||
235 | //qDebug("%s %s ", lastAvailableDate().toString().latin1(), firstAvailableDate().toString().latin1() ); | 239 | //qDebug("%s %s ", lastAvailableDate().toString().latin1(), firstAvailableDate().toString().latin1() ); |
236 | //qDebug("End %s %s ",lDate.toString().latin1(),curEnd.toString().latin1() ); | 240 | //qDebug("End %s %s ",lDate.toString().latin1(),curEnd.toString().latin1() ); |
237 | if ( lDate <= lastAvailableDate() && firstAvailableDate() <= fDate) { | 241 | if ( lDate <= lastAvailableDate() && firstAvailableDate() <= fDate) { |
238 | updateDayMatrixDates(); | 242 | updateDayMatrixDates(); |
239 | return; | 243 | return; |
240 | } | 244 | } |
@@ -369,12 +373,13 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) | |||
369 | if ( x + 1 == horizontalCount ) bar->showButtons( false, true ); | 373 | if ( x + 1 == horizontalCount ) bar->showButtons( false, true ); |
370 | else bar->showButtons( false, false ); | 374 | else bar->showButtons( false, false ); |
371 | } | 375 | } |
372 | view->setGeometry( x * width, | 376 | view->setGeometry( x * width, |
373 | y * height, width, height ); | 377 | y * height, width, height ); |
374 | } | 378 | } |
379 | mUpdateTimer->start( 250 ); | ||
375 | //updateDayMatrixDates(); | 380 | //updateDayMatrixDates(); |
376 | } | 381 | } |
377 | 382 | ||
378 | QSize DateNavigatorContainer::minimumSizeHint() const | 383 | QSize DateNavigatorContainer::minimumSizeHint() const |
379 | { | 384 | { |
380 | return mNavigatorView->minimumSizeHint(); | 385 | return mNavigatorView->minimumSizeHint(); |