mirror of
				https://github.com/ElvishArtisan/rivendell.git
				synced 2025-11-04 08:04:12 +01:00 
			
		
		
		
	* Removed all CVS tags. * Removed 'const char *name' parameter from all QObject contructors.
		
			
				
	
	
		
			434 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			434 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// rdlibrary_conf.cpp
 | 
						|
//
 | 
						|
// Abstract an RDLibrary Configuration.
 | 
						|
//
 | 
						|
//   (C) Copyright 2002-2003,2016 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 <rddb.h>
 | 
						|
#include <rdconf.h>
 | 
						|
#include <rdlibrary_conf.h>
 | 
						|
#include <rdescape_string.h>
 | 
						|
 | 
						|
//
 | 
						|
// Global Classes
 | 
						|
//
 | 
						|
RDLibraryConf::RDLibraryConf(const QString &station,unsigned instance)
 | 
						|
{
 | 
						|
  RDSqlQuery *q;
 | 
						|
  QString sql;
 | 
						|
 | 
						|
  lib_station=station;
 | 
						|
  lib_instance=instance;
 | 
						|
 | 
						|
  sql=QString().sprintf("select ID from RDLIBRARY where STATION=\"%s\" && INSTANCE=%d",
 | 
						|
			(const char *)lib_station,
 | 
						|
			lib_instance);
 | 
						|
  q=new RDSqlQuery(sql);
 | 
						|
  if(!q->first()) {
 | 
						|
    delete q;
 | 
						|
    sql=QString().sprintf("insert into RDLIBRARY set STATION=\"%s\",INSTANCE=%d",
 | 
						|
			  (const char *)lib_station,
 | 
						|
			  lib_instance);
 | 
						|
    q=new RDSqlQuery(sql);
 | 
						|
    delete q;
 | 
						|
    sql=QString().sprintf("select ID from RDLIBRARY where STATION=\"%s\" && INSTANCE=%d",
 | 
						|
			  (const char *)lib_station,
 | 
						|
			  lib_instance);
 | 
						|
    q=new RDSqlQuery(sql);
 | 
						|
    q->first();
 | 
						|
  }
 | 
						|
  lib_id=q->value(0).toUInt();
 | 
						|
  delete q;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
QString RDLibraryConf::station() const
 | 
						|
{
 | 
						|
  return lib_station;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
unsigned RDLibraryConf::instance() const
 | 
						|
{
 | 
						|
  return lib_instance;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
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);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
QString RDLibraryConf::cddbServer() const
 | 
						|
{
 | 
						|
  return RDGetSqlValue("RDLIBRARY","ID",lib_id,"CDDB_SERVER").toString();
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDLibraryConf::setCddbServer(QString server) const
 | 
						|
{
 | 
						|
  SetRow("CDDB_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().sprintf("select DEFAULT_CHANNELS,DEFAULT_SAMPRATE,\
 | 
						|
                         DEFAULT_FORMAT,DEFAULT_BITRATE,RIPPER_LEVEL,\
 | 
						|
                         TRIM_THRESHOLD from RDLIBRARY \
 | 
						|
                         where STATION=\"%s\" && INSTANCE=%d",
 | 
						|
			(const char *)lib_station,lib_instance);
 | 
						|
  q=new RDSqlQuery(sql);
 | 
						|
  s->clear();
 | 
						|
  if(q->first()) {
 | 
						|
    s->setChannels(q->value(0).toUInt());
 | 
						|
    s->setSampleRate(q->value(1).toUInt());
 | 
						|
    switch(q->value(2).toInt()) {
 | 
						|
	case 0:
 | 
						|
	  s->setFormat(RDSettings::Pcm16);
 | 
						|
	  break;
 | 
						|
 | 
						|
	case 1:
 | 
						|
	  s->setFormat(RDSettings::MpegL2);
 | 
						|
	  break;
 | 
						|
    }
 | 
						|
    s->setBitRate(q->value(3).toUInt());
 | 
						|
    s->setNormalizationLevel(q->value(4).toUInt());
 | 
						|
    s->setAutotrimLevel(q->value(5).toUInt());
 | 
						|
  }
 | 
						|
  delete q;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDLibraryConf::SetRow(const QString ¶m,int value) const
 | 
						|
{
 | 
						|
  RDSqlQuery *q;
 | 
						|
  QString sql;
 | 
						|
 | 
						|
  sql=QString().sprintf("UPDATE RDLIBRARY SET %s=%d WHERE STATION=\"%s\" && INSTANCE=%d",
 | 
						|
			(const char *)param,
 | 
						|
			value,
 | 
						|
			(const char *)lib_station,
 | 
						|
			lib_instance);
 | 
						|
  q=new RDSqlQuery(sql);
 | 
						|
  delete q;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDLibraryConf::SetRow(const QString ¶m,unsigned value) const
 | 
						|
{
 | 
						|
  RDSqlQuery *q;
 | 
						|
  QString sql;
 | 
						|
 | 
						|
  sql=QString().sprintf("UPDATE RDLIBRARY SET %s=%d WHERE STATION=\"%s\" && INSTANCE=%d",
 | 
						|
			(const char *)param,
 | 
						|
			value,
 | 
						|
			(const char *)lib_station,
 | 
						|
			lib_instance);
 | 
						|
  q=new RDSqlQuery(sql);
 | 
						|
  delete q;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDLibraryConf::SetRow(const QString ¶m,const QString &value) const
 | 
						|
{
 | 
						|
  RDSqlQuery *q;
 | 
						|
  QString sql;
 | 
						|
 | 
						|
  sql=QString().sprintf("UPDATE RDLIBRARY SET %s=\"%s\" WHERE STATION=\"%s\" && INSTANCE=%d",
 | 
						|
			(const char *)param,
 | 
						|
			(const char *)RDEscapeString(value),
 | 
						|
			(const char *)lib_station,
 | 
						|
			lib_instance);
 | 
						|
  q=new RDSqlQuery(sql);
 | 
						|
  delete q;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void RDLibraryConf::SetRow(const QString ¶m,bool value) const
 | 
						|
{
 | 
						|
  SetRow(param,RDYesNo(value));
 | 
						|
}
 |