mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
Chart Dates: Part 3c of 3
Added chart date selection to the Summary chart.
Still need to add this to;
- Histogram
This commit is contained in:
@@ -33,12 +33,30 @@
|
||||
#include <math.h>
|
||||
|
||||
RideSummaryWindow::RideSummaryWindow(MainWindow *mainWindow, bool ridesummary) :
|
||||
GcWindow(mainWindow), mainWindow(mainWindow), ridesummary(ridesummary)
|
||||
GcWindow(mainWindow), mainWindow(mainWindow), ridesummary(ridesummary), useCustom(false)
|
||||
{
|
||||
setInstanceName("Ride Summary Window");
|
||||
setControls(NULL);
|
||||
setRideItem(NULL);
|
||||
|
||||
// allow user to select date range if in summary mode
|
||||
dateSetting = new DateSettingsEdit(this);
|
||||
if (ridesummary) {
|
||||
|
||||
setControls(NULL);
|
||||
dateSetting->hide(); // not needed, but holds property values
|
||||
|
||||
} else {
|
||||
|
||||
QWidget *c = new QWidget;
|
||||
c->setContentsMargins(0,0,0,0);
|
||||
QFormLayout *cl = new QFormLayout(c);
|
||||
cl->setContentsMargins(0,0,0,0);
|
||||
cl->setSpacing(0);
|
||||
setControls(c);
|
||||
|
||||
cl->addRow(new QLabel(tr("Date range")), dateSetting);
|
||||
}
|
||||
|
||||
QVBoxLayout *vlayout = new QVBoxLayout;
|
||||
vlayout->setSpacing(0);
|
||||
vlayout->setContentsMargins(10,10,10,10);
|
||||
@@ -55,13 +73,22 @@ RideSummaryWindow::RideSummaryWindow(MainWindow *mainWindow, bool ridesummary) :
|
||||
vlayout->addWidget(rideSummary);
|
||||
|
||||
if (ridesummary) {
|
||||
|
||||
connect(this, SIGNAL(rideItemChanged(RideItem*)), this, SLOT(rideItemChanged()));
|
||||
connect(mainWindow, SIGNAL(zonesChanged()), this, SLOT(refresh()));
|
||||
connect(mainWindow, SIGNAL(intervalsChanged()), this, SLOT(refresh()));
|
||||
|
||||
} else {
|
||||
|
||||
connect(this, SIGNAL(dateRangeChanged(DateRange)), this, SLOT(dateRangeChanged(DateRange)));
|
||||
connect(mainWindow, SIGNAL(rideAdded(RideItem*)), this, SLOT(refresh()));
|
||||
connect(mainWindow, SIGNAL(rideDeleted(RideItem*)), this, SLOT(refresh()));
|
||||
|
||||
// date settings
|
||||
connect(dateSetting, SIGNAL(useCustomRange(DateRange)), this, SLOT(useCustomRange(DateRange)));
|
||||
connect(dateSetting, SIGNAL(useThruToday()), this, SLOT(useThruToday()));
|
||||
connect(dateSetting, SIGNAL(useStandardRange()), this, SLOT(useStandardRange()));
|
||||
|
||||
}
|
||||
setLayout(vlayout);
|
||||
}
|
||||
@@ -434,6 +461,31 @@ RideSummaryWindow::htmlSummary() const
|
||||
return summary;
|
||||
}
|
||||
|
||||
void
|
||||
RideSummaryWindow::useCustomRange(DateRange range)
|
||||
{
|
||||
// plot using the supplied range
|
||||
useCustom = true;
|
||||
custom = range;
|
||||
dateRangeChanged(custom);
|
||||
}
|
||||
|
||||
void
|
||||
RideSummaryWindow::useStandardRange()
|
||||
{
|
||||
useCustom = false;
|
||||
dateRangeChanged(myDateRange);
|
||||
}
|
||||
|
||||
void
|
||||
RideSummaryWindow::useThruToday()
|
||||
{
|
||||
// plot using the supplied range
|
||||
useCustom = true;
|
||||
custom = myDateRange;
|
||||
if (custom.to > QDate::currentDate()) custom.to = QDate::currentDate();
|
||||
dateRangeChanged(custom);
|
||||
}
|
||||
void RideSummaryWindow::dateRangeChanged(DateRange dr)
|
||||
{
|
||||
if (!amVisible()) return;
|
||||
@@ -442,6 +494,8 @@ void RideSummaryWindow::dateRangeChanged(DateRange dr)
|
||||
if (dr.from == current.from && dr.to == current.to) return;
|
||||
else current = dr;
|
||||
|
||||
data = mainWindow->metricDB->getAllMetricsFor(myDateRange);
|
||||
if (useCustom) data = mainWindow->metricDB->getAllMetricsFor(custom);
|
||||
else data = mainWindow->metricDB->getAllMetricsFor(myDateRange);
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
@@ -33,12 +33,35 @@ class RideSummaryWindow : public GcWindow
|
||||
Q_OBJECT
|
||||
G_OBJECT
|
||||
|
||||
Q_PROPERTY(QDate fromDate READ fromDate WRITE setFromDate USER true)
|
||||
Q_PROPERTY(QDate toDate READ toDate WRITE setToDate USER true)
|
||||
Q_PROPERTY(QDate startDate READ startDate WRITE setStartDate USER true)
|
||||
Q_PROPERTY(int lastN READ lastN WRITE setLastN USER true)
|
||||
Q_PROPERTY(int lastNX READ lastNX WRITE setLastNX USER true)
|
||||
Q_PROPERTY(int prevN READ prevN WRITE setPrevN USER true)
|
||||
Q_PROPERTY(int useSelected READ useSelected WRITE setUseSelected USER true) // !! must be last property !!
|
||||
|
||||
public:
|
||||
|
||||
// two modes - summarise ride or summarise date range
|
||||
RideSummaryWindow(MainWindow *parent, bool ridesummary = true);
|
||||
|
||||
// properties
|
||||
int useSelected() { return dateSetting->mode(); }
|
||||
void setUseSelected(int x) { dateSetting->setMode(x); }
|
||||
QDate fromDate() { return dateSetting->fromDate(); }
|
||||
void setFromDate(QDate date) { return dateSetting->setFromDate(date); }
|
||||
QDate toDate() { return dateSetting->toDate(); }
|
||||
void setToDate(QDate date) { return dateSetting->setToDate(date); }
|
||||
QDate startDate() { return dateSetting->startDate(); }
|
||||
void setStartDate(QDate date) { return dateSetting->setStartDate(date); }
|
||||
int lastN() { return dateSetting->lastN(); }
|
||||
void setLastN(int x) { dateSetting->setLastN(x); }
|
||||
int lastNX() { return dateSetting->lastNX(); }
|
||||
void setLastNX(int x) { dateSetting->setLastNX(x); }
|
||||
int prevN() { return dateSetting->prevN(); }
|
||||
void setPrevN(int x) { dateSetting->setPrevN(x); }
|
||||
|
||||
protected slots:
|
||||
|
||||
void refresh();
|
||||
@@ -47,6 +70,11 @@ class RideSummaryWindow : public GcWindow
|
||||
void rideItemChanged();
|
||||
void metadataChanged();
|
||||
|
||||
// date settings
|
||||
void useCustomRange(DateRange);
|
||||
void useStandardRange();
|
||||
void useThruToday();
|
||||
|
||||
protected:
|
||||
|
||||
QString htmlSummary() const;
|
||||
@@ -59,6 +87,10 @@ class RideSummaryWindow : public GcWindow
|
||||
|
||||
QList<SummaryMetrics> data; // when in date range mode
|
||||
DateRange current;
|
||||
|
||||
DateSettingsEdit *dateSetting;
|
||||
bool useCustom;
|
||||
DateRange custom;
|
||||
};
|
||||
|
||||
#endif // _GC_RideSummaryWindow_h
|
||||
|
||||
Reference in New Issue
Block a user