2022-09-25 Fred Gleason <fredg@paravelsystems.com>

* Fixed a bug in the Disc Ripper in rdlibrary(1) that caused cart
	list to be to be updated to reflected newly added carts.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason
2022-09-25 15:32:27 -04:00
parent d9237ddac7
commit d4a18790ae
5 changed files with 57 additions and 19 deletions

View File

@@ -35,12 +35,14 @@
#include "globals.h"
DiskRipper::DiskRipper(QString *filter,QString *group,QString *schedcode,
QList<unsigned> *added_cartnums,
bool profile_rip,QWidget *parent)
: RDDialog(parent)
{
rip_filter_text=filter;
rip_group_text=group;
rip_schedcode_text=schedcode;
rip_added_cartnums=added_cartnums;
rip_profile_rip=profile_rip;
rip_aborting=false;
@@ -376,6 +378,14 @@ QSizePolicy DiskRipper::sizePolicy() const
}
int DiskRipper::exec()
{
rip_added_cartnums->clear();
return QDialog::exec();
}
void DiskRipper::ejectButtonData()
{
rip_cdrom->eject();
@@ -909,10 +919,10 @@ void DiskRipper::closeData()
{
RDCart::removePending(rda->station(),rda->user(),rda->config());
if(rip_done&&rip_apply_box->isChecked()) {
done(0);
done(true);
}
else {
done(-1);
done(false);
}
}
@@ -1095,6 +1105,8 @@ void DiskRipper::RipTrack(int track,int end_track,QString cutname,QString title)
rmdir(tmpdir.toUtf8());
rip_track_bar->setValue(0);
rip_added_cartnums->push_back(cart->number());
delete cart;
delete cut;
}

View File

@@ -40,11 +40,14 @@ class DiskRipper : public RDDialog
Q_OBJECT
public:
DiskRipper(QString *filter,QString *group,QString *schedcode,
bool profile_rip,QWidget *parent=0);
QList<unsigned> *added_cartnums,bool profile_rip,QWidget *parent);
~DiskRipper();
QSize sizeHint() const;
QSizePolicy sizePolicy() const;
public slots:
int exec();
private slots:
void ejectButtonData();
void playButtonData();
@@ -137,6 +140,7 @@ class DiskRipper : public RDDialog
bool rip_aborting;
bool rip_profile_rip;
RDWaveDataDialog *rip_wavedata_dialog;
QList<unsigned> *rip_added_cartnums;
};

View File

@@ -546,19 +546,30 @@ void MainWidget::deleteData()
void MainWidget::ripData()
{
QList<unsigned> added_cartnums;
lib_player->stop();
LockUser();
QString group=lib_cart_filter->selectedGroup();
QString schedcode=lib_cart_filter->selectedSchedCode();
DiskRipper *dialog=new DiskRipper(&lib_filter_text,&group,&schedcode,
profile_ripping,this);
if(dialog->exec()==0) {
&added_cartnums,profile_ripping,this);
if(dialog->exec()) {
lib_cart_filter->setSelectedGroup(group);
lib_cart_filter->setFilterText(lib_filter_text);
}
delete dialog;
if(!UnlockUser()) {
// RefreshList();
UnlockUser();
//
// So the local rdlibrary(1) instance gets updated
//
for(int i=0;i<added_cartnums.size();i++) {
RDNotification *notify=new RDNotification(RDNotification::CartType,
RDNotification::AddAction,
added_cartnums.at(i));
notificationReceivedData(notify);
delete notify;
}
}
@@ -678,16 +689,24 @@ void MainWidget::notificationReceivedData(RDNotification *notify)
unsigned cartnum=notify->id().toUInt();
switch(notify->action()) {
case RDNotification::AddAction:
and_fields.push_back(QString::asprintf("`CART`.`NUMBER`=%u",cartnum));
sql=QString("select ")+
"`CART`.`NUMBER` "+ // 00
"from `CART` "+
"left join `GROUPS` on `CART`.`GROUP_NAME`=`GROUPS`.`NAME` "+
"left join `CUTS` on `CART`.`NUMBER`=`CUTS`.`CART_NUMBER` "+
lib_cart_filter->filterSql(and_fields);
q=new RDSqlQuery(sql);
if(q->first()) {
lib_cart_model->addCart(cartnum);
if(lib_cart_model->cartRow(cartnum).isValid()) {
//
// Redundant Add, treat it like a Modify
//
lib_cart_model->refreshCart(cartnum);
}
else {
and_fields.push_back(QString::asprintf("`CART`.`NUMBER`=%u",cartnum));
sql=QString("select ")+
"`CART`.`NUMBER` "+ // 00
"from `CART` "+
"left join `GROUPS` on `CART`.`GROUP_NAME`=`GROUPS`.`NAME` "+
"left join `CUTS` on `CART`.`NUMBER`=`CUTS`.`CART_NUMBER` "+
lib_cart_filter->filterSql(and_fields);
q=new RDSqlQuery(sql);
if(q->first()) {
lib_cart_model->addCart(cartnum);
}
}
delete q;
break;