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

* Modified 'RDLogListModel::logName()' to take 'QModelIndex'
	instead of 'int'.
	* Modified 'RDLogListModel::removeLog()' to take 'QModelIndex'
	instead of 'int'.
	* Modified 'RDLogListModel::addLog()' to return 'QModelIndex' instead
	of 'int'.

Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
Fred Gleason 2021-01-15 09:20:41 -05:00
parent d6b2b22462
commit 6ecad43241
8 changed files with 68 additions and 44 deletions

View File

@ -20799,3 +20799,10 @@
2021-01-15 Fred Gleason <fredg@paravelsystems.com>
* Modified 'RDCutList::cutName()'to take 'QModelIndex' instead of
'int'.
2021-01-15 Fred Gleason <fredg@paravelsystems.com>
* Modified 'RDLogListModel::logName()' to take 'QModelIndex'
instead of 'int'.
* Modified 'RDLogListModel::removeLog()' to take 'QModelIndex'
instead of 'int'.
* Modified 'RDLogListModel::addLog()' to return 'QModelIndex' instead
of 'int'.

View File

@ -117,7 +117,7 @@ void RDListLogs::okButtonData()
if(list_log_view->selectionModel()->selectedRows().size()!=1) {
return;
}
*list_logname=list_log_model->logName(list_log_view->selectionModel()->selectedRows().at(0).row());
*list_logname=list_log_model->logName(list_log_view->selectionModel()->selectedRows().at(0));
done(true);
}

View File

@ -156,13 +156,13 @@ QVariant RDLogListModel::data(const QModelIndex &index,int role) const
}
QString RDLogListModel::logName(int row) const
QString RDLogListModel::logName(const QModelIndex &row) const
{
return d_texts.at(row).at(0).toString();
return d_texts.at(row.row()).at(0).toString();
}
int RDLogListModel::addLog(const QString &name)
QModelIndex RDLogListModel::addLog(const QString &name)
{
QList<QVariant> list;
@ -172,19 +172,19 @@ int RDLogListModel::addLog(const QString &name)
list.push_back(name);
d_texts.push_back(list);
refresh(d_texts.size()-1);
updateRowLine(d_texts.size()-1);
endInsertRows();
return d_texts.size()-1;
return createIndex(d_texts.size()-1,0);
}
void RDLogListModel::removeLog(int row)
void RDLogListModel::removeLog(const QModelIndex &row)
{
beginRemoveRows(QModelIndex(),row,row);
beginRemoveRows(QModelIndex(),row.row(),row.row());
d_texts.removeAt(row);
d_icons.removeAt(row);
d_texts.removeAt(row.row());
d_icons.removeAt(row.row());
endRemoveRows();
}
@ -194,23 +194,24 @@ void RDLogListModel::removeLog(const QString &logname)
{
for(int i=0;i<d_texts.size();i++) {
if(d_texts.at(i).at(0)==logname) {
removeLog(i);
removeLog(createIndex(i,0));
return;
}
}
}
void RDLogListModel::refresh(int row)
void RDLogListModel::refresh(const QModelIndex &row)
{
if(row<d_texts.size()) {
if(row.row()<d_texts.size()) {
QString sql=sqlFields()+
"where NAME=\""+RDEscapeString(d_texts.at(row).at(0).toString())+"\"";
"where NAME=\""+RDEscapeString(d_texts.at(row.row()).at(0).toString())+
"\"";
RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) {
printf("updating %d\n",row);
updateRow(row,q);
emit dataChanged(createIndex(row,0),createIndex(row,columnCount()));
updateRow(row.row(),q);
emit dataChanged(createIndex(row.row(),0),
createIndex(row.row(),columnCount()));
}
delete q;
}
@ -221,7 +222,7 @@ void RDLogListModel::refresh(const QString &logname)
{
for(int i=0;i<d_texts.size();i++) {
if(d_texts.at(i).at(0)==logname) {
refresh(i);
updateRowLine(i);
return;
}
}
@ -264,6 +265,21 @@ void RDLogListModel::updateModel(const QString &filter_sql)
}
void RDLogListModel::updateRowLine(int line)
{
if(line<d_texts.size()) {
QString sql=sqlFields()+
"where NAME=\""+RDEscapeString(d_texts.at(line).at(0).toString())+"\"";
RDSqlQuery *q=new RDSqlQuery(sql);
if(q->first()) {
updateRow(line,q);
emit dataChanged(createIndex(line,0),createIndex(line,columnCount()));
}
delete q;
}
}
void RDLogListModel::updateRow(int row,RDSqlQuery *q)
{
QList<QVariant> texts;

View File

@ -2,7 +2,7 @@
//
// Data model for Rivendell log metadata
//
// (C) Copyright 2020 Fred Gleason <fredg@paravelsystems.com>
// (C) Copyright 2020-2021 Fred Gleason <fredg@paravelsystems.com>
//
// 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
@ -45,11 +45,11 @@ class RDLogListModel : public QAbstractTableModel
QVariant headerData(int section,Qt::Orientation orient,
int role=Qt::DisplayRole) const;
QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
QString logName(int row) const;
int addLog(const QString &name);
void removeLog(int row);
QString logName(const QModelIndex &row) const;
QModelIndex addLog(const QString &name);
void removeLog(const QModelIndex &row);
void removeLog(const QString &logname);
void refresh(int row);
void refresh(const QModelIndex &row);
void refresh(const QString &logname);
public slots:
@ -58,6 +58,7 @@ class RDLogListModel : public QAbstractTableModel
protected:
void updateModel(const QString &filter_sql);
void updateRowLine(int line);
void updateRow(int row,RDSqlQuery *q);
QString sqlFields() const;

View File

@ -327,8 +327,8 @@ ListLog::ListLog(RDLogPlay *log,int id,bool allow_pause,
//
// Map Slots
//
connect(list_log,SIGNAL(reloaded()),this,SLOT(logReloadedData()));
connect(list_log,SIGNAL(played(int)),this,SLOT(logPlayedData(int)));
// connect(list_log,SIGNAL(reloaded()),this,SLOT(logReloadedData()));
// connect(list_log,SIGNAL(played(int)),this,SLOT(logPlayedData(int)));
connect(list_log,SIGNAL(paused(int)),this,SLOT(logPausedData(int)));
connect(list_log,SIGNAL(stopped(int)),this,SLOT(logStoppedData(int)));
connect(list_log,SIGNAL(inserted(int)),this,SLOT(logInsertedData(int)));

View File

@ -153,7 +153,7 @@ void ListLogs::loadButtonData()
return;
}
*list_logname=list_log_model->logName(list_log_view->selectionModel()->
selectedRows().at(0).row());
selectedRows().at(0));
done(ListLogs::Load);
}

View File

@ -253,7 +253,7 @@ void MainWidget::addData()
QString svcname;
QStringList newlogs;
RDAddLog *log;
int row=-1;
QModelIndex row;
if(rda->user()->createLog()) {
log=new RDAddLog(&logname,&svcname,RDLogFilter::UserFilter,
@ -278,7 +278,7 @@ void MainWidget::addData()
delete editlog;
row=log_log_model->addLog(logname);
log_log_view->selectRow(row);
log_log_view->selectRow(row.row());
UnlockList();
}
}
@ -286,9 +286,9 @@ void MainWidget::addData()
void MainWidget::editData()
{
int row=-1;
QModelIndex row=SingleSelectedRow();
if((row=SingleSelectedRow())<0) {
if(!row.isValid()) {
return;
}
QString logname=log_log_model->logName(row);
@ -315,14 +315,14 @@ void MainWidget::deleteData()
if(rda->user()->deleteLog()) {
QModelIndexList rows=log_log_view->selectionModel()->selectedRows();
for(int i=0;i<rows.size();i++) {
RDLog *log=new RDLog(log_log_model->logName(rows.at(i).row()));
RDLog *log=new RDLog(log_log_model->logName(rows.at(i)));
tracks+=log->completedTracks();
delete log;
}
if(rows.size()==1) {
if(QMessageBox::question(this,"RDLogEdit - "+tr("Delete Log"),
tr("Are you sure you want to delete the")+" \""+
log_log_model->logName(rows.at(0).row())+"\" "+
log_log_model->logName(rows.at(0))+"\" "+
tr("log?"),QMessageBox::Yes,QMessageBox::No)!=
QMessageBox::Yes) {
return;
@ -386,27 +386,27 @@ void MainWidget::deleteData()
QString username;
QString stationname;
QHostAddress addr;
int rownum=rows.at(rowtable.at(i)).row();
QModelIndex row=rows.at(rowtable.at(i));
RDLogLock *log_lock=
new RDLogLock(log_log_model->logName(rownum),rda->user(),
new RDLogLock(log_log_model->logName(row),rda->user(),
rda->station(),this);
if(log_lock->tryLock(&username,&stationname,&addr)) {
RDLog *log=new RDLog(log_log_model->logName(rownum));
RDLog *log=new RDLog(log_log_model->logName(row));
if(log->remove(rda->station(),rda->user(),rda->config())) {
SendNotification(RDNotification::DeleteAction,log->name());
log_log_model->removeLog(rownum);
log_log_model->removeLog(row);
}
else {
QMessageBox::warning(this,"RDLogEdit - "+tr("Error"),
tr("Unable to delete log")+" \""+
log_log_model->logName(rownum)+"\", "+
log_log_model->logName(row)+"\", "+
tr("audio deletion error!"));
}
delete log;
}
else {
QString msg=
tr("Log")+" "+log_log_model->logName(rownum)+"\" "+
tr("Log")+" "+log_log_model->logName(row)+"\" "+
tr("is in use by")+" "+username+"@"+stationname;
if(stationname!=addr.toString()) {
msg+=" ["+addr.toString()+"]";
@ -422,9 +422,9 @@ void MainWidget::deleteData()
void MainWidget::trackData()
{
int row=-1;
QModelIndex row=SingleSelectedRow();
if((row=SingleSelectedRow())<0) {
if(!row.isValid()) {
return;
}
LockList();
@ -670,12 +670,12 @@ void MainWidget::UnlockList()
}
int MainWidget::SingleSelectedRow() const
QModelIndex MainWidget::SingleSelectedRow() const
{
if(log_log_view->selectionModel()->selectedRows().size()!=1) {
return -1;
return QModelIndex();
}
return log_log_view->selectionModel()->selectedRows().at(0).row();
return log_log_view->selectionModel()->selectedRows().at(0);
}

View File

@ -68,7 +68,7 @@ class MainWidget : public RDWidget
void UnlockList();
void LoadPositions() const;
void SavePositions() const;
int SingleSelectedRow() const;
QModelIndex SingleSelectedRow() const;
QString log_filename;
QString log_import_path;
int log_card_no;