summaryrefslogtreecommitdiffabout
path: root/korganizer/datenavigatorcontainer.cpp
authorzautrix <zautrix>2005-03-22 16:21:03 (UTC)
committer zautrix <zautrix>2005-03-22 16:21:03 (UTC)
commitab8db23d665b276caa28471bb4db37e6b0de44ef (patch) (unidiff)
tree4697da2d9426f155237614368f993328560d0b21 /korganizer/datenavigatorcontainer.cpp
parentf36f0308a955f869f18c88ab359f9d605e838f1c (diff)
downloadkdepimpi-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.cpp35
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 @@
38DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, 38DateNavigatorContainer::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
52DateNavigatorContainer::~DateNavigatorContainer() 55DateNavigatorContainer::~DateNavigatorContainer()
53{ 56{
54} 57}
55 58
56void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) 59void 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}
129void DateNavigatorContainer::setCalendar( Calendar *cal ) 132void 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}
141void 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}
138void DateNavigatorContainer::updateDayMatrixDates() 156void 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}
211void DateNavigatorContainer::selectDates( const DateList &dateList ) 229void 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
378QSize DateNavigatorContainer::minimumSizeHint() const 383QSize DateNavigatorContainer::minimumSizeHint() const
379{ 384{
380 return mNavigatorView->minimumSizeHint(); 385 return mNavigatorView->minimumSizeHint();
381} 386}
382 387
383QSize DateNavigatorContainer::sizeHint() const 388QSize DateNavigatorContainer::sizeHint() const
384{ 389{
385 return mNavigatorView->yourSizeHint(); 390 return mNavigatorView->yourSizeHint();
386} 391}