2016-07-12 Fred Gleason <fredg@paravelsystems.com>

* Added an '--xml' switch to rdimport(1) in
	'utils/rdimport/rdimport.cpp' and 'utils/rdimport/rdimport.h'.
This commit is contained in:
Fred Gleason 2016-07-12 08:52:29 -04:00
parent edd8221b6f
commit fc332c3655
5 changed files with 144 additions and 5 deletions

View File

@ -15278,3 +15278,6 @@
method in 'lib/rdcart.cpp'. method in 'lib/rdcart.cpp'.
* Removed the 'validity' and 'localCounter' fields from the output * Removed the 'validity' and 'localCounter' fields from the output
of the 'RDCut::xml()' method in 'lib/rdcut.cpp'. of the 'RDCut::xml()' method in 'lib/rdcut.cpp'.
2016-07-12 Fred Gleason <fredg@paravelsystems.com>
* Added an '--xml' switch to rdimport(1) in
'utils/rdimport/rdimport.cpp' and 'utils/rdimport/rdimport.h'.

View File

@ -243,7 +243,8 @@
Attempt to read metadata parameters from the source filename, Attempt to read metadata parameters from the source filename,
using the pattern <replaceable>pattern</replaceable>. Patterns using the pattern <replaceable>pattern</replaceable>. Patterns
consist of a sequence of wildcards and regular characters to consist of a sequence of wildcards and regular characters to
indicate boundaries between metadata fields. indicate boundaries between metadata fields. This option is
mutually exclusive with the <option>--xml</option> option.
</para> </para>
<para> <para>
The available wildcards are: The available wildcards are:
@ -774,6 +775,20 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>
<option>--xml</option>
</term>
<listitem>
<para>
Attempt to read file metadata in RDXML format from the file
<userinput><replaceable>basename</replaceable>.xml</userinput>.
This option is mututally exclusive with the
<option>--metadata-pattern</option> option.
</para>
</listitem>
</varlistentry>
</variablelist> </variablelist>
</refsect1> </refsect1>

View File

@ -1610,85 +1610,109 @@ unsigned RDCart::readXml(std::vector<RDWaveData> *data,const QString &xml)
case 1: // Cart-level objects case 1: // Cart-level objects
if(f0[i].contains("<number>")) { if(f0[i].contains("<number>")) {
cartdata.setCartNumber(GetXmlValue("number",f0[i]).toUInt()); cartdata.setCartNumber(GetXmlValue("number",f0[i]).toUInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<groupName>")) { if(f0[i].contains("<groupName>")) {
cartdata.setCategory(GetXmlValue("groupName",f0[i]).toString()); cartdata.setCategory(GetXmlValue("groupName",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<title>")) { if(f0[i].contains("<title>")) {
cartdata.setTitle(GetXmlValue("title",f0[i]).toString()); cartdata.setTitle(GetXmlValue("title",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<artist>")) { if(f0[i].contains("<artist>")) {
cartdata.setArtist(GetXmlValue("artist",f0[i]).toString()); cartdata.setArtist(GetXmlValue("artist",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<album>")) { if(f0[i].contains("<album>")) {
cartdata.setAlbum(GetXmlValue("album",f0[i]).toString()); cartdata.setAlbum(GetXmlValue("album",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<label>")) { if(f0[i].contains("<label>")) {
cartdata.setLabel(GetXmlValue("label",f0[i]).toString()); cartdata.setLabel(GetXmlValue("label",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<client>")) { if(f0[i].contains("<client>")) {
cartdata.setClient(GetXmlValue("client",f0[i]).toString()); cartdata.setClient(GetXmlValue("client",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<agency>")) { if(f0[i].contains("<agency>")) {
cartdata.setAgency(GetXmlValue("agency",f0[i]).toString()); cartdata.setAgency(GetXmlValue("agency",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<composer>")) { if(f0[i].contains("<composer>")) {
cartdata.setComposer(GetXmlValue("composer",f0[i]).toString()); cartdata.setComposer(GetXmlValue("composer",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<publisher>")) { if(f0[i].contains("<publisher>")) {
cartdata.setPublisher(GetXmlValue("publisher",f0[i]).toString()); cartdata.setPublisher(GetXmlValue("publisher",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<conductor>")) { if(f0[i].contains("<conductor>")) {
cartdata.setConductor(GetXmlValue("conductor",f0[i]).toString()); cartdata.setConductor(GetXmlValue("conductor",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<userDefined>")) { if(f0[i].contains("<userDefined>")) {
cartdata.setUserDefined(GetXmlValue("userDefined",f0[i]).toString()); cartdata.setUserDefined(GetXmlValue("userDefined",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<year>")) { if(f0[i].contains("<year>")) {
cartdata.setReleaseYear(GetXmlValue("year",f0[i]).toInt()); cartdata.setReleaseYear(GetXmlValue("year",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<forcedLength>")) { if(f0[i].contains("<forcedLength>")) {
cartdata. cartdata.
setForcedLength(RDSetTimeLength(GetXmlValue("forcedLength",f0[i]). setForcedLength(RDSetTimeLength(GetXmlValue("forcedLength",f0[i]).
toString())); toString()));
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<averageLength>")) { if(f0[i].contains("<averageLength>")) {
cartdata. cartdata.
setAverageLength(RDSetTimeLength(GetXmlValue("averageLength",f0[i]). setAverageLength(RDSetTimeLength(GetXmlValue("averageLength",f0[i]).
toString())); toString()));
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<lengthDeviation>")) { if(f0[i].contains("<lengthDeviation>")) {
cartdata.setLengthDeviation(RDSetTimeLength(GetXmlValue("lengthDeviation",f0[i]). cartdata.setLengthDeviation(RDSetTimeLength(GetXmlValue("lengthDeviation",f0[i]).
toString())); toString()));
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<averageHookLength>")) { if(f0[i].contains("<averageHookLength>")) {
cartdata. cartdata.
setAverageHookLength(RDSetTimeLength(GetXmlValue("averageHookLength",f0[i]). setAverageHookLength(RDSetTimeLength(GetXmlValue("averageHookLength",f0[i]).
toString())); toString()));
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<averageSegueLength>")) { if(f0[i].contains("<averageSegueLength>")) {
cartdata. cartdata.
setAverageSegueLength(RDSetTimeLength(GetXmlValue("averageSegueLength",f0[i]). setAverageSegueLength(RDSetTimeLength(GetXmlValue("averageSegueLength",f0[i]).
toString())); toString()));
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<cutQuantity>")) { if(f0[i].contains("<cutQuantity>")) {
cartdata.setCutQuantity(GetXmlValue("cutQuantity",f0[i]).toInt()); cartdata.setCutQuantity(GetXmlValue("cutQuantity",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<lastCutPlayed>")) { if(f0[i].contains("<lastCutPlayed>")) {
cartdata.setLastCutPlayed(GetXmlValue("lastCutPlayed",f0[i]).toInt()); cartdata.setLastCutPlayed(GetXmlValue("lastCutPlayed",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<enforceLength>")) { if(f0[i].contains("<enforceLength>")) {
cartdata.setEnforceLength(GetXmlValue("enforceLength",f0[i]).toBool()); cartdata.setEnforceLength(GetXmlValue("enforceLength",f0[i]).toBool());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<asyncronous>")) { if(f0[i].contains("<asyncronous>")) {
cartdata.setAsyncronous(GetXmlValue("asyncronous",f0[i]).toBool()); cartdata.setAsyncronous(GetXmlValue("asyncronous",f0[i]).toBool());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<owner>")) { if(f0[i].contains("<owner>")) {
cartdata.setOwner(GetXmlValue("owner",f0[i]).toString()); cartdata.setOwner(GetXmlValue("owner",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<metadataDatetime>")) { if(f0[i].contains("<metadataDatetime>")) {
cartdata.setMetadataDatetime(GetXmlValue("metadataDatetime",f0[i]). cartdata.setMetadataDatetime(GetXmlValue("metadataDatetime",f0[i]).
toDateTime()); toDateTime());
cartdata.setMetadataFound(true);
} }
if(f0[i]=="</cart>") { if(f0[i]=="</cart>") {
@ -1716,108 +1740,139 @@ unsigned RDCart::readXml(std::vector<RDWaveData> *data,const QString &xml)
case 3: // Cut Object case 3: // Cut Object
if(f0[i].contains("<description>")) { if(f0[i].contains("<description>")) {
data->back().setDescription(GetXmlValue("description",f0[i]).toString()); data->
back().setDescription(GetXmlValue("description",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<cutNumber>")) { if(f0[i].contains("<cutNumber>")) {
data->back().setCutNumber(GetXmlValue("cutNumber",f0[i]).toInt()); data->back().setCutNumber(GetXmlValue("cutNumber",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<cutName>")) { if(f0[i].contains("<cutName>")) {
data->back().setCutName(GetXmlValue("cutName",f0[i]).toString()); data->back().setCutName(GetXmlValue("cutName",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<evergreen>")) { if(f0[i].contains("<evergreen>")) {
data->back().setEvergreen(GetXmlValue("evergreen",f0[i]).toBool()); data->back().setEvergreen(GetXmlValue("evergreen",f0[i]).toBool());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<outcue>")) { if(f0[i].contains("<outcue>")) {
data->back().setOutCue(GetXmlValue("outcue",f0[i]).toString()); data->back().setOutCue(GetXmlValue("outcue",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<isrc>")) { if(f0[i].contains("<isrc>")) {
data->back().setIsrc(GetXmlValue("isrc",f0[i]).toString()); data->back().setIsrc(GetXmlValue("isrc",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<isci>")) { if(f0[i].contains("<isci>")) {
data->back().setIsci(GetXmlValue("isci",f0[i]).toString()); data->back().setIsci(GetXmlValue("isci",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<length>")) { if(f0[i].contains("<length>")) {
data->back().setLength(GetXmlValue("length",f0[i]).toInt()); data->back().setLength(GetXmlValue("length",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<originName>")) { if(f0[i].contains("<originName>")) {
data->back().setOriginator(GetXmlValue("originName",f0[i]).toString()); data->back().setOriginator(GetXmlValue("originName",f0[i]).toString());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<originDatetime>")) { if(f0[i].contains("<originDatetime>")) {
data->back().setOriginationDate(GetXmlValue("originDatetime",f0[i]). data->back().setOriginationDate(GetXmlValue("originDatetime",f0[i]).
toDateTime().date()); toDateTime().date());
data->back().setOriginationTime(GetXmlValue("originDatetime",f0[i]). data->back().setOriginationTime(GetXmlValue("originDatetime",f0[i]).
toDateTime().time()); toDateTime().time());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<playCounter>")) { if(f0[i].contains("<playCounter>")) {
data->back().setPlayCounter(GetXmlValue("playCounter",f0[i]).toInt()); data->back().setPlayCounter(GetXmlValue("playCounter",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<startDatetime>")) { if(f0[i].contains("<startDatetime>")) {
data->back().setStartDate(GetXmlValue("startDatetime",f0[i]). data->back().setStartDate(GetXmlValue("startDatetime",f0[i]).
toDateTime().date()); toDateTime().date());
data->back().setStartTime(GetXmlValue("startDatetime",f0[i]). data->back().setStartTime(GetXmlValue("startDatetime",f0[i]).
toDateTime().time()); toDateTime().time());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<endDatetime>")) { if(f0[i].contains("<endDatetime>")) {
data->back().setEndDate(GetXmlValue("endDatetime",f0[i]). data->back().setEndDate(GetXmlValue("endDatetime",f0[i]).
toDateTime().date()); toDateTime().date());
data->back().setEndTime(GetXmlValue("endDatetime",f0[i]). data->back().setEndTime(GetXmlValue("endDatetime",f0[i]).
toDateTime().time()); toDateTime().time());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<lastPlayDatetime>")) { if(f0[i].contains("<lastPlayDatetime>")) {
data->back().setLastPlayDatetime(GetXmlValue("lastPlayDatetime",f0[i]). data->back().setLastPlayDatetime(GetXmlValue("lastPlayDatetime",f0[i]).
toDateTime()); toDateTime());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<codingFormat>")) { if(f0[i].contains("<codingFormat>")) {
settings->setFormat((RDSettings::Format)GetXmlValue("codingFormat",f0[i]). settings->setFormat((RDSettings::Format)GetXmlValue("codingFormat",f0[i]).
toUInt()); toUInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<sampleRate>")) { if(f0[i].contains("<sampleRate>")) {
settings->setSampleRate(GetXmlValue("sampleRate",f0[i]).toUInt()); settings->setSampleRate(GetXmlValue("sampleRate",f0[i]).toUInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<bitRate>")) { if(f0[i].contains("<bitRate>")) {
settings->setBitRate(GetXmlValue("bitRate",f0[i]).toUInt()); settings->setBitRate(GetXmlValue("bitRate",f0[i]).toUInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<channels>")) { if(f0[i].contains("<channels>")) {
settings->setChannels(GetXmlValue("channels",f0[i]).toUInt()); settings->setChannels(GetXmlValue("channels",f0[i]).toUInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<playGain>")) { if(f0[i].contains("<playGain>")) {
data->back().setPlayGain(GetXmlValue("playGain",f0[i]).toInt()); data->back().setPlayGain(GetXmlValue("playGain",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<startPoint>")) { if(f0[i].contains("<startPoint>")) {
data->back().setStartPos(GetXmlValue("startPoint",f0[i]).toInt()); data->back().setStartPos(GetXmlValue("startPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<endPoint>")) { if(f0[i].contains("<endPoint>")) {
data->back().setEndPos(GetXmlValue("endPoint",f0[i]).toInt()); data->back().setEndPos(GetXmlValue("endPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<segueStartPoint>")) { if(f0[i].contains("<segueStartPoint>")) {
data->back().setSegueStartPos(GetXmlValue("segueStartPoint",f0[i]). data->back().setSegueStartPos(GetXmlValue("segueStartPoint",f0[i]).
toInt()); toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<segueEndPoint>")) { if(f0[i].contains("<segueEndPoint>")) {
data->back().setSegueEndPos(GetXmlValue("segueEndPoint",f0[i]).toInt()); data->back().setSegueEndPos(GetXmlValue("segueEndPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<segueGain>")) { if(f0[i].contains("<segueGain>")) {
data->back().setSegueGain(GetXmlValue("segueGain",f0[i]).toInt()); data->back().setSegueGain(GetXmlValue("segueGain",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<talkStartPoint>")) { if(f0[i].contains("<talkStartPoint>")) {
data->back().setIntroStartPos(GetXmlValue("talkStartPoint",f0[i]). data->back().setIntroStartPos(GetXmlValue("talkStartPoint",f0[i]).
toInt()); toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<talkEndPoint>")) { if(f0[i].contains("<talkEndPoint>")) {
data->back().setIntroEndPos(GetXmlValue("talkEndPoint",f0[i]).toInt()); data->back().setIntroEndPos(GetXmlValue("talkEndPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<hookStartPoint>")) { if(f0[i].contains("<hookStartPoint>")) {
data->back().setHookStartPos(GetXmlValue("hookStartPoint",f0[i]). data->back().setHookStartPos(GetXmlValue("hookStartPoint",f0[i]).
toInt()); toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<hookEndPoint>")) { if(f0[i].contains("<hookEndPoint>")) {
data->back().setHookEndPos(GetXmlValue("hookEndPoint",f0[i]).toInt()); data->back().setHookEndPos(GetXmlValue("hookEndPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<fadeupPoint>")) { if(f0[i].contains("<fadeupPoint>")) {
data->back().setFadeUpPos(GetXmlValue("fadeupPoint",f0[i]).toInt()); data->back().setFadeUpPos(GetXmlValue("fadeupPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i].contains("<fadedownPoint>")) { if(f0[i].contains("<fadedownPoint>")) {
data->back().setFadeDownPos(GetXmlValue("fadedownPoint",f0[i]).toInt()); data->back().setFadeDownPos(GetXmlValue("fadedownPoint",f0[i]).toInt());
cartdata.setMetadataFound(true);
} }
if(f0[i]=="</cut>") { // End of cut if(f0[i]=="</cut>") { // End of cut
@ -1829,9 +1884,6 @@ unsigned RDCart::readXml(std::vector<RDWaveData> *data,const QString &xml)
break; break;
} }
} }
// printf("DUMP:\n%s\n",(const char *)cartdata.dump());
return data->size(); return data->size();
} }

View File

@ -89,6 +89,7 @@ MainObject::MainObject(QObject *parent)
import_string_year=0; import_string_year=0;
import_clear_datetimes=false; import_clear_datetimes=false;
import_clear_dayparts=false; import_clear_dayparts=false;
import_xml=false;
// //
// Read Command Options // Read Command Options
@ -379,7 +380,15 @@ MainObject::MainObject(QObject *parent)
} }
import_cmd->setProcessed(i,true); import_cmd->setProcessed(i,true);
} }
if(import_cmd->key(i)=="--xml") {
import_xml=true;
import_cmd->setProcessed(i,true);
}
} }
//
// Sanity Checks
//
if(import_datetimes[0].isValid()&&import_clear_datetimes) { if(import_datetimes[0].isValid()&&import_clear_datetimes) {
fprintf(stderr,"rdimport: --set-datetimes and --clear-datetimes are mutually exclusive\n"); fprintf(stderr,"rdimport: --set-datetimes and --clear-datetimes are mutually exclusive\n");
exit(255); exit(255);
@ -388,6 +397,10 @@ MainObject::MainObject(QObject *parent)
fprintf(stderr,"rdimport: --set-daypart-times and --clear-daypart-times are mutually exclusive\n"); fprintf(stderr,"rdimport: --set-daypart-times and --clear-daypart-times are mutually exclusive\n");
exit(255); exit(255);
} }
if((!import_metadata_pattern.isEmpty())&&import_xml) {
fprintf(stderr,"rdimport: --metadata-pattern and --xml are mutually exclusive\n");
exit(255);
}
import_cut_markers=new MarkerSet(); import_cut_markers=new MarkerSet();
import_cut_markers->loadMarker(import_cmd,"cut"); import_cut_markers->loadMarker(import_cmd,"cut");
@ -722,6 +735,9 @@ MainObject::MainObject(QObject *parent)
if(import_string_year!=0) { if(import_string_year!=0) {
printf(" Year set to: %d\n",import_string_year); printf(" Year set to: %d\n",import_string_year);
} }
if(import_xml) {
printf(" Importing RDXML metadata from external file\n");
}
import_cut_markers->dump(); import_cut_markers->dump();
import_talk_markers->dump(); import_talk_markers->dump();
import_hook_markers->dump(); import_hook_markers->dump();
@ -1026,6 +1042,10 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
} }
} }
if(import_xml) {
ReadXmlFile(filename,wavedata);
}
if(import_use_cartchunk_cutid||found_cart) { if(import_use_cartchunk_cutid||found_cart) {
*cartnum=0; *cartnum=0;
sscanf(wavedata->cutId(),"%u",cartnum); sscanf(wavedata->cutId(),"%u",cartnum);
@ -1897,6 +1917,53 @@ bool MainObject::SchedulerCodeExists(const QString &code) const
} }
void MainObject::ReadXmlFile(const QString &basename,RDWaveData *wavedata) const
{
QString xmlname="";
FILE *f=NULL;
char line[1024];
QString xml="";
std::vector<RDWaveData> wavedatas;
//
// Get XML Filename
//
QStringList f0=f0.split(".",basename);
for(unsigned i=0;i<f0.size()-1;i++) {
xmlname+=f0[i]+".";
}
xmlname+="xml";
if(import_verbose) {
printf(" Reading xml metadata from \"%s\": ",(const char *)xmlname);
}
//
// Read XML
//
wavedata->clear();
if((f=fopen(xmlname,"r"))==NULL) {
if(import_verbose) {
printf("failed [%s]\n",strerror(errno));
return;
}
}
if(import_verbose) {
printf("success\n");
}
while(fgets(line,1024,f)!=NULL) {
xml+=line;
}
fclose(f);
//
// Parse
//
if(RDCart::readXml(&wavedatas,xml)>0) {
*wavedata=wavedatas[1];
}
}
int main(int argc,char *argv[]) int main(int argc,char *argv[])
{ {
QApplication a(argc,argv,false); QApplication a(argc,argv,false);

View File

@ -78,6 +78,7 @@ class MainObject : public QObject
QDateTime GetCachedTimestamp(const QString &filename); QDateTime GetCachedTimestamp(const QString &filename);
void WriteTimestampCache(const QString &filename,const QDateTime &dt); void WriteTimestampCache(const QString &filename,const QDateTime &dt);
bool SchedulerCodeExists(const QString &code) const; bool SchedulerCodeExists(const QString &code) const;
void ReadXmlFile(const QString &basename,RDWaveData *wavedata) const;
RDConfig *import_config; RDConfig *import_config;
RDCmdSwitch *import_cmd; RDCmdSwitch *import_cmd;
unsigned import_file_key; unsigned import_file_key;
@ -107,6 +108,7 @@ class MainObject : public QObject
bool import_clear_dayparts; bool import_clear_dayparts;
bool import_fix_broken_formats; bool import_fix_broken_formats;
int import_persistent_dropbox_id; int import_persistent_dropbox_id;
bool import_xml;
unsigned import_format; unsigned import_format;
unsigned import_samprate; unsigned import_samprate;
unsigned import_bitrate; unsigned import_bitrate;