refactor(PPT)!: 重构PPT链接管理器,引入基类并优化代码结构

将ROTPPTManager重命名为ROTPPTLinkManager
新增BasePPTLinkManager抽象基类,提取公共逻辑
重构ComPPTLinkManager继承自基类,减少重复代码

Signed-off-by: doudou0720 <98651603+doudou0720@users.noreply.github.com>
This commit is contained in:
doudou0720
2026-04-12 13:40:54 +08:00
parent b50049c822
commit ab7905696d
4 changed files with 191 additions and 106 deletions
+117
View File
@@ -0,0 +1,117 @@
using System;
namespace Ink_Canvas.Helpers
{
public abstract class BasePPTLinkManager : IPPTLinkManager
{
#region IPPTLinkManager
public event Action<object> SlideShowBegin;
public event Action<object> SlideShowNextSlide;
public event Action<object> SlideShowEnd;
public event Action<object> PresentationOpen;
public event Action<object> PresentationClose;
public event Action<bool> PPTConnectionChanged;
public event Action<bool> SlideShowStateChanged;
#endregion
#region IPPTLinkManager
public virtual bool IsConnected => PPTApplication != null;
public virtual bool IsInSlideShow { get; protected set; }
public virtual bool IsSupportWPS { get; set; }
public virtual bool SkipAnimationsWhenNavigating { get; set; }
public virtual int SlidesCount { get; protected set; }
public abstract object PPTApplication { get; protected set; }
#endregion
#region
protected BasePPTLinkManager()
{
}
#endregion
#region
public abstract void StartMonitoring();
public abstract void StopMonitoring();
public virtual void ReloadConnection()
{
LogHelper.WriteLogToFile($"{GetType().Name} 执行热重载:强制断开并重新连接", LogHelper.LogType.Event);
StopMonitoring();
}
#endregion
#region
public abstract bool TryStartSlideShow();
public abstract bool TryEndSlideShow();
#endregion
#region
public abstract bool TryNavigateToSlide(int slideNumber);
public abstract bool TryNavigateNext();
public abstract bool TryNavigatePrevious();
#endregion
#region
public abstract int GetCurrentSlideNumber();
public abstract string GetPresentationName();
public abstract bool TryShowSlideNavigation();
public abstract object GetCurrentActivePresentation();
#endregion
#region
protected virtual void OnSlideShowBegin(object slideShowWindow)
{
SlideShowBegin?.Invoke(slideShowWindow);
}
protected virtual void OnSlideShowNextSlide(object slideShowWindow)
{
SlideShowNextSlide?.Invoke(slideShowWindow);
}
protected virtual void OnSlideShowEnd(object presentation)
{
SlideShowEnd?.Invoke(presentation);
}
protected virtual void OnPresentationOpen(object presentation)
{
PresentationOpen?.Invoke(presentation);
}
protected virtual void OnPresentationClose(object presentation)
{
PresentationClose?.Invoke(presentation);
}
protected virtual void OnPPTConnectionChanged(bool isConnected)
{
PPTConnectionChanged?.Invoke(isConnected);
}
protected virtual void OnSlideShowStateChanged(bool isInSlideShow)
{
SlideShowStateChanged?.Invoke(isInSlideShow);
}
#endregion
#region IDisposable
public virtual void Dispose()
{
StopMonitoring();
}
#endregion
}
}