陈嘉乐
2021-03-10 1d1cad99a27c9f644c84eb3d376c70bd30a55879
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
@@ -5,22 +5,30 @@
using System.Text;
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice
{
    public class AddControl:FrameLayout
    public class AddControl : FrameLayout
    {
        public AddControl()
        {
            Tag = "Pir";
        }
        public void Show() {
        public void Show(Control control)
        {
            #region 界面布局
            this.BackgroundColor = CSS.CSS_Color.viewMiddle;
            PirDevice.View.TopView topView = new View.TopView();
            topView.topNameBtn.TextID = StringId.zhinengyaokongqi;
            topView.topIconBtn.Visible = true;
            topView.topIconBtn.UnSelectedImagePath = "PirIcon/del.png";
            this.AddChidren(topView.FLayoutView());
            topView.clickBackBtn.MouseUpEventHandler += (sender, e) => { this.RemoveFromParent(); };
            topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
            {
                this.RemoveFromParent();
            };
            #region 添加按钮
            FrameLayout addLayout = new FrameLayout
            {
@@ -47,25 +55,26 @@
            #endregion
            FrameLayout frameLayout = new FrameLayout
            {
                Y = Application.GetRealHeight(64+84),
                Height = Application.GetRealHeight(667-64-84),
                Y = Application.GetRealHeight(64 + 84),
                Height = Application.GetRealHeight(667 - 64 - 84),
                Width = Application.GetRealWidth(TextSize.view375),
            };
            this.AddChidren(frameLayout);
            #region 保存布局
            #region 保存
            FrameLayout saveLayout = new FrameLayout
            {
                Y = Application.GetRealHeight(667-104),
                Y = Application.GetRealHeight(667 - 104),
                Height = Application.GetRealHeight(104),
                Width = Application.GetRealWidth(TextSize.view375),
                BackgroundColor= CSS.CSS_Color.viewLine,
                BackgroundColor = CSS.CSS_Color.viewLine,
            };
            this.AddChidren(saveLayout);
            saveLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            Button paixuBtn = new Button
            {
                Width = Application.GetRealWidth(375-16*2),
                Width = Application.GetRealWidth(375 - 16 * 2),
                Height = Application.GetRealHeight(20),
                Y = Application.GetRealHeight(12),
                X = Application.GetRealWidth(16),
@@ -79,7 +88,7 @@
            {
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealHeight(44),
                Y = paixuBtn.Bottom+ Application.GetRealHeight(12),
                Y = paixuBtn.Bottom + Application.GetRealHeight(12),
                X = Application.GetRealWidth(78),
                TextID = StringId.save,
                TextSize = TextSize.text16,
@@ -94,26 +103,101 @@
            VerticalScrolViewLayout vv = new VerticalScrolViewLayout();
            frameLayout.AddChidren(vv);
            RefreshView(vv, false, control);
            #endregion
            int sum = Pir.BuottonList.Count/3+1;
            int h = sum * (16 + 44)+104;
            int line = 0;
            for (int i = 1, j = 0; i <= Pir.BuottonList.Count; i++, j++)
            #region  界面点击事件
            //删除点击事件
            topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
            {
                var nameObj = Pir.BuottonList[i-1];
                var FLayout = new FrameLayout
                topView.clickSetBtn.IsSelected = !topView.clickSetBtn.IsSelected;
                if (topView.clickSetBtn.IsSelected)
                {
                    Height = Application.GetRealWidth(h),
                };
                vv.AddChidren(FLayout);
                    topView.topIconBtn.UnSelectedImagePath = "";
                    topView.topIconBtn.Text = Language.StringByID(StringId.wancheng);
                    topView.topIconBtn.TextSize = TextSize.text14;
                    topView.topIconBtn.TextColor = CSS.CSS_Color.textColor;
                    RefreshView(vv, true, control);
                }
                else
                {
                    topView.topIconBtn.UnSelectedImagePath = "PirIcon/del.png";
                    topView.topIconBtn.Text = "";
                    RefreshView(vv, false, control);
                }
            };
            //添加按钮点击事件
            addBtn.MouseUpEventHandler += (sender, e) =>
            {
                AddButton addButton = new AddButton();
                MainPage.BasePageView.AddChidren(addButton);
                addButton.Show(control);
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            //保存点击事件
            saveBtn.MouseUpEventHandler += (sender, e) =>
            {
               //移除当前界面
                this.RemoveFromParent();
                //可能之前已经存在该界面
                for (int i = MainPage.BasePageView.ChildrenCount - 1; 0 <= i; i--)
                {
                    var view = MainPage.BasePageView.GetChildren(i);
                    if (view.GetType() == typeof(AddControlComplete))
                    {
                        view.RemoveFromParent();
                    }
                }
                //MainPage.BasePageView.RemoveViewByTag("Pir");
                AddControlComplete addControlComplete = new AddControlComplete();
                MainPage.BasePageView.AddChidren(addControlComplete);
                addControlComplete.Show(control,false);
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            #endregion
        }
        /// <summary>
        /// 加载按钮控件View的方法
        /// </summary>
        /// <param name="vv">上下滑动控件</param>
        /// <param name="if_bool">表示是否显示删除图标</param>
        void RefreshView(VerticalScrolViewLayout vv, bool if_bool, Control control)
        {
            vv.RemoveAll();
            //定义一个变量记录行数
            int sum = 0;
            if (control.status.Count % 3 == 0)
            {
                sum = control.status.Count / 3;
            }
            else
            {
                sum = control.status.Count / 3 + 1;
            }
            //计算加载出来的数据需要的高度
            int h = 16 + sum * (16 + 44) + 104 + 76;
            int line = 0;
            //按钮的父控件
            var FLayout = new FrameLayout
            {
                Height = Application.GetRealWidth(h),
            };
            vv.AddChidren(FLayout);
            for (int i = 1, j = 0; i <= control.status.Count; i++, j++)
            {
                var nameObj = control.status[i - 1];
                //按钮
                var buttonNameBtn = new Button
                {
                    Y =  Application.GetRealHeight(line*(16 + 44)),
                    X=Application.GetRealWidth(16+(16+104)*j),
                    Y = Application.GetRealHeight(16 + line * (16 + 44)),
                    X = Application.GetRealWidth(16 + (16 + 104) * j),
                    Width = Application.GetRealWidth(104),
                    Height = Application.GetRealHeight(44),
                    Text= nameObj.value,
                    Text = nameObj.value,
                    TextSize = TextSize.text16,
                    TextColor = CSS.CSS_Color.textColor,
                    TextAlignment = TextAlignment.Center,
@@ -122,7 +206,65 @@
                    BorderColor = CSS.CSS_Color.textCancelColor,
                };
                FLayout.AddChidren(buttonNameBtn);
                //删除图标
                var delIconBtn = new Button
                {
                    UnSelectedImagePath = "PirIcon/delbuton.png",
                    Y = Application.GetRealHeight(12 + line * (16 + 44)),
                    X = Application.GetRealWidth((16 + 92) + (104 + 16) * j),
                    Width = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(16),
                    Tag = nameObj,
                };
                if (if_bool)
                {
                    FLayout.AddChidren(delIconBtn);
                }
                //删除图标的点击事件
                delIconBtn.MouseUpEventHandler += (sender, e) =>
                {
                    var obj = delIconBtn.Tag as Entity.AttributesStatus;
                    //加载log
                    Loading loading = new Loading();
                    this.AddChidren(loading);
                    HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null;
                    loading.Start();
                    new System.Threading.Thread(() =>
                    {
                        try
                        {
                            //发送按键删除;
                            responsePackNew = PirSend.CodeRemove(obj, control.deviceId);
                        }
                        catch { }
                        finally
                        {
                            Application.RunOnMainThread(() =>
                            {
                                loading.Hide();
                                if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                                {
                                    ///这里:监听MTTP推送下来主题,才知道是否添加成功
                                    var buttonObj = control.status.Find((c) => c.value == obj.value);
                                    if (buttonObj != null)
                                    {
                                        control.status.Remove(buttonObj);
                                    }
                                    RefreshView(vv, true, control);
                                }
                                else {
                                    Method method = new Method();
                                    method.ErrorShow(responsePackNew);
                                }
                            });
                        }
                    })
                    { IsBackground = true }.Start();
                };
                if (i % 3 == 0)
                {
                    //满一行重置j=0值;
@@ -131,7 +273,7 @@
                }
            }
            #endregion
        }
    }
}