2021-01-15 Fred Gleason <fredg@paravelsystems.com>

* Modified 'RDCutList::cutName()'to take 'QModelIndex' instead of
	'int'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-01-15 08:52:02 -05:00
parent 3536c8b151
commit d6b2b22462
5 changed files with 89 additions and 77 deletions

View File

@ -20796,3 +20796,6 @@
rather than 'int'. rather than 'int'.
* Renamed 'RDLibraryModel::refreshCartLine()' to * Renamed 'RDLibraryModel::refreshCartLine()' to
'RDLibrary::updateCartLine()' and made it protected. 'RDLibrary::updateCartLine()' and made it protected.
2021-01-15 Fred Gleason <fredg@paravelsystems.com>
* Modified 'RDCutList::cutName()'to take 'QModelIndex' instead of
'int'.

View File

@ -35,7 +35,7 @@ RDCutListModel::RDCutListModel(bool use_weighting,QObject *parent)
unsigned center=Qt::AlignCenter; unsigned center=Qt::AlignCenter;
unsigned right=Qt::AlignRight|Qt::AlignVCenter; unsigned right=Qt::AlignRight|Qt::AlignVCenter;
if(d_use_weighting) { if(d_use_weighting) { // 00
d_headers.push_back(tr("Wt")); d_headers.push_back(tr("Wt"));
d_alignments.push_back(right); d_alignments.push_back(right);
} }
@ -44,43 +44,43 @@ RDCutListModel::RDCutListModel(bool use_weighting,QObject *parent)
d_alignments.push_back(right); d_alignments.push_back(right);
} }
d_headers.push_back(tr("Description")); d_headers.push_back(tr("Description")); // 01
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("Length")); d_headers.push_back(tr("Length")); // 02
d_alignments.push_back(right); d_alignments.push_back(right);
d_headers.push_back(tr("Last Played")); d_headers.push_back(tr("Last Played")); // 03
d_alignments.push_back(center); d_alignments.push_back(center);
d_headers.push_back(tr("# of Plays")); d_headers.push_back(tr("# of Plays")); // 04
d_alignments.push_back(right); d_alignments.push_back(right);
d_headers.push_back(tr("Source")); d_headers.push_back(tr("Source")); // 05
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("Ingest")); d_headers.push_back(tr("Ingest")); // 06
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("Outcue")); d_headers.push_back(tr("Outcue")); // 07
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("Start Date")); d_headers.push_back(tr("Start Date")); // 08
d_alignments.push_back(center); d_alignments.push_back(center);
d_headers.push_back(tr("End Date")); d_headers.push_back(tr("End Date")); // 09
d_alignments.push_back(center); d_alignments.push_back(center);
d_headers.push_back(tr("Daypart Start")); d_headers.push_back(tr("Daypart Start")); // 10
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("Daypart End")); d_headers.push_back(tr("Daypart End")); // 11
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("Name")); d_headers.push_back(tr("Name")); // 12
d_alignments.push_back(left); d_alignments.push_back(left);
d_headers.push_back(tr("SHA1")); d_headers.push_back(tr("SHA1")); // 13
d_alignments.push_back(left); d_alignments.push_back(left);
} }
@ -158,13 +158,13 @@ QVariant RDCutListModel::data(const QModelIndex &index,int role) const
} }
QString RDCutListModel::cutName(int row) const QString RDCutListModel::cutName(const QModelIndex &row) const
{ {
return d_texts.at(d_row_index.at(row)).at(12).toString(); return d_texts.at(d_row_index.at(row.row())).at(12).toString();
} }
int RDCutListModel::addCut(const QString &name) QModelIndex RDCutListModel::addCut(const QString &name)
{ {
QList<QVariant> list; QList<QVariant> list;
@ -177,27 +177,27 @@ int RDCutListModel::addCut(const QString &name)
d_texts.push_back(list); d_texts.push_back(list);
d_colors.push_back(d_palette.color(QPalette::Background)); d_colors.push_back(d_palette.color(QPalette::Background));
d_row_index.push_back(d_row_index.size()); d_row_index.push_back(d_row_index.size());
refresh(d_texts.size()-1); updateCutLine(d_texts.size()-1);
sortRows(d_use_weighting); sortRows(d_use_weighting);
endResetModel(); endResetModel();
for(int i=0;i<d_row_index.size();i++) { for(int i=0;i<d_row_index.size();i++) {
if(d_row_index.at(i)==(d_row_index.size()-1)) { if(d_row_index.at(i)==(d_row_index.size()-1)) {
return i; return createIndex(i,0);
} }
} }
return -1; return QModelIndex();
} }
void RDCutListModel::removeCut(int row) void RDCutListModel::removeCut(const QModelIndex &row)
{ {
beginResetModel(); beginResetModel();
d_texts.removeAt(d_row_index.at(row)); d_texts.removeAt(d_row_index.at(row.row()));
d_colors.removeAt(d_row_index.at(row)); d_colors.removeAt(d_row_index.at(row.row()));
d_row_index.removeAt(row); d_row_index.removeAt(row.row());
for(int i=0;i<d_row_index.size();i++) { for(int i=0;i<d_row_index.size();i++) {
if(d_row_index.at(i)>row) { if(d_row_index.at(i)>row.row()) {
d_row_index[i]--; d_row_index[i]--;
} }
} }
@ -209,28 +209,17 @@ void RDCutListModel::removeCut(int row)
void RDCutListModel::removeCut(const QString &cutname) void RDCutListModel::removeCut(const QString &cutname)
{ {
for(int i=0;i<d_texts.size();i++) { for(int i=0;i<d_texts.size();i++) {
if(cutName(i)==cutname) { if(d_texts.at(i).at(12)==cutname) {
removeCut(i); removeCut(createIndex(i,0));
return; return;
} }
} }
} }
void RDCutListModel::refresh(int row) void RDCutListModel::refresh(const QModelIndex &row)
{ {
if(row<d_texts.size()) { updateCutLine(row.row());
QString sql=sqlFields()+
"where CUT_NAME=\""+RDEscapeString(d_texts.at(d_row_index.at(row)).at(12).toString())+
"\"";
RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) {
beginResetModel();
updateRow(row,q);
sortRows(d_use_weighting);
endResetModel();
}
}
} }
@ -238,7 +227,7 @@ void RDCutListModel::refresh(const QString &cutname)
{ {
for(int i=0;i<d_texts.size();i++) { for(int i=0;i<d_texts.size();i++) {
if(d_texts.at(d_row_index.at(i)).at(12)==cutname) { if(d_texts.at(d_row_index.at(i)).at(12)==cutname) {
refresh(i); updateCutLine(i);
return; return;
} }
} }
@ -251,14 +240,14 @@ unsigned RDCutListModel::cartNumber() const
} }
int RDCutListModel::row(const QString &cutname) const QModelIndex RDCutListModel::row(const QString &cutname) const
{ {
for(int i=0;i<d_row_index.size();i++) { for(int i=0;i<d_row_index.size();i++) {
if(d_texts.at(d_row_index.at(i)).at(12).toString()==cutname) { if(d_texts.at(d_row_index.at(i)).at(12).toString()==cutname) {
return i; return createIndex(i,0);
} }
} }
return -1; return QModelIndex();
} }
@ -424,6 +413,23 @@ void RDCutListModel::updateRow(int row,RDSqlQuery *q)
} }
void RDCutListModel::updateCutLine(int line)
{
if(line<d_texts.size()) {
QString sql=sqlFields()+
"where CUT_NAME=\""+RDEscapeString(d_texts.at(d_row_index.at(line)).
at(12).toString())+"\"";
RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) {
beginResetModel();
updateRow(line,q);
sortRows(d_use_weighting);
endResetModel();
}
}
}
QString RDCutListModel::sqlFields() const QString RDCutListModel::sqlFields() const
{ {
QString sql; QString sql;

View File

@ -44,14 +44,14 @@ class RDCutListModel : public QAbstractTableModel
QVariant headerData(int section,Qt::Orientation orient, QVariant headerData(int section,Qt::Orientation orient,
int role=Qt::DisplayRole) const; int role=Qt::DisplayRole) const;
QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const; QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
QString cutName(int row) const; QString cutName(const QModelIndex &row) const;
int addCut(const QString &name); QModelIndex addCut(const QString &name);
void removeCut(int row); void removeCut(const QModelIndex &index);
void removeCut(const QString &cutname); void removeCut(const QString &cutname);
void refresh(int row); void refresh(const QModelIndex &index);
void refresh(const QString &cutname); void refresh(const QString &cutname);
unsigned cartNumber() const; unsigned cartNumber() const;
int row(const QString &cutname) const; QModelIndex row(const QString &cutname) const;
bool playOrderDuplicates(QList<int> *values) const; bool playOrderDuplicates(QList<int> *values) const;
public slots: public slots:
@ -60,6 +60,7 @@ class RDCutListModel : public QAbstractTableModel
protected: protected:
void updateRow(int row,RDSqlQuery *q); void updateRow(int row,RDSqlQuery *q);
void updateCutLine(int line);
QString sqlFields() const; QString sqlFields() const;
void sortRows(int use_weighting); void sortRows(int use_weighting);

View File

@ -248,9 +248,9 @@ void AudioCart::addCutData()
} }
rdcart_cut_view->clearSelection(); rdcart_cut_view->clearSelection();
int row=rdcart_cut_model->addCut(next_name); QModelIndex row=rdcart_cut_model->addCut(next_name);
rdcart_cut_view->selectRow(row); rdcart_cut_view->selectRow(row.row());
rdcart_cut_view->scrollTo(rdcart_cut_model->index(row,0)); rdcart_cut_view->scrollTo(row);
disk_gauge->update(); disk_gauge->update();
emit cartDataChanged(); emit cartDataChanged();
@ -266,7 +266,7 @@ void AudioCart::deleteCutData()
QStringList cutnames; QStringList cutnames;
for(int i=0;i<rows.size();i++) { for(int i=0;i<rows.size();i++) {
cutnames.push_back(rdcart_cut_model->cutName(rows.at(i).row())); cutnames.push_back(rdcart_cut_model->cutName(rows.at(i)));
} }
// //
@ -357,9 +357,8 @@ void AudioCart::deleteCutData()
void AudioCart::copyCutData() void AudioCart::copyCutData()
{ {
int row; QModelIndex row=SingleSelectedLine();
if(!row.isValid()) {
if((row=SingleSelectedLine())<0) {
return; return;
} }
if(cut_clipboard!=NULL) { if(cut_clipboard!=NULL) {
@ -372,9 +371,9 @@ void AudioCart::copyCutData()
void AudioCart::pasteCutData() void AudioCart::pasteCutData()
{ {
int row; QModelIndex row=SingleSelectedLine();
if((row=SingleSelectedLine())<0) { if(!row.isValid()) {
return; return;
} }
if(!cut_clipboard->exists()) { if(!cut_clipboard->exists()) {
@ -410,9 +409,9 @@ void AudioCart::pasteCutData()
void AudioCart::extEditorCutData() void AudioCart::extEditorCutData()
{ {
int row; QModelIndex row=SingleSelectedLine();
if((row=SingleSelectedLine())<0) { if(!row.isValid()) {
return; return;
} }
@ -432,26 +431,27 @@ void AudioCart::extEditorCutData()
void AudioCart::editCutData() void AudioCart::editCutData()
{ {
int row; QModelIndex row=SingleSelectedLine();
if((row=SingleSelectedLine())<0) { if(!row.isValid()) {
return; return;
} }
QString cutname=rdcart_cut_model->cutName(row); QString cutname=rdcart_cut_model->cutName(row);
if(!RDAudioExists(cutname)) { if(!RDAudioExists(cutname)) {
QMessageBox::information(this,"RDLibrary", QMessageBox::information(this,"RDLibrary",
tr("No audio is present in the cut!")); tr("No audio is present in the cut!"));
return; return;
} }
RDEditAudio *edit= RDEditAudio *edit=
new RDEditAudio(rdcart_cart,cutname,rda->libraryConf()->outputCard(), new RDEditAudio(rdcart_cart,cutname,rda->libraryConf()->outputCard(),
rda->libraryConf()->outputPort(),rda->libraryConf()->tailPreroll(), rda->libraryConf()->outputPort(),
rda->libraryConf()->tailPreroll(),
rda->libraryConf()->trimThreshold(),this); rda->libraryConf()->trimThreshold(),this);
if(edit->exec()!=-1) { if(edit->exec()!=-1) {
emit cartDataChanged(); emit cartDataChanged();
rdcart_cart->updateLength(rdcart_controls->enforce_length_box->isChecked(), rdcart_cart->updateLength(rdcart_controls->enforce_length_box->isChecked(),
QTime().msecsTo(rdcart_controls-> QTime().msecsTo(rdcart_controls->
forced_length_edit->time())); forced_length_edit->time()));
rdcart_cut_model->refresh(row); rdcart_cut_model->refresh(row);
} }
delete edit; delete edit;
@ -460,9 +460,9 @@ void AudioCart::editCutData()
void AudioCart::recordCutData() void AudioCart::recordCutData()
{ {
int row; QModelIndex row=SingleSelectedLine();
if((row=SingleSelectedLine())<0) { if(!row.isValid()) {
return; return;
} }
QString cutname=rdcart_cut_model->cutName(row); QString cutname=rdcart_cut_model->cutName(row);
@ -470,7 +470,7 @@ void AudioCart::recordCutData()
cut->exec(); cut->exec();
delete cut; delete cut;
rdcart_cut_model->refresh(cutname); rdcart_cut_model->refresh(cutname);
rdcart_cut_view->selectRow(rdcart_cut_model->row(cutname)); rdcart_cut_view->selectRow(rdcart_cut_model->row(cutname).row());
if(cut_clipboard==NULL) { if(cut_clipboard==NULL) {
paste_cut_button->setDisabled(true); paste_cut_button->setDisabled(true);
} }
@ -496,9 +496,10 @@ void AudioCart::ripCutData()
QString artist; QString artist;
QString album; QString album;
QString label; QString label;
int row;
if((row=SingleSelectedLine())<0) { QModelIndex row=SingleSelectedLine();
if(!row.isValid()) {
return; return;
} }
@ -539,9 +540,10 @@ void AudioCart::importCutData()
QString cutname; QString cutname;
RDWaveData wavedata; RDWaveData wavedata;
std::vector<QString> cutnames; std::vector<QString> cutnames;
int row;
if((row=SingleSelectedLine())<0) { QModelIndex row=SingleSelectedLine();
if(!row.isValid()) {
return; return;
} }
@ -618,10 +620,10 @@ void AudioCart::copyProgressData(const QVariant &step)
} }
int AudioCart::SingleSelectedLine() const QModelIndex AudioCart::SingleSelectedLine() const
{ {
if(rdcart_cut_view->selectionModel()->selectedRows().size()!=1) { if(rdcart_cut_view->selectionModel()->selectedRows().size()!=1) {
return -1; return QModelIndex();
} }
return rdcart_cut_view->selectionModel()->selectedRows().first().row(); return rdcart_cut_view->selectionModel()->selectedRows().first();
} }

View File

@ -69,7 +69,7 @@ class AudioCart : public RDWidget
void audioChanged(); void audioChanged();
private: private:
int SingleSelectedLine() const; QModelIndex SingleSelectedLine() const;
RDCart *rdcart_cart; RDCart *rdcart_cart;
QTableView *rdcart_cut_view; QTableView *rdcart_cut_view;
RDCutListModel *rdcart_cut_model; RDCutListModel *rdcart_cut_model;