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 |  300 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 204 insertions(+), 96 deletions(-)

diff --git a/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs b/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs
index cd1c0af..3e82841 100644
--- a/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs
+++ b/HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs
@@ -1,19 +1,10 @@
 锘縰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 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 HDL_ON.DAL.Server;
-using System.Net;
-using System.IO;
-using RestSharp;
+using System.Linq;
 
 namespace HDL_ON.UI.UI2.FuntionControlView.Aks
 {
@@ -23,6 +14,8 @@
     public class YkPage : FrameLayout
     {
 
+
+        private Dictionary<string, Filters> FiltersList = new Dictionary<string, Filters>();
         /// <summary>
         /// 
         /// </summary>
@@ -31,20 +24,22 @@
         {
             this.remoteControl = remoteControlEntity;
         }
-        /// <summary>
-        /// 褰辩墖鍒嗙被鍒楄〃
-        /// </summary>
-        List<FilterCategoryEntity> mFilterCategoryList;
-        /// <summary>
-        /// 褰辩墖鍒楄〃
-        /// </summary>
-        List<MovieLibrary> mMovieLibraryList;
+
+        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;
 
@@ -59,14 +54,16 @@
         CornerFramLayout horizontalFl;
 
         CornerFramLayout imageFLayout;
+        /// <summary>
+        /// 椤垫暟
+        /// </summary>
+        private int pageNo = 1;
 
 
         public void Show()
         {
             //鍒濆鍖朥I
             this.InitUI();
-            //鍒濆鍖栦簨浠剁洃鍚櫒
-            this.EventListener();
             //璇诲彇鏁版嵁
             this.ReadData();
 
@@ -81,7 +78,7 @@
             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());
             fLayout = new FrameLayout
@@ -91,22 +88,36 @@
                 BackgroundColor = MusicColor.WhiteColor,
             };
             this.AddChidren(fLayout);
-            this.LoadFTypeLayout();
+            //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();
+                });
+            };
         }
         /// <summary>
-        /// 鍔犺浇绫诲瀷甯冨眬
+        /// 鍔犺浇涓�绾у垎绫诲竷灞�
         /// </summary>
         private void LoadFTypeLayout()
         {
-            if (fLayout == null)
-            {
-                return;
-            }
+
             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);
 
@@ -116,73 +127,108 @@
                 Height = fLayout.Height - horizontalFl.Bottom,
             };
             fLayout.AddChidren(vv);
-            vv.BeginHeaderRefreshingAction += () =>
+            //浜岀骇杩囨护浜嬩欢
+            horizontalFl.selectKeyAction += (filters) =>
             {
-                //鍏抽棴鍒锋柊View锛�
-                vv.EndHeaderRefreshing();
+                pageNo = 1;//杩樺師椤垫暟
+                AddMemoryFilters(filters);
+                UpdateData(true);
             };
 
-            LoadImageFLayout();
         }
         /// <summary>
         /// 鍔犺浇褰辩墖鍒楄〃甯冨眬
         /// </summary>
         private void LoadImageFLayout()
         {
-
             if (vv == null)
             {
                 return;
             }
-            vv.RemoveAll();
-            imageFLayout = new CornerFramLayout(343, 20 * 168, 0);
+            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(this.mMovieLibraryList);
+            imageFLayout.LoadImagePage(imageFramlayoutList);
             imageFLayout.AdjustRealHeight(16);
-        }
-        /// 娉ㄥ唽浜嬩欢
-        /// </summary>
-        private void EventListener()
-        {
-            //杩斿洖
-            this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                this.RemoveFromParent();
-            };
-            //璁剧疆
-            this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
-            {
-                CommonMethod.Current.MainThread(() =>
-                {
-
-                    CollectPage collectPage = new CollectPage();
-                    MainPage.BasePageView.AddChidren(collectPage);
-                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
-                    collectPage.Show();
-                });
-            };
-            //浜岀骇杩囨护浜嬩欢
-            horizontalFl.selectAction += (filters) =>
-            {
 
 
+            //鏇村鐨�
+            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.selectAction += (index) =>
+            imageFLayout.selectImageAction += (movieLibrary) =>
             {
+                
                 CommonMethod.Current.MainThread(() =>
                 {
-                    DetailPage detailPage = new DetailPage();
+                    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()
         {
@@ -192,14 +238,8 @@
                 try
                 {
                     this.mFilterCategoryList = SendMethod.Current.GetFilterCategoryLits(this.remoteControl.deviceId, this.remoteControl.rcId);
-                    this.mMovieLibraryList = SendMethod.Current.GetMovieLibraryPage(this.remoteControl.deviceId, this.remoteControl.rcId, new List<Filters>(), 1, SendMethod.pageSize);
-                    for (int i = 0; i < this.mMovieLibraryList.Count; i++)
-                    {
-                        var mMovieLibrary = this.mMovieLibraryList[i];
-                        var bytes = RequestHttpsBase(mMovieLibrary.posterUrl);
-                        mMovieLibrary.imageBytes = bytes;
-                     
-                    }
+                    var newList = SendMethod.Current.GetMovieLibraryPage(this.remoteControl.deviceId, this.remoteControl.rcId, new List<Filters>(), pageNo, SendMethod.pageSize);
+                    DataTreating(newList);
                 }
                 catch { }
                 finally
@@ -207,44 +247,112 @@
                     CommonMethod.Current.MainThread(() =>
                     {
                         CommonMethod.Current.Loading.Hide();
-                        LoadFTypeLayout();
+                        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="mTimeout"></param>
-        /// <returns></returns>
-        private byte[] RequestHttpsBase(string imageUrl, int mTimeout = 5)
+        /// <param name="filters">杩囨护鏉′欢</param>
+        private void AddMemoryFilters(Filters filters)
         {
-
-            try
+            if (FiltersList.ContainsKey(filters.category))
             {
-                RestClient client = new RestClient(imageUrl);
-                RestRequest request = new RestRequest(Method.GET);
-                request.Timeout = mTimeout * 1000;
-                //request.AddHeader("content-type", "application/json");
-                IRestResponse response = client.Execute(request);
-                return response.RawBytes;
-
+                FiltersList.Remove(filters.category);
             }
-            catch (Exception ex)
-            {
-                HDL_ON.Utlis.WriteLine(ex.Message);
-                return null;
-            }
-
-
+            FiltersList.Add(filters.category, filters);
         }
 
 

--
Gitblit v1.8.0