From 15342232ca2ed424f1e429eb662bce3fff442c1e Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Sat, 5 Jun 2021 18:42:56 +0200 Subject: [PATCH] profile: introduce a ProfileScene stub This simply subclasses QGraphicsScene and is used as a drop-in replacement. The plan is to step-by-step move rendering functions there until the non-interactive code can only use the scene and doesn't have to use the QGraphicsView. This will hopefully remove quite some conditional code. Signed-off-by: Berthold Stoeger --- Subsurface-mobile.pro | 2 ++ profile-widget/CMakeLists.txt | 2 ++ profile-widget/profilescene.cpp | 10 ++++++++++ profile-widget/profilescene.h | 15 +++++++++++++++ profile-widget/profilewidget2.cpp | 4 +++- profile-widget/profilewidget2.h | 2 ++ 6 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 profile-widget/profilescene.cpp create mode 100644 profile-widget/profilescene.h diff --git a/Subsurface-mobile.pro b/Subsurface-mobile.pro index de8489a9c..178f1eeba 100644 --- a/Subsurface-mobile.pro +++ b/Subsurface-mobile.pro @@ -170,6 +170,7 @@ SOURCES += subsurface-mobile-main.cpp \ profile-widget/diveeventitem.cpp \ profile-widget/diveprofileitem.cpp \ profile-widget/profilewidget2.cpp \ + profile-widget/profilescene.cpp \ profile-widget/ruleritem.cpp \ profile-widget/animationfunctions.cpp \ profile-widget/divepixmapitem.cpp \ @@ -325,6 +326,7 @@ HEADERS += \ profile-widget/qmlprofile.h \ profile-widget/diveprofileitem.h \ profile-widget/profilewidget2.h \ + profile-widget/profilescene.h \ profile-widget/ruleritem.h \ profile-widget/diveeventitem.h \ profile-widget/divetooltipitem.h \ diff --git a/profile-widget/CMakeLists.txt b/profile-widget/CMakeLists.txt index ef8267d92..403f05930 100644 --- a/profile-widget/CMakeLists.txt +++ b/profile-widget/CMakeLists.txt @@ -22,6 +22,8 @@ set(SUBSURFACE_PROFILE_LIB_SRCS divetooltipitem.h profilewidget2.cpp profilewidget2.h + profilescene.cpp + profilescene.h ruleritem.cpp ruleritem.h tankitem.cpp diff --git a/profile-widget/profilescene.cpp b/profile-widget/profilescene.cpp new file mode 100644 index 000000000..0b408b804 --- /dev/null +++ b/profile-widget/profilescene.cpp @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: GPL-2.0 +#include "profilescene.h" + +ProfileScene::ProfileScene() +{ +} + +ProfileScene::~ProfileScene() +{ +} diff --git a/profile-widget/profilescene.h b/profile-widget/profilescene.h new file mode 100644 index 000000000..13d25700a --- /dev/null +++ b/profile-widget/profilescene.h @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0 +// Displays the dive profile. Used by the interactive profile widget +// and the printing/exporting code. +#ifndef PROFILESCENE_H +#define PROFILESCENE_H + +#include + +class ProfileScene : public QGraphicsScene { +public: + ProfileScene(); + ~ProfileScene(); +}; + +#endif diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index b4d8bc223..8280da1a1 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 #include "profile-widget/profilewidget2.h" +#include "profile-widget/profilescene.h" #include "qt-models/diveplotdatamodel.h" #include "core/event.h" #include "core/subsurface-string.h" @@ -96,6 +97,7 @@ T *ProfileWidget2::createItem(const DiveCartesianAxis &vAxis, int vColumn, int z } ProfileWidget2::ProfileWidget2(DivePlannerPointsModel *plannerModelIn, double fontPrintScale, QWidget *parent) : QGraphicsView(parent), + profileScene(new ProfileScene), currentState(INVALID), dataModel(new DivePlotDataModel(this)), plannerModel(plannerModelIn), @@ -463,7 +465,7 @@ ItemPos::ItemPos() void ProfileWidget2::setupSceneAndFlags() { - setScene(new QGraphicsScene(this)); + setScene(profileScene.get()); scene()->setSceneRect(0, 0, 100, 100); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); diff --git a/profile-widget/profilewidget2.h b/profile-widget/profilewidget2.h index a140ef129..515de6660 100644 --- a/profile-widget/profilewidget2.h +++ b/profile-widget/profilewidget2.h @@ -24,6 +24,7 @@ #include "core/units.h" #include "core/subsurface-qt/divelistnotifier.h" +class ProfileScene; class RulerItem2; struct dive; struct plot_info; @@ -82,6 +83,7 @@ public: #ifndef SUBSURFACE_MOBILE bool eventFilter(QObject *, QEvent *) override; #endif + std::unique_ptr profileScene; State currentState; int animSpeed;