aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Gehad elrobey <gehadelrobey@gmail.com>2015-08-05 22:31:27 +0200
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2015-08-15 15:02:20 +0300
commitf05e9c5c79aa6be153759837cc67fdf3c9980021 (patch)
tree51b2c229e48a7cbc7ffe996e119ffc2ee57ba916
parente2dcee55a38b86e48daad8a890ca2b4e6b122e37 (diff)
downloadsubsurface-f05e9c5c79aa6be153759837cc67fdf3c9980021.tar.gz
Printing: export more dive details with Grantlee backend
Add SAC, tags, used gas and dive rating to dive data fields exported with Grantlee backend. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com>
-rw-r--r--templatelayout.cpp57
-rw-r--r--templatelayout.h23
2 files changed, 80 insertions, 0 deletions
diff --git a/templatelayout.cpp b/templatelayout.cpp
index 1da88249b..437a6aea6 100644
--- a/templatelayout.cpp
+++ b/templatelayout.cpp
@@ -188,6 +188,26 @@ QString Dive::notes() const
return m_notes;
}
+QString Dive::tags() const
+{
+ return m_tags;
+}
+
+QString Dive::gas() const
+{
+ return m_gas;
+}
+
+QString Dive::sac() const
+{
+ return m_sac;
+}
+
+int Dive::rating() const
+{
+ return m_rating;
+}
+
void Dive::put_divemaster()
{
if (!dive->divemaster)
@@ -237,3 +257,40 @@ void Dive::put_notes()
{
m_notes = QString::fromUtf8(dive->notes);
}
+
+void Dive::put_tags()
+{
+ char buffer[256];
+ taglist_get_tagstring(dive->tag_list, buffer, 256);
+ m_tags = QString(buffer);
+}
+
+void Dive::put_gas()
+{
+ int added = 0;
+ QString gas, gases;
+ for (int i = 0; i < MAX_CYLINDERS; i++) {
+ if (!is_cylinder_used(dive, i))
+ continue;
+ gas = dive->cylinder[i].type.description;
+ gas += QString(!gas.isEmpty() ? " " : "") + gasname(&dive->cylinder[i].gasmix);
+ // if has a description and if such gas is not already present
+ if (!gas.isEmpty() && gases.indexOf(gas) == -1) {
+ if (added > 0)
+ gases += QString(" / ");
+ gases += gas;
+ added++;
+ }
+ }
+ m_gas = gases;
+}
+
+void Dive::put_sac()
+{
+ if (dive->sac) {
+ const char *unit;
+ int decimal;
+ double value = get_volume_units(dive->sac, &decimal, &unit);
+ m_sac = QString::number(value, 'f', decimal).append(unit);
+ }
+}
diff --git a/templatelayout.h b/templatelayout.h
index c545f5a05..1bb08d25d 100644
--- a/templatelayout.h
+++ b/templatelayout.h
@@ -32,6 +32,7 @@ class Dive {
private:
int m_number;
int m_id;
+ int m_rating;
QString m_date;
QString m_time;
QString m_location;
@@ -42,6 +43,9 @@ private:
QString m_airTemp;
QString m_waterTemp;
QString m_notes;
+ QString m_tags;
+ QString m_gas;
+ QString m_sac;
struct dive *dive;
void put_date_time();
void put_location();
@@ -51,6 +55,9 @@ private:
void put_buddy();
void put_temp();
void put_notes();
+ void put_tags();
+ void put_gas();
+ void put_sac();
public:
Dive(struct dive *dive)
@@ -58,6 +65,7 @@ public:
{
m_number = dive->number;
m_id = dive->id;
+ m_rating = dive->rating;
put_date_time();
put_location();
put_duration();
@@ -66,11 +74,15 @@ public:
put_buddy();
put_temp();
put_notes();
+ put_tags();
+ put_gas();
+ put_sac();
}
Dive();
~Dive();
int number() const;
int id() const;
+ int rating() const;
QString date() const;
QString time() const;
QString location() const;
@@ -81,6 +93,9 @@ public:
QString airTemp() const;
QString waterTemp() const;
QString notes() const;
+ QString tags() const;
+ QString gas() const;
+ QString sac() const;
};
Q_DECLARE_METATYPE(Dive)
@@ -112,6 +127,14 @@ else if (property == "waterTemp")
return object.waterTemp();
else if (property == "notes")
return object.notes();
+else if (property == "rating")
+ return object.rating();
+else if (property == "sac")
+ return object.sac();
+else if (property == "tags")
+ return object.tags();
+else if (property == "gas")
+ return object.gas();
GRANTLEE_END_LOOKUP
GRANTLEE_BEGIN_LOOKUP(template_options)