private async void DeleteItemTapped(object sender, TappedRoutedEventArgs args) { ListView listView = GetListView(sender as DependencyObject); if (listView != null) { var removeList = listView.SelectedItems.Cast <PlayListFile>().ToList(); var result = playListDAO.DeletePlayListFiles(CurrentPlayList, removeList); if (result == SQLitePCL.SQLiteResult.DONE) { foreach (var plf in removeList) { PlayListFileSource.Remove(plf); } //삭제 후 액션바 이전 상태로 복원 if (PlayListFileSource?.Count == 0) { BackNormalButtonSetTapped(null, null); } } else { var resource = ResourceLoader.GetForCurrentView(); var dlg = DialogHelper.GetSimpleContentDialog( resource.GetString("Message/Error/Remove"), resource.GetString("Message/Error/Retry"), resource.GetString("Button/Close/Content")); await dlg.ShowAsync(); } } }
protected override void RegisterMessage() { MessengerInstance.Register <PlayList>(this, "ChangePlayList", (playList) => { CurrentPlayList = playList; }); MessengerInstance.Register <bool>(this, "ResetSelectionMode", (val) => { SelectedIndex = -1; BackNormalButtonSetTapped(null, null); }); MessengerInstance.Register <Message>(this, "PrepareLoadPlayListFile", (message) => { PreparedData = new PreparedData { //재생목록에서 지금재생중으로 이동 직전에 동기로드 카운트 설정 //지금 재생할 비디오와 다음 재생 프리뷰용으로 총 2개 SyncLoadPlayListFileCount = 2, DecoderType = message.GetValue <DecoderTypes>("DecoderType"), StorageItemInfo = message.GetValue <StorageItemInfo>("StorageItemInfo") }; }); //FileAssociation에서 이미 "지금 재생중"이 선택되어진 상태에서 넘어온다. MessengerInstance.Register <Message>(this, "SelectPlayListFile", async(message) => { BackNormalButtonSetTapped(null, null); _RequestedDecoderType = message.GetValue <DecoderTypes>("DecoderType"); var storageItemInfo = message.GetValue <StorageItemInfo>("StorageItemInfo"); var orderNo = PlayListFileSource.LastOrDefault() != null ? (int)PlayListFileSource.LastOrDefault().OrderNo : 0; //새롭게 추가된 List <PlayListFile> playListFileList = new List <PlayListFile>(); playListDAO.LoadPlayListFiles(CurrentPlayList, orderNo, (playListFile) => { //이벤트 등록 및 표시명 설정 SetPlayListFile(playListFile); //리스트에 바인딩 if (PlayListFileSource.All(x => x.Path != playListFile.Path)) { PlayListFileSource.Add(playListFile); } else if (PlayListFileSource.Any(x => x.Path == playListFile.Path && x.OrderNo != playListFile.OrderNo)) { //기존 리스트에 존재하나 순서가 변경된 경우 var tmp = PlayListFileSource.First(x => x.Path == playListFile.Path && x.OrderNo != playListFile.OrderNo); PlayListFileSource.Remove(tmp); PlayListFileSource.Add(playListFile); } //추가 정보 로드 LoadExtraInfoAsync(playListFile); }); var newIndex = PlayListFileSource.IndexOf(PlayListFileSource.LastOrDefault(x => x.Path == storageItemInfo.Path)); if (newIndex > -1 && newIndex < PlayListFileSource.Count) { SelectedIndex = newIndex; //로딩 패널 표시 MessengerInstance.Send(new Message("IsOpen", true), "ShowLoadingPanel"); await ThreadPool.RunAsync(async handler => { await DispatcherHelper.RunAsync(() => { //재생요청 RequestPlayback(true); }); }, WorkItemPriority.Normal); } }); MessengerInstance.Register <int>(this, "NextPlayListFile", (index) => { var nextIndex = SelectedIndex + index; if (nextIndex > -1 && nextIndex < PlayListFileSource.Count) { SelectedIndex = nextIndex; PlayListFileSource[SelectedIndex].PausedTime = TimeSpan.FromSeconds(0); RequestPlayback(false); } }); MessengerInstance.Register <Message>(this, "SavePlayListFile", (message) => { var file = message.GetValue <PlayListFile>(); playListDAO.UpdatePausedTime(file); //System.Diagnostics.Debug.WriteLine("PlayListViewModel : Message - SavePlayListFile =>" + file.PausedTime); }); }