diff --git a/ChangeLog b/ChangeLog index c532d7f4..cf731665 100644 --- a/ChangeLog +++ b/ChangeLog @@ -23244,3 +23244,6 @@ 2022-09-01 Fred Gleason * Fixed a bug in rdlibrary(1) that could throw a segfault when encountering an error in ripping a CD. +2022-09-01 Fred Gleason + * Added icons to the CD rippers in rdlibrary(1) to indicate the + provenance of detected metadata. diff --git a/lib/rddisclookup.cpp b/lib/rddisclookup.cpp index f21dabc8..cbab6a5d 100644 --- a/lib/rddisclookup.cpp +++ b/lib/rddisclookup.cpp @@ -161,7 +161,12 @@ void RDDiscLookup::lookup() // // Call the low-level driver to do its lookup. // - lookupRecord(); + if(lookup_has_cd_text&&(sourceName()=="CDDB")) { + RDDiscLookup::lookupRecord(); // Skip CDDB lookup if we have CD-Text + } + else { + lookupRecord(); + } } @@ -251,6 +256,12 @@ void RDDiscLookup::resizeEvent(QResizeEvent *e) } +void RDDiscLookup::closeEvent(QCloseEvent *e) +{ + cancelData(); +} + + RDDiscRecord *RDDiscLookup::discRecord() const { return lookup_record; diff --git a/lib/rddisclookup.h b/lib/rddisclookup.h index 0c1b0735..22951b14 100644 --- a/lib/rddisclookup.h +++ b/lib/rddisclookup.h @@ -71,6 +71,7 @@ class RDDiscLookup : public RDDialog virtual void lookupRecord(); void processLookup(RDDiscLookup::Result result,const QString &err_msg); void resizeEvent(QResizeEvent *e); + void closeEvent(QCloseEvent *e); RDDiscRecord *discRecord() const; void profile(const QString &msg); QComboBox *titlesBox(); diff --git a/rdlibrary/cdripper.cpp b/rdlibrary/cdripper.cpp index 709842da..8f567dbf 100644 --- a/rdlibrary/cdripper.cpp +++ b/rdlibrary/cdripper.cpp @@ -143,6 +143,20 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf, rip_apply_box->setVisible(!rip_disc_lookup->sourceName().isNull()); rip_apply_label->setVisible(!rip_disc_lookup->sourceName().isNull()); + // + // Data Source Labels + // + rip_cdtext_label=new QLabel(this); + rip_cdtext_label->setFrameStyle(QFrame::Panel|QFrame::Raised); + rip_cdtext_label-> + setPixmap(RDLibraryConf::cdServerLogo(RDLibraryConf::DummyType)); + rip_cdtext_label->hide(); + rip_cddb_label=new QLabel(this); + rip_cddb_label->setFrameStyle(QFrame::Panel|QFrame::Raised); + rip_cddb_label-> + setPixmap(RDLibraryConf::cdServerLogo(RDLibraryConf::CddbType)); + rip_cddb_label->hide(); + // // Web Browser Button // @@ -177,7 +191,7 @@ CdRipper::CdRipper(QString cutname,RDDiscRecord *rec,RDLibraryConf *conf, rip_track_view->setModel(rip_track_model); rip_track_view->hideColumn(5); rip_track_label=new QLabel(tr("Tracks"),this); - rip_track_label->setFont(sectionLabelFont()); + rip_track_label->setFont(bigLabelFont()); connect(rip_track_view->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), @@ -545,6 +559,9 @@ void CdRipper::ripTrackButtonData() void CdRipper::ejectedData() { rip_track_model->clear(); + rip_browser_button->setDisabled(true); + rip_cdtext_label->hide(); + rip_cddb_label->hide(); rip_artist_edit->clear(); rip_album_edit->clear(); rip_other_edit->clear(); @@ -598,6 +615,8 @@ void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg rip_apply_label->hide(); rip_track[0]=-1; rip_track[1]=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); return; // Apply no metadata } } @@ -609,6 +628,8 @@ void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg rip_apply_label->hide(); rip_track[0]=-1; rip_track[1]=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); return; } rip_artist_edit->setText(rip_disc_record->discArtist(src)); @@ -619,6 +640,16 @@ void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg rip_apply_box->setChecked(true); rip_apply_box->setEnabled(true); rip_apply_label->setEnabled(true); + if(rip_disc_lookup->hasCdText()) { + rip_cdtext_label->show(); + rip_cddb_label->hide(); + } + else { + rip_cdtext_label->hide(); + if(rip_disc_lookup->sourceName()=="CDDB") { + rip_cddb_label->show(); + } + } rip_browser_button->setDisabled(rip_disc_lookup->sourceUrl().isNull()); rip_browser_label->setDisabled(rip_disc_lookup->sourceUrl().isNull()); rip_apply_box->show(); @@ -631,6 +662,8 @@ void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg rip_apply_label->hide(); rip_track[0]=-1; rip_track[1]=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); break; case RDDiscLookup::LookupError: @@ -640,6 +673,8 @@ void CdRipper::lookupDoneData(RDDiscLookup::Result result,const QString &err_msg rip_apply_label->hide(); rip_track[0]=-1; rip_track[1]=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); break; } } @@ -692,16 +727,35 @@ void CdRipper::resizeEvent(QResizeEvent *e) rip_other_edit->setGeometry(65,97,size().width()-125,60); rip_apply_box->setGeometry(65,162,15,15); rip_apply_label->setGeometry(85,162,250,20); + + + if(rip_disc_lookup->sourceName()=="MusicBrainz") { + rip_cdtext_label->setGeometry(size().width()-270-rip_cdtext_label->sizeHint().width(),161,rip_cdtext_label->sizeHint().width(),rip_cdtext_label->sizeHint().height()); + rip_cddb_label->setGeometry(size().width()-270-rip_cddb_label->sizeHint().width(),161,rip_cddb_label->sizeHint().width(),rip_cddb_label->sizeHint().height()); + } + else { + rip_cdtext_label->setGeometry(size().width()-270-rip_cdtext_label->sizeHint().width()+210, + 161, + rip_cdtext_label->sizeHint().width(), + rip_cdtext_label->sizeHint().height()); + rip_cddb_label->setGeometry(size().width()-270-rip_cddb_label->sizeHint().width()+210, + 161, + rip_cddb_label->sizeHint().width(), + rip_cddb_label->sizeHint().height()); + } + + + rip_browser_button->setGeometry(size().width()-260,161,200,35); rip_browser_button->setIconSize(QSize(198,33)); rip_browser_label->setGeometry(size().width()-260,161,200,35); - rip_track_view->setGeometry(10,200,size().width()-110,size().height()-305); - rip_track_label->setGeometry(10,184,100,14); + rip_track_view->setGeometry(10,200+12,size().width()-110,size().height()-305-12); + rip_track_label->setGeometry(10,184+12,100,14); rip_bar->setGeometry(10,size().height()-100,size().width()-110,20); - rip_eject_button->setGeometry(size().width()-90,200,80,50); - rip_play_button->setGeometry(size().width()-90,260,80,50); - rip_stop_button->setGeometry(size().width()-90,320,80,50); - rip_rip_button->setGeometry(size().width()-90,424,80,50); + rip_eject_button->setGeometry(size().width()-90,200+12,80,50); + rip_play_button->setGeometry(size().width()-90,260+12,80,50); + rip_stop_button->setGeometry(size().width()-90,320+12,80,50); + rip_rip_button->setGeometry(size().width()-90,424+12,80,50); rip_normalize_box->setGeometry(10,size().height()-76,20,20); rip_normalize_box_label->setGeometry(30,size().height()-76,85,20); rip_normalize_label->setGeometry(120,size().height()-76,45,20); diff --git a/rdlibrary/cdripper.h b/rdlibrary/cdripper.h index df356f55..159f9981 100644 --- a/rdlibrary/cdripper.h +++ b/rdlibrary/cdripper.h @@ -118,6 +118,8 @@ class CdRipper : public RDDialog QLabel *rip_autotrim_unit; bool rip_done; bool rip_profile_rip; + QLabel *rip_cddb_label; + QLabel *rip_cdtext_label; }; diff --git a/rdlibrary/disk_ripper.cpp b/rdlibrary/disk_ripper.cpp index 3181b679..a97ef2d0 100644 --- a/rdlibrary/disk_ripper.cpp +++ b/rdlibrary/disk_ripper.cpp @@ -132,6 +132,20 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode, rip_apply_box->setVisible(!rip_disc_lookup->sourceName().isNull()); rip_apply_label->setVisible(!rip_disc_lookup->sourceName().isNull()); + // + // Data Source Labels + // + rip_cdtext_label=new QLabel(this); + rip_cdtext_label->setFrameStyle(QFrame::Panel|QFrame::Raised); + rip_cdtext_label-> + setPixmap(RDLibraryConf::cdServerLogo(RDLibraryConf::DummyType)); + rip_cdtext_label->hide(); + rip_cddb_label=new QLabel(this); + rip_cddb_label->setFrameStyle(QFrame::Panel|QFrame::Raised); + rip_cddb_label-> + setPixmap(RDLibraryConf::cdServerLogo(RDLibraryConf::CddbType)); + rip_cddb_label->hide(); + // // Web Browser Button/Label // @@ -165,7 +179,7 @@ DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode, rip_track_model->setPalette(palette()); rip_track_view->setModel(rip_track_model); rip_track_label=new QLabel(tr("Tracks"),this); - rip_track_label->setFont(sectionLabelFont()); + rip_track_label->setFont(bigLabelFont()); connect(rip_track_view,SIGNAL(doubleClicked(const QModelIndex &)), this,SLOT(doubleClickedData(const QModelIndex &))); connect(rip_track_view->selectionModel(), @@ -352,7 +366,7 @@ DiskRipper::~DiskRipper() QSize DiskRipper::sizeHint() const { - return QSize(730,716); + return QSize(730,716+12); } @@ -474,6 +488,10 @@ void DiskRipper::ripDiskButtonData() void DiskRipper::ejectedData() { rip_track_model->clear(); + rip_cdtext_label->hide(); + rip_cddb_label->hide(); + rip_cdtext_label->hide(); + rip_cddb_label->hide(); rip_track=-1; rip_artist_edit->clear(); rip_album_edit->clear(); @@ -706,6 +724,10 @@ void DiskRipper::mediaChangedData() rip_setsingle_button->setDisabled(true); rip_cartlabel_button->setDisabled(true); rip_clear_button->setDisabled(true); + rip_cdtext_label->hide(); + rip_cddb_label->hide(); + rip_cdtext_label->hide(); + rip_cddb_label->hide(); for(int i=rip_cdrom->tracks();i>0;i--) { rip_cutnames.push_back(QString()); rip_end_track.push_back(-1); @@ -749,6 +771,8 @@ void DiskRipper::lookupDoneData(RDDiscLookup::Result result, rip_apply_box->hide(); rip_apply_label->hide(); rip_track=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); return; // Apply no metadata } } @@ -759,6 +783,8 @@ void DiskRipper::lookupDoneData(RDDiscLookup::Result result, rip_apply_box->hide(); rip_apply_label->hide(); rip_track=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); return; } rip_artist_edit->setText(rip_disc_record.discArtist(src)); @@ -775,6 +801,16 @@ void DiskRipper::lookupDoneData(RDDiscLookup::Result result, rip_wave_datas[rip_wave_datas.size()-i-1]-> setLabel(rip_disc_record.discLabel()); } + if(rip_disc_lookup->hasCdText()) { + rip_cdtext_label->show(); + rip_cddb_label->hide(); + } + else { + rip_cdtext_label->hide(); + if(rip_disc_lookup->sourceName()=="CDDB") { + rip_cddb_label->show(); + } + } rip_apply_box->setChecked(true); rip_apply_box->setEnabled(true); rip_apply_label->setEnabled(true); @@ -782,12 +818,24 @@ void DiskRipper::lookupDoneData(RDDiscLookup::Result result, rip_browser_label->setDisabled(rip_disc_lookup->sourceUrl().isNull()); rip_apply_box->show(); rip_apply_label->show(); + if(rip_disc_lookup->hasCdText()) { + rip_cdtext_label->show(); + rip_cddb_label->hide(); + } + else { + rip_cdtext_label->hide(); + if(rip_disc_lookup->sourceName()=="CDDB") { + rip_cddb_label->show(); + } + } break; case RDDiscLookup::NoMatch: rip_apply_box->hide(); rip_apply_label->hide(); rip_track=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); break; case RDDiscLookup::LookupError: @@ -796,6 +844,8 @@ void DiskRipper::lookupDoneData(RDDiscLookup::Result result, rip_apply_box->hide(); rip_apply_label->hide(); rip_track=-1; + rip_cdtext_label->hide(); + rip_cddb_label->hide(); break; } } @@ -873,23 +923,37 @@ void DiskRipper::resizeEvent(QResizeEvent *e) rip_other_edit->setGeometry(65,53,size().width()-125,60); rip_apply_box->setGeometry(65,118,15,15); rip_apply_label->setGeometry(85,118,250,20); + if(rip_disc_lookup->sourceName()=="MusicBrainz") { + rip_cdtext_label->setGeometry(size().width()-270-rip_cdtext_label->sizeHint().width(),117,rip_cdtext_label->sizeHint().width(),rip_cdtext_label->sizeHint().height()); + rip_cddb_label->setGeometry(size().width()-270-rip_cddb_label->sizeHint().width(),117,rip_cddb_label->sizeHint().width(),rip_cddb_label->sizeHint().height()); + } + else { + rip_cdtext_label->setGeometry(size().width()-270-rip_cdtext_label->sizeHint().width()+210, + 117, + rip_cdtext_label->sizeHint().width(), + rip_cdtext_label->sizeHint().height()); + rip_cddb_label->setGeometry(size().width()-270-rip_cddb_label->sizeHint().width()+210, + 117, + rip_cddb_label->sizeHint().width(), + rip_cddb_label->sizeHint().height()); + } rip_browser_button->setGeometry(size().width()-260,117,200,35); rip_browser_button->setIconSize(QSize(198,33)); rip_browser_label->setGeometry(size().width()-260,117,200,35); - rip_track_label->setGeometry(100,140,100,14); - rip_track_view->setGeometry(100,156,size().width()-202,size().height()-342); - rip_diskbar_label->setGeometry(10,size().height()-174,size().width()-110,20); + rip_track_label->setGeometry(100,140+12,100,14); + rip_track_view->setGeometry(100,156+12,size().width()-202,size().height()-342); + rip_diskbar_label->setGeometry(10,size().height()-174+0,size().width()-110,20); rip_disk_bar->setGeometry(10,size().height()-154,size().width()-110,20); rip_trackbar_label->setGeometry(10,size().height()-126,size().width()-110,20); rip_track_bar->setGeometry(10,size().height()-106,size().width()-110,20); - rip_eject_button->setGeometry(10,156,80,50); - rip_play_button->setGeometry(10,216,80,50); - rip_stop_button->setGeometry(10,276,80,50); - rip_setcut_button->setGeometry(size().width()-90,156,80,50); - rip_setall_button->setGeometry(size().width()-90,216,80,50); - rip_setsingle_button->setGeometry(size().width()-90,276,80,50); - rip_cartlabel_button->setGeometry(size().width()-90,420,80,50); - rip_clear_button->setGeometry(size().width()-90,480,80,50); + rip_eject_button->setGeometry(10,156+12,80,50); + rip_play_button->setGeometry(10,216+12,80,50); + rip_stop_button->setGeometry(10,276+12,80,50); + rip_setcut_button->setGeometry(size().width()-90,156+12,80,50); + rip_setall_button->setGeometry(size().width()-90,216+12,80,50); + rip_setsingle_button->setGeometry(size().width()-90,276+12,80,50); + rip_cartlabel_button->setGeometry(size().width()-90,420+12,80,50); + rip_clear_button->setGeometry(size().width()-90,480+12,80,50); rip_normalizebox_label->setGeometry(30,size().height()-78,85,20); rip_normalize_box->setGeometry(10,size().height()-78,20,20); rip_normalize_label->setGeometry(120,size().height()-78,45,20); diff --git a/rdlibrary/disk_ripper.h b/rdlibrary/disk_ripper.h index 338f6f6a..74c19c86 100644 --- a/rdlibrary/disk_ripper.h +++ b/rdlibrary/disk_ripper.h @@ -97,6 +97,8 @@ class DiskRipper : public RDDialog QLabel *rip_apply_label; QPushButton *rip_browser_button; QLabel *rip_browser_label; + QLabel *rip_cddb_label; + QLabel *rip_cdtext_label; RDTransportButton *rip_eject_button; RDTransportButton *rip_play_button; RDTransportButton *rip_stop_button;