Merge pull request #1282 from amtriathlon/master

Added completers to Sport and Workout Code fields in ManualRideDialog
This commit is contained in:
Mark Liversedge
2015-01-25 09:29:03 +00:00
3 changed files with 40 additions and 19 deletions

View File

@@ -23,6 +23,7 @@
#include "RideCache.h"
#include "RideItem.h"
#include "Settings.h"
#include "RideMetadata.h"
#include <string.h>
#include <errno.h>
#include <QtGui>
@@ -165,6 +166,17 @@ ManualRideDialog::ManualRideDialog(Context *context) : context(context)
QLabel *notesLabel = new QLabel(tr("Notes:"), this);
notes = new QTextEdit(this);
// Set completer for Sport and Workout Code fields
RideMetadata *rideMetadata = context->athlete->rideMetadata();
if (rideMetadata) {
foreach (FieldDefinition field, rideMetadata->getFields()) {
if (field.name == "Sport")
sport->setCompleter(field.getCompleter(this));
else if (field.name == "Workout Code")
wcode->setCompleter(field.getCompleter(this));
}
}
// METRICS
// average heartrate

View File

@@ -479,25 +479,7 @@ FormField::FormField(FieldDefinition field, RideMetadata *meta) : definition(fie
case FIELD_TEXT : // text
case FIELD_SHORTTEXT : // shorttext
if (field.values.count()) {
if (field.values.count() == 1 && field.values.at(0) == "*") {
// get the metdata values from the metric db ....
QStringList values;
// set values from whatever we have done in the past
completer = new QCompleter(values, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionMode(QCompleter::InlineCompletion);
} else {
// user specified restricted values
completer = new QCompleter(field.values, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
}
}
completer = field.getCompleter(this);
widget = new QLineEdit(this);
dynamic_cast<QLineEdit*>(widget)->setCompleter(completer);
@@ -977,6 +959,32 @@ FieldDefinition::fingerprint(QList<FieldDefinition> list)
return qChecksum(ba, ba.length());
}
QCompleter *
FieldDefinition::getCompleter(QObject *parent)
{
QCompleter *completer = NULL;
if (values.count()) {
if (values.count() == 1 && values.at(0) == "*") {
// get the metdata values from the metric db ....
QStringList past_values;
// set values from whatever we have done in the past
completer = new QCompleter(past_values, parent);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionMode(QCompleter::InlineCompletion);
} else {
// user specified restricted values
completer = new QCompleter(values, parent);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion);
}
}
return completer;
}
unsigned long
KeywordDefinition::fingerprint(QList<KeywordDefinition> list)
{

View File

@@ -65,6 +65,7 @@ class FieldDefinition
QStringList values; // autocomplete 'defaults'
static unsigned long fingerprint(QList<FieldDefinition>);
QCompleter *getCompleter(QObject *parent);
FieldDefinition() : tab(""), name(""), type(0), diary(false), values() {}
FieldDefinition(QString tab, QString name, int type, bool diary, QStringList values)