mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-20 15:02:27 +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).
|
||||
2022-08-04 Fred Gleason <fredg@paravelsystems.com>
|
||||
* 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
|
||||
,SLOT(notificationReceivedData(RDNotification *)));
|
||||
catch_recordings_view->setModel(catch_recordings_model);
|
||||
catch_recordings_view->setSortingEnabled(true);
|
||||
catch_recordings_view->sortByColumn(2,Qt::AscendingOrder);
|
||||
catch_recordings_view->resizeColumnsToContents();
|
||||
connect(catch_recordings_view,SIGNAL(doubleClicked(const QModelIndex &)),
|
||||
this,SLOT(doubleClickedData(const QModelIndex &)));
|
||||
|
@ -29,6 +29,11 @@
|
||||
RecordListModel::RecordListModel(QObject *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
|
||||
//
|
||||
@ -38,104 +43,138 @@ RecordListModel::RecordListModel(QObject *parent)
|
||||
|
||||
d_headers.push_back(tr("Description")); // 00
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`DESCRIPTION`");
|
||||
|
||||
d_headers.push_back(tr("Location")); // 01
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`STATION_NAME`");
|
||||
|
||||
d_headers.push_back(tr("Start")); // 02
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`START_TIME`");
|
||||
|
||||
d_headers.push_back(tr("End")); // 03
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`END_TIME`");
|
||||
|
||||
d_headers.push_back(tr("Router")); // 04
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`CHANNEL`");
|
||||
|
||||
d_headers.push_back(tr("Source")); // 05
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`SWITCH_INPUT`");
|
||||
|
||||
d_headers.push_back(tr("Destination")); // 06
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`SWITCH_OUTPUT`");
|
||||
|
||||
d_headers.push_back(tr("Su")); // 07
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`SUN`");
|
||||
|
||||
d_headers.push_back(tr("Mo")); // 08
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Tu")); // 09
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("We")); // 10
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Th")); // 11
|
||||
d_alignments.push_back(center);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Fr")); // 12
|
||||
d_alignments.push_back(center);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Sa")); // 13
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("RSS Feed")); // 14
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`FEEDS`.`KEY_NAME`");
|
||||
|
||||
d_headers.push_back(tr("Origin")); // 15
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`CUTS`.`ORIGIN_NAME`");
|
||||
|
||||
d_headers.push_back(tr("One Shot")); // 16
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`ONE_SHOT`");
|
||||
|
||||
d_headers.push_back(tr("Trim Threshold")); // 17
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`TRIM_THRESHOLD`");
|
||||
|
||||
d_headers.push_back(tr("StartDate Offset")); // 18
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`STARTDATE_OFFSET`");
|
||||
|
||||
d_headers.push_back(tr("EndDate Offset")); // 19
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`ENDDATE_OFFSET`");
|
||||
|
||||
d_headers.push_back(tr("Format")); // 20
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`FORMAT`");
|
||||
|
||||
d_headers.push_back(tr("Channels")); // 21
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`CHANNELS`");
|
||||
|
||||
d_headers.push_back(tr("Sample Rate")); // 22
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`SAMPRATE`");
|
||||
|
||||
d_headers.push_back(tr("Bit Rate")); // 23
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`BITRATE`");
|
||||
|
||||
d_headers.push_back(tr("Host")); // 24
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Deck")); // 25
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Cut")); // 26
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Cart")); // 27
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("ID")); // 28
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`ID`");
|
||||
|
||||
d_headers.push_back(tr("Type")); // 29
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`TYPE`");
|
||||
|
||||
d_headers.push_back(tr("Status")); // 30
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("");
|
||||
|
||||
d_headers.push_back(tr("Exit Code")); // 31
|
||||
d_alignments.push_back(left);
|
||||
d_order_columns.push_back("`RECORDINGS`.`EXIT_CODE`");
|
||||
|
||||
d_headers.push_back(tr("State")); // 32
|
||||
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
|
||||
{
|
||||
return d_ids.at(row.row());
|
||||
@ -453,10 +500,18 @@ bool RecordListModel::refresh(unsigned id)
|
||||
|
||||
void RecordListModel::setFilterSql(const QString &sql)
|
||||
{
|
||||
if(sql!=d_filter_sql) {
|
||||
QString fsql=sql;
|
||||
|
||||
d_filter_sql=sql;
|
||||
updateModel();
|
||||
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> icons;
|
||||
@ -518,9 +573,12 @@ void RecordListModel::updateModel()
|
||||
//
|
||||
// Load Model Rows
|
||||
//
|
||||
/*
|
||||
sql=sqlFields()+
|
||||
d_filter_sql+
|
||||
"order by `RECORDINGS`.`START_TIME` ";
|
||||
*/
|
||||
sql=sqlFields()+filter_sql;
|
||||
beginResetModel();
|
||||
d_ids.clear();
|
||||
d_types.clear();
|
||||
|
@ -45,6 +45,7 @@ class RecordListModel : public QAbstractTableModel
|
||||
QVariant headerData(int section,Qt::Orientation orient,
|
||||
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;
|
||||
RDRecording::Type recordType(const QModelIndex &row) const;
|
||||
RDRecording::ExitCode recordExitCode(const QModelIndex &row) const;
|
||||
@ -72,7 +73,7 @@ class RecordListModel : public QAbstractTableModel
|
||||
void notificationReceivedData(RDNotification *notify);
|
||||
|
||||
protected:
|
||||
void updateModel();
|
||||
void updateModel(const QString &filter_sql);
|
||||
void updateRowLine(int line);
|
||||
void updateRow(int row,RDSqlQuery *q);
|
||||
QString sqlFields() const;
|
||||
@ -81,6 +82,10 @@ class RecordListModel : public QAbstractTableModel
|
||||
QString GetSourceName(QString station,int matrix,int input);
|
||||
QString GetDestinationName(QString station,int matrix,int output);
|
||||
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;
|
||||
QFont d_font;
|
||||
QFont d_bold_font;
|
||||
|
Loading…
x
Reference in New Issue
Block a user