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
|
{
|
/// <summary>
|
/// 埃克斯主界面
|
/// </summary>
|
public class AksPage : FrameLayout
|
{
|
#region ■ 变量声明___________________________
|
/// <summary>
|
/// 遥控器列表
|
/// </summary>
|
private List<RemoteControlEntity> remoteControlList;
|
|
/// 时序器列表
|
/// </summary>
|
private List<SequencerEntity> sequencerList;
|
/// <summary>
|
/// 设备
|
/// </summary>
|
private Function device;
|
/// <summary>
|
/// 上一级界面的设备名字控件
|
/// </summary>
|
private Button btnDeviceName;
|
/// <summary>
|
/// 上一级界面的房间名字控件
|
/// </summary>
|
private Button btnRoomName;
|
/// <summary>
|
/// 头部布局
|
/// </summary>
|
private TopView topView;
|
/// <summary>
|
/// 当前设备名称
|
/// </summary>
|
private Button btnCurrDeviceName;
|
/// <summary>
|
/// 区域
|
/// </summary>
|
private Button btnCurrDeviceRoom;
|
|
/// <summary>
|
/// 表示来自那个界面
|
/// </summary>
|
private CommonMethod.Comerom comerom;
|
/// <summary>
|
/// 删除设备后需要更新界面的回调
|
/// </summary>
|
public Action action;
|
/// <summary>
|
/// 记录当前设备
|
/// </summary>
|
public IntType currnetIntType = IntType.none;
|
/// <summary>
|
/// 记录当前选择的索引值
|
/// </summary>
|
public int indexValue = -1;
|
|
|
|
public VerticalScrolViewLayout vv;
|
#endregion
|
public AksPage()
|
{
|
}
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="function">设备</param>
|
/// <param name="btnDeviceName">上一级界面的设备名字控件(注:不能传null,没有可以传new Button())</param>
|
/// <param name="btnRoomName">上一级界面的房间名字控件(注:不能传null,没有可以传new Button())</param>
|
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();
|
|
}
|
|
|
/// <summary>
|
/// 初始化头部界面
|
/// </summary>
|
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());
|
}
|
/// <summary>
|
/// 初始化中部界面
|
/// </summary>
|
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);
|
}
|
/// <summary>
|
/// 注册事件
|
/// </summary>
|
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;
|
});
|
};
|
|
|
}
|
/// <summary>
|
/// 初始数据
|
/// </summary>
|
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);
|
}
|
|
}
|
|
});
|
}
|
});
|
}
|
/// <summary>
|
/// 界面显示(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
|
/// </summary>
|
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;
|
|
}
|
|
}
|
/// <summary>
|
/// 界面切换(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)
|
/// </summary>
|
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
|
{
|
/// <summary>
|
/// 没有
|
/// </summary>
|
none = 0,
|
/// <summary>
|
/// 播放器
|
/// </summary>
|
Player = 1,
|
/// <summary>
|
/// 功放
|
/// </summary>
|
HiFi = 2,
|
/// <summary>
|
/// 电视
|
/// </summary>
|
TV = 3,
|
/// <summary>
|
/// 机顶盒
|
/// </summary>
|
STB = 4,
|
/// <summary>
|
/// 投影仪
|
/// </summary>
|
Projector = 5,
|
/// <summary>
|
/// 万能遥控器
|
/// </summary>
|
Control = 6,
|
}
|
|
/// <summary>
|
/// 获取遥控器列表
|
/// </summary>
|
/// <returns></returns>
|
private List<RemoteControlEntity> GetRemoteControlList()
|
{
|
if (this.remoteControlList == null || this.remoteControlList.Count == 0)
|
{
|
return new List<RemoteControlEntity>();
|
}
|
return this.remoteControlList;
|
}
|
|
/// <summary>
|
/// 是否存在类型
|
/// </summary>
|
/// <param name="type">(1 = 播放器,2 = 功放,3 = 电视,4 = 机顶盒,5 = 投影仪,6 = 万能遥控器)</param>
|
/// <returns></returns>
|
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<RemoteControlEntity> 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 = "万能遥控器" });
|
}
|
|
|
}
|
}
|