wjc
2023-08-15 0c216014c649090d765902301cbfc9157f8f1ee4
HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs
@@ -1,19 +1,10 @@
using 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>
@@ -32,19 +25,19 @@
            this.remoteControl = remoteControlEntity;
        }
        /// <summary>
        /// 影片分类列表
        /// 当前的遥控器对象
        /// </summary>
        RemoteControlEntity remoteControl;
        /// <summary>
        /// 影片一级分类列表
        /// </summary>
        List<FilterCategoryEntity> mFilterCategoryList;
        /// <summary>
        /// 影片列表
        /// </summary>
        List<MovieLibrary> mMovieLibraryList;
        List<MovieLibrary> mMovieLibraryList=new List<MovieLibrary>();
        /// <summary>
        /// 当前的遥控器对象
        /// </summary>
        RemoteControlEntity remoteControl;
        /// <summary>
        /// 头部布局
        /// 顶部布局
        /// </summary>
        TopView topView;
@@ -59,14 +52,16 @@
        CornerFramLayout horizontalFl;
        CornerFramLayout imageFLayout;
        /// <summary>
        /// 页数
        /// </summary>
        private int pageNo = 1;
        public void Show()
        {
            //初始化UI
            this.InitUI();
            //初始化事件监听器
            this.EventListener();
            //读取数据
            this.ReadData();
@@ -91,22 +86,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 +125,53 @@
                Height = fLayout.Height - horizontalFl.Bottom,
            };
            fLayout.AddChidren(vv);
            vv.BeginHeaderRefreshingAction += () =>
            //二级过滤事件
            horizontalFl.selectKeyAction += (filters) =>
            {
                //关闭刷新View;
                vv.EndHeaderRefreshing();
                AddMemoryFilters(filters);
                UpdateData();
            };
            LoadImageFLayout();
        }
        /// <summary>
        /// 加载影片列表布局
        /// </summary>
        private void LoadImageFLayout()
        {
            if (vv == null)
            {
                return;
            }
            vv.RemoveAll();
            imageFLayout = new CornerFramLayout(343, 20 * 168, 0);
            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.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) =>
            {
            };
            //影片事件
            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>
        private void ReadData()
        {
@@ -192,14 +181,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 +190,92 @@
                    CommonMethod.Current.MainThread(() =>
                    {
                        CommonMethod.Current.Loading.Hide();
                        LoadFTypeLayout();
                        this.LoadFTypeLayout();
                        this.LoadImageFLayout();
                    });
                }
            });
        }
        /// <summary>
        /// 主动更新数据
        /// </summary>
        private void UpdateData()
        {
            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();
                        this.LoadImageFLayout();
                    });
                }
            });
        }
        /// <summary>
        /// 页面数据处理逻辑
        /// </summary>
        /// <param name="newList">新列表数据</param>
        private void DataTreating(List<MovieLibrary> newList)
        {
            if (newList == null)
            {
                return;
            }
            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]);
                }
            }
            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);
        }