private SetIndex GetOrCreateSet(FileInfo mapFile, BeatmapMetadata mapMetadata) { SetIndex set; if (!setsByFolderName.TryGetValue(mapFile.DirectoryName, out set)) { // Create a new set with the given metadata set = new SetIndex(); set.Id = nextSetId++; set.Artist = mapMetadata.Artist; set.Creator = mapMetadata.Creator; set.Title = mapMetadata.Title; set.RootPath = mapFile.DirectoryName; sets.Add(set.Id, set); setsByFolderName.Add(set.RootPath, set); // Update database sqliteConnection.Insert(set); // Notify SetChanged?.Invoke(this, new SetChangedEventArgs { Set = set, Type = DatabaseEventType.Added }); } return(set); }
private void RemoveDifficulties(HashSet <string> difficultiesToRemove) { foreach (var diffToRemove in difficultiesToRemove) { string folder = Path.GetDirectoryName(diffToRemove); SetIndex set; if (setsByFolderName.TryGetValue(folder, out set)) { var diff = set.Difficulties.FirstOrDefault(x => x.Path == diffToRemove); difficulties.Remove(diff.Id); set.Difficulties.Remove(diff); if (set.Difficulties.Count == 0) { // Remove set, since it is empty now setsByFolderName.Remove(set.RootPath); sets.Remove(set.Id); // Update database sqliteConnection.Delete <SetIndex>(set.Id); // Notify SetChanged?.Invoke(this, new SetChangedEventArgs { Set = set, Type = DatabaseEventType.Removed }); } } } }
private void button3_Click(object sender, EventArgs e) { //timer1.Enabled = true; if (LoadUpdateEnd != null) { bool update = LoadUpdateEnd(); if (!update) { MessageBox.Show("正在下载文件中,请稍候重试", "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } if (GetPlayState != null) { bool playState = GetPlayState(); if (playState || axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPlaying) { //如果主窗口正在播放中,则应该先中止此按钮的功能,并向用户提示 MessageBox.Show("正在播放中,请等待播放停止", "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } Resert?.Invoke(this.button3); timer1.Enabled = true; try { SaveJson(); //修改过后应向主窗体通知 SetChanged?.Invoke(this.button3); MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message); } }