xm
2020-04-16 6fa9d69da922c8049f5acfcbb9ce9fd26811024c
ZigbeeApp/Shared/Phone/Device/Logic/RoomAndDeviceView.cs
New file
@@ -0,0 +1,463 @@
using System;
using Shared.Common;
using Shared.R;
using Shared;
using ZigBee.Device;
using System.Collections.Generic;
namespace Shared.Phone.Device.Logic
{
    public class RoomAndDeviceView : FrameLayout
    {
        public RoomAndDeviceView()
        {
            Tag = "Logic";
        }
        Button roombjButton = new Button();
        Button roomTextButton = new Button();
        Button devicetypeButton = new Button();
        FrameLayout clickframeLayout = new FrameLayout();
        Button clickbutton = new Button();
        Button clicktextcolcrbutton = new Button();
        /// <summary>
        /// 判断字符
        /// </summary>
        public string IfType;
        /// <summary>
        /// 房间滑动的控件
        /// </summary>
        public HorizontalScrolViewLayout roomhorizontalScrol = new HorizontalScrolViewLayout
        {
            Width = Application.GetRealWidth(1080 - 58),
            Height = Application.GetRealHeight(200),
            X = Application.GetRealWidth(58),
            Y = Application.GetRealHeight(184),
        };
        /// <summary>
        /// 设备类型滑动的控件
        /// </summary>
        public HorizontalScrolViewLayout devicetypehorizontalScrol = new HorizontalScrolViewLayout
        {
            Width = Application.GetRealWidth(1080 - 58),
            Height = Application.GetRealHeight(280),
            Y = Application.GetRealHeight(184 + 200),
            BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
            X = Application.GetRealWidth(58),
            // Radius = (uint)Application.GetRealHeight(50),
        };
        /// <summary>
        /// 显示设备列表的控件
        /// </summary>
        public VerticalScrolViewLayout middle = new VerticalScrolViewLayout
        {
            X = Application.GetRealWidth(58),
            Y = Application.GetRealHeight(184 + 200 + 280 + 40),
            Height = Application.GetRealHeight(Method.H - 40 - 184 - 280 - 200),
            BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
        };
        public void Show(string Name)
        {
            #region  上面的布局代码
            UserView.HomePage.Instance.ScrollEnabled = false;//锁住左滑
            this.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
            TopView view = new TopView();
            this.AddChidren(view.TopRowView(true));
            view.toptitleNameBtn.Text = Name;
            view.clickBtn.MouseDownEventHandler += (sender, e) =>
            {
                UserView.HomePage.Instance.ScrollEnabled = true;//恢复左滑
                RemoveFromParent();
            };
            view.foolrnameBtn.Text = Config.Instance.Home.GetCurrentFloorName;
            if (Config.Instance.Home.FloorDics.Count < 2)
            {
                ///没有楼层或者只有一个楼层,默认不显示图标和文本;
                view.foolrnameBtn.Visible = false;
                view.dropdownBtn.Visible = false;
                view.foolrclickBtn.Visible = false;
            }
            if (Config.Instance.Home.FloorDics.Count == 0)
            {
                Config.Instance.Home.CurrentFloorId = "";
            }
            #endregion
            ///房间列表
            var roomlists = Method.GetRoomList(IfType, Config.Instance.Home.CurrentFloorId);
            if (roomlists.Count == 0)
            {
                //返回没有房间隐藏下面整块;
                devicetypehorizontalScrol.Height = 0;
                middle.Height = 0;
            }
            /// 设备类型列表
            var deviceTypeList = Method.GetDevice(IfType);
            this.AddChidren(roomhorizontalScrol);
            this.AddChidren(devicetypehorizontalScrol);
            this.AddChidren(middle);
            devicetypehorizontalScrol.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerBottomLeft);
            middle.SetCornerWithSameRadius(Application.GetRealHeight(50), HDLUtils.RectCornerTopLeft);
            ///楼层点击事件
            view.foolrclickBtn.MouseUpEventHandler += (sender, e) =>
                {
                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                    this.AddChidren(flMain);
                    flMain.MouseUpEventHandler += (sender2, e2) =>
                  {
                      flMain.RemoveFromParent();
                  };
                    var foolrbjicon = new FrameLayout
                    {
                        Width = Application.GetRealWidth(450),
                        Height = Application.GetRealHeight(780),
                        X = Application.GetRealWidth(1080 - 468 - 35),
                        Y = Application.GetRealHeight(184),
                        BackgroundImagePath = "Item/SelectFloor_Right.png",
                    };
                    flMain.AddChidren(foolrbjicon);
                    var btnfoolrtext = new Button
                    {
                        Width = Application.GetRealWidth(450),
                        Height = Application.GetRealHeight(150),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                        X = Application.GetRealWidth(80),
                        TextID = MyInternationalizationString.selecfoolr,
                        TextSize = 14,
                    };
                    foolrbjicon.AddChidren(btnfoolrtext);
                    var foolrbj = new VerticalScrolViewLayout
                    {
                        Width = Application.GetRealWidth(450),
                        Height = foolrbjicon.Height - btnfoolrtext.Height,
                        X = Application.GetRealWidth(80),
                        Y = btnfoolrtext.Bottom,
                    };
                    foolrbjicon.AddChidren(foolrbj);
                    foreach (var foolr in Config.Instance.Home.FloorDics)
                    {
                        var foolrRowLayout = new RowLayout
                        {
                            Height = Application.GetRealHeight(150),
                            LineColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
                        };
                        foolrbj.AddChidren(foolrRowLayout);
                        var btnfoolricon = new Button
                        {
                            Width = Application.GetMinRealAverage(81),
                            Height = Application.GetMinRealAverage(81),
                            UnSelectedImagePath = "Floor/Floor.png",
                            Gravity = Gravity.CenterVertical,
                        };
                        foolrRowLayout.AddChidren(btnfoolricon);
                        var btnfoolrname = new Button
                        {
                            Width = Application.GetRealWidth(250),
                            Height = Application.GetRealHeight(150),
                            Text = foolr.Value,
                            TextAlignment = TextAlignment.CenterLeft,
                            TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                            Tag = foolr.Key,
                            X = btnfoolricon.Right + Application.GetRealWidth(12),
                            TextSize = 14,
                        };
                        foolrRowLayout.AddChidren(btnfoolrname);
                        if (view.foolrnameBtn.Text == foolr.Value)
                        {
                            btnfoolricon.UnSelectedImagePath = "Floor/FloorSelected.png";
                            btnfoolrname.TextColor = ZigbeeColor.Current.LogicTextBlackColor;
                        }
                        EventHandler<MouseEventArgs> foolrnameclick = (sender13, e13) =>
                      {
                          roomhorizontalScrol.RemoveAll();
                          devicetypehorizontalScrol.RemoveAll();
                          middle.RemoveAll();
                          view.foolrnameBtn.Text = btnfoolrname.Text;
                          flMain.RemoveFromParent();
                          var list = Method.GetRoomList(IfType, btnfoolrname.Tag.ToString());
                          if (list.Count == 0)
                          {
                              devicetypehorizontalScrol.Height = 0;
                              middle.Height = 0;
                          }
                          else
                          {
                              devicetypehorizontalScrol.Height = Application.GetRealHeight(280);
                              middle.Height = Application.GetRealHeight(1920 - 40 - 184 - 280 - 200);
                          }
                          AllRoomView(list, deviceTypeList);
                      };
                        foolrRowLayout.MouseUpEventHandler += foolrnameclick;
                        btnfoolrname.MouseUpEventHandler += foolrnameclick;
                    }
                };
            AllRoomView(roomlists, deviceTypeList);
        }
        /// <summary>
        /// 加载所有房间的视图方法
        /// </summary>
        void AllRoomView(List<Common.Room> roomlist, List<DeviceType> deviceTypeList)
        {
            for (int i = 0; i < roomlist.Count; i++)
            {
                var room = roomlist[i];
                var fra = new FrameLayout
                {
                    Height = Application.GetRealHeight(200),
                    Width = Application.GetRealWidth(255),
                };
                roomhorizontalScrol.AddChidren(fra);
                var roombjBtn = new Button
                {
                    Height = Application.GetRealHeight(158),
                    Width = Application.GetRealWidth(255),
                    UnSelectedImagePath = "ZigeeLogic/iconBackgroundColor.png",
                    SelectedImagePath = "ZigeeLogic/iconSelectedBackgroundColor.png",
                    Y = Application.GetRealHeight(21),
                };
                fra.AddChidren(roombjBtn);
                var roomnameBtn = new Button
                {
                    Height = Application.GetRealHeight(152 - 26 - 20),
                    Width = Application.GetRealWidth(255 - 20 - 50),
                    Text = room.Name,
                    TextColor = ZigbeeColor.Current.LogicBtnCancelColor,
                    SelectedTextColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
                    Y = Application.GetRealHeight(21 + 13 + 10),
                    X = Application.GetRealWidth(10 + 25),
                };
                fra.AddChidren(roomnameBtn);
                if (i == 0)//
                {
                    roombjButton.IsSelected = false;
                    roombjButton = roombjBtn;
                    roombjBtn.IsSelected = true;
                    roomTextButton.IsSelected = false;
                    roomTextButton = roomnameBtn;
                    roomnameBtn.IsSelected = true;
                    roombjBtn.IsSelected = true;
                    roomnameBtn.IsSelected = true;
                    var list = Method.GetDeviceUIList(room, deviceTypeList);
                    AllDeviceTypeView(list);
                }
                EventHandler<MouseEventArgs> roomclick = (sender, e) =>
                {
                    roombjButton.IsSelected = false;
                    roombjButton = roombjBtn;
                    roombjBtn.IsSelected = true;
                    roomTextButton.IsSelected = false;
                    roomTextButton = roomnameBtn;
                    roomnameBtn.IsSelected = true;
                    var list = Method.GetDeviceUIList(room, deviceTypeList);
                    AllDeviceTypeView(list);
                };
                roomnameBtn.MouseUpEventHandler += roomclick;
                roombjBtn.MouseUpEventHandler += roomclick;
            }
        }
        /// <summary>
        /// 加载该区域所有设备视图方法
        /// </summary>0
        /// <param name="devicelist">Devicelist.</param>
        void AllDeviceTypeView(List<CommonDevice> devicelist)
        {
            var devicetypelist = Method.GetDeviceTypeList(devicelist);
            devicetypehorizontalScrol.RemoveAll();
            for (int i = 0; i < devicetypelist.Count; i++)
            {
                var devicetype = devicetypelist[i];
                var spaceRowLayout = new FrameLayout();
                devicetypehorizontalScrol.AddChidren(spaceRowLayout);
                if (i == 0)
                {
                    spaceRowLayout.Width = Application.GetRealWidth(37);
                }
                else
                {
                    spaceRowLayout.Width = Application.GetRealWidth(80);
                }
                var deviceRowLayout = new FrameLayout
                {
                    Width = Application.GetRealWidth(156 + 20),
                    Height = Application.GetRealHeight(280 - 30),
                    Y = Application.GetRealHeight(30),
                };
                devicetypehorizontalScrol.AddChidren(deviceRowLayout);
                var backgroundColor = new Button
                {
                    Width = Application.GetMinRealAverage(156),
                    Height = Application.GetMinRealAverage(180),
                    X = Application.GetRealWidth(10),
                    UnSelectedImagePath = "ZigeeLogic/deviceunselectedbackgroundcolor.png",
                    SelectedImagePath = "ZigeeLogic/deviceselectedbackgroundcolor.png",
                };
                deviceRowLayout.AddChidren(backgroundColor);
                var devicetypeicon = new Button
                {
                    Width = Application.GetMinRealAverage(84),
                    Height = Application.GetMinRealAverage(84),
                    X = Application.GetRealWidth(46),
                    Y = Application.GetRealHeight(30),
                    UnSelectedImagePath =Method.GetDeviceTypeIcon(devicetype),
                };
                deviceRowLayout.AddChidren(devicetypeicon);
                var devicetypename = new Button
                {
                    Width = Application.GetRealWidth(176),
                    Height = Application.GetRealHeight(40),
                    Text = devicetype,
                    TextAlignment = TextAlignment.Center,
                    Y = backgroundColor.Bottom,
                    TextColor = ZigbeeColor.Current.LogicAddColor,
                    TextSize = 10,
                };
                deviceRowLayout.AddChidren(devicetypename);
                EventHandler<MouseEventArgs> devicetypeclick = (sender13, e13) =>
                {
                    devicetypeButton.IsSelected = false;
                    devicetypeButton = backgroundColor;
                    backgroundColor.IsSelected = true;
                    var list = Method.GetDeviceType(devicetypename.Text);
                    ConditionDeviceView(list, devicelist);
                };
                deviceRowLayout.MouseUpEventHandler += devicetypeclick;
                devicetypename.MouseUpEventHandler += devicetypeclick;
                devicetypeicon.MouseUpEventHandler += devicetypeclick;
                backgroundColor.MouseUpEventHandler += devicetypeclick;
            }
            ///显示房间所有设备
            ConditionDeviceView(new List<DeviceType>(), devicelist);
        }
        /// <summary>
        /// 加载该类型设备视图方法
        /// </summary>
        /// <param name="deviceTypelist">Device typelist.</param>
        /// <param name="devicelist">设备列表</param>
        void ConditionDeviceView(List<DeviceType> deviceTypelist, List<CommonDevice> devicelist)
        {
            middle.RemoveAll();
            foreach (var common in devicelist)
            {
                if (deviceTypelist.Count != 0 && !deviceTypelist.Contains(common.Type))
                {
                    continue;
                }
                if (IfType == "condition_mould")
                {
                    if (common.IasDeviceType != 13)
                    {//自动化模板只支持红外传感器
                        continue;
                    }
                }
                var deviceFramelayout = new FrameLayout
                {
                    Height = Application.GetRealHeight(160),
                };
                middle.AddChidren(deviceFramelayout);
                var bjFramelayout = new FrameLayout
                {
                    Width = Application.GetMinRealAverage(112),
                    Height = Application.GetMinRealAverage(112),
                    X = Application.GetRealWidth(58),
                    Y = Application.GetRealHeight(30 + 9),
                     Radius = (uint)Application.GetMinRealAverage(56),
                    BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
                };
                deviceFramelayout.AddChidren(bjFramelayout);
                var deviceIconBtn = new Button
                {
                    Width = Application.GetMinRealAverage(82),
                    Height = Application.GetMinRealAverage(82),
                    Gravity = Gravity.Center,
                };
                bjFramelayout.AddChidren(deviceIconBtn);
                Method.GetDeviceIcon(common, deviceIconBtn);
                var deviceRow = new RowLayout
                {
                    Y = Application.GetRealHeight(30),
                    Width = Application.GetRealWidth(850),
                    Height = Application.GetRealHeight(130),
                    X = Application.GetRealWidth(176 + 25),
                    //LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
                    LineColor = ZigbeeColor.Current.LogicBlankBackgroundColor,
                };
                deviceFramelayout.AddChidren(deviceRow);
                var devicename = new Button
                {
                    Text = LocalDevice.Current.GetDeviceEpointName(common),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = ZigbeeColor.Current.LogicTextBlackColor,
                    SelectedTextColor = ZigbeeColor.Current.LogicAddColor,
                    TextSize = 14,
                };
                deviceRow.AddChidren(devicename);
                var lineBtn = new Button
                {
                    Y = deviceFramelayout.Height-1,
                    Height = 1,
                    Width = Application.GetRealWidth(850),
                    X = Application.GetRealWidth(176 + 25),
                    BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
                };
                deviceFramelayout.AddChidren(lineBtn);
                EventHandler<MouseEventArgs> devicclick = (sen, e) =>
                {
                    clickbutton.IsSelected = false;
                    clickbutton = deviceIconBtn;
                    deviceIconBtn.IsSelected = true;
                    clickframeLayout.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
                    clickframeLayout = bjFramelayout;
                    bjFramelayout.BackgroundColor = ZigbeeColor.Current.LogicIconBackgroundColor;
                    clicktextcolcrbutton.IsSelected = false;
                    clicktextcolcrbutton = devicename;
                    devicename.IsSelected = true;
                    var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor };
                    this.AddChidren(flMain);
                    CurrentDeviceState.CurrentDeviceView(flMain, common, false, IfType);
                };
                deviceFramelayout.MouseUpEventHandler += devicclick;
                bjFramelayout.MouseUpEventHandler += devicclick;
                deviceIconBtn.MouseUpEventHandler += devicclick;
                deviceRow.MouseUpEventHandler += devicclick;
                devicename.MouseUpEventHandler += devicclick;
            }
        }
    }
}