mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-04-07 01:13:50 +02:00
* Renamed the 'CD Metadata Source' control in rdlibrary(1) to use 'CDDB' instead of 'FreeDB' when configuring CDDB lookups. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
504 lines
9.8 KiB
C++
504 lines
9.8 KiB
C++
// rdlibrary_conf.cpp
|
|
//
|
|
// Abstract an RDLibrary Configuration.
|
|
//
|
|
// (C) Copyright 2002-2022 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
|
|
// published by the Free Software Foundation.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public
|
|
// License along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
//
|
|
|
|
#include <QPixmap>
|
|
|
|
#include <rddb.h>
|
|
#include <rdconf.h>
|
|
#include <rdlibrary_conf.h>
|
|
#include <rdescape_string.h>
|
|
|
|
//
|
|
// Logos
|
|
//
|
|
#include "../icons/cd-text-55x47.xpm"
|
|
#include "../icons/cddb-60x25.xpm"
|
|
#include "../icons/musicbrainz-159x25.xpm"
|
|
|
|
RDLibraryConf::RDLibraryConf(const QString &station)
|
|
{
|
|
RDSqlQuery *q;
|
|
QString sql;
|
|
|
|
lib_station=station;
|
|
|
|
sql=QString("select ID from RDLIBRARY where ")+
|
|
"STATION=\""+RDEscapeString(lib_station)+"\"";
|
|
q=new RDSqlQuery(sql);
|
|
if(!q->first()) {
|
|
delete q;
|
|
sql=QString("insert into RDLIBRARY set ")+
|
|
"STATION=\""+RDEscapeString(lib_station)+"\"";
|
|
q=new RDSqlQuery(sql);
|
|
delete q;
|
|
sql=QString("select LAST_INSERT_ID() from RDLIBRARY");
|
|
q=new RDSqlQuery(sql);
|
|
q->first();
|
|
}
|
|
lib_id=q->value(0).toUInt();
|
|
delete q;
|
|
}
|
|
|
|
|
|
QString RDLibraryConf::station() const
|
|
{
|
|
return lib_station;
|
|
}
|
|
|
|
|
|
int RDLibraryConf::inputCard() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"INPUT_CARD").toInt();
|
|
}
|
|
|
|
|
|
int RDLibraryConf::inputPort() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"INPUT_PORT").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setInputCard(int input) const
|
|
{
|
|
SetRow("INPUT_CARD",input);
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setInputPort(int input) const
|
|
{
|
|
SetRow("INPUT_PORT",input);
|
|
}
|
|
|
|
|
|
int RDLibraryConf::outputCard() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"OUTPUT_CARD").toInt();
|
|
}
|
|
|
|
|
|
int RDLibraryConf::outputPort() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"OUTPUT_PORT").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setOutputCard(int output) const
|
|
{
|
|
SetRow("OUTPUT_CARD",output);
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setOutputPort(int output) const
|
|
{
|
|
SetRow("OUTPUT_PORT",output);
|
|
}
|
|
|
|
|
|
int RDLibraryConf::voxThreshold() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"VOX_THRESHOLD").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setVoxThreshold(int level) const
|
|
{
|
|
SetRow("VOX_THRESHOLD",level);
|
|
}
|
|
|
|
|
|
int RDLibraryConf::trimThreshold() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"TRIM_THRESHOLD").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setTrimThreshold(int level) const
|
|
{
|
|
SetRow("TRIM_THRESHOLD",level);
|
|
}
|
|
|
|
|
|
unsigned RDLibraryConf::defaultFormat() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"DEFAULT_FORMAT").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setDefaultFormat(unsigned format) const
|
|
{
|
|
SetRow("DEFAULT_FORMAT",format);
|
|
}
|
|
|
|
|
|
unsigned RDLibraryConf::defaultChannels() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"DEFAULT_CHANNELS").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setDefaultChannels(unsigned chans) const
|
|
{
|
|
SetRow("DEFAULT_CHANNELS",chans);
|
|
}
|
|
|
|
|
|
unsigned RDLibraryConf::defaultLayer() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"DEFAULT_LAYER").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setDefaultLayer(unsigned layer) const
|
|
{
|
|
SetRow("DEFAULT_LAYER",layer);
|
|
}
|
|
|
|
|
|
unsigned RDLibraryConf::defaultBitrate() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"DEFAULT_BITRATE").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setDefaultBitrate(unsigned rate) const
|
|
{
|
|
SetRow("DEFAULT_BITRATE",rate);
|
|
}
|
|
|
|
|
|
RDLibraryConf::RecordMode RDLibraryConf::defaultRecordMode() const
|
|
{
|
|
return (RDLibraryConf::RecordMode)
|
|
RDGetSqlValue("RDLIBRARY","ID",lib_id,"DEFAULT_RECORD_MODE").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setDefaultRecordMode(RecordMode mode) const
|
|
{
|
|
SetRow("DEFAULT_RECORD_MODE",(unsigned)mode);
|
|
}
|
|
|
|
|
|
bool RDLibraryConf::defaultTrimState() const
|
|
{
|
|
return RDBool(RDGetSqlValue("RDLIBRARY","ID",lib_id,"DEFAULT_TRIM_STATE").
|
|
toString());
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setDefaultTrimState(bool state) const
|
|
{
|
|
SetRow("DEFAULT_TRIM_STATE",state);
|
|
}
|
|
|
|
|
|
unsigned RDLibraryConf::maxLength() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"MAXLENGTH").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setMaxLength(unsigned length) const
|
|
{
|
|
SetRow("MAXLENGTH",length);
|
|
}
|
|
|
|
|
|
unsigned RDLibraryConf::tailPreroll() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"TAIL_PREROLL").toUInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setTailPreroll(unsigned length) const
|
|
{
|
|
SetRow("TAIL_PREROLL",length);
|
|
}
|
|
|
|
|
|
QString RDLibraryConf::ripperDevice() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"RIPPER_DEVICE").toString();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setRipperDevice(QString dev) const
|
|
{
|
|
SetRow("RIPPER_DEVICE",dev);
|
|
}
|
|
|
|
|
|
int RDLibraryConf::paranoiaLevel() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"PARANOIA_LEVEL").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setParanoiaLevel(int level) const
|
|
{
|
|
SetRow("PARANOIA_LEVEL",level);
|
|
}
|
|
|
|
|
|
int RDLibraryConf::ripperLevel() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"RIPPER_LEVEL").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setRipperLevel(int level) const
|
|
{
|
|
SetRow("RIPPER_LEVEL",level);
|
|
}
|
|
|
|
|
|
RDLibraryConf::CdServerType RDLibraryConf::cdServerType() const
|
|
{
|
|
return (RDLibraryConf::CdServerType)RDGetSqlValue("RDLIBRARY","ID",lib_id,
|
|
"CD_SERVER_TYPE").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setCdServerType(RDLibraryConf::CdServerType type) const
|
|
{
|
|
SetRow("CD_SERVER_TYPE",(unsigned)type);
|
|
}
|
|
|
|
|
|
QString RDLibraryConf::cddbServer() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"CDDB_SERVER").toString();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setCddbServer(QString server) const
|
|
{
|
|
SetRow("CDDB_SERVER",server);
|
|
}
|
|
|
|
|
|
QString RDLibraryConf::mbServer() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"MB_SERVER").toString();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setMbServer(QString server) const
|
|
{
|
|
SetRow("MB_SERVER",server);
|
|
}
|
|
|
|
|
|
bool RDLibraryConf::readIsrc() const
|
|
{
|
|
return RDBool(RDGetSqlValue("RDLIBRARY","ID",lib_id,"READ_ISRC").
|
|
toString());
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setReadIsrc(bool state) const
|
|
{
|
|
SetRow("READ_ISRC",RDYesNo(state));
|
|
}
|
|
|
|
|
|
bool RDLibraryConf::enableEditor() const
|
|
{
|
|
return RDBool(RDGetSqlValue("RDLIBRARY","ID",lib_id,"ENABLE_EDITOR").
|
|
toString());
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setEnableEditor(bool state) const
|
|
{
|
|
SetRow("ENABLE_EDITOR",RDYesNo(state));
|
|
}
|
|
|
|
|
|
int RDLibraryConf::srcConverter() const
|
|
{
|
|
return RDGetSqlValue("RDLIBRARY","ID",lib_id,"SRC_CONVERTER").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setSrcConverter(int conv) const
|
|
{
|
|
SetRow("SRC_CONVERTER",conv);
|
|
}
|
|
|
|
|
|
RDLibraryConf::SearchLimit RDLibraryConf::limitSearch() const
|
|
{
|
|
return (RDLibraryConf::SearchLimit)
|
|
RDGetSqlValue("RDLIBRARY","ID",lib_id,"LIMIT_SEARCH").toInt();
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setLimitSearch(RDLibraryConf::SearchLimit lmt) const
|
|
{
|
|
SetRow("LIMIT_SEARCH",(int)lmt);
|
|
}
|
|
|
|
|
|
bool RDLibraryConf::searchLimited() const
|
|
{
|
|
return RDBool(RDGetSqlValue("RDLIBRARY","ID",lib_id,"SEARCH_LIMITED").
|
|
toString());
|
|
}
|
|
|
|
|
|
void RDLibraryConf::setSearchLimited(bool state) const
|
|
{
|
|
SetRow("SEARCH_LIMITED",RDYesNo(state));
|
|
}
|
|
|
|
|
|
void RDLibraryConf::getSettings(RDSettings *s) const
|
|
{
|
|
QString sql;
|
|
RDSqlQuery *q;
|
|
|
|
sql=QString("select ")+
|
|
"DEFAULT_CHANNELS,"+ // 00
|
|
"DEFAULT_FORMAT,"+ // 01
|
|
"DEFAULT_BITRATE,"+ // 02
|
|
"RIPPER_LEVEL,"+ // 03
|
|
"TRIM_THRESHOLD "+ // 04
|
|
"from RDLIBRARY where "+
|
|
"STATION=\""+RDEscapeString(lib_station)+"\"";
|
|
q=new RDSqlQuery(sql);
|
|
s->clear();
|
|
if(q->first()) {
|
|
s->setChannels(q->value(0).toUInt());
|
|
switch(q->value(1).toInt()) {
|
|
case 0:
|
|
s->setFormat(RDSettings::Pcm16);
|
|
break;
|
|
|
|
case 1:
|
|
s->setFormat(RDSettings::MpegL2);
|
|
break;
|
|
}
|
|
s->setBitRate(q->value(2).toUInt());
|
|
s->setNormalizationLevel(q->value(3).toUInt());
|
|
s->setAutotrimLevel(q->value(4).toUInt());
|
|
}
|
|
delete q;
|
|
sql=QString("select SAMPLE_RATE from SYSTEM");
|
|
q=new RDSqlQuery(sql);
|
|
if(q->first()) {
|
|
s->setSampleRate(q->value(0).toUInt());
|
|
}
|
|
delete q;
|
|
}
|
|
|
|
|
|
QString RDLibraryConf::cdServerTypeText(RDLibraryConf::CdServerType type)
|
|
{
|
|
QString ret=QObject::tr("Unknown");
|
|
|
|
switch(type) {
|
|
case RDLibraryConf::DummyType:
|
|
ret="None";
|
|
break;
|
|
|
|
case RDLibraryConf::CddbType:
|
|
ret="CDDB";
|
|
break;
|
|
|
|
case RDLibraryConf::MusicBrainzType:
|
|
ret="MusicBrainz";
|
|
break;
|
|
|
|
case RDLibraryConf::LastType:
|
|
break;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
|
|
QPixmap RDLibraryConf::cdServerLogo(CdServerType type)
|
|
{
|
|
QPixmap ret;
|
|
|
|
switch(type) {
|
|
case RDLibraryConf::DummyType:
|
|
ret=QPixmap(cd_text_55x47_xpm);
|
|
break;
|
|
|
|
case RDLibraryConf::CddbType:
|
|
ret=QPixmap(cddb_60x25_xpm);
|
|
break;
|
|
|
|
case RDLibraryConf::MusicBrainzType:
|
|
ret=QPixmap(musicbrainz_159x25_xpm);
|
|
break;
|
|
|
|
case RDLibraryConf::LastType:
|
|
break;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
|
|
void RDLibraryConf::SetRow(const QString ¶m,int value) const
|
|
{
|
|
RDSqlQuery *q;
|
|
QString sql;
|
|
|
|
sql=QString("update RDLIBRARY set ")+
|
|
param+QString().sprintf("=%d where ",value)+
|
|
"STATION=\""+RDEscapeString(lib_station)+"\"";
|
|
q=new RDSqlQuery(sql);
|
|
delete q;
|
|
}
|
|
|
|
|
|
void RDLibraryConf::SetRow(const QString ¶m,unsigned value) const
|
|
{
|
|
RDSqlQuery *q;
|
|
QString sql;
|
|
|
|
sql=QString("update RDLIBRARY set ")+
|
|
param+QString().sprintf("=%u where ",value)+
|
|
"STATION=\""+RDEscapeString(lib_station)+"\"";
|
|
q=new RDSqlQuery(sql);
|
|
delete q;
|
|
}
|
|
|
|
|
|
void RDLibraryConf::SetRow(const QString ¶m,const QString &value) const
|
|
{
|
|
RDSqlQuery *q;
|
|
QString sql;
|
|
|
|
sql=QString("update RDLIBRARY set ")+
|
|
param+"=\""+RDEscapeString(value)+"\" where "+
|
|
"STATION=\""+RDEscapeString(lib_station)+"\"";
|
|
q=new RDSqlQuery(sql);
|
|
delete q;
|
|
}
|
|
|
|
|
|
void RDLibraryConf::SetRow(const QString ¶m,bool value) const
|
|
{
|
|
SetRow(param,RDYesNo(value));
|
|
}
|