Make planner prettier. but still ugly.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
Tomaz Canabrava 2013-06-27 19:52:58 -03:00
parent 19fbc108c3
commit 233e245b78
2 changed files with 40 additions and 15 deletions

View file

@ -17,13 +17,13 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
{ {
setMouseTracking(true); setMouseTracking(true);
setScene(new QGraphicsScene()); setScene(new QGraphicsScene());
scene()->setSceneRect(0,0,100,100); scene()->setSceneRect(0,0,200,200);
verticalLine = new QGraphicsLineItem(0,0,0, 100); verticalLine = new QGraphicsLineItem(0,0,0, 200);
verticalLine->setPen(QPen(Qt::DotLine)); verticalLine->setPen(QPen(Qt::DotLine));
scene()->addItem(verticalLine); scene()->addItem(verticalLine);
horizontalLine = new QGraphicsLineItem(0,0,100,0); horizontalLine = new QGraphicsLineItem(0,0,200,0);
horizontalLine->setPen(QPen(Qt::DotLine)); horizontalLine->setPen(QPen(Qt::DotLine));
scene()->addItem(horizontalLine); scene()->addItem(horizontalLine);
@ -31,16 +31,16 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
timeLine->setMinimum(0); timeLine->setMinimum(0);
timeLine->setMaximum(TIME_INITIAL_MAX); timeLine->setMaximum(TIME_INITIAL_MAX);
timeLine->setTickInterval(10); timeLine->setTickInterval(10);
timeLine->setLine(10, 90, 99, 90); timeLine->setLine(10, 190, 190, 190);
timeLine->setOrientation(Qt::Horizontal); timeLine->setOrientation(Qt::Horizontal);
timeLine->updateTicks(); timeLine->updateTicks();
scene()->addItem(timeLine); scene()->addItem(timeLine);
depthLine = new Ruler(); depthLine = new Ruler();
depthLine->setMinimum(0); depthLine->setMinimum(0);
depthLine->setMaximum(100); depthLine->setMaximum(40);
depthLine->setTickInterval(10); depthLine->setTickInterval(10);
depthLine->setLine(10, 1, 10, 90); depthLine->setLine(10, 1, 10, 190);
depthLine->setOrientation(Qt::Vertical); depthLine->setOrientation(Qt::Vertical);
depthLine->updateTicks(); depthLine->updateTicks();
scene()->addItem(depthLine); scene()->addItem(depthLine);
@ -53,29 +53,35 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
depthString->setFlag(QGraphicsItem::ItemIgnoresTransformations); depthString->setFlag(QGraphicsItem::ItemIgnoresTransformations);
scene()->addItem(depthString); scene()->addItem(depthString);
diveBg = new QGraphicsPolygonItem();
diveBg->setBrush(QBrush(Qt::green));
scene()->addItem(diveBg);
plusDepth = new Button(); plusDepth = new Button();
plusDepth->setPixmap(QPixmap(":plus")); plusDepth->setPixmap(QPixmap(":plus"));
plusDepth->setPos(15, 1); plusDepth->setPos(0, 1);
scene()->addItem(plusDepth); scene()->addItem(plusDepth);
connect(plusDepth, SIGNAL(clicked()), this, SLOT(increaseDepth())); connect(plusDepth, SIGNAL(clicked()), this, SLOT(increaseDepth()));
plusTime = new Button(); plusTime = new Button();
plusTime->setPixmap(QPixmap(":plus")); plusTime->setPixmap(QPixmap(":plus"));
plusTime->setPos(95, 90); plusTime->setPos(180, 190);
scene()->addItem(plusTime); scene()->addItem(plusTime);
connect(plusTime, SIGNAL(clicked()), this, SLOT(increaseTime())); connect(plusTime, SIGNAL(clicked()), this, SLOT(increaseTime()));
okBtn = new Button(); okBtn = new Button();
okBtn->setText(tr("Ok")); okBtn->setText(tr("Ok"));
okBtn->setPos(1, 95); okBtn->setPos(1, 190);
scene()->addItem(okBtn); scene()->addItem(okBtn);
connect(okBtn, SIGNAL(clicked()), this, SLOT(okClicked())); connect(okBtn, SIGNAL(clicked()), this, SLOT(okClicked()));
cancelBtn = new Button(); cancelBtn = new Button();
cancelBtn->setText(tr("Cancel")); cancelBtn->setText(tr("Cancel"));
cancelBtn->setPos(10,95); cancelBtn->setPos(10,190);
scene()->addItem(cancelBtn); scene()->addItem(cancelBtn);
connect(cancelBtn, SIGNAL(clicked()), this, SLOT(cancelClicked())); connect(cancelBtn, SIGNAL(clicked()), this, SLOT(cancelClicked()));
setRenderHint(QPainter::Antialiasing);
} }
void DivePlannerGraphics::cancelClicked() void DivePlannerGraphics::cancelClicked()
@ -185,6 +191,9 @@ void DivePlannerGraphics::createDecoStops()
// entered vs. segments that were calculated // entered vs. segments that were calculated
double lastx = timeLine->posAtValue(0); double lastx = timeLine->posAtValue(0);
double lasty = depthLine->posAtValue(0); double lasty = depthLine->posAtValue(0);
QPolygonF poly;
poly.append(QPointF(lastx, lasty));
for (dp = diveplan.dp; dp != NULL; dp = dp->next) { for (dp = diveplan.dp; dp != NULL; dp = dp->next) {
double xpos = timeLine->posAtValue(dp->time / 60.0); double xpos = timeLine->posAtValue(dp->time / 60.0);
double ypos = depthLine->posAtValue(dp->depth / 1000.0); double ypos = depthLine->posAtValue(dp->depth / 1000.0);
@ -194,8 +203,22 @@ void DivePlannerGraphics::createDecoStops()
lasty = ypos; lasty = ypos;
scene()->addItem(item); scene()->addItem(item);
lines << item; lines << item;
poly.append(QPointF(lastx, lasty));
} }
diveBg->setPolygon(poly);
QRectF b = poly.boundingRect();
QLinearGradient linearGrad(
b.x(),
b.y(),
b.x(),
b.height() + b.y()
);
linearGrad.setColorAt(0, Qt::green);
linearGrad.setColorAt(1, Qt::white);
diveBg->setBrush(linearGrad);
deleteTemporaryDivePlan(diveplan.dp); deleteTemporaryDivePlan(diveplan.dp);
} }
@ -225,12 +248,12 @@ void DivePlannerGraphics::mouseMoveEvent(QMouseEvent* event)
if (isPointOutOfBoundaries(mappedPos)) if (isPointOutOfBoundaries(mappedPos))
return; return;
verticalLine->setLine(mappedPos.x(), 0, mappedPos.x(), 100); verticalLine->setLine(mappedPos.x(), 0, mappedPos.x(), 200);
horizontalLine->setLine(0, mappedPos.y(), 100, mappedPos.y()); horizontalLine->setLine(0, mappedPos.y(), 200, mappedPos.y());
depthString->setText(QString::number(rint(depthLine->valueAt(mappedPos))) + "m" ); depthString->setText(QString::number(rint(depthLine->valueAt(mappedPos))) + "m" );
depthString->setPos(0, mappedPos.y()); depthString->setPos(0, mappedPos.y());
timeString->setText(QString::number(rint(timeLine->valueAt(mappedPos))) + "min"); timeString->setText(QString::number(rint(timeLine->valueAt(mappedPos))) + "min");
timeString->setPos(mappedPos.x()+1, 90); timeString->setPos(mappedPos.x()+1, 180);
if (activeDraggedHandler) if (activeDraggedHandler)
moveActiveHandler(mappedPos); moveActiveHandler(mappedPos);
@ -311,7 +334,7 @@ void DivePlannerGraphics::mouseReleaseEvent(QMouseEvent* event)
if (activeDraggedHandler) { if (activeDraggedHandler) {
activeDraggedHandler->sec = rint(timeLine->valueAt(lastValidPos)) * 60; activeDraggedHandler->sec = rint(timeLine->valueAt(lastValidPos)) * 60;
activeDraggedHandler->mm = rint(depthLine->valueAt(lastValidPos)) * 1000; activeDraggedHandler->mm = rint(depthLine->valueAt(lastValidPos)) * 1000;
activeDraggedHandler->setBrush(QBrush()); activeDraggedHandler->setBrush(QBrush(Qt::white));
createDecoStops(); createDecoStops();
activeDraggedHandler = 0; activeDraggedHandler = 0;
} }
@ -319,6 +342,8 @@ void DivePlannerGraphics::mouseReleaseEvent(QMouseEvent* event)
DiveHandler::DiveHandler(): QGraphicsEllipseItem(), from(0), to(0) DiveHandler::DiveHandler(): QGraphicsEllipseItem(), from(0), to(0)
{ {
setBrush(Qt::white);
setZValue(2);
} }
void Ruler::setMaximum(double maximum) void Ruler::setMaximum(double maximum)

View file

@ -82,7 +82,7 @@ private:
QGraphicsLineItem *verticalLine; QGraphicsLineItem *verticalLine;
QGraphicsLineItem *horizontalLine; QGraphicsLineItem *horizontalLine;
DiveHandler *activeDraggedHandler; DiveHandler *activeDraggedHandler;
QGraphicsPolygonItem *diveBg;
Ruler *timeLine; Ruler *timeLine;
QGraphicsSimpleTextItem *timeString; QGraphicsSimpleTextItem *timeString;