summaryrefslogtreecommitdiffstats
path: root/templatelayout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'templatelayout.cpp')
-rw-r--r--templatelayout.cpp170
1 files changed, 170 insertions, 0 deletions
diff --git a/templatelayout.cpp b/templatelayout.cpp
new file mode 100644
index 000000000..f2d72403b
--- /dev/null
+++ b/templatelayout.cpp
@@ -0,0 +1,170 @@
+#include <string>
+
+#include "templatelayout.h"
+#include "helpers.h"
+
+TemplateLayout::TemplateLayout()
+{
+}
+
+TemplateLayout::~TemplateLayout()
+{
+ delete m_engine;
+};
+
+QString TemplateLayout::generate()
+{
+ QString htmlContent;
+ m_engine = new Grantlee::Engine(this);
+
+ QSharedPointer<Grantlee::FileSystemTemplateLoader> m_templateLoader =
+ QSharedPointer<Grantlee::FileSystemTemplateLoader>(new Grantlee::FileSystemTemplateLoader());
+ m_templateLoader->setTemplateDirs(QStringList() << getSubsurfaceDataPath("printing_templates"));
+ m_engine->addTemplateLoader(m_templateLoader);
+
+ Grantlee::registerMetaType<Dive>();
+
+ QVariantHash mapping;
+ QVariantList diveList;
+
+ struct dive *dive;
+ int i;
+ for_each_dive (i, dive) {
+ //TODO check for exporting selected dives only
+ if (!dive->selected)
+ continue;
+ Dive d(dive);
+ diveList.append(QVariant::fromValue(d));
+ }
+ mapping.insert("dives", diveList);
+
+ Grantlee::Context c(mapping);
+
+ Grantlee::Template t = m_engine->loadByName("base.html");
+ if (!t || t->error()) {
+ qDebug() << "Can't load template";
+ return htmlContent;
+ }
+
+ htmlContent = t->render(&c);
+
+ if (t->error()) {
+ qDebug() << "Can't render template";
+ return htmlContent;
+ }
+
+ return htmlContent;
+}
+
+Dive::Dive()
+{
+}
+
+Dive::~Dive()
+{
+}
+
+int Dive::number() const
+{
+ return m_number;
+}
+
+QString Dive::date() const
+{
+ return m_date;
+}
+
+QString Dive::time() const
+{
+ return m_time;
+}
+
+QString Dive::location() const
+{
+ return m_location;
+}
+
+QString Dive::duration() const
+{
+ return m_duration;
+}
+
+QString Dive::depth() const
+{
+ return m_depth;
+}
+
+QString Dive::divemaster() const
+{
+ return m_divemaster;
+}
+
+QString Dive::buddy() const
+{
+ return m_buddy;
+}
+
+QString Dive::airTemp() const
+{
+ return m_airTemp;
+}
+
+QString Dive::waterTemp() const
+{
+ return m_waterTemp;
+}
+
+QString Dive::notes() const
+{
+ return m_notes;
+}
+
+void Dive::put_divemaster()
+{
+ if (!dive->divemaster)
+ m_divemaster = "";
+ else
+ m_divemaster = dive->divemaster;
+}
+
+void Dive::put_date_time()
+{
+ QDateTime localTime = QDateTime::fromTime_t(dive->when - gettimezoneoffset(displayed_dive.when));
+ localTime.setTimeSpec(Qt::UTC);
+ m_date = localTime.date().toString(QString::fromUtf8("MMM dd, yyyy"));
+ m_time = localTime.time().toString(QString::fromUtf8("hh:mm a"));
+}
+
+void Dive::put_location()
+{
+ m_location = QString::fromUtf8(get_dive_location(dive));
+}
+
+void Dive::put_depth()
+{
+ m_depth = get_depth_string(dive->dc.maxdepth.mm, true, true);
+}
+
+void Dive::put_duration()
+{
+ m_duration = QString::number(((dive->duration.seconds) / 60)) + QString::fromUtf8(" min");
+}
+
+void Dive::put_buddy()
+{
+ if (!dive->buddy)
+ m_buddy = "";
+ else
+ m_buddy = dive->buddy;
+}
+
+void Dive::put_temp()
+{
+ m_airTemp = get_temperature_string(dive->airtemp, true);
+ m_waterTemp = get_temperature_string(dive->watertemp, true);
+}
+
+void Dive::put_notes()
+{
+ m_notes = QString::fromUtf8(dive->notes);
+}