Visually group related port stats
A horizontal line is drawn between groups
This commit is contained in:
parent
4f6749f16d
commit
9849973562
@ -24,6 +24,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
#include "portstatsfilterdialog.h"
|
||||
#include "portstatsmodel.h"
|
||||
#include "portstatsproxymodel.h"
|
||||
#include "rowborderdelegate.h"
|
||||
#include "streamstatsmodel.h"
|
||||
#include "streamstatswindow.h"
|
||||
#include "settings.h"
|
||||
@ -55,6 +56,18 @@ PortStatsWindow::PortStatsWindow(PortGroupList *pgl, QWidget *parent)
|
||||
tvPortStats->verticalHeader()->setDefaultSectionSize(
|
||||
tvPortStats->verticalHeader()->minimumSectionSize());
|
||||
|
||||
// XXX: Set Delegates for port stats view
|
||||
// RowBorderDelegate: Group related stats by drawing a horizontal line
|
||||
// IconOnlyDelegate : For status, show only icons not icons+text
|
||||
int offset = proxyStatsModel ? -1 : 0; // adjust for hidden 'user' row
|
||||
tvPortStats->setItemDelegate(
|
||||
new RowBorderDelegate(
|
||||
QSet<int>({
|
||||
e_STAT_FRAMES_SENT + offset,
|
||||
e_STAT_FRAME_SEND_RATE + offset,
|
||||
e_STAT_RX_DROPS + offset}),
|
||||
this));
|
||||
|
||||
statusDelegate = new IconOnlyDelegate(this);
|
||||
#if 0
|
||||
// XXX: Ideally we should use this, but it doesn't work because in
|
||||
@ -68,9 +81,7 @@ PortStatsWindow::PortStatsWindow(PortGroupList *pgl, QWidget *parent)
|
||||
statusDelegate);
|
||||
#else
|
||||
// ... so we use this hard-coded hack
|
||||
tvPortStats->setItemDelegateForRow(
|
||||
proxyStatsModel ? e_COMBO_STATE-1 : e_COMBO_STATE,
|
||||
statusDelegate);
|
||||
tvPortStats->setItemDelegateForRow(e_COMBO_STATE + offset, statusDelegate);
|
||||
#endif
|
||||
|
||||
connect(tvPortStats->selectionModel(),
|
||||
|
50
client/rowborderdelegate.h
Normal file
50
client/rowborderdelegate.h
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
Copyright (C) 2023 Srivats P.
|
||||
|
||||
This file is part of "Ostinato"
|
||||
|
||||
This is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
#ifndef _ROW_BORDER_DELEGATE
|
||||
#define _ROW_BORDER_DELEGATE
|
||||
|
||||
#include <QStyledItemDelegate>
|
||||
|
||||
#include <QSet>
|
||||
|
||||
class RowBorderDelegate : public QStyledItemDelegate
|
||||
{
|
||||
public:
|
||||
RowBorderDelegate(QSet<int> rows, QObject *parent = nullptr)
|
||||
: QStyledItemDelegate(parent), rows_(rows)
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
void paint(QPainter *painter, const QStyleOptionViewItem &option,
|
||||
const QModelIndex &index) const
|
||||
{
|
||||
QStyledItemDelegate::paint(painter, option, index);
|
||||
if (rows_.contains(index.row())) {
|
||||
const QRect rect(option.rect);
|
||||
painter->drawLine(rect.topLeft(), rect.topRight());
|
||||
}
|
||||
}
|
||||
|
||||
QSet<int> rows_;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user