summaryrefslogtreecommitdiffabout
path: root/korganizer/koagendaview.cpp
authorzautrix <zautrix>2005-04-02 08:36:37 (UTC)
committer zautrix <zautrix>2005-04-02 08:36:37 (UTC)
commite7cb4c20af8b07bf923c864026481ce316c40e1d (patch) (unidiff)
treec88b2d0c01ce683e73ea9f4657f4d5c6fbe6f922 /korganizer/koagendaview.cpp
parent7aefe488d1fe0c34cf29460f48a9a97d632f615e (diff)
downloadkdepimpi-e7cb4c20af8b07bf923c864026481ce316c40e1d.zip
kdepimpi-e7cb4c20af8b07bf923c864026481ce316c40e1d.tar.gz
kdepimpi-e7cb4c20af8b07bf923c864026481ce316c40e1d.tar.bz2
more fixes
Diffstat (limited to 'korganizer/koagendaview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp86
1 files changed, 77 insertions, 9 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 2b05d37..8d32152 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -107,20 +107,83 @@ void TimeLabels::setCellHeight(int height)
107 Optimization so that only the "dirty" portion of the scroll view 107 Optimization so that only the "dirty" portion of the scroll view
108 is redrawn. Unfortunately, this is not called by default paintEvent() method. 108 is redrawn. Unfortunately, this is not called by default paintEvent() method.
109*/ 109*/
110void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) 110void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch)
111{ 111{
112 112
113 // if ( globalFlagBlockAgenda ) 113 cx = contentsX() + frameWidth()*2;
114 // return; 114 cw = contentsWidth() ;
115 // bug: the parameters cx, cy, cw, ch are the areas that need to be 115 // end of workaround
116 // redrawn, not the area of the widget. unfortunately, this 116
117 // code assumes the latter... 117 int cell = ((int)(cy/mCellHeight));
118 118 int y = cell * mCellHeight;
119 // now, for a workaround... 119 QFontMetrics fm = fontMetrics();
120 // these two assignments fix the weird redraw bug 120 QString hour;
121 QString suffix = "am";
122 int timeHeight = fm.ascent();
123 QFont nFont = p->font();
124
125 if (!KGlobal::locale()->use12Clock()) {
126 if ( QApplication::desktop()->width() <= 320 )
127 suffix = "00";
128 else
129 suffix = "00";
130 }
131
132 if ( timeHeight > mCellHeight ) {
133 timeHeight = mCellHeight-1;
134 int pointS = nFont.pointSize();
135 while ( pointS > 4 ) {
136 nFont.setPointSize( pointS );
137 fm = QFontMetrics( nFont );
138 if ( fm.ascent() < mCellHeight )
139 break;
140 -- pointS;
141 }
142 fm = QFontMetrics( nFont );
143 timeHeight = fm.ascent();
144 }
145 //timeHeight -= (timeHeight/4-2);
146 QFont sFont = nFont;
147 sFont.setPointSize( sFont.pointSize()/2 );
148 QFontMetrics fmS( sFont );
149 int sHei = fmS.ascent() ;
150 //sHei -= (sHei/4-2);
151 int startW = this->width() - frameWidth()-2;
152 int tw2 = fmS.width(suffix);
153 timeHeight = (timeHeight-1) /2 -1;
154 while (y < cy + ch+mCellHeight) {
155 p->drawLine(startW-tw2+1 ,y,cw,y);
156 hour.setNum(cell);
157 // handle 24h and am/pm time formats
158 if (KGlobal::locale()->use12Clock()) {
159 if (cell > 11) suffix = "pm";
160 else
161 suffix = "am";
162 if (cell == 0) hour.setNum(12);
163 if (cell > 12) hour.setNum(cell - 12);
164 }
165
166 // center and draw the time label
167 int timeWidth = fm.width(hour);
168 int offset = startW - timeWidth - tw2 ;
169 p->setFont( nFont );
170 p->drawText( offset, y+ timeHeight, hour);
171 p->setFont( sFont );
172 offset = startW - tw2+1;
173 p->drawText( offset, y -1, suffix);
174
175 // increment indices
176 y += mCellHeight;
177 cell++;
178 }
179
180
181
182
183#if 0
121 mRedrawNeeded = true; 184 mRedrawNeeded = true;
122 if ( mRedrawNeeded ) { 185 if ( mRedrawNeeded ) {
123 cx = contentsX() + frameWidth()*2; 186 cx = contentsX() + frameWidth()*2;
124 cw = contentsWidth() ; 187 cw = contentsWidth() ;
125 // end of workaround 188 // end of workaround
126 189
@@ -189,12 +252,13 @@ void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch)
189 } else { 252 } else {
190 //qDebug("NO redraw "); 253 //qDebug("NO redraw ");
191 } 254 }
192 // double buffer not yet implemented 255 // double buffer not yet implemented
193 //bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); 256 //bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP);
194 //mRedrawNeeded = false; 257 //mRedrawNeeded = false;
258#endif
195} 259}
196 260
197/** 261/**
198 Calculates the minimum width. 262 Calculates the minimum width.
199*/ 263*/
200int TimeLabels::minimumWidth() const 264int TimeLabels::minimumWidth() const
@@ -215,13 +279,13 @@ void TimeLabels::updateConfig()
215 test = "12"; 279 test = "12";
216 mMiniWidth = fontMetrics().width(test); 280 mMiniWidth = fontMetrics().width(test);
217 if (KGlobal::locale()->use12Clock()) 281 if (KGlobal::locale()->use12Clock())
218 test = "pm"; 282 test = "pm";
219 else { 283 else {
220 if ( QApplication::desktop()->width() <= 320 ) 284 if ( QApplication::desktop()->width() <= 320 )
221 test = ""; 285 test = "00";
222 else 286 else
223 test = "00"; 287 test = "00";
224 } 288 }
225 QFont sFont = font(); 289 QFont sFont = font();
226 sFont.setPointSize( sFont.pointSize()/2 ); 290 sFont.setPointSize( sFont.pointSize()/2 );
227 QFontMetrics fmS( sFont ); 291 QFontMetrics fmS( sFont );
@@ -671,12 +735,14 @@ void KOAgendaView::createDayLabels()
671 735
672 // ### Before deleting and recreating we could check if mSelectedDates changed... 736 // ### Before deleting and recreating we could check if mSelectedDates changed...
673 // It would remove some flickering and gain speed (since this is called by 737 // It would remove some flickering and gain speed (since this is called by
674 // each updateView() call) 738 // each updateView() call)
675 739
676 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2; 740 int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - mAgenda->frameWidth()*2;
741 if ( QApplication::desktop()->width() <= 320 )
742 maxWid -= 10;
677 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); 743 mDayLabelsFrame->setMaximumWidth( mUpcomingWidth );
678 if ( maxWid < 0 ) 744 if ( maxWid < 0 )
679 maxWid = 20; 745 maxWid = 20;
680 746
681 QFont dlf = KOPrefs::instance()->mTimeLabelsFont; 747 QFont dlf = KOPrefs::instance()->mTimeLabelsFont;
682 QFontMetrics fm ( dlf ); 748 QFontMetrics fm ( dlf );
@@ -729,15 +795,17 @@ void KOAgendaView::createDayLabels()
729 dayLabel = getNewDaylabel(); 795 dayLabel = getNewDaylabel();
730 } 796 }
731 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() ); 797 dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() );
732 dayLabel->setFont( dlf ); 798 dayLabel->setFont( dlf );
733 dayLabel->setNum( -1 ); 799 dayLabel->setNum( -1 );
734 //dayLabel->setAlignment(QLabel::AlignHCenter); 800 //dayLabel->setAlignment(QLabel::AlignHCenter);
801#if 0
735 if ( QApplication::desktop()->width() <= 320 ) 802 if ( QApplication::desktop()->width() <= 320 )
736 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ).left(2) ); 803 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ).left(2) );
737 else 804 else
805#endif
738 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); 806 dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) );
739 dayLabel->show(); 807 dayLabel->show();
740 DateList::ConstIterator dit; 808 DateList::ConstIterator dit;
741 bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); 809 bool oneday = (mSelectedDates.first() == mSelectedDates.last() );
742 int counter = -1; 810 int counter = -1;
743 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 811 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {