using Shared; using System.Collections.Generic; using HDL_ON.UI.Music; using HDL_ON.UI.UI2.FuntionControlView.Aks.CommonView; using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock; using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity; using System.Linq; namespace HDL_ON.UI.UI2.FuntionControlView.Aks { /// /// 影库界面 /// public class YkPage : FrameLayout { private Dictionary FiltersList = new Dictionary(); /// /// /// /// 遥控器对象 public YkPage(RemoteControlEntity remoteControlEntity) { this.remoteControl = remoteControlEntity; } List imageFramlayoutList =new List(); /// /// 当前的遥控器对象 /// RemoteControlEntity remoteControl; /// /// 影片一级分类列表 /// List mFilterCategoryList; /// /// 影片列表 /// List mMovieLibraryList=new List(); /// /// 顶部布局 /// TopView topView; FrameLayout fLayout; /// /// 影片上下滑动父容器 /// VerticalRefreshLayout vv; /// /// 水平滑动父容器 /// CornerFramLayout horizontalFl; CornerFramLayout imageFLayout; /// /// 页数 /// private int pageNo = 1; public void Show() { //初始化UI this.InitUI(); //读取数据 this.ReadData(); } /// /// 初始化界面 /// private void InitUI() { this.BackgroundColor = MusicColor.ViewColor; this.topView = new TopView(); this.topView.setBtn.Visible = true; this.topView.setBtn.Width = Application.GetMinRealAverage(32); this.topView.setBtn.Height = Application.GetMinRealAverage(32); this.topView.setBtn.UnSelectedImagePath = "AksIcon/like.png"; this.topView.topNameBtn.TextID = StringId.yingku; this.AddChidren(topView.TopFLayoutView()); fLayout = new FrameLayout { Y = topView.fLayout.Bottom, Height = Application.GetRealHeight(H_W.H - H_W.T_Height), BackgroundColor = MusicColor.WhiteColor, }; this.AddChidren(fLayout); //this.LoadFTypeLayout(); //this.LoadImageFLayout(); //返回 this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { this.RemoveFromParent(); }; //收藏图标点击事件 this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) => { CommonMethod.Current.MainThread(() => { CollectPage collectPage = new CollectPage(remoteControl); MainPage.BasePageView.AddChidren(collectPage); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; collectPage.Show(); }); }; } /// /// 加载一级分类布局 /// private void LoadFTypeLayout() { fLayout.RemoveAll(); int count = this.mFilterCategoryList == null ? 0 : this.mFilterCategoryList.Count; horizontalFl = new CornerFramLayout(375, count * 75); fLayout.AddChidren(horizontalFl); horizontalFl.LoadHorizontalPage(this.mFilterCategoryList); horizontalFl.AdjustRealHeight(20); vv = new VerticalRefreshLayout() { Y = horizontalFl.Bottom, Height = fLayout.Height - horizontalFl.Bottom, }; fLayout.AddChidren(vv); //二级过滤事件 horizontalFl.selectKeyAction += (filters) => { pageNo = 1;//还原页数 AddMemoryFilters(filters); UpdateData(true); }; } /// /// 加载影片列表布局 /// private void LoadImageFLayout() { if (vv == null) { return; } vv.RemoveAll(); int count = this.mMovieLibraryList == null ? 0 : this.mMovieLibraryList.Count; imageFLayout = new CornerFramLayout(343, count * 168, 0); vv.AddChidren(imageFLayout); imageFLayout.X = Application.GetRealWidth(16); //imageFLayout.LoadImagePage(this.mMovieLibraryList); imageFLayout.LoadImagePage(imageFramlayoutList); imageFLayout.AdjustRealHeight(16); //更多的 var btnMore = new Button { Width = Application.GetRealWidth(375), Height = Application.GetRealHeight(30), TextSize = TextSize.Text14, TextColor = MusicColor.TextColor, TextID = StringId.LoadMore, TextAlignment = TextAlignment.TopCenter, Padding = new Padding(0, 20, 0, 20), }; vv.AddChidren(btnMore); btnMore.MouseDownEventHandler += (sender,e) => { //主动更新数据 UpdateData(false); }; //影片事件 imageFLayout.selectImageAction += (movieLibrary) => { CommonMethod.Current.MainThread(() => { DetailPage detailPage = new DetailPage(remoteControl, movieLibrary); MainPage.BasePageView.AddChidren(detailPage); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; detailPage.Show(); }); }; //下拉刷新 vv.BeginHeaderRefreshingAction += () => { //关闭刷新View; vv.EndHeaderRefreshing(); //主动更新数据 //UpdateData(); }; } /// /// 加载图片容器 /// /// movieLibrary private void AddImageFramlayout(MovieLibrary movieLibrary) { CommonMethod.Current.MainThread(() => { if (movieLibrary == null) { return; } ImageFramlayout imageFram = new ImageFramlayout(); //imageFram.AddView(this); imageFram.Tag = movieLibrary; imageFram.btnName.Text = movieLibrary.name; imageFram.btnImage.ImageBytes = movieLibrary.imageBytes; imageFram.btnScore.Text = movieLibrary.rating; //添加缓存 imageFramlayoutList.Add(imageFram); }); } /// /// 初始化数据 /// private void ReadData() { CommonMethod.Current.Loading.Start(); CommonMethod.Current.SunThread(() => { try { this.mFilterCategoryList = SendMethod.Current.GetFilterCategoryLits(this.remoteControl.deviceId, this.remoteControl.rcId); var newList = SendMethod.Current.GetMovieLibraryPage(this.remoteControl.deviceId, this.remoteControl.rcId, new List(), pageNo, SendMethod.pageSize); DataTreating(newList); } catch { } finally { CommonMethod.Current.MainThread(() => { CommonMethod.Current.Loading.Hide(); this.LoadFTypeLayout(); this.LoadImageFLayout(); }); } }); } /// /// 主动更新数据 /// /// 是否是二级过滤,true表示是二级过滤过来的 private void UpdateData(bool isUpdateData) { CommonMethod.Current.Loading.Start(); CommonMethod.Current.SunThread(() => { try { var newList = SendMethod.Current.GetMovieLibraryPage(this.remoteControl.deviceId, this.remoteControl.rcId, this.FiltersList.Values.ToList(), pageNo, SendMethod.pageSize); DataTreating(newList); } catch { } finally { CommonMethod.Current.MainThread(() => { CommonMethod.Current.Loading.Hide(); if (isUpdateData) { //清空所有旧影片数据,重新加载新影片数据 this.LoadImageFLayout(); } else { //追加新数据在旧数据后面 imageFLayout.LoadImagePage(imageFramlayoutList); imageFLayout.AdjustRealHeight(16); } }); } }); } /// /// 数据处理逻辑 /// /// 新列表数据 private void DataTreating(List newList) { if (newList == null || newList.Count == 0) { return; } //有新数据,清空旧数据 imageFramlayoutList.Clear(); for (int i = 0; i < newList.Count; i++) { var mMovieLibrary = newList[i]; //图片的字节流 var bytes = SendMethod.Current.GetImage(mMovieLibrary.posterUrl); //更新值 mMovieLibrary.imageBytes = bytes; } for (int i = 0; i < newList.Count; i++) { //去重 var mMovieLibrary = this.mMovieLibraryList.Find((o) => o.movieId == newList[i].movieId); if (mMovieLibrary == null) { //新列表默认加在最前面 this.mMovieLibraryList.Insert(0, newList[i]); } //添加图片容器 AddImageFramlayout(newList[i]); } if (newList.Count == SendMethod.pageSize) { //更新页数 pageNo++; } } /// /// 添加过滤数据 /// /// 过滤条件 private void AddMemoryFilters(Filters filters) { if (FiltersList.ContainsKey(filters.category)) { FiltersList.Remove(filters.category); } FiltersList.Add(filters.category, filters); } } }