From 59725062a9948e68eb8691930cd320c20d240042 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Mon, 6 May 2013 11:00:44 +0200 Subject: [PATCH] some cosmetics --- src/domain/UBGraphicsItemDelegate.cpp | 97 +++++++++++++++++---------- 1 file changed, 61 insertions(+), 36 deletions(-) diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index a52f868c..47e25284 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -718,7 +718,7 @@ void UBGraphicsItemDelegate::updateButtons(bool showUpdated) mDelegated->scene()->addItem(mDeleteButton); } - if (showUpdated /*&& mFrame->isResizing()*/) + if (showUpdated) mDeleteButton->show(); int i = 1, j = 0, k = 0; @@ -810,25 +810,29 @@ MediaTimer::MediaTimer(QGraphicsItem * parent): QGraphicsRectItem(parent) { val = 0; smallPoint = false; - setNumDigits(4); + setNumDigits(6); } MediaTimer::~MediaTimer() {} +void MediaTimer::positionHandles() +{ + digitSpace = smallPoint ? 2 : 1; + ySegLen = rect().height()*5/12; + xSegLen = ySegLen*2/3; + segLen = xSegLen; + xAdvance = segLen*(5 + digitSpace)/5; + xOffset = (rect().width() - ndigits*xAdvance + segLen/5)/2; + yOffset = rect().height() - ySegLen*2; + + setRect(rect().x(), rect().y(), xOffset + xAdvance*ndigits, rect().height()); +} void MediaTimer::drawString(const QString &s, QPainter &p, QBitArray *newPoints, bool newString) { QPoint pos; - int digitSpace = smallPoint ? 2 : 1; - int xSegLen = (rect().width()/1)*5/(ndigits*(5 + digitSpace) + digitSpace); - int ySegLen = rect().height()*5/12; - int segLen = ySegLen > xSegLen ? xSegLen : ySegLen; - int xAdvance = segLen*(5 + digitSpace)/5; - int xOffset = rect().x() + (rect().width()/1 - ndigits*xAdvance + segLen/5)/2; - int yOffset = (rect().height() - segLen*2)/2; - for (int i=0; ifont(); - f.setPointSizeF(f.pointSizeF()); - p->setFont(f); - if (smallPoint) drawString(digitStr, *p, &points, false); else @@ -1162,7 +1162,7 @@ void MediaTimer::setNumDigits(int numDigits) numDigits = 0; } if (digitStr.isNull()) { // from constructor - ndigits = numDigits; + ndigits = numDigits + numDigits/2 - 1; digitStr.fill(QLatin1Char(' '), ndigits); points.fill(0, ndigits); digitStr[ndigits - 1] = QLatin1Char('0'); // "0" is the default number @@ -1192,6 +1192,7 @@ void MediaTimer::setNumDigits(int numDigits) ndigits = numDigits; update(); } + positionHandles(); } DelegateMediaControl::DelegateMediaControl(UBGraphicsMediaItem* pDelegated, QGraphicsItem * parent) @@ -1222,13 +1223,6 @@ void DelegateMediaControl::paint(QPainter *painter, QPainterPath path; - mLCDTimerArea.setHeight(rect().height()); - mLCDTimerArea.setWidth(rect().height()); - - mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2); - mSeecArea.setHeight(rect().height()-2*mSeecAreaBorderHeight); - mSeecArea.setY(mSeecAreaBorderHeight); - path.addRoundedRect(mSeecArea, mSeecArea.height()/2, mSeecArea.height()/2); painter->fillPath(path, brush()); @@ -1258,28 +1252,55 @@ QPainterPath DelegateMediaControl::shape() const void DelegateMediaControl::positionHandles() { - mLCDTimerArea.setWidth(parentItem()->boundingRect().height()); + QRectF selfRect = rect(); + selfRect.setHeight(parentItem()->boundingRect().height()); + setRect(selfRect); + + QTime tTotal; + tTotal = tTotal.addMSecs(mTotalTimeInMs); mLCDTimerArea.setHeight(parentItem()->boundingRect().height()); + int digitsCount = 2; + int timerWidth = mLCDTimerArea.height(); + + mDisplayFormat = "ss"; + + if (tTotal.minute() > 0) + { + mDisplayFormat = "mm:" + mDisplayFormat; + digitsCount += 3; + timerWidth += mLCDTimerArea.height()*0.5; + } + + if (tTotal.hour() > 0) + { + mDisplayFormat = "hh:" + mDisplayFormat; + digitsCount += 3; + timerWidth += mLCDTimerArea.height(); + } + + lcdTimer->setNumDigits(digitsCount); + + mLCDTimerArea.setWidth(timerWidth); lcdTimer->setRect(mLCDTimerArea); - lcdTimer->setPos(mSeecArea.width()-mLCDTimerArea.width(),0); + // not the best solution, but it works. + lcdTimer->positionHandles(); + mLCDTimerArea = lcdTimer->rect(); + // ------------------------------------- + + lcdTimer->setPos(rect().width() - mLCDTimerArea.width(), 0); mSeecAreaBorderHeight = rect().height()/20; mSeecArea.setWidth(rect().width()-mLCDTimerArea.width()-2); mSeecArea.setHeight(rect().height()-2*mSeecAreaBorderHeight); mSeecArea.setY(mSeecAreaBorderHeight); - - QRectF selfRect = rect(); - selfRect.setHeight(parentItem()->boundingRect().height()); - setRect(selfRect); - - lcdTimer->setPos(rect().width() - mLCDTimerArea.width(), 0); } void DelegateMediaControl::update() { - QTime t; - t = t.addMSecs(mCurrentTimeInMs < 0 ? 0 : mCurrentTimeInMs); - lcdTimer->display(t.toString("m:ss")); + QTime tCurrent; + tCurrent = tCurrent.addMSecs(mCurrentTimeInMs < 0 ? 0 : mCurrentTimeInMs); + + lcdTimer->display(tCurrent.toString(mDisplayFormat)); QGraphicsRectItem::update(); } @@ -1293,8 +1314,12 @@ void DelegateMediaControl::updateTicker(qint64 time ) void DelegateMediaControl::totalTimeChanged(qint64 newTotalTime) { - mTotalTimeInMs = newTotalTime; - update(); + if (mTotalTimeInMs != newTotalTime) + { + mTotalTimeInMs = newTotalTime; + positionHandles(); + update(); + } } @@ -1331,7 +1356,7 @@ void DelegateMediaControl::seekToMousePos(QPointF mousePos) qreal frameWidth = rect().height() / 2; minX = frameWidth; - length = mSeecArea.width() - lcdTimer->rect().width(); + length = mSeecArea.width() - mSeecArea.height(); qreal mouseX = mousePos.x(); if (mouseX >= (mSeecArea.width() - mSeecArea.height()/2))