1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using ZigBee.Device;
 
namespace Shared.Phone.UserCenter.Device
{
    /// <summary>
    /// 配置设备列表的画面
    /// </summary>
    public class ConfigureDeviceListForm : UserCenterCommonForm
    {
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalScrolViewLayout listview = null;
        /// <summary>
        /// 新上报的设备(注意:这个东西是个地址引用)
        /// </summary>
        private List<CommonDevice> listNewDevice = null;
 
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="listdevices">设备列表</param>
        public void ShowForm(List<CommonDevice> listdevices)
        {
            this.listNewDevice = listdevices;
 
            //设置标题信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uConfigureDevice));
 
            //初始化中部控件
            this.InitMiddleFrame();
 
            //添加所有的行
            this.AddAllRowLayout();
        }
 
        /// <summary>
        /// 初始化中部控件
        /// </summary>
        private void InitMiddleFrame()
        {
            //输出回路列表
            var btnText = new TitleViewControl();
            btnText.Y = Application.GetRealHeight(40);
            btnText.TextColor = UserCenterColor.Current.TextGrayColor;
            btnText.TextID = R.MyInternationalizationString.uOutputCircuitList;
            bodyFrameLayout.AddChidren(btnText);
 
            listview = new VerticalScrolViewLayout();
            listview.Y = btnText.Bottom;
            listview.Height = bodyFrameLayout.Height - btnText.Bottom;
            bodyFrameLayout.AddChidren(listview);
        }
 
        /// <summary>
        /// 添加所有的行
        /// </summary>
        private void AddAllRowLayout()
        {
            foreach (CommonDevice device in this.listNewDevice)
            {
                this.AddRowLayout(device);
            }
        }
 
        /// <summary>
        /// 添加行
        /// </summary>
        /// <param name="device">Device.</param>
        private void AddRowLayout(CommonDevice device)
        {
            //设备控件
            var deviceRow = new DeviceRoomViewRow(listview, device);
            //向右图标
            deviceRow.AddRightIconControl();
 
            //检测设备是否拥有测试的功能
            if (Common.LocalDevice.Current.DeviceIsCanTest(device) == true)
            {
                //测试
                var btnTest = new RowSecondRightIconView();
                btnTest.UnSelectedImagePath = "Item/Test.png";
                btnTest.SelectedImagePath = "Item/TestSelected.png";
                deviceRow.AddChidren(btnTest, ChidrenBindMode.NotBind);
                btnTest.MouseUpEventHandler += (sender, e) =>
                {
                    //测试
                    Common.LocalDevice.Current.SetTestCommand(device);
                };
            }
 
            deviceRow.MouseUpEvent += (sender, e) =>
            {
                var form = new DeviceEpointInfoForm();
                this.AddForm(form, device);
                form.ActionNameChangedEvent += (deviceName, listName) =>
                {
                    //变更房间
                    Common.Room.CurrentRoom.ChangedRoom(device, listName);
                    //刷新全部信息信息
                    deviceRow.listRoom = listName;
                    deviceRow.RefreshControlInfo(device);
                };
            };
        }
 
        /// <summary>
        /// 画面关闭
        /// </summary>
        /// <param name="isCloseForm">是否关闭界面,false的时候,只会调用关闭函数里面的附加功能</param>
        public override void CloseForm(bool isCloseForm = true)
        {
            //画面关闭时,不管之后怎么处理,先添加到主界面的列表及缓存中
            this.LoadFormMethodByName("DeviceManagementMainForm", "AddDeviceToFormTable", listNewDevice);
 
            base.CloseForm(isCloseForm);
        }
    }
}