aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-01-03 12:46:56 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-01-03 13:56:05 -0800
commitb188560ae57304676fb10d8015dc2e3985e44c42 (patch)
tree81bd406f2de74d186c1113eb0634f1a38ba6f85f
parent9759d5b21a330ae2908fe91ff1533d06f6a59f4f (diff)
downloadsubsurface-b188560ae57304676fb10d8015dc2e3985e44c42.tar.gz
ui: create a RoundRectItem class
Factor out code from ProfileWidget's ToolTipItem, but make the radius of the corners dynamic. Move into backend-shared, though a new ui-shared might be preferred. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--Subsurface-mobile.pro2
-rw-r--r--backend-shared/CMakeLists.txt2
-rw-r--r--backend-shared/roundrectitem.cpp18
-rw-r--r--backend-shared/roundrectitem.h15
-rw-r--r--profile-widget/divetooltipitem.cpp13
-rw-r--r--profile-widget/divetooltipitem.h5
6 files changed, 40 insertions, 15 deletions
diff --git a/Subsurface-mobile.pro b/Subsurface-mobile.pro
index d9ea5bc99..db1ef8911 100644
--- a/Subsurface-mobile.pro
+++ b/Subsurface-mobile.pro
@@ -126,6 +126,7 @@ SOURCES += subsurface-mobile-main.cpp \
core/subsurface-qt/divelistnotifier.cpp \
backend-shared/exportfuncs.cpp \
backend-shared/plannershared.cpp \
+ backend-shared/roundrectitem.cpp \
mobile-widgets/qmlinterface.cpp \
mobile-widgets/qmlmanager.cpp \
mobile-widgets/themeinterface.cpp \
@@ -260,6 +261,7 @@ HEADERS += \
core/subsurface-qt/divelistnotifier.h \
backend-shared/exportfuncs.h \
backend-shared/plannershared.h \
+ backend-shared/roundrectitem.h \
mobile-widgets/qmlinterface.h \
mobile-widgets/qmlmanager.h \
mobile-widgets/themeinterface.h \
diff --git a/backend-shared/CMakeLists.txt b/backend-shared/CMakeLists.txt
index fdfdb1e05..736b03279 100644
--- a/backend-shared/CMakeLists.txt
+++ b/backend-shared/CMakeLists.txt
@@ -5,6 +5,8 @@ set(BACKEND_SRCS
exportfuncs.h
plannershared.cpp
plannershared.h
+ roundrectitem.cpp
+ roundrectitem.h
)
add_library(subsurface_backend_shared STATIC ${BACKEND_SRCS})
diff --git a/backend-shared/roundrectitem.cpp b/backend-shared/roundrectitem.cpp
new file mode 100644
index 000000000..2dbfd7b03
--- /dev/null
+++ b/backend-shared/roundrectitem.cpp
@@ -0,0 +1,18 @@
+#include "roundrectitem.h"
+#include <QPainter>
+#include <QStyleOptionGraphicsItem>
+
+RoundRectItem::RoundRectItem(double radius, QGraphicsItem *parent) : QGraphicsRectItem(parent),
+ radius(radius)
+{
+}
+
+void RoundRectItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *)
+{
+ painter->save();
+ painter->setClipRect(option->rect);
+ painter->setPen(pen());
+ painter->setBrush(brush());
+ painter->drawRoundedRect(rect(), radius, radius, Qt::AbsoluteSize);
+ painter->restore();
+}
diff --git a/backend-shared/roundrectitem.h b/backend-shared/roundrectitem.h
new file mode 100644
index 000000000..d3f58782f
--- /dev/null
+++ b/backend-shared/roundrectitem.h
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef ROUNDRECTITEM_H
+#define ROUNDRECTITEM_H
+
+#include <QGraphicsRectItem>
+
+class RoundRectItem : public QGraphicsRectItem {
+public:
+ RoundRectItem(double radius, QGraphicsItem *parent);
+private:
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
+ double radius;
+};
+
+#endif
diff --git a/profile-widget/divetooltipitem.cpp b/profile-widget/divetooltipitem.cpp
index 908f40070..f62a68ad8 100644
--- a/profile-widget/divetooltipitem.cpp
+++ b/profile-widget/divetooltipitem.cpp
@@ -7,7 +7,6 @@
#include "core/settings/qPrefDisplay.h"
#include <QPropertyAnimation>
#include <QGraphicsView>
-#include <QStyleOptionGraphicsItem>
#include "core/qthelper.h"
void ToolTipItem::addToolTip(const QString &toolTip, const QIcon &icon, const QPixmap& pixmap)
@@ -133,7 +132,7 @@ void ToolTipItem::expand()
status = EXPANDED;
}
-ToolTipItem::ToolTipItem(QGraphicsItem *parent) : QGraphicsRectItem(parent),
+ToolTipItem::ToolTipItem(QGraphicsItem *parent) : RoundRectItem(parent),
title(new QGraphicsSimpleTextItem(tr("Information"), this)),
status(COLLAPSED),
timeAxis(0),
@@ -194,16 +193,6 @@ void ToolTipItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
}
}
-void ToolTipItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget*)
-{
- painter->save();
- painter->setClipRect(option->rect);
- painter->setPen(pen());
- painter->setBrush(brush());
- painter->drawRoundedRect(rect(), 8, 8, Qt::AbsoluteSize);
- painter->restore();
-}
-
void ToolTipItem::persistPos()
{
qPrefDisplay::set_tooltip_position(pos());
diff --git a/profile-widget/divetooltipitem.h b/profile-widget/divetooltipitem.h
index 268159621..c9e61b6d4 100644
--- a/profile-widget/divetooltipitem.h
+++ b/profile-widget/divetooltipitem.h
@@ -2,12 +2,12 @@
#ifndef DIVETOOLTIPITEM_H
#define DIVETOOLTIPITEM_H
-#include <QGraphicsRectItem>
#include <QVector>
#include <QPair>
#include <QRectF>
#include <QIcon>
#include <QElapsedTimer>
+#include "backend-shared/roundrectitem.h"
#include "core/display.h"
class DiveCartesianAxis;
@@ -18,7 +18,7 @@ class QGraphicsPixmapItem;
/* To use a tooltip, simply ->setToolTip on the QGraphicsItem that you want
* or, if it's a "global" tooltip, set it on the mouseMoveEvent of the ProfileGraphicsView.
*/
-class ToolTipItem : public QObject, public QGraphicsRectItem {
+class ToolTipItem : public QObject, public RoundRectItem {
Q_OBJECT
void updateTitlePosition();
Q_PROPERTY(QRectF rect READ rect WRITE setRect)
@@ -45,7 +45,6 @@ public:
void setTimeAxis(DiveCartesianAxis *axis);
void setPlotInfo(const plot_info &plot);
void clearPlotInfo();
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
public
slots:
void setRect(const QRectF &rect);