code_app/app/scanner/dialog_logmanager.cpp

109 lines
3.2 KiB
C++
Raw Normal View History

2022-05-03 10:25:52 +00:00
#include "dialog_logmanager.h"
#include "ui_dialog_logmanager.h"
#include "base/HGUtility.h"
#include "base/HGInfo.h"
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QFileDialog>
#include <QMessageBox>
#include <QDesktopServices>
Dialog_LogManager::Dialog_LogManager(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog_LogManager)
{
ui->setupUi(this);
HGChar logFilePath[512];
HGBase_GetLogFilePath(logFilePath, 512);
HGChar processName[64];
HGBase_GetProcessName(processName, 64);
strcat(logFilePath, processName);
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->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);
if(ui->listWidget->count() == 0)
ui->btn_export->setEnabled(false);
}
Dialog_LogManager::~Dialog_LogManager()
{
delete ui;
}
void Dialog_LogManager::on_btn_export_clicked()
{
if(ui->listWidget->selectedItems().isEmpty())
{
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())
{
QList<QListWidgetItem*> files = ui->listWidget->selectedItems();
for(int i = 0; i < files.size(); i++)
{
QFile::copy(m_directory + "/" + files.at(i)->text(), directory + "/" + files.at(i)->text());
}
QMessageBox::information(this, tr("Information"), tr("Log files export finished."));
}
}
void Dialog_LogManager::on_btn_cancel_clicked()
{
close();
}
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);
HGBase_DisableInfo();
foreach(QFileInfo info, log_list)
{
QFile file(info.absoluteFilePath());
file.remove();
}
HGBase_EnableInfo();
//清空列表显示
ui->listWidget->clear();
ui->btn_export->setEnabled(false);
QMessageBox::information(this, tr("Information"), tr("All log files cleared."));
}
}
void Dialog_LogManager::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
QString filename = m_directory + "/" + item->text();
QDesktopServices::openUrl(QUrl::fromLocalFile(filename));
}