wxr
2022-11-23 5b77d9d57a6cddb474a66ca54401ad5ab0892db3
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/MechanicalArmPage.cs
New file
@@ -0,0 +1,196 @@
using System;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.Stan;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    /// <summary>
   /// 机械手控制页面
   /// </summary>
    public class MechanicalArmPage : DeviceFunctionCardCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 图片控件
        /// </summary>
        private PicViewControl btnPictrue = null;
        /// <summary>
        /// 开关状态提示控件
        /// </summary>
        private Button btnTipStatus = null;
        /// <summary>
        /// 开关控件
        /// </summary>
        private IconViewControl btnSwitch = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 初始化白色区域的内容
        /// </summary>
        public override void InitFrameWhiteContent()
        {
            base.SetTitleText(Language.StringByID(StringId.WaterValve));
            //初始化第一个索引页的内容
            this.InitFrameWhiteContent1();
            //刷新界面状态
            this.RefreshFormStatu();
            //读取状态
            new System.Threading.Thread(() =>
            {
                Control.Ins.ReadFunctionsInfo(new List<string>() { device.deviceId });
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 初始化第一个索引页的内容
        /// </summary>
        private void InitFrameWhiteContent1()
        {
            btnTipStatus = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(79),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(34),
                BackgroundColor = 0x171B2D4D,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Radius = (uint)Application.GetRealHeight(17),
                TextID = StringId.ValveClosed,
            };
            FrameWhiteCentet1.AddChidren(btnTipStatus);
            //图片控件
            this.btnPictrue = new PicViewControl(327, 327);
            btnPictrue.Y = Application.GetRealHeight(127);
            btnPictrue.Gravity = Gravity.CenterHorizontal;
            btnPictrue.UnSelectedImagePath = "FunctionIcon/Electrical/MechanicalArm/MechanicalArmBg.png";
            btnPictrue.SelectedImagePath = "FunctionIcon/Electrical/MechanicalArm/MechanicalArmOnBg.png";
            FrameWhiteCentet1.AddChidren(btnPictrue);
            btnPictrue.ButtonClickEvent += (sender, e) =>
            {
                //发送开关命令
                this.SendSwitchComand();
            };
            //开关图标
            this.btnSwitch = new IconViewControl(40);
            btnSwitch.Gravity = Gravity.CenterHorizontal;
            btnSwitch.Y = Application.GetRealHeight(468);
            btnSwitch.UnSelectedImagePath = "Public/PowerClose.png";
            btnSwitch.SelectedImagePath = "Public/PowerOpen.png";
            FrameWhiteCentet1.AddChidren(btnSwitch);
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                //发送开关命令
                this.SendSwitchComand();
            };
            var pack = new DAL.Server.HttpServerRequest().GetDeviceInfoList(new List<string>() { base.device.deviceId });
        }
        #endregion
        #region ■ 设备状态反馈_______________________
        /// <summary>
        /// 设备状态反馈
        /// </summary>
        /// <param name="i_LocalDevice"></param>
        public override void DeviceStatuPush(Function i_LocalDevice)
        {
            //不是同一个东西
            if (this.device.sid != i_LocalDevice.sid) { return; }
            //刷新界面状态
            this.RefreshFormStatu();
        }
        #endregion
        #region ■ 发送各种命令_______________________
        /// <summary>
        /// 发送开关命令
        /// </summary>
        private void SendSwitchComand()
        {
            //if (!device.online)
            //{
            //    new Tip()
            //    {
            //        CloseTime = 1,
            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
            //        Direction = AMPopTipDirection.None,
            //    }.Show(MainPage.BaseView);
            //    return;
            //}
            string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
            string tipMsg = "确定打开?";
            if (this.btnSwitch.IsSelected)
            {
                tipMsg = "确定关闭?";
            }
            Action action = () => {
                this.btnPictrue.CanClick = false;
                this.btnSwitch.CanClick = false;
                HdlThreadLogic.Current.RunThread(() =>
                {
                    var dic = new Dictionary<string, string>();
                    dic.Add(FunctionAttributeKey.OnOff, statu);
                    Control.Ins.SendWriteCommand(this.device, dic, true);
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        this.btnPictrue.CanClick = true;
                        this.btnSwitch.CanClick = true;
                    });
                });
            };
            new PublicAssmebly().TipOptionMsg(StringId.EmptyString, tipMsg, action);
        }
        #endregion
        #region ■ 刷新界面状态_______________________
        /// <summary>
        /// 刷新界面状态
        /// </summary>
        private void RefreshFormStatu()
        {
            Application.RunOnMainThread(() =>
            {
                var onoffStatu = device.attributes.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
                if (onoffStatu != null)
                {
                    if (onoffStatu.state == "on")
                    {
                        btnTipStatus.TextID = StringId.ValveOpened;
                        btnTipStatus.TextColor = 0xFF4BC803;
                        btnTipStatus.BackgroundColor = 0x174BC803;
                    }
                    else
                    {
                        btnTipStatus.TextID = StringId.ValveClosed;
                        btnTipStatus.TextColor = CSS_Color.FirstLevelTitleColor;
                        btnTipStatus.BackgroundColor = 0x171B2D4D;
                    }
                    this.btnSwitch.IsSelected = this.btnPictrue.IsSelected = onoffStatu.state.ToString() == "on";
                }
            });
        }
        #endregion
    }
}