protected override void DidActivate(bool firstActivation, bool addedToHierarchy, bool screenSystemEnabling) { if (firstActivation) { SetTitle("Qualifier Room", ViewController.AnimationType.None); showBackButton = true; _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First(); _menuLightsManager = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First(); _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First(); _campaignFlowCoordinator = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First(); _resultsViewController = Resources.FindObjectsOfTypeAll <ResultsViewController>().First(); _scoreLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsClearedLightsPreset"); _redLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsFailedLightsPreset"); _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset"); _songSelection = BeatSaberUI.CreateViewController <SongSelection>(); _songSelection.SongSelected += songSelection_SongSelected; _songDetail = BeatSaberUI.CreateViewController <SongDetail>(); _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent; _songDetail.DisableCharacteristicControl = true; _songDetail.DisableDifficultyControl = true; _songDetail.DisablePlayButton = false; } if (addedToHierarchy) { _songSelection.SetSongs(Event.QualifierMaps.ToList()); ProvideInitialViewControllers(_songSelection); } }
protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); if (e.NavigationMode == NavigationMode.New || songDetail == null) { songId = Convert.ToInt32(e.Parameter); songDetail = new SongDetail(songId); this.DataContext = songDetail; songDetail.LoadMusicDeatil(); //id.Text = e.Parameter.ToString(); } }
protected override void DidActivate(bool firstActivation, ActivationType activationType) { if (firstActivation) { //Set up UI title = "Room Screen"; showBackButton = true; _playerDataModel = Resources.FindObjectsOfTypeAll <PlayerDataModel>().First(); _menuLightsManager = Resources.FindObjectsOfTypeAll <MenuLightsManager>().First(); _soloFreePlayFlowCoordinator = Resources.FindObjectsOfTypeAll <SoloFreePlayFlowCoordinator>().First(); _campaignFlowCoordinator = Resources.FindObjectsOfTypeAll <CampaignFlowCoordinator>().First(); _resultsViewController = Resources.FindObjectsOfTypeAll <ResultsViewController>().First(); _scoreLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_resultsLightsPreset"); _redLights = _campaignFlowCoordinator.GetField <MenuLightsPresetSO>("_newObjectiveLightsPreset"); _defaultLights = _soloFreePlayFlowCoordinator.GetField <MenuLightsPresetSO>("_defaultLightsPreset"); _songSelection = BeatSaberUI.CreateViewController <SongSelection>(); _songSelection.SongSelected += songSelection_SongSelected; _splashScreen = BeatSaberUI.CreateViewController <SplashScreen>(); _songDetail = BeatSaberUI.CreateViewController <SongDetail>(); _songDetail.PlayPressed += songDetail_didPressPlayButtonEvent; _songDetail.DifficultyBeatmapChanged += songDetail_didChangeDifficultyBeatmapEvent; _playerList = BeatSaberUI.CreateViewController <PlayerList>(); } if (activationType == ActivationType.AddedToHierarchy) { tournamentMode = Match == null; if (tournamentMode) { _splashScreen.StatusText = $"Connecting to \"{Host.Name}\"..."; ProvideInitialViewControllers(_splashScreen); } else { //If we're not in tournament mode, then a client connection has already been made //by the room selection screen, so we can just assume Plugin.client isn't null //NOTE: This is *such* a hack. Oh my god. isHost = Match.Leader == Plugin.client.Self; _songSelection.SetSongs(SongUtils.masterLevelList); _playerList.Players = Match.Players; _splashScreen.StatusText = "Waiting for the host to select a song..."; if (isHost) { ProvideInitialViewControllers(_songSelection, _playerList); } else { ProvideInitialViewControllers(_splashScreen, _playerList); } } } //The ancestor sets up the server event listeners //It would be possible to recieve an event that does a ui update after this call //and before the rest of the ui is set up, if we did this at the top. //So, we do it last base.DidActivate(firstActivation, activationType); }
public void setSongDetail(SongDetail songDetail) { this.songDetail = songDetail; }
private async void btnGetInfo_Click(object sender, RoutedEventArgs e) { if (txtId.Text == String.Empty) { MessageBox.Show("请输入ID", "网易云音乐工具"); return; } if (txtId.Text.Trim().StartsWith("http") || txtId.Text.Trim().StartsWith("https")) { try { id = GetIdFromLink(txtId.Text); } catch (Exception ee) when(String.Equals(ee.Message, "Wrong Url")) { MessageBox.Show("歌曲链接格式错误,无法解析出歌曲id"); return; } } else { id = txtId.Text; } // 获取歌曲详情 try { jsonDetail = await MusicApi.GetDetialAsync(id); // jsonDetial = MusicApi.GetDetial(id); } catch (WebException ee) when(String.Equals(ee.Message, "No Internet Exception")) { MessageBox.Show("无法连接到网络", "网易云音乐工具"); return; } // 歌曲不存在 if (jsonDetail == "{\"songs\":[],\"equalizers\":{},\"code\":200}") { MessageBox.Show("没有找到对应歌曲", "网易云音乐工具"); return; } else if (jsonDetail == "{\"code\":400}") { MessageBox.Show("没有找到对应歌曲", "网易云音乐工具"); return; } // 获取歌曲链接 try { jsonUrl = await MusicApi.GetUrlAsync(id, br); // jsonUrl = MusicApi.GetUrl(id, br); } catch (WebException ee) when(String.Equals(ee.Message, "No Internet Exception")) { MessageBox.Show("无法连接到网络", "网易云音乐工具"); return; } catch (Exception ee) when(String.Equals(ee.Message, "Error No Response")) { MessageBox.Show("向服务器请求数据失败,请重试", "网易云音乐工具"); return; } // 解析歌曲信息 SongDetail sdetail = JsonPrase.Prase <SongDetail>(jsonDetail); sName = sdetail.songs[0].name; sArtist = String.Empty; foreach (var artist in sdetail.songs[0].artists) { sArtist += artist.name + ","; } sArtist = sArtist.Substring(0, sArtist.Length - 1); sAlbum = sdetail.songs[0].album.name; sDuration = sdetail.songs[0].duration; // 解析歌曲链接 SongUrl surl = JsonPrase.Prase <SongUrl>(jsonUrl); sUrl = surl.data[0].url; sBr = surl.data[0].br; // 更新界面数据 txbName.Text = sName; txbBitRate.Text = sBr; txbArtist.Text = sArtist; txbAlbum.Text = sAlbum; txbDuration.Text = sDuration; progressBar.Value = 0; if (String.Equals(sUrl, null)) { txbUrl.Text = "无法获取下载地址,歌曲可能受版权保护"; } else { txbUrl.Text = sUrl; } if (sUrl != null) { btnPlay.IsEnabled = true; btnPlay.Content = " 播放 "; player.Open(new Uri(sUrl)); btnDownload.IsEnabled = true; } }