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
|
{
|
|
/// <summary>
|
/// 列表控件
|
/// </summary>
|
private VerticalListControl listView = null;
|
private FrameLayout contentLayout = null;
|
public int CurrentIndex = 0;
|
private MostRightIconControl btnAddDeviceIcon = null;
|
/// <summary>
|
/// 智能音箱数据
|
/// </summary>
|
private static SmartSoundInfo.SoundInfo mSoundInfo = null;
|
|
public SmartSoundControlForm(SmartSoundInfo.SoundInfo soundInfo)
|
{
|
mSoundInfo = soundInfo;
|
}
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
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<SmartSoundDataInfo>(json);
|
if (dataInfo != null)
|
{
|
if (dataInfo.StateCode == "SUCCESS")
|
{
|
SmartSound.getInstantiate().LayerList = dataInfo.ResponseData.LayerList;
|
SmartSound.getInstantiate().TokenID = mSoundInfo.Id;
|
SmartSound.getInstantiate().UserID = mSoundInfo.UserID;
|
}
|
}
|
|
HdlThreadLogic.Current.RunMainInThread(() =>
|
{
|
if (SmartSound.getInstantiate().LayerList == null || SmartSound.getInstantiate().LayerList.Count < 1)
|
{
|
this.CloseProgressBar();
|
return;
|
}
|
|
contentLayout = new FrameLayout();
|
this.bodyFrameLayout.AddChidren(contentLayout);
|
contentLayout.RemoveAll();
|
|
var pullLayout = new MyPullControl(this, SmartSound.getInstantiate().LayerList);
|
contentLayout.AddChidren(pullLayout);
|
pullLayout.InitControl();
|
|
LoadAllRoomListView();
|
|
//无数据的时候要做一个提示
|
{
|
bool bol = false;
|
for (int i = 0; i < SmartSound.getInstantiate().LayerList.Count; i++)
|
{
|
if (SmartSound.getInstantiate().LayerList[i].RoomList.Count > 0)
|
{
|
bol = true;
|
break;
|
}
|
}
|
|
if (!bol)
|
{
|
pullLayout.Visible = false;
|
this.ShowNotDataImage(this.bodyFrameLayout, new string[] { "还没有控制内容哦,", "点击\"+\"添加" });
|
}
|
}
|
|
this.CloseProgressBar();
|
|
});
|
});
|
}
|
|
/// <summary>
|
/// 加载房间列表
|
/// </summary>
|
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);
|
}
|
|
listView.RemoveAll();
|
|
SmartSound.Layer layer = SmartSound.getInstantiate().LayerList[CurrentIndex];
|
|
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);
|
};
|
}
|
}
|
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<string> GetData()
|
{
|
// 从服务器获取数据
|
string url = string.Format("https://developer.hdlcontrol.com/zigbeespeakerservice/BatchEdit?Platform&UserID={0}&TokenID={1}", mSoundInfo.UserID, mSoundInfo.Id);
|
return await MyHttpWebResponse.GetWebRequest(url);
|
}
|
|
private async Task<string> 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 ■ 自定义楼层选择控件_____________________
|
|
/// <summary>
|
/// 房间列表行
|
/// </summary>
|
private class MyPullControl : FrameRowControl
|
{
|
|
private SmartSoundControlForm smartSoundControlData = null;
|
private List<SmartSound.Layer> Layers = null;
|
/// <summary>
|
/// 房间列表
|
/// </summary>
|
private NormalViewControl btnName = null;
|
|
/// <summary>
|
/// 房间列表行
|
/// </summary>
|
public MyPullControl(SmartSoundControlForm _SmartSoundDataAdd, List<SmartSound.Layer> _layers)
|
{
|
this.smartSoundControlData = _SmartSoundDataAdd;
|
this.Layers = _layers;
|
this.UseClickStatu = false;
|
this.BackgroundColor = UserCenterColor.Current.White;
|
this.Height = Application.GetRealHeight(173);
|
}
|
|
/// <summary>
|
/// 初始化控件
|
/// </summary>
|
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();
|
};
|
|
var layout = this.AddMostRightView(Layers[smartSoundControlData.CurrentIndex].LayerName, 300, false);
|
layout.Name = "pullLayout";
|
layout.ButtonClickEvent += (sender, e) =>
|
{
|
ShowPullList();
|
};
|
|
if (SmartSound.getInstantiate().LayerList.Count < 2)
|
{
|
right_icon.Visible = false;
|
layout.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++)
|
{
|
//创建楼层
|
pull_frame.AddRowMenu(Layers[i].LayerName, "Item/CreatFloor.png", "Item/CreatFloorSelected.png", () =>
|
{
|
smartSoundControlData.CurrentIndex = i;
|
smartSoundControlData.LoadAllRoomListView();
|
});
|
}
|
}
|
}
|
#endregion
|
|
#region ■ 自定义智能音箱控件_____________________
|
|
/// <summary>
|
/// 语音控制房间行
|
/// </summary>
|
private class RoomRowLayout : RowLayoutControl
|
{
|
|
/// <summary>
|
/// 房间名字
|
/// </summary>
|
private NormalViewControl btnName = null;
|
|
/// <summary>
|
/// 删除按钮
|
/// </summary>
|
public NormalViewControl btnDelect = null;
|
|
private SmartSoundControlForm smartSoundControlForm;
|
private SmartSound.Room room;
|
|
/// <summary>
|
/// 自定音箱关控件
|
/// </summary>
|
public RoomRowLayout(SmartSoundControlForm _smartSoundControlForm, SmartSound.Room _room)
|
{
|
this.smartSoundControlForm = _smartSoundControlForm;
|
this.room = _room;
|
this.BackgroundColor = UserCenterColor.Current.White;
|
this.Height = Application.GetRealHeight(173);
|
}
|
|
/// <summary>
|
/// 初始化内部控件
|
/// </summary>
|
public void InitControl()
|
{
|
//设备
|
frameTable.AddLeftCaption(this.room.RoomName, 800);
|
frameTable.AddRightArrow();
|
//底线
|
frameTable.AddBottomLine();
|
|
btnDelect = base.AddDeleteControl();
|
btnDelect.Text = "删除";
|
btnDelect.AddTag("obj", room);
|
}
|
}
|
|
#endregion
|
}
|
}
|