Completion of adding a new mode to sniffer window (View Bits). Also

now it loads and saves the window position, size, and column sizes for
the sniffer window.
This commit is contained in:
Collin Kidder
2019-02-20 21:14:25 -05:00
parent cc4d0ff746
commit b54777d1aa
5 changed files with 91 additions and 5 deletions
+18 -3
View File
@@ -13,6 +13,17 @@ SnifferDelegate::SnifferDelegate(QWidget *parent) : QItemDelegate(parent)
grayBrush = QBrush(QColor(230,230,230)); grayBrush = QBrush(QColor(230,230,230));
mainFont.setPointSize(10); mainFont.setPointSize(10);
mainFontInfo = new QFontInfo(mainFont); mainFontInfo = new QFontInfo(mainFont);
mFadeInactive = false;
}
bool SnifferDelegate::getFadeInactive()
{
return mFadeInactive;
}
void SnifferDelegate::setFadeInactive(bool val)
{
mFadeInactive = val;
} }
void SnifferDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const void SnifferDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
@@ -40,6 +51,8 @@ void SnifferDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio
int xSpan = viewport.right() - viewport.left(); int xSpan = viewport.right() - viewport.left();
int ySpan = viewport.bottom() - viewport.top(); int ySpan = viewport.bottom() - viewport.top();
int yOffset = (ySpan - (xSpan / 4)) / 2;
if (yOffset < 0) yOffset = 0;
//qDebug() << "XSpan" << xSpan << " YSpan " << ySpan; //qDebug() << "XSpan" << xSpan << " YSpan " << ySpan;
@@ -81,14 +94,16 @@ void SnifferDelegate::paint(QPainter *painter, const QStyleOptionViewItem &optio
painter->setBrush(redBrush); painter->setBrush(redBrush);
} }
} }
painter->setOpacity((255 - v) / 255.0); if (mFadeInactive) painter->setOpacity((255 - v) / 255.0);
painter->drawRect(viewport.left() + x * xSector, viewport.top(), xSector, xSector); else painter->setOpacity(1.0);
painter->drawRect(viewport.left() + x * xSector, viewport.top() + yOffset, xSector, xSector);
} }
//painter->setPen(QPen(QColor(v,v,v,255))); //painter->setPen(QPen(QColor(v,v,v,255)));
painter->setOpacity(1.0);
painter->setPen(Qt::black); painter->setPen(Qt::black);
painter->setFont(mainFont); painter->setFont(mainFont);
painter->drawText(QRect(viewport.left(), viewport.top() + xSector, xSpan, mainFontInfo->pixelSize()), Qt::AlignCenter, Utility::formatNumber(val)); painter->drawText(QRect(viewport.left(), viewport.top() + xSector + yOffset, xSpan, mainFontInfo->pixelSize()), Qt::AlignCenter, Utility::formatNumber(val));
} }
QSize SnifferDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const QSize SnifferDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
+3
View File
@@ -10,6 +10,8 @@ public:
explicit SnifferDelegate(QWidget *parent = nullptr); explicit SnifferDelegate(QWidget *parent = nullptr);
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
bool getFadeInactive();
void setFadeInactive(bool val);
signals: signals:
@@ -19,6 +21,7 @@ private:
QBrush blackBrush, whiteBrush, redBrush, greenBrush, grayBrush; QBrush blackBrush, whiteBrush, redBrush, greenBrush, grayBrush;
QFont mainFont; QFont mainFont;
QFontInfo* mainFontInfo; QFontInfo* mainFontInfo;
bool mFadeInactive;
}; };
#endif #endif
+58 -2
View File
@@ -17,6 +17,9 @@ SnifferWindow::SnifferWindow(QWidget *parent) :
setWindowFlags(Qt::Window); setWindowFlags(Qt::Window);
ui->treeView->setModel(&mModel); ui->treeView->setModel(&mModel);
sniffDel = new SnifferDelegate();
defaultDel = ui->treeView->itemDelegate();
/* set column width */ /* set column width */
ui->treeView->setColumnWidth(tc::ID, 80); ui->treeView->setColumnWidth(tc::ID, 80);
ui->treeView->setColumnWidth(tc::LAST, 1); ui->treeView->setColumnWidth(tc::LAST, 1);
@@ -24,7 +27,7 @@ SnifferWindow::SnifferWindow(QWidget *parent) :
ui->treeView->setColumnWidth(i, 92); ui->treeView->setColumnWidth(i, 92);
ui->treeView->setUniformRowHeights(true); ui->treeView->setUniformRowHeights(true);
ui->treeView->header()->setDefaultAlignment(Qt::AlignCenter); ui->treeView->header()->setDefaultAlignment(Qt::AlignCenter);
ui->treeView->setItemDelegate(new SnifferDelegate()); //ui->treeView->setItemDelegate(new SnifferDelegate());
/* activate sorting */ /* activate sorting */
ui->listWidget->setSortingEnabled(true); ui->listWidget->setSortingEnabled(true);
@@ -41,23 +44,75 @@ SnifferWindow::SnifferWindow(QWidget *parent) :
connect(&mModel, &SnifferModel::idChange, this, &SnifferWindow::idChange); connect(&mModel, &SnifferModel::idChange, this, &SnifferWindow::idChange);
connect(ui->listWidget, &QListWidget::itemChanged, this, &SnifferWindow::itemChanged); connect(ui->listWidget, &QListWidget::itemChanged, this, &SnifferWindow::itemChanged);
connect(ui->cbFadeInactive, &QCheckBox::stateChanged, this, [this](int val){mModel.setFadeInactive(val);}); connect(ui->cbFadeInactive, &QCheckBox::stateChanged, this, [this](int val){mModel.setFadeInactive(val);sniffDel->setFadeInactive(val);});
connect(ui->cbMuteNotched, &QCheckBox::stateChanged, this, [this](int val){mModel.setMuteNotched(val);}); connect(ui->cbMuteNotched, &QCheckBox::stateChanged, this, [this](int val){mModel.setMuteNotched(val);});
connect(ui->cbNoExpire, &QCheckBox::stateChanged, this, [this](int val){mModel.setNeverExpire(val);}); connect(ui->cbNoExpire, &QCheckBox::stateChanged, this, [this](int val){mModel.setNeverExpire(val);});
connect(ui->cbViewBits, &QCheckBox::stateChanged, this,
[this](int val)
{
if (val) ui->treeView->setItemDelegate(sniffDel);
else
{
ui->treeView->setItemDelegate(defaultDel);
}
}
);
} }
SnifferWindow::~SnifferWindow() SnifferWindow::~SnifferWindow()
{ {
closeEvent(NULL); closeEvent(NULL);
delete sniffDel;
delete ui; delete ui;
} }
void SnifferWindow::readSettings()
{
QSettings settings;
if (settings.value("Main/SaveRestorePositions", false).toBool())
{
resize(settings.value("Sniffer/WindowSize", QSize(1100, 750)).toSize());
move(settings.value("Sniffer/WindowPos", QPoint(50, 50)).toPoint());
ui->treeView->setColumnWidth(0, settings.value("Sniffer/DeltaColumn", 110).toUInt());
ui->treeView->setColumnWidth(1, settings.value("Sniffer/IDColumn", 70).toUInt());
ui->treeView->setColumnWidth(2, settings.value("Sniffer/Data0Column", 92).toUInt());
ui->treeView->setColumnWidth(3, settings.value("Sniffer/Data1Column", 92).toUInt());
ui->treeView->setColumnWidth(4, settings.value("Sniffer/Data2Column", 92).toUInt());
ui->treeView->setColumnWidth(5, settings.value("Sniffer/Data3Column", 92).toUInt());
ui->treeView->setColumnWidth(6, settings.value("Sniffer/Data4Column", 92).toUInt());
ui->treeView->setColumnWidth(7, settings.value("Sniffer/Data5Column", 92).toUInt());
ui->treeView->setColumnWidth(8, settings.value("Sniffer/Data6Column", 92).toUInt());
ui->treeView->setColumnWidth(9, settings.value("Sniffer/Data7Column", 92).toUInt());
}
}
void SnifferWindow::writeSettings()
{
QSettings settings;
if (settings.value("Main/SaveRestorePositions", false).toBool())
{
settings.setValue("Sniffer/WindowSize", size());
settings.setValue("Sniffer/WindowPos", pos());
settings.setValue("Sniffer/DeltaColumn", ui->treeView->columnWidth(0));
settings.setValue("Sniffer/IDColumn", ui->treeView->columnWidth(1));
settings.setValue("Sniffer/Data0Column", ui->treeView->columnWidth(2));
settings.setValue("Sniffer/Data1Column", ui->treeView->columnWidth(3));
settings.setValue("Sniffer/Data2Column", ui->treeView->columnWidth(4));
settings.setValue("Sniffer/Data3Column", ui->treeView->columnWidth(5));
settings.setValue("Sniffer/Data4Column", ui->treeView->columnWidth(6));
settings.setValue("Sniffer/Data5Column", ui->treeView->columnWidth(7));
settings.setValue("Sniffer/Data6Column", ui->treeView->columnWidth(8));
settings.setValue("Sniffer/Data7Column", ui->treeView->columnWidth(9));
}
}
void SnifferWindow::showEvent(QShowEvent* event) void SnifferWindow::showEvent(QShowEvent* event)
{ {
QDialog::showEvent(event); QDialog::showEvent(event);
connect(CANConManager::getInstance(), &CANConManager::framesReceived, &mModel, &SnifferModel::update); connect(CANConManager::getInstance(), &CANConManager::framesReceived, &mModel, &SnifferModel::update);
mTimer.start(); mTimer.start();
readSettings();
installEventFilter(this); installEventFilter(this);
qDebug() << "show"; qDebug() << "show";
} }
@@ -70,6 +125,7 @@ void SnifferWindow::closeEvent(QCloseEvent *event)
mTimer.stop(); mTimer.stop();
/* disconnect reception of frames */ /* disconnect reception of frames */
disconnect(CANConManager::getInstance(), 0, this, 0); disconnect(CANConManager::getInstance(), 0, this, 0);
writeSettings();
/* clear model */ /* clear model */
mModel.clear(); mModel.clear();
/* clean list */ /* clean list */
+5
View File
@@ -4,6 +4,7 @@
#include <QDialog> #include <QDialog>
#include <QListWidgetItem> #include <QListWidgetItem>
#include "sniffermodel.h" #include "sniffermodel.h"
#include "SnifferDelegate.h"
namespace Ui { namespace Ui {
class snifferWindow; class snifferWindow;
@@ -46,12 +47,16 @@ public slots:
private: private:
void filter(bool pFilter); void filter(bool pFilter);
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
void readSettings();
void writeSettings();
Ui::snifferWindow* ui; Ui::snifferWindow* ui;
SnifferModel mModel; SnifferModel mModel;
QTimer mTimer; QTimer mTimer;
QMap<int, QListWidgetItem*> mMap; QMap<int, QListWidgetItem*> mMap;
bool mFilter; bool mFilter;
SnifferDelegate *sniffDel;
QAbstractItemDelegate *defaultDel;
}; };
#endif // SNIFFER_H #endif // SNIFFER_H
+7
View File
@@ -103,6 +103,13 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="cbViewBits">
<property name="text">
<string>View Bits</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">