mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-07-26 09:28:13 +02:00
2022-08-04 Fred Gleason <fredg@paravelsystems.com>
* Added support for sorting the event list in rdcatch(1). Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
e2f3ff23ce
commit
1f22430ed4
@ -23227,3 +23227,5 @@
|
|||||||
* Added a 'Router' column to the event list in rdcatch(1).
|
* Added a 'Router' column to the event list in rdcatch(1).
|
||||||
2022-08-04 Fred Gleason <fredg@paravelsystems.com>
|
2022-08-04 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Added the ability to filter rdcatch(1) events by switcher matrix.
|
* Added the ability to filter rdcatch(1) events by switcher matrix.
|
||||||
|
2022-08-04 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added support for sorting the event list in rdcatch(1).
|
||||||
|
@ -379,6 +379,8 @@ MainWidget::MainWidget(RDConfig *c,QWidget *parent)
|
|||||||
catch_recordings_model
|
catch_recordings_model
|
||||||
,SLOT(notificationReceivedData(RDNotification *)));
|
,SLOT(notificationReceivedData(RDNotification *)));
|
||||||
catch_recordings_view->setModel(catch_recordings_model);
|
catch_recordings_view->setModel(catch_recordings_model);
|
||||||
|
catch_recordings_view->setSortingEnabled(true);
|
||||||
|
catch_recordings_view->sortByColumn(2,Qt::AscendingOrder);
|
||||||
catch_recordings_view->resizeColumnsToContents();
|
catch_recordings_view->resizeColumnsToContents();
|
||||||
connect(catch_recordings_view,SIGNAL(doubleClicked(const QModelIndex &)),
|
connect(catch_recordings_view,SIGNAL(doubleClicked(const QModelIndex &)),
|
||||||
this,SLOT(doubleClickedData(const QModelIndex &)));
|
this,SLOT(doubleClickedData(const QModelIndex &)));
|
||||||
|
@ -29,6 +29,11 @@
|
|||||||
RecordListModel::RecordListModel(QObject *parent)
|
RecordListModel::RecordListModel(QObject *parent)
|
||||||
: QAbstractTableModel(parent)
|
: QAbstractTableModel(parent)
|
||||||
{
|
{
|
||||||
|
d_sort_column=0;
|
||||||
|
d_sort_order=Qt::AscendingOrder;
|
||||||
|
d_sort_clauses[Qt::AscendingOrder]="asc";
|
||||||
|
d_sort_clauses[Qt::DescendingOrder]="desc";
|
||||||
|
|
||||||
//
|
//
|
||||||
// Column Attributes
|
// Column Attributes
|
||||||
//
|
//
|
||||||
@ -38,104 +43,138 @@ RecordListModel::RecordListModel(QObject *parent)
|
|||||||
|
|
||||||
d_headers.push_back(tr("Description")); // 00
|
d_headers.push_back(tr("Description")); // 00
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`DESCRIPTION`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Location")); // 01
|
d_headers.push_back(tr("Location")); // 01
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`STATION_NAME`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Start")); // 02
|
d_headers.push_back(tr("Start")); // 02
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`START_TIME`");
|
||||||
|
|
||||||
d_headers.push_back(tr("End")); // 03
|
d_headers.push_back(tr("End")); // 03
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`END_TIME`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Router")); // 04
|
d_headers.push_back(tr("Router")); // 04
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`CHANNEL`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Source")); // 05
|
d_headers.push_back(tr("Source")); // 05
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`SWITCH_INPUT`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Destination")); // 06
|
d_headers.push_back(tr("Destination")); // 06
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`SWITCH_OUTPUT`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Su")); // 07
|
d_headers.push_back(tr("Su")); // 07
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`SUN`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Mo")); // 08
|
d_headers.push_back(tr("Mo")); // 08
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Tu")); // 09
|
d_headers.push_back(tr("Tu")); // 09
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("We")); // 10
|
d_headers.push_back(tr("We")); // 10
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Th")); // 11
|
d_headers.push_back(tr("Th")); // 11
|
||||||
d_alignments.push_back(center);
|
d_alignments.push_back(center);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Fr")); // 12
|
d_headers.push_back(tr("Fr")); // 12
|
||||||
d_alignments.push_back(center);
|
d_alignments.push_back(center);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Sa")); // 13
|
d_headers.push_back(tr("Sa")); // 13
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("RSS Feed")); // 14
|
d_headers.push_back(tr("RSS Feed")); // 14
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`FEEDS`.`KEY_NAME`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Origin")); // 15
|
d_headers.push_back(tr("Origin")); // 15
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`CUTS`.`ORIGIN_NAME`");
|
||||||
|
|
||||||
d_headers.push_back(tr("One Shot")); // 16
|
d_headers.push_back(tr("One Shot")); // 16
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`ONE_SHOT`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Trim Threshold")); // 17
|
d_headers.push_back(tr("Trim Threshold")); // 17
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`TRIM_THRESHOLD`");
|
||||||
|
|
||||||
d_headers.push_back(tr("StartDate Offset")); // 18
|
d_headers.push_back(tr("StartDate Offset")); // 18
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`STARTDATE_OFFSET`");
|
||||||
|
|
||||||
d_headers.push_back(tr("EndDate Offset")); // 19
|
d_headers.push_back(tr("EndDate Offset")); // 19
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`ENDDATE_OFFSET`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Format")); // 20
|
d_headers.push_back(tr("Format")); // 20
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`FORMAT`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Channels")); // 21
|
d_headers.push_back(tr("Channels")); // 21
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`CHANNELS`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Sample Rate")); // 22
|
d_headers.push_back(tr("Sample Rate")); // 22
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`SAMPRATE`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Bit Rate")); // 23
|
d_headers.push_back(tr("Bit Rate")); // 23
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`BITRATE`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Host")); // 24
|
d_headers.push_back(tr("Host")); // 24
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Deck")); // 25
|
d_headers.push_back(tr("Deck")); // 25
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Cut")); // 26
|
d_headers.push_back(tr("Cut")); // 26
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Cart")); // 27
|
d_headers.push_back(tr("Cart")); // 27
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("ID")); // 28
|
d_headers.push_back(tr("ID")); // 28
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`ID`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Type")); // 29
|
d_headers.push_back(tr("Type")); // 29
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`TYPE`");
|
||||||
|
|
||||||
d_headers.push_back(tr("Status")); // 30
|
d_headers.push_back(tr("Status")); // 30
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
d_headers.push_back(tr("Exit Code")); // 31
|
d_headers.push_back(tr("Exit Code")); // 31
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("`RECORDINGS`.`EXIT_CODE`");
|
||||||
|
|
||||||
d_headers.push_back(tr("State")); // 32
|
d_headers.push_back(tr("State")); // 32
|
||||||
d_alignments.push_back(left);
|
d_alignments.push_back(left);
|
||||||
|
d_order_columns.push_back("");
|
||||||
|
|
||||||
updateModel();
|
setFilterSql("");
|
||||||
|
// updateModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -227,6 +266,14 @@ QVariant RecordListModel::data(const QModelIndex &index,int role) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RecordListModel::sort(int col,Qt::SortOrder order)
|
||||||
|
{
|
||||||
|
d_sort_column=col;
|
||||||
|
d_sort_order=order;
|
||||||
|
setFilterSql(d_filter_sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned RecordListModel::recordId(const QModelIndex &row) const
|
unsigned RecordListModel::recordId(const QModelIndex &row) const
|
||||||
{
|
{
|
||||||
return d_ids.at(row.row());
|
return d_ids.at(row.row());
|
||||||
@ -453,10 +500,18 @@ bool RecordListModel::refresh(unsigned id)
|
|||||||
|
|
||||||
void RecordListModel::setFilterSql(const QString &sql)
|
void RecordListModel::setFilterSql(const QString &sql)
|
||||||
{
|
{
|
||||||
if(sql!=d_filter_sql) {
|
QString fsql=sql;
|
||||||
d_filter_sql=sql;
|
|
||||||
updateModel();
|
d_filter_sql=sql;
|
||||||
|
if((d_sort_column<0)||(d_order_columns.at(d_sort_column).isEmpty())) {
|
||||||
|
// Use "natural" sort order
|
||||||
|
fsql+=" order by `RECORDINGS`.`START_TIME` asc ";
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
fsql+=" order by "+d_order_columns.at(d_sort_column)+" "+
|
||||||
|
d_sort_clauses.value(d_sort_order);
|
||||||
|
}
|
||||||
|
updateModel(fsql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -492,7 +547,7 @@ void RecordListModel::notificationReceivedData(RDNotification *notify)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void RecordListModel::updateModel()
|
void RecordListModel::updateModel(const QString &filter_sql)
|
||||||
{
|
{
|
||||||
QList<QVariant> texts;
|
QList<QVariant> texts;
|
||||||
QList<QVariant> icons;
|
QList<QVariant> icons;
|
||||||
@ -518,9 +573,12 @@ void RecordListModel::updateModel()
|
|||||||
//
|
//
|
||||||
// Load Model Rows
|
// Load Model Rows
|
||||||
//
|
//
|
||||||
|
/*
|
||||||
sql=sqlFields()+
|
sql=sqlFields()+
|
||||||
d_filter_sql+
|
d_filter_sql+
|
||||||
"order by `RECORDINGS`.`START_TIME` ";
|
"order by `RECORDINGS`.`START_TIME` ";
|
||||||
|
*/
|
||||||
|
sql=sqlFields()+filter_sql;
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
d_ids.clear();
|
d_ids.clear();
|
||||||
d_types.clear();
|
d_types.clear();
|
||||||
|
@ -45,6 +45,7 @@ class RecordListModel : 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;
|
||||||
|
void sort(int col,Qt::SortOrder order=Qt::AscendingOrder);
|
||||||
unsigned recordId(const QModelIndex &row) const;
|
unsigned recordId(const QModelIndex &row) const;
|
||||||
RDRecording::Type recordType(const QModelIndex &row) const;
|
RDRecording::Type recordType(const QModelIndex &row) const;
|
||||||
RDRecording::ExitCode recordExitCode(const QModelIndex &row) const;
|
RDRecording::ExitCode recordExitCode(const QModelIndex &row) const;
|
||||||
@ -72,7 +73,7 @@ class RecordListModel : public QAbstractTableModel
|
|||||||
void notificationReceivedData(RDNotification *notify);
|
void notificationReceivedData(RDNotification *notify);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void updateModel();
|
void updateModel(const QString &filter_sql);
|
||||||
void updateRowLine(int line);
|
void updateRowLine(int line);
|
||||||
void updateRow(int row,RDSqlQuery *q);
|
void updateRow(int row,RDSqlQuery *q);
|
||||||
QString sqlFields() const;
|
QString sqlFields() const;
|
||||||
@ -81,6 +82,10 @@ class RecordListModel : public QAbstractTableModel
|
|||||||
QString GetSourceName(QString station,int matrix,int input);
|
QString GetSourceName(QString station,int matrix,int input);
|
||||||
QString GetDestinationName(QString station,int matrix,int output);
|
QString GetDestinationName(QString station,int matrix,int output);
|
||||||
void UpdateStatus(int line);
|
void UpdateStatus(int line);
|
||||||
|
int d_sort_column;
|
||||||
|
Qt::SortOrder d_sort_order;
|
||||||
|
QMap<Qt::SortOrder,QString> d_sort_clauses;
|
||||||
|
QStringList d_order_columns;
|
||||||
QPalette d_palette;
|
QPalette d_palette;
|
||||||
QFont d_font;
|
QFont d_font;
|
||||||
QFont d_bold_font;
|
QFont d_bold_font;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user