mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2026-01-11 23:25:57 +01:00
2020-02-02 Fred Gleason <fredg@paravelsystems.com>
* Added support for saving Label data from MusicBrainz releases.
This commit is contained in:
@@ -59,7 +59,7 @@ RDDiscLookup::RDDiscLookup(const QString &caption,FILE *profile_msgs,
|
||||
|
||||
QSize RDDiscLookup::sizeHint() const
|
||||
{
|
||||
return QSize(400,120);
|
||||
return QSize(400,140);
|
||||
}
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@ void RDDiscLookup::resizeEvent(QResizeEvent *e)
|
||||
|
||||
lookup_titles_label->setGeometry(15,2,w-30,20);
|
||||
|
||||
lookup_titles_box->setGeometry(10,24,w-20,20);
|
||||
lookup_titles_box->setGeometry(10,24,w-20,40);
|
||||
|
||||
lookup_ok_button->setGeometry(w-180,h-60,80,50);
|
||||
lookup_cancel_button->setGeometry(w-90,h-60,80,50);
|
||||
@@ -289,3 +289,65 @@ QString RDDiscLookup::normalizedIsrc(const QString &isrc,bool *ok)
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
bool RDDiscLookup::upcAIsValid(const QString &barcode)
|
||||
{
|
||||
//
|
||||
// For formatting rules for UPC-A barcodes, see
|
||||
// https://en.wikipedia.org/wiki/Universal_Product_Code
|
||||
//
|
||||
QString str=barcode;
|
||||
|
||||
str.replace("-","");
|
||||
str.replace(" ","");
|
||||
if(str.length()!=12) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for(int i=0;i<12;i++) {
|
||||
if(str.at(i).category()!=QChar::Number_DecimalDigit) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
QString RDDiscLookup::formattedUpcA(const QString &barcode,bool *ok)
|
||||
{
|
||||
if(RDDiscLookup::upcAIsValid(barcode)) {
|
||||
if(ok!=NULL) {
|
||||
*ok=true;
|
||||
}
|
||||
QString str=barcode;
|
||||
str.insert(1," ");
|
||||
str.insert(6,"-");
|
||||
str.insert(12,"-");
|
||||
str.insert(14," ");
|
||||
return str;
|
||||
}
|
||||
if(ok!=NULL) {
|
||||
*ok=false;
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
|
||||
QString RDDiscLookup::normalizedUpcA(const QString &barcode,bool *ok)
|
||||
{
|
||||
if(RDDiscLookup::upcAIsValid(barcode)) {
|
||||
if(ok!=NULL) {
|
||||
*ok=true;
|
||||
}
|
||||
QString str=barcode;
|
||||
str.replace("-","");
|
||||
str.replace(" ","");
|
||||
return str;
|
||||
}
|
||||
if(ok!=NULL) {
|
||||
*ok=false;
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
@@ -49,6 +49,9 @@ class RDDiscLookup : public RDDialog
|
||||
static bool isrcIsValid(const QString &isrc);
|
||||
static QString formattedIsrc(const QString &isrc,bool *ok=NULL);
|
||||
static QString normalizedIsrc(const QString &isrc,bool *ok=NULL);
|
||||
static bool upcAIsValid(const QString &barcode);
|
||||
static QString formattedUpcA(const QString &barcode,bool *ok=NULL);
|
||||
static QString normalizedUpcA(const QString &barcode,bool *ok=NULL);
|
||||
|
||||
signals:
|
||||
void lookupDone(RDDiscLookup::Result,const QString &err_msg);
|
||||
|
||||
@@ -95,9 +95,23 @@ void RDMbLookup::lookupRecord()
|
||||
titlesBox()->clear();
|
||||
for(int i=0;i<releases->NumItems();i++) {
|
||||
MusicBrainz5::CRelease *release=releases->Item(i);
|
||||
QString barcode=RDDiscLookup::
|
||||
formattedUpcA(QString::fromUtf8(release->Barcode().c_str()));
|
||||
MusicBrainz5::CMediumList *media=release->MediumList();
|
||||
QString format="";
|
||||
for(int j=0;j<media->NumItems();j++) {
|
||||
format=QString::fromUtf8(media->Item(j)->Format().c_str())+" | ";
|
||||
}
|
||||
format=format.left(format.length()-3);
|
||||
QString title=QString::fromUtf8(release->Title().c_str())+"\n";
|
||||
if(!format.isEmpty()) {
|
||||
title+=" ["+format+"]";
|
||||
}
|
||||
if(!barcode.isEmpty()) {
|
||||
title+=" [UPC "+barcode+"]";
|
||||
}
|
||||
titlesKey()->push_back(QString::fromUtf8(release->Title().c_str()));
|
||||
titlesBox()->insertItem(titlesBox()->count(),
|
||||
QString::fromUtf8(release->Title().c_str()));
|
||||
titlesBox()->insertItem(titlesBox()->count(),title);
|
||||
}
|
||||
if((index=exec())>=0) {
|
||||
result_code=ProcessRelease(releases->Item(index));
|
||||
|
||||
Reference in New Issue
Block a user