Files
giesCANne/signalviewerwindow.cpp
T
MartinX 52f04791dd add setWindowFlags(Qt::Window) to improve window management
* improves window handling a lot
	(on Linux GNOME 3 at least: quickly resizing windows left/right, not forced in foreground anymore etc.)
	setWindowFlags() inserted in all *window.cpp files except mainwindow
    * some whitespace at EOL trimmed
2019-02-13 20:08:41 +01:00

76 lines
2.4 KiB
C++

#include "signalviewerwindow.h"
#include "ui_signalviewerwindow.h"
#include "helpwindow.h"
SignalViewerWindow::SignalViewerWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::SignalViewerWindow)
{
ui->setupUi(this);
setWindowFlags(Qt::Window);
QStringList headers;
headers << "Signal" << "Value";
ui->tableViewer->setHorizontalHeaderLabels(headers);
ui->tableViewer->setColumnWidth(0, 150);
ui->tableViewer->setColumnWidth(1, 300);
QHeaderView *HorzHdr = ui->tableViewer->horizontalHeader();
HorzHdr->setStretchLastSection(true); //causes the data column to automatically fill the tableview
dbcHandler = DBCHandler::getReference();
connect(ui->cbMessages, SIGNAL(currentIndexChanged(int)), this, SLOT(loadSignals(int)));
connect(ui->btnAdd, SIGNAL(clicked(bool)), this, SLOT(addSignal()));
loadMessages();
}
SignalViewerWindow::~SignalViewerWindow()
{
delete ui;
}
void SignalViewerWindow::loadMessages()
{
ui->cbMessages->clear();
if (dbcHandler == NULL) return;
if (dbcHandler->getFileCount() == 0) dbcHandler->createBlankFile();
for (int x = 0; x < dbcHandler->getFileByIdx(0)->messageHandler->getCount(); x++)
{
ui->cbMessages->addItem(dbcHandler->getFileByIdx(0)->messageHandler->findMsgByIdx(x)->name);
}
}
void SignalViewerWindow::loadSignals(int idx)
{
Q_UNUSED(idx);
//messages were placed into the list in the same order as they exist
//in the data structure so it should have been possible to just
//look it up based on index but by name is probably safer and this operation
//is not time critical at all.
DBC_MESSAGE *msg = dbcHandler->getFileByIdx(0)->messageHandler->findMsgByName(ui->cbMessages->currentText());
if (msg == NULL) return;
ui->cbSignals->clear();
for (int x = 0; x < msg->sigHandler->getCount(); x++)
{
ui->cbSignals->addItem(msg->sigHandler->findSignalByIdx(x)->name);
}
}
void SignalViewerWindow::addSignal()
{
DBC_MESSAGE *msg = dbcHandler->getFileByIdx(0)->messageHandler->findMsgByName(ui->cbMessages->currentText());
if (!msg) return;
DBC_SIGNAL *sig = msg->sigHandler->findSignalByName(ui->cbSignals->currentText());
if (!sig) return;
signalList.append(sig);
int rowIdx = ui->tableViewer->rowCount();
ui->tableViewer->insertRow(rowIdx);
QTableWidgetItem *item = new QTableWidgetItem(sig->name);
ui->tableViewer->setItem(rowIdx, 0, item);
}