コード例 #1
0
ファイル: MenuScript.cs プロジェクト: sh4869/NCMG
 void Start()
 {
     this.infos = JsonUtility.FromJson <MusicInfos>(ReadJson());
     this.createMusicSelectionObjects();
     source      = this.gameObject.AddComponent <AudioSource>();
     changeSE    = (AudioClip)Resources.Load("change");
     source.clip = changeSE;
 }
コード例 #2
0
 /// <summary>
 /// 添加一个歌曲信息到全局容器
 /// </summary>
 /// <param name="infos">歌曲信息</param>
 public void InsertMusicInfo(MusicInfoModel info)
 {
     lock (MusicInfos)
     {
         int _lastIndex = MusicInfos.Count == 0 ? 0 : MusicInfos[MusicInfos.Count - 1].Index;
         info.Status = MusicInfoEnum.Ready;
         info.Index  = _lastIndex++;
         MusicInfos.Add(info);
     }
 }
コード例 #3
0
        public void ClickTencentExecute(object parameter)
        {
            SearchOption.Tencent = (bool)parameter;
            var ini = new IniConfig("Config.ini");

            ini.SetObject(SearchOption);
            ini.Save();
            MusicInfos.Where(t => t.Origin == MusicSource.Tencent).ToList().ForEach(item => MusicInfos.Remove(item));
            PlayerList.SetPreList(MusicInfos, "搜索");
        }
コード例 #4
0
 /// <summary>
 /// 一个安全添加歌曲信息的方法,并且填充 UI
 /// </summary>
 /// <param name="infos">需要添加的歌曲信息</param>
 public void InsertMusicInfoAndFillListView(MusicInfoModel info)
 {
     lock (MusicInfos)
     {
         int _lastIndex = MusicInfos.Count == 0 ? 0 : MusicInfos[MusicInfos.Count - 1].Index;
         info.Status = MusicInfoEnum.Ready;
         info.Index  = _lastIndex++;
         MusicInfos.Add(info);
         InsertItemToCenterListView(info);
     }
 }
コード例 #5
0
ファイル: BasePageViewModel.cs プロジェクト: naisev/WeMusic
        public void ClickLocalMusicExecute()
        {
            ListId = string.Empty;
            MusicInfos.Clear();
            var list = new LocalListManager().GetList();

            list.ForEach(item =>
            {
                var mim   = new MusicInfoManager();
                var music = mim.Find(item.Id);
                MusicInfos.Add(music.ToIMusic());
            });
            PlayerList.SetPreList(MusicInfos, "本地音乐");
            DataGridAnimation();
        }
コード例 #6
0
ファイル: BasePageViewModel.cs プロジェクト: naisev/WeMusic
        public void DefaultListExecute()
        {
            ListId = string.Empty;
            var orm  = new DefaultListManager();
            var list = orm.GetList();

            MusicInfos.Clear();
            list.ForEach(item =>
            {
                var mif   = new MusicInfoManager();
                var music = mif.Find(item.Id);
                MusicInfos.Add(music.ToIMusic());
            });
            PlayerList.SetPreList(MusicInfos, "默认列表");
            DataGridAnimation();
        }
コード例 #7
0
        /// <summary>
        /// 将当前音乐信息转换为 ConcurrentBag 容器
        /// 注:会产生新的对象
        /// </summary>
        /// <returns>转换完成的包含所有音乐信息的 ConcurrentBag 实例</returns>
        public ConcurrentBag <MusicInfoModel> GetConcurrentList()
        {
            ConcurrentBag <MusicInfoModel> _infos = new ConcurrentBag <MusicInfoModel>();

            if (MusicInfos == null)
            {
                MusicInfos = new List <MusicInfoModel>();
            }

            foreach (var _item in MusicInfos.OrderBy(z => z.Index))
            {
                _infos.Add(_item);
            }

            return(_infos);
        }
コード例 #8
0
 /// <summary>
 /// 一个安全添加歌曲信息的方法,并且填充 UI
 /// </summary>
 /// <param name="infos">需要添加的歌曲信息集合</param>
 public void InsertMusicInfosAndFillListView(IEnumerable <MusicInfoModel> infos)
 {
     lock (MusicInfos)
     {
         int _lastIndex = MusicInfos.Count == 0 ? 0 : MusicInfos[MusicInfos.Count - 1].Index;
         UIContext.Center_ListViewNF_MusicList.BeginUpdate();
         foreach (var _info in infos)
         {
             _info.Status = MusicInfoEnum.Ready;
             _info.Index  = _lastIndex++;
             InsertItemToCenterListView(_info);
         }
         UIContext.Center_ListViewNF_MusicList.EndUpdate();
         MusicInfos.AddRange(infos);
     }
 }
コード例 #9
0
        public async void SearchTask()
        {
            //UI
            SearchProgressVisibility = Visibility.Visible;
            DataVisibility           = Visibility.Hidden;
            NoResultVisibility       = Visibility.Hidden;

            //清空当前绑定数据
            MusicInfos.Clear();
            IMusic[] infos;
            try
            {
                //网易云
                if (SearchOption.Netease)
                {
                    infos = await Task.Run(() => CoreApi.SearchMusic(MusicSource.Netease, SearchContent));

                    InsertMusicInfo(infos, 1);
                }

                //酷狗
                if (SearchOption.Kugou)
                {
                    infos = await Task.Run(() => CoreApi.SearchMusic(MusicSource.Kugou, SearchContent));

                    InsertMusicInfo(infos, 2);
                }

                //QQ音乐
                if (SearchOption.Tencent)
                {
                    infos = await Task.Run(() => CoreApi.SearchMusic(MusicSource.Tencent, SearchContent));

                    InsertMusicInfo(infos, 3);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show($"搜索失败!\n{e.Message}");
            }

            PlayerList.SetPreList(MusicInfos, "搜索");
            //UI
            SearchProgressVisibility = Visibility.Hidden;
            DataVisibility           = MusicInfos.Count == 0 ? Visibility.Hidden : Visibility.Visible;
            NoResultVisibility       = MusicInfos.Count == 0 ? Visibility.Visible : Visibility.Hidden;
        }
コード例 #10
0
 public void InsertMusicInfo(IMusic[] insertInfos, int index)
 {
     for (int i = 0; i < insertInfos.Length; i++)
     {
         if (insertInfos[i].Id == string.Empty)
         {
             continue;
         }
         if (i * index + index - 1 < MusicInfos.Count)
         {
             MusicInfos.Insert(i * index + index - 1, insertInfos[i]);
         }
         else
         {
             MusicInfos.Add(insertInfos[i]);
         }
     }
 }
コード例 #11
0
ファイル: BasePageViewModel.cs プロジェクト: naisev/WeMusic
        public void ClickCustomList(object parameter)
        {
            ListId = string.Empty;
            string title = parameter.ToString();
            var    ls    = new CustomListManager().GetList();

            MusicInfos.Clear();
            ls.ForEach(item =>
            {
                if (item.Title == title)
                {
                    var mim   = new MusicInfoManager();
                    var music = mim.Find(item.Id);
                    MusicInfos.Add(music.ToIMusic());
                }
            });
            PlayerList.SetPreList(MusicInfos, title);
            DataGridAnimation();
        }
コード例 #12
0
ファイル: BasePageViewModel.cs プロジェクト: naisev/WeMusic
        public void ClickPlatformList(object parameter)
        {
            string id = parameter.ToString();

            ListId = id;
            var ls = new PlatformListManager().GetList();

            MusicInfos.Clear();
            ls.ForEach(item =>
            {
                if (item.PlatformId == id)
                {
                    var mim   = new MusicInfoManager();
                    var music = mim.Find(item.MusicId);
                    MusicInfos.Add(music.ToIMusic());
                }
            });
            PlayerList.SetPreList(MusicInfos, new PlatformInfoManager().Find(id).Title);
            DataGridAnimation();
        }
コード例 #13
0
ファイル: BasePageViewModel.cs プロジェクト: naisev/WeMusic
 public void RefreshShowList(string title)
 {
     //如果当前BasePage的DataGrid展示的是默认列表,进行刷新
     if (PlayerList.PreListTitle != title)
     {
         return;
     }
     if (ListId == string.Empty)
     {
         if (title == "默认列表")
         {
             var orm  = new DefaultListManager();
             var list = orm.GetList();
             MusicInfos.Clear();
             list.ForEach(item =>
             {
                 var mif   = new MusicInfoManager();
                 var music = mif.Find(item.Id);
                 MusicInfos.Add(music.ToIMusic());
             });
         }
         else if (title == "本地音乐")
         {
             MusicInfos.Clear();
             var list = new LocalListManager().GetList();
             list.ForEach(item =>
             {
                 var mim   = new MusicInfoManager();
                 var music = mim.Find(item.Id);
                 MusicInfos.Add(music.ToIMusic());
             });
         }
         else
         {
             var ls = new CustomListManager().GetList();
             MusicInfos.Clear();
             ls.ForEach(item =>
             {
                 if (item.Title == title)
                 {
                     var mim   = new MusicInfoManager();
                     var music = mim.Find(item.Id);
                     MusicInfos.Add(music.ToIMusic());
                 }
             });
         }
     }
     else
     {
         var ls = new PlatformListManager().GetList();
         MusicInfos.Clear();
         ls.ForEach(item =>
         {
             if (item.PlatformId == ListId)
             {
                 var mim   = new MusicInfoManager();
                 var music = mim.Find(item.MusicId);
                 MusicInfos.Add(music.ToIMusic());
             }
         });
     }
 }
コード例 #14
0
 public ApplicationContext(DbContextOptions options) : base(options)
 {
     Database.EnsureCreated();
     MusicLength = MusicInfos.CountAsync().Result;
 }
コード例 #15
0
ファイル: MusicManager.cs プロジェクト: wtfcolt/game
 /// <summary>
 /// Saves the <see cref="IMusicInfo"/>s in this <see cref="IMusicManager"/> to file.
 /// </summary>
 public void Save()
 {
     AudioManager.WriteValues(_fileName, _rootNodeName,
                              MusicInfos.Select(x => new KeyValuePair <string, int>(x.Name, (int)x.ID)));
 }