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

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 "ui_dialog_logmanager.h"
#include "base/HGUtility.h"
#include "log/log.h"
#include <QDir>
#include <QFile>
#include <QFileInfo>
@ -15,28 +16,31 @@ Dialog_LogManager::Dialog_LogManager(QWidget *parent) :
ui->setupUi(this);
HGChar logFilePath[512];
HGBase_GetLogFilePath(logFilePath, 512);
GetLogFileDir("", "", logFilePath, 512);
m_directory = logFilePath;
ui->lineEdit_directory->setText(m_directory);
m_suffix = "log";
ui->cbox_fileType->setItemText(6, m_suffix + "(*." + m_suffix + ")");
ui->cbox_fileType->setCurrentIndex(6);
ui->listWidget->setSelectionMode(QListWidget::ExtendedSelection);
ui->listWidget->setSelectionMode(QListWidget::SingleSelection);
ui->btn_directory->setEnabled(false);
ui->cbox_fileType->setEnabled(false);
//Get the list of m_suffix files in the m_directory folder
QDir dir(m_directory);
QStringList filter;
filter << "*." + m_suffix;
QFileInfoList log_list;
log_list = dir.entryInfoList(filter, QDir::Files);
QStringList filename_list;
foreach(QFileInfo info, log_list)
filename_list.append(info.fileName());
ui->listWidget->addItems(filename_list);
char **moduleList = GetLogFileModuleList("", "");
if (moduleList != nullptr)
{
char **p = moduleList;
while (*p != nullptr)
{
ui->listWidget->addItem(QString::fromUtf8(*p));
p++;
}
ReleaseStringList(moduleList);
}
if(ui->listWidget->count() == 0)
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."));
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();
for(int i = 0; i < files.size(); i++)
QList<QListWidgetItem*> modules = ui->listWidget->selectedItems();
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."));
}
@ -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?"));
if (ret == QMessageBox::Yes)
{
//获取LOG_PATH文件夹下的Log文件列表
QDir dir(m_directory);
QStringList filter;
filter << "*." + m_suffix;
QFileInfoList log_list;
log_list = dir.entryInfoList(filter, QDir::Files);
foreach(QFileInfo info, log_list)
char **moduleList = GetLogFileModuleList("", "");
if (moduleList != nullptr)
{
QFile file(info.absoluteFilePath());
file.remove();
char **p = moduleList;
while (*p != nullptr)
{
DeleteLogFile("", "", *p);
p++;
}
ReleaseStringList(moduleList);
}
//清空列表显示
ui->listWidget->clear();
ui->btn_export->setEnabled(false);
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)
{
QString filename = m_directory + "/" + item->text();
QDesktopServices::openUrl(QUrl::fromLocalFile(filename));
QString moduleName = item->text();
char **fileNameList = GetLogFileNameList("", "", moduleName.toStdString().c_str());
if (fileNameList != nullptr)
{
char **p = fileNameList;
while (*p != nullptr)
{
QDesktopServices::openUrl(QUrl::fromLocalFile(*p));
p++;
}
ReleaseStringList(fileNameList);
}
}