Files
GUI/src/UserOperationLogForm.cpp

110 lines
3.7 KiB
C++

#include "UserOperationLogForm.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QAbstractListModel>
#include <QScrollBar>
#include "log/LogManager.h"
#include "log/LogFileTableModel.h"
#include <QHeaderView>
#include <QLabel>
#include <QTableView>
#include "components/SlideTableView.h"
#include <QPushButton>
#include "src/dialogs/SelectDialog.h"
#include "windows/MainWindow.h"
#include "event/EventCenter.h"
QString fileNameToDate(QString fileName)
{
return fileName.split("log/UserOperationLog/")[1].replace("-op.log", "");
}
QString dateToFileName(QString date)
{
return QString("./log/UserOperationLog/") + date + QString("-op.log");
}
UserOperationLogForm::UserOperationLogForm(QWidget* parent)
: QWidget (parent)
{
mLayout = new QVBoxLayout(this);
QWidget* header = new QWidget(this);
QHBoxLayout* headerLayout = new QHBoxLayout(header);
QLabel* logdate = new QLabel(tr("Log Date:"));
headerLayout->addWidget(logdate);
mDateButton = new QPushButton(header);
headerLayout->addWidget(mDateButton, 0, Qt::AlignLeft);
headerLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
mModel = new LogFileTableModel(this);
mModel->setHeader(QStringList()<< tr("Operation Date") << tr("Operation Time") << tr("User") << tr("Operation"));
loadUserOperationLog();
mLogTable = new SlideTableView(this);
mLayout->addWidget(header);
mLayout->addWidget(mLogTable);
mLogTable->setModel(mModel);
mLogTable->setAlternatingRowColors(true);
mLogTable->setSelectionMode(QAbstractItemView::NoSelection);
mLogTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
mLogTable->verticalHeader()->setDefaultSectionSize(38);
mLogTable->horizontalHeader()->setStretchLastSection(true);
mLogTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
mLogTable->setColumnWidth(0, 250);
mLogTable->setColumnWidth(1, 250);
mLogTable->setColumnWidth(2, 200);
mLogTable->verticalScrollBar()->setStyleSheet("QScrollBar:vertical { width: 40px; }");;
//暂时先放构造函数,之后需要移除,等需要时再调用
connect(mDateButton, &QPushButton::clicked, [=]() {
auto files = UserOperationLog::getHistoryLogFiles();
QStringList dates;
for (auto f : files)
{
dates << fileNameToDate(f);
}
if (!mSelectDateDialog) {
mSelectDateDialog = new SelectDialog(this);
mSelectDateDialog->setWindowModality(Qt::WindowModal);
}
mSelectDateDialog->setValues(dates);
if (!mSelectedDateStr.isEmpty()) mSelectDateDialog->setSelectedValue(mSelectedDateStr);
if (mSelectDateDialog->exec() == QDialog::Accepted)
{
QString date = mSelectDateDialog->getSelectedValue();
QString f = dateToFileName(date);
this->loadUserOperationLog(f, date);
}
});
connect(EventCenter::Default(), &EventCenter::ReloadLanguage, [=]() {
logdate->setText(tr("Log Date:"));
mModel->setHeader(QStringList()<< tr("Operation Date") << tr("Operation Time") << tr("User") << tr("Operation"));
});
}
UserOperationLogForm::~UserOperationLogForm() {
}
void UserOperationLogForm::loadUserOperationLog()
{
QString filePath = LogManager::getInstance()->getCurrentUserOperationLogFile();
mDateButton->setText(fileNameToDate(filePath));
loadUserOperationLog(filePath, fileNameToDate(filePath));
mSelectedDateStr = fileNameToDate(filePath);
}
void UserOperationLogForm::loadUserOperationLog(const QString& fileName, const QString& date) {
mSelectedDateStr = date;
mModel->setFileName(dateToFileName(date));
mDateButton->setText(date);
}
void UserOperationLogForm::showEvent(QShowEvent *aEvent)
{
loadUserOperationLog("", mSelectedDateStr);
QWidget::showEvent(aEvent);
}