Deleted `CommonBirbankScript` and its associated derived classes (`GetLastDaysHistoryBirbankScript`, `LoginAndCheckAccountsBirbankScript`, `PayByCardBirbankScript`). Removed dependencies on these scripts, including XML parsing, account handling, and transaction workflows related to the Birbank app.
105 lines
3.7 KiB
C++
105 lines
3.7 KiB
C++
#include "FileLogWindow.h"
|
|
|
|
#include <QHBoxLayout>
|
|
#include <QHeaderView>
|
|
#include <QVBoxLayout>
|
|
|
|
#include "dao/GeneralLogDAO.h"
|
|
|
|
static constexpr int COL_ID = 0;
|
|
static constexpr int COL_TIME = 1;
|
|
static constexpr int COL_LEVEL = 2;
|
|
static constexpr int COL_SOURCE = 3;
|
|
static constexpr int COL_MESSAGE = 4;
|
|
|
|
FileLogWindow::FileLogWindow(QWidget *parent) : QDialog(parent) {
|
|
setWindowTitle("Логи");
|
|
resize(1100, 600);
|
|
|
|
m_table = new QTableWidget(this);
|
|
m_table->setColumnCount(5);
|
|
m_table->setHorizontalHeaderLabels({"#", "Время", "Уровень", "Источник", "Сообщение"});
|
|
m_table->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
m_table->setSelectionBehavior(QAbstractItemView::SelectRows);
|
|
m_table->setSelectionMode(QAbstractItemView::SingleSelection);
|
|
m_table->verticalHeader()->hide();
|
|
m_table->horizontalHeader()->setStretchLastSection(true);
|
|
m_table->setColumnWidth(COL_ID, 45);
|
|
m_table->setColumnWidth(COL_TIME, 145);
|
|
m_table->setColumnWidth(COL_LEVEL, 80);
|
|
m_table->setColumnWidth(COL_SOURCE, 250);
|
|
|
|
m_showAllCheck = new QCheckBox("Показать все (включая DEBUG/INFO)", this);
|
|
|
|
m_prevBtn = new QPushButton("←", this);
|
|
m_nextBtn = new QPushButton("→", this);
|
|
m_pageLabel = new QLabel(this);
|
|
m_pageLabel->setAlignment(Qt::AlignCenter);
|
|
m_pageLabel->setMinimumWidth(140);
|
|
|
|
auto *refreshBtn = new QPushButton("Обновить", this);
|
|
|
|
auto *paginationLayout = new QHBoxLayout;
|
|
paginationLayout->addWidget(m_prevBtn);
|
|
paginationLayout->addWidget(m_pageLabel);
|
|
paginationLayout->addWidget(m_nextBtn);
|
|
paginationLayout->addStretch();
|
|
paginationLayout->addWidget(m_showAllCheck);
|
|
paginationLayout->addWidget(refreshBtn);
|
|
|
|
auto *mainLayout = new QVBoxLayout(this);
|
|
mainLayout->addWidget(m_table, 1);
|
|
mainLayout->addLayout(paginationLayout);
|
|
|
|
connect(m_prevBtn, &QPushButton::clicked, this, [this]() {
|
|
if (m_page > 0) { --m_page; loadPage(); }
|
|
});
|
|
connect(m_nextBtn, &QPushButton::clicked, this, [this]() {
|
|
if (m_page < m_totalPages - 1) { ++m_page; loadPage(); }
|
|
});
|
|
connect(refreshBtn, &QPushButton::clicked, this, [this]() {
|
|
m_page = 0;
|
|
loadPage();
|
|
});
|
|
connect(m_showAllCheck, &QCheckBox::toggled, this, [this]() {
|
|
m_page = 0;
|
|
loadPage();
|
|
});
|
|
|
|
loadPage();
|
|
}
|
|
|
|
QStringList FileLogWindow::currentLevelFilter() const {
|
|
if (m_showAllCheck->isChecked())
|
|
return {};
|
|
return {"WARNING", "CRITICAL", "FATAL"};
|
|
}
|
|
|
|
void FileLogWindow::loadPage() {
|
|
const QStringList levels = currentLevelFilter();
|
|
const int total = GeneralLogDAO::getTotalCount(levels);
|
|
m_totalPages = qMax(1, (total + m_pageSize - 1) / m_pageSize);
|
|
m_page = qBound(0, m_page, m_totalPages - 1);
|
|
|
|
const QList<GeneralLogEntry> entries = GeneralLogDAO::getLogs(m_page, m_pageSize, levels);
|
|
|
|
m_table->setRowCount(static_cast<int>(entries.size()));
|
|
for (int i = 0; i < entries.size(); ++i) {
|
|
const auto &e = entries[i];
|
|
m_table->setItem(i, COL_ID, new QTableWidgetItem(QString::number(e.id)));
|
|
m_table->setItem(i, COL_TIME, new QTableWidgetItem(
|
|
e.timestamp.toLocalTime().toString("dd.MM.yy HH:mm:ss")));
|
|
m_table->setItem(i, COL_LEVEL, new QTableWidgetItem(e.level));
|
|
m_table->setItem(i, COL_SOURCE, new QTableWidgetItem(e.source));
|
|
m_table->setItem(i, COL_MESSAGE, new QTableWidgetItem(e.message));
|
|
}
|
|
|
|
updatePagination();
|
|
}
|
|
|
|
void FileLogWindow::updatePagination() {
|
|
m_pageLabel->setText(QString("Страница %1 из %2").arg(m_page + 1).arg(m_totalPages));
|
|
m_prevBtn->setEnabled(m_page > 0);
|
|
m_nextBtn->setEnabled(m_page < m_totalPages - 1);
|
|
}
|