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 HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
using HDL_ON.UI.UI2.Intelligence.Automation;
using System.Linq;
using HDL_ON.UI.UI2.FuntionControlView.Aks.Entity;
using System.Reflection;
using System.Collections;
namespace HDL_ON.UI.UI2.FuntionControlView.Aks
{
///
/// 埃克斯主界面
///
public class AksPage : FrameLayout
{
#region ■ 变量声明___________________________
///
/// 遥控器列表
///
private List remoteControlList;
/// 时序器列表
///
private List sequencerList;
///
/// 设备
///
private Function device;
///
/// 上一级界面的设备名字控件
///
private Button btnDeviceName;
///
/// 上一级界面的房间名字控件
///
private Button btnRoomName;
///
/// 头部布局
///
private TopView topView;
///
/// 当前设备名称
///
private Button btnCurrDeviceName;
///
/// 区域
///
private Button btnCurrDeviceRoom;
///
/// 表示来自那个界面
///
private CommonMethod.Comerom comerom;
///
/// 删除设备后需要更新界面的回调
///
public Action action;
///
/// 记录当前设备
///
public IntType currnetIntType = IntType.none;
///
/// 记录当前选择的索引值
///
public int indexValue = -1;
public VerticalScrolViewLayout vv;
#endregion
public AksPage()
{
}
///
/// 构造函数
///
/// 设备
/// 上一级界面的设备名字控件(注:不能传null,没有可以传new Button())
/// 上一级界面的房间名字控件(注:不能传null,没有可以传new Button())
public AksPage(Function function, Button btnDeviceName, Button btnRoomName, CommonMethod.Comerom comerom, Action action)
{
this.device = function;
this.btnDeviceName = btnDeviceName;
this.btnRoomName = btnRoomName;
this.comerom = comerom;
this.action = action;
}
public void Show()
{
//初始化UI
this.InitTop();
this.InitMiddle();
//初始化事件
this.EventListener();
//读取数据
this.ReadData();
}
///
/// 初始化头部界面
///
private void InitTop()
{
this.BackgroundColor = MusicColor.ViewColor;
this.topView = new TopView();
this.topView.setBtn.Visible = true;
this.topView.topNameBtn.Text = this.device.name;
this.AddChidren(topView.TopFLayoutView());
}
///
/// 初始化中部界面
///
private void InitMiddle()
{
vv = new VerticalScrolViewLayout()
{
Y = topView.fLayout.Bottom,
Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
};
this.AddChidren(vv);
//进来默认播放器界面
//this.SwitchUI(IntType.Player);
}
///
/// 注册事件
///
private void EventListener()
{
//返回
this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
{
//清空所有缓存数据
AksCommonMethod.Current.ClearData();
this.RemoveFromParent();
};
//设置
this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
{
CommonMethod.Current.MainThread(() =>
{
//调用秀绕的界面
var infoView = new UI.FunctionBaseInfoSetPage(this.device, () =>
{
if (this.btnDeviceName == null || this.btnRoomName == null || this.device == null)
{
return;
}
////刷新显示
this.btnDeviceName.Text = this.device.name;
this.btnRoomName.Text = this.device.GetRoomListName();
//this.btnCurrDeviceName.Text = this.device.name;
//this.btnCurrDeviceRoom.Text = this.device.GetRoomListName();
//this.CalculatedPosition();//重新计算宽度
});
infoView.actionDel += () =>
{
//解绑设备后
this.RemoveFromParent();
this.action?.Invoke();
};
MainPage.BasePageView.AddChidren(infoView);
infoView.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
});
};
}
///
/// 初始数据
///
private void ReadData()
{
CommonMethod.Current.Loading.Start();
CommonMethod.Current.SunThread(() =>
{
try
{
this.remoteControlList = SendMethod.Current.GetRemoteControlLits(this.device.deviceId);
this.sequencerList = SendMethod.Current.GetSequencerLits(this.device.deviceId);
//TestData(this.remoteControlList);
}
catch { }
finally
{
CommonMethod.Current.MainThread(() =>
{
CommonMethod.Current.Loading.Hide();
if (this.remoteControlList.Count > 0)
{
if (this.isExistType(IntType.Player))
{
//有播放类型遥控器优先显示
this.SwitchUI(IntType.Player);
}
else
{
//默认取第一位
this.indexValue = 0;
var type = (IntType)this.remoteControlList[this.indexValue].type;
this.SwitchUI(type);
}
}
});
}
});
}
///
/// 界面显示(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
///
private void SwitchUI(IntType type)
{
//if (this.currnetIntType == type)
//{
// //去掉判断类型,因为可能存在多个同类型
// return;
//}
if (IntType.none == type)
{
return;
}
if (this.vv == null)
{
return;
}
this.vv.RemoveAll();
var remoteContro = this.remoteControlList[this.indexValue];
switch (type)
{
case IntType.Player:
{
MusicPage musicPage = new MusicPage(remoteContro, this.sequencerList);
this.vv.AddChidren(musicPage);
musicPage.Show();
musicPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.HiFi:
{
GfPage gfPage = new GfPage(remoteContro, this.sequencerList);
this.vv.AddChidren(gfPage);
gfPage.Show();
gfPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.TV:
{
TvPage tvPage = new TvPage(remoteContro, this.sequencerList);
this.vv.AddChidren(tvPage);
tvPage.Show();
tvPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.STB:
{
JdhPage jdhPage = new JdhPage(remoteContro, this.sequencerList);
this.vv.AddChidren(jdhPage);
jdhPage.Show();
jdhPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.Projector:
{
TyyPage tyyPage = new TyyPage(remoteContro, this.sequencerList);
this.vv.AddChidren(tyyPage);
tyyPage.Show();
tyyPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.Control:
{
YkqPage ykqPage = new YkqPage(remoteContro, this.sequencerList);
this.vv.AddChidren(ykqPage);
ykqPage.Show();
ykqPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
}
}
///
/// 界面切换(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
///
private void SelectedType()
{
var deviceTypeList = GetRemoteControlList();
///之前的状态文本
string ccurrnetDeviceStr = "";
if (indexValue != -1 && indexValue < deviceTypeList.Count)
{
ccurrnetDeviceStr = deviceTypeList[indexValue].name;
}
PublicInterface conditionView = new PublicInterface();
conditionView.SingleSelectionShow(this, deviceTypeList, "设备选择", ccurrnetDeviceStr
, (index) =>
{
if (this.indexValue == index)
{
//同一个设备不处理;
return;
}
var remoteControl = deviceTypeList[index];
this.indexValue = index;
this.currnetIntType = (IntType)remoteControl.type;
this.SwitchUI((IntType)remoteControl.type);
});
}
public enum IntType
{
///
/// 没有
///
none = 0,
///
/// 播放器
///
Player = 1,
///
/// 功放
///
HiFi = 2,
///
/// 电视
///
TV = 3,
///
/// 机顶盒
///
STB = 4,
///
/// 投影仪
///
Projector = 5,
///
/// 万能遥控器
///
Control = 6,
}
///
/// 获取遥控器列表
///
///
private List GetRemoteControlList()
{
if (this.remoteControlList == null || this.remoteControlList.Count == 0)
{
return new List();
}
return this.remoteControlList;
}
///
/// 是否存在类型
///
/// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
///
private bool isExistType(IntType type)
{
var remoteControls = this.GetRemoteControlList();
for (int i = 0; i < remoteControls.Count; i++)
{
var re = remoteControls[i];
if ((IntType)re.type == type)
{
this.indexValue = i;
return true;
}
}
return false;
}
private void TestData(List list)
{
list.Add(new RemoteControlEntity { deviceId = "33331", rcId = "1", type = 1, name = "播放器" });
list.Add(new RemoteControlEntity { deviceId = "33332", rcId = "2", type = 2, name = "功放" });
list.Add(new RemoteControlEntity { deviceId = "33333", rcId = "3", type = 3, name = "电视" });
list.Add(new RemoteControlEntity { deviceId = "33334", rcId = "4", type = 4, name = "机顶盒" });
list.Add(new RemoteControlEntity { deviceId = "33335", rcId = "5", type = 5, name = "投影仪" });
list.Add(new RemoteControlEntity { deviceId = "33336", rcId = "6", type = 6, name = "万能遥控器" });
}
}
}