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 "portstatsfilterdialog.h"
|
||||||
#include "portstatsmodel.h"
|
#include "portstatsmodel.h"
|
||||||
#include "portstatsproxymodel.h"
|
#include "portstatsproxymodel.h"
|
||||||
|
#include "rowborderdelegate.h"
|
||||||
#include "streamstatsmodel.h"
|
#include "streamstatsmodel.h"
|
||||||
#include "streamstatswindow.h"
|
#include "streamstatswindow.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
@ -55,6 +56,18 @@ PortStatsWindow::PortStatsWindow(PortGroupList *pgl, QWidget *parent)
|
|||||||
tvPortStats->verticalHeader()->setDefaultSectionSize(
|
tvPortStats->verticalHeader()->setDefaultSectionSize(
|
||||||
tvPortStats->verticalHeader()->minimumSectionSize());
|
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);
|
statusDelegate = new IconOnlyDelegate(this);
|
||||||
#if 0
|
#if 0
|
||||||
// XXX: Ideally we should use this, but it doesn't work because in
|
// XXX: Ideally we should use this, but it doesn't work because in
|
||||||
@ -68,9 +81,7 @@ PortStatsWindow::PortStatsWindow(PortGroupList *pgl, QWidget *parent)
|
|||||||
statusDelegate);
|
statusDelegate);
|
||||||
#else
|
#else
|
||||||
// ... so we use this hard-coded hack
|
// ... so we use this hard-coded hack
|
||||||
tvPortStats->setItemDelegateForRow(
|
tvPortStats->setItemDelegateForRow(e_COMBO_STATE + offset, statusDelegate);
|
||||||
proxyStatsModel ? e_COMBO_STATE-1 : e_COMBO_STATE,
|
|
||||||
statusDelegate);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
connect(tvPortStats->selectionModel(),
|
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