using System; using System.Collections.Generic; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace Ink_Canvas.Helpers.Plugins { /// /// 插件服务管理器,实现IPluginService接口,提供对软件内部功能的访问 /// public class PluginServiceManager : IPluginService { private static PluginServiceManager _instance; private MainWindow _mainWindow; private Dictionary _eventHandlers; /// /// 单例实例 /// public static PluginServiceManager Instance { get { if (_instance == null) { _instance = new PluginServiceManager(); } return _instance; } } private PluginServiceManager() { _eventHandlers = new Dictionary(); } /// /// 设置主窗口引用 /// /// 主窗口实例 public void SetMainWindow(MainWindow mainWindow) { _mainWindow = mainWindow; } #region 窗口和UI访问 public Window MainWindow => _mainWindow; public InkCanvas CurrentCanvas => null; // 暂时返回null,避免访问权限问题 public List AllCanvasPages => new List(); // 暂时返回空列表 public int CurrentPageIndex => 0; // 暂时返回0 public int TotalPageCount => 0; // 暂时返回0 public FrameworkElement FloatingToolBar => _mainWindow?.ViewboxFloatingBar; public FrameworkElement LeftPanel => _mainWindow?.BlackboardLeftSide; public FrameworkElement RightPanel => _mainWindow?.BlackboardRightSide; public FrameworkElement TopPanel => _mainWindow?.BorderTools; public FrameworkElement BottomPanel => _mainWindow?.BorderSettings; #endregion #region 绘制工具状态 public int CurrentDrawingMode => 0; // 暂时返回0 public double CurrentInkWidth => 2.5; // 暂时返回默认值 public Color CurrentInkColor => Colors.Black; // 暂时返回默认值 public double CurrentHighlighterWidth => 20.0; // 暂时返回默认值 public int CurrentEraserSize => 2; // 暂时返回默认值 public int CurrentEraserType => 0; // 暂时返回默认值 public int CurrentEraserShape => 0; // 暂时返回默认值 public double CurrentInkAlpha => 255.0; // 暂时返回默认值 public int CurrentInkStyle => 0; // 暂时返回默认值 public string CurrentBackgroundColor => "#162924"; // 暂时返回默认值 #endregion #region 应用状态 public bool IsDarkTheme => false; // 暂时返回默认值 public bool IsWhiteboardMode => false; // 暂时返回默认值 public bool IsPPTMode => false; // 暂时返回默认值 public bool IsFullScreenMode => false; // 暂时返回默认值 public bool IsCanvasMode => true; // 暂时返回默认值 public bool IsSelectionMode => false; // 暂时返回默认值 public bool IsEraserMode => false; // 暂时返回默认值 public bool IsShapeDrawingMode => false; // 暂时返回默认值 public bool IsHighlighterMode => false; // 暂时返回默认值 #endregion #region IGetService 实现 public bool CanUndo => false; // 暂时返回默认值 public bool CanRedo => false; // 暂时返回默认值 public T GetSetting(string key, T defaultValue = default(T)) { // 暂时不实现,避免访问权限问题 return defaultValue; } public List GetAllPlugins() { return new List(PluginManager.Instance.Plugins); } public IPlugin GetPlugin(string pluginName) { return PluginManager.Instance.Plugins.FirstOrDefault(p => p.Name == pluginName); } #endregion #region IWindowService 实现 public void ShowSettingsWindow() { // 暂时不实现,避免访问权限问题 } public void HideSettingsWindow() { // 暂时不实现,避免访问权限问题 } public void ShowPluginSettingsWindow() { // 暂时不实现,避免访问权限问题 } public void HidePluginSettingsWindow() { // 暂时不实现,避免访问权限问题 } public void ShowHelpWindow() { // 暂时不实现,避免访问权限问题 } public void HideHelpWindow() { // 暂时不实现,避免访问权限问题 } public void ShowAboutWindow() { // 暂时不实现,避免访问权限问题 } public void HideAboutWindow() { // 暂时不实现,避免访问权限问题 } public void ShowNotification(string message, NotificationType type = NotificationType.Info) { // 暂时不实现,避免访问权限问题 } public bool ShowConfirmDialog(string message, string title = "确认") { // 暂时不实现,避免访问权限问题 return false; } public string ShowInputDialog(string message, string title = "输入", string defaultValue = "") { // 暂时不实现,避免访问权限问题 return defaultValue; } public void SetFullScreen(bool isFullScreen) { // 暂时不实现,避免访问权限问题 } public void SetTopMost(bool isTopMost) { // 暂时不实现,避免访问权限问题 } public void SetWindowVisibility(bool isVisible) { // 暂时不实现,避免访问权限问题 } public void MinimizeWindow() { // 暂时不实现,避免访问权限问题 } public void MaximizeWindow() { // 暂时不实现,避免访问权限问题 } public void RestoreWindow() { // 暂时不实现,避免访问权限问题 } public void CloseWindow() { // 暂时不实现,避免访问权限问题 } public void SetWindowPosition(double x, double y) { // 暂时不实现,避免访问权限问题 } public void SetWindowSize(double width, double height) { // 暂时不实现,避免访问权限问题 } public (double x, double y) GetWindowPosition() { // 暂时不实现,避免访问权限问题 return (0, 0); } public (double width, double height) GetWindowSize() { // 暂时不实现,避免访问权限问题 return (800, 600); } #endregion #region IActionService 实现 public void ClearCanvas() { // 暂时不实现,避免访问权限问题 } public void ClearAllCanvases() { // 暂时不实现,避免访问权限问题 } public void AddNewPage() { // 暂时不实现,避免访问权限问题 } public void DeleteCurrentPage() { // 暂时不实现,避免访问权限问题 } public void SwitchToPage(int pageIndex) { // 暂时不实现,避免访问权限问题 } public void NextPage() { // 暂时不实现,避免访问权限问题 } public void PreviousPage() { // 暂时不实现,避免访问权限问题 } public void SetDrawingMode(int mode) { // 暂时不实现,避免访问权限问题 } public void SetInkWidth(double width) { // 暂时不实现,避免访问权限问题 } public void SetInkColor(Color color) { // 暂时不实现,避免访问权限问题 } public void SetHighlighterWidth(double width) { // 暂时不实现,避免访问权限问题 } public void SetEraserSize(int size) { // 暂时不实现,避免访问权限问题 } public void SetEraserType(int type) { // 暂时不实现,避免访问权限问题 } public void SetEraserShape(int shape) { // 暂时不实现,避免访问权限问题 } public void SetInkAlpha(double alpha) { // 暂时不实现,避免访问权限问题 } public void SetInkStyle(int style) { // 暂时不实现,避免访问权限问题 } public void SetBackgroundColor(string color) { // 暂时不实现,避免访问权限问题 } public void SaveCanvas(string filePath) { // 暂时不实现,避免访问权限问题 } public void LoadCanvas(string filePath) { // 暂时不实现,避免访问权限问题 } public void ExportAsImage(string filePath, string format) { // 暂时不实现,避免访问权限问题 } public void ExportAsPDF(string filePath) { // 暂时不实现,避免访问权限问题 } public void Undo() { // 暂时不实现,避免访问权限问题 } public void Redo() { // 暂时不实现,避免访问权限问题 } public void SelectAll() { // 暂时不实现,避免访问权限问题 } public void DeselectAll() { // 暂时不实现,避免访问权限问题 } public void DeleteSelected() { // 暂时不实现,避免访问权限问题 } public void CopySelected() { // 暂时不实现,避免访问权限问题 } public void CutSelected() { // 暂时不实现,避免访问权限问题 } public void Paste() { // 暂时不实现,避免访问权限问题 } public void SetSetting(string key, T value) { // 暂时不实现,避免访问权限问题 } public void SaveSettings() { // 暂时不实现,避免访问权限问题 } public void LoadSettings() { // 暂时不实现,避免访问权限问题 } public void ResetSettings() { // 暂时不实现,避免访问权限问题 } public void EnablePlugin(string pluginName) { var plugin = GetPlugin(pluginName); if (plugin != null) { PluginManager.Instance.TogglePlugin(plugin, true); } } public void DisablePlugin(string pluginName) { var plugin = GetPlugin(pluginName); if (plugin != null) { PluginManager.Instance.TogglePlugin(plugin, false); } } public void UnloadPlugin(string pluginName) { var plugin = GetPlugin(pluginName); if (plugin != null) { PluginManager.Instance.UnloadPlugin(plugin); } } public void RegisterEventHandler(string eventName, EventHandler handler) { if (!_eventHandlers.ContainsKey(eventName)) { _eventHandlers[eventName] = handler; } else { _eventHandlers[eventName] += handler; } } public void UnregisterEventHandler(string eventName, EventHandler handler) { if (_eventHandlers.ContainsKey(eventName)) { _eventHandlers[eventName] -= handler; } } public void TriggerEvent(string eventName, object sender, EventArgs args) { if (_eventHandlers.ContainsKey(eventName)) { _eventHandlers[eventName]?.Invoke(sender, args); } } public void RestartApplication() { // 暂时不实现,避免访问权限问题 } public void ExitApplication() { // 暂时不实现,避免访问权限问题 } public void CheckForUpdates() { // 暂时不实现,避免访问权限问题 } public void OpenHelpDocument() { // 暂时不实现,避免访问权限问题 } public void OpenAboutPage() { // 暂时不实现,避免访问权限问题 } #endregion } }