diff --git a/ChangeLog b/ChangeLog index 73ba2b74..58d7a50d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19447,3 +19447,13 @@ * Renamed the 'RDCddbRecord' class to 'RDDiscRecord'. * Removed support for CD-TEXT from the CD rippers. * Removed the icedax(1) dependency. +2020-01-30 Fred Gleason + * Added a 'RDLIBRARY.CD_SERVER_TYPE' field to the database. + * Added an 'RDLIBRARY.MB_SERVER' field to the database. + * Incremented the database version to 312. + * Added a 'CD Metadata Source' dropdown to the 'Configure RDLibrary' + dialog in rdadmin(1). + * Added a 'Dummy' CD metadata lookup source in the 'RDDummyLookup' + class. + * Added a 'CUTS.TRACK_MBID' field to the database. + * Added a 'CUTS.RELEASE_MBID' field to the database. diff --git a/docs/tables/cuts.txt b/docs/tables/cuts.txt index 24098987..ff6bd828 100644 --- a/docs/tables/cuts.txt +++ b/docs/tables/cuts.txt @@ -13,6 +13,8 @@ DESCRIPTION varchar(64) Indexed OUTCUE varchar(64) Indexed ISRC varchar(12) International Standard Recording Code ISCI varchar(32) ISCI Code +TRACK_MBID varchar(40) MusicBrainz Track ID +RELEASE_MBID varchar(40) MusicBrainz Parent Release ID SHA1_HASH varchar(40) LENGTH int(10) unsigned Overall length in ms. ORIGIN_DATETIME datetime Date/Time when recorded diff --git a/docs/tables/rd_library.txt b/docs/tables/rd_library.txt index f10b8f48..38c0b9c3 100644 --- a/docs/tables/rd_library.txt +++ b/docs/tables/rd_library.txt @@ -23,7 +23,9 @@ TAIL_PREROLL int(10) unsigned RIPPER_DEVICE varchar(64) PARANOIA_LEVEL int(11) RIPPER_LEVEL int(11) +CD_SERVER_TYPE int(10) unsigned 0=None, 1=CDDB, 2=MusicBrainz CDDB_SERVER varchar(64) +MB_SERVER varchar(64) READ_ISRC enum('N','Y') ENABLE_EDITOR enum('N','Y') SRC_CONVERTER int(11) diff --git a/lib/Makefile.am b/lib/Makefile.am index ed8aa697..ad9de25b 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -111,9 +111,11 @@ dist_librd_la_SOURCES = dbversion.h\ rddelete.cpp rddelete.h\ rddialog.cpp rddialog.h\ rddisclookup.cpp rddisclookup.h\ + rddisclookup_factory.cpp rddisclookup_factory.h\ rddiscrecord.cpp rddiscrecord.h\ rddownload.cpp rddownload.h\ rddropbox.cpp rddropbox.h\ + rddummylookup.cpp rddummylookup.h\ rdedit_audio.cpp rdedit_audio.h\ rdedit_panel_name.cpp rdedit_panel_name.h\ rdemptycart.cpp rdemptycart.h\ @@ -275,6 +277,7 @@ nodist_librd_la_SOURCES = moc_rdadd_cart.cpp\ moc_rddialog.cpp\ moc_rddisclookup.cpp\ moc_rddownload.cpp\ + moc_rddummylookup.cpp\ moc_rdedit_audio.cpp\ moc_rdedit_panel_name.cpp\ moc_rdemptycart.cpp\ diff --git a/lib/dbversion.h b/lib/dbversion.h index 24b722ff..811b17c8 100644 --- a/lib/dbversion.h +++ b/lib/dbversion.h @@ -2,7 +2,7 @@ // // The Current Database Schema Version for Rivendell // -// (C) Copyright 2002-2019 Fred Gleason +// (C) Copyright 2002-2020 Fred Gleason // // 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 @@ -24,7 +24,7 @@ /* * Current Database Version */ -#define RD_VERSION_DATABASE 311 +#define RD_VERSION_DATABASE 313 #endif // DBVERSION_H diff --git a/lib/lib.pro b/lib/lib.pro index c340f8a6..6c12d6a8 100644 --- a/lib/lib.pro +++ b/lib/lib.pro @@ -80,7 +80,10 @@ SOURCES += rddbheartbeat.cpp SOURCES += rddebug.cpp SOURCES += rddeck.cpp SOURCES += rddialog.cpp +SOURCES += rddisclookup.cpp +SOURCES += rddisclookup_factory.cpp SOURCES += rddropbox.cpp +SOURCES += rddummylookup.cpp SOURCES += rdedit_audio.cpp SOURCES += rdedit_panel_name.cpp SOURCES += rdemptycart.cpp @@ -213,7 +216,10 @@ HEADERS += rddbheartbeat.h HEADERS += rddebug.h HEADERS += rddeck.h HEADERS += rddialog.h +HEADERS += rddisclookup.h +HEADERS += rddisclookup_factory.h HEADERS += rddropbox.h +HEADERS += rddummylookup.h HEADERS += rdedit_audio.h HEADERS += rdedit_panel_name.h HEADERS += rdemptycart.h diff --git a/lib/librd_de.ts b/lib/librd_de.ts index fa3bf4db..19181f3a 100644 --- a/lib/librd_de.ts +++ b/lib/librd_de.ts @@ -1430,6 +1430,10 @@ Cart Unable to read CD. + + Unknown + Unbekannt + RDEditAudio diff --git a/lib/librd_nb.ts b/lib/librd_nb.ts index 7b58e2d9..7949640e 100644 --- a/lib/librd_nb.ts +++ b/lib/librd_nb.ts @@ -1425,6 +1425,10 @@ Cart Unable to read CD. + + Unknown + Ukjent + RDEditAudio diff --git a/lib/librd_nn.ts b/lib/librd_nn.ts index 7b58e2d9..7949640e 100644 --- a/lib/librd_nn.ts +++ b/lib/librd_nn.ts @@ -1425,6 +1425,10 @@ Cart Unable to read CD. + + Unknown + Ukjent + RDEditAudio diff --git a/lib/librd_pt_BR.ts b/lib/librd_pt_BR.ts index e5c2d65c..4a0310a8 100644 --- a/lib/librd_pt_BR.ts +++ b/lib/librd_pt_BR.ts @@ -1431,6 +1431,10 @@ Cartão Unable to read CD. + + Unknown + Desconhecido + RDEditAudio diff --git a/lib/rddisclookup_factory.cpp b/lib/rddisclookup_factory.cpp new file mode 100644 index 00000000..57305f96 --- /dev/null +++ b/lib/rddisclookup_factory.cpp @@ -0,0 +1,47 @@ +// rddisclookup_factory.cpp +// +// Factory for making RDDiscLookup instances. +// +// (C) Copyright 2020 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library 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 "rdcddblookup.h" +#include "rddummylookup.h" +#include "rddisclookup_factory.h" + +RDDiscLookup *RDDiscLookupFactory(RDLibraryConf::CdServerType type, + const QString &caption, + FILE *profile_msgs,QWidget *parent) +{ + RDDiscLookup *ret=NULL; + + switch(type) { + case RDLibraryConf::CddbType: + ret=new RDCddbLookup(caption,profile_msgs,parent); + break; + + case RDLibraryConf::DummyType: + ret=new RDDummyLookup(caption,profile_msgs,parent); + break; + + case RDLibraryConf::MusicBrainzType: + case RDLibraryConf::LastType: + break; + } + + return ret; +} diff --git a/lib/rddisclookup_factory.h b/lib/rddisclookup_factory.h new file mode 100644 index 00000000..0d6fd95b --- /dev/null +++ b/lib/rddisclookup_factory.h @@ -0,0 +1,33 @@ +// rddisclookup_factory.h +// +// Factory for making RDDiscLook instances. +// +// (C) Copyright 2020 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library 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. +// +// + +#ifndef RDDISCLOOKUP_FACTORY_H +#define RDDISCLOOKUP_FACTORY_H + +#include +#include + +RDDiscLookup *RDDiscLookupFactory(RDLibraryConf::CdServerType type, + const QString &caption, + FILE *profile_msgs,QWidget *parent=0); + + +#endif // RDDISCLOOKUP_FACTORY_H diff --git a/lib/rddummylookup.cpp b/lib/rddummylookup.cpp new file mode 100644 index 00000000..54faf094 --- /dev/null +++ b/lib/rddummylookup.cpp @@ -0,0 +1,39 @@ +// rddummylookup.cpp +// +// RDDiscLookup instance class for dummy lookup +// +// (C) Copyright 2003-2020 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library 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 "rddummylookup.h" + +RDDummyLookup::RDDummyLookup(const QString &caption,FILE *profile_msgs, + QWidget *parent) + : RDDiscLookup(caption,profile_msgs,parent) +{ +} + + +QString RDDummyLookup::sourceName() const +{ + return QString(); +} + + +void RDDummyLookup::lookupRecord() +{ +} diff --git a/lib/rddummylookup.h b/lib/rddummylookup.h new file mode 100644 index 00000000..e26b976b --- /dev/null +++ b/lib/rddummylookup.h @@ -0,0 +1,38 @@ +// rddummylookup.h +// +// RDDiscLookup instance class for dummy lookup +// +// (C) Copyright 2003-2020 Fred Gleason +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library 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. +// +// + +#ifndef RDDUMMYLOOKUP_H +#define RDDUMMYLOOKUP_H + +#include + +class RDDummyLookup : public RDDiscLookup +{ + Q_OBJECT + public: + RDDummyLookup(const QString &caption,FILE *profile_msgs,QWidget *parent=0); + QString sourceName() const; + + protected: + void lookupRecord(); +}; + +#endif // RDDUMMYLOOKUP_H diff --git a/lib/rdlibrary_conf.cpp b/lib/rdlibrary_conf.cpp index 1b2f2f08..0594a0b2 100644 --- a/lib/rdlibrary_conf.cpp +++ b/lib/rdlibrary_conf.cpp @@ -263,6 +263,19 @@ void RDLibraryConf::setRipperLevel(int level) const } +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(); @@ -275,6 +288,18 @@ void RDLibraryConf::setCddbServer(QString server) const } +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"). @@ -379,6 +404,30 @@ void RDLibraryConf::getSettings(RDSettings *s) const } +QString RDLibraryConf::cdServerTypeText(RDLibraryConf::CdServerType type) +{ + QString ret=QObject::tr("Unknown"); + + switch(type) { + case RDLibraryConf::DummyType: + ret="None"; + break; + + case RDLibraryConf::CddbType: + ret="FreeDB"; + break; + + case RDLibraryConf::MusicBrainzType: + ret="MusicBrainz"; + break; + + case RDLibraryConf::LastType: + break; + } + return ret; +} + + void RDLibraryConf::SetRow(const QString ¶m,int value) const { RDSqlQuery *q; diff --git a/lib/rdlibrary_conf.h b/lib/rdlibrary_conf.h index dcf2d075..785fb47a 100644 --- a/lib/rdlibrary_conf.h +++ b/lib/rdlibrary_conf.h @@ -2,7 +2,7 @@ // // Abstract RDLibrary Configuration // -// (C) Copyright 2002-2003,2016 Fred Gleason +// (C) Copyright 2002-2020 Fred Gleason // // 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,7 @@ #ifndef RDLIBRARY_CONF_H #define RDLIBRARY_CONF_H -#include - +#include #include class RDLibraryConf @@ -30,6 +29,7 @@ class RDLibraryConf public: enum RecordMode {Manual=0,Vox=1}; enum SearchLimit {LimitNo=0,LimitYes=1,LimitPrevious=2}; + enum CdServerType {DummyType=0,CddbType=1,MusicBrainzType=2,LastType=3}; RDLibraryConf(const QString &station); QString station() const; int inputCard() const; @@ -66,8 +66,12 @@ class RDLibraryConf void setParanoiaLevel(int level) const; int ripperLevel() const; void setRipperLevel(int level) const; + CdServerType cdServerType() const; + void setCdServerType(CdServerType type) const; QString cddbServer() const; void setCddbServer(QString server) const; + QString mbServer() const; + void setMbServer(QString server) const; bool readIsrc() const; void setReadIsrc(bool state) const; bool enableEditor() const; @@ -79,6 +83,7 @@ class RDLibraryConf void setLimitSearch(RDLibraryConf::SearchLimit lmt) const; bool searchLimited() const; void setSearchLimited(bool state) const; + static QString cdServerTypeText(CdServerType type); private: void SetRow(const QString ¶m,int value) const; diff --git a/rdadmin/edit_rdlibrary.cpp b/rdadmin/edit_rdlibrary.cpp index cd4a4ca2..11e3c8a7 100644 --- a/rdadmin/edit_rdlibrary.cpp +++ b/rdadmin/edit_rdlibrary.cpp @@ -198,26 +198,48 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); // - // FreeDB Server + // CD Server Type // - lib_cddb_edit=new QLineEdit(this); - lib_cddb_edit->setGeometry(190,254,160,19); - lib_cddb_edit->setValidator(validator); - QLabel *lib_cddb_label=new QLabel(lib_cddb_edit,tr("&FreeDB Server:"),this); - lib_cddb_label->setFont(labelFont()); - lib_cddb_label->setGeometry(25,254,160,19); - lib_cddb_label-> + lib_cd_server_type_box=new QComboBox(this); + lib_cd_server_type_box->setGeometry(190,256,120,19); + for(int i=0;i + insertItem(lib_cd_server_type_box->count(), + RDLibraryConf::cdServerTypeText((RDLibraryConf::CdServerType)i)); + } + connect(lib_cd_server_type_box,SIGNAL(activated(int)), + this,SLOT(cdServerTypeData(int))); + lib_cd_server_label= + new QLabel(lib_cd_server_type_box,tr("&CD Metadata Source:"),this); + lib_cd_server_label->setFont(labelFont()); + lib_cd_server_label->setGeometry(25,256,160,19); + lib_cd_server_label-> + setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); + + // + // CD Server + // + lib_cddb_server_edit=new QLineEdit(this); + lib_cddb_server_edit->setGeometry(190,278,160,19); + lib_cddb_server_edit->setValidator(validator); + lib_mb_server_edit=new QLineEdit(this); + lib_mb_server_edit->setGeometry(190,278,160,19); + lib_mb_server_edit->setValidator(validator); + lib_cd_server_label=new QLabel(tr("&FreeDB Server:"),this); + lib_cd_server_label->setFont(labelFont()); + lib_cd_server_label->setGeometry(25,278,160,19); + lib_cd_server_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); // // Format // lib_format_box=new QComboBox(this); - lib_format_box->setGeometry(190,278,150,19); + lib_format_box->setGeometry(190,302,150,19); connect(lib_format_box,SIGNAL(activated(int)),this,SLOT(formatData(int))); QLabel *lib_format_label=new QLabel(lib_format_box,tr("&Format:"),this); lib_format_label->setFont(labelFont()); - lib_format_label->setGeometry(25,278,160,19); + lib_format_label->setGeometry(25,302,160,19); lib_format_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -225,10 +247,10 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Bitrate // lib_bitrate_box=new QComboBox(this); - lib_bitrate_box->setGeometry(190,302,130,19); + lib_bitrate_box->setGeometry(190,326,130,19); QLabel *lib_bitrate_label=new QLabel(lib_bitrate_box,tr("&Bitrate:"),this); lib_bitrate_label->setFont(labelFont()); - lib_bitrate_label->setGeometry(25,302,160,19); + lib_bitrate_label->setGeometry(25,326,160,19); lib_bitrate_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -236,13 +258,13 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Enable Editor // lib_editor_box=new QComboBox(this); - lib_editor_box->setGeometry(190,326,60,19); + lib_editor_box->setGeometry(190,350,60,19); lib_editor_box->insertItem(tr("No")); lib_editor_box->insertItem(tr("Yes")); QLabel *lib_editor_label= new QLabel(lib_editor_box,tr("Allow E&xternal Editing:"),this); lib_editor_label->setFont(labelFont()); - lib_editor_label->setGeometry(25,326,160,19); + lib_editor_label->setGeometry(25,350,160,19); lib_editor_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -250,7 +272,7 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Sample Rate Converter // lib_converter_box=new QComboBox(this); - lib_converter_box->setGeometry(190,350,sizeHint().width()-200,19); + lib_converter_box->setGeometry(190,374,sizeHint().width()-200,19); int conv=0; while(src_get_name(conv)!=NULL) { lib_converter_box->insertItem(src_get_name(conv++)); @@ -258,7 +280,7 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, QLabel *lib_converter_label= new QLabel(lib_converter_box,tr("Sample Rate Converter:"),this); lib_converter_label->setFont(labelFont()); - lib_converter_label->setGeometry(10,350,175,19); + lib_converter_label->setGeometry(10,374,175,19); lib_converter_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -266,14 +288,14 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Limit Searches at Startup // lib_limit_search_box=new QComboBox(this); - lib_limit_search_box->setGeometry(190,374,80,19); + lib_limit_search_box->setGeometry(190,398,80,19); lib_limit_search_box->insertItem(tr("No")); lib_limit_search_box->insertItem(tr("Yes")); lib_limit_search_box->insertItem(tr("Previous")); QLabel *lib_limit_search_label= new QLabel(lib_limit_search_box,tr("Limit Searches at Startup")+":",this); lib_limit_search_label->setFont(labelFont()); - lib_limit_search_label->setGeometry(10,374,175,19); + lib_limit_search_label->setGeometry(10,398,175,19); lib_limit_search_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -281,7 +303,7 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Defaults // QLabel *default_label=new QLabel(tr("Defaults"),this); - default_label->setGeometry(25,412,120,19); + default_label->setGeometry(25,436,120,19); default_label->setFont(sectionLabelFont()); default_label->setAlignment(Qt::AlignRight|Qt::TextShowMnemonic); @@ -289,10 +311,10 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Default Channels // lib_channels_box=new QComboBox(this); - lib_channels_box->setGeometry(190,430,60,19); + lib_channels_box->setGeometry(190,454,60,19); QLabel *lib_channels_label=new QLabel(lib_channels_box,tr("&Channels:"),this); lib_channels_label->setFont(labelFont()); - lib_channels_label->setGeometry(25,430,160,19); + lib_channels_label->setGeometry(25,454,160,19); lib_channels_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -300,10 +322,10 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Default Record Mode // lib_recmode_box=new QComboBox(this); - lib_recmode_box->setGeometry(190,454,100,19); + lib_recmode_box->setGeometry(190,478,100,19); QLabel *lib_recmode_label=new QLabel(lib_recmode_box,tr("Record Mode:"),this); lib_recmode_label->setFont(labelFont()); - lib_recmode_label->setGeometry(25,454,160,19); + lib_recmode_label->setGeometry(25,478,160,19); lib_recmode_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -311,11 +333,11 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Default Trim State // lib_trimstate_box=new QComboBox(this); - lib_trimstate_box->setGeometry(190,478,100,19); + lib_trimstate_box->setGeometry(190,502,100,19); QLabel *lib_trimstate_label= new QLabel(lib_trimstate_box,tr("AutoTrim:"),this); lib_trimstate_label->setFont(labelFont()); - lib_trimstate_label->setGeometry(25,478,160,19); + lib_trimstate_label->setGeometry(25,502,160,19); lib_trimstate_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -323,18 +345,18 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, // Normalization Level // lib_riplevel_spin=new QSpinBox(this); - lib_riplevel_spin->setGeometry(190,502,40,19); + lib_riplevel_spin->setGeometry(190,526,40,19); lib_riplevel_spin->setMinValue(-99); lib_riplevel_spin->setMaxValue(0); QLabel *lib_riplevel_spin_label= new QLabel(lib_riplevel_spin,tr("Normalization Level:"),this); lib_riplevel_spin_label->setFont(labelFont()); - lib_riplevel_spin_label->setGeometry(25,502,160,19); + lib_riplevel_spin_label->setGeometry(25,526,160,19); lib_riplevel_spin_label-> setAlignment(Qt::AlignRight|Qt::AlignVCenter|Qt::TextShowMnemonic); QLabel *lib_riplevel_spin_unit=new QLabel(tr("dbFS"),this); lib_riplevel_spin_unit->setFont(labelFont()); - lib_riplevel_spin_unit->setGeometry(235,502,120,19); + lib_riplevel_spin_unit->setGeometry(235,526,120,19); lib_riplevel_spin_unit-> setAlignment(Qt::AlignLeft|Qt::AlignVCenter|Qt::TextShowMnemonic); @@ -433,7 +455,10 @@ EditRDLibrary::EditRDLibrary(RDStation *station,RDStation *cae_station, else { lib_trimstate_box->setCurrentItem(1); } - lib_cddb_edit->setText(lib_lib->cddbServer()); + lib_cd_server_type_box->setCurrentIndex((int)lib_lib->cdServerType()); + lib_cddb_server_edit->setText(lib_lib->cddbServer()); + lib_mb_server_edit->setText(lib_lib->mbServer()); + cdServerTypeData(lib_cd_server_type_box->currentIndex()); lib_editor_box->setCurrentItem(lib_lib->enableEditor()); lib_converter_box->setCurrentItem(lib_lib->srcConverter()); lib_limit_search_box->setCurrentItem((int)lib_lib->limitSearch()); @@ -453,7 +478,7 @@ EditRDLibrary::~EditRDLibrary() QSize EditRDLibrary::sizeHint() const { - return QSize(405,606); + return QSize(405,630); } @@ -469,6 +494,37 @@ void EditRDLibrary::formatData(int index) } +void EditRDLibrary::cdServerTypeData(int n) +{ + switch((RDLibraryConf::CdServerType)n) { + case RDLibraryConf::DummyType: + lib_cd_server_label->setDisabled(true); + lib_cddb_server_edit->setDisabled(true); + lib_mb_server_edit->setDisabled(true); + break; + + case RDLibraryConf::CddbType: + lib_cd_server_label->setEnabled(true); + lib_cd_server_label->setText(tr("FreeDB Server")+":"); + lib_cddb_server_edit->setEnabled(true); + lib_cddb_server_edit->show(); + lib_mb_server_edit->hide(); + break; + + case RDLibraryConf::MusicBrainzType: + lib_cd_server_label->setEnabled(true); + lib_cd_server_label->setText(tr("MusicBrainz Server")+":"); + lib_mb_server_edit->setEnabled(true); + lib_cddb_server_edit->hide(); + lib_mb_server_edit->show(); + break; + + case RDLibraryConf::LastType: + break; + } +} + + void EditRDLibrary::okData() { unsigned rate=0; @@ -522,7 +578,10 @@ void EditRDLibrary::okData() lib_lib->setDefaultTrimState(false); break; } - lib_lib->setCddbServer(lib_cddb_edit->text()); + lib_lib->setCdServerType((RDLibraryConf::CdServerType)lib_cd_server_type_box-> + currentIndex()); + lib_lib->setCddbServer(lib_cddb_server_edit->text()); + lib_lib->setMbServer(lib_mb_server_edit->text()); lib_lib->setEnableEditor(lib_editor_box->currentItem()); lib_lib->setSrcConverter(lib_converter_box->currentItem()); lib_lib->setLimitSearch((RDLibraryConf::SearchLimit) diff --git a/rdadmin/edit_rdlibrary.h b/rdadmin/edit_rdlibrary.h index 8e3e2150..46bba065 100644 --- a/rdadmin/edit_rdlibrary.h +++ b/rdadmin/edit_rdlibrary.h @@ -2,7 +2,7 @@ // // Edit an RDLibrry Configuration // -// (C) Copyright 2002-2019 Fred Gleason +// (C) Copyright 2002-2020 Fred Gleason // // 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 @@ -41,7 +41,8 @@ class EditRDLibrary : public RDDialog QSizePolicy sizePolicy() const; private slots: - void formatData(int); + void formatData(int n); + void cdServerTypeData(int n); void okData(); void cancelData(); @@ -63,12 +64,15 @@ class EditRDLibrary : public RDDialog QComboBox *lib_paranoia_box; QComboBox *lib_isrc_box; QSpinBox *lib_riplevel_spin; - QLineEdit *lib_cddb_edit; + QComboBox *lib_cd_server_type_box; + QLabel *lib_cd_server_label; + QLineEdit *lib_cddb_server_edit; + QLineEdit *lib_mb_server_edit; QComboBox *lib_editor_box; QComboBox *lib_converter_box; QComboBox *lib_limit_search_box; }; -#endif +#endif // EDIT_RDLIBRARY_H diff --git a/rdadmin/rdadmin_cs.ts b/rdadmin/rdadmin_cs.ts index 8e458a90..97425295 100644 --- a/rdadmin/rdadmin_cs.ts +++ b/rdadmin/rdadmin_cs.ts @@ -2992,6 +2992,18 @@ nastaveném pro běh služby CAE pro naplnění databáze se zdroji zvuku.Output Výstup + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdadmin/rdadmin_de.ts b/rdadmin/rdadmin_de.ts index e379526a..32f6ff5c 100644 --- a/rdadmin/rdadmin_de.ts +++ b/rdadmin/rdadmin_de.ts @@ -2898,6 +2898,18 @@ configured to run the CAE service in order to populate the audio resources datab Output Ausgang + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdadmin/rdadmin_es.ts b/rdadmin/rdadmin_es.ts index 8aa078ff..d9d3c388 100644 --- a/rdadmin/rdadmin_es.ts +++ b/rdadmin/rdadmin_es.ts @@ -2980,6 +2980,18 @@ equipo configurado para ejecutar CAE para obtener la información de audio.Output Salida + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdadmin/rdadmin_fr.ts b/rdadmin/rdadmin_fr.ts index f6d2be80..13cc4bf8 100644 --- a/rdadmin/rdadmin_fr.ts +++ b/rdadmin/rdadmin_fr.ts @@ -2344,6 +2344,18 @@ configured to run the CAE service in order to populate the audio resources datab Output + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdadmin/rdadmin_nb.ts b/rdadmin/rdadmin_nb.ts index 5d2cf0ee..1cc62490 100644 --- a/rdadmin/rdadmin_nb.ts +++ b/rdadmin/rdadmin_nb.ts @@ -2826,6 +2826,18 @@ configured to run the CAE service in order to populate the audio resources datab Output Utgang + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdadmin/rdadmin_nn.ts b/rdadmin/rdadmin_nn.ts index 5d2cf0ee..1cc62490 100644 --- a/rdadmin/rdadmin_nn.ts +++ b/rdadmin/rdadmin_nn.ts @@ -2826,6 +2826,18 @@ configured to run the CAE service in order to populate the audio resources datab Output Utgang + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdadmin/rdadmin_pt_BR.ts b/rdadmin/rdadmin_pt_BR.ts index df06a4cf..a1734b59 100644 --- a/rdadmin/rdadmin_pt_BR.ts +++ b/rdadmin/rdadmin_pt_BR.ts @@ -2874,6 +2874,18 @@ configured to run the CAE service in order to populate the audio resources datab Output Saída + + &CD Metadata Source: + + + + FreeDB Server + + + + MusicBrainz Server + + EditRDLogedit diff --git a/rdlibrary/cdripper.cpp b/rdlibrary/cdripper.cpp index 641b8daf..886a5cbf 100644 --- a/rdlibrary/cdripper.cpp +++ b/rdlibrary/cdripper.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "cdripper.h" @@ -41,7 +42,7 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf, rip_profile_rip=profile_rip; // rip_isrc_read=false; rip_conf=conf; - rip_cddb_record=rec; + rip_disc_record=rec; rip_track[0]=-1; rip_track[1]=-1; rip_title=NULL; @@ -75,15 +76,17 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf, rip_cdrom->open(); // - // CDDB Stuff + // Disc Metadata Lookup // if(rip_profile_rip) { - rip_cddb_lookup=new RDCddbLookup("RDLibrary",stdout,this); + rip_disc_lookup=RDDiscLookupFactory(rda->libraryConf()->cdServerType(), + "RDLibrary",stdout,this); } else { - rip_cddb_lookup=new RDCddbLookup("RDLibrary",NULL,this); + rip_disc_lookup=RDDiscLookupFactory(rda->libraryConf()->cdServerType(), + "RDLibrary",NULL,this); } - connect(rip_cddb_lookup,SIGNAL(lookupDone(RDDiscLookup::Result)), + connect(rip_disc_lookup,SIGNAL(lookupDone(RDDiscLookup::Result)), this,SLOT(cddbDoneData(RDDiscLookup::Result))); // @@ -121,17 +124,20 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf, rip_other_edit->setReadOnly(true); // - // Apply FreeDB Check Box + // Apply Metadata Check Box // rip_apply_box=new QCheckBox(this); rip_apply_box->setChecked(true); rip_apply_box->setDisabled(true); - rip_apply_label= - new QLabel(rip_apply_box,tr("Apply FreeDB Values to Cart"),this); + rip_apply_label=new QLabel(rip_apply_box,tr("Apply")+" "+ + rip_disc_lookup->sourceName()+" "+ + tr("Values to Cart"),this); rip_apply_label->setFont(labelFont()); rip_apply_label->setAlignment(Qt::AlignLeft); rip_apply_box->setChecked(false); rip_apply_label->setDisabled(true); + rip_apply_box->setVisible(!rip_disc_lookup->sourceName().isNull()); + rip_apply_label->setVisible(!rip_disc_lookup->sourceName().isNull()); // // Track List @@ -407,18 +413,6 @@ void CdRipper::ripTrackButtonData() *rip_album=rip_album_edit->text(); } - // - // Read ISRCs - // - /* - if(!rip_isrc_read) { - if(rda->libraryConf()->readIsrc()) { - rip_cddb_lookup->readIsrc(); - } - rip_isrc_read=true; - } - */ - // // Rip from disc // @@ -536,7 +530,6 @@ void CdRipper::mediaChangedData() { Q3ListViewItem *l; - // rip_isrc_read=false; rip_track_list->clear(); rip_track[0]=-1; rip_track[1]=-1; @@ -551,11 +544,11 @@ void CdRipper::mediaChangedData() } l->setText(1,RDGetTimeLength(rip_cdrom->trackLength(i))); } - rip_cddb_record->clear(); - rip_cdrom->setCddbRecord(rip_cddb_record); - rip_cddb_lookup->setCddbRecord(rip_cddb_record); + rip_disc_record->clear(); + rip_cdrom->setCddbRecord(rip_disc_record); + rip_disc_lookup->setCddbRecord(rip_disc_record); Profile("starting metadata lookup"); - rip_cddb_lookup->lookup(); + rip_disc_lookup->lookup(); Profile("metadata lookup finished"); } @@ -581,14 +574,14 @@ void CdRipper::cddbDoneData(RDDiscLookup::Result result) if(rip_cdrom->status()!=RDCdPlayer::Ok) { return; } - rip_artist_edit->setText(rip_cddb_record->discArtist()); - rip_album_edit->setText(rip_cddb_record->discAlbum()); - rip_other_edit->setText(rip_cddb_record->discExtended()); - for(int i=0;itracks();i++) { + rip_artist_edit->setText(rip_disc_record->discArtist()); + rip_album_edit->setText(rip_disc_record->discAlbum()); + rip_other_edit->setText(rip_disc_record->discExtended()); + for(int i=0;itracks();i++) { rip_track_list->findItem(QString().sprintf("%d",i+1),0)-> - setText(2,rip_cddb_record->trackTitle(i)); + setText(2,rip_disc_record->trackTitle(i)); rip_track_list->findItem(QString().sprintf("%d",i+1),0)-> - setText(3,rip_cddb_record->trackExtended(i)); + setText(3,rip_disc_record->trackExtended(i)); } rip_apply_box->setChecked(true); rip_apply_box->setEnabled(true); diff --git a/rdlibrary/cdripper.h b/rdlibrary/cdripper.h index 5da86ca6..e0623203 100644 --- a/rdlibrary/cdripper.h +++ b/rdlibrary/cdripper.h @@ -70,8 +70,8 @@ class CdRipper : public RDDialog void Profile(const QString &msg); RDLibraryConf *rip_conf; RDCdPlayer *rip_cdrom; - RDDiscRecord *rip_cddb_record; - RDDiscLookup *rip_cddb_lookup; + RDDiscRecord *rip_disc_record; + RDDiscLookup *rip_disc_lookup; RDCut *rip_cut; QLabel *rip_track_label; RDListView *rip_track_list; diff --git a/rdlibrary/disk_ripper.cpp b/rdlibrary/disk_ripper.cpp index b59a7021..a3aa1418 100644 --- a/rdlibrary/disk_ripper.cpp +++ b/rdlibrary/disk_ripper.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -72,15 +73,17 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode, rip_cdrom->open(); // - // CDDB Stuff + // Disc Metadata Lookup // if(rip_profile_rip) { - rip_cddb_lookup=new RDCddbLookup("RDLibrary",stdout,this); + rip_disc_lookup=RDDiscLookupFactory(rda->libraryConf()->cdServerType(), + "RDLibrary",stdout,this); } else { - rip_cddb_lookup=new RDCddbLookup("RDLibrary",NULL,this); + rip_disc_lookup=RDDiscLookupFactory(rda->libraryConf()->cdServerType(), + "RDLibrary",NULL,this); } - connect(rip_cddb_lookup,SIGNAL(lookupDone(RDDiscLookup::Result)), + connect(rip_disc_lookup,SIGNAL(lookupDone(RDDiscLookup::Result)), this,SLOT(cddbDoneData(RDDiscLookup::Result))); // @@ -117,12 +120,15 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode, rip_apply_box=new QCheckBox(this); rip_apply_box->setChecked(true); rip_apply_box->setDisabled(true); - rip_apply_label= - new QLabel(rip_apply_box,tr("Apply FreeDB Values to Carts"),this); + rip_apply_label=new QLabel(rip_apply_box,tr("Apply")+" "+ + rip_disc_lookup->sourceName()+" "+ + tr("Values to Carts"),this); rip_apply_label->setFont(labelFont()); rip_apply_label->setAlignment(Qt::AlignLeft); rip_apply_box->setChecked(false); rip_apply_label->setDisabled(true); + rip_apply_box->setVisible(!rip_disc_lookup->sourceName().isNull()); + rip_apply_label->setVisible(!rip_disc_lookup->sourceName().isNull()); // // Track List @@ -380,18 +386,6 @@ void DiskRipper::ripDiskButtonData() } rip_disk_bar->setMaximum(tracks); - /* - // - // Read ISRCs - // - if(!rip_isrc_read) { - if(rda->libraryConf()->readIsrc()) { - rip_cddb_lookup->readIsrc(); - } - rip_isrc_read=true; - } - */ - // // Set Artist and Album // @@ -763,10 +757,10 @@ void DiskRipper::mediaChangedData() } l->setText(1,RDGetTimeLength(rip_cdrom->trackLength(i))); } - rip_cddb_record.clear(); - rip_cdrom->setCddbRecord(&rip_cddb_record); - rip_cddb_lookup->setCddbRecord(&rip_cddb_record); - rip_cddb_lookup->lookup(); + rip_disc_record.clear(); + rip_cdrom->setCddbRecord(&rip_disc_record); + rip_disc_lookup->setCddbRecord(&rip_disc_record); + rip_disc_lookup->lookup(); QApplication::restoreOverrideCursor(); } @@ -793,17 +787,17 @@ void DiskRipper::cddbDoneData(RDDiscLookup::Result result) if(rip_cdrom->status()!=RDCdPlayer::Ok) { return; } - rip_artist_edit->setText(rip_cddb_record.discArtist()); - rip_album_edit->setText(rip_cddb_record.discAlbum()); - rip_other_edit->setText(rip_cddb_record.discExtended()); - for(int i=0;isetText(rip_disc_record.discArtist()); + rip_album_edit->setText(rip_disc_record.discAlbum()); + rip_other_edit->setText(rip_disc_record.discExtended()); + for(int i=0;ifindItem(QString().sprintf("%d",i+1),0)-> - setText(2,rip_cddb_record.trackTitle(i)); + setText(2,rip_disc_record.trackTitle(i)); rip_track_list->findItem(QString().sprintf("%d",i+1),0)-> - setText(3,rip_cddb_record.trackExtended(i)); - rip_wave_datas[i]->setTitle(rip_cddb_record.trackTitle(i)); - rip_wave_datas[i]->setArtist(rip_cddb_record.discArtist()); - rip_wave_datas[i]->setAlbum(rip_cddb_record.discAlbum()); + setText(3,rip_disc_record.trackExtended(i)); + rip_wave_datas[i]->setTitle(rip_disc_record.trackTitle(i)); + rip_wave_datas[i]->setArtist(rip_disc_record.discArtist()); + rip_wave_datas[i]->setAlbum(rip_disc_record.discAlbum()); } rip_apply_box->setChecked(true); rip_apply_box->setEnabled(true); @@ -1032,7 +1026,7 @@ void DiskRipper::RipTrack(int track,int end_track,QString cutname,QString title) case RDAudioImport::ErrorOk: cart->setMetadata(rip_wave_datas[track-1]); cut->setDescription(rip_wave_datas[track-1]->title()); - cut->setIsrc(rip_cddb_record.isrc(rip_track_number-1)); + cut->setIsrc(rip_disc_record.isrc(rip_track_number-1)); cart->clearPending(); SendNotification(RDNotification::AddAction,cart->number()); break; diff --git a/rdlibrary/disk_ripper.h b/rdlibrary/disk_ripper.h index 3c4c6d2b..9e82e531 100644 --- a/rdlibrary/disk_ripper.h +++ b/rdlibrary/disk_ripper.h @@ -76,8 +76,8 @@ class DiskRipper : public RDDialog void SetArtistAlbum(); void SendNotification(RDNotification::Action action,unsigned cartnum); RDCdPlayer *rip_cdrom; - RDDiscRecord rip_cddb_record; - RDCddbLookup *rip_cddb_lookup; + RDDiscRecord rip_disc_record; + RDDiscLookup *rip_disc_lookup; QLabel *rip_track_label; Q3ListView *rip_track_list; QPushButton *rip_rip_button; diff --git a/rdlibrary/rdlibrary_cs.ts b/rdlibrary/rdlibrary_cs.ts index 81d7c532..b7176463 100644 --- a/rdlibrary/rdlibrary_cs.ts +++ b/rdlibrary/rdlibrary_cs.ts @@ -307,7 +307,7 @@ Do you still want to delete? Apply FreeDB Values to Cart - Použít hodnoty FreeDB na vozík + Použít hodnoty FreeDB na vozík Tracks @@ -460,6 +460,14 @@ vytahování Track + + Apply + + + + Values to Cart + + DiskGauge @@ -488,7 +496,7 @@ Track Apply FreeDB Values to Carts - Použít hodnoty FreeDB na vozíky + Použít hodnoty FreeDB na vozíky Tracks @@ -724,6 +732,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/rdlibrary/rdlibrary_de.ts b/rdlibrary/rdlibrary_de.ts index c059a7b1..0a0d43cb 100644 --- a/rdlibrary/rdlibrary_de.ts +++ b/rdlibrary/rdlibrary_de.ts @@ -307,7 +307,7 @@ Do you still want to delete? Apply FreeDB Values to Cart - FreeDB-Werte auf Cart anwenden + FreeDB-Werte auf Cart anwenden Tracks @@ -460,6 +460,14 @@ abbrechen Track + + Apply + + + + Values to Cart + + DiskGauge @@ -488,7 +496,7 @@ Track Apply FreeDB Values to Carts - FreeDB-Werte auf Carts anwenden + FreeDB-Werte auf Carts anwenden Tracks @@ -723,6 +731,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/rdlibrary/rdlibrary_es.ts b/rdlibrary/rdlibrary_es.ts index 7761adfe..62c2f786 100644 --- a/rdlibrary/rdlibrary_es.ts +++ b/rdlibrary/rdlibrary_es.ts @@ -307,7 +307,7 @@ Do you still want to delete? Apply FreeDB Values to Cart - Usar datos obtenidos de FreeDB + Usar datos obtenidos de FreeDB Tracks @@ -460,6 +460,14 @@ Lectura Track + + Apply + + + + Values to Cart + + DiskGauge @@ -484,7 +492,7 @@ Track Apply FreeDB Values to Carts - Usar información de FreeDB + Usar información de FreeDB Tracks @@ -724,6 +732,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/rdlibrary/rdlibrary_fr.ts b/rdlibrary/rdlibrary_fr.ts index e0841354..12670290 100644 --- a/rdlibrary/rdlibrary_fr.ts +++ b/rdlibrary/rdlibrary_fr.ts @@ -235,10 +235,6 @@ Do you still want to delete? Other: - - Apply FreeDB Values to Cart - - Tracks @@ -352,6 +348,14 @@ Rip Track + + Apply + + + + Values to Cart + + DiskGauge @@ -378,10 +382,6 @@ Track Other: - - Apply FreeDB Values to Carts - - Tracks @@ -560,6 +560,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/rdlibrary/rdlibrary_nb.ts b/rdlibrary/rdlibrary_nb.ts index 4669bc42..ef2418e9 100644 --- a/rdlibrary/rdlibrary_nb.ts +++ b/rdlibrary/rdlibrary_nb.ts @@ -302,7 +302,7 @@ Do you still want to delete? Apply FreeDB Values to Cart - Bruk FreeDB-opplysningar på korga + Bruk FreeDB-opplysningar på korga Tracks @@ -450,6 +450,14 @@ Rip Track + + Apply + + + + Values to Cart + + DiskGauge @@ -478,7 +486,7 @@ Track Apply FreeDB Values to Carts - Bruk FreeDB-opplysningar på korgene + Bruk FreeDB-opplysningar på korgene Tracks @@ -716,6 +724,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/rdlibrary/rdlibrary_nn.ts b/rdlibrary/rdlibrary_nn.ts index 4669bc42..ef2418e9 100644 --- a/rdlibrary/rdlibrary_nn.ts +++ b/rdlibrary/rdlibrary_nn.ts @@ -302,7 +302,7 @@ Do you still want to delete? Apply FreeDB Values to Cart - Bruk FreeDB-opplysningar på korga + Bruk FreeDB-opplysningar på korga Tracks @@ -450,6 +450,14 @@ Rip Track + + Apply + + + + Values to Cart + + DiskGauge @@ -478,7 +486,7 @@ Track Apply FreeDB Values to Carts - Bruk FreeDB-opplysningar på korgene + Bruk FreeDB-opplysningar på korgene Tracks @@ -716,6 +724,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/rdlibrary/rdlibrary_pt_BR.ts b/rdlibrary/rdlibrary_pt_BR.ts index a2bcc9ca..23cf15bd 100644 --- a/rdlibrary/rdlibrary_pt_BR.ts +++ b/rdlibrary/rdlibrary_pt_BR.ts @@ -303,7 +303,7 @@ Do you still want to delete? Apply FreeDB Values to Cart - Aplicar Valores do FreeDB ao Cartão + Aplicar Valores do FreeDB ao Cartão Tracks @@ -451,6 +451,14 @@ Rip Track + + Apply + + + + Values to Cart + + DiskGauge @@ -479,7 +487,7 @@ Track Apply FreeDB Values to Carts - Aplicar Valores do FreeDB ao Cartão + Aplicar Valores do FreeDB ao Cartão Tracks @@ -717,6 +725,14 @@ Selection Unable to allocate cart in group + + Apply + + + + Values to Carts + + EditCart diff --git a/utils/rddbmgr/revertschema.cpp b/utils/rddbmgr/revertschema.cpp index cd33ed83..33a9313f 100644 --- a/utils/rddbmgr/revertschema.cpp +++ b/utils/rddbmgr/revertschema.cpp @@ -40,6 +40,26 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) // NEW SCHEMA REVERSIONS GO HERE... + // + // Revert 313 + // + if((cur_schema==313)&&(set_schemacur_schema)) { + sql=QString("alter table RDLIBRARY add column ")+ + "CD_SERVER_TYPE int unsigned not null default 2 after RIPPER_LEVEL"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + sql=QString("update RDLIBRARY set CD_SERVER_TYPE=1"); + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + sql=QString("alter table RDLIBRARY add column ")+ + "MB_SERVER varchar(64) default 'musicbrainz.org' after CDDB_SERVER"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + WriteSchemaVersion(++cur_schema); + } + + if((cur_schema<313)&&(set_schema>cur_schema)) { + sql=QString("alter table CUTS add column ")+ + "TRACK_MBID varchar(40) after ISCI"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + sql=QString("alter table CUTS add column ")+ + "RELEASE_MBID varchar(40) after TRACK_MBID"; + if(!RDSqlQuery::apply(sql,err_msg)) { + return false; + } + + WriteSchemaVersion(++cur_schema); + } + + // NEW SCHEMA UPDATES GO HERE... //