aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-07-02 10:53:08 -0300
committerGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-07-02 10:53:08 -0300
commitc98894fd5200008a8ef77b748bd5bdb4684cebdd (patch)
treefdf0f1cd88b50dcc925d5928de76b576f86b2781
parentca517f1bf8f3c690e2d3651d7f74e1b68ed3bb98 (diff)
downloadsubsurface-c98894fd5200008a8ef77b748bd5bdb4684cebdd.tar.gz
Added a method and a simple stub to position things using percentage.
Added a method and a simple stub to position things on the canvas using percentage - this way I have a proper control on where I want to put things on screen and it will make simpler for future changes, even if the amount of code written is a bit bigger. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
-rw-r--r--qt-ui/diveplanner.cpp22
-rw-r--r--qt-ui/diveplanner.h33
2 files changed, 41 insertions, 14 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp
index 115aa5f7a..0ee87fea5 100644
--- a/qt-ui/diveplanner.cpp
+++ b/qt-ui/diveplanner.cpp
@@ -21,9 +21,16 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
setBackgroundBrush(profile_color[BACKGROUND].at(0));
setMouseTracking(true);
setScene(new QGraphicsScene());
- scene()->setSceneRect(0,0,200,200);
+ scene()->setSceneRect(0,0,1920,1080);
+
+ QRectF r = scene()->sceneRect();
+
+ verticalLine = new QGraphicsLineItem(
+ fromPercent(0, Qt::Horizontal),
+ fromPercent(0, Qt::Vertical),
+ fromPercent(0, Qt::Horizontal),
+ fromPercent(100, Qt::Vertical));
- verticalLine = new QGraphicsLineItem(0,0,0, 200);
verticalLine->setPen(QPen(Qt::DotLine));
scene()->addItem(verticalLine);
@@ -88,6 +95,13 @@ DivePlannerGraphics::DivePlannerGraphics(QWidget* parent): QGraphicsView(parent)
setRenderHint(QPainter::Antialiasing);
}
+qreal DivePlannerGraphics::fromPercent(qreal percent, Qt::Orientation orientation)
+{
+ qreal total = orientation == Qt::Horizontal ? sceneRect().width() : sceneRect().height();
+ qreal result = (total * percent) / 100;
+ return result;
+}
+
void DivePlannerGraphics::cancelClicked()
{
qDebug() << "clicked";
@@ -133,10 +147,6 @@ void DivePlannerGraphics::mouseDoubleClickEvent(QMouseEvent* event)
createDecoStops();
}
-void DivePlannerGraphics::clearGeneratedDeco()
-{
-}
-
void DivePlannerGraphics::createDecoStops()
{
qDeleteAll(lines);
diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h
index fff6a6e57..5f0ec7e08 100644
--- a/qt-ui/diveplanner.h
+++ b/qt-ui/diveplanner.h
@@ -65,10 +65,11 @@ protected:
virtual void mousePressEvent(QMouseEvent* event);
virtual void mouseReleaseEvent(QMouseEvent* event);
- void clearGeneratedDeco();
void createDecoStops();
bool isPointOutOfBoundaries(const QPointF& point);
void deleteTemporaryDivePlan(struct divedatapoint* dp);
+
+ qreal fromPercent(qreal percent, Qt::Orientation orientation);
private slots:
void increaseTime();
void increaseDepth();
@@ -77,25 +78,41 @@ private slots:
private:
void moveActiveHandler(const QPointF& pos);
+
+ /* This are the lines of the plotted dive. */
QList<QGraphicsLineItem*> lines;
+
+ /* This is the user-entered handles. */
QList<DiveHandler *> handles;
+
+ /* those are the lines that follows the mouse. */
QGraphicsLineItem *verticalLine;
QGraphicsLineItem *horizontalLine;
+
+ /* This is the handler that's being dragged. */
DiveHandler *activeDraggedHandler;
+
+ // helper to save the positions where the drag-handler is valid.
+ QPointF lastValidPos;
+
+ /* this is the background of the dive, the blue-gradient. */
QGraphicsPolygonItem *diveBg;
+
+ /* This is the bottom ruler - the x axis, and it's associated text */
Ruler *timeLine;
QGraphicsSimpleTextItem *timeString;
+ /* this is the left ruler, the y axis, and it's associated text. */
Ruler *depthLine;
QGraphicsSimpleTextItem *depthString;
- Button *plusTime;
- Button *plusDepth;
- Button *lessTime;
- Button *lessDepth;
- Button *okBtn;
- Button *cancelBtn;
- QPointF lastValidPos;
+ /* Buttons */
+ Button *plusTime; // adds 10 minutes to the time ruler.
+ Button *plusDepth; // adds 10 meters to the depth ruler.
+ Button *lessTime; // remove 10 minutes to the time ruler.
+ Button *lessDepth; // remove 10 meters to the depth ruler.
+ Button *okBtn; // accepts, and creates a new dive based on the plan.
+ Button *cancelBtn; // rejects, and clears the dive plan.
};
#endif