更新日志管理功能,调整清空、打开、导出日志等功能;

This commit is contained in:
yangjiaxuan 2024-08-08 16:41:37 +08:00
parent 6015d763e2
commit dd569e9f61
1 changed files with 45 additions and 30 deletions

View File

@ -1,6 +1,7 @@
#include "dialog_logmanager.h" #include "dialog_logmanager.h"
#include "ui_dialog_logmanager.h" #include "ui_dialog_logmanager.h"
#include "base/HGUtility.h" #include "base/HGUtility.h"
#include "log/log.h"
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
#include <QFileInfo> #include <QFileInfo>
@ -15,28 +16,31 @@ Dialog_LogManager::Dialog_LogManager(QWidget *parent) :
ui->setupUi(this); ui->setupUi(this);
HGChar logFilePath[512]; HGChar logFilePath[512];
HGBase_GetLogFilePath(logFilePath, 512); GetLogFileDir("", "", logFilePath, 512);
m_directory = logFilePath; m_directory = logFilePath;
ui->lineEdit_directory->setText(m_directory); ui->lineEdit_directory->setText(m_directory);
m_suffix = "log"; m_suffix = "log";
ui->cbox_fileType->setItemText(6, m_suffix + "(*." + m_suffix + ")"); ui->cbox_fileType->setItemText(6, m_suffix + "(*." + m_suffix + ")");
ui->cbox_fileType->setCurrentIndex(6); ui->cbox_fileType->setCurrentIndex(6);
ui->listWidget->setSelectionMode(QListWidget::ExtendedSelection); ui->listWidget->setSelectionMode(QListWidget::SingleSelection);
ui->btn_directory->setEnabled(false); ui->btn_directory->setEnabled(false);
ui->cbox_fileType->setEnabled(false); ui->cbox_fileType->setEnabled(false);
//Get the list of m_suffix files in the m_directory folder char **moduleList = GetLogFileModuleList("", "");
QDir dir(m_directory); if (moduleList != nullptr)
QStringList filter; {
filter << "*." + m_suffix; char **p = moduleList;
QFileInfoList log_list; while (*p != nullptr)
log_list = dir.entryInfoList(filter, QDir::Files); {
QStringList filename_list; ui->listWidget->addItem(QString::fromUtf8(*p));
foreach(QFileInfo info, log_list) p++;
filename_list.append(info.fileName()); }
ui->listWidget->addItems(filename_list);
ReleaseStringList(moduleList);
}
if(ui->listWidget->count() == 0) if(ui->listWidget->count() == 0)
ui->btn_export->setEnabled(false); ui->btn_export->setEnabled(false);
} }
@ -53,13 +57,14 @@ void Dialog_LogManager::on_btn_export_clicked()
QMessageBox::warning(this, tr("Warning"), tr("Please select file in the list.")); QMessageBox::warning(this, tr("Warning"), tr("Please select file in the list."));
return; return;
} }
QString directory = QFileDialog::getExistingDirectory(nullptr, tr("Choose saving path"), "", QFileDialog::ShowDirsOnly);
if (!directory.isEmpty()) QString fileName = QFileDialog::getSaveFileName(this, tr("Select log file path"), ".", tr("(*.log)"));
if (!fileName.isEmpty())
{ {
QList<QListWidgetItem*> files = ui->listWidget->selectedItems(); QList<QListWidgetItem*> modules = ui->listWidget->selectedItems();
for(int i = 0; i < files.size(); i++) for(int i = 0; i < modules.size(); i++)
{ {
QFile::copy(m_directory + "/" + files.at(i)->text(), directory + "/" + files.at(i)->text()); ExportLogFile("", "", modules[i]->text().toStdString().c_str(), fileName.toStdString().c_str());
} }
QMessageBox::information(this, tr("Information"), tr("Log files export finished.")); QMessageBox::information(this, tr("Information"), tr("Log files export finished."));
} }
@ -75,20 +80,19 @@ void Dialog_LogManager::on_btn_clear_clicked()
int ret = QMessageBox::question(this, tr("Question"), tr("All log files will be cleared.\nContinue to clear?")); int ret = QMessageBox::question(this, tr("Question"), tr("All log files will be cleared.\nContinue to clear?"));
if (ret == QMessageBox::Yes) if (ret == QMessageBox::Yes)
{ {
//获取LOG_PATH文件夹下的Log文件列表 char **moduleList = GetLogFileModuleList("", "");
QDir dir(m_directory); if (moduleList != nullptr)
QStringList filter;
filter << "*." + m_suffix;
QFileInfoList log_list;
log_list = dir.entryInfoList(filter, QDir::Files);
foreach(QFileInfo info, log_list)
{ {
QFile file(info.absoluteFilePath()); char **p = moduleList;
file.remove(); while (*p != nullptr)
{
DeleteLogFile("", "", *p);
p++;
}
ReleaseStringList(moduleList);
} }
//清空列表显示
ui->listWidget->clear(); ui->listWidget->clear();
ui->btn_export->setEnabled(false); ui->btn_export->setEnabled(false);
QMessageBox::information(this, tr("Information"), tr("All log files cleared.")); QMessageBox::information(this, tr("Information"), tr("All log files cleared."));
@ -97,6 +101,17 @@ void Dialog_LogManager::on_btn_clear_clicked()
void Dialog_LogManager::on_listWidget_itemDoubleClicked(QListWidgetItem *item) void Dialog_LogManager::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{ {
QString filename = m_directory + "/" + item->text(); QString moduleName = item->text();
QDesktopServices::openUrl(QUrl::fromLocalFile(filename)); char **fileNameList = GetLogFileNameList("", "", moduleName.toStdString().c_str());
if (fileNameList != nullptr)
{
char **p = fileNameList;
while (*p != nullptr)
{
QDesktopServices::openUrl(QUrl::fromLocalFile(*p));
p++;
}
ReleaseStringList(fileNameList);
}
} }