using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Shared.Phone.UserCenter.SmartSound.Util;
namespace Shared.Phone.UserCenter.SmartSound.Forms
{
public class SmartSoundContentForDeviceChange : EditorCommonForm
{
///
/// 当前选中的房间
///
private SmartSound.Room CurrentRoom = null;
private FrameLayout ContentLayout = null;
private FrameLayout DeviceListViewFrameLayout = null;
///
/// 场景 listView
///
private VerticalListControl SceneListView = null;
///
/// 设备 listView
///
private VerticalListControl DeviceListView = null;
///
/// 没有数据的时候,提示用
///
private FrameLayout TipLayout = null;
private List TabList = new List()
{
Language.StringByID(R.MyInternationalizationString.uLight),
Language.StringByID(R.MyInternationalizationString.uDeviceBelongId100),
Language.StringByID(R.MyInternationalizationString.AC)
};
private int CurrentSelectIndex = 0;
private int imageWith = 683;
private int imageHeight = 392;
///
/// 选择房间中的设备
///
/// 当前房间
public SmartSoundContentForDeviceChange(SmartSound.Room _room)
{
this.CurrentRoom = _room;
}
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
public void ShowForm()
{
//设置标题信息
base.SetTitleText(CurrentRoom.RoomName);
//初始化中部控件
this.InitMiddleFrame();
}
private void InitMiddleFrame()
{
//1.场景、功能导航条
var switchContr = new SceneFunctionSwitchControl();
this.bodyFrameLayout.AddChidren(switchContr);
switchContr.Gravity = Gravity.CenterVertical;
switchContr.Width = Application.GetRealWidth(650);
switchContr.Y = Application.GetRealHeight(40);
ContentLayout = new FrameLayout();
this.bodyFrameLayout.AddChidren(ContentLayout);
ContentLayout.Height = this.bodyFrameLayout.Height - switchContr.Height - Application.GetRealHeight(40);
ContentLayout.Y = switchContr.Height + Application.GetRealHeight(40);
var listTitle = new List();
listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction));
//设置初始值
switchContr.SetDefultIndex(0);
//选择事件
switchContr.SelectTabEvent += (selectIndex) =>
{
//刷新bodyView
if (selectIndex == 0)
{
LoadSceneView();
}
else
{
LoadFunction();
}
};
//开始初始化
switchContr.InitControl(listTitle);
}
///
/// 加载场景界面
///
private void LoadSceneView()
{
try
{
//3.设备列表 ListView
ContentLayout.RemoveAll();
var tipLayout = new FrameLayout();
ContentLayout.AddChidren(tipLayout);
tipLayout.Visible = false;
ShowNoFunctionTip(tipLayout);
SceneListView = new VerticalListControl();
ContentLayout.AddChidren(SceneListView);
SceneListView.Y = Application.GetRealHeight(40);
SceneListView.RemoveAll();
for (int i = 0; i < CurrentRoom.SceneList.Count; i++)
{
SmartSound.Scene scene = CurrentRoom.SceneList[i];
var roomRowLayout = new SceneRowLayout(this, scene, i);
SceneListView.AddChidren(roomRowLayout);
roomRowLayout.InitControl();
}
if (SceneListView.ChildrenCount > 5)
{
TextView textView = new TextView();
textView.Height = Application.GetRealHeight(127 * 3);
SceneListView.AddChidren(textView);
}
if (SceneListView.ChildrenCount == 0)
{
tipLayout.Visible = true;
}
else
{
tipLayout.Visible = false;
}
}
catch (Exception ex)
{
string eoor = ex.Message;
}
}
private void LoadFunction()
{
try
{
ContentLayout.RemoveAll();
FrameLayout tab_layout = new FrameLayout();
ContentLayout.AddChidren(tab_layout);
tab_layout.Height = Application.GetRealHeight(170);
tab_layout.Y = 0;
//添加 ListView 提示
TipLayout = new FrameLayout();
ContentLayout.AddChidren(TipLayout);
TipLayout.Visible = false;
TipLayout.Y = tab_layout.Height;
ShowNoFunctionTip(TipLayout);
Buttons.Clear();
//添加功能项
for (int i = 0; i < TabList.Count; i++)
{
Button button = new Button();
tab_layout.AddChidren(button);
button.Width = Application.GetRealWidth(250);
button.Height= Application.GetRealWidth(250);
button.Text = TabList[i];
button.X = HdlControlResourse.XXLeft / 2 + i * button.Width;
button.AddTag("Index", i);
Buttons.Add(button);
button.MouseUpEventHandler += (sender, e) =>
{
Button btn = sender as Button;
CurrentSelectIndex = (int)btn.GetTagByKey("Index");
RefreshButtonState();
RefreshFunctionListView();
};
}
//添加 ListView
DeviceListViewFrameLayout = new FrameLayout();
ContentLayout.AddChidren(DeviceListViewFrameLayout);
DeviceListViewFrameLayout.Y = tab_layout.Height;
DeviceListViewFrameLayout.Height = ContentLayout.Height - tab_layout.Height;
RefreshButtonState();
RefreshFunctionListView();
}
catch (Exception ex)
{
string error = ex.Message;
}
}
private void RefreshFunctionListView()
{
try
{
DeviceListViewFrameLayout.RemoveAll();
DeviceListView = new VerticalListControl();
DeviceListViewFrameLayout.AddChidren(DeviceListView);
DeviceListView.Height = DeviceListViewFrameLayout.Height;
DeviceListView.RemoveAll();
switch (CurrentSelectIndex)
{
case 0:// 灯光
{
int n = 0;
for (int i = 0; i < CurrentRoom.DeviceList.Count; i++)
{
SmartSound.Device device = CurrentRoom.DeviceList[i];
//灯光
if (device.DeviceType == 1 || device.DeviceType == 2 || device.DeviceType == 3)
{
var deviceRowLayout = new DeviceRowLayout(this, device, n);
DeviceListView.AddChidren(deviceRowLayout);
deviceRowLayout.InitControl();
n++;
}
}
}
break;
case 1: // 窗帘
{
int n = 0;
for (int i = 0; i < CurrentRoom.DeviceList.Count; i++)
{
SmartSound.Device device = CurrentRoom.DeviceList[i];
//
if (device.DeviceType == 4 || device.DeviceType == 5 || device.DeviceType == 6)
{
var deviceRowLayout = new DeviceRowLayout(this, device, n);
DeviceListView.AddChidren(deviceRowLayout);
deviceRowLayout.InitControl();
n++;
}
}
}
break;
case 2: // 空调
{
int n = 0;
for (int i = 0; i < CurrentRoom.DeviceList.Count; i++)
{
SmartSound.Device device = CurrentRoom.DeviceList[i];
//
if (device.DeviceType == 7)
{
var deviceRowLayout = new DeviceRowLayout(this, device, n);
DeviceListView.AddChidren(deviceRowLayout);
deviceRowLayout.InitControl();
n++;
}
}
}
break;
}
if (DeviceListView.ChildrenCount > 5)
{
TextView textView = new TextView();
textView.Height = Application.GetRealHeight(127 * 3);
DeviceListView.AddChidren(textView);
}
if (DeviceListView.ChildrenCount == 0)
{
TipLayout.Visible = true;
}
else
{
TipLayout.Visible = false;
}
}
catch (Exception e)
{
string error = e.Message;
}
}
///
/// 修改场景昵称
///
///
///
private void ShowSetNicknameDialog(SmartSound.Scene scene, SceneRowLayout sceneRowLayout)
{
//生成一个弹窗画面
var dialogForm = new DialogInputControl();
//编辑住宅
dialogForm.SetTitleText("自定义昵称");
//请输入住宅名称
dialogForm.SetTipText("请输入昵称");
dialogForm.Text = scene.NicksName;
//按下确认按钮
dialogForm.ComfirmClickEvent += (async (textValue) =>
{
scene.NicksName = textValue;
string remark = scene.SceneName;
if (scene.NicksName.Trim() != string.Empty)
{
remark += "(" + scene.NicksName + ")";
}
sceneRowLayout.btnCaption.Text = remark;
string json = await postBatchEdit();
//画面关闭
dialogForm.CloseDialog();
});
}
///
/// 修改设备昵称
///
///
///
private void ShowSetNicknameDialog(SmartSound.Device device, DeviceRowLayout deviceRowLayout)
{
//生成一个弹窗画面
var dialogForm = new DialogInputControl();
//编辑住宅
dialogForm.SetTitleText("自定义昵称");
//请输入住宅名称
dialogForm.SetTipText("请输入昵称");
dialogForm.Text = device.NicksName;
//按下确认按钮
dialogForm.ComfirmClickEvent += (async (textValue) =>
{
device.NicksName = textValue;
string remark = device.DeviceName;
if (device.NicksName.Trim() != string.Empty)
{
remark += "(" + device.NicksName + ")";
}
deviceRowLayout.btnCaption.Text = remark;
string json = await postBatchEdit();
//画面关闭
dialogForm.CloseDialog();
});
}
///
/// 场景删除
///
private void ShowSceneDelectDialog(SmartSound.Scene scene)
{
this.ShowMassage(ShowMsgType.Confirm, "确认删除该控制内容?", () =>
{
HdlThreadLogic.Current.RunThread(async () =>
{
this.ShowProgressBar();
CurrentRoom.SceneList.Remove(scene);
string json = await postBatchEdit();
HdlThreadLogic.Current.RunMainInThread(() =>
{
LoadSceneView();
this.CloseProgressBar();
});
});
}, Language.StringByID(R.MyInternationalizationString.OkMsg));
}
///
/// 设备删除
///
private void ShowDeviceDelectDialog(SmartSound.Device device)
{
this.ShowMassage(ShowMsgType.Confirm, "确认删除该控制内容?", () =>
{
HdlThreadLogic.Current.RunThread(async () =>
{
this.ShowProgressBar();
CurrentRoom.DeviceList.Remove(device);
string json = await postBatchEdit();
HdlThreadLogic.Current.RunMainInThread(() =>
{
RefreshFunctionListView();
this.CloseProgressBar();
});
});
}, Language.StringByID(R.MyInternationalizationString.OkMsg));
}
///
/// 提示没有功能
///
private void ShowNoFunctionTip(FrameLayout layout, string tip = "没有数据哦")
{
var noFunction = new Button()
{
Y = Application.GetRealHeight(320),
Width = Application.GetMinRealAverage(757),
Height = Application.GetMinRealAverage(435),
UnSelectedImagePath = "Item/NoFunction.png",
Gravity = Gravity.CenterHorizontal
};
layout.AddChidren(noFunction);
var noFunctionTip = new Button()
{
Y = noFunction.Bottom + Application.GetRealHeight(32),
Height = Application.GetRealHeight(200),
Width = Application.GetRealWidth(700),
Gravity = Gravity.CenterHorizontal,
Text = tip,
TextColor = UserCenterColor.Current.TextGrayColor1,
TextAlignment = TextAlignment.Center,
IsMoreLines = true
};
layout.AddChidren(noFunctionTip);
}
//为了方便更新状态,存起来
private List