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

@@ -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;