mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
9f277e65ff
There were two function-static variables in ToolTipItem::refresh(), which is a very scary proposition. Curently, there is only one ToolTipItem, but this may change on mobile, where there are multiple profiles at the same time. Remove this timebomb and make the two objects subobjects. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
71 lines
1.7 KiB
C++
71 lines
1.7 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef DIVETOOLTIPITEM_H
|
|
#define DIVETOOLTIPITEM_H
|
|
|
|
#include <QVector>
|
|
#include <QPair>
|
|
#include <QRectF>
|
|
#include <QIcon>
|
|
#include <QElapsedTimer>
|
|
#include <QPainter>
|
|
#include "backend-shared/roundrectitem.h"
|
|
#include "core/display.h"
|
|
|
|
class DiveCartesianAxis;
|
|
class QGraphicsLineItem;
|
|
class QGraphicsSimpleTextItem;
|
|
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 RoundRectItem {
|
|
Q_OBJECT
|
|
Q_PROPERTY(QRectF rect READ rect WRITE setRect)
|
|
|
|
public:
|
|
enum Status {
|
|
COLLAPSED,
|
|
EXPANDED
|
|
};
|
|
|
|
explicit ToolTipItem(QGraphicsItem *parent = 0);
|
|
~ToolTipItem();
|
|
|
|
void refresh(const dive *d, const QPointF &pos, bool inPlanner);
|
|
void readPos();
|
|
void mousePressEvent(QGraphicsSceneMouseEvent *event);
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
|
|
void setTimeAxis(DiveCartesianAxis *axis);
|
|
void setPlotInfo(const plot_info &plot);
|
|
void clearPlotInfo();
|
|
public
|
|
slots:
|
|
void setRect(const QRectF &rect);
|
|
|
|
private:
|
|
typedef QPair<QGraphicsPixmapItem *, QGraphicsSimpleTextItem *> ToolTip;
|
|
QVector<ToolTip> toolTips;
|
|
ToolTip entryToolTip;
|
|
QGraphicsSimpleTextItem *title;
|
|
Status status;
|
|
QPixmap tissues;
|
|
QPainter painter;
|
|
QRectF rectangle;
|
|
QRectF nextRectangle;
|
|
DiveCartesianAxis *timeAxis;
|
|
plot_info pInfo;
|
|
int lastTime;
|
|
QElapsedTimer refreshTime;
|
|
QList<QGraphicsItem*> oldSelection;
|
|
|
|
void addToolTip(const QString &toolTip, const QPixmap &pixmap);
|
|
void collapse();
|
|
void expand();
|
|
void clear();
|
|
bool isExpanded() const;
|
|
void persistPos() const;
|
|
void updateTitlePosition();
|
|
};
|
|
|
|
#endif // DIVETOOLTIPITEM_H
|