feat(设置): 新增个性化设置页面并重构主题相关功能
重构主题和语言设置功能,将相关代码从主窗口迁移至新增的个性化设置页面 优化浮动工具栏图标选择逻辑,移除冗余代码 统一设置页面中开关控件的样式和行为 修复设置页面导航项的选择状态问题
This commit is contained in:
@@ -282,16 +282,6 @@ namespace Ink_Canvas
|
||||
|
||||
private void UpdateFloatingBarIconComboBox()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ComboBoxFloatingBarImg != null)
|
||||
{
|
||||
ComboBoxFloatingBarImg.SelectedIndex = Settings.Appearance.FloatingBarImg;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshStrokeSelectionIcons()
|
||||
|
||||
@@ -3304,7 +3304,7 @@ namespace Ink_Canvas
|
||||
StackPanelControl.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private int currentMode;
|
||||
internal int currentMode;
|
||||
|
||||
// 退出批注模式时的全屏还原处理
|
||||
private void RestoreFullScreenOnExitAnnotationMode()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using H.NotifyIcon;
|
||||
using H.NotifyIcon;
|
||||
using Ink_Canvas.Helpers;
|
||||
using Ink_Canvas.Windows.SettingsViews.Helpers;
|
||||
using Newtonsoft.Json;
|
||||
@@ -186,232 +186,9 @@ namespace Ink_Canvas
|
||||
|
||||
#region Appearance
|
||||
|
||||
/// <summary>
|
||||
/// 处理显示笔尖模式切换开关状态更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当显示笔尖模式切换开关状态更改时:
|
||||
/// 1. 保存显示笔尖模式切换设置
|
||||
/// 2. 根据设置显示或隐藏笔尖模式切换面板
|
||||
/// </remarks>
|
||||
private void ToggleSwitchEnableDisPlayNibModeToggle_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsEnableDisPlayNibModeToggler = ToggleSwitchEnableDisPlayNibModeToggle.IsOn;
|
||||
SaveSettingsToFile();
|
||||
if (!ToggleSwitchEnableDisPlayNibModeToggle.IsOn)
|
||||
{
|
||||
NibModeSimpleStackPanel.Visibility = Visibility.Collapsed;
|
||||
BoardNibModeSimpleStackPanel.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else
|
||||
{
|
||||
NibModeSimpleStackPanel.Visibility = Visibility.Visible;
|
||||
BoardNibModeSimpleStackPanel.Visibility = Visibility.Visible;
|
||||
}
|
||||
}
|
||||
|
||||
//private void ToggleSwitchIsColorfulViewboxFloatingBar_Toggled(object sender, RoutedEventArgs e) {
|
||||
// if (!isLoaded) return;
|
||||
// Settings.Appearance.IsColorfulViewboxFloatingBar = ToggleSwitchColorfulViewboxFloatingBar.IsOn;
|
||||
// SaveSettingsToFile();
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// 处理快速面板开关状态更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当快速面板开关状态更改时,保存设置到文件
|
||||
/// </remarks>
|
||||
private void ToggleSwitchEnableQuickPanel_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowQuickPanel = ToggleSwitchEnableQuickPanel.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理启动屏幕开关状态更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当启动屏幕开关状态更改时,保存设置到文件
|
||||
/// </remarks>
|
||||
private void ToggleSwitchEnableSplashScreen_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EnableSplashScreen = ToggleSwitchEnableSplashScreen.IsOn;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理启动屏幕样式选择更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当选择启动屏幕样式时,保存设置到文件
|
||||
/// </remarks>
|
||||
private void ComboBoxSplashScreenStyle_SelectionChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.SplashScreenStyle = ComboBoxSplashScreenStyle.SelectedIndex;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理浮动栏缩放值滑块值更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当浮动栏缩放值滑块值更改时:
|
||||
/// 1. 保存浮动栏缩放设置
|
||||
/// 2. 应用缩放值到浮动栏(限制在0.5-1.25范围内)
|
||||
/// 3. 等待UI更新后重新计算浮动栏位置,确保居中计算准确
|
||||
/// 4. 只在屏幕模式下重新计算浮动栏位置
|
||||
/// </remarks>
|
||||
private void ViewboxFloatingBarScaleTransformValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.ViewboxFloatingBarScaleTransformValue =
|
||||
ViewboxFloatingBarScaleTransformValueSlider.Value;
|
||||
SaveSettingsToFile();
|
||||
var val = ViewboxFloatingBarScaleTransformValueSlider.Value;
|
||||
ViewboxFloatingBarScaleTransform.ScaleX =
|
||||
val > 0.5 && val < 1.25 ? val : val <= 0.5 ? 0.5 : val >= 1.25 ? 1.25 : 1;
|
||||
ViewboxFloatingBarScaleTransform.ScaleY =
|
||||
val > 0.5 && val < 1.25 ? val : val <= 0.5 ? 0.5 : val >= 1.25 ? 1.25 : 1;
|
||||
|
||||
// 等待UI更新后再重新计算浮动栏位置,确保居中计算准确
|
||||
Dispatcher.BeginInvoke(new Action(async () =>
|
||||
{
|
||||
// 强制更新布局以确保ActualWidth正确
|
||||
ViewboxFloatingBar.UpdateLayout();
|
||||
|
||||
// 等待一小段时间让布局完全更新
|
||||
await Task.Delay(100);
|
||||
|
||||
// 再次强制更新布局
|
||||
ViewboxFloatingBar.UpdateLayout();
|
||||
|
||||
// 强制重新测量和排列
|
||||
ViewboxFloatingBar.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
|
||||
ViewboxFloatingBar.Arrange(new Rect(ViewboxFloatingBar.DesiredSize));
|
||||
|
||||
// auto align - 新增:只在屏幕模式下重新计算浮动栏位置
|
||||
if (currentMode == 0)
|
||||
{
|
||||
if (BtnPPTSlideShowEnd.Visibility == Visibility.Visible)
|
||||
ViewboxFloatingBarMarginAnimation(60);
|
||||
else
|
||||
ViewboxFloatingBarMarginAnimation(100, true);
|
||||
}
|
||||
}), DispatcherPriority.Render);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理浮动栏透明度值滑块值更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当浮动栏透明度值滑块值更改时:
|
||||
/// 1. 保存浮动栏透明度设置
|
||||
/// 2. 应用透明度值到浮动栏
|
||||
/// </remarks>
|
||||
private void ViewboxFloatingBarOpacityValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.ViewboxFloatingBarOpacityValue = ViewboxFloatingBarOpacityValueSlider.Value;
|
||||
SaveSettingsToFile();
|
||||
ViewboxFloatingBar.Opacity = Settings.Appearance.ViewboxFloatingBarOpacityValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理PPT中浮动栏透明度值滑块值更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当PPT中浮动栏透明度值滑块值更改时,保存设置到文件
|
||||
/// </remarks>
|
||||
private void ViewboxFloatingBarOpacityInPPTValueSlider_ValueChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.ViewboxFloatingBarOpacityInPPTValue = ViewboxFloatingBarOpacityInPPTValueSlider.Value;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理托盘图标开关状态更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当托盘图标开关状态更改时:
|
||||
/// 1. 保存托盘图标设置
|
||||
/// 2. 根据设置显示或隐藏托盘图标示例图像
|
||||
/// 3. 根据设置显示或隐藏系统托盘图标
|
||||
/// </remarks>
|
||||
private void ToggleSwitchEnableTrayIcon_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EnableTrayIcon = ToggleSwitchEnableTrayIcon.IsOn;
|
||||
ICCTrayIconExampleImage.Visibility = Settings.Appearance.EnableTrayIcon ? Visibility.Visible : Visibility.Collapsed;
|
||||
var _taskbar = (TaskbarIcon)Application.Current.Resources["TaskbarTrayIcon"];
|
||||
_taskbar.Visibility = ToggleSwitchEnableTrayIcon.IsOn ? Visibility.Visible : Visibility.Collapsed;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理展开按钮图像选择更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当选择展开按钮图像类型时:
|
||||
/// 1. 保存展开按钮图像类型设置
|
||||
/// 2. 根据选择的图像类型更新左右展开按钮的图标
|
||||
/// 3. 为不同的图像类型设置不同的大小和旋转角度
|
||||
/// </remarks>
|
||||
private void ComboBoxUnFoldBtnImg_SelectionChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.UnFoldButtonImageType = ComboBoxUnFoldBtnImg.SelectedIndex;
|
||||
SaveSettingsToFile();
|
||||
if (ComboBoxUnFoldBtnImg.SelectedIndex == 0)
|
||||
{
|
||||
RightUnFoldBtnImgChevron.Source =
|
||||
new BitmapImage(new Uri("pack://application:,,,/Resources/new-icons/unfold-chevron.png"));
|
||||
RightUnFoldBtnImgChevron.Width = 14;
|
||||
RightUnFoldBtnImgChevron.Height = 14;
|
||||
RightUnFoldBtnImgChevron.RenderTransform = new RotateTransform(180);
|
||||
LeftUnFoldBtnImgChevron.Source =
|
||||
new BitmapImage(new Uri("pack://application:,,,/Resources/new-icons/unfold-chevron.png"));
|
||||
LeftUnFoldBtnImgChevron.Width = 14;
|
||||
LeftUnFoldBtnImgChevron.Height = 14;
|
||||
LeftUnFoldBtnImgChevron.RenderTransform = null;
|
||||
}
|
||||
else if (ComboBoxUnFoldBtnImg.SelectedIndex == 1)
|
||||
{
|
||||
RightUnFoldBtnImgChevron.Source =
|
||||
new BitmapImage(new Uri("pack://application:,,,/Resources/new-icons/pen-white.png"));
|
||||
RightUnFoldBtnImgChevron.Width = 18;
|
||||
RightUnFoldBtnImgChevron.Height = 18;
|
||||
RightUnFoldBtnImgChevron.RenderTransform = null;
|
||||
LeftUnFoldBtnImgChevron.Source =
|
||||
new BitmapImage(new Uri("pack://application:,,,/Resources/new-icons/pen-white.png"));
|
||||
LeftUnFoldBtnImgChevron.Width = 18;
|
||||
LeftUnFoldBtnImgChevron.Height = 18;
|
||||
LeftUnFoldBtnImgChevron.RenderTransform = null;
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly Lazy<object> HitokotoHttpClient = new Lazy<object>(CreateHitokotoClient, System.Threading.LazyThreadSafetyMode.ExecutionAndPublication);
|
||||
|
||||
@@ -462,7 +239,7 @@ namespace Ink_Canvas
|
||||
/// 当配置为内置来源时(0:OSUPlayer、1:名言警句、2:高考俗语)从对应数组中随机选择一条并设置为水印文本;
|
||||
/// 当配置为一言(3)时会异步请求 Hitokoto API 并在请求中显示占位提示,成功时将返回文本设为水印,失败时记录警告日志并设置可读的失败提示文本。此方法会修改 BlackBoardWaterMark.Text,并在发生异常时记录日志且设置合适的回退文本。
|
||||
/// </remarks>
|
||||
private async Task UpdateChickenSoupTextAsync()
|
||||
internal async Task UpdateChickenSoupTextAsync()
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -550,221 +327,8 @@ namespace Ink_Canvas
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理名言来源选择更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当选择名言来源时:
|
||||
/// 1. 保存名言来源设置
|
||||
/// 2. 异步更新白板水印的名言文本
|
||||
/// </remarks>
|
||||
private async void ComboBoxChickenSoupSource_SelectionChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (_suppressChickenSoupSourceSelectionChanged) return;
|
||||
if (!isLoaded) return;
|
||||
int idx = ComboBoxChickenSoupSource.SelectedIndex;
|
||||
if (idx < 0) return;
|
||||
if (Settings.Appearance.ChickenSoupSource == idx) return;
|
||||
|
||||
Settings.Appearance.ChickenSoupSource = idx;
|
||||
|
||||
if (BtnHitokotoCustomize != null)
|
||||
{
|
||||
BtnHitokotoCustomize.Visibility = ComboBoxChickenSoupSource.SelectedIndex == 3
|
||||
? Visibility.Visible
|
||||
: Visibility.Collapsed;
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
await UpdateChickenSoupTextAsync();
|
||||
}
|
||||
|
||||
private async void BtnHitokotoCustomize_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var categories = new Dictionary<string, string>
|
||||
{
|
||||
{ "a", "动画" },
|
||||
{ "b", "漫画" },
|
||||
{ "c", "游戏" },
|
||||
{ "d", "文学" },
|
||||
{ "e", "原创" },
|
||||
{ "f", "来自网络" },
|
||||
{ "g", "其他" },
|
||||
{ "h", "影视" },
|
||||
{ "i", "诗词" },
|
||||
{ "j", "网易云" },
|
||||
{ "k", "哲学" },
|
||||
{ "l", "抖机灵" }
|
||||
};
|
||||
|
||||
// 创建弹窗内容
|
||||
var contentPanel = new StackPanel
|
||||
{
|
||||
Margin = new Thickness(20),
|
||||
Orientation = System.Windows.Controls.Orientation.Vertical
|
||||
};
|
||||
|
||||
// 全选复选框
|
||||
var selectAllCheckBox = new CheckBox
|
||||
{
|
||||
Content = "全选",
|
||||
FontSize = 14,
|
||||
FontFamily = new FontFamily("Microsoft YaHei UI"),
|
||||
Margin = new Thickness(0, 0, 0, 8)
|
||||
};
|
||||
|
||||
// 存储各个分类的复选框
|
||||
var categoryCheckBoxes = new Dictionary<string, CheckBox>();
|
||||
|
||||
var savedHitokoto = Settings.Appearance.HitokotoCategories;
|
||||
bool implicitAllCategories = savedHitokoto == null || savedHitokoto.Count == 0;
|
||||
|
||||
// 创建分类复选框
|
||||
foreach (var category in categories)
|
||||
{
|
||||
var checkBox = new CheckBox
|
||||
{
|
||||
Content = category.Value,
|
||||
Tag = category.Key,
|
||||
FontSize = 13,
|
||||
FontFamily = new FontFamily("Microsoft YaHei UI"),
|
||||
IsChecked = implicitAllCategories || savedHitokoto.Contains(category.Key),
|
||||
Margin = new Thickness(0, 0, 0, 8)
|
||||
};
|
||||
categoryCheckBoxes[category.Key] = checkBox;
|
||||
contentPanel.Children.Add(checkBox);
|
||||
}
|
||||
|
||||
// 全选复选框逻辑
|
||||
bool isUpdatingSelectAll = false;
|
||||
selectAllCheckBox.IsChecked = implicitAllCategories || savedHitokoto.Count == categories.Count;
|
||||
|
||||
selectAllCheckBox.Checked += (s, args) =>
|
||||
{
|
||||
if (isUpdatingSelectAll) return;
|
||||
isUpdatingSelectAll = true;
|
||||
foreach (var checkBox in categoryCheckBoxes.Values)
|
||||
{
|
||||
checkBox.IsChecked = true;
|
||||
}
|
||||
isUpdatingSelectAll = false;
|
||||
};
|
||||
|
||||
selectAllCheckBox.Unchecked += (s, args) =>
|
||||
{
|
||||
if (isUpdatingSelectAll) return;
|
||||
isUpdatingSelectAll = true;
|
||||
foreach (var checkBox in categoryCheckBoxes.Values)
|
||||
{
|
||||
checkBox.IsChecked = false;
|
||||
}
|
||||
isUpdatingSelectAll = false;
|
||||
};
|
||||
|
||||
// 监听各个复选框的变化,更新全选状态
|
||||
foreach (var checkBox in categoryCheckBoxes.Values)
|
||||
{
|
||||
checkBox.Checked += (s, args) =>
|
||||
{
|
||||
if (isUpdatingSelectAll) return;
|
||||
isUpdatingSelectAll = true;
|
||||
// 检查所有分类复选框是否都被勾选
|
||||
bool allChecked = categoryCheckBoxes.Values.All(cb => cb.IsChecked == true);
|
||||
selectAllCheckBox.IsChecked = allChecked;
|
||||
isUpdatingSelectAll = false;
|
||||
};
|
||||
checkBox.Unchecked += (s, args) =>
|
||||
{
|
||||
if (isUpdatingSelectAll) return;
|
||||
isUpdatingSelectAll = true;
|
||||
selectAllCheckBox.IsChecked = false;
|
||||
isUpdatingSelectAll = false;
|
||||
};
|
||||
}
|
||||
|
||||
// 将全选复选框添加到顶部
|
||||
var mainPanel = new StackPanel
|
||||
{
|
||||
Margin = new Thickness(0),
|
||||
Orientation = System.Windows.Controls.Orientation.Vertical
|
||||
};
|
||||
mainPanel.Children.Add(selectAllCheckBox);
|
||||
mainPanel.Children.Add(new Separator { Margin = new Thickness(0, 8, 0, 8) });
|
||||
mainPanel.Children.Add(contentPanel);
|
||||
|
||||
var scrollViewer = new ScrollViewer
|
||||
{
|
||||
Content = mainPanel,
|
||||
MaxHeight = 400,
|
||||
VerticalScrollBarVisibility = ScrollBarVisibility.Auto
|
||||
};
|
||||
|
||||
// 创建ContentDialog显示自定义内容
|
||||
var contentDialog = new iNKORE.UI.WPF.Modern.Controls.ContentDialog
|
||||
{
|
||||
Title = "自定义一言分类",
|
||||
Content = scrollViewer,
|
||||
PrimaryButtonText = "确定",
|
||||
SecondaryButtonText = "取消",
|
||||
DefaultButton = iNKORE.UI.WPF.Modern.Controls.ContentDialogButton.Primary,
|
||||
Owner = this
|
||||
};
|
||||
|
||||
var dialogResult = await contentDialog.ShowAsync();
|
||||
|
||||
if (dialogResult == iNKORE.UI.WPF.Modern.Controls.ContentDialogResult.Primary)
|
||||
{
|
||||
// 保存选中的分类
|
||||
Settings.Appearance.HitokotoCategories = categoryCheckBoxes
|
||||
.Where(kvp => kvp.Value.IsChecked == true)
|
||||
.Select(kvp => kvp.Key)
|
||||
.ToList();
|
||||
|
||||
// 如果没有任何选中,默认全选
|
||||
if (Settings.Appearance.HitokotoCategories.Count == 0)
|
||||
{
|
||||
Settings.Appearance.HitokotoCategories = categories.Keys.ToList();
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
|
||||
// 如果当前正在使用API,更新名言
|
||||
if (Settings.Appearance.ChickenSoupSource == 3 && Settings.Appearance.EnableChickenSoupInWhiteboardMode)
|
||||
{
|
||||
_ = UpdateChickenSoupTextAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnableViewboxBlackBoardScaleTransform_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EnableViewboxBlackBoardScaleTransform =
|
||||
ToggleSwitchEnableViewboxBlackBoardScaleTransform.IsOn;
|
||||
SaveSettingsToFile();
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理浮动栏图标选择更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当选择浮动栏图标时:
|
||||
/// 1. 保存浮动栏图标设置
|
||||
/// 2. 更新浮动栏图标
|
||||
/// 3. 保存设置到文件
|
||||
/// </remarks>
|
||||
public void ComboBoxFloatingBarImg_SelectionChanged(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.FloatingBarImg = ComboBoxFloatingBarImg.SelectedIndex;
|
||||
UpdateFloatingBarIcon();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据设置更新浮动栏图标
|
||||
@@ -903,125 +467,9 @@ namespace Ink_Canvas
|
||||
/// </remarks>
|
||||
public void UpdateCustomIconsInComboBox()
|
||||
{
|
||||
// 保留前12个内置图标选项
|
||||
while (ComboBoxFloatingBarImg.Items.Count > 12)
|
||||
{
|
||||
ComboBoxFloatingBarImg.Items.RemoveAt(ComboBoxFloatingBarImg.Items.Count - 1);
|
||||
}
|
||||
|
||||
// 添加自定义图标选项
|
||||
foreach (var customIcon in Settings.Appearance.CustomFloatingBarImgs)
|
||||
{
|
||||
ComboBoxItem item = new ComboBoxItem();
|
||||
item.Content = customIcon.Name;
|
||||
item.FontFamily = new FontFamily("Microsoft YaHei UI");
|
||||
ComboBoxFloatingBarImg.Items.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理添加自定义图标按钮点击事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当点击添加自定义图标按钮时:
|
||||
/// 1. 显示添加自定义图标窗口
|
||||
/// 2. 如果添加成功,自动选中新添加的图标
|
||||
/// </remarks>
|
||||
private void ButtonAddCustomIcon_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
AddCustomIconWindow dialog = new AddCustomIconWindow(this);
|
||||
dialog.Owner = this;
|
||||
dialog.ShowDialog();
|
||||
|
||||
if (dialog.IsSuccess)
|
||||
{
|
||||
// 自动选中新添加的图标
|
||||
ComboBoxFloatingBarImg.SelectedIndex = ComboBoxFloatingBarImg.Items.Count - 1;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理管理自定义图标按钮点击事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当点击管理自定义图标按钮时,显示自定义图标管理窗口
|
||||
/// </remarks>
|
||||
private void ButtonManageCustomIcons_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
CustomIconWindow dialog = new CustomIconWindow(this);
|
||||
dialog.Owner = this;
|
||||
dialog.ShowDialog();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理白板模式下时间显示开关状态更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当白板模式下时间显示开关状态更改时:
|
||||
/// 1. 保存时间显示设置
|
||||
/// 2. 如果当前是白板模式,根据设置显示或隐藏时间和日期水印
|
||||
/// 3. 保存设置到文件
|
||||
/// 4. 重新加载设置以应用更改
|
||||
/// </remarks>
|
||||
private void ToggleSwitchEnableTimeDisplayInWhiteboardMode_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EnableTimeDisplayInWhiteboardMode = ToggleSwitchEnableTimeDisplayInWhiteboardMode.IsOn;
|
||||
if (currentMode == 1)
|
||||
{
|
||||
if (ToggleSwitchEnableTimeDisplayInWhiteboardMode.IsOn)
|
||||
{
|
||||
WaterMarkTime.Visibility = Visibility.Visible;
|
||||
WaterMarkDate.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
WaterMarkTime.Visibility = Visibility.Collapsed;
|
||||
WaterMarkDate.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 处理白板模式下名言显示开关状态更改事件
|
||||
/// </summary>
|
||||
/// <param name="sender">事件发送者</param>
|
||||
/// <param name="e">路由事件参数</param>
|
||||
/// <remarks>
|
||||
/// 当白板模式下名言显示开关状态更改时:
|
||||
/// 1. 保存名言显示设置
|
||||
/// 2. 如果当前是白板模式,根据时间显示设置显示或隐藏名言水印
|
||||
/// 3. 保存设置到文件
|
||||
/// 4. 重新加载设置以应用更改
|
||||
/// </remarks>
|
||||
private void ToggleSwitchEnableChickenSoupInWhiteboardMode_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EnableChickenSoupInWhiteboardMode = ToggleSwitchEnableChickenSoupInWhiteboardMode.IsOn;
|
||||
if (currentMode == 1)
|
||||
{
|
||||
if (ToggleSwitchEnableTimeDisplayInWhiteboardMode.IsOn)
|
||||
{
|
||||
BlackBoardWaterMark.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
BlackBoardWaterMark.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
}
|
||||
|
||||
SaveSettingsToFile();
|
||||
LoadSettings();
|
||||
}
|
||||
|
||||
//[Obsolete]
|
||||
//private void ToggleSwitchShowButtonPPTNavigation_OnToggled(object sender, RoutedEventArgs e) {
|
||||
@@ -3747,183 +3195,8 @@ namespace Ink_Canvas
|
||||
|
||||
#region 浮动栏按钮显示控制
|
||||
|
||||
private void CheckBoxUseLegacyFloatingBarUI_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.UseLegacyFloatingBarUI = CheckBoxUseLegacyFloatingBarUI.IsChecked ?? false;
|
||||
UpdateFloatingBarIcons();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxUseLegacyFloatingBarUI_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.UseLegacyFloatingBarUI = CheckBoxUseLegacyFloatingBarUI.IsChecked ?? false;
|
||||
UpdateFloatingBarIcons();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowShapeButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowShapeButton = CheckBoxShowShapeButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowShapeButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowShapeButton = CheckBoxShowShapeButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowUndoButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowUndoButton = CheckBoxShowUndoButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowUndoButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowUndoButton = CheckBoxShowUndoButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowRedoButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowRedoButton = CheckBoxShowRedoButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowRedoButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowRedoButton = CheckBoxShowRedoButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowClearButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowClearButton = CheckBoxShowClearButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowClearButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowClearButton = CheckBoxShowClearButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowWhiteboardButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowWhiteboardButton = CheckBoxShowWhiteboardButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowWhiteboardButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowWhiteboardButton = CheckBoxShowWhiteboardButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowLassoSelectButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowLassoSelectButton = CheckBoxShowLassoSelectButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowLassoSelectButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowLassoSelectButton = CheckBoxShowLassoSelectButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowClearAndMouseButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowClearAndMouseButton = CheckBoxShowClearAndMouseButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowClearAndMouseButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowClearAndMouseButton = CheckBoxShowClearAndMouseButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowHideButton_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowHideButton = CheckBoxShowHideButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowHideButton_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowHideButton = CheckBoxShowHideButton.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowQuickColorPalette_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowQuickColorPalette = CheckBoxShowQuickColorPalette.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void CheckBoxShowQuickColorPalette_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.IsShowQuickColorPalette = CheckBoxShowQuickColorPalette.IsChecked ?? false;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ComboBoxQuickColorPaletteDisplayMode_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.QuickColorPaletteDisplayMode = ComboBoxQuickColorPaletteDisplayMode.SelectedIndex;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void ComboBoxEraserDisplayOption_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
Settings.Appearance.EraserDisplayOption = ComboBoxEraserDisplayOption.SelectedIndex;
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
private void UpdateFloatingBarButtonsVisibility()
|
||||
internal void UpdateFloatingBarButtonsVisibility()
|
||||
{
|
||||
// 根据设置更新浮动栏按钮的可见性
|
||||
try
|
||||
|
||||
@@ -249,7 +249,7 @@ namespace Ink_Canvas
|
||||
}
|
||||
}
|
||||
|
||||
// Appearance
|
||||
// Appearance - UI initialization (settings loading moved to AppearancePage)
|
||||
if (Settings.Appearance != null)
|
||||
{
|
||||
if (!Settings.Appearance.IsEnableDisPlayNibModeToggler)
|
||||
@@ -257,47 +257,16 @@ namespace Ink_Canvas
|
||||
NibModeSimpleStackPanel.Visibility = Visibility.Collapsed;
|
||||
BoardNibModeSimpleStackPanel.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
else
|
||||
{
|
||||
NibModeSimpleStackPanel.Visibility = Visibility.Visible;
|
||||
BoardNibModeSimpleStackPanel.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
//if (Settings.Appearance.IsColorfulViewboxFloatingBar) // 浮动工具栏背景色
|
||||
//{
|
||||
// LinearGradientBrush gradientBrush = new LinearGradientBrush();
|
||||
// gradientBrush.StartPoint = new Point(0, 0);
|
||||
// gradientBrush.EndPoint = new Point(1, 1);
|
||||
// GradientStop blueStop = new GradientStop(Color.FromArgb(0x95, 0x80, 0xB0, 0xFF), 0);
|
||||
// GradientStop greenStop = new GradientStop(Color.FromArgb(0x95, 0xC0, 0xFF, 0xC0), 1);
|
||||
// gradientBrush.GradientStops.Add(blueStop);
|
||||
// gradientBrush.GradientStops.Add(greenStop);
|
||||
// EnableTwoFingerGestureBorder.Background = gradientBrush;
|
||||
// BorderFloatingBarMainControls.Background = gradientBrush;
|
||||
// BorderFloatingBarMoveControls.Background = gradientBrush;
|
||||
// BorderFloatingBarExitPPTBtn.Background = gradientBrush;
|
||||
|
||||
// ToggleSwitchColorfulViewboxFloatingBar.IsOn = true;
|
||||
//} else {
|
||||
// EnableTwoFingerGestureBorder.Background = (Brush)FindResource("FloatBarBackground");
|
||||
// BorderFloatingBarMainControls.Background = (Brush)FindResource("FloatBarBackground");
|
||||
// BorderFloatingBarMoveControls.Background = (Brush)FindResource("FloatBarBackground");
|
||||
// BorderFloatingBarExitPPTBtn.Background = (Brush)FindResource("FloatBarBackground");
|
||||
|
||||
// ToggleSwitchColorfulViewboxFloatingBar.IsOn = false;
|
||||
//}
|
||||
|
||||
if (Settings.Appearance.ViewboxFloatingBarScaleTransformValue != 0) // 浮动工具栏 UI 缩放 85%
|
||||
if (Settings.Appearance.ViewboxFloatingBarScaleTransformValue != 0)
|
||||
{
|
||||
double val = Settings.Appearance.ViewboxFloatingBarScaleTransformValue;
|
||||
ViewboxFloatingBarScaleTransform.ScaleX =
|
||||
(val > 0.5 && val < 1.25) ? val : val <= 0.5 ? 0.5 : val >= 1.25 ? 1.25 : 1;
|
||||
ViewboxFloatingBarScaleTransform.ScaleY =
|
||||
(val > 0.5 && val < 1.25) ? val : val <= 0.5 ? 0.5 : val >= 1.25 ? 1.25 : 1;
|
||||
ViewboxFloatingBarScaleTransformValueSlider.Value = val;
|
||||
}
|
||||
|
||||
ComboBoxUnFoldBtnImg.SelectedIndex = Settings.Appearance.UnFoldButtonImageType;
|
||||
switch (Settings.Appearance.UnFoldButtonImageType)
|
||||
{
|
||||
case 0:
|
||||
@@ -326,69 +295,17 @@ namespace Ink_Canvas
|
||||
break;
|
||||
}
|
||||
|
||||
// 设置主题下拉框
|
||||
ComboBoxTheme.SelectedIndex = Settings.Appearance.Theme;
|
||||
|
||||
_suppressChickenSoupSourceSelectionChanged = true;
|
||||
try
|
||||
{
|
||||
ComboBoxChickenSoupSource.SelectedIndex = Settings.Appearance.ChickenSoupSource;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Dispatcher.BeginInvoke(
|
||||
(Action)(() => { _suppressChickenSoupSourceSelectionChanged = false; }),
|
||||
DispatcherPriority.ContextIdle);
|
||||
}
|
||||
|
||||
// 初始化自定义按钮的可见性(仅在选择API时显示)
|
||||
if (BtnHitokotoCustomize != null)
|
||||
{
|
||||
BtnHitokotoCustomize.Visibility = Settings.Appearance.ChickenSoupSource == 3
|
||||
? Visibility.Visible
|
||||
: Visibility.Collapsed;
|
||||
}
|
||||
|
||||
|
||||
ToggleSwitchEnableQuickPanel.IsOn = Settings.Appearance.IsShowQuickPanel;
|
||||
|
||||
ToggleSwitchEnableSplashScreen.IsOn = Settings.Appearance.EnableSplashScreen;
|
||||
|
||||
ComboBoxSplashScreenStyle.SelectedIndex = Settings.Appearance.SplashScreenStyle;
|
||||
|
||||
ToggleSwitchEnableTrayIcon.IsOn = Settings.Appearance.EnableTrayIcon;
|
||||
ICCTrayIconExampleImage.Visibility =
|
||||
Settings.Appearance.EnableTrayIcon ? Visibility.Visible : Visibility.Collapsed;
|
||||
var _taskbar = (TaskbarIcon)Application.Current.Resources["TaskbarTrayIcon"];
|
||||
_taskbar.Visibility = Settings.Appearance.EnableTrayIcon ? Visibility.Visible : Visibility.Collapsed;
|
||||
|
||||
ViewboxFloatingBar.Opacity = Settings.Appearance.ViewboxFloatingBarOpacityValue;
|
||||
|
||||
// 初始化浮动栏透明度滑块值
|
||||
ViewboxFloatingBarOpacityValueSlider.Value = Settings.Appearance.ViewboxFloatingBarOpacityValue;
|
||||
ViewboxFloatingBarOpacityInPPTValueSlider.Value = Settings.Appearance.ViewboxFloatingBarOpacityInPPTValue;
|
||||
|
||||
if (Settings.Appearance.EnableViewboxBlackBoardScaleTransform) // 画板 UI 缩放 80%
|
||||
if (Settings.Appearance.EnableViewboxBlackBoardScaleTransform)
|
||||
{
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleX = 0.8;
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleY = 0.8;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleX = 0.8;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleY = 0.8;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleX = 0.8;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleY = 0.8;
|
||||
|
||||
ToggleSwitchEnableViewboxBlackBoardScaleTransform.IsOn = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleX = 1;
|
||||
//ViewboxBlackboardLeftSideScaleTransform.ScaleY = 1;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleX = 1;
|
||||
ViewboxBlackboardCenterSideScaleTransform.ScaleY = 1;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleX = 1;
|
||||
//ViewboxBlackboardRightSideScaleTransform.ScaleY = 1;
|
||||
|
||||
ToggleSwitchEnableViewboxBlackBoardScaleTransform.IsOn = false;
|
||||
}
|
||||
|
||||
if (Settings.Appearance.IsTransparentButtonBackground)
|
||||
@@ -397,58 +314,24 @@ namespace Ink_Canvas
|
||||
}
|
||||
else
|
||||
{
|
||||
//Light
|
||||
BtnExit.Background = BtnSwitchTheme.Content.ToString() == "深色"
|
||||
? new SolidColorBrush(StringToColor("#FFCCCCCC"))
|
||||
:
|
||||
//Dark
|
||||
new SolidColorBrush(StringToColor("#FF555555"));
|
||||
: new SolidColorBrush(StringToColor("#FF555555"));
|
||||
}
|
||||
|
||||
// 更新自定义图标下拉列表
|
||||
UpdateCustomIconsInComboBox();
|
||||
|
||||
// 设置选中的图标索引
|
||||
// 如果索引超出范围(自定义图标可能已删除),使用默认图标
|
||||
if (Settings.Appearance.FloatingBarImg >= ComboBoxFloatingBarImg.Items.Count)
|
||||
if (Settings.Appearance.FloatingBarImg >= 12 + Settings.Appearance.CustomFloatingBarImgs.Count)
|
||||
{
|
||||
Settings.Appearance.FloatingBarImg = 0;
|
||||
}
|
||||
|
||||
ComboBoxFloatingBarImg.SelectedIndex = Settings.Appearance.FloatingBarImg;
|
||||
|
||||
// 更新浮动栏图标
|
||||
UpdateFloatingBarIcon();
|
||||
|
||||
ToggleSwitchEnableTimeDisplayInWhiteboardMode.IsOn =
|
||||
Settings.Appearance.EnableTimeDisplayInWhiteboardMode;
|
||||
|
||||
ToggleSwitchEnableChickenSoupInWhiteboardMode.IsOn =
|
||||
Settings.Appearance.EnableChickenSoupInWhiteboardMode;
|
||||
|
||||
// 浮动栏按钮显示控制开关初始化
|
||||
CheckBoxUseLegacyFloatingBarUI.IsChecked = Settings.Appearance.UseLegacyFloatingBarUI;
|
||||
CheckBoxShowShapeButton.IsChecked = Settings.Appearance.IsShowShapeButton;
|
||||
CheckBoxShowUndoButton.IsChecked = Settings.Appearance.IsShowUndoButton;
|
||||
CheckBoxShowRedoButton.IsChecked = Settings.Appearance.IsShowRedoButton;
|
||||
CheckBoxShowClearButton.IsChecked = Settings.Appearance.IsShowClearButton;
|
||||
CheckBoxShowWhiteboardButton.IsChecked = Settings.Appearance.IsShowWhiteboardButton;
|
||||
CheckBoxShowHideButton.IsChecked = Settings.Appearance.IsShowHideButton;
|
||||
CheckBoxShowQuickColorPalette.IsChecked = Settings.Appearance.IsShowQuickColorPalette;
|
||||
CheckBoxShowLassoSelectButton.IsChecked = Settings.Appearance.IsShowLassoSelectButton;
|
||||
CheckBoxShowClearAndMouseButton.IsChecked = Settings.Appearance.IsShowClearAndMouseButton;
|
||||
ComboBoxEraserDisplayOption.SelectedIndex = Settings.Appearance.EraserDisplayOption;
|
||||
ComboBoxQuickColorPaletteDisplayMode.SelectedIndex = Settings.Appearance.QuickColorPaletteDisplayMode;
|
||||
|
||||
// 初始化快捷调色盘指示器
|
||||
UpdateQuickColorPaletteIndicator(inkCanvas.DefaultDrawingAttributes.Color);
|
||||
|
||||
// 应用浮动栏按钮可见性设置
|
||||
UpdateFloatingBarButtonsVisibility();
|
||||
|
||||
// 更新浮动栏图标
|
||||
UpdateFloatingBarIcons();
|
||||
|
||||
var _taskbar = Application.Current.Resources["TaskbarTrayIcon"];
|
||||
if (_taskbar is FrameworkElement fe)
|
||||
fe.Visibility = Settings.Appearance.EnableTrayIcon ? Visibility.Visible : Visibility.Collapsed;
|
||||
|
||||
SystemEvents_UserPreferenceChanged(null, null);
|
||||
}
|
||||
else
|
||||
@@ -900,15 +783,8 @@ namespace Ink_Canvas
|
||||
// InkToShape
|
||||
if (Settings.InkToShape != null)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 直线拉直灵敏度在Canvas部分已经初始化,这里不再重复
|
||||
FloatingBarToggleSwitchEnableInkToShape.IsOn = Settings.InkToShape.IsInkToShapeEnabled;
|
||||
BoardToggleSwitchEnableInkToShape.IsOn = Settings.InkToShape.IsInkToShapeEnabled;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user