public void SongListMoveTo(MHzSongBase song) { var item = SelectItemBySHA256(song.SHA256); if (item == null) { return; } SongListMoveTo(item); }
private bool IsCurrentMHzItem(MHzSongBase song) { var item = SelectMHzItemBySHA256(song.SHA256); if (item == null) { return(false); } return(IsCurrentMHzItem(item)); }
public bool RemoveItem(MHzSongBase song) { if (ServiceType == MusicServiceType.SongList) { return(RemovePlaybackItem(song)); } else { return(RemoveMHzPlaybackItem(song)); } }
public bool IsCurrent(MHzSongBase song) { if (ServiceType == MusicServiceType.SongList) { return(IsCurrentItem(song)); } else { return(IsCurrentMHzItem(song)); } }
public bool IsExistItem(MHzSongBase song) { if (ServiceType == MusicServiceType.SongList) { return(IsExistPlayItem(song)); } else { return(IsExistMHzItem(song)); } }
public void MoveToAnyway(MHzSongBase song) { if (ServiceType == MusicServiceType.SongList) { SongListMoveTo(song); } else { MHzListMoveTo(song); } }
public async Task <bool> InsertItemAsync(MHzSongBase song, int index = -1) { if (ServiceType == MusicServiceType.SongList) { return(await InsertMusicItemAsync(song, index)); } else { return(await InsertMHzItemAsync(song, index)); } }
public async Task <DownloadResult> DownloadMusicAsync(MHzSongBase song, DownloadNotifType notif_type, DownloadReportType report_type) { return (notif_type == DownloadNotifType.Null && report_type == DownloadReportType.Null ? await DownloadMusicAsync(song, not_show : true, show_start : false, show_succ_notif : false, show_fail_notif : false) : notif_type == DownloadNotifType.Null && report_type == DownloadReportType.NotShowButReportStart ? await DownloadMusicAsync(song, not_show : true, show_start : true, show_succ_notif : false, show_fail_notif : false) : notif_type == DownloadNotifType.Null && report_type == DownloadReportType.ShowListAndReportStart ? await DownloadMusicAsync(song, not_show : false, show_start : true, show_succ_notif : false, show_fail_notif : false) : notif_type == DownloadNotifType.Null && report_type == DownloadReportType.ShowListButNotReport ? await DownloadMusicAsync(song, not_show : false, show_start : false, show_succ_notif : false, show_fail_notif : false) : notif_type == DownloadNotifType.SuccessfullyNotification && report_type == DownloadReportType.Null ? await DownloadMusicAsync(song, not_show : true, show_start : false, show_succ_notif : true, show_fail_notif : false) : notif_type == DownloadNotifType.SuccessfullyNotification && report_type == DownloadReportType.NotShowButReportStart ? await DownloadMusicAsync(song, not_show : true, show_start : true, show_succ_notif : true, show_fail_notif : false) : notif_type == DownloadNotifType.SuccessfullyNotification && report_type == DownloadReportType.ShowListAndReportStart ? await DownloadMusicAsync(song, not_show : false, show_start : true, show_succ_notif : true, show_fail_notif : false) : notif_type == DownloadNotifType.SuccessfullyNotification && report_type == DownloadReportType.ShowListButNotReport ? await DownloadMusicAsync(song, not_show : false, show_start : false, show_succ_notif : true, show_fail_notif : false) : notif_type == DownloadNotifType.FailedNotification && report_type == DownloadReportType.Null ? await DownloadMusicAsync(song, not_show : true, show_start : false, show_succ_notif : false, show_fail_notif : true) : notif_type == DownloadNotifType.FailedNotification && report_type == DownloadReportType.NotShowButReportStart ? await DownloadMusicAsync(song, not_show : true, show_start : true, show_succ_notif : false, show_fail_notif : true) : notif_type == DownloadNotifType.FailedNotification && report_type == DownloadReportType.ShowListAndReportStart ? await DownloadMusicAsync(song, not_show : false, show_start : true, show_succ_notif : false, show_fail_notif : true) : notif_type == DownloadNotifType.FailedNotification && report_type == DownloadReportType.ShowListButNotReport ? await DownloadMusicAsync(song, not_show : false, show_start : false, show_succ_notif : false, show_fail_notif : true) : notif_type == DownloadNotifType.AllNotification && report_type == DownloadReportType.Null ? await DownloadMusicAsync(song, not_show : true, show_start : false, show_succ_notif : true, show_fail_notif : true) : notif_type == DownloadNotifType.AllNotification && report_type == DownloadReportType.NotShowButReportStart ? await DownloadMusicAsync(song, not_show : true, show_start : true, show_succ_notif : true, show_fail_notif : true) : notif_type == DownloadNotifType.AllNotification && report_type == DownloadReportType.ShowListAndReportStart ? await DownloadMusicAsync(song, not_show : false, show_start : true, show_succ_notif : true, show_fail_notif : true) : await DownloadMusicAsync(song, not_show : false, show_start : false, show_succ_notif : true, show_fail_notif : true)); }
private async void AddButton_ClickAsync(object sender, RoutedEventArgs e) { var item = (sender as Button).CommandParameter as SongBase; if (item == null) { return; } var song = new MHzSongBase(item); var succeed = await Service.InsertItemAsync(song); if (succeed) { ReportHelper.ReportAttentionAsync(GetUIString("Music_added")); } }
private async Task <bool> InsertMHzItemAsync(MHzSongBase song, int index = -1) { var find_index = MHzSongList.ToList().FindIndex(i => i.SHA256 == song.SHA256); if (find_index != -1) { return(true); } var item = await MusicServiceHelper.CreatePlayItemAsync(song); var retuenIndex = InsertMHzItem(item, index); MHzSongList.Insert(retuenIndex, song); RaisePropertyChanged("MHzSongList"); return(retuenIndex == -1 ? false : true); }
public static async Task <MediaPlaybackItem> CreatePlayItemAsync(MHzSongBase song) { var succeed_img = Uri.TryCreate(song.Picture, UriKind.Absolute, out var img_url); if (!succeed_img) { img_url = new Uri("ms-appx:///Assets/star006.png"); } return(await CreatePlayItemAsync( url : song.Url, img : img_url, title : song.Title, artist : song.Artist, albumTitle : song.AlbumTitle, albunmArtist : song.SingerShow, para : AppResources.MusicIsCurrent = new MusicBoardParameter { AID = song.AID, SID = song.SID, SSID = song.SSID, SHA256 = song.SHA256, Url = song.Url, Song = song, })); }
public void MHzListMoveTo(MHzSongBase song) { if (IsCurrentMHzItem(song)) { return; } var item = SelectMHzItemBySHA256(song.SHA256); if (item == null) { return; } var index = MHzChannelList.Items.ToList().FindIndex(i => i == item); if (index < 0) { return; } MHzChannelList.MoveTo((uint)index); PlayAnyway(); }
private async void IndexList_ItemClickAsync(object sender, ItemClickEventArgs e) { var item = e.ClickedItem as SongBase; if (item == null) { return; } var succeedss = Service.ChangeServiceChoice(MusicServiceType.SongList); if (!succeedss) { return; } var song = new MHzSongBase(item); var succeed = await Service.InsertItemAsync(song); if (!succeed) { return; } if (MainUpContentFrame.Content != null) { (MainUpContentFrame.Content as FM_SongBoardPage)?.UnregisterServiceEvents(); } Service.SongListMoveTo(); NavigateToBase?.Invoke( null, new MusicBoardParameter { SID = item.SID, SSID = item.SSID, AID = item.AID, SHA256 = item.SHA256, Url = item.Url, Song = song, FrameType = FrameType.UpContent }, GetFrameInstance(FrameType.UpContent), GetPageType(NavigateType.MusicBoard)); }
private bool RemoveMHzPlaybackItem(MHzSongBase song) { var item = SelectMHzItemBySHA256(song.SHA256); if (item == null) { return(false); } if (IsCurrentMHzItem(item)) { return(false); } var succeed = MHzChannelList.Items.Remove(item); if (!succeed) { return(succeed); } succeed = MHzSongList.Remove(song); RaisePropertyChanged("MHzSongList"); return(succeed); }
private static async Task <bool> CreateBJSONMessageAsync(MHzSongBase song, StorageFolder folder, string filePath) { var mess_name = $"{MHzSongBaseHelper.GetIdentity(song)}.bjsonuwp"; var mess = default(StorageFile); try { mess = await folder.CreateFileAsync(mess_name, CreationCollisionOption.ReplaceExisting); } catch { return(false); } song.IsCached = true; song.LocalPath = filePath; try { var bytes = default(byte[]); if (song is MHzSong) { bytes = Encoding.UTF8.GetBytes(JsonHelper.ToJson(song as MHzSong)); } else { bytes = Encoding.UTF8.GetBytes(JsonHelper.ToJson(song)); } using (var irandom = await mess.OpenAsync(FileAccessMode.ReadWrite)) { var stream = irandom.AsStreamForWrite(); await stream.WriteAsync(bytes, 0, bytes.Length); await stream.FlushAsync(); } } catch (SerializationException) { return(false); } return(true); }
public async Task <DownloadResult> DownloadMusicAsync(MHzSongBase song, bool not_show = false, bool show_start = true, bool show_succ_notif = true, bool show_fail_notif = true) { var file = default(StorageFile); try { var folder = await GetBeansproutMusicFolderAsync(); var filename = MHzSongBaseHelper.GetIdentity(song) + StorageHelper.MusicTemporaryExtension; file = await CreateFileInMusicFolderWithNameAsync(folder, filename); var fail_toast = ToastHelper.CreateToastNotificaion( title: GetUIString("Download_Failed") + " : " + song.Title, content: DateTime.Now.ToString("h:mm tt"), imageUri: " -- ", uri: " -- ", logoOverride: song.Picture, voice: "ms-appx:///Voice/yellsedtsr.mp3"); var succeed_toast = ToastHelper.CreateToastNotificaion( title: GetUIString("Download_Succeed") + " : " + song.Title, content: DateTime.Now.ToString("h:mm tt"), imageUri: " -- ", uri: " -- ", logoOverride: song.Picture, voice: "ms-appx:///Voice/haizi.mp3"); var group = BackgroundTransferGroup.CreateGroup(DoubanMusicGroup); group.TransferBehavior = BackgroundTransferBehavior.Serialized; var downloader = new BackgroundDownloader { FailureToastNotification = show_succ_notif ? new Windows.UI.Notifications.ToastNotification(fail_toast) : null, SuccessToastNotification = show_fail_notif ? new Windows.UI.Notifications.ToastNotification(succeed_toast) : null, TransferGroup = group, }; var succeed_trans = Uri.TryCreate(song.Url, UriKind.Absolute, out var do_url); if (!succeed_trans) { throw new DownloadCanNotRunException(); } var operation = downloader.CreateDownload(do_url, file); operation.CostPolicy = BackgroundTransferCostPolicy.UnrestrictedOnly; if (show_start) { ReportHelper.ReportAttentionAsync(GetUIString("Download_Start")); } if (!not_show) { DownloadListAddNewItem(song, operation); operation = await operation.StartAsync(); } else { var control = await operation.StartAsync(); } var mess_succeed = await CreateBJSONMessageAsync(song, folder, file.Path); if (!mess_succeed) { throw new JSONCanNotCreateException(); } await file.RenameAsync(filename.Replace(StorageHelper.MusicTemporaryExtension, StorageHelper.MusicExtension), NameCollisionOption.ReplaceExisting); return(DownloadResult.Successfully); } catch (JSONCanNotCreateException) { await file.DeleteAsync(); return(DownloadResult.Failed); } catch (DownloadCanNotRunException) { await file.DeleteAsync(); return(DownloadResult.Failed); } catch (FileCannNotCreateException) { return(DownloadResult.Failed); } catch (FileExistException) { return(DownloadResult.FileExist); } catch (Exception e) { Debug.WriteLine(e.Message); return(DownloadResult.Failed); } }
public async void DownloadMusicNotWaitAsync(MHzSongBase song, DownloadNotifType notif_type, DownloadReportType report_type) { await DownloadMusicAsync(song, notif_type, report_type); }
private void DownloadListAddNewItem(MHzSongBase song, DownloadOperation operation) { DownloadList.Add(new KeyValuePair <DownloadOperationKey, DownloadOperationValue>(new DownloadOperationKey(song.SHA256, song.Title, song.SingerShow), new DownloadOperationValue(operation))); }
public bool IsExistMHzItem(MHzSongBase song) { var find_index = MHzSongList.ToList().FindIndex(i => i.SHA256 == song.SHA256); return(find_index == -1 ? false : true); }
private bool IsExistPlayItem(MHzSongBase song) { var find_index = SongList.ToList().FindIndex(i => i.SHA256 == song.SHA256); return(find_index == -1 ? false : true); }