diff options
author | Grace Karanja <gracie.karanja89@gmail.com> | 2015-07-17 19:09:42 +0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-07-17 12:00:29 -0700 |
commit | 59232ca17237c67254038b8d2abdf13cf6701449 (patch) | |
tree | ca8793268734fc587a2f8a58117e2610cbffeb4d /qt-mobile | |
parent | df1a1f7034c6c332f7f71a64ab45955c089cd56b (diff) | |
download | subsurface-59232ca17237c67254038b8d2abdf13cf6701449.tar.gz |
QML UI: Add QMLProfile class
Add a C++ class to render the dive profile. The rendered image is then
passed on to QML.
Signed-off-by: Grace Karanja <gracie.karanja89@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-mobile')
-rw-r--r-- | qt-mobile/qmlprofile.cpp | 43 | ||||
-rw-r--r-- | qt-mobile/qmlprofile.h | 27 |
2 files changed, 70 insertions, 0 deletions
diff --git a/qt-mobile/qmlprofile.cpp b/qt-mobile/qmlprofile.cpp new file mode 100644 index 000000000..351b5b1ce --- /dev/null +++ b/qt-mobile/qmlprofile.cpp @@ -0,0 +1,43 @@ +#include "qmlprofile.h" +#include "profilewidget2.h" +#include "dive.h" + +QMLProfile::QMLProfile(QQuickItem *parent) : + QQuickPaintedItem(parent) +{ + profile = new ProfileWidget2(0); + profile->setProfileState(); + profile->setToolTipVisibile(false); +} + +void QMLProfile::paint(QPainter *painter) +{ + if (m_diveId.toInt() < 1) + return; + + struct dive *d; + d = get_dive_by_uniq_id(m_diveId.toInt()); + if (!d) + return; + + int old_animation_speed = prefs.animation_speed; + prefs.animation_speed = 0; // no animations while rendering the QGraphicsView + profile->plotDive(d); + // we need to show the widget so it gets populated, but then + // hide it right away so we get to draw it ourselves below + profile->show(); + profile->hide(); + profile->resize(this->width(), this->height()); + profile->render(painter, profile->geometry()); + prefs.animation_speed = old_animation_speed; +} + +QString QMLProfile::diveId() const +{ + return m_diveId; +} + +void QMLProfile::setDiveId(const QString &diveId) +{ + m_diveId = diveId; +} diff --git a/qt-mobile/qmlprofile.h b/qt-mobile/qmlprofile.h new file mode 100644 index 000000000..b5192913a --- /dev/null +++ b/qt-mobile/qmlprofile.h @@ -0,0 +1,27 @@ +#ifndef QMLPROFILE_H +#define QMLPROFILE_H + +#include <QQuickPaintedItem> + +class ProfileWidget2; + +class QMLProfile : public QQuickPaintedItem +{ + Q_OBJECT + Q_PROPERTY(QString diveId READ diveId WRITE setDiveId NOTIFY diveIdChanged) +public: + explicit QMLProfile(QQuickItem *parent = 0); + void paint(QPainter *painter); + + QString diveId() const; + void setDiveId(const QString &diveId); + +private: + QString m_diveId; + ProfileWidget2 *profile; +signals: + void rightAlignedChanged(); + void diveIdChanged(); +}; + +#endif // QMLPROFILE_H |