subsurface/profile-widget/qmlprofile.h
Berthold Stoeger 51dc5113c2 profile: for printing/mobile access ProfileScene directly
Instead of using the interactive ProfileWidget2, just
use the ProfileScene to render the profile for printing,
export and mobile. One layer (QWidget) less.

This removes all the kludges for handling DPR on mobile.
Thus, the rendering will now be off and have to be fixed
by redoing the scaling code.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2021-12-17 11:54:23 -08:00

56 lines
1.4 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef QMLPROFILE_H
#define QMLPROFILE_H
#include "core/subsurface-qt/divelistnotifier.h"
#include <QQuickPaintedItem>
#include <memory>
class ProfileScene;
class QMLProfile : public QQuickPaintedItem
{
Q_OBJECT
Q_PROPERTY(int diveId MEMBER m_diveId WRITE setDiveId)
Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio WRITE setDevicePixelRatio NOTIFY devicePixelRatioChanged)
Q_PROPERTY(qreal xOffset MEMBER m_xOffset WRITE setXOffset NOTIFY xOffsetChanged)
Q_PROPERTY(qreal yOffset MEMBER m_yOffset WRITE setYOffset NOTIFY yOffsetChanged)
public:
explicit QMLProfile(QQuickItem *parent = 0);
~QMLProfile();
void paint(QPainter *painter);
int diveId() const;
void setDiveId(int diveId);
qreal devicePixelRatio() const;
void setDevicePixelRatio(qreal dpr);
void setXOffset(qreal value);
void setYOffset(qreal value);
public slots:
void setMargin(int margin);
void screenChanged(QScreen *screen);
void triggerUpdate();
private:
int m_diveId;
qreal m_devicePixelRatio;
int m_margin;
qreal m_xOffset, m_yOffset;
std::unique_ptr<ProfileScene> m_profileWidget;
void updateProfile();
void createProfileView();
private slots:
void divesChanged(const QVector<dive *> &dives, DiveField);
signals:
void rightAlignedChanged();
void devicePixelRatioChanged();
void xOffsetChanged();
void yOffsetChanged();
};
#endif // QMLPROFILE_H