using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Shared.Common;
using Shared.Phone.UserCenter.SmartSound.Forms;
using Shared.Phone.UserCenter.SmartSound.Util;
using Shared.Phone.UserCenter.SmartSound.Widget;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.SmartSound
{
public class SmartSoundControlForm : EditorCommonForm
{
///
/// 列表控件
///
private VerticalListControl listView = null;
private FrameLayout contentLayout = null;
public int CurrentIndex = 0;
private MostRightIconControl btnAddDeviceIcon = null;
///
/// 当前楼层的名称
///
private static NormalViewControl pullLayoutText = null;
///
/// 智能音箱数据
///
private static SmartSoundInfo.SoundInfo mSoundInfo = null;
///
/// 楼层控件
///
private MyPullControl myPullControl;
public SmartSoundControlForm(SmartSoundInfo.SoundInfo soundInfo)
{
mSoundInfo = soundInfo;
}
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
public void ShowForm()
{
//设置标题信息
base.SetTitleText("语音控制");
//右上添加按钮
if (btnAddDeviceIcon == null)
{
btnAddDeviceIcon = new MostRightIconControl(69, 69);
btnAddDeviceIcon.UnSelectedImagePath = "Item/Add.png";
topFrameLayout.AddChidren(btnAddDeviceIcon);
btnAddDeviceIcon.InitControl();
btnAddDeviceIcon.ButtonClickEvent += (sender, e) =>
{
var smartSoundDataAdd = new SmartSoundControlContentForm(mSoundInfo);
smartSoundDataAdd.AddForm();
};
}
//初始化中部控件
this.InitMiddleFrame();
}
private void InitMiddleFrame()
{
this.ClearBodyFrame();
HdlThreadLogic.Current.RunThread(async () =>
{
this.ShowProgressBar();
string json = await GetData();//获取数据
SmartSoundDataInfo dataInfo = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
if (dataInfo != null)
{
if (dataInfo.StateCode == "SUCCESS")
{
SmartSound.getInstantiate().LayerList = dataInfo.ResponseData.LayerList;
SmartSound.getInstantiate().TokenID = mSoundInfo.Id;
SmartSound.getInstantiate().UserID = mSoundInfo.UserID;
SmartSound.getInstantiate().HomeID = mSoundInfo.HomeID;
}
}
HdlThreadLogic.Current.RunMainInThread(() =>
{
if (SmartSound.getInstantiate().LayerList == null || SmartSound.getInstantiate().LayerList.Count < 1)
{
this.CloseProgressBar();
this.ShowNotDataImage(this.bodyFrameLayout, new string[] { "还没有控制内容哦,", "点击\"+\"添加" });
return;
}
contentLayout = new FrameLayout();
this.bodyFrameLayout.AddChidren(contentLayout);
contentLayout.RemoveAll();
myPullControl = new MyPullControl(this, SmartSound.getInstantiate().LayerList);
contentLayout.AddChidren(myPullControl);
myPullControl.InitControl();
LoadAllRoomListView();
this.CloseProgressBar();
});
});
}
///
/// 判断是否有数据
///
///
private bool HaveData()
{
bool bol = false;
for (int i = 0; i < SmartSound.getInstantiate().LayerList.Count; i++)
{
if (SmartSound.getInstantiate().LayerList[i].RoomList.Count > 0)
{
bol = true;
break;
}
}
return bol;
}
///
/// 加载房间列表
///
private void LoadAllRoomListView()
{
try
{
if (SmartSound.getInstantiate().LayerList == null || SmartSound.getInstantiate().LayerList.Count < 1)
return;
// 加载当前楼层的所有房间 ListView
if (listView == null)
{
listView = new VerticalListControl();
contentLayout.AddChidren(listView);
listView.Y = Application.GetRealHeight(173);
listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(173);
}
else if (listView.Parent == null)
{
listView = new VerticalListControl();
contentLayout.AddChidren(listView);
listView.Y = Application.GetRealHeight(173);
listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(173);
}
SmartSound.Layer layer = SmartSound.getInstantiate().LayerList[CurrentIndex];
pullLayoutText.Text = layer.LayerName;
listView.RemoveAll();
foreach (SmartSound.Room room in layer.RoomList)
{
var roomRowLayout = new RoomRowLayout(this, room);
listView.AddChidren(roomRowLayout);
roomRowLayout.InitControl();
roomRowLayout.frameTable.ButtonClickEvent += (sender, e) =>
{
// 点击房间,进入选择设备界面
var deviceChange = new SmartSoundContentForDeviceChange(room);
deviceChange.AddForm();
};
roomRowLayout.btnDelect.ButtonClickEvent += (sender, e) =>
{
var delBtn = sender as NormalViewControl;
DelectRoom(delBtn);
};
}
if (!HaveData())
{
SmartSound.getInstantiate().LayerList.Clear();
myPullControl.Visible = false;
this.ShowNotDataImage(this.bodyFrameLayout, new string[] { "还没有控制内容哦,", "点击\"+\"添加" });
}
}
catch (Exception e)
{
string error = e.Message;
}
}
private void DelectRoom(NormalViewControl delBtn)
{
this.ShowMassage(ShowMsgType.Confirm, "确认删除该房间的控制内容?", async () =>
{
HdlThreadLogic.Current.RunThread(async () =>
{
this.ShowProgressBar("正在删除数据....");
//删除房间
var tag = (SmartSound.Room)delBtn.GetTagByKey("obj");
if (SmartSound.getInstantiate().LayerList == null)
return;
for (int i = 0; i < SmartSound.getInstantiate().LayerList.Count; i++)
{
SmartSound.Layer _layer = SmartSound.getInstantiate().LayerList[i];
for (int j = 0; j < _layer.RoomList.Count; j++)
{
SmartSound.Room _room = _layer.RoomList[j];
if (_room.RoomName == tag.RoomName)
{
_layer.RoomList.Remove(_room);
}
}
}
// 重新上传数据
string json = await postBatchEdit();
HdlThreadLogic.Current.RunMainInThread(() =>
{
//this.InitMiddleFrame();
this.LoadAllRoomListView();
});
this.CloseProgressBar();
});
}, Language.StringByID(R.MyInternationalizationString.OkMsg));
}
private async Task GetData()
{
// 从服务器获取数据
string url = string.Format("https://developer.hdlcontrol.com/zigbeespeakerservice/BatchEdit?Platform&UserID={0}&TokenID={1}&HomeID={2}", mSoundInfo.UserID, mSoundInfo.Id,mSoundInfo.HomeID);
return await MyHttpWebResponse.GetWebRequest(url);
}
private async Task postBatchEdit()
{
// 提交数据至服务器
string url = "https://developer.hdlcontrol.com/zigbeespeakerservice/BatchEdit";
string json = Newtonsoft.Json.JsonConvert.SerializeObject(SmartSound.getInstantiate());
string response_str = MyHttpWebResponse.PostWebRequest(url, json, Encoding.UTF8);
return response_str;
}
public override int FormActionAgainEvent()
{
ShowForm();
return base.FormActionAgainEvent();
}
#region ■ 自定义楼层选择控件_____________________
///
/// 房间列表行
///
private class MyPullControl : FrameRowControl
{
private SmartSoundControlForm smartSoundControlData = null;
private List Layers = null;
///
/// 房间列表
///
private NormalViewControl btnName = null;
///
/// 房间列表行
///
public MyPullControl(SmartSoundControlForm _SmartSoundDataAdd, List _layers)
{
this.smartSoundControlData = _SmartSoundDataAdd;
this.Layers = _layers;
this.UseClickStatu = false;
this.BackgroundColor = UserCenterColor.Current.White;
this.Height = Application.GetRealHeight(173);
}
///
/// 初始化控件
///
public void InitControl()
{
try
{
//显示文本
btnName = this.AddLeftCaption(string.Empty, 700);
btnName.Height = Application.GetRealHeight(60);
btnName.TextSize = 17;
btnName.Y = Application.GetRealHeight(57);
btnName.Text = "房间列表";
var right_icon = this.AddRightArrow();
right_icon.SelectedImagePath = "SmartSound/PullDown.png";
right_icon.UnSelectedImagePath = "SmartSound/PullDown.png";
right_icon.ButtonClickEvent += (sender, e) =>
{
ShowPullList();
};
pullLayoutText = this.AddMostRightView(Layers[smartSoundControlData.CurrentIndex].LayerName, 300, false);
pullLayoutText.Name = "pullLayout";
pullLayoutText.ButtonClickEvent += (sender, e) =>
{
ShowPullList();
};
pullLayoutText.Text = Layers[smartSoundControlData.CurrentIndex].LayerName;
if (SmartSound.getInstantiate().LayerList.Count < 2)
{
right_icon.Visible = false;
pullLayoutText.Visible = false;
}
}
catch(Exception e)
{
string error = e.Message;
}
}
private void ShowPullList()
{
//房间列表行{房间列表 textView,楼层下拉窗}
//显示房间{带选择框的;当选中了房间后需要在底部弹出确认按钮,点击确认跳转到新的界面}
var pull_frame = new TopRightMenuControl(Layers.Count, 2);
pull_frame.Y = this.Height;
for (int i = 0; i < Layers.Count; i++)
{
int index = i;
//创建楼层
pull_frame.AddRowMenu(Layers[i].LayerName, "Item/CreatFloor.png", "Item/CreatFloorSelected.png", () =>
{
smartSoundControlData.CurrentIndex = index;
smartSoundControlData.LoadAllRoomListView();
});
}
}
}
#endregion
#region ■ 自定义智能音箱控件_____________________
///
/// 语音控制房间行
///
private class RoomRowLayout : RowLayoutControl
{
///
/// 房间名字
///
private NormalViewControl btnName = null;
///
/// 删除按钮
///
public NormalViewControl btnDelect = null;
private SmartSoundControlForm smartSoundControlForm;
private SmartSound.Room room;
///
/// 自定音箱关控件
///
public RoomRowLayout(SmartSoundControlForm _smartSoundControlForm, SmartSound.Room _room)
{
this.smartSoundControlForm = _smartSoundControlForm;
this.room = _room;
this.BackgroundColor = UserCenterColor.Current.White;
this.Height = Application.GetRealHeight(173);
}
///
/// 初始化内部控件
///
public void InitControl()
{
//设备
frameTable.AddLeftCaption(this.room.RoomName, 800);
frameTable.AddRightArrow();
//底线
frameTable.AddBottomLine();
btnDelect = base.AddDeleteControl();
btnDelect.Text = "删除";
btnDelect.AddTag("obj", room);
}
}
#endregion
}
}