#include "UserOperationLogForm.h" #include #include #include #include #include "log/LogManager.h" #include "log/LogFileTableModel.h" #include #include #include #include "components/SlideTableView.h" #include #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); }