using Shared;
using System.Collections.Generic;
using HDL_ON.UI.Music;
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
{
///
/// 影库界面
///
public class YkPage : FrameLayout
{
private Dictionary FiltersList = new Dictionary();
///
///
///
/// 遥控器对象
public YkPage(RemoteControlEntity remoteControlEntity)
{
this.remoteControl = remoteControlEntity;
}
List imageFramlayoutList =new List();
///
/// 当前的遥控器对象
///
RemoteControlEntity remoteControl;
///
/// 影片一级分类列表
///
List mFilterCategoryList;
///
/// 影片列表
///
List mMovieLibraryList=new List();
///
/// 顶部布局
///
TopView topView;
FrameLayout fLayout;
///
/// 影片上下滑动父容器
///
VerticalRefreshLayout vv;
///
/// 水平滑动父容器
///
CornerFramLayout horizontalFl;
CornerFramLayout imageFLayout;
///
/// 页数
///
private int pageNo = 1;
public void Show()
{
//初始化UI
this.InitUI();
//读取数据
this.ReadData();
}
///
/// 初始化界面
///
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 = "AksIcon/like.png";
this.topView.topNameBtn.TextID = StringId.yingku;
this.AddChidren(topView.TopFLayoutView());
fLayout = new FrameLayout
{
Y = topView.fLayout.Bottom,
Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
BackgroundColor = MusicColor.WhiteColor,
};
this.AddChidren(fLayout);
//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();
});
};
}
///
/// 加载一级分类布局
///
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);
};
}
///
/// 加载影片列表布局
///
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();
};
}
///
/// 加载图片容器
///
/// movieLibrary
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);
});
}
///
/// 初始化数据
///
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(), pageNo, SendMethod.pageSize);
DataTreating(newList);
}
catch { }
finally
{
CommonMethod.Current.MainThread(() =>
{
CommonMethod.Current.Loading.Hide();
this.LoadFTypeLayout();
this.LoadImageFLayout();
});
}
});
}
///
/// 主动更新数据
///
/// 是否是二级过滤,true表示是二级过滤过来的
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);
}
});
}
});
}
///
/// 数据处理逻辑
///
/// 新列表数据
private void DataTreating(List 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++;
}
}
///
/// 添加过滤数据
///
/// 过滤条件
private void AddMemoryFilters(Filters filters)
{
if (FiltersList.ContainsKey(filters.category))
{
FiltersList.Remove(filters.category);
}
FiltersList.Add(filters.category, filters);
}
}
}