summaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2014-07-09 11:19:08 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-07-09 11:19:08 -0700
commit2d77788cb2fe293b72cff7f51a200d90c928dcea (patch)
tree37b7f4f9202430b0f2f04f8262a18ce7a69ddbeb /qt-ui
parent99859d9a07d06ff080b52bfe5af1861d4ccfa6d3 (diff)
downloadsubsurface-2d77788cb2fe293b72cff7f51a200d90c928dcea.tar.gz
Printing: force redrawing of the profile
If the first dive we end up rendering is the dive currently shown, the info overlay would end up being printed which looks really silly. See #590 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/printlayout.cpp5
-rw-r--r--qt-ui/profile/profilewidget2.cpp12
-rw-r--r--qt-ui/profile/profilewidget2.h3
3 files changed, 8 insertions, 12 deletions
diff --git a/qt-ui/printlayout.cpp b/qt-ui/printlayout.cpp
index 9f507a394..1c0a82829 100644
--- a/qt-ui/printlayout.cpp
+++ b/qt-ui/printlayout.cpp
@@ -183,7 +183,7 @@ void PrintLayout::printProfileDives(int divesPerRow, int divesPerColumn)
// draw a profile
painter.translate((scaledW + padW) * col, (scaledH + padH) * row + yOffsetProfile);
- profile->plotDive(dive);
+ profile->plotDive(dive, true); // make sure the profile is actually redrawn
profile->render(&painter, QRect(0, 0, scaledW, scaledH - tableH - padPT));
painter.setTransform(origTransform);
@@ -202,7 +202,8 @@ void PrintLayout::printProfileDives(int divesPerRow, int divesPerColumn)
profile->setFrameStyle(profileFrameStyle);
profile->setPrintMode(false);
profile->resize(originalSize);
- profile->plotDive();
+ // we need to force a redraw of the profile so it switches back from print mode
+ profile->plotDive(0, true);
}
/* we create a table that has a fixed height, but can stretch to fit certain width */
diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp
index 9e37f9559..5b190dfba 100644
--- a/qt-ui/profile/profilewidget2.cpp
+++ b/qt-ui/profile/profilewidget2.cpp
@@ -69,7 +69,6 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
backgroundFile(":poster"),
toolTipItem(new ToolTipItem()),
isPlotZoomed(prefs.zoomed_plot),
- forceReplot(false),
profileYAxis(new DepthAxis()),
gasYAxis(new PartialGasPressureAxis()),
temperatureAxis(new TemperatureAxis()),
@@ -254,8 +253,7 @@ void ProfileWidget2::setupItemOnScene()
void ProfileWidget2::replot()
{
dataModel->clear();
- forceReplot = true;
- plotDive(); // simply plot the displayed_dive again
+ plotDive(0, true); // simply plot the displayed_dive again
}
void ProfileWidget2::setupItemSizes()
@@ -354,7 +352,7 @@ void ProfileWidget2::setupSceneAndFlags()
}
// Currently just one dive, but the plan is to enable All of the selected dives.
-void ProfileWidget2::plotDive(struct dive *d)
+void ProfileWidget2::plotDive(struct dive *d, bool force)
{
static bool firstCall = true;
QTime measureDuration; // let's measure how long this takes us (maybe we'll turn of TTL calculation later
@@ -371,11 +369,9 @@ void ProfileWidget2::plotDive(struct dive *d)
// computer of the same dive, so we check the unique id of the dive
// and the selected dive computer number against the ones we are
// showing (can't compare the dive pointers as those might change).
- if (d->id == displayed_dive.id && dc_number == dataModel->dcShown() && !forceReplot)
+ if (d->id == displayed_dive.id && dc_number == dataModel->dcShown() && !force)
return;
- forceReplot = false;
-
// this copies the dive and makes copies of all the relevant additional data
copy_dive(d, &displayed_dive);
} else {
@@ -961,7 +957,7 @@ void ProfileWidget2::deleteCurrentDC()
delete_current_divecomputer();
mark_divelist_changed(true);
// we need to force it since it's likely the same dive and same dc_number - but that's a different dive computer now
- forceReplot = true;
+ MainWindow::instance()->graphics()->plotDive(0, true);
MainWindow::instance()->refreshDisplay();
}
diff --git a/qt-ui/profile/profilewidget2.h b/qt-ui/profile/profilewidget2.h
index 6ed132b38..2d9e921f0 100644
--- a/qt-ui/profile/profilewidget2.h
+++ b/qt-ui/profile/profilewidget2.h
@@ -67,7 +67,7 @@ public:
};
ProfileWidget2(QWidget *parent = 0);
- void plotDive(struct dive *d = 0);
+ void plotDive(struct dive *d = 0, bool force = false);
virtual bool eventFilter(QObject *, QEvent *);
void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *hAxis, DiveCartesianAxis *vAxis, DivePlotDataModel *model, int vData, int hData, int zValue);
void setPrintMode(bool mode, bool grayscale = false);
@@ -135,7 +135,6 @@ private:
QString backgroundFile;
ToolTipItem *toolTipItem;
bool isPlotZoomed;
- bool forceReplot;
// All those here should probably be merged into one structure,
// So it's esyer to replicate for more dives later.
// In the meantime, keep it here.