| | |
| | | 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 |
| | | { |
| | |
| | | public class YkPage : FrameLayout |
| | | { |
| | | |
| | | |
| | | private Dictionary<string, Filters> FiltersList = new Dictionary<string, Filters>(); |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | |
| | | { |
| | | 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; |
| | | |
| | |
| | | CornerFramLayout horizontalFl; |
| | | |
| | | CornerFramLayout imageFLayout; |
| | | /// <summary> |
| | | /// 页数 |
| | | /// </summary> |
| | | private int pageNo = 1; |
| | | |
| | | |
| | | public void Show() |
| | | { |
| | | //初始化UI |
| | | this.InitUI(); |
| | | //初始化事件监听器 |
| | | this.EventListener(); |
| | | //读取数据 |
| | | this.ReadData(); |
| | | |
| | |
| | | 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 |
| | |
| | | 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); |
| | | |
| | |
| | | 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() |
| | | { |
| | |
| | | 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 |
| | |
| | | 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); |
| | | } |
| | | |
| | | |