summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-28 13:35:04 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-07-28 13:37:14 -0700
commita4608f7c91138401e9987ff0478bbe42408a37a7 (patch)
treec9f48cf556a1ca39604fe5045acfe2e44087b38e
parentbe47ce624170cfce7e9763e5530f0be3555c187d (diff)
downloadsubsurface-a4608f7c91138401e9987ff0478bbe42408a37a7.tar.gz
Printing: fix dive lookup for profile generation
The existing code (and templates) looked up dives by number and then used that as index into the dive table. This worked exactly in one case: if all dives were numbered consecutively starting with 1. While that is not an entirely unreasonable case, it's of course not an acceptable assumption to make. This commit adds the necessary changes to instead look up dives by their unique id. That's what it's there fore, after all. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--printer.cpp5
-rw-r--r--printing_templates/One Dive.html2
-rw-r--r--printing_templates/Two Dives.html2
-rw-r--r--templatelayout.cpp5
-rw-r--r--templatelayout.h5
5 files changed, 15 insertions, 4 deletions
diff --git a/printer.cpp b/printer.cpp
index 10942865a..fcafaa38e 100644
--- a/printer.cpp
+++ b/printer.cpp
@@ -92,8 +92,9 @@ void Printer::render(int Pages = 0)
// render all the dive profiles in the current page
while (elemNo < collection.count() && collection.at(elemNo).geometry().y() < viewPort.y() + viewPort.height()) {
// dive id field should be dive_{{dive_no}} se we remove the first 5 characters
- int diveNo = collection.at(elemNo).attribute("id").remove(0, 5).toInt(0, 10);
- putProfileImage(collection.at(elemNo).geometry(), viewPort, &painter, get_dive(diveNo - 1), profile);
+ QString diveIdString = collection.at(elemNo).attribute("id");
+ int diveId = diveIdString.remove(0, 5).toInt(0, 10);
+ putProfileImage(collection.at(elemNo).geometry(), viewPort, &painter, get_dive_by_uniq_id(diveId), profile);
elemNo++;
}
diff --git a/printing_templates/One Dive.html b/printing_templates/One Dive.html
index 9f4d30a61..40c02b395 100644
--- a/printing_templates/One Dive.html
+++ b/printing_templates/One Dive.html
@@ -103,7 +103,7 @@
<div class="mainContainer">
<div class="innerContainer">
<div class="diveDetails">
- <div class="diveProfile" id="dive_{{ dive.number }}">
+ <div class="diveProfile" id="dive_{{ dive.id }}">
</div>
<div class="dataSection">
<table class="table_class">
diff --git a/printing_templates/Two Dives.html b/printing_templates/Two Dives.html
index 0c8eec14c..986f119dd 100644
--- a/printing_templates/Two Dives.html
+++ b/printing_templates/Two Dives.html
@@ -196,7 +196,7 @@
</td>
</tr>
</tbody></table>
- <div class="diveProfile" id="dive_{{ dive.number }}">
+ <div class="diveProfile" id="dive_{{ dive.id }}">
</div>
</div>
<div class="notesPart">
diff --git a/templatelayout.cpp b/templatelayout.cpp
index 30919891a..1da88249b 100644
--- a/templatelayout.cpp
+++ b/templatelayout.cpp
@@ -133,6 +133,11 @@ int Dive::number() const
return m_number;
}
+int Dive::id() const
+{
+ return m_id;
+}
+
QString Dive::date() const
{
return m_date;
diff --git a/templatelayout.h b/templatelayout.h
index 5f4678923..c545f5a05 100644
--- a/templatelayout.h
+++ b/templatelayout.h
@@ -31,6 +31,7 @@ signals:
class Dive {
private:
int m_number;
+ int m_id;
QString m_date;
QString m_time;
QString m_location;
@@ -56,6 +57,7 @@ public:
: dive(dive)
{
m_number = dive->number;
+ m_id = dive->id;
put_date_time();
put_location();
put_duration();
@@ -68,6 +70,7 @@ public:
Dive();
~Dive();
int number() const;
+ int id() const;
QString date() const;
QString time() const;
QString location() const;
@@ -87,6 +90,8 @@ Q_DECLARE_METATYPE(print_options)
GRANTLEE_BEGIN_LOOKUP(Dive)
if (property == "number")
return object.number();
+else if (property == "id")
+ return object.id();
else if (property == "date")
return object.date();
else if (property == "time")