wxr
2022-10-27 bbd6b592a6b883e013ff1e0a574976ceba5009ea
HDL_ON/UI/UI2/FuntionControlView/Curtain/VenetianBlindsPage.cs
New file
@@ -0,0 +1,347 @@
using System;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    public partial class VenetianBlindsPage : FrameLayout
    {
        #region 控件集合
        static VenetianBlindsPage bodyView;
        /// <summary>
        /// 功能名称按钮
        /// </summary>
        Button btnFunctionName;
        /// <summary>
        /// 房间楼层信息按钮
        /// </summary>
        Button btnFromFoorAndRoom;
        /// <summary>
        /// 收藏按钮
        /// </summary>
        Button btnCollection;
        /// <summary>
        /// 窗帘动态控件
        /// </summary>
        CurtainRollSeekBarOn curtainSeekBar;
        ///// <summary>
        ///// 窗帘进度减少按钮
        ///// </summary>
        //Button btnMinusSignIcon;
        ///// <summary>
        ///// 窗帘进度增加按钮
        ///// </summary>
        //Button btnPlusSgnIcon;
        ///// <summary>
        ///// 窗帘滑动控制
        ///// </summary>
        //DiyImageSeekBar controlBar;
        /// <summary>
        /// 窗帘关闭按钮
        /// </summary>
        Button btnCurtainClose;
        /// <summary>
        /// 窗帘停止按钮
        /// </summary>
        Button btnCurtainStop;
        /// <summary>
        /// 窗帘打开按钮
        /// </summary>
        Button btnCurtainOpen;
        /// <summary>
        /// 进度值
        /// </summary>
        Button btnProgress;
        #endregion
        #region 区域变量
        Curtain curtainTemp = new Curtain();
        Function function;
        Button btnCollection_Out;
        Button btnFunctionName_Out;
        Button btnFromFloor_Out;
        /// <summary>
        /// 刷新显示信息
        /// </summary>
        Action actionRefresh;
        #endregion
        /// <summary>
        /// 正在控制
        /// </summary>
        bool onControl = false;
        public VenetianBlindsPage(Function func)
        {
            bodyView = this;
            function = func;
        }
        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            btnCollection_Out = btnCollectionIcon;
            btnFunctionName_Out = btnFunctionNameOut;
            btnFromFloor_Out = btnFromFloorOut;
            FrameLayout controlView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(88),
                Width = Application.GetRealWidth(327),
                Height = Application.GetRealHeight(526),
                BackgroundImagePath = "Public/Fragmentbg.png",
            };
            bodyView.AddChidren(controlView);
            btnFunctionName = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(14),
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(37),
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
                Text = function.name,
            };
            controlView.AddChidren(btnFunctionName);
            btnFromFoorAndRoom = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = btnFunctionName.Bottom,
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(21),
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = function.GetRoomListName()
            };
            controlView.AddChidren(btnFromFoorAndRoom);
            btnCollection = new Button()
            {
                X = Application.GetRealWidth(273),
                Y = Application.GetRealHeight(14),
                Width = Application.GetMinRealAverage(40),
                Height = Application.GetMinRealAverage(40),
                SelectedImagePath = "Collection/CollectionIcon.png",
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            btnProgress = new Button()
            {
                X = Application.GetRealWidth(80),
                Y = Application.GetRealHeight(80),
                Width = Application.GetRealWidth(170),
                Height = Application.GetRealHeight(50),
                TextSize = CSS_FontSize.TextFontSize,
                TextColor = CSS_Color.PromptingColor1,
                Text = curtainTemp.GetPercent(function).ToString() + "%",
            };
            //controlView.AddChidren(btnProgress);
            curtainSeekBar = new CurtainRollSeekBarOn()
            {
                X = Application.GetRealWidth(40),
                Y = Application.GetRealHeight(130),
                Width = Application.GetRealWidth(170),
                Height = Application.GetRealWidth(210),
                Progress = curtainTemp.GetPercent(function),
                //IsInvertedProgress = true,
                ProgressTextColor = CSS_Color.WarningColor,// 0x00000000,
            };
            curtainSeekBar.SetBlindsType(true);
            controlView.AddChidren(curtainSeekBar);
            int angleValut = Convert.ToInt32(function.GetAttrState("angle")) - 90;
            var angleView = new FrameLayout()
            {
                X = Application.GetRealWidth(250),
                Y = Application.GetRealHeight(145),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(220),
                BackgroundColor = 0x00ff0000
            };
            controlView.AddChidren(angleView);
            var buttons = new List<Button>();
            for (int i = 0; i < 18; i++)
            {
                var btn = new Button()
                {
                    X = Application.GetRealWidth(5),
                    Y = Application.GetRealHeight(8 * i + 4),
                    Width = Application.GetRealWidth(25),
                    Height = Application.GetRealHeight(3),
                    BackgroundColor = 0xFFDFE1E6,
                };
                btn.SetRotation(angleValut);
                angleView.AddChidren(btn);
                buttons.Add(btn);
            };
            var btnAngle = new Button()
            {
                Y = Application.GetRealHeight(8 * 17 + 14),
                Height = Application.GetRealHeight(20),
                TextAlignment = TextAlignment.Center,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextColor = CSS_Color.PromptingColor1,
                Text = function.GetAttrState("angle") + "°"
            };
            angleView.AddChidren(btnAngle);
            var angleBar = new Button() {
                Height = Application.GetRealHeight(8 * 18 + 14),
            };
            angleView.AddChidren(angleBar);
            float angle = 0;
            angleBar.MouseMoveEventHandler = (sender, e) =>
            {
                int data = angleBar.Height / 180;
                int data1 = Convert.ToInt32(e.Y / data);
                angle = (90 - data1);
                Console.WriteLine($"angle:: {angle}");
                if (angle > 90)
                {
                    angle = 90;
                }
                else if (angle < -90)
                {
                    angle = -90;
                }
                btnAngle.Text = angle + "°";
                foreach (var btn in buttons)
                {
                    btn.SetRotation(angle);
                }
                if (angle == 90 || angle == -90)
                {
                    curtainSeekBar.SetBlindsType(false);
                }
                else
                {
                    curtainSeekBar.SetBlindsType(true);
                }
            };
            angleBar.MouseUpEventHandler = (sende, e) =>
            {
                function.refreshTime = DateTime.Now;
                new System.Threading.Thread(() =>
                {
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    dic.Add("angle", angle.ToString());
                    Control.Ins.SendWriteCommand(function, dic);
                })
                { IsBackground = true }.Start();
            };
            //btnMinusSignIcon = new Button()
            //{
            //    Y = Application.GetRealHeight(406),
            //    Width = Application.GetRealWidth(52),
            //    Height = Application.GetMinRealAverage(24),
            //    TextAlignment = TextAlignment.CenterRight,
            //    TextID = StringId.PullOpen,
            //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            //    TextColor = CSS_Color.PromptingColor1,
            //    Visible = false,
            //    Enable = false,
            //};
            //controlView.AddChidren(btnMinusSignIcon);
            //controlBar = new DiyImageSeekBar()
            //{
            //    X = btnMinusSignIcon.Right,
            //    Y = Application.GetRealHeight(391),//414,设计数据
            //    Width = Application.GetRealWidth(220),
            //    Height = Application.GetRealHeight(54),
            //    SeekBarViewHeight = Application.GetRealHeight(8),
            //    ThumbImagePath = "Public/ThumbImage.png",
            //    ThumbImageHeight = Application.GetRealHeight(54),
            //    ProgressBarColor = CSS_Color.MainColor,
            //    ProgressTextColor = CSS_Color.FirstLevelTitleColor,
            //    ProgressTextSize = 0x00000000,
            //    MaxValue = 100,
            //    SeekBarPadding = Application.GetRealWidth(20),
            //    Progress = curtainTemp.GetPercent(function),
            //    Visible = false,
            //    Enable = false,
            //};
            //controlView.AddChidren(controlBar);
            //btnPlusSgnIcon = new Button()
            //{
            //    X = Application.GetRealWidth(286),
            //    Y = Application.GetRealHeight(406),
            //    Width = Application.GetRealWidth(62),
            //    Height = Application.GetRealWidth(24),
            //    TextID = StringId.Shut,
            //    TextAlignment = TextAlignment.CenterLeft,
            //    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            //    TextColor = CSS_Color.PromptingColor1,
            //    Visible = false,
            //    Enable = false,
            //};
            //controlView.AddChidren(btnPlusSgnIcon);
            btnCurtainClose = new Button()
            {
                X = Application.GetRealWidth(84),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainDownIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainDownIconOn.png",
            };
            controlView.AddChidren(btnCurtainClose);
            btnCurtainStop = new Button()
            {
                X = Application.GetRealWidth(148),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainStopIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainStopOnIcon.png",
            };
            controlView.AddChidren(btnCurtainStop);
            btnCurtainOpen = new Button()
            {
                X = Application.GetRealWidth(212),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png",
            };
            controlView.AddChidren(btnCurtainOpen);
            LoadEventList();
            new TopViewDiv(bodyView, Language.StringByID(StringId.Curtain)).LoadTopView_FunctionTop(function, actionRefresh);
            new System.Threading.Thread(() =>
            {
                DriverLayer.Control.Ins.SendReadCommand(function);
            })
            { IsBackground = true }.Start();
        }
    }
}