mac
2023-08-29 2d5cd35af7437ad4015d38594d8c721dc6166b11
HDL_ON/UI/UI2/FuntionControlView/Aks/YkPage.cs
@@ -4,6 +4,7 @@
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
{
@@ -13,6 +14,8 @@
    public class YkPage : FrameLayout
    {
        private Dictionary<string, Filters> FiltersList = new Dictionary<string, Filters>();
        /// <summary>
        /// 
        /// </summary>
@@ -21,20 +24,22 @@
        {
            this.remoteControl = remoteControlEntity;
        }
        List<ImageFramlayout> imageFramlayoutList =new List<ImageFramlayout>();
        /// <summary>
        /// 当前的遥控器对象
        /// </summary>
        RemoteControlEntity remoteControl;
        /// <summary>
        /// 影片分类列表
        /// 影片一级分类列表
        /// </summary>
        List<FilterCategoryEntity> mFilterCategoryList;
        /// <summary>
        /// 影片列表
        /// </summary>
        List<MovieLibrary> mMovieLibraryList;
        List<MovieLibrary> mMovieLibraryList=new List<MovieLibrary>();
        /// <summary>
        /// 头部布局
        /// 顶部布局
        /// </summary>
        TopView topView;
@@ -73,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
@@ -90,7 +95,7 @@
            {
                this.RemoveFromParent();
            };
            //收藏点击事件
            //收藏图标点击事件
            this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
            {
                CommonMethod.Current.MainThread(() =>
@@ -104,7 +109,7 @@
            };
        }
        /// <summary>
        /// 加载分类布局
        /// 加载一级分类布局
        /// </summary>
        private void LoadFTypeLayout()
        {
@@ -115,6 +120,7 @@
            fLayout.AddChidren(horizontalFl);
            horizontalFl.LoadHorizontalPage(this.mFilterCategoryList);
            horizontalFl.AdjustRealHeight(20);
            vv = new VerticalRefreshLayout()
            {
                Y = horizontalFl.Bottom,
@@ -124,8 +130,9 @@
            //二级过滤事件
            horizontalFl.selectKeyAction += (filters) =>
            {
                pageNo = 1;//还原页数
                AddMemoryFilters(filters);
                UpdateData(true);
            };
        }
@@ -138,16 +145,38 @@
            {
                return;
            }
            vv.RemoveAll();
            int count =this.mMovieLibraryList == null ? 0 : this.mMovieLibraryList.Count;
            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);
            //更多的
            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);
@@ -162,11 +191,44 @@
            {
                //关闭刷新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()
        {
@@ -176,15 +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>(), pageNo, SendMethod.pageSize);
                    for (int i = 0; i < this.mMovieLibraryList.Count; i++)
                    {
                        var mMovieLibrary = this.mMovieLibraryList[i];
                        var bytes = SendMethod.Current.GetImage(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
@@ -201,5 +256,105 @@
        }
        /// <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);
        }
    }
}