2021-04-06 Fred Gleason <fredg@paravelsystems.com>

* Fixed a bug in rdimport(1) where the title of an existing cart
	would be overwritten with a default title even when no title
	was found in the file metadata.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-04-06 11:58:16 -04:00
parent fba2da0ab0
commit 26e323f672
3 changed files with 23 additions and 11 deletions

View File

@ -20727,3 +20727,7 @@
2021-04-06 Fred Gleason <fredg@paravelsystems.com> 2021-04-06 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in the Cart Selector Dialog that made it impossible * Fixed a bug in the Cart Selector Dialog that made it impossible
to enter an apostrophe character in the filter search line. to enter an apostrophe character in the filter search line.
2021-04-06 Fred Gleason <fredg@paravelsystems.com>
* Fixed a bug in rdimport(1) where the title of an existing cart
would be overwritten with a default title even when no title
was found in the file metadata.

View File

@ -2,7 +2,7 @@
// //
// Abstract a Rivendell Cart. // Abstract a Rivendell Cart.
// //
// (C) Copyright 2002-2020 Fred Gleason <fredg@paravelsystems.com> // (C) Copyright 2002-2021 Fred Gleason <fredg@paravelsystems.com>
// //
// This program is free software; you can redistribute it and/or modify // This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as // it under the terms of the GNU General Public License version 2 as
@ -985,8 +985,7 @@ void RDCart::setMetadata(const RDWaveData *data)
if(sql.right(1)==",") { if(sql.right(1)==",") {
sql=sql.left(sql.length()-1); sql=sql.left(sql.length()-1);
sql+=QString().sprintf(" where NUMBER=%u",cart_number); sql+=QString().sprintf(" where NUMBER=%u",cart_number);
RDSqlQuery *q=new RDSqlQuery(sql); RDSqlQuery::apply(sql);
delete q;
} }
setSchedCodesList(data->schedCodes()); setSchedCodesList(data->schedCodes());
metadata_changed=true; metadata_changed=true;

View File

@ -1039,13 +1039,6 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
effective_group=new RDGroup(import_group->name()); effective_group=new RDGroup(import_group->name());
} }
} }
//
// Ensure that we have at least a Title
//
if(wavedata->metadataFound()&&wavedata->title().isEmpty()) {
wavedata->setTitle(effective_group->generateTitle(filename));
}
} }
// //
@ -1080,6 +1073,21 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
} }
} }
//
// Ensure that we have a valid title
//
bool cart_exists=false;
if(*cartnum!=0) {
cart_exists=RDCart::exists(*cartnum);
}
//
// If the cart already exists and no title was found in metadata,
// then keep the existing title. Otherwise, generate a default title.
//
if((!cart_exists)&&wavedata->metadataFound()&&wavedata->title().isEmpty()) {
wavedata->setTitle(effective_group->generateTitle(filename));
}
// //
// Attempt to find a free cart // Attempt to find a free cart
// //
@ -1243,6 +1251,7 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
wavedata->setStartPos(-1); wavedata->setStartPos(-1);
wavedata->setEndPos(-1); wavedata->setEndPos(-1);
} }
if(cart_created) { if(cart_created) {
cart->setMetadata(wavedata); cart->setMetadata(wavedata);
} }
@ -1252,7 +1261,7 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
if(cut->description().isEmpty()) { // Final backstop, so we don't end up if(cut->description().isEmpty()) { // Final backstop, so we don't end up
cut->setDescription(cart->title()); // with an empty description field. cut->setDescription(cart->title()); // with an empty description field.
} }
if(!import_metadata_pattern.isEmpty()) { if((!import_metadata_pattern.isEmpty())&&(!wavedata->title().isEmpty())) {
cart->setTitle(wavedata->title()); cart->setTitle(wavedata->title());
} }
if(import_startdate_offset!=0) { if(import_startdate_offset!=0) {