summaryrefslogtreecommitdiffstats
path: root/qt-mobile
diff options
context:
space:
mode:
authorGravatar Grace Karanja <gracie.karanja89@gmail.com>2015-07-17 19:09:42 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-17 12:00:29 -0700
commit59232ca17237c67254038b8d2abdf13cf6701449 (patch)
treeca8793268734fc587a2f8a58117e2610cbffeb4d /qt-mobile
parentdf1a1f7034c6c332f7f71a64ab45955c089cd56b (diff)
downloadsubsurface-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.cpp43
-rw-r--r--qt-mobile/qmlprofile.h27
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