wxr
2022-05-17 4c586bb23cdcae56ae4e4c62e90e148dc10b9d90
HDL_ON/UI/UI2/FuntionControlView/Video/WanderingAlarmPage.cs
New file
@@ -0,0 +1,188 @@
using System;
using System.Collections.Generic;
using HDL_ON.DAL.Server;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI2.FuntionControlView.Video
{
    public class WanderingAlarmPage : FrameLayout
    {
        FrameLayout bodyView;
        public WanderingAlarmPage()
        {
            bodyView = this;
        }
        VerticalScrolViewLayout contentView;
        public void LoadPage(string deviceId)
        {
            bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
            new TopViewDiv(bodyView, Language.StringByID(StringId.WanderingAlarm)).LoadTopView();
            var btnTipMsg = new Button()
            {
                Y = Application.GetRealHeight(64),
                X = Application.GetRealWidth(20),
                Height = Application.GetRealHeight(58),
                Width = Application.GetRealWidth(318),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = "*可视对讲可以自动识别门口可疑人员,并发起徘徊报警记录"
            };
            if(Language.CurrentLanguage != "Chinese")
            {
                btnTipMsg.Text = "*Visual intercom can automatically identify suspicious persons at the door and initiate wandering alarm records";
            }
            bodyView.AddChidren(btnTipMsg);
            contentView = new VerticalScrolViewLayout()
            {
                Y = Application.GetRealHeight(64 + 62),
                Height = Application.GetRealHeight(550),
            };
            bodyView.AddChidren(contentView);
            Loading loading = new Loading();
            bodyView.AddChidren(loading);
            loading.Start("");
            new System.Threading.Thread(()=> {
                try
                {
                    HttpServerRequest http = new HttpServerRequest();
                    var pack = http.GetAlarmRecords(deviceId);
                    if (pack.Code == StateCode.SUCCESS)
                    {
                        var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<AlarmRecordInfoPack>(pack.Data.ToString());
                        LoadSceneGallery(obj);
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"读取徘徊报警数据异常:{ex.Message}");
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (loading != null)
                        {
                            loading.Hide();
                            loading.RemoveFromParent();
                        }
                    });
                }
            }) { IsBackground = true }.Start();
        }
        /// <summary>
        /// 加载场景图库
        /// </summary>
        void LoadSceneGallery(AlarmRecordInfoPack pack)
        {
            FrameLayout sceneImageRow = new FrameLayout()
            {
                Height = Application.GetRealWidth(128),
            };
            Application.RunOnMainThread(() =>
            {
                for (int i = 0; i < pack.list.Count; i++)
                {
                    var item = pack.list[i];
                    var imageBytes = ImageUtlis.Current.DownImageByImageUrl(item.alarmImg);
                    var sceneImageView = new ImageView()
                    {
                        Width = Application.GetRealWidth(172),
                        Height = Application.GetRealHeight(90),
                        Radius = (uint)Application.GetRealWidth(12),
                        ImageBytes = imageBytes
                    };
                    var btnTime = new Button()
                    {
                        Width = Application.GetRealHeight(160),
                        Height = Application.GetRealHeight(41),
                        Y = Application.GetRealHeight(90),
                        Text = Utlis.UnixToDateTimeMS(item.alarmTime).ToString(),
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextAlignment = TextAlignment.Center
                    };
                    if (i % 2 == 0)
                    {
                        sceneImageRow = new FrameLayout()
                        {
                            Height = Application.GetRealHeight(90 + 53),
                        };
                        contentView.AddChidren(sceneImageRow);
                        sceneImageView.X = Application.GetRealWidth(10);
                        sceneImageRow.AddChidren(sceneImageView);
                        btnTime.X = Application.GetRealWidth(10);
                        sceneImageRow.AddChidren(btnTime);
                    }
                    else
                    {
                        sceneImageView.X = Application.GetRealWidth(194);
                        sceneImageRow.AddChidren(sceneImageView);
                        btnTime.X = Application.GetRealWidth(194);
                        sceneImageRow.AddChidren(btnTime);
                    }
                    sceneImageView.MouseUpEventHandler = (sender, e) =>
                    {
                        Dialog dialog = new Dialog();
                        FrameLayout dialogContentView = new FrameLayout();
                        dialog.AddChidren(dialogContentView);
                        dialogContentView.MouseUpEventHandler = (sender2, e2) =>
                        {
                            dialog.Close();
                        };
                        ImageView btnImage = new ImageView()
                        {
                            Gravity = Gravity.Center,
                            Height = Application.GetRealHeight(211),
                            ImageBytes = sceneImageView.ImageBytes,
                        };
                        dialogContentView.AddChidren(btnImage);
                        dialog.Show();
                    };
                    System.Threading.Thread.Sleep(200);
                }
            });
        }
    }
    public class AlarmRecordInfoPack
    {
        public int totalCount = 0;
        public int totalPage = 0;
        public int pageNo = 0;
        public int pageSize = 0;
        public List<AlarmRecordInfo> list = new List<AlarmRecordInfo>();
    }
    /// <summary>
    /// 徘徊报警信息
    /// </summary>
    public class AlarmRecordInfo
    {
        public string alarmImg = string.Empty;
        public long alarmTime;
        public string alarmType = string.Empty;
        public string alarmTypeDesc = string.Empty;
    }
}