Files
community/Ink Canvas/Windows/AddCustomIconWindow.xaml.cs
T
PrefacedCorg 11a5a7fdbe 代码清理
2025-08-03 16:46:33 +08:00

120 lines
4.1 KiB
C#

using Microsoft.Win32;
using System;
using System.IO;
using System.Windows;
using System.Windows.Media.Imaging;
namespace Ink_Canvas
{
/// <summary>
/// AddCustomIconWindow.xaml 的交互逻辑
/// </summary>
public partial class AddCustomIconWindow : Window
{
private MainWindow mainWindow;
private string selectedFilePath;
public bool IsSuccess { get; private set; }
public AddCustomIconWindow(MainWindow owner)
{
InitializeComponent();
mainWindow = owner;
IsSuccess = false;
// 添加TextBox内容变化事件以检查是否可以保存
IconNameTextBox.TextChanged += (s, e) => ValidateSaveButton();
}
private void BrowseButton_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog
{
Filter = "图像文件|*.png;*.jpg;*.jpeg;*.bmp;*.gif;*.ico",
Title = "选择一个图标文件"
};
if (openFileDialog.ShowDialog() == true)
{
selectedFilePath = openFileDialog.FileName;
IconPathTextBox.Text = selectedFilePath;
// 显示预览
try
{
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.UriSource = new Uri(selectedFilePath);
bitmap.EndInit();
IconPreviewImage.Source = bitmap;
}
catch (Exception ex)
{
MessageBox.Show($"无法加载图像: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
// 自动填充名称建议(文件名,不包括扩展名)
string suggestedName = Path.GetFileNameWithoutExtension(selectedFilePath);
IconNameTextBox.Text = suggestedName;
ValidateSaveButton();
}
}
private void ValidateSaveButton()
{
SaveButton.IsEnabled = !string.IsNullOrWhiteSpace(IconNameTextBox.Text) && !string.IsNullOrEmpty(selectedFilePath);
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
Close();
}
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
try
{
// 创建pictures/icons文件夹结构(如果不存在)
string picturesFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "pictures");
string iconsFolder = Path.Combine(picturesFolder, "icons");
if (!Directory.Exists(picturesFolder))
{
Directory.CreateDirectory(picturesFolder);
}
if (!Directory.Exists(iconsFolder))
{
Directory.CreateDirectory(iconsFolder);
}
// 生成一个唯一的文件名(使用GUID)
string extension = Path.GetExtension(selectedFilePath);
string newFileName = $"{Guid.NewGuid()}{extension}";
string destPath = Path.Combine(iconsFolder, newFileName);
// 复制文件到pictures/icons文件夹
File.Copy(selectedFilePath, destPath);
// 创建新的自定义图标对象
var customIcon = new CustomFloatingBarIcon(IconNameTextBox.Text, destPath);
// 添加到主窗口的设置中
MainWindow.Settings.Appearance.CustomFloatingBarImgs.Add(customIcon);
// 更新ComboBox
mainWindow.UpdateCustomIconsInComboBox();
// 保存设置
MainWindow.SaveSettingsToFile();
IsSuccess = true;
Close();
}
catch (Exception ex)
{
MessageBox.Show($"保存图标时出错: {ex.Message}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}
}