207 lines
7.3 KiB
C#
207 lines
7.3 KiB
C#
using WorkCameraExport.Models;
|
|
using WorkCameraExport.Services;
|
|
using WorkCameraExport.Services.Interfaces;
|
|
|
|
namespace WorkCameraExport.Forms
|
|
{
|
|
/// <summary>
|
|
/// 设置窗体 - 用户可配置项设置
|
|
/// </summary>
|
|
public partial class SettingsForm : Form
|
|
{
|
|
private readonly IConfigService _configService;
|
|
private readonly ILogService? _logService;
|
|
private AppConfig _config;
|
|
|
|
public SettingsForm(IConfigService configService, ILogService? logService = null)
|
|
{
|
|
InitializeComponent();
|
|
_configService = configService;
|
|
_logService = logService;
|
|
_config = _configService.LoadConfig();
|
|
LoadSettings();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 加载设置到界面
|
|
/// </summary>
|
|
private void LoadSettings()
|
|
{
|
|
txtDefaultSavePath.Text = _config.DefaultSavePath;
|
|
numConcurrency.Value = _config.ImageDownloadConcurrency;
|
|
trackQuality.Value = _config.ImageCompressQuality;
|
|
lblQualityValue.Text = $"{_config.ImageCompressQuality}%";
|
|
chkAutoCleanTemp.Checked = _config.AutoCleanTempFiles;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 浏览默认保存路径
|
|
/// </summary>
|
|
private void btnBrowsePath_Click(object sender, EventArgs e)
|
|
{
|
|
using var dialog = new FolderBrowserDialog
|
|
{
|
|
Description = "选择默认保存目录",
|
|
UseDescriptionForTitle = true,
|
|
SelectedPath = txtDefaultSavePath.Text
|
|
};
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
txtDefaultSavePath.Text = dialog.SelectedPath;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 压缩质量滑块值变化
|
|
/// </summary>
|
|
private void trackQuality_Scroll(object sender, EventArgs e)
|
|
{
|
|
lblQualityValue.Text = $"{trackQuality.Value}%";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 保存按钮点击
|
|
/// </summary>
|
|
private void btnSave_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
// 验证保存路径
|
|
if (!string.IsNullOrWhiteSpace(txtDefaultSavePath.Text) &&
|
|
!Directory.Exists(txtDefaultSavePath.Text))
|
|
{
|
|
var result = MessageBox.Show(
|
|
"指定的保存路径不存在,是否创建?",
|
|
"确认",
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Question);
|
|
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
Directory.CreateDirectory(txtDefaultSavePath.Text);
|
|
}
|
|
else
|
|
{
|
|
txtDefaultSavePath.Focus();
|
|
return;
|
|
}
|
|
}
|
|
|
|
// 更新配置
|
|
_config.DefaultSavePath = txtDefaultSavePath.Text;
|
|
_config.ImageDownloadConcurrency = (int)numConcurrency.Value;
|
|
_config.ImageCompressQuality = trackQuality.Value;
|
|
_config.AutoCleanTempFiles = chkAutoCleanTemp.Checked;
|
|
|
|
// 保存配置
|
|
_configService.SaveConfig(_config);
|
|
_logService?.Info("设置已保存");
|
|
|
|
MessageBox.Show("设置已保存", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
DialogResult = DialogResult.OK;
|
|
Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logService?.Error("保存设置失败", ex);
|
|
MessageBox.Show($"保存设置失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 取消按钮点击
|
|
/// </summary>
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 重置为默认值按钮点击
|
|
/// </summary>
|
|
private void btnReset_Click(object sender, EventArgs e)
|
|
{
|
|
var result = MessageBox.Show(
|
|
"确定要重置所有设置为默认值吗?",
|
|
"确认",
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Question);
|
|
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
_config = AppConfig.CreateDefault();
|
|
LoadSettings();
|
|
_logService?.Info("设置已重置为默认值");
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 清理临时文件按钮点击
|
|
/// </summary>
|
|
private void btnCleanTemp_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
_configService.CleanTempFiles();
|
|
_logService?.Info("临时文件已清理");
|
|
MessageBox.Show("临时文件已清理", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logService?.Error("清理临时文件失败", ex);
|
|
MessageBox.Show($"清理临时文件失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 导出日志按钮点击
|
|
/// </summary>
|
|
private void btnExportLogs_Click(object sender, EventArgs e)
|
|
{
|
|
using var dialog = new SaveFileDialog
|
|
{
|
|
Title = "导出日志文件",
|
|
Filter = "ZIP 文件|*.zip",
|
|
FileName = $"WorkCameraExport_Logs_{DateTime.Now:yyyyMMdd_HHmmss}.zip",
|
|
DefaultExt = "zip"
|
|
};
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
try
|
|
{
|
|
// 打包日志目录
|
|
var logPath = _configService.LogPath;
|
|
if (Directory.Exists(logPath))
|
|
{
|
|
System.IO.Compression.ZipFile.CreateFromDirectory(logPath, dialog.FileName);
|
|
_logService?.Info($"日志已导出到: {dialog.FileName}");
|
|
|
|
var result = MessageBox.Show(
|
|
"日志导出成功!是否打开文件所在目录?",
|
|
"提示",
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Information);
|
|
|
|
if (result == DialogResult.Yes)
|
|
{
|
|
System.Diagnostics.Process.Start("explorer.exe", $"/select,\"{dialog.FileName}\"");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("日志目录不存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logService?.Error("导出日志失败", ex);
|
|
MessageBox.Show($"导出日志失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|