public DGJMain() { try { var info = Directory.CreateDirectory(Utilities.BinDirectoryPath); info.Attributes = FileAttributes.Directory | FileAttributes.Hidden; } catch (Exception) { } AppDomain.CurrentDomain.AssemblyResolve += OnResolveAssembly; PluginName = "点歌姬"; PluginVer = BuildInfo.Version; PluginDesc = "使用弹幕点播歌曲"; PluginAuth = "Genteure"; PluginCont = "*****@*****.**"; try { Directory.CreateDirectory(Utilities.DataDirectoryPath); } catch (Exception) { } window = new DGJWindow(this); versionChecker = new VersionChecker("DGJv3"); SELF = this; Task.Run(() => { if (versionChecker.FetchInfo()) { Version current = new Version(BuildInfo.Version); if (versionChecker.HasNewVersion(current)) { Log("插件有新版本" + Environment.NewLine + $"当前版本:{BuildInfo.Version}" + Environment.NewLine + $"最新版本:{versionChecker.Version.ToString()} 更新时间:{versionChecker.UpdateDateTime.ToShortDateString()}" + Environment.NewLine + versionChecker.UpdateDescription); } } else { Log("版本检查出错:" + versionChecker?.LastException?.Message); } }); ///base.Start();感觉逻辑上不能因为懒惰急着自动启动 }
public DGJWindow(DGJMain dGJMain) { DataContext = this; PluginMain = dGJMain; Songs = new ObservableCollection <SongItem>(); Playlist = new ObservableCollection <SongInfo>(); Blacklist = new ObservableCollection <BlackListItem>(); Player = new Player(Songs, Playlist); Downloader = new Downloader(Songs); SearchModules = new SearchModules(); DanmuHandler = new DanmuHandler(Songs, Player, Downloader, SearchModules, Blacklist); Writer = new Writer(Songs, Playlist, Player, DanmuHandler); Player.LogEvent += (sender, e) => { PluginMain.Log("播放 " + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; Downloader.LogEvent += (sender, e) => { PluginMain.Log("下载 " + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; Writer.LogEvent += (sender, e) => { PluginMain.Log("文本输出 " + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; SearchModules.LogEvent += (sender, e) => { PluginMain.Log("搜索模块 " + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; DanmuHandler.LogEvent += (sender, e) => { PluginMain.Log("弹幕 " + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; RemoveSongCommmand = new UniversalCommand((songobj) => { if (songobj != null && songobj is SongItem songItem) { songItem.Remove(Songs, Downloader, Player); } }); RemoveAndBlacklistSongCommand = new UniversalCommand((songobj) => { if (songobj != null && songobj is SongItem songItem) { songItem.Remove(Songs, Downloader, Player); Blacklist.Add(new BlackListItem(BlackListType.Id, songItem.SongId)); } }); RemovePlaylistInfoCommmand = new UniversalCommand((songobj) => { if (songobj != null && songobj is SongInfo songInfo) { Playlist.Remove(songInfo); } }); ClearPlaylistCommand = new UniversalCommand((e) => { Playlist.Clear(); }); RemoveBlacklistInfoCommmand = new UniversalCommand((blackobj) => { if (blackobj != null && blackobj is BlackListItem blackListItem) { Blacklist.Remove(blackListItem); } }); ClearBlacklistCommand = new UniversalCommand((x) => { Blacklist.Clear(); }); InitializeComponent(); ApplyConfig(Config.Load()); PluginMain.ReceivedDanmaku += (sender, e) => { DanmuHandler.ProcessDanmu(e.Danmaku); }; #region PackIcon 问题 workaround PackIconPause.Kind = PackIconKind.Pause; PackIconPlay.Kind = PackIconKind.Play; PackIconVolumeHigh.Kind = PackIconKind.VolumeHigh; PackIconSkipNext.Kind = PackIconKind.SkipNext; PackIconSettings.Kind = PackIconKind.Settings; PackIconFilterRemove.Kind = PackIconKind.FilterRemove; PackIconFileDocument.Kind = PackIconKind.FileDocument; #endregion }
public DGJWindow(DGJMain dGJMain) { void addResource(string uri) { Application.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(uri) }); } addResource("pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Light.xaml"); addResource("pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.Blue.xaml"); addResource("pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.DeepOrange.xaml"); addResource("pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ProgressBar.xaml"); DataContext = this; PluginMain = dGJMain; Songs = new ObservableCollection <SongItem>(); Playlist = new ObservableCollection <SongInfo>(); Blacklist = new ObservableCollection <BlackListItem>(); Player = new Player(Songs, Playlist); Downloader = new Downloader(Songs); SearchModules = new SearchModules(); DanmuHandler = new DanmuHandler(Songs, Player, Downloader, SearchModules, Blacklist); Writer = new Writer(Songs, Playlist, Player, DanmuHandler); Player.LogEvent += (sender, e) => { Log("播放:" + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; Downloader.LogEvent += (sender, e) => { Log("下载:" + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; Writer.LogEvent += (sender, e) => { Log("文本:" + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; SearchModules.LogEvent += (sender, e) => { Log("搜索:" + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; DanmuHandler.LogEvent += (sender, e) => { Log("" + e.Message + (e.Exception == null ? string.Empty : e.Exception.Message)); }; RemoveSongCommmand = new UniversalCommand((songobj) => { if (songobj != null && songobj is SongItem songItem) { songItem.Remove(Songs, Downloader, Player); } }); RemoveAndBlacklistSongCommand = new UniversalCommand((songobj) => { if (songobj != null && songobj is SongItem songItem) { songItem.Remove(Songs, Downloader, Player); Blacklist.Add(new BlackListItem(BlackListType.Id, songItem.SongId)); } }); RemovePlaylistInfoCommmand = new UniversalCommand((songobj) => { if (songobj != null && songobj is SongInfo songInfo) { Playlist.Remove(songInfo); } }); ClearPlaylistCommand = new UniversalCommand((e) => { Playlist.Clear(); }); RemoveBlacklistInfoCommmand = new UniversalCommand((blackobj) => { if (blackobj != null && blackobj is BlackListItem blackListItem) { Blacklist.Remove(blackListItem); } }); ClearBlacklistCommand = new UniversalCommand((x) => { Blacklist.Clear(); }); InitializeComponent(); ApplyConfig(Config.Load()); PluginMain.ReceivedDanmaku += (sender, e) => { DanmuHandler.ProcessDanmu(e.Danmaku); }; PluginMain.Connected += (sender, e) => { LwlApiBaseModule.RoomId = e.roomid; }; PluginMain.Disconnected += (sender, e) => { LwlApiBaseModule.RoomId = 0; }; }