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:
Mark Liversedge
2013-01-05 10:49:00 +00:00
parent a0a07e8b07
commit 8b2a04b52b
2 changed files with 89 additions and 3 deletions

View File

@@ -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();
}

View File

@@ -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