110 lines
3.7 KiB
C++
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);
|
|
}
|