Add process selector and get log messages displaying

This commit is contained in:
2018-10-16 21:39:46 -05:00
parent 4fb58b4324
commit 733350b143
15 changed files with 236 additions and 48 deletions

View File

@@ -6,20 +6,83 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
#include <QDebug>
#include "traceeventmodel.hpp"
int TraceEventModel::rowCount(const QModelIndex &parent) const {
if (m_procData) {
return m_procData->traceEvents.size();
} else {
return 0;
}
return m_traceEvents.size();
}
int TraceEventModel::columnCount(const QModelIndex &parent) const {
return Column::End;
}
QVariant TraceEventModel::data(const QModelIndex &index, int role) const {
return {};
QVariant TraceEventModel::headerData(int section, Qt::Orientation orientation, int role) const {
if (role != Qt::DisplayRole) {
return QVariant();
}
if (orientation == Qt::Horizontal) {
switch (section) {
case Column::Channel:
return tr("Channel");
case Column::Source:
return tr("Source");
case Column::Message:
return tr("Message");
default:
return QVariant();
}
}
return QVariant();
}
QVariant TraceEventModel::data(const QModelIndex &index, int role) const {
if (!index.isValid()) {
return QVariant();
}
if (index.row() >= m_traceEvents.size() || index.row() < 0) {
return QVariant();
}
if (role == Qt::DisplayRole) {
const auto &te = m_traceEvents[index.row()];
switch (index.column()) {
case Column::Channel:
return te.channel;
case Column::Source:
return QString("%1:%2").arg(te.file()).arg(te.line());
case Column::Message:
return te.logMsg;
default:
return {};
}
}
return QVariant();
}
void TraceEventModel::setProcessData(ProcessData *data) {
beginResetModel();
m_traceEvents.clear();
if (m_procData) {
disconnect(m_procData, &ProcessData::traceEvent, this, &TraceEventModel::addEvent);
}
m_procData = data;
if (m_procData) {
for (const auto &te : m_procData->traceEvents) {
m_traceEvents.push_back(te);
}
connect(m_procData, &ProcessData::traceEvent, this, &TraceEventModel::addEvent);
}
endResetModel();
}
void TraceEventModel::addEvent(const TraceEvent &event) {
auto index = m_traceEvents.size();
beginInsertRows(QModelIndex(), index, index);
m_traceEvents.push_back(event);
endInsertRows();
}