From d81d8f7c5d61b85d2672a3f85116324bf4b13a3c Mon Sep 17 00:00:00 2001
From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com>
Date: Sat, 8 Nov 2025 21:01:50 +0800
Subject: [PATCH 01/29] =?UTF-8?q?improve:Dlass=E8=81=94=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ink Canvas/Helpers/DlassNoteUploader.cs | 44 +++++++++++++------
.../MainWindow_cs/MW_Save&OpenStrokes.cs | 18 ++++++++
2 files changed, 49 insertions(+), 13 deletions(-)
diff --git a/Ink Canvas/Helpers/DlassNoteUploader.cs b/Ink Canvas/Helpers/DlassNoteUploader.cs
index 4265c2bc..04f7a8b6 100644
--- a/Ink Canvas/Helpers/DlassNoteUploader.cs
+++ b/Ink Canvas/Helpers/DlassNoteUploader.cs
@@ -100,9 +100,9 @@ namespace Ink_Canvas.Helpers
}
///
- /// 异步上传笔记文件到Dlass(支持PNG和ICSTK格式)
+ /// 异步上传笔记文件到Dlass(支持PNG、ICSTK和ZIP格式)
///
- /// 文件路径(支持PNG和ICSTK)
+ /// 文件路径(支持PNG、ICSTK和ZIP)
/// 是否成功加入队列(不等待实际上传完成)
public static async Task UploadNoteFileAsync(string filePath)
{
@@ -122,15 +122,16 @@ namespace Ink_Canvas.Helpers
}
var fileExtension = Path.GetExtension(filePath).ToLower();
- if (fileExtension != ".png" && fileExtension != ".icstk")
+ if (fileExtension != ".png" && fileExtension != ".icstk" && fileExtension != ".zip")
{
return false;
}
var fileInfo = new FileInfo(filePath);
- if (fileInfo.Length > 10 * 1024 * 1024)
+ long maxSize = fileExtension == ".zip" ? 50 * 1024 * 1024 : 10 * 1024 * 1024;
+ if (fileInfo.Length > maxSize)
{
- LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过10MB限制", LogHelper.LogType.Error);
+ LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过{maxSize / 1024 / 1024}MB限制", LogHelper.LogType.Error);
return false;
}
@@ -348,16 +349,17 @@ namespace Ink_Canvas.Helpers
// 检查文件扩展名
var fileExtension = Path.GetExtension(filePath).ToLower();
- if (fileExtension != ".png" && fileExtension != ".icstk")
+ if (fileExtension != ".png" && fileExtension != ".icstk" && fileExtension != ".zip")
{
return false;
}
- // 检查文件大小(最大10MB)
+ // 检查文件大小(最大10MB,ZIP文件可能更大,允许50MB)
var fileInfo = new FileInfo(filePath);
- if (fileInfo.Length > 10 * 1024 * 1024)
+ long maxSize = fileExtension == ".zip" ? 50 * 1024 * 1024 : 10 * 1024 * 1024;
+ if (fileInfo.Length > maxSize)
{
- LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过10MB限制", LogHelper.LogType.Error);
+ LogHelper.WriteLogToFile($"上传失败:文件过大({fileInfo.Length / 1024 / 1024}MB),超过{maxSize / 1024 / 1024}MB限制", LogHelper.LogType.Error);
return false;
}
@@ -417,9 +419,24 @@ namespace Ink_Canvas.Helpers
// 准备上传参数
var fileName = Path.GetFileNameWithoutExtension(filePath);
var title = fileName;
- var fileType = fileExtension == ".icstk" ? "墨迹文件" : "笔记";
+ string fileType;
+ string tags;
+ if (fileExtension == ".zip")
+ {
+ fileType = "多页面墨迹压缩包";
+ tags = "自动上传,多页面,zip,压缩包";
+ }
+ else if (fileExtension == ".icstk")
+ {
+ fileType = "墨迹文件";
+ tags = "自动上传,墨迹,icstk";
+ }
+ else
+ {
+ fileType = "笔记";
+ tags = "自动上传,笔记,png";
+ }
var description = $"自动上传的{fileType} - {DateTime.Now:yyyy-MM-dd HH:mm:ss}";
- var tags = fileExtension == ".icstk" ? "自动上传,墨迹,icstk" : "自动上传,笔记,png";
// 创建API客户端并上传文件
using (var apiClient = new DlassApiClient(APP_ID, APP_SECRET, apiBaseUrl, userToken))
@@ -466,7 +483,7 @@ namespace Ink_Canvas.Helpers
// 检查文件扩展名
var fileExtension = Path.GetExtension(filePath).ToLower();
- if (fileExtension != ".png" && fileExtension != ".icstk")
+ if (fileExtension != ".png" && fileExtension != ".icstk" && fileExtension != ".zip")
{
return false; // 文件格式错误,不可重试
}
@@ -475,7 +492,8 @@ namespace Ink_Canvas.Helpers
try
{
var fileInfo = new FileInfo(filePath);
- if (fileInfo.Length > 10 * 1024 * 1024)
+ long maxSize = fileExtension == ".zip" ? 50 * 1024 * 1024 : 10 * 1024 * 1024;
+ if (fileInfo.Length > maxSize)
{
return false; // 文件过大,不可重试
}
diff --git a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs
index 0e3b6f12..dbd3bf50 100644
--- a/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Save&OpenStrokes.cs
@@ -246,6 +246,24 @@ namespace Ink_Canvas
// 使用System.IO.Compression.FileSystem来创建ZIP
ZipFile.CreateFromDirectory(tempDir, zipFileName);
+ // 异步上传ZIP文件到Dlass
+ _ = Task.Run(async () =>
+ {
+ try
+ {
+ var delayMinutes = Settings?.Dlass?.AutoUploadDelayMinutes ?? 0;
+ if (delayMinutes > 0)
+ {
+ await Task.Delay(TimeSpan.FromMinutes(delayMinutes));
+ }
+
+ await Helpers.DlassNoteUploader.UploadNoteFileAsync(zipFileName);
+ }
+ catch (Exception)
+ {
+ }
+ });
+
if (newNotice) ShowNotification($"多页面墨迹成功保存至压缩包 {zipFileName}");
}
finally
From 261ecefb173f488797bdb5378391aaefd6be318f Mon Sep 17 00:00:00 2001
From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com>
Date: Sat, 8 Nov 2025 21:42:33 +0800
Subject: [PATCH 02/29] =?UTF-8?q?improve:=E6=B3=A8=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ink Canvas/MainWindow.xaml.cs | 2 --
Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs | 10 +---------
2 files changed, 1 insertion(+), 11 deletions(-)
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index 5e9b8d14..8078fda2 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -3104,8 +3104,6 @@ namespace Ink_Canvas
// 创建并显示悬浮按钮
_quickDrawFloatingButton = new QuickDrawFloatingButton();
_quickDrawFloatingButton.Show();
-
- LogHelper.WriteLogToFile("快抽悬浮按钮已显示", LogHelper.LogType.Trace);
}
catch (Exception ex)
{
diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
index e9334f88..5e954079 100644
--- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
+++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
@@ -742,7 +742,6 @@ namespace Ink_Canvas
ICCWaterMarkDark.Visibility = Visibility.Collapsed;
}
- // 新增:确保在白板模式下基础浮动栏被隐藏
ViewboxFloatingBar.Visibility = Visibility.Collapsed;
}
else
@@ -3048,11 +3047,8 @@ namespace Ink_Canvas
SaveStrokes(true);
ClearStrokes(true);
- // 总是恢复备份墨迹,不管是否在PPT模式
- // PPT墨迹和白板墨迹应该分别管理,不应该互相影响
RestoreStrokes();
- // 新增:在白板模式下隐藏基础浮动栏
ViewboxFloatingBar.Visibility = Visibility.Collapsed;
BtnSwitch.Content = "屏幕";
@@ -3203,7 +3199,6 @@ namespace Ink_Canvas
CheckEnableTwoFingerGestureBtnVisibility(false);
HideSubPanels("cursor");
- // 新增:在屏幕模式下显示基础浮动栏
if (currentMode == 0)
{
ViewboxFloatingBar.Visibility = Visibility.Visible;
@@ -3214,7 +3209,6 @@ namespace Ink_Canvas
AnimationsHelper.ShowWithSlideFromLeftAndFade(StackPanelCanvasControls);
CheckEnableTwoFingerGestureBtnVisibility(true);
- // 新增:在批注模式下显示基础浮动栏
if (currentMode == 0)
{
ViewboxFloatingBar.Visibility = Visibility.Visible;
@@ -3358,7 +3352,7 @@ namespace Ink_Canvas
}
}
- // 新增:插入图片方法
+ // 插入图片方法
private async void InsertImage_MouseUp_New(object sender, MouseButtonEventArgs e)
{
var dialog = new OpenFileDialog
@@ -3590,8 +3584,6 @@ namespace Ink_Canvas
// 检查浮动栏是否处于收起状态
if (isFloatingBarFolded || (BorderFloatingBarMainControls != null && BorderFloatingBarMainControls.Visibility == Visibility.Collapsed))
{
- // 在收起状态下,仍然需要设置高光位置,但可能需要调整计算方式
- // 这里先隐藏高光,等浮动栏展开时再显示
FloatingbarSelectionBG.Visibility = Visibility.Hidden;
return;
}
From 1baa74bb69d2c9a093e21c96c709151e796d75d6 Mon Sep 17 00:00:00 2001
From: CJK_mkp <113243675+CJKmkp@users.noreply.github.com>
Date: Sat, 8 Nov 2025 22:07:38 +0800
Subject: [PATCH 03/29] =?UTF-8?q?improve:=E5=BF=AB=E6=8A=BD=E6=8C=89?=
=?UTF-8?q?=E9=92=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ink Canvas/MainWindow.xaml | 77 ++++++++++++++++
Ink Canvas/MainWindow.xaml.cs | 165 +++++++++++++++++++++++++++++-----
2 files changed, 218 insertions(+), 24 deletions(-)
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index beaa21df..552989f3 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -3956,6 +3956,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Panel.ZIndex="1001"/>