using PipeGallery.Correlator; using PipeGallery.Manage; using PipeGallery.Model; using PipeGallery.ViewModel; using System; using System.Diagnostics; using System.Linq; using System.Media; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media.Imaging; namespace PipeGallery.View { /// <summary> /// AudioListView.xaml 的交互逻辑 /// </summary> public partial class AudioListView : UserControl { private bool isOrderBy = true; private OrderField orderField = OrderField.FileName; private bool isPic = false; private bool isPlay = false; public AudioListView(bool isPic = false) { InitializeComponent(); this.DataContext = AudioListViewModel.Instance; this.isPic = isPic; DataFactory.InitalAudioListData(isPic ? "snapshot" : "audio"); this.btnReturn.Click += btnReturn_Click; this.btnFirstPage.Click += btnFirstPage_Click; this.btnUpPage.Click += btnUpPage_Click; this.btnNextPage.Click += btnNextPage_Click; this.btnEndPage.Click += btnEndPage_Click; this.btnJump.Click += btnJump_Click; this.btnName.Click += btnName_Click; //this.btnPersonLiable.Click += btnPersonLiable_Click; this.btnCreateTime.Click += btnCreateTime_Click; this.btnFileSize.Click += btnFileSize_Click; this.btnDel.Click += btnDel_Click; this.btnRefresh.Click += btnRefresh_Click; if (isPic) lbx.Tag = "0"; else lbx.Tag = "1"; btnClose.Click += BtnClose_Click; } private void BtnClose_Click(object sender, RoutedEventArgs e) { gridImg.Visibility = Visibility.Collapsed; } void btnName_Click(object sender, RoutedEventArgs e) { RadioButton rb = sender as RadioButton; if (rb != null) { rb.IsChecked = true; if (orderField != OrderField.FileName) { isOrderBy = true; } if (isOrderBy) { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderBy(o => o.FileName).ToList(); isOrderBy = false; rb.Tag = "1"; } else { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderByDescending(o => o.FileName).ToList(); isOrderBy = true; rb.Tag = "0"; } orderField = OrderField.FileName; AudioListViewModel.Instance.RefreshOrder(); AudioListViewModel.Instance.CurrentPage = 1; AudioListViewModel.Instance.RefreshShowFileInfos(); } } void btnPersonLiable_Click(object sender, RoutedEventArgs e) { RadioButton rb = sender as RadioButton; if (rb != null) { rb.IsChecked = true; if (orderField != OrderField.PersonLiable) { isOrderBy = true; } if (isOrderBy) { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderBy(o => o.PersonLiable).ToList(); isOrderBy = false; rb.Tag = "1"; } else { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderByDescending(o => o.PersonLiable).ToList(); isOrderBy = true; rb.Tag = "0"; } orderField = OrderField.PersonLiable; AudioListViewModel.Instance.RefreshOrder(); AudioListViewModel.Instance.CurrentPage = 1; AudioListViewModel.Instance.RefreshShowFileInfos(); } } void btnCreateTime_Click(object sender, RoutedEventArgs e) { RadioButton rb = sender as RadioButton; if (rb != null) { rb.IsChecked = true; if (orderField != OrderField.CreationTimeUtc) { isOrderBy = true; } if (isOrderBy) { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderBy(o => o.CreationTimeUtc).ToList(); isOrderBy = false; rb.Tag = "1"; } else { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderByDescending(o => o.CreationTimeUtc).ToList(); isOrderBy = true; rb.Tag = "0"; } orderField = OrderField.CreationTimeUtc; AudioListViewModel.Instance.RefreshOrder(); AudioListViewModel.Instance.CurrentPage = 1; AudioListViewModel.Instance.RefreshShowFileInfos(); } } void btnFileSize_Click(object sender, RoutedEventArgs e) { RadioButton rb = sender as RadioButton; if (rb != null) { rb.IsChecked = true; if (orderField != OrderField.FileSize) { isOrderBy = true; } if (isOrderBy) { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderBy(o => o.FileSize).ToList(); isOrderBy = false; rb.Tag = "1"; } else { AudioListViewModel.Instance.FileInfos = AudioListViewModel.Instance.FileInfos.OrderByDescending(o => o.FileSize).ToList(); isOrderBy = true; rb.Tag = "0"; } orderField = OrderField.FileSize; AudioListViewModel.Instance.RefreshOrder(); AudioListViewModel.Instance.CurrentPage = 1; AudioListViewModel.Instance.RefreshShowFileInfos(); } } void btnReturn_Click(object sender, RoutedEventArgs e) { Border bdr = this.Parent as Border; if (bdr != null) { HomePageView homePageView = new HomePageView(); bdr.Child = homePageView; } } void btnJump_Click(object sender, RoutedEventArgs e) { try { AudioListViewModel.Instance.CurrentPage = int.Parse(txtPage.Text); AudioListViewModel.Instance.RefreshShowFileInfos(); clearSelected(); } catch { } } void btnFirstPage_Click(object sender, RoutedEventArgs e) { AudioListViewModel.Instance.CurrentPage = 1; AudioListViewModel.Instance.RefreshShowFileInfos(); clearSelected(); } void btnUpPage_Click(object sender, RoutedEventArgs e) { AudioListViewModel.Instance.CurrentPage--; AudioListViewModel.Instance.RefreshShowFileInfos(); clearSelected(); } void btnNextPage_Click(object sender, RoutedEventArgs e) { AudioListViewModel.Instance.CurrentPage++; AudioListViewModel.Instance.RefreshShowFileInfos(); clearSelected(); } void btnEndPage_Click(object sender, RoutedEventArgs e) { AudioListViewModel.Instance.RefreshShowFileInfos(true); clearSelected(); } FileInfo fi = null; private void rbPlay_Click(object sender, RoutedEventArgs e) { RadioButton rb = sender as RadioButton; if (rb != null) { try { FileInfo file = rb.DataContext as FileInfo; //得到文件信息,对文件进行操作 SoundPlayer play = new SoundPlayer(file.FullPath); if (isPlay && file.Order == fi.Order) { play.Stop(); rb.IsChecked = false; isPlay = false; } else { play.Play(); isPlay = true; } fi = file; } catch (Exception ex) { LogHelper.Error(ex.ToString()); return; } } } private void rbPic_Click(object sender, RoutedEventArgs e) { Button btn = sender as Button; if (btn != null) { FileInfo file = btn.DataContext as FileInfo;//得到文件信息,对文件进行操作 gridImg.Visibility = Visibility; BitmapImage bitmap = new BitmapImage(); bitmap.BeginInit(); bitmap.CacheOption = BitmapCacheOption.OnLoad; bitmap.CreateOptions = BitmapCreateOptions.None; bitmap.UriSource = new Uri(file.FullPath, UriKind.RelativeOrAbsolute); bitmap.DecodePixelHeight = 768; bitmap.EndInit(); bitmap.Freeze(); img.Source = bitmap; } } private void rbPage_Click(object sender, RoutedEventArgs e) { RadioButton rb = sender as RadioButton; if (rb != null) { string page = rb.DataContext as string; AudioListViewModel.Instance.CurrentPage = int.Parse(page); AudioListViewModel.Instance.RefreshShowFileInfos(); } clearSelected(); } private void lbx_ManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; } private void btnDel_Click(object sender, RoutedEventArgs e) { //List<FileInfo> fileList = AudioListViewModel.Instance.FileInfos; //AudioListViewModel.Instance.FileInfos.RemoveAll((f)=> f.IsSelected); foreach (FileInfo fi in AudioListViewModel.Instance.FileInfos) { if (fi.IsSelected) { System.IO.File.Delete(fi.FullPath); } } DataFactory.InitalAudioListData(isPic ? "snapshot" : "audio"); clearSelected(); } private void btnRefresh_Click(object sender, RoutedEventArgs e) { DataFactory.InitalAudioListData(isPic ? "snapshot" : "audio"); clearSelected(); } private void lbx_SelectionChanged(object sender, SelectionChangedEventArgs e) { } private void clearSelected() { foreach (FileInfo fi in AudioListViewModel.Instance.FileInfos) { if (fi.IsSelected) { fi.IsSelected = false; } } this.chkAllSelect.IsChecked = false; this.txtPage.Text = ""; } } public enum OrderField { FileName, PersonLiable, CreationTimeUtc, FileSize } }