mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 16:18:42 +00:00
add descriptions to RideFile types
...and use these to get rid of the explicit list of ride file type descriptions in the import wizard.
This commit is contained in:
@@ -35,6 +35,7 @@ typedef unsigned char ubyte;
|
||||
|
||||
static int Computrainer3dpFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("3dp",
|
||||
"Computrainer 3dp",
|
||||
new
|
||||
Computrainer3dpFileReader
|
||||
());
|
||||
|
||||
@@ -65,16 +65,6 @@ struct cpi_file_info {
|
||||
QString file, inname, outname;
|
||||
};
|
||||
|
||||
bool
|
||||
is_ride_filename(const QString filename)
|
||||
{
|
||||
QStringList suffixList = RideFileFactory::instance().suffixes();
|
||||
QString s("^([0-9][0-9][0-9][0-9])_([0-9][0-9])_([0-9][0-9])"
|
||||
"_([0-9][0-9])_([0-9][0-9])_([0-9][0-9])\\.(%1)$");
|
||||
QRegExp re(s.arg(suffixList.join("|")));
|
||||
return (re.exactMatch(filename));
|
||||
}
|
||||
|
||||
QString
|
||||
ride_filename_to_cpi_filename(const QString filename)
|
||||
{
|
||||
@@ -88,7 +78,7 @@ cpi_files_to_update(const QDir &dir, QList<cpi_file_info> &result)
|
||||
QListIterator<QString> i(filenames);
|
||||
while (i.hasNext()) {
|
||||
const QString &filename = i.next();
|
||||
if (is_ride_filename(filename)) {
|
||||
if (RideFileFactory::instance().rideFileRegExp().exactMatch(filename)) {
|
||||
QString inname = dir.absoluteFilePath(filename);
|
||||
QString outname =
|
||||
dir.absoluteFilePath(ride_filename_to_cpi_filename(filename));
|
||||
|
||||
@@ -28,7 +28,8 @@
|
||||
#include "math.h"
|
||||
|
||||
static int csvFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("csv", new CsvFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"csv","Comma Separated Variable", new CsvFileReader());
|
||||
|
||||
RideFile *CsvFileReader::openRideFile(QFile &file, QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -533,14 +533,18 @@ MainWindow::importFile()
|
||||
QString lastDir = (lastDirVar != QVariant())
|
||||
? lastDirVar.toString() : QDir::homePath();
|
||||
|
||||
QStringList suffixList = RideFileFactory::instance().suffixes();
|
||||
const RideFileFactory &rff = RideFileFactory::instance();
|
||||
QStringList suffixList = rff.suffixes();
|
||||
suffixList.replaceInStrings(QRegExp("^"), "*.");
|
||||
QString suffixes = suffixList.join(" ");
|
||||
QStringList fileNames;
|
||||
QStringList allFormats;
|
||||
allFormats << QString("All Support Formats (%1)").arg(suffixList.join(" "));
|
||||
foreach(QString suffix, rff.suffixes())
|
||||
allFormats << QString("%1 (*.%2)").arg(rff.description(suffix)).arg(suffix);
|
||||
allFormats << "All files (*.*)";
|
||||
fileNames = QFileDialog::getOpenFileNames(
|
||||
this, tr("Import from File"), lastDir,
|
||||
tr("All Support Formats (%1);;Raw Powertap Files (*.raw);;Comma Separated Variable (*.csv);;SRM training files (*.srm);;Garmin Training Centre (*.tcx);;Polar Precision (*.hrm);;WKO+ Files (*.wko);;Computrainer 3dp (*.3dp);;Quarq ANT+ Files (*.qla);;All files (*.*)").arg(suffixes));
|
||||
|
||||
allFormats.join(";;"));
|
||||
if (!fileNames.isEmpty()) {
|
||||
lastDir = QFileInfo(fileNames.front()).absolutePath();
|
||||
settings->setValue(GC_SETTINGS_LAST_IMPORT_PATH, lastDir);
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include "math.h"
|
||||
|
||||
static int manualFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("man", new ManualFileReader());
|
||||
RideFileFactory::instance().registerReader("man", "Manual Ride File", new ManualFileReader());
|
||||
|
||||
RideFile *ManualFileReader::openRideFile(QFile &file, QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -30,13 +30,6 @@
|
||||
#include <math.h>
|
||||
#include <QtXml/QtXml>
|
||||
|
||||
static QString rideFileRegExp()
|
||||
{
|
||||
QStringList suffixList = RideFileFactory::instance().suffixes();
|
||||
QString result("^(\\d\\d\\d\\d)_(\\d\\d)_(\\d\\d)_(\\d\\d)_(\\d\\d)_(\\d\\d)\\.(%1)$");
|
||||
return result.arg(suffixList.join("|"));
|
||||
}
|
||||
|
||||
MetricAggregator::MetricAggregator()
|
||||
{
|
||||
}
|
||||
@@ -47,7 +40,7 @@ void MetricAggregator::aggregateRides(QDir home, Zones *zones)
|
||||
DBAccess *dbaccess = new DBAccess(home);
|
||||
dbaccess->dropMetricTable();
|
||||
dbaccess->createDatabase();
|
||||
QRegExp rx(rideFileRegExp());
|
||||
QRegExp rx = RideFileFactory::instance().rideFileRegExp();
|
||||
QStringList errors;
|
||||
QStringListIterator i(RideFileFactory::instance().listRideFiles(home));
|
||||
while (i.hasNext()) {
|
||||
@@ -71,7 +64,7 @@ bool MetricAggregator::importRide(QDir path, Zones *zones, RideFile *ride, QStri
|
||||
QFile file(path.absolutePath() + "/" + fileName);
|
||||
int zone_range = -1;
|
||||
|
||||
QRegExp rx(rideFileRegExp());
|
||||
QRegExp rx = RideFileFactory::instance().rideFileRegExp();
|
||||
if (!rx.exactMatch(fileName)) {
|
||||
fprintf(stderr, "bad name: %s\n", fileName.toAscii().constData());
|
||||
assert(false);
|
||||
@@ -147,7 +140,7 @@ void MetricAggregator::scanForMissing(QDir home, Zones *zones)
|
||||
QStringList errors;
|
||||
DBAccess *dbaccess = new DBAccess(home);
|
||||
QStringList filenames = dbaccess->getAllFileNames();
|
||||
QRegExp rx(rideFileRegExp());
|
||||
QRegExp rx = RideFileFactory::instance().rideFileRegExp();
|
||||
QStringListIterator i(RideFileFactory::instance().listRideFiles(home));
|
||||
while (i.hasNext()) {
|
||||
QString name = i.next();
|
||||
|
||||
@@ -25,7 +25,8 @@
|
||||
|
||||
|
||||
static int polarFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("hrm", new PolarFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"hrm", "Polar Precision", new PolarFileReader());
|
||||
|
||||
RideFile *PolarFileReader::openRideFile(QFile &file, QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -102,8 +102,10 @@ bool quarqInterpreterInstalled( void ) {
|
||||
return installed;
|
||||
}
|
||||
|
||||
static int antFileReaderRegistered =
|
||||
quarqInterpreterInstalled() ? RideFileFactory::instance().registerReader("qla", new QuarqFileReader()) : 0;
|
||||
static int antFileReaderRegistered = quarqInterpreterInstalled()
|
||||
? RideFileFactory::instance().registerReader(
|
||||
"qla", "Quarq ANT+ Files", new QuarqFileReader())
|
||||
: 0;
|
||||
|
||||
RideFile *QuarqFileReader::openRideFile(QFile &file, QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
#include <math.h>
|
||||
|
||||
static int rawFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("raw", new RawFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"raw", "GoldenCheetah Raw PowerTap Format", new RawFileReader());
|
||||
|
||||
struct ReadState
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
* Copyright (c) 2007 Sean C. Rhea (srhea@srhea.net)
|
||||
* 2009 Justin F. Knotzke (jknotzke@shampoo.ca)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
@@ -162,11 +163,13 @@ RideFileFactory &RideFileFactory::instance()
|
||||
return *instance_;
|
||||
}
|
||||
|
||||
int RideFileFactory::registerReader(const QString &suffix,
|
||||
int RideFileFactory::registerReader(const QString &suffix,
|
||||
const QString &description,
|
||||
RideFileReader *reader)
|
||||
{
|
||||
assert(!readFuncs_.contains(suffix));
|
||||
readFuncs_.insert(suffix, reader);
|
||||
descriptions_.insert(suffix, description);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -175,6 +178,14 @@ QStringList RideFileFactory::suffixes() const
|
||||
return readFuncs_.keys();
|
||||
}
|
||||
|
||||
QRegExp
|
||||
RideFileFactory::rideFileRegExp() const
|
||||
{
|
||||
QStringList suffixList = RideFileFactory::instance().suffixes();
|
||||
QString s("^(\\d\\d\\d\\d)_(\\d\\d)_(\\d\\d)_(\\d\\d)_(\\d\\d)_(\\d\\d)\\.(%1)$");
|
||||
return QRegExp(s.arg(suffixList.join("|")));
|
||||
}
|
||||
|
||||
RideFile *RideFileFactory::openRideFile(QFile &file,
|
||||
QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -115,6 +115,7 @@ class RideFileFactory {
|
||||
|
||||
static RideFileFactory *instance_;
|
||||
QMap<QString,RideFileReader*> readFuncs_;
|
||||
QMap<QString,QString> descriptions_;
|
||||
|
||||
RideFileFactory() {}
|
||||
|
||||
@@ -122,10 +123,15 @@ class RideFileFactory {
|
||||
|
||||
static RideFileFactory &instance();
|
||||
|
||||
int registerReader(const QString &suffix, RideFileReader *reader);
|
||||
int registerReader(const QString &suffix, const QString &description,
|
||||
RideFileReader *reader);
|
||||
RideFile *openRideFile(QFile &file, QStringList &errors) const;
|
||||
QStringList listRideFiles(const QDir &dir) const;
|
||||
QStringList suffixes() const;
|
||||
QString description(const QString &suffix) const {
|
||||
return descriptions_[suffix];
|
||||
}
|
||||
QRegExp rideFileRegExp() const;
|
||||
};
|
||||
|
||||
#endif // _RideFile_h
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
#define PI M_PI
|
||||
|
||||
static int srmFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("srm", new SrmFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"srm", "SRM training files", new SrmFileReader());
|
||||
|
||||
RideFile *SrmFileReader::openRideFile(QFile &file, QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -21,7 +21,8 @@
|
||||
#include "TcxParser.h"
|
||||
|
||||
static int tcxFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("tcx", new TcxFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"tcx", "Garmin Training Centre", new TcxFileReader());
|
||||
|
||||
RideFile *TcxFileReader::openRideFile(QFile &file, QStringList &errors) const
|
||||
{
|
||||
|
||||
@@ -69,7 +69,8 @@ static WKO_ULONG WKO_device; // Device ID used for this workou
|
||||
static char WKO_GRAPHS[32]; // GRAPHS available in this workout
|
||||
|
||||
static int wkoFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("wko", new WkoFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"wko", "WKO+ Files", new WkoFileReader());
|
||||
|
||||
|
||||
//******************************************************************************
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
#include <assert.h>
|
||||
|
||||
static int xmlFileReaderRegistered =
|
||||
RideFileFactory::instance().registerReader("xml", new XmlFileReader());
|
||||
RideFileFactory::instance().registerReader(
|
||||
"xml", "XML Ride Files", new XmlFileReader());
|
||||
|
||||
struct Interval {
|
||||
double from_secs, thru_secs;
|
||||
|
||||
Reference in New Issue
Block a user