mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-04-15 05:32:21 +00:00
LTM: Add fill curves option
.. so you can fill below the curve. .. also added a 'version' field for the file format for metric details, so we can add more fields later.
This commit is contained in:
@@ -667,6 +667,13 @@ LTMPlot::setData(LTMSettings *set)
|
||||
current->setSymbol(new QwtSymbol(sym));
|
||||
current->setPen(cpen);
|
||||
|
||||
// fill below the line
|
||||
if (metricDetail.fillCurve) {
|
||||
QColor fillColor = metricDetail.penColor;
|
||||
fillColor.setAlpha(60);
|
||||
current->setBrush(fillColor);
|
||||
}
|
||||
|
||||
|
||||
} else if (metricDetail.curveStyle == QwtPlotCurve::Dots) {
|
||||
sym.setSize(6);
|
||||
|
||||
@@ -344,6 +344,8 @@ QDataStream &operator<<(QDataStream &out, const LTMSettings &settings)
|
||||
out<<settings.legend;
|
||||
out<<settings.field1;
|
||||
out<<settings.field2;
|
||||
out<<int(-1);
|
||||
out<<int(1);
|
||||
out<<settings.metrics.count();
|
||||
foreach(MetricDetail metric, settings.metrics) {
|
||||
out<<metric.type;
|
||||
@@ -369,6 +371,7 @@ QDataStream &operator<<(QDataStream &out, const LTMSettings &settings)
|
||||
out<<metric.penStyle;
|
||||
out<<metric.brushColor;
|
||||
out<<metric.brushAlpha;
|
||||
out<<metric.fillCurve;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
@@ -377,6 +380,7 @@ QDataStream &operator>>(QDataStream &in, LTMSettings &settings)
|
||||
{
|
||||
RideMetricFactory &factory = RideMetricFactory::instance();
|
||||
int counter=0;
|
||||
int version=0;
|
||||
|
||||
// all the basic fields first
|
||||
in>>settings.name;
|
||||
@@ -389,6 +393,14 @@ QDataStream &operator>>(QDataStream &in, LTMSettings &settings)
|
||||
in>>settings.field1;
|
||||
in>>settings.field2;
|
||||
in>>counter;
|
||||
|
||||
// we now add version number before the counter
|
||||
// if counter is -1 -- to make settings extensible
|
||||
if (counter == -1) {
|
||||
in>>version;
|
||||
in>>counter;
|
||||
}
|
||||
|
||||
while(counter--) {
|
||||
MetricDetail m;
|
||||
in>>m.type;
|
||||
@@ -415,6 +427,13 @@ QDataStream &operator>>(QDataStream &in, LTMSettings &settings)
|
||||
in>>m.penStyle;
|
||||
in>>m.brushColor;
|
||||
in>>m.brushAlpha;
|
||||
|
||||
// added curve filling in v1.0
|
||||
if (version >=1) {
|
||||
in>>m.fillCurve;
|
||||
} else {
|
||||
m.fillCurve = false;
|
||||
}
|
||||
// get a metric pointer (if it exists)
|
||||
m.metric = factory.rideMetric(m.symbol);
|
||||
settings.metrics.append(m);
|
||||
|
||||
@@ -57,7 +57,7 @@ class MetricDetail {
|
||||
MetricDetail() : type(METRIC_DB), stack(false), name(""), metric(NULL), smooth(false), trend(false), topN(0),
|
||||
topOut(0), baseline(0.0), curveStyle(QwtPlotCurve::Lines), symbolStyle(QwtSymbol::NoSymbol),
|
||||
penColor(Qt::black), penAlpha(0), penWidth(1.0), penStyle(0),
|
||||
brushColor(Qt::black), brushAlpha(0) {}
|
||||
brushColor(Qt::black), brushAlpha(0), fillCurve(false) {}
|
||||
|
||||
bool operator< (MetricDetail right) const { return name < right.name; }
|
||||
|
||||
@@ -94,6 +94,9 @@ class MetricDetail {
|
||||
// brush
|
||||
QColor brushColor;
|
||||
int brushAlpha;
|
||||
|
||||
// fill curve
|
||||
bool fillCurve;
|
||||
};
|
||||
|
||||
// so we can marshal and unmarshall LTMSettings when we save
|
||||
|
||||
@@ -798,6 +798,10 @@ EditMetricDetailDialog::EditMetricDetailDialog(MainWindow *mainWindow, MetricDet
|
||||
QLabel *color = new QLabel(tr("Color"));
|
||||
curveColor = new QPushButton(this);
|
||||
|
||||
QLabel *fill = new QLabel(tr("Fill curve"));
|
||||
fillCurve = new QCheckBox("", this);
|
||||
fillCurve->setChecked(metricDetail->fillCurve);
|
||||
|
||||
// color background...
|
||||
penColor = metricDetail->penColor;
|
||||
setButtonIcon(penColor);
|
||||
@@ -845,14 +849,16 @@ EditMetricDetailDialog::EditMetricDetailDialog(MainWindow *mainWindow, MetricDet
|
||||
grid->addWidget(stack, 4, 1);
|
||||
grid->addWidget(color, 5,0);
|
||||
grid->addWidget(curveColor, 5,1);
|
||||
grid->addWidget(topN, 6,0);
|
||||
grid->addWidget(showBest, 6,1);
|
||||
grid->addWidget(outN, 7,0);
|
||||
grid->addWidget(showOut, 7,1);
|
||||
grid->addWidget(baseline, 8, 0);
|
||||
grid->addWidget(baseLine, 8,1);
|
||||
grid->addWidget(curveSmooth, 9,1);
|
||||
grid->addWidget(curveTrend, 10,1);
|
||||
grid->addWidget(fill, 6,0);
|
||||
grid->addWidget(fillCurve, 6,1);
|
||||
grid->addWidget(topN, 7,0);
|
||||
grid->addWidget(showBest, 7,1);
|
||||
grid->addWidget(outN, 8,0);
|
||||
grid->addWidget(showOut, 8,1);
|
||||
grid->addWidget(baseline, 9, 0);
|
||||
grid->addWidget(baseLine, 9,1);
|
||||
grid->addWidget(curveSmooth, 10,1);
|
||||
grid->addWidget(curveTrend, 11,1);
|
||||
|
||||
mainLayout->addLayout(grid);
|
||||
|
||||
@@ -892,6 +898,7 @@ EditMetricDetailDialog::applyClicked()
|
||||
metricDetail->curveStyle = styleMap[curveStyle->currentIndex()];
|
||||
metricDetail->symbolStyle = symbolMap[curveSymbol->currentIndex()];
|
||||
metricDetail->penColor = penColor;
|
||||
metricDetail->fillCurve = fillCurve;
|
||||
metricDetail->uname = userName->text();
|
||||
metricDetail->uunits = userUnits->text();
|
||||
metricDetail->stack = stack->isChecked();
|
||||
|
||||
@@ -179,6 +179,7 @@ class EditMetricDetailDialog : public QDialog
|
||||
*curveSymbol;
|
||||
QCheckBox *stack;
|
||||
QPushButton *curveColor;
|
||||
QCheckBox *fillCurve;
|
||||
QDoubleSpinBox *showBest,
|
||||
*showOut,
|
||||
*baseLine;
|
||||
|
||||
Reference in New Issue
Block a user