From 3f6685c77beeb12baf840733fb890860f4c26e7c Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期四, 25 七月 2024 17:25:59 +0800 Subject: [PATCH] 2024年07月25日17:24:45 --- HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs | 428 ++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 304 insertions(+), 124 deletions(-) diff --git a/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs index cf704b6..3e82841 100644 --- a/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs +++ b/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs @@ -1,180 +1,360 @@ 锘縰sing Shared; -using System; using System.Collections.Generic; -using System.Text; -using HDL_ON.UI.CSS; -using HDL_ON.Entity; -using HDL_ON.DriverLayer; using HDL_ON.UI.Music; -using HDL_ON.UI.UI2.Intelligence.Automation; -using System.Linq; 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 { /// <summary> /// 褰卞簱鐣岄潰 /// </summary> - public class YkPage:FrameLayout + public class YkPage : FrameLayout { - - /// <summary> - /// 澶撮儴甯冨眬 - /// </summary> - private TopView topView; - /// <summary> - /// 鍒犻櫎璁惧鍚庨渶瑕佹洿鏂扮晫闈㈢殑鍥炶皟 - /// </summary> - public Action action; - public YkPage() + private Dictionary<string, Filters> FiltersList = new Dictionary<string, Filters>(); + /// <summary> + /// + /// </summary> + /// <param name="remoteControlEntity">閬ユ帶鍣ㄥ璞�</param> + public YkPage(RemoteControlEntity remoteControlEntity) { + this.remoteControl = remoteControlEntity; } + + List<ImageFramlayout> imageFramlayoutList =new List<ImageFramlayout>(); + /// <summary> + /// 褰撳墠鐨勯仴鎺у櫒瀵硅薄 + /// </summary> + RemoteControlEntity remoteControl; + /// <summary> + /// 褰辩墖涓�绾у垎绫诲垪琛� + /// </summary> + List<FilterCategoryEntity> mFilterCategoryList; + /// <summary> + /// 褰辩墖鍒楄〃 + /// </summary> + List<MovieLibrary> mMovieLibraryList=new List<MovieLibrary>(); + /// <summary> + /// 椤堕儴甯冨眬 + /// </summary> + TopView topView; + + FrameLayout fLayout; + /// <summary> + /// 褰辩墖涓婁笅婊戝姩鐖跺鍣� + /// </summary> + VerticalRefreshLayout vv; + /// <summary> + /// 姘村钩婊戝姩鐖跺鍣� + /// </summary> + CornerFramLayout horizontalFl; + + CornerFramLayout imageFLayout; + /// <summary> + /// 椤垫暟 + /// </summary> + private int pageNo = 1; + + public void Show() { //鍒濆鍖朥I - this.InitTop(); - this.InitMiddle(); - //鍒濆鍖栦簨浠� - this.EventListener(); + this.InitUI(); //璇诲彇鏁版嵁 + this.ReadData(); } - - /// <summary> - /// 鍒濆鍖栧ご閮ㄧ晫闈� + /// 鍒濆鍖栫晫闈� /// </summary> - private void InitTop() + 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 = "Collection/CollectionGrayIcon.png"; + this.topView.setBtn.UnSelectedImagePath = "AksIcon/like.png"; this.topView.topNameBtn.TextID = StringId.yingku; this.AddChidren(topView.TopFLayoutView()); - } - /// <summary> - /// 鍒濆鍖栦腑閮ㄧ晫闈� - /// </summary> - private void InitMiddle() - { - - var fLayout = new FrameLayout { + fLayout = new FrameLayout + { Y = topView.fLayout.Bottom, Height = Application.GetRealHeight(H_W.H - H_W.T_Height), BackgroundColor = MusicColor.WhiteColor, }; this.AddChidren(fLayout); - - BaseFramLayout typeFLayout = new BaseFramLayout(); - fLayout.AddChidren(typeFLayout); - int span= 20;//闂撮殧 - int x= 16;//X杞村亸绉婚噺 - int width =375-x; - int height = 28; - HorizontalFramLayout horizontalFram = new HorizontalFramLayout(width, height); - typeFLayout.AddChidren(horizontalFram); - horizontalFram.Y = Application.GetRealHeight(span); - horizontalFram.X = Application.GetRealHeight(x); - horizontalFram.SetIndex(2); - horizontalFram.SetList(horizontalFram.GetTestData); - horizontalFram.InitControl(); - horizontalFram.SelectTypeEvent += (index) => { - Console.WriteLine("1"); - - }; - HorizontalFramLayout horizontalFram1 = new HorizontalFramLayout(width, height); - typeFLayout.AddChidren(horizontalFram1); - horizontalFram1.Y = horizontalFram.Bottom + Application.GetRealHeight(span); - horizontalFram1.X = Application.GetRealHeight(x); - horizontalFram1.SetIndex(2); - horizontalFram1.SetList(horizontalFram1.GetTestData); - horizontalFram1.InitControl(); - horizontalFram1.SelectTypeEvent += (index) => { - Console.WriteLine("2"); - - }; - HorizontalFramLayout horizontalFram2 = new HorizontalFramLayout(width, height); - typeFLayout.AddChidren(horizontalFram2); - horizontalFram2.Y = horizontalFram1.Bottom + Application.GetRealHeight(span); - horizontalFram2.X = Application.GetRealHeight(x); - horizontalFram2.SetIndex(2); - horizontalFram2.SetList(horizontalFram2.GetTestData); - horizontalFram2.InitControl(); - horizontalFram2.SelectTypeEvent += (index) => { - Console.WriteLine("3"); - }; - HorizontalFramLayout horizontalFram3 = new HorizontalFramLayout(width, height); - typeFLayout.AddChidren(horizontalFram3); - horizontalFram3.Y = horizontalFram2.Bottom + Application.GetRealHeight(span); - horizontalFram3.X = Application.GetRealHeight(x); - horizontalFram3.SetIndex(2); - horizontalFram3.SetList(horizontalFram3.GetTestData); - horizontalFram3.InitControl(); - horizontalFram3.SelectTypeEvent += (index) => { - Console.WriteLine("4"); - }; - typeFLayout.AdjustRealHeight(); - - var vv = new VerticalRefreshLayout() - { - Y = typeFLayout.Bottom, - Height = fLayout.Height- typeFLayout.Bottom, - }; - fLayout.AddChidren(vv); - vv.BeginHeaderRefreshingAction += () => - { - //鍏抽棴鍒锋柊View锛� - vv.EndHeaderRefreshing(); - }; - - - CornerFramLayout imageFLayout = new CornerFramLayout(343, 20 * 168, 3, 0); - vv.AddChidren(imageFLayout); - imageFLayout.X = Application.GetRealWidth(16); - imageFLayout.SetList(imageFLayout.GetTestList(20)); - imageFLayout.LoadImagePage(); - imageFLayout.selectAction += (index) => - { - CommonMethod.Current.MainThread(() => - { - DetailPage detailPage = new DetailPage(); - MainPage.BasePageView.AddChidren(detailPage); - MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; - detailPage.Show(); - }); - - }; - imageFLayout.AdjustRealHeight(16); - } - /// <summary> - /// 娉ㄥ唽浜嬩欢 - /// </summary> - private void EventListener() - { + //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(); + CollectPage collectPage = new CollectPage(remoteControl); MainPage.BasePageView.AddChidren(collectPage); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; collectPage.Show(); }); }; } + /// <summary> + /// 鍔犺浇涓�绾у垎绫诲竷灞� + /// </summary> + 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); + }; + + } + /// <summary> + /// 鍔犺浇褰辩墖鍒楄〃甯冨眬 + /// </summary> + 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(); + }; + + + + } + + + + + + /// <summary> + /// 鍔犺浇鍥剧墖瀹瑰櫒 + /// </summary> + /// <param name="movieLibrary">movieLibrary</param> + 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); + }); + } + + + /// <summary> + /// 鍒濆鍖栨暟鎹� + /// </summary> + 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<Filters>(), pageNo, SendMethod.pageSize); + DataTreating(newList); + } + catch { } + finally + { + CommonMethod.Current.MainThread(() => + { + CommonMethod.Current.Loading.Hide(); + this.LoadFTypeLayout(); + this.LoadImageFLayout(); + + }); + } + }); + + } + + /// <summary> + /// 涓诲姩鏇存柊鏁版嵁 + /// </summary> + /// <param name="isUpdateData">鏄惁鏄簩绾ц繃婊�,true琛ㄧず鏄簩绾ц繃婊よ繃鏉ョ殑</param> + 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); + } + + }); + } + }); + + } + + /// <summary> + /// 鏁版嵁澶勭悊閫昏緫 + /// </summary> + /// <param name="newList">鏂板垪琛ㄦ暟鎹�</param> + private void DataTreating(List<MovieLibrary> 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++; + } + + } + + + /// <summary> + /// 娣诲姞杩囨护鏁版嵁 + /// </summary> + /// <param name="filters">杩囨护鏉′欢</param> + private void AddMemoryFilters(Filters filters) + { + if (FiltersList.ContainsKey(filters.category)) + { + FiltersList.Remove(filters.category); + } + FiltersList.Add(filters.category, filters); + } + } } -- Gitblit v1.8.0