profile: pass fontPrintScale at construction time

Instead of intializing the text fields and then changing the
font scale via signal-rigmarole, pass down the font-scale
at construction time.

Since the fontPrintScale is only set in print mode, we also
can access it directly instead of testing for printMode.

Since the DiveTextItem is not updated using signals anymore,
the connected flag can be removed.

The commit is larger than I had hoped for, but this makes
things ultimately less brittle.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2021-06-03 17:19:38 +02:00 committed by Dirk Hohndel
parent 7744fec0bf
commit 01983c65c3
9 changed files with 88 additions and 98 deletions

View file

@ -13,8 +13,8 @@
#include "profile-widget/profilewidget2.h"
AbstractProfilePolygonItem::AbstractProfilePolygonItem(const DivePlotDataModel &model, const DiveCartesianAxis &horizontal, int hColumn,
const DiveCartesianAxis &vertical, int vColumn) :
hAxis(horizontal), vAxis(vertical), dataModel(model), hDataColumn(hColumn), vDataColumn(vColumn)
const DiveCartesianAxis &vertical, int vColumn, double fontPrintScale) :
hAxis(horizontal), vAxis(vertical), dataModel(model), hDataColumn(hColumn), vDataColumn(vColumn), fontPrintScale(fontPrintScale)
{
setCacheMode(DeviceCoordinateCache);
}
@ -46,8 +46,9 @@ void AbstractProfilePolygonItem::replot(const dive *, bool)
texts.clear();
}
DiveProfileItem::DiveProfileItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn),
DiveProfileItem::DiveProfileItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale),
show_reported_ceiling(0), reported_ceiling_in_red(0)
{
}
@ -141,7 +142,7 @@ void DiveProfileItem::replot(const dive *d, bool in_planner)
void DiveProfileItem::plot_depth_sample(struct plot_data *entry, QFlags<Qt::AlignmentFlag> flags, const QColor &color)
{
DiveTextItem *item = new DiveTextItem(this);
DiveTextItem *item = new DiveTextItem(fontPrintScale, this);
item->setPos(hAxis.posAtValue(entry->sec), vAxis.posAtValue(entry->depth));
item->setText(get_depth_string(entry->depth, true));
item->setAlignment(flags);
@ -149,8 +150,9 @@ void DiveProfileItem::plot_depth_sample(struct plot_data *entry, QFlags<Qt::Alig
texts.append(item);
}
DiveHeartrateItem::DiveHeartrateItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn)
DiveHeartrateItem::DiveHeartrateItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale)
{
QPen pen;
pen.setBrush(QBrush(getColor(::HR_PLOT)));
@ -212,7 +214,7 @@ void DiveHeartrateItem::replot(const dive *, bool)
void DiveHeartrateItem::createTextItem(int sec, int hr)
{
DiveTextItem *text = new DiveTextItem(this);
DiveTextItem *text = new DiveTextItem(fontPrintScale, this);
text->setAlignment(Qt::AlignRight | Qt::AlignBottom);
text->setBrush(getColor(HR_TEXT));
text->setPos(QPointF(hAxis.posAtValue(sec), vAxis.posAtValue(hr)));
@ -231,8 +233,9 @@ void DiveHeartrateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem*
painter->restore();
}
DivePercentageItem::DivePercentageItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn, int i) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn),
DivePercentageItem::DivePercentageItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, int i, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale),
tissueIndex(i)
{
}
@ -301,8 +304,9 @@ void DivePercentageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
painter->restore();
}
DiveTemperatureItem::DiveTemperatureItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn)
DiveTemperatureItem::DiveTemperatureItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale)
{
QPen pen;
pen.setBrush(QBrush(getColor(::TEMP_PLOT)));
@ -359,7 +363,7 @@ void DiveTemperatureItem::createTextItem(int sec, int mkelvin)
temperature_t temp;
temp.mkelvin = mkelvin;
DiveTextItem *text = new DiveTextItem(this);
DiveTextItem *text = new DiveTextItem(fontPrintScale, this);
text->setAlignment(Qt::AlignRight | Qt::AlignBottom);
text->setBrush(getColor(TEMP_TEXT));
text->setPos(QPointF(hAxis.posAtValue(sec), vAxis.posAtValue(mkelvin)));
@ -378,8 +382,9 @@ void DiveTemperatureItem::paint(QPainter *painter, const QStyleOptionGraphicsIte
painter->restore();
}
DiveMeanDepthItem::DiveMeanDepthItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn)
DiveMeanDepthItem::DiveMeanDepthItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale)
{
QPen pen;
pen.setBrush(QBrush(getColor(::HR_AXIS)));
@ -426,7 +431,7 @@ void DiveMeanDepthItem::createTextItem()
int sec = entry[dataModel.rowCount()-1].sec;
qDeleteAll(texts);
texts.clear();
DiveTextItem *text = new DiveTextItem(this);
DiveTextItem *text = new DiveTextItem(fontPrintScale, this);
text->setAlignment(Qt::AlignRight | Qt::AlignTop);
text->setBrush(getColor(TEMP_TEXT));
text->setPos(QPointF(hAxis.posAtValue(sec) + 1, vAxis.posAtValue(lastRunningSum)));
@ -564,7 +569,7 @@ void DiveGasPressureItem::plotPressureValue(int mbar, int sec, QFlags<Qt::Alignm
{
const char *unit;
int pressure = get_pressure_units(mbar, &unit);
DiveTextItem *text = new DiveTextItem(this);
DiveTextItem *text = new DiveTextItem(fontPrintScale, this);
text->setPos(hAxis.posAtValue(sec), vAxis.posAtValue(mbar) + pressure_offset );
text->setText(QString("%1%2").arg(pressure).arg(unit));
text->setAlignment(align);
@ -575,7 +580,7 @@ void DiveGasPressureItem::plotPressureValue(int mbar, int sec, QFlags<Qt::Alignm
void DiveGasPressureItem::plotGasValue(int mbar, int sec, struct gasmix gasmix, QFlags<Qt::AlignmentFlag> align, double gasname_offset)
{
QString gas = get_gas_string(gasmix);
DiveTextItem *text = new DiveTextItem(this);
DiveTextItem *text = new DiveTextItem(fontPrintScale, this);
text->setPos(hAxis.posAtValue(sec), vAxis.posAtValue(mbar) + gasname_offset );
text->setText(gas);
text->setAlignment(align);
@ -601,8 +606,9 @@ void DiveGasPressureItem::paint(QPainter *painter, const QStyleOptionGraphicsIte
painter->restore();
}
DiveCalculatedCeiling::DiveCalculatedCeiling(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn)
DiveCalculatedCeiling::DiveCalculatedCeiling(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale)
{
}
@ -634,13 +640,15 @@ void DiveCalculatedCeiling::paint(QPainter *painter, const QStyleOptionGraphicsI
QGraphicsPolygonItem::paint(painter, option, widget);
}
DiveCalculatedTissue::DiveCalculatedTissue(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
DiveCalculatedCeiling(model, hAxis, hColumn, vAxis, vColumn)
DiveCalculatedTissue::DiveCalculatedTissue(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
DiveCalculatedCeiling(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale)
{
}
DiveReportedCeiling::DiveReportedCeiling(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn)
DiveReportedCeiling::DiveReportedCeiling(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale)
{
}
@ -743,8 +751,9 @@ void PartialPressureGasItem::setThresholdSettingsKey(const double *prefPointerMi
thresholdPtrMax = prefPointerMax;
}
PartialPressureGasItem::PartialPressureGasItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn, const DiveCartesianAxis &vAxis, int vColumn) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn),
PartialPressureGasItem::PartialPressureGasItem(const DivePlotDataModel &model, const DiveCartesianAxis &hAxis, int hColumn,
const DiveCartesianAxis &vAxis, int vColumn, double fontPrintScale) :
AbstractProfilePolygonItem(model, hAxis, hColumn, vAxis, vColumn, fontPrintScale),
thresholdPtrMin(NULL),
thresholdPtrMax(NULL)
{