summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-03-22 16:21:03 (UTC)
committer zautrix <zautrix>2005-03-22 16:21:03 (UTC)
commitab8db23d665b276caa28471bb4db37e6b0de44ef (patch) (unidiff)
tree4697da2d9426f155237614368f993328560d0b21
parentf36f0308a955f869f18c88ab359f9d605e838f1c (diff)
downloadkdepimpi-ab8db23d665b276caa28471bb4db37e6b0de44ef.zip
kdepimpi-ab8db23d665b276caa28471bb4db37e6b0de44ef.tar.gz
kdepimpi-ab8db23d665b276caa28471bb4db37e6b0de44ef.tar.bz2
fix
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/datenavigatorcontainer.cpp35
-rw-r--r--korganizer/datenavigatorcontainer.h2
-rw-r--r--korganizer/kodaymatrix.cpp21
3 files changed, 33 insertions, 25 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp
index 9720146..ba97fa6 100644
--- a/korganizer/datenavigatorcontainer.cpp
+++ b/korganizer/datenavigatorcontainer.cpp
@@ -26,48 +26,51 @@
26#include <kdebug.h> 26#include <kdebug.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29//#include "koglobals.h" 29//#include "koglobals.h"
30#include "navigatorbar.h" 30#include "navigatorbar.h"
31#include "kdatenavigator.h" 31#include "kdatenavigator.h"
32 32
33#include <kcalendarsystem.h> 33#include <kcalendarsystem.h>
34 34
35#include "datenavigatorcontainer.h" 35#include "datenavigatorcontainer.h"
36#include "koprefs.h" 36#include "koprefs.h"
37 37
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 & ) ),
62 SIGNAL( incidenceDropped( Incidence *, const QDate & ) ) ); 65 SIGNAL( incidenceDropped( Incidence *, const QDate & ) ) );
63 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ), 66 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ),
64 SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ) ); 67 SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ) );
65#endif 68#endif
66 connect( v, SIGNAL( weekClicked( const QDate & ) ), 69 connect( v, SIGNAL( weekClicked( const QDate & ) ),
67 SIGNAL( weekClicked( const QDate & ) ) ); 70 SIGNAL( weekClicked( const QDate & ) ) );
68 71
69 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) ); 72 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) );
70 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) ); 73 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) );
71 74
72 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 75 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
73 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 76 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
@@ -114,51 +117,66 @@ void DateNavigatorContainer::slotMonthSelected( int month )
114 QDate last = lastAvailableDate(); 117 QDate last = lastAvailableDate();
115 QDate first = firstAvailableDate(); 118 QDate first = firstAvailableDate();
116 119
117 QDate selFirst = mFirstSelectedDate; 120 QDate selFirst = mFirstSelectedDate;
118 QDate selLast = selFirst.addDays( mSelectedDateCount-1 ); 121 QDate selLast = selFirst.addDays( mSelectedDateCount-1 );
119 if ( selFirst >= first && selLast <= last ) { 122 if ( selFirst >= first && selLast <= last ) {
120 setBaseDates(); 123 setBaseDates();
121 updateDayMatrixDates(); 124 updateDayMatrixDates();
122 } 125 }
123 else { 126 else {
124 setBaseDates(); 127 setBaseDates();
125 updateDayMatrixDates(); 128 updateDayMatrixDates();
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}
138void DateNavigatorContainer::updateDayMatrixDates() 141void 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}
156void 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 );
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
153void DateNavigatorContainer::updateDayMatrix() 171void DateNavigatorContainer::updateDayMatrix()
154{ 172{
155 mNavigatorView->updateDayMatrix(); 173 mNavigatorView->updateDayMatrix();
156 for( uint i = 0; i < mLastDisplayedDN; ++i ) { 174 for( uint i = 0; i < mLastDisplayedDN; ++i ) {
157 KDateNavigator *n = mExtraViews.at( i ); 175 KDateNavigator *n = mExtraViews.at( i );
158 n->updateDayMatrix(); 176 n->updateDayMatrix();
159 } 177 }
160} 178}
161 179
162void DateNavigatorContainer::updateToday() 180void DateNavigatorContainer::updateToday()
163{ 181{
164 qDebug("DateNavigatorContainer::updateToday() NOT IMPL "); 182 qDebug("DateNavigatorContainer::updateToday() NOT IMPL ");
@@ -197,62 +215,48 @@ QDate DateNavigatorContainer::lastAvailableDate() const
197 last = last.addDays( 1); 215 last = last.addDays( 1);
198 while ( iii ) { 216 while ( iii ) {
199 last = last.addDays( last.daysInMonth ()); 217 last = last.addDays( last.daysInMonth ());
200 //qDebug("DATE %s ", last.toString().latin1() ); 218 //qDebug("DATE %s ", last.toString().latin1() );
201 --iii; 219 --iii;
202 } 220 }
203 if ( mLastDisplayedDN ) 221 if ( mLastDisplayedDN )
204 last = last.addDays( -1); 222 last = last.addDays( -1);
205 return last; 223 return last;
206} 224}
207QDate DateNavigatorContainer::firstAvailableDate() const 225QDate DateNavigatorContainer::firstAvailableDate() const
208{ 226{
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 );
247 if ( mLastDisplayedDN > 1 ) { 251 if ( mLastDisplayedDN > 1 ) {
248 KDateNavigator *view = mExtraViews.at( 1 ); 252 KDateNavigator *view = mExtraViews.at( 1 );
249 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); 253 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
250 view->dayMatrix()->repaint( false ); 254 view->dayMatrix()->repaint( false );
251 } 255 }
252 } 256 }
253} 257}
254 258
255void DateNavigatorContainer::setBaseDates() 259void DateNavigatorContainer::setBaseDates()
256{ 260{
257 QDate baseDate = mNavigatorView->baseDate(); 261 QDate baseDate = mNavigatorView->baseDate();
258 bool doRepaint = true; 262 bool doRepaint = true;
@@ -351,36 +355,37 @@ void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
351 //qDebug("COUNT %d ", mExtraViews.count()); 355 //qDebug("COUNT %d ", mExtraViews.count());
352 int height = size().height() / verticalCount; 356 int height = size().height() / verticalCount;
353 int width = size().width() / horizontalCount; 357 int width = size().width() / horizontalCount;
354 358
355 NavigatorBar *bar = mNavigatorView->navigatorBar(); 359 NavigatorBar *bar = mNavigatorView->navigatorBar();
356 if ( horizontalCount > 1 ) bar->showButtons( true, false ); 360 if ( horizontalCount > 1 ) bar->showButtons( true, false );
357 else bar->showButtons( true, true ); 361 else bar->showButtons( true, true );
358 362
359 mNavigatorView->setGeometry(0, 363 mNavigatorView->setGeometry(0,
360 0, width, height ); 364 0, width, height );
361 for( uint i = 0; i < mLastDisplayedDN; ++i ) { 365 for( uint i = 0; i < mLastDisplayedDN; ++i ) {
362 int x = ( i + 1 ) % horizontalCount; 366 int x = ( i + 1 ) % horizontalCount;
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}
diff --git a/korganizer/datenavigatorcontainer.h b/korganizer/datenavigatorcontainer.h
index d5e5adf..df8efae 100644
--- a/korganizer/datenavigatorcontainer.h
+++ b/korganizer/datenavigatorcontainer.h
@@ -34,64 +34,66 @@ using namespace KCal;
34class DateNavigatorContainer: public QWidget 34class DateNavigatorContainer: public QWidget
35{ 35{
36 Q_OBJECT 36 Q_OBJECT
37 public: 37 public:
38 DateNavigatorContainer( QWidget *parent = 0, const char *name = 0 ); 38 DateNavigatorContainer( QWidget *parent = 0, const char *name = 0 );
39 ~DateNavigatorContainer(); 39 ~DateNavigatorContainer();
40 40
41 /** 41 /**
42 Associate date navigator with a calendar. It is used by KODayMatrix. 42 Associate date navigator with a calendar. It is used by KODayMatrix.
43 */ 43 */
44 void setCalendar( Calendar * ); 44 void setCalendar( Calendar * );
45 45
46 QSize minimumSizeHint() const; 46 QSize minimumSizeHint() const;
47 QSize sizeHint() const; 47 QSize sizeHint() const;
48 KDateNavigator * navigatorView() { return mNavigatorView;} 48 KDateNavigator * navigatorView() { return mNavigatorView;}
49 QDate lastAvailableDate() const ; 49 QDate lastAvailableDate() const ;
50 QDate firstAvailableDate() const ; 50 QDate firstAvailableDate() const ;
51 51
52 public slots: 52 public slots:
53 void selectDates( const KCal::DateList & ); 53 void selectDates( const KCal::DateList & );
54 void updateView(); 54 void updateView();
55 void updateConfig(); 55 void updateConfig();
56 void updateDayMatrix(); 56 void updateDayMatrix();
57 void updateDayMatrixDates(); 57 void updateDayMatrixDates();
58 void checkUpdateDayMatrixDates();
58 void updateToday(); 59 void updateToday();
59 void slotMonthSelected( int month ); 60 void slotMonthSelected( int month );
60 61
61 signals: 62 signals:
62 void datesSelected( const KCal::DateList & ); 63 void datesSelected( const KCal::DateList & );
63 void incidenceDropped( Incidence *, const QDate & ); 64 void incidenceDropped( Incidence *, const QDate & );
64 void incidenceDroppedMove( Incidence *, const QDate & ); 65 void incidenceDroppedMove( Incidence *, const QDate & );
65 void weekClicked( const QDate &); 66 void weekClicked( const QDate &);
66 67
67 void goPrevious(); 68 void goPrevious();
68 void goNext(); 69 void goNext();
69 70
70 void goNextMonth(); 71 void goNextMonth();
71 void goPrevMonth(); 72 void goPrevMonth();
72 void goNextYear(); 73 void goNextYear();
73 void goPrevYear(); 74 void goPrevYear();
74 75
75 void monthSelected( int month ); 76 void monthSelected( int month );
76 77
77 protected: 78 protected:
78 void resizeEvent( QResizeEvent * ); 79 void resizeEvent( QResizeEvent * );
79 80
80 void setBaseDates(); 81 void setBaseDates();
81 void connectNavigatorView( KDateNavigator *v ); 82 void connectNavigatorView( KDateNavigator *v );
82 83
83 private: 84 private:
85 QTimer* mUpdateTimer;
84 int mLastDisplayedDN; 86 int mLastDisplayedDN;
85 QDate mFirstSelectedDate; 87 QDate mFirstSelectedDate;
86 int mSelectedDateCount; 88 int mSelectedDateCount;
87 KDateNavigator *mNavigatorView; 89 KDateNavigator *mNavigatorView;
88 90
89 KCal::Calendar *mCalendar; 91 KCal::Calendar *mCalendar;
90 92
91 QPtrList<KDateNavigator> mExtraViews; 93 QPtrList<KDateNavigator> mExtraViews;
92 94
93 int mHorizontalCount; 95 int mHorizontalCount;
94 int mVerticalCount; 96 int mVerticalCount;
95}; 97};
96 98
97#endif 99#endif
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 366e8b8..59618bf 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -639,77 +639,77 @@ void KODayMatrix::dropEvent(QDropEvent *e)
639 int duration = start.daysTo(end); 639 int duration = start.daysTo(end);
640 int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); 640 int idx = getDayIndexFrom(e->pos().x(), e->pos().y());
641 641
642 start.setDate(days[idx]); 642 start.setDate(days[idx]);
643 end.setDate(days[idx].addDays(duration)); 643 end.setDate(days[idx].addDays(duration));
644 644
645 event->setDtStart(start); 645 event->setDtStart(start);
646 event->setDtEnd(end); 646 event->setDtEnd(end);
647 mCalendar->addEvent(event); 647 mCalendar->addEvent(event);
648 648
649 emit eventDropped(event); 649 emit eventDropped(event);
650 } else { 650 } else {
651// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; 651// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl;
652 e->ignore(); 652 e->ignore();
653 } 653 }
654#endif 654#endif
655} 655}
656 656
657// ---------------------------------------------------------------------------- 657// ----------------------------------------------------------------------------
658// P A I N T E V E N T H A N D L I N G 658// P A I N T E V E N T H A N D L I N G
659// ---------------------------------------------------------------------------- 659// ----------------------------------------------------------------------------
660 660
661void KODayMatrix::paintEvent(QPaintEvent * pevent) 661void KODayMatrix::paintEvent(QPaintEvent * pevent)
662{ 662{
663 QRect sz = frameRect(); 663
664 if ( sz.width() <= 0 || sz.height() <= 0 ) 664 if ( width() <= 0 || height() <= 0 )
665 return; 665 return;
666 if ( mPendingUpdateBeforeRepaint ) { 666 if ( mPendingUpdateBeforeRepaint ) {
667 updateViewTimed(); 667 updateViewTimed();
668 mPendingUpdateBeforeRepaint = false; 668 mPendingUpdateBeforeRepaint = false;
669 } 669 }
670 if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) { 670 if ( myPix.width() != width() || myPix.height()!=height() ) {
671 myPix.resize(sz.size() ); 671 myPix.resize(size() );
672 } 672 }
673 QPainter p(&myPix); 673 QPainter p(&myPix);
674 p.setFont(font()); 674 p.setFont(font());
675 675
676 676
677 int dheight = daysize.height(); 677 int dheight = daysize.height();
678 int dwidth = daysize.width(); 678 int dwidth = daysize.width();
679 int row,col; 679 int row,col;
680 int selw, selh; 680 int selw, selh;
681 int xyOff = frameWidth(); 681 int xyOff = frameWidth();
682 int colModulo = sz.width() % 7; 682 int colModulo = (width()-2) % 7;
683 int rowModulo = sz.height() % 6; 683 int rowModulo = (height()-2) % 6;
684 //qDebug("col %d row %d ",colModulo,rowModulo ); 684 //qDebug("col %d row %d ",colModulo,rowModulo );
685 685
686 bool isRTL = KOGlobals::self()->reverseLayout(); 686 bool isRTL = KOGlobals::self()->reverseLayout();
687 687
688 // draw background and topleft frame 688 // draw background and topleft frame
689 p.fillRect(pevent->rect(), mDefaultBackColor); 689 p.fillRect(0,0,width(),height(), mDefaultBackColor);
690 p.setPen(mDefaultTextColor); 690 p.setPen(mDefaultTextColor);
691 p.drawRect(0, 0, sz.width()+1, sz.height()+1); 691 p.drawRect(0, 0, width(), height());
692 int mSelStartT = mSelStart; 692 int mSelStartT = mSelStart;
693 int mSelEndT = mSelEnd; 693 int mSelEndT = mSelEnd;
694 if ( mSelEndT >= NUMDAYS ) 694 if ( mSelEndT >= NUMDAYS )
695 mSelEndT = NUMDAYS-1; 695 mSelEndT = NUMDAYS-1;
696 // draw selected days with highlighted background color 696 // draw selected days with highlighted background color
697 if (mSelStart != NOSELECTION) { 697 if (mSelStart != NOSELECTION) {
698 bool skip = false; 698 bool skip = false;
699 if ( ! mouseDown ) { 699 if ( ! mouseDown ) {
700 int mo = days[20].month(); 700 int mo = days[20].month();
701 //qDebug("-- %d %d ", mSelStartT, mSelEndT); 701 //qDebug("-- %d %d ", mSelStartT, mSelEndT);
702 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() ); 702 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() );
703 int startMo = days[mSelStartT].month(); 703 int startMo = days[mSelStartT].month();
704 int endMo = days[mSelEndT].month(); 704 int endMo = days[mSelEndT].month();
705 if ( startMo == 12 && mo == 1 && endMo <= 2 ) 705 if ( startMo == 12 && mo == 1 && endMo <= 2 )
706 startMo = 1; 706 startMo = 1;
707 if ( endMo == 1 && mo == 12 ) 707 if ( endMo == 1 && mo == 12 )
708 endMo = 12; 708 endMo = 12;
709 if ( mo == 12 && startMo == 1 ) 709 if ( mo == 12 && startMo == 1 )
710 startMo = 13; 710 startMo = 13;
711 if ( (startMo > mo || endMo < mo) ) { 711 if ( (startMo > mo || endMo < mo) ) {
712 skip = true; 712 skip = true;
713 } else { 713 } else {
714 if ( days[mSelStartT].month() != mo ) { 714 if ( days[mSelStartT].month() != mo ) {
715 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day(); 715 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day();
@@ -742,49 +742,50 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
742 addCol = colt1 - 7 + colModulo+1; 742 addCol = colt1 - 7 + colModulo+1;
743 int colt = mSelStartT%7; 743 int colt = mSelStartT%7;
744 if ( colt >= 7 - colModulo ) 744 if ( colt >= 7 - colModulo )
745 addCol2 = colt - 7 + colModulo; 745 addCol2 = colt - 7 + colModulo;
746 addCol -= addCol2; 746 addCol -= addCol2;
747 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 ); 747 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 );
748 } 748 }
749 // Single row selection 749 // Single row selection
750 if ( row == 0) 750 if ( row == 0)
751 addRow = 1; 751 addRow = 1;
752 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2, 752 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2,
753 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol); 753 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol);
754 } else { 754 } else {
755 // draw first row to the right 755 // draw first row to the right
756 if ( colModulo ) { 756 if ( colModulo ) {
757 if ( col >= 7 - colModulo ) 757 if ( col >= 7 - colModulo )
758 addCol2 = col - 7 + colModulo; 758 addCol2 = col - 7 + colModulo;
759 } 759 }
760 if ( rowModulo ) { 760 if ( rowModulo ) {
761 if ( row >= 6 - rowModulo ) 761 if ( row >= 6 - rowModulo )
762 addRow = row - 5 + rowModulo; 762 addRow = row - 5 + rowModulo;
763 } 763 }
764 if ( row == 0) 764 if ( row == 0)
765 addRow = 1; 765 addRow = 1;
766 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, (7-col)*dwidth+colModulo, 766 int drawWid = width()-(col*dwidth+1+addCol2)-1;
767 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, drawWid,
767 dheight+1, selcol); 768 dheight+1, selcol);
768 // draw full block till last line 769 // draw full block till last line
769 selh = mSelEndT/7-row; 770 selh = mSelEndT/7-row;
770 addRow = 0; 771 addRow = 0;
771 if ( rowModulo ) { 772 if ( rowModulo ) {
772 if ( mSelEndT/7 >= 6 - rowModulo ) 773 if ( mSelEndT/7 >= 6 - rowModulo )
773 addRow = mSelEndT/7 - 5 + rowModulo; 774 addRow = mSelEndT/7 - 5 + rowModulo;
774 } 775 }
775 if (selh > 1) { 776 if (selh > 1) {
776 p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol); 777 p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol);
777 } 778 }
778 // draw last block from left to mSelEndT 779 // draw last block from left to mSelEndT
779 selw = mSelEndT-7*(mSelEndT/7)+1; 780 selw = mSelEndT-7*(mSelEndT/7)+1;
780 //qDebug("esl %d ",selw ); 781 //qDebug("esl %d ",selw );
781 int add = 0; 782 int add = 0;
782 if ( colModulo ) { 783 if ( colModulo ) {
783 add = 7 - colModulo; 784 add = 7 - colModulo;
784 if ( selw > add ) 785 if ( selw > add )
785 add = selw - add; 786 add = selw - add;
786 else 787 else
787 add = 0; 788 add = 0;
788 } 789 }
789 //qDebug("add %d ", add); 790 //qDebug("add %d ", add);
790 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow, 791 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow,
@@ -893,49 +894,49 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
893 addCol = col - 7 + colModulo; 894 addCol = col - 7 + colModulo;
894 } 895 }
895 if ( rowModulo ) { 896 if ( rowModulo ) {
896 if ( row >= 6 - rowModulo ) 897 if ( row >= 6 - rowModulo )
897 addRow = row - 5 + rowModulo; 898 addRow = row - 5 + rowModulo;
898 } 899 }
899 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); 900 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
900 ++addCol;//++addCol; 901 ++addCol;//++addCol;
901 if ( row == 0) 902 if ( row == 0)
902 addRow = 1; 903 addRow = 1;
903 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, 904 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
904 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 905 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
905 906
906 // reset color to actual color 907 // reset color to actual color
907 if (!mHolidays[i].isNull()) { 908 if (!mHolidays[i].isNull()) {
908 p.setPen(actcol); 909 p.setPen(actcol);
909 } 910 }
910 // reset bold font to plain font 911 // reset bold font to plain font
911 if (events[i] > 0) { 912 if (events[i] > 0) {
912 QFont myFont = font(); 913 QFont myFont = font();
913 myFont.setBold(false); 914 myFont.setBold(false);
914 p.setFont(myFont); 915 p.setFont(myFont);
915 } 916 }
916 } 917 }
917 int off = xyOff; 918 int off = 0;//xyOff;
918 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP); 919 bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP);
919 //qDebug("ffffffffff %d ", off); 920 //qDebug("ffffffffff %d ", off);
920} 921}
921 922
922// ---------------------------------------------------------------------------- 923// ----------------------------------------------------------------------------
923// R E SI Z E E V E N T H A N D L I N G 924// R E SI Z E E V E N T H A N D L I N G
924// ---------------------------------------------------------------------------- 925// ----------------------------------------------------------------------------
925 926
926void KODayMatrix::resizeEvent(QResizeEvent *) 927void KODayMatrix::resizeEvent(QResizeEvent *)
927{ 928{
928 QRect sz = frameRect(); 929 QRect sz = frameRect();
929 daysize.setHeight(sz.height()*7 / NUMDAYS); 930 daysize.setHeight(sz.height()*7 / NUMDAYS);
930 daysize.setWidth(sz.width() / 7); 931 daysize.setWidth(sz.width() / 7);
931} 932}
932 933
933QSize KODayMatrix::sizeHint() const 934QSize KODayMatrix::sizeHint() const
934{ 935{
935 936
936 QFontMetrics fm ( font() ); 937 QFontMetrics fm ( font() );
937 int wid = fm.width( "30") *7+3; 938 int wid = fm.width( "30") *7+3;
938 int hei = fm.height() * 6+3; 939 int hei = fm.height() * 6+3;
939 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei); 940 //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei);
940 return QSize ( wid, hei ); 941 return QSize ( wid, hei );
941 942