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/qmlprofile.cpp | |
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/qmlprofile.cpp')
-rw-r--r-- | qt-mobile/qmlprofile.cpp | 43 |
1 files changed, 43 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; +} |