diff --git a/src/ManualRideDialog.cpp b/src/ManualRideDialog.cpp index 97e7b61cb..da03d15ab 100644 --- a/src/ManualRideDialog.cpp +++ b/src/ManualRideDialog.cpp @@ -23,6 +23,7 @@ #include "RideCache.h" #include "RideItem.h" #include "Settings.h" +#include "RideMetadata.h" #include #include #include @@ -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 diff --git a/src/RideMetadata.cpp b/src/RideMetadata.cpp index d1d025f84..0b2f4fd20 100644 --- a/src/RideMetadata.cpp +++ b/src/RideMetadata.cpp @@ -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(widget)->setCompleter(completer); @@ -977,6 +959,32 @@ FieldDefinition::fingerprint(QList 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 list) { diff --git a/src/RideMetadata.h b/src/RideMetadata.h index cd23d9e26..966882372 100644 --- a/src/RideMetadata.h +++ b/src/RideMetadata.h @@ -65,6 +65,7 @@ class FieldDefinition QStringList values; // autocomplete 'defaults' static unsigned long fingerprint(QList); + QCompleter *getCompleter(QObject *parent); FieldDefinition() : tab(""), name(""), type(0), diary(false), values() {} FieldDefinition(QString tab, QString name, int type, bool diary, QStringList values)