Beispiel #1
0
        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);
        }
Beispiel #2
0
        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
                        });
                    }
                }
            }
        }
Beispiel #3
0
        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);
            }
        }