Minor improvements

This commit is contained in:
2019-04-05 21:19:08 +02:00
parent cd9bfb8ffe
commit b1ce4ecf64
5 changed files with 61 additions and 26 deletions

View File

@@ -72,6 +72,6 @@ qint64 GzipDevice::writeData(const char *data, qint64 len)
{
Q_UNUSED(data)
Q_UNUSED(len)
qFatal("no writes allowed in GzipDevice!");
throw std::runtime_error("writing not allowed!");
return -1;
}

View File

@@ -1,22 +1,19 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSqlRelationalDelegate>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRelationalTableModel>
#include <QMessageBox>
#include <QStringBuilder>
#include <QMenu>
#include <QAction>
#include <QDateTime>
#include <QSqlRecord>
#include <QSqlRelation>
#include <QDebug>
#include "wizard/importwizard.h"
#include "dialogs/opendialog.h"
#include "dialogs/graphdialog.h"
#include "models/sqlrelationaltablemodel.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
@@ -40,8 +37,6 @@ MainWindow::MainWindow(QWidget *parent) :
connect(m_ui->lineEdit, &QLineEdit::returnPressed, this, &MainWindow::updateQuery);
connect(m_ui->pushButton, &QPushButton::pressed, this, &MainWindow::updateQuery);
m_ui->tableView->setItemDelegate(new QSqlRelationalDelegate(m_ui->tableView));
connect(m_ui->tableView, &QWidget::customContextMenuRequested, this, &MainWindow::showContextMenu);
}
@@ -61,7 +56,6 @@ void MainWindow::newClicked()
m_database = wizard.database();
setupModel();
updateQuery();
}
}
@@ -79,7 +73,6 @@ void MainWindow::openClicked()
m_database = dialog.database();
setupModel();
updateQuery();
}
}
@@ -105,16 +98,57 @@ void MainWindow::graphClicked()
void MainWindow::updateQuery()
{
auto filter = m_ui->lineEdit->text();
QString sql = "SELECT "
"`Logs`.`ID` AS ID, "
"`Logs`.`Timestamp` AS ID, "
"`Hosts`.`Name` AS Host, "
"`Processes`.`Name` AS Process, "
"`Filenames`.`Name` AS Filename, "
"`Threads`.`Name` AS Thread, "
"`Types`.`Name` AS Type, "
"`Logs`.`Message` AS Message "
"FROM "
"`Logs` "
"LEFT JOIN "
"`Hosts` "
"ON "
"`Logs`.`HostID` = `Hosts`.`ID` "
"LEFT JOIN "
"`Processes` "
"ON "
"`Logs`.`ProcessID` = `Processes`.`ID` "
"LEFT JOIN "
"`Filenames` "
"ON "
"`Logs`.`FilenameID` = `Filenames`.`ID` "
"LEFT JOIN "
"`Threads` "
"ON "
"`Logs`.`ThreadID` = `Threads`.`ID` "
"LEFT JOIN "
"`Types` "
"ON "
"`Logs`.`TypeID` = `Types`.`ID` ";
auto filter = m_ui->lineEdit->text().replace("||", "OR").replace("&&", "AND");
if (!filter.trimmed().isEmpty())
{
filter.replace("||", "OR");
filter.replace("&&", "AND");
m_model->setFilter(filter);
sql.append("WHERE ");
sql.append(filter);
}
if (!m_model->select())
QMessageBox::warning(this, tr("Query failed!"), tr("Query failed!") % "\n\n" % m_model->query().lastError().text());
sql.append("ORDER BY "
"`Logs`.`Timestamp` ASC;");
QSqlQuery query(sql, m_database);
if (query.lastError().isValid())
{
QMessageBox::warning(this, tr("Query failed!"), tr("Query failed!") % "\n\n" % query.lastError().text());
return;
}
m_model->setQuery(query);
}
void MainWindow::showColumns()
@@ -140,7 +174,6 @@ void MainWindow::showContextMenu(const QPoint &pos)
QMenu menu(this);
const auto exec = [this,&menu,&pos](){ return menu.exec(m_ui->tableView->viewport()->mapToGlobal(pos)); };
qDebug() << m_model->record(index.row()).value(2);
const auto data = m_model->data(index, Qt::EditRole).toString();
switch (index.column())
@@ -204,13 +237,8 @@ void MainWindow::showContextMenu(const QPoint &pos)
void MainWindow::setupModel()
{
m_ui->tableView->setModel(nullptr);
m_model = std::make_unique<SqlRelationalTableModel>(this, m_database);
m_model->setTable("Logs");
m_model->setRelation(ColumnHost, QSqlRelation("Hosts", "ID", "Name"));
m_model->setRelation(ColumnProcess, QSqlRelation("Processes", "ID", "Name"));
m_model->setRelation(ColumnFilename, QSqlRelation("Filenames", "ID", "Name"));
m_model->setRelation(ColumnThread, QSqlRelation("Threads", "ID", "Name"));
m_model->setRelation(ColumnType, QSqlRelation("Types", "ID", "Name"));
m_model = std::make_unique<QSqlQueryModel>(this);
updateQuery();
m_ui->tableView->setModel(m_model.get());
m_ui->tableView->setColumnHidden(ColumnID, true);
showColumns();

View File

@@ -5,7 +5,7 @@
#include <memory>
class QSqlRelationalTableModel;
class QSqlQueryModel;
namespace Ui { class MainWindow; }
@@ -34,5 +34,5 @@ private:
const std::unique_ptr<Ui::MainWindow> m_ui;
QSqlDatabase m_database;
std::unique_ptr<QSqlRelationalTableModel> m_model;
std::unique_ptr<QSqlQueryModel> m_model;
};

View File

@@ -44,12 +44,18 @@
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="autoScroll">
<bool>false</bool>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
<property name="showGrid">
<bool>false</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
@@ -60,7 +66,7 @@
<x>0</x>
<y>0</y>
<width>965</width>
<height>20</height>
<height>18</height>
</rect>
</property>
<widget class="QMenu" name="menu_File">

View File

@@ -6,6 +6,7 @@
#include <QVariant>
#include <utility>
#include <memory>
#include "gzipdevice.h"