Activity Manual Entry - Metadata entry fields mimic RideMetadata behavior

Changed Notes format to preserve columns and
Sport/Workout Code completers to honor retrieve previous values on "*"
This commit is contained in:
Ale Martinez
2019-04-11 20:18:35 -03:00
parent f817692659
commit e1949c59f1
3 changed files with 10 additions and 23 deletions

View File

@@ -175,15 +175,16 @@ ManualRideDialog::ManualRideDialog(Context *context) : context(context)
sport = new QLineEdit(this);
QLabel *notesLabel = new QLabel(tr("Notes:"), this);
notes = new QTextEdit(this);
notes->setAcceptRichText(false);
// 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));
sport->setCompleter(field.getCompleter(this, context->athlete->rideCache));
else if (field.name == "Workout Code")
wcode->setCompleter(field.getCompleter(this));
wcode->setCompleter(field.getCompleter(this, context->athlete->rideCache));
}
}
@@ -476,7 +477,7 @@ ManualRideDialog::okClicked()
// basic metadata
rideFile->setTag("Sport", sport->text());
rideFile->setTag("Workout Code", wcode->text());
rideFile->setTag("Notes", notes->toPlainText());
rideFile->setTag("Notes", notes->document()->toPlainText());
// average metrics
if (avgBPM->value()) {

View File

@@ -505,7 +505,7 @@ FormField::FormField(FieldDefinition field, RideMetadata *meta) : definition(fie
case FIELD_TEXT : // text
case FIELD_SHORTTEXT : // shorttext
completer = field.getCompleter(this);
completer = field.getCompleter(this, meta->context->athlete->rideCache);
widget = new QLineEdit(this);
dynamic_cast<QLineEdit*>(widget)->setCompleter(completer);
@@ -1083,21 +1083,7 @@ FormField::metadataChanged()
switch (definition.type) {
case FIELD_TEXT : // text
case FIELD_SHORTTEXT : // shorttext
{
if (meta->context->athlete->rideCache && completer &&
definition.values.count() == 1 && definition.values.at(0) == "*") {
// set completer if needed for wildcard matching
QStringList values = meta->context->athlete->rideCache->getDistinctValues(definition.name);
delete completer;
completer = new QCompleter(values, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setCompletionMode(QCompleter::InlineCompletion);
dynamic_cast<QLineEdit*>(widget)->setCompleter(completer);
}
((QLineEdit*)widget)->setText(value);
}
break;
case FIELD_TEXTBOX : // textbox
@@ -1169,14 +1155,14 @@ FieldDefinition::fingerprint(QList<FieldDefinition> list)
}
QCompleter *
FieldDefinition::getCompleter(QObject *parent)
FieldDefinition::getCompleter(QObject *parent, RideCache* rideCache)
{
QCompleter *completer = NULL;
if (values.count()) {
if (values.count() == 1 && values.at(0) == "*") {
if (values.count() == 1 && values.at(0) == "*" && rideCache) {
// get the metdata values from the metric db ....
QStringList past_values;
// get the metdata values from the ride cache
QStringList past_values = rideCache->getDistinctValues(name);
// set values from whatever we have done in the past
completer = new QCompleter(past_values, parent);

View File

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