author | zautrix <zautrix> | 2005-03-22 16:21:03 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-22 16:21:03 (UTC) |
commit | ab8db23d665b276caa28471bb4db37e6b0de44ef (patch) (unidiff) | |
tree | 4697da2d9426f155237614368f993328560d0b21 /korganizer/datenavigatorcontainer.cpp | |
parent | f36f0308a955f869f18c88ab359f9d605e838f1c (diff) | |
download | kdepimpi-ab8db23d665b276caa28471bb4db37e6b0de44ef.zip kdepimpi-ab8db23d665b276caa28471bb4db37e6b0de44ef.tar.gz kdepimpi-ab8db23d665b276caa28471bb4db37e6b0de44ef.tar.bz2 |
fix
Diffstat (limited to 'korganizer/datenavigatorcontainer.cpp') (more/less context) (ignore 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 | |||
@@ -38,24 +38,27 @@ | |||
38 | DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, | 38 | DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, |
39 | const char *name ) | 39 | const char *name ) |
40 | : QWidget( parent, name ), mCalendar( 0 ), | 40 | : QWidget( parent, name ), mCalendar( 0 ), |
41 | mHorizontalCount( 1 ), mVerticalCount( 1 ) | 41 | mHorizontalCount( 1 ), mVerticalCount( 1 ) |
42 | { | 42 | { |
43 | mExtraViews.setAutoDelete( true ); | 43 | mExtraViews.setAutoDelete( true ); |
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 | ||
56 | void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) | 59 | void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) |
57 | { | 60 | { |
58 | connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ), | 61 | connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ), |
59 | SIGNAL( datesSelected( const KCal::DateList & ) ) ); | 62 | SIGNAL( datesSelected( const KCal::DateList & ) ) ); |
60 | #if 0 | 63 | #if 0 |
61 | connect( v, SIGNAL( incidenceDropped( Incidence *, const QDate & ) ), | 64 | connect( v, SIGNAL( incidenceDropped( Incidence *, const QDate & ) ), |
@@ -126,27 +129,42 @@ void DateNavigatorContainer::slotMonthSelected( int month ) | |||
126 | emit monthSelected( month ); | 129 | emit monthSelected( month ); |
127 | } | 130 | } |
128 | } | 131 | } |
129 | void DateNavigatorContainer::setCalendar( Calendar *cal ) | 132 | void DateNavigatorContainer::setCalendar( Calendar *cal ) |
130 | { | 133 | { |
131 | mCalendar = cal; | 134 | mCalendar = 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 | } |
141 | void DateNavigatorContainer::checkUpdateDayMatrixDates() | ||
142 | { | ||
143 | QDate last = lastAvailableDate(); | ||
144 | QDate first = firstAvailableDate(); | ||
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 | } | ||
138 | void DateNavigatorContainer::updateDayMatrixDates() | 156 | void DateNavigatorContainer::updateDayMatrixDates() |
139 | { | 157 | { |
140 | 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 ); |
147 | if ( n->dayMatrix()->setSelectedDaysFrom( fDate , lDate ) ) { | 165 | if ( n->dayMatrix()->setSelectedDaysFrom( fDate , lDate ) ) { |
148 | n->dayMatrix()->repaint( false ); | 166 | n->dayMatrix()->repaint( false ); |
149 | } | 167 | } |
150 | } | 168 | } |
151 | } | 169 | } |
152 | 170 | ||
@@ -209,38 +227,24 @@ QDate DateNavigatorContainer::firstAvailableDate() const | |||
209 | return QDate ( mNavigatorView->baseDate().year(), mNavigatorView->baseDate().month(), 1 ); | 227 | return QDate ( mNavigatorView->baseDate().year(), mNavigatorView->baseDate().month(), 1 ); |
210 | } | 228 | } |
211 | void DateNavigatorContainer::selectDates( const DateList &dateList ) | 229 | void DateNavigatorContainer::selectDates( const DateList &dateList ) |
212 | { | 230 | { |
213 | mFirstSelectedDate = dateList.first() ; | 231 | mFirstSelectedDate = dateList.first() ; |
214 | mSelectedDateCount = dateList.count() ; | 232 | mSelectedDateCount = dateList.count() ; |
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 | } |
241 | mNavigatorView->selectDates( dateList ); | 245 | mNavigatorView->selectDates( dateList ); |
242 | setBaseDates(); | 246 | setBaseDates(); |
243 | if ( mLastDisplayedDN ) { | 247 | if ( mLastDisplayedDN ) { |
244 | KDateNavigator *view = mExtraViews.at( 0 ); | 248 | KDateNavigator *view = mExtraViews.at( 0 ); |
245 | view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); | 249 | view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); |
246 | view->dayMatrix()->repaint( false ); | 250 | view->dayMatrix()->repaint( false ); |
@@ -363,24 +367,25 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) | |||
363 | int y = ( i + 1 ) / horizontalCount; | 367 | int y = ( i + 1 ) / horizontalCount; |
364 | 368 | ||
365 | KDateNavigator *view = mExtraViews.at( i ); | 369 | KDateNavigator *view = mExtraViews.at( i ); |
366 | bar = view->navigatorBar(); | 370 | bar = view->navigatorBar(); |
367 | if ( y > 0 ) bar->showButtons( false, false ); | 371 | if ( y > 0 ) bar->showButtons( false, false ); |
368 | else { | 372 | else { |
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(); |
381 | } | 386 | } |
382 | 387 | ||
383 | QSize DateNavigatorContainer::sizeHint() const | 388 | QSize DateNavigatorContainer::sizeHint() const |
384 | { | 389 | { |
385 | return mNavigatorView->yourSizeHint(); | 390 | return mNavigatorView->yourSizeHint(); |
386 | } | 391 | } |