Davin
2023-07-26 489d3bd60ad7dc2fecb398b09cf4c52df16f0fc2
HDL_ON/UI/UI2/2-Classification/SeriesFunctionListPage.cs
New file
@@ -0,0 +1,184 @@
using System;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI2.Classification
{
    /// <summary>
    /// 跑马灯页面
    /// 序列页面
    /// </summary>
    public class SeriesFunctionListPage : FrameLayout
    {
        FrameLayout bodyView;
        public SeriesFunctionListPage()
        {
            bodyView = this;
        }
        public void LoadPage()
        {
            new TopViewDiv(bodyView, Language.StringByID(StringId.HorseRaceLamp)).LoadTopView();
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            var functionListView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64),
                Height = Application.GetRealHeight(603 - 12),
            };
            bodyView.AddChidren(functionListView);
            var waitPage = new Loading();
            bodyView.AddChidren(waitPage);
            waitPage.Hide();
            Dictionary<string, List<Button>> dicGroupButtons = new Dictionary<string, List<Button>>();
            List<string> oidList = new List<string>();
            foreach(var rgb in FunctionList.List.GetLightList())
            {
                //if(rgb.spk == SPK.LightRGB)
                {
                    var oid = rgb.sid.Substring(0, 16);
                    if (oidList.Contains(oid))
                    {
                        continue;
                    }
                    var seriesList = FunctionList.List.GetSeries().FindAll((obj) => obj.sid.StartsWith(oid));
                    if (seriesList.Count == 0)
                    {
                        continue;
                    }
                    oidList.Add(oid);
                    var list = new List<Function>();
                    List<Button> groupButtons = new List<Button>();
                    list.AddRange(seriesList);
                    var groupView = new VerticalScrolViewLayout()
                    {
                        Height = Application.GetRealHeight(44 + 51 * list.Count),
                        BackgroundColor = CSS_Color.MainBackgroundColor,
                        ScrollEnabled = false,
                    };
                    functionListView.AddChidren(groupView);
                    #region title
                    var titleView = new FrameLayout()
                    {
                        Height = Application.GetRealHeight(44),
                    };
                    groupView.AddChidren(titleView);
                    var btnTitle = new Button()
                    {
                        X = Application.GetRealWidth(16),
                        TextSize = CSS_FontSize.SubheadingFontSize,
                        TextAlignment = TextAlignment.CenterLeft,
                        TextColor = CSS_Color.MainColor,
                        Text =Language.StringByID( StringId.HorseRaceLampGroup )+ " "+ oidList.Count.ToString(),
                    };
                    if(Language.CurrentLanguage == "Chinese")
                    {
                        btnTitle.Text = Language.StringByID(StringId.HorseRaceLampGroup) + oidList.Count.ToString();
                    }
                    titleView.AddChidren(btnTitle);
                    #endregion
                    foreach (var series in list)
                    {
                        groupView.AddChidren(new Button
                        {
                            Height = 1,
                            BackgroundColor = CSS_Color.DividingLineColor,
                        });
                        var rgbColorfulView = new FrameLayout()
                        {
                            Height = Application.GetRealHeight(50),
                        };
                        groupView.AddChidren(rgbColorfulView);
                        var btnRgbColorfulTitle = new Button()
                        {
                            X = Application.GetRealWidth(16),
                            TextAlignment = TextAlignment.CenterLeft,
                            TextSize = CSS_FontSize.TextFontSize,
                            TextColor = CSS_Color.FirstLevelTitleColor,
                            Text = series.name == rgb.name ? Language.StringByID(StringId.AutomaticColoring) : series.name,
                        };
                        rgbColorfulView.AddChidren(btnRgbColorfulTitle);
                        var btnColorfulSwitch = new Button()
                        {
                            X = Application.GetRealWidth(320),
                            Gravity = Gravity.CenterVertical,
                            Width = Application.GetMinRealAverage(48),
                            Height = Application.GetMinRealAverage(36),
                            UnSelectedImagePath = "Public/Switch.png",
                            SelectedImagePath = "Public/SwitchOn.png",
                            Tag = series.sid,
                        };
                        rgbColorfulView.AddChidren(btnColorfulSwitch);
                        groupButtons.Add(btnColorfulSwitch);
                        btnColorfulSwitch.MouseUpEventHandler = (sener, e) => {
                            btnColorfulSwitch.IsSelected = !btnColorfulSwitch.IsSelected;
                            var state = btnColorfulSwitch.IsSelected ? "on" : "off";
                            waitPage.Start("");
                            new System.Threading.Thread(() =>
                            {
                                try
                                {
                                    var d = new Dictionary<string, string>();
                                    d.Add("on_off", state);
                                    DriverLayer.Control.Ins.SendWriteCommand(series, d);
                                    if (state == "on")
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
                                            List<Button> updataList = new List<Button>();
                                            dicGroupButtons.TryGetValue(((Button)sener).Tag.ToString().Substring(0, 16), out updataList);
                                            foreach (var updataTemp in updataList)
                                            {
                                                updataTemp.IsSelected = false;
                                            }
                                            btnColorfulSwitch.IsSelected = true;
                                        });
                                    }
                                }
                                catch (Exception ex)
                                {
                                    MainPage.Log($"序列控制异常:{ex.Message}");
                                }
                                finally
                                {
                                    Application.RunOnMainThread(() => {
                                        waitPage.Hide();
                                    });
                                }
                            })
                            { IsBackground = true }.Start();
                        };
                    }
                    Console.WriteLine("oid: " + oid);
                    dicGroupButtons.TryAdd(oid, groupButtons);
                    functionListView.AddChidren(new Button
                    {
                        Height = Application.GetRealHeight(8),
                        BackgroundColor = CSS_Color.DividingLineColor,
                    });
                }
            }
        }
    }
}