2018-11-29 Fred Gleason <fredg@paravelsystems.com>

* Added a 'SERVICES.INCLUDE_IMPORT_MARKERS' field to the database.
	* Added a 'LOGS.INCLUDE_IMPORT_MARKERS' field to the database.
	* Incremented the database version to 301.
	* Added an 'Inlcude Import Markers in Finished Logs' checkbox to
	the 'Edit Service' dialog in rdadmin(1).
This commit is contained in:
Fred Gleason 2018-11-29 14:44:38 -05:00
parent 4220a2c9d4
commit a9a3f385ad
33 changed files with 302 additions and 129 deletions

View File

@ -18064,3 +18064,9 @@
* Optimized RDAudioPort SQL queries.
2018-11-26 Patrick Linstruth <patrick@deltecent.com>
* Fixed bug where requested port could overrun HPI_MAX_NODES.
2018-11-29 Fred Gleason <fredg@paravelsystems.com>
* Added a 'SERVICES.INCLUDE_IMPORT_MARKERS' field to the database.
* Added a 'LOGS.INCLUDE_IMPORT_MARKERS' field to the database.
* Incremented the database version to 301.
* Added an 'Inlcude Import Markers in Finished Logs' checkbox to
the 'Edit Service' dialog in rdadmin(1).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 99 KiB

View File

@ -361,6 +361,18 @@
as-played data to be purged from the database the specified number
of days after being generated.
</para>
<para>
The <computeroutput>Include Import Markers in Finished Logs</computeroutput>
box, if ticked, will cause markers to indicate the base location
of imported Music and Traffic events to be retained even after
such events have been imported. Some users find these markers
distracting, so their retention can be disabled by clearing this
check box.
</para>
<warning>
If import markers are not included in finished logs, then it will
not be possible re-import music or traffic data into those logs.
</warning>
<sect3 xml:id="sect.rdadmin.manage_services.general.configure_autofill_carts">
<title>Configuring Autofill Carts</title>
<para>

View File

@ -1,34 +1,34 @@
LOGS Table Layout for Rivendell
The LOGS table holds data concerning each log object that exists
on the system. Following is the layout of a record in the LOGS
table:
on the system.
FIELD NAME TYPE REMARKS
-------------------------------------------------------------------
NAME varchar(64)
LOG_EXISTS enum('N','Y')
TYPE int(11) 0=Log, 1=Event, 2=Clock, 3=Grid
SERVICE varchar(10) From SERVICES.NAME
DESCRIPTION varchar(64)
ORIGIN_USER varchar(191) From USERS.LOGIN_NAME
ORIGIN_DATETIME datetime
LINK_DATETIME datetime
MODIFIED_DATETIME datetime
AUTO_REFRESH enum('N','Y')
START_DATE date
END_DATE date
PURGE_DATE date
IMPORT_DATE date
SCHEDULED_TRACKS int unsigned(10)
COMPLETED_TRACKS int unsigned(10)
MUSIC_LINKS int
MUSIC_LINKED enum('N','Y')
TRAFFIC_LINKS int
TRAFFIC_LINKED enum('N','Y')
NEXT_ID int(11)
LOCK_USER_NAME varchar(191) From USER.LOGIN_NAME
LOCK_STATION_NAME varchar(64) From STATIONS.NAME
LOCK_IPV4_ADDRESS varchar(16)
LOCK_DATETIME datetime
LOCK_GUID varchar(82)
NAME varchar(64)
LOG_EXISTS enum('N','Y')
TYPE int(11) 0=Log, 1=Event, 2=Clock, 3=Grid
SERVICE varchar(10) From SERVICES.NAME
DESCRIPTION varchar(64)
ORIGIN_USER varchar(191) From USERS.LOGIN_NAME
ORIGIN_DATETIME datetime
LINK_DATETIME datetime
MODIFIED_DATETIME datetime
AUTO_REFRESH enum('N','Y')
START_DATE date
END_DATE date
PURGE_DATE date
IMPORT_DATE date
SCHEDULED_TRACKS int unsigned(10)
COMPLETED_TRACKS int unsigned(10)
INCLUDE_IMPORT_MARKERS enum('N','Y')
MUSIC_LINKS int
MUSIC_LINKED enum('N','Y')
TRAFFIC_LINKS int
TRAFFIC_LINKED enum('N','Y')
NEXT_ID int(11)
LOCK_USER_NAME varchar(191) From USER.LOGIN_NAME
LOCK_STATION_NAME varchar(64) From STATIONS.NAME
LOCK_IPV4_ADDRESS varchar(16)
LOCK_DATETIME datetime
LOCK_GUID varchar(82)

View File

@ -18,6 +18,7 @@ AUTO_REFRESH enum('N','Y')
DEFAULT_LOG_SHELFLIFE int(11)
LOG_SHELFLIFE_ORIGIN int(11) 0=Air Date, 1=Log Creation
ELR_SHELFLIFE int(11)
INCLUDE_IMPORT_MARKERS enum('N','Y')
TFC_PATH varchar(191)
TFC_PREIMPORT_CMD text
TFC_WIN_PATH varchar(191)

View File

@ -24,7 +24,7 @@
/*
* Current Database Version
*/
#define RD_VERSION_DATABASE 300
#define RD_VERSION_DATABASE 301
#endif // DBVERSION_H

View File

@ -2,7 +2,7 @@
//
// Abstract a Rivendell Log Manager Event
//
// (C) Copyright 2002-2006,2016-2018 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@ -911,7 +911,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
}
bool RDEventLine::linkLog(RDLogEvent *e,const QString &svcname,
bool RDEventLine::linkLog(RDLogEvent *e,RDLog *log,const QString &svcname,
RDLogLine *link_logline,const QString &track_str,
const QString &label_cart,const QString &track_cart,
QString *errors)
@ -945,13 +945,15 @@ bool RDEventLine::linkLog(RDLogEvent *e,const QString &svcname,
//
// Insert Parent Link
//
e->insert(e->size(),1);
logline=new RDLogLine();
*logline=*link_logline;
logline->setId(e->nextId());
*(e->logLine(e->size()-1))=*logline;
delete logline;
logline=NULL;
if(log->includeImportMarkers()) {
e->insert(e->size(),1);
logline=new RDLogLine();
*logline=*link_logline;
logline->setId(e->nextId());
*(e->logLine(e->size()-1))=*logline;
delete logline;
logline=NULL;
}
//
// Clear Leading Event Values
@ -1139,17 +1141,7 @@ bool RDEventLine::linkLog(RDLogEvent *e,const QString &svcname,
logline->setCartNumber(q->value(0).toUInt());
}
}
/*
//
// Clear Leading Event Values
//
time_type=RDLogLine::Relative;
trans_type=event_default_transtype;
*/
time=time.addMSecs(length);
/*
grace_time=-1;
*/
}
delete q;

View File

@ -2,7 +2,7 @@
//
// Abstract a Rivendell Log Manager Event
//
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@ -25,6 +25,7 @@
#include <rdlog_event.h>
#include <rdeventimportlist.h>
#include <rdlog.h>
#include <rdlog_line.h>
#include <rdstation.h>
@ -81,7 +82,7 @@ class RDEventLine
bool save(RDConfig *config);
bool generateLog(QString logname,const QString &svcname,
QString *errors, unsigned artistsep,QString clockname);
bool linkLog(RDLogEvent *e,const QString &svcname,
bool linkLog(RDLogEvent *e,RDLog *log,const QString &svcname,
RDLogLine *link_logline,const QString &track_str,
const QString &label_cart,const QString &track_cart,
QString *errors);

View File

@ -223,6 +223,18 @@ void RDLog::setCompletedTracks(unsigned tracks) const
}
bool RDLog::includeImportMarkers() const
{
return RDBool(GetStringValue("INCLUDE_IMPORT_MARKERS"));
}
void RDLog::setIncludeImportMarkers(bool state)
{
SetRow("INCLUDE_IMPORT_MARKERS",RDYesNo(state));
}
int RDLog::linkQuantity(RDLog::Source src) const
{
switch(src) {
@ -638,11 +650,9 @@ QString RDLog::GetStringValue(const QString &field) const
q=new RDSqlQuery(sql);
if(q->first()) {
accum=q->value(0).toString();
delete q;
return accum;
}
delete q;
return 0;
return accum;
}

View File

@ -2,7 +2,7 @@
//
// Abstract a Rivendell Log
//
// (C) Copyright 2002-2004,2016 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@ -21,8 +21,6 @@
#ifndef RDLOG_H
#define RDLOG_H
#include <qsqldatabase.h>
#include <rdconfig.h>
#include <rdlog_event.h>
#include <rduser.h>
@ -65,6 +63,8 @@ class RDLog
void setScheduledTracks(unsigned tracks) const;
unsigned completedTracks() const;
void setCompletedTracks(unsigned tracks) const;
bool includeImportMarkers() const;
void setIncludeImportMarkers(bool state);
int linkQuantity(RDLog::Source src) const;
void setLinkQuantity(RDLog::Source src,int quan) const;
void updateLinkQuantity(RDLog::Source src) const;

View File

@ -180,6 +180,20 @@ void RDSvc::setElrShelflife(int days) const
}
bool RDSvc::includeImportMarkers() const
{
return
RDBool(RDGetSqlValue("SERVICES","NAME",svc_name,"INCLUDE_IMPORT_MARKERS").
toString());
}
void RDSvc::setIncludeImportMarkers(bool state)
{
SetRow("INCLUDE_IMPORT_MARKERS",RDYesNo(state));
}
bool RDSvc::chainto() const
{
return
@ -722,6 +736,7 @@ bool RDSvc::generateLog(const QDate &date,const QString &logname,
log=new RDLog(logname);
log->setDescription(RDDateDecode(descriptionTemplate(),date,svc_station,
svc_config,svc_name));
log->setIncludeImportMarkers(includeImportMarkers());
emit generationProgress(1);
@ -805,6 +820,26 @@ bool RDSvc::linkLog(RDSvc::ImportSource src,const QDate &date,
return false;
}
//
// Calculate Source
//
RDLogLine::Type src_type=RDLogLine::UnknownType;
RDLog::Source link_src=RDLog::SourceMusic;
switch(src) {
case RDSvc::Music:
src_type=RDLogLine::MusicLink;
link_src=RDLog::SourceMusic;
break;
case RDSvc::Traffic:
src_type=RDLogLine::TrafficLink;
link_src=RDLog::SourceTraffic;
break;
}
RDLog *log=new RDLog(logname);
int current_link=0;
int total_links=log->linkQuantity(link_src);
emit generationProgress(0);
//
@ -825,26 +860,6 @@ bool RDSvc::linkLog(RDSvc::ImportSource src,const QDate &date,
return false;
}
//
// Calculate Source
//
RDLogLine::Type src_type=RDLogLine::UnknownType;
RDLog::Source link_src=RDLog::SourceMusic;
switch(src) {
case RDSvc::Music:
src_type=RDLogLine::MusicLink;
link_src=RDLog::SourceMusic;
break;
case RDSvc::Traffic:
src_type=RDLogLine::TrafficLink;
link_src=RDLog::SourceTraffic;
break;
}
RDLog *log=new RDLog(logname);
int current_link=0;
int total_links=log->linkQuantity(link_src);
//
// Iterate Through the Log
//
@ -858,8 +873,8 @@ bool RDSvc::linkLog(RDSvc::ImportSource src,const QDate &date,
RDEventLine *e=new RDEventLine(svc_station);
e->setName(logline->linkEventName());
e->load();
e->linkLog(dest_event,svc_name,logline,track_str,label_cart,track_cart,
&autofill_errors);
e->linkLog(dest_event,log,svc_name,logline,track_str,label_cart,
track_cart,&autofill_errors);
delete e;
emit generationProgress(1+(24*current_link++)/total_links);
}

View File

@ -63,6 +63,8 @@ class RDSvc : public QObject
void setLogShelflifeOrigin(ShelflifeOrigin orig);
int elrShelflife() const;
void setElrShelflife(int days) const;
bool includeImportMarkers() const;
void setIncludeImportMarkers(bool state);
bool chainto() const;
void setChainto(bool state) const;
QString importTemplate(ImportSource src) const;

View File

@ -223,6 +223,17 @@ EditSvc::EditSvc(QString svc,QWidget *parent)
label->setGeometry(640,117,200,19);
label->setAlignment(Qt::AlignLeft);
//
// Include Import Markers by Default
//
svc_import_markers_check=new QCheckBox(this);
svc_import_markers_check->setGeometry(460,140,15,15);
label=
new QLabel(svc_shelflife_box,tr("Include Import Markers in Finished Logs"),
this);
label->setGeometry(480,140,sizeHint().width()-490,19);
label->setAlignment(Qt::AlignLeft);
//
// Enable Hosts Button
//
@ -506,6 +517,7 @@ EditSvc::EditSvc(QString svc,QWidget *parent)
else {
svc_shelflife_spin->setDisabled(true);
}
svc_import_markers_check->setChecked(svc_svc->includeImportMarkers());
svc_tfc_path_edit->setText(svc_svc->importPath(RDSvc::Traffic));
svc_tfc_preimport_cmd_edit->
setText(svc_svc->preimportCommand(RDSvc::Traffic));
@ -668,6 +680,7 @@ void EditSvc::Save()
else {
svc_svc->setElrShelflife(-1);
}
svc_svc->setIncludeImportMarkers(svc_import_markers_check->isChecked());
svc_svc->setImportPath(RDSvc::Traffic,svc_tfc_path_edit->text());
svc_svc->
setPreimportCommand(RDSvc::Traffic,svc_tfc_preimport_cmd_edit->text());

View File

@ -84,6 +84,7 @@ class EditSvc : public QDialog
QComboBox *svc_loglifeorigin_box;
QCheckBox *svc_shelflife_box;
QSpinBox *svc_shelflife_spin;
QCheckBox *svc_import_markers_check;
bool import_changed;
};

View File

@ -4043,6 +4043,10 @@ uloženo. Uložit nyní?</translation>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -3928,6 +3928,10 @@ gespeichert werden. Jetzt speichern?</translation>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -4000,6 +4000,10 @@ debe guardarse. ¿Hacerlo ahora?</translation>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -3373,6 +3373,10 @@ must be saved. Save now?</source>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -3877,6 +3877,10 @@ Lagre no?</translation>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -3877,6 +3877,10 @@ Lagre no?</translation>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -3908,6 +3908,10 @@ deve ser salva. Salvar Agora?</translation>
<source>Preimport Command:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Include Import Markers in Finished Logs</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EditSvcPerms</name>

View File

@ -390,29 +390,38 @@ void GenerateLog::musicData()
RDLog *log=new RDLog(logname);
if(((log->linkState(RDLog::SourceMusic)==RDLog::LinkDone)||
(log->linkState(RDLog::SourceTraffic)==RDLog::LinkDone))) {
if(QMessageBox::question(this,"RDLogManager - "+tr("Music Exists"),
tr("The log for")+" "+
gen_date_edit->date().toString("MM/dd/yyyy")+" "+
tr("already contains merged music and/or traffic data.")+"\n"+
tr("Remerging it will remove this data. Remerge?"),
QMessageBox::Yes,QMessageBox::No)!=
QMessageBox::Yes) {
delete log;
delete svc;
return;
}
if((tracks=log->completedTracks())>0) {
if(QMessageBox::warning(this,"RDLogManager - "+tr("Tracks Exist"),
tr("This will also delete the")+
QString().sprintf(" %u ",tracks)+
tr("voice tracks associated with this log.")+
"\n"+tr("Continue?"),
QMessageBox::Yes,QMessageBox::No)!=
if(log->includeImportMarkers()) {
if(QMessageBox::question(this,"RDLogManager - "+tr("Music Exists"),
tr("The log for")+" "+
gen_date_edit->date().toString("MM/dd/yyyy")+" "+
tr("already contains merged music and/or traffic data.")+"\n"+
tr("Remerging it will remove this data. Remerge?"),
QMessageBox::Yes,QMessageBox::No)!=
QMessageBox::Yes) {
delete log;
delete svc;
return;
}
if((tracks=log->completedTracks())>0) {
if(QMessageBox::warning(this,"RDLogManager - "+tr("Tracks Exist"),
tr("This will also delete the")+
QString().sprintf(" %u ",tracks)+
tr("voice tracks associated with this log.")+
"\n"+tr("Continue?"),
QMessageBox::Yes,QMessageBox::No)!=
QMessageBox::Yes) {
delete log;
delete svc;
return;
}
}
}
else {
QMessageBox::warning(this,"RDLogManager - "+tr("Error"),
tr("The log for")+" "+
gen_date_edit->date().toString("MM/dd/yyyy")+" "+
tr("cannot be relinked."));
return;
}
log->removeTracks(rda->station(),rda->user(),rda->config());
if(!svc->clearLogLinks(RDSvc::Traffic,logname,rda->user(),&err_msg)) {
@ -461,15 +470,24 @@ void GenerateLog::trafficData()
rda->station(),rda->config(),svc->name());
RDLog *log=new RDLog(logname);
if((log->linkState(RDLog::SourceTraffic)==RDLog::LinkDone)) {
if(QMessageBox::question(this,"RDLogManager - "+tr("Traffic Exists"),
tr("The log for")+" "+
gen_date_edit->date().toString("MM/dd/yyyy")+" "+
tr("already contains merged traffic data.")+"\n"+
tr("Remerging it will remove this data. Remerge?"),
QMessageBox::Yes,QMessageBox::No)!=
QMessageBox::Yes) {
delete log;
delete svc;
if(log->includeImportMarkers()) {
if(QMessageBox::question(this,"RDLogManager - "+tr("Traffic Exists"),
tr("The log for")+" "+
gen_date_edit->date().toString("MM/dd/yyyy")+" "+
tr("already contains merged traffic data.")+"\n"+
tr("Remerging it will remove this data. Remerge?"),
QMessageBox::Yes,QMessageBox::No)!=
QMessageBox::Yes) {
delete log;
delete svc;
return;
}
}
else {
QMessageBox::warning(this,"RDLogManager - "+tr("Error"),
tr("The log for")+" "+
gen_date_edit->date().toString("MM/dd/yyyy")+" "+
tr("cannot be relinked."));
return;
}
if(!svc->clearLogLinks(RDSvc::Traffic,logname,rda->user(),&err_msg)) {
@ -512,7 +530,9 @@ void GenerateLog::fileScanData()
if(gen_music_enabled) {
if(QFile::exists(svc->
importFilename(RDSvc::Music,gen_date_edit->date()))) {
gen_music_button->setEnabled(true);
gen_music_button->setEnabled(log->includeImportMarkers()||
(log->linkState(RDLog::SourceMusic)==
RDLog::LinkMissing));
gen_mus_avail_label->setPixmap(*gen_greenball_map);
}
else {
@ -527,8 +547,11 @@ void GenerateLog::fileScanData()
if(QFile::exists(svc->
importFilename(RDSvc::Traffic,gen_date_edit->date()))) {
gen_traffic_button->
setEnabled((!gen_music_enabled)||
(log->linkState(RDLog::SourceMusic)==RDLog::LinkDone));
setEnabled(((!gen_music_enabled)||
(log->linkState(RDLog::SourceMusic)==RDLog::LinkDone))&&
(log->includeImportMarkers()||
(log->linkState(RDLog::SourceTraffic)==
RDLog::LinkMissing)));
gen_tfc_avail_label->setPixmap(*gen_greenball_map);
}
else {

View File

@ -132,6 +132,13 @@ void LogObject::userData()
(const char *)log->name().utf8());
exit(256);
}
if((!log->includeImportMarkers())&&
(log->linkState(RDLog::SourceMusic)!=RDLog::LinkMissing)) {
fprintf(stderr,
"rdlogmanager: music for log \"%s\" cannot be reimported\n",
(const char *)log->name().utf8());
exit(256);
}
report="";
log->removeTracks(rda->station(),rda->user(),rda->config());
if(!svc->clearLogLinks(RDSvc::Traffic,logname,rda->user(),&err_msg)) {
@ -168,6 +175,13 @@ void LogObject::userData()
(const char *)log->name().utf8());
exit(256);
}
if((!log->includeImportMarkers())&&
(log->linkState(RDLog::SourceTraffic)!=RDLog::LinkMissing)) {
fprintf(stderr,
"rdlogmanager: traffic for log \"%s\" cannot be reimported\n",
(const char *)log->name().utf8());
exit(256);
}
report="";
if(!svc->clearLogLinks(RDSvc::Traffic,logname,rda->user(),&err_msg)) {
fprintf(stderr,"rdlogmanager: %s\n",(const char *)err_msg);

View File

@ -887,11 +887,11 @@ Pokračovat?</translation>
</message>
<message>
<source>No Errors</source>
<translation>Žádné chyby</translation>
<translation type="unfinished">Žádné chyby</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation>Nenalezena žádná chyba.</translation>
<translation type="unfinished">Nenalezena žádná chyba.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -977,6 +977,10 @@ Opětovné sloučení tato data smaže. Sloučit znovu?</translation>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -887,11 +887,11 @@ Fortfahren?</translation>
</message>
<message>
<source>No Errors</source>
<translation>Keine Fehler</translation>
<translation type="unfinished">Keine Fehler</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation>Keine Fehler gefunden.</translation>
<translation type="unfinished">Keine Fehler gefunden.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -977,6 +977,10 @@ Einbinden wird diese entfernen. Fortfahren?</translation>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -841,11 +841,11 @@ Do you want to save?</source>
</message>
<message>
<source>No Errors</source>
<translation>No hubo errores</translation>
<translation type="unfinished">No hubo errores</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation>No se encontraron errores.</translation>
<translation type="unfinished">No se encontraron errores.</translation>
</message>
<message>
<source>This will also delete the</source>
@ -979,6 +979,10 @@ removerá estos datos. ¿Remezclar?</translation>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -801,14 +801,6 @@ Do you want to save?</source>
<source>Tracks Exist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Exists</source>
<translation type="unfinished"></translation>
@ -877,6 +869,18 @@ Do you want to save?</source>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No Errors</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No exceptions found.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -900,11 +900,11 @@ Hald fram?</translation>
</message>
<message>
<source>No Errors</source>
<translation>Ingen feil</translation>
<translation type="unfinished">Ingen feil</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation>Fann ingen unntak.</translation>
<translation type="unfinished">Fann ingen unntak.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -982,6 +982,10 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt?</translation>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -900,11 +900,11 @@ Hald fram?</translation>
</message>
<message>
<source>No Errors</source>
<translation>Ingen feil</translation>
<translation type="unfinished">Ingen feil</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation>Fann ingen unntak.</translation>
<translation type="unfinished">Fann ingen unntak.</translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -982,6 +982,10 @@ Flettar du på nytt, vil du fjerna desse dataa. Flett på nytt?</translation>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -893,11 +893,11 @@ Continue</translation>
</message>
<message>
<source>No Errors</source>
<translation>Sem Erros</translation>
<translation type="unfinished">Sem Erros</translation>
</message>
<message>
<source>No exceptions found.</source>
<translation>Exceções não encontradas. Parabéns. </translation>
<translation type="unfinished">Exceções não encontradas. Parabéns. </translation>
</message>
<message>
<source>already contains merged music and/or traffic data.
@ -979,6 +979,10 @@ Re-agregar removerá estes dados. Re-agregar? </translation>
<source>already contains merged traffic data.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>cannot be relinked.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ImportListView</name>

View File

@ -40,6 +40,16 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg)
// NEW SCHEMA REVERSIONS GO HERE...
//
// Revert 301
//
if((cur_schema==301)&&(set_schema<cur_schema)) {
DropColumn("LOGS","INCLUDE_IMPORT_MARKERS");
DropColumn("SERVICES","INCLUDE_IMPORT_MARKERS");
WriteSchemaVersion(--cur_schema);
}
//
// Revert 300
//

View File

@ -140,7 +140,7 @@ void MainObject::InitializeSchemaMap() {
global_version_map["2.17"]=268;
global_version_map["2.18"]=272;
global_version_map["2.19"]=275;
global_version_map["3.0"]=300;
global_version_map["3.0"]=301;
}

View File

@ -9598,6 +9598,23 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg)
WriteSchemaVersion(++cur_schema);
}
if((cur_schema<301)&&(set_schema>cur_schema)) {
sql=QString("alter table SERVICES add column ")+
"INCLUDE_IMPORT_MARKERS enum('N','Y') default 'Y' after ELR_SHELFLIFE";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
sql=QString("alter table LOGS add column ")+
"INCLUDE_IMPORT_MARKERS enum('N','Y') default 'Y' after COMPLETED_TRACKS";
if(!RDSqlQuery::apply(sql,err_msg)) {
return false;
}
WriteSchemaVersion(++cur_schema);
}
// NEW SCHEMA UPDATES GO HERE...
//