Restructure source directory

Introducing a directory structure to make it a bit less
daunting for new developers and perhaps even old hands.

The main folders all start with an upper character, so src
files are now located in;

* Core - Core data structures
* Gui - Main GUI elements
* Metrics - Models and Metrics
* FileIO - Device and File I/O
* Charts - All the chart types
* Cloud - Working with Web Resources
* Train - Anything Train View specific
* ANT - Our ANT+ Stack
* Resources - Images, Translations, Web etc

Apologies to anyone who needs to merge across this update.
This commit is contained in:
Mark Liversedge
2016-02-25 14:51:53 +00:00
parent cd1934dd36
commit 4b5201c4c5
842 changed files with 212 additions and 577 deletions

View File

@@ -0,0 +1,135 @@
/*
* Copyright (c) 2010 mark Liversedge )liversedge@gmail.com)
*
* 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
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <QApplication>
#include "DataProcessor.h"
#include "Context.h"
#include "AllPlot.h"
#include "Settings.h"
#include "Units.h"
DataProcessorFactory *DataProcessorFactory::instance_;
DataProcessorFactory &DataProcessorFactory::instance()
{
if (!instance_) instance_ = new DataProcessorFactory();
return *instance_;
}
bool DataProcessorFactory::autoprocess = true;
bool
DataProcessorFactory::registerProcessor(QString name, DataProcessor *processor)
{
if (processors.contains(name)) return false; // don't register twice!
processors.insert(name, processor);
return true;
}
bool
DataProcessorFactory::autoProcess(RideFile *ride)
{
// check if autoProcess is allow at all
if (!autoprocess) return false;
bool changed = false;
// run through the processors and execute them!
QMapIterator<QString, DataProcessor*> i(processors);
i.toFront();
while (i.hasNext()) {
i.next();
QString configsetting = QString("dp/%1/apply").arg(i.key());
if (appsettings->value(NULL, GC_QSETTINGS_GLOBAL_GENERAL+configsetting, "Manual").toString() == "Auto")
i.value()->postProcess(ride);
}
return changed;
}
ManualDataProcessorDialog::ManualDataProcessorDialog(Context *context, QString name, RideItem *ride) : context(context), ride(ride)
{
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle(name);
QVBoxLayout *mainLayout = new QVBoxLayout(this);
// find our processor
const DataProcessorFactory &factory = DataProcessorFactory::instance();
QMap<QString, DataProcessor*> processors = factory.getProcessors();
processor = processors.value(name, NULL);
if (processor == NULL) reject();
// Change window title to Localized Name
setWindowTitle(processor->name());
QFont font;
font.setWeight(QFont::Black);
QLabel *configLabel = new QLabel(tr("Settings"), this);
configLabel->setFont(font);
QLabel *explainLabel = new QLabel(tr("Description"), this);
explainLabel->setFont(font);
config = processor->processorConfig(this);
config->readConfig();
explain = new QTextEdit(this);
explain->setText(config->explain());
explain->setReadOnly(true);
mainLayout->addWidget(configLabel);
mainLayout->addWidget(config);
mainLayout->addWidget(explainLabel);
mainLayout->addWidget(explain);
ok = new QPushButton(tr("OK"), this);
cancel = new QPushButton(tr("Cancel"), this);
QHBoxLayout *buttons = new QHBoxLayout();
buttons->addStretch();
buttons->addWidget(cancel);
buttons->addWidget(ok);
mainLayout->addLayout(buttons);
connect(ok, SIGNAL(clicked()), this, SLOT(okClicked()));
connect(cancel, SIGNAL(clicked()), this, SLOT(cancelClicked()));
}
void
ManualDataProcessorDialog::okClicked()
{
// stop ok button from being clickable and show waiting cursor
ok->setEnabled(false);
cancel->setEnabled(false);
QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
if (ride && ride->ride() && processor->postProcess((RideFile *)ride->ride(), config) == true) {
context->notifyRideSelected(ride); // to remain compatible with rest of GC for now
}
// reset cursor and wait
QApplication::restoreOverrideCursor();
// and we're done
accept();
}
void
ManualDataProcessorDialog::cancelClicked()
{
reject();
}