author | zautrix <zautrix> | 2005-03-25 19:42:13 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-25 19:42:13 (UTC) |
commit | ae440bf75e7f74f35f83d082de9c7a34d2d3c65d (patch) (side-by-side diff) | |
tree | c1aa1e79a58463081e207479ee0ccad5c9f8e9cf /korganizer/koagendaview.cpp | |
parent | 89a72c007045dcfa5dbf57012b4cf0c2aebd1495 (diff) | |
download | kdepimpi-ae440bf75e7f74f35f83d082de9c7a34d2d3c65d.zip kdepimpi-ae440bf75e7f74f35f83d082de9c7a34d2d3c65d.tar.gz kdepimpi-ae440bf75e7f74f35f83d082de9c7a34d2d3c65d.tar.bz2 |
layout fixes
-rw-r--r-- | korganizer/koagendaview.cpp | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp index 5508210..f287216 100644 --- a/korganizer/koagendaview.cpp +++ b/korganizer/koagendaview.cpp @@ -82,121 +82,133 @@ TimeLabels::TimeLabels(int rows,QWidget *parent,const char *name,WFlags f) : QScrollView(parent,name,f) { mRows = rows; setMinimumHeight( 20 ); mCellHeight = KOPrefs::instance()->mHourSize*4; enableClipper(true); setHScrollBarMode(AlwaysOff); setVScrollBarMode(AlwaysOff); resizeContents(50,mRows * mCellHeight); viewport()->setBackgroundMode( PaletteBackground ); } void TimeLabels::setCellHeight(int height) { mCellHeight = height; } /* Optimization so that only the "dirty" portion of the scroll view is redrawn. Unfortunately, this is not called by default paintEvent() method. */ void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) { // if ( globalFlagBlockAgenda ) // return; // bug: the parameters cx, cy, cw, ch are the areas that need to be // redrawn, not the area of the widget. unfortunately, this // code assumes the latter... // now, for a workaround... // these two assignments fix the weird redraw bug cx = contentsX() + 2; cw = contentsWidth() - 2; // end of workaround int cell = ((int)(cy/mCellHeight)); int y = cell * mCellHeight; QFontMetrics fm = fontMetrics(); QString hour; QString suffix; QString fullTime; int tW = fm.width("24:00i"); + int timeHeight = fm.height(); + if ( timeHeight > mCellHeight ) + timeHeight = mCellHeight-1; + int borderWidth = 5; + QFont nFont = p->font(); + QFont sFont = nFont; + sFont.setPointSize( sFont.pointSize()/2+2 ); + if (!KGlobal::locale()->use12Clock()) + suffix = "00"; + QFontMetrics fmS( sFont ); + int sHei = fmS.height(); while (y < cy + ch) { p->drawLine(cx,y,cx+tW,y); hour.setNum(cell); - suffix = "am"; // handle 24h and am/pm time formats if (KGlobal::locale()->use12Clock()) { if (cell > 11) suffix = "pm"; + else + suffix = "am"; if (cell == 0) hour.setNum(12); if (cell > 12) hour.setNum(cell - 12); - } else { - suffix = ":00"; } // create string in format of "XX:XX" or "XXpm/am" - fullTime = hour + suffix; + fullTime = hour;// + suffix; // center and draw the time label int timeWidth = fm.width(fullTime+"i"); - int offset = this->width() - timeWidth; - int borderWidth = 5; - int timeHeight = fm.height(); - timeHeight = timeHeight + 2 - ( timeHeight / 4 ); - p->drawText(cx -borderWidth + offset, y+ timeHeight, fullTime); + int tw2 = fm.width(suffix); + int offset = this->width() - timeWidth - tw2; + p->setFont( nFont ); + p->drawText(cx - borderWidth + offset, y+ timeHeight, fullTime); + p->setFont( sFont ); + offset += timeWidth; + p->drawText(cx - borderWidth + offset, y+ sHei, suffix); // increment indices y += mCellHeight; cell++; } } /** Calculates the minimum width. */ int TimeLabels::minimumWidth() const { QFontMetrics fm = fontMetrics(); //TODO: calculate this value int borderWidth = 4; // the maximum width possible int width = fm.width("88:88x") + borderWidth; return width; } /** updates widget's internal state */ void TimeLabels::updateConfig() { // set the font // config->setGroup("Fonts"); // QFont font = config->readFontEntry("TimeBar Font"); setFont(KOPrefs::instance()->mTimeBarFont); // update geometry restrictions based on new settings setFixedWidth(minimumWidth()); // update HourSize mCellHeight = KOPrefs::instance()->mHourSize*4; resizeContents(50,mRows * mCellHeight); } /** update time label positions */ void TimeLabels::positionChanged() { int adjustment = mAgenda->contentsY(); setContentsPos(0, adjustment); } /** */ void TimeLabels::setAgenda(KOAgenda* agenda) @@ -835,98 +847,96 @@ int KOAgendaView::currentDateCount() QPtrList<Incidence> KOAgendaView::selectedIncidences() { QPtrList<Incidence> selected; Incidence *incidence; incidence = mAgenda->selectedIncidence(); if (incidence) selected.append(incidence); incidence = mAllDayAgenda->selectedIncidence(); if (incidence) selected.append(incidence); return selected; } DateList KOAgendaView::selectedDates() { DateList selected; QDate qd; qd = mAgenda->selectedIncidenceDate(); if (qd.isValid()) selected.append(qd); qd = mAllDayAgenda->selectedIncidenceDate(); if (qd.isValid()) selected.append(qd); return selected; } void KOAgendaView::updateView() { if ( mBlockUpdating ) return; // kdDebug() << "KOAgendaView::updateView()" << endl; fillAgenda(); } /* Update configuration settings for the agenda view. This method is not complete. */ void KOAgendaView::updateConfig() { if ( mBlockUpdating ) return; - - // update config for children mTimeLabels->updateConfig(); mAgenda->storePosition(); mAgenda->updateConfig(); mAllDayAgenda->updateConfig(); // widget synchronization //TODO: find a better way, maybe signal/slot mTimeLabels->positionChanged(); // for some reason, this needs to be called explicitly mTimeLabels->repaint(); mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); // ToolTips displaying summary of events KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() ->mEnableToolTips); //setHolidayMasks(); //createDayLabels(); called by via updateView(); mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); updateView(); mAgenda->restorePosition(); } void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) { // kdDebug() << "KOAgendaView::updateEventDates(): " << item->text() << endl; //qDebug("KOAgendaView::updateEventDates "); QDateTime startDt,endDt; QDate startDate; int lenInSecs; // if ( type == KOAgenda::RESIZETOP ) // qDebug("RESIZETOP "); // if ( type == KOAgenda::RESIZEBOTTOM ) // qDebug("RESIZEBOTTOM "); // if ( type == KOAgenda::MOVE ) // qDebug("MOVE "); if ( item->incidence()->type() == "Event" ) { startDt =item->incidence()->dtStart(); endDt = item->incidence()->dtEnd(); lenInSecs = startDt.secsTo( endDt ); } // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); |