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;
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 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);
}
catch { }
finally
{
CommonMethod.Current.MainThread(() =>
{
CommonMethod.Current.Loading.Hide();
if (this.remoteControlList.Count > 0)
{
if (string.IsNullOrEmpty(this.GetValueString(IntType.Player)))
{
//默认取第一位
this.SwitchUI((IntType)this.remoteControlList[0].type);
}
else
{
//有播放类型遥控器优先显示
this.SwitchUI(IntType.Player);
}
}
});
}
});
}
///
/// 切换界面(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();
this.currnetIntType = type;
switch (type)
{
case IntType.Player:
{
MusicPage musicPage = new MusicPage(GetRemoteControl((int)IntType.Player),this.sequencerList);
this.vv.AddChidren(musicPage);
musicPage.Show();
musicPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.HiFi:
{
GfPage gfPage = new GfPage(GetRemoteControl((int)IntType.HiFi), this.sequencerList);
this.vv.AddChidren(gfPage);
gfPage.Show();
gfPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.TV:
{
TvPage tvPage = new TvPage(GetRemoteControl((int)IntType.TV), this.sequencerList);
this.vv.AddChidren(tvPage);
tvPage.Show();
tvPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.STB:
{
JdhPage jdhPage = new JdhPage(GetRemoteControl((int)IntType.STB), this.sequencerList);
this.vv.AddChidren(jdhPage);
jdhPage.Show();
jdhPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.Projector:
{
TyyPage tyyPage = new TyyPage(GetRemoteControl((int)IntType.Projector), this.sequencerList);
this.vv.AddChidren(tyyPage);
tyyPage.Show();
tyyPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
case IntType.Control:
{
YkqPage ykqPage = new YkqPage(GetRemoteControl((int)IntType.Control), this.sequencerList);
this.vv.AddChidren(ykqPage);
ykqPage.Show();
ykqPage.action += (deviceType) =>
{
SelectedType();
};
}
break;
}
}
///
/// 选中类型弹框(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
///
private void SelectedType()
{
var deviceTypeList = GetTypeDictionary().Values.ToList();
///之前的状态文本
string ccurrnetDeviceStr= this.GetValueString(this.currnetIntType);
PublicInterface conditionView = new PublicInterface();
conditionView.SingleSelectionShow(this, deviceTypeList, "设备选择", ccurrnetDeviceStr
, (valueStr) =>
{
//界面显示选中值
var intType = this.GetKeyIntType(valueStr);
this.SwitchUI(intType);
});
}
///
/// 查找遥控器
///
/// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
/// 不会为null
private RemoteControlEntity GetRemoteControl(int type)
{
if (this.remoteControlList == null || this.remoteControlList.Count == 0)
{
return new RemoteControlEntity();
}
var re = this.remoteControlList.Find((o) => o.type == type);
if (re == null)
{
re = new RemoteControlEntity();
}
//re.deviceId = this.device.deviceId;
return re;
}
public enum IntType
{
///
/// 没有
///
none = 0,
///
/// 播放器
///
Player = 1,
///
/// 功放
///
HiFi = 2,
///
/// 电视
///
TV = 3,
///
/// 机顶盒
///
STB = 4,
///
/// 投影仪
///
Projector = 5,
///
/// 万能遥控器
///
Control = 6,
}
///
/// 初始化字典
///
///
private Dictionary GetTypeDictionary()
{
if (this.remoteControlList == null || this.remoteControlList.Count == 0)
{
return new Dictionary();
}
var dic = new Dictionary();
foreach (var o in this.remoteControlList)
{
switch (o.type)
{
case (int)IntType.Player:
{
dic.Add(IntType.Player, Language.StringByID(StringId.bofangqi));
}
break;
case (int)IntType.HiFi:
{
dic.Add(IntType.HiFi, Language.StringByID(StringId.gongfan));
}
break;
case (int)IntType.TV:
{
dic.Add(IntType.TV, Language.StringByID(StringId.dianshi));
}
break;
case (int)IntType.STB:
{
dic.Add(IntType.STB, Language.StringByID(StringId.jidinghe));
}
break;
case (int)IntType.Projector:
{
dic.Add(IntType.Projector, Language.StringByID(StringId.touyingyi));
}
break;
case (int)IntType.Control:
{
dic.Add(IntType.Control, Language.StringByID(StringId.xuniyaokongqi));
}
break;
}
}
return dic;
}
///
/// 获取设备类型
///
/// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
///
private IntType GetKeyIntType(string value)
{
var dic = this.GetTypeDictionary();
foreach (var d in dic)
{
if (d.Value == value)
{
return d.Key;
}
}
return IntType.none;
}
///
/// 获取设备名称
///
/// (1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
///
private string GetValueString(IntType key)
{
var dic = this.GetTypeDictionary();
foreach (var d in dic)
{
if (d.Key == key)
{
return d.Value;
}
}
return "";
}
}
}