Browse Source

Add basic log table model

basic-view
Ali Hatami Tajik 6 months ago
parent
commit
2affa115ff
  1. 6
      gui/gui.pro
  2. 12
      gui/main.cpp
  3. 65
      gui/viewmodel/table/LogTableModel.cpp
  4. 51
      gui/viewmodel/table/LogTableModel.h

6
gui/gui.pro

@ -17,10 +17,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \ SOURCES += \
main.cpp \ main.cpp \
view/MainWindow.cpp view/MainWindow.cpp \
viewmodel/table/LogTableModel.cpp
HEADERS += \ HEADERS += \
view/MainWindow.h view/MainWindow.h \
viewmodel/table/LogTableModel.h
FORMS += \ FORMS += \
view/MainWindow.ui view/MainWindow.ui

12
gui/main.cpp

@ -7,18 +7,22 @@
#include <QFile> #include <QFile>
#include <QVector> #include <QVector>
#include "parser/JsonParser.h"
#include "viewmodel/table/LogTableModel.h"
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
MainWindow w; MainWindow w;
QString jsonString = QString jsonString =
R"( R"(
[{"id":"stderr","level":1,"location":{"file":"../../../host-projects/sono/logic/src/viewModel/factory/ApplicationStarter.cpp","func":"init","lineno":69},"msg":["FUCK\n"],"scope":"global","threadId":124330260010752,"timestamp":1716911725703}] {"id":"stderr","level":1,"location":{"file":"../../../host-projects/sono/logic/src/viewModel/factory/ApplicationStarter.cpp","func":"init","lineno":69},"msg":["FUCK\n"],"scope":"global","threadId":124330260010752,"timestamp":1716911725703}
)"; )";
QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonString.toUtf8()); auto warehouse = std::make_shared<LogWarehouse>();
QJsonArray jsonArray = jsonDoc.array(); warehouse->addData(JsonParser().parse(jsonString));
auto model = new LogTableModel(warehouse);
w.setTable(model);
w.show(); w.show();
return a.exec(); return a.exec();

65
gui/viewmodel/table/LogTableModel.cpp

@ -0,0 +1,65 @@
#include "viewmodel/table/LogTableModel.h"
/*************************************************************************************************/
LogTableModel::LogTableModel(LogWarehouse_ptr warehouse) : _warehouse(warehouse)
{
initColumnMap();
}
/*************************************************************************************************/
LogTableModel::~LogTableModel()
{
}
/*************************************************************************************************/
int LogTableModel::rowCount(const QModelIndex& parent) const {
Q_UNUSED(parent)
auto size = _warehouse->getLength();
return size;
}
/*************************************************************************************************/
int LogTableModel::columnCount(const QModelIndex& parent) const {
Q_UNUSED(parent)
return _columnMap.size();
}
/*************************************************************************************************/
QVariant LogTableModel::data(const QModelIndex& index, int role) const {
if(!index.isValid() || role != Qt::DisplayRole)
{
return QVariant();
}
return QVariant();
}
/*************************************************************************************************/
QVariant LogTableModel::headerData(int section, Qt::Orientation orientation, int role) const {
if(role == Qt::DisplayRole)
{
if(orientation == Qt::Horizontal)
{
return _columnMap[section];
}
}
return QVariant();
}
/*************************************************************************************************/
void LogTableModel::initColumnMap()
{
_columnMap[id] = "Logger Id";
_columnMap[level] = "Level";
_columnMap[timestamp] = "Time";
_columnMap[file] = "File Address";
_columnMap[func] = "Function";
_columnMap[lineno] = "Line Number";
_columnMap[msg] = "Message";
_columnMap[scope] = "Scope";
_columnMap[threadId] = "Thread";
}

51
gui/viewmodel/table/LogTableModel.h

@ -0,0 +1,51 @@
#ifndef BASEJSONMODEL_H
#define BASEJSONMODEL_H
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QFile>
#include <QVector>
#include <QAbstractTableModel>
#include "LogWarehouse.h"
class LogTableModel : public QAbstractTableModel
{
Q_OBJECT
public:
LogTableModel(LogWarehouse_ptr warehouse);
~LogTableModel() override;
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
QVariant headerData(int section, Qt::Orientation orientation,
int role = Qt::DisplayRole) const override;
private:
enum ELogColumn : int
{
id,
level,
timestamp,
file,
func,
lineno,
msg,
scope,
threadId,
};
QMap<int, QString> _columnMap;
LogWarehouse_ptr _warehouse;
void initColumnMap();
};
#endif //BASEJSONMODEL_H
Loading…
Cancel
Save