using System; using System.Collections.Generic; using HDL_ON.DAL.Server; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Java.Interop; using Shared; namespace HDL_ON.UI { public class DeviceListPage : FrameLayout { FrameLayout bodyView; VerticalRefreshLayout contentView; IntegratedBrand brand; public DeviceListPage(IntegratedBrand integratedBrand) { bodyView = this; brand = integratedBrand; } public void LoadPage() { Action action = (s, a) => { //var page = new AddDevciePage(brand); //MainPage.BasePageView.AddChidren(page); //page.LoadPage(contentView); //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; var backTemp = new AddLcCam(); backTemp.backAction = () => { Load3tyBrandDeviceList(); }; Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp); }; new TopViewDiv(bodyView, Language.StringByID(StringId.Devices)).LoadTopView_AddIcon("3ty", action); bodyView.BackgroundColor = CSS_Color.BackgroundColor; contentView = new VerticalRefreshLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(667 - 64), VerticalScrollBarEnabled = false, }; bodyView.AddChidren(contentView); Load3tyBrandDeviceList(); contentView.BeginHeaderRefreshingAction = () => { contentView.EndHeaderRefreshing(); Load3tyBrandDeviceList(); }; //contentView.BeginHeaderRefreshing(); } void Load3tyBrandDeviceList() { var waitPage = new Loading(); waitPage.Start(); new System.Threading.Thread(() => { try { var pm = new HttpServerRequest(); var pack = pm.Get3TyBrandBindDeviceList(brand.productPlatform, brand.productBrand); if (pack.Code == DAL.Server.StateCode.SUCCESS) { var revData = Newtonsoft.Json.JsonConvert.DeserializeObject(pack.Data.ToString()); Application.RunOnMainThread(() => { contentView.RemoveAll(); if (revData.list.Count > 0) { LoadRow(revData.list); } else { var tipView = new EmptyTipView(Language.StringByID(StringId.NotAddedAnyDevices),160) { Gravity = Gravity.CenterHorizontal, }; contentView.AddChidren(tipView); } }); } else { IMessageCommon.Current.ShowErrorInfoAlter(pack.Code); } } catch (Exception ex) { MainPage.Log("1--::" + ex.Message); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); } void LoadRow(List deviceList) { bool isFrist = true; foreach (var device in deviceList) { var row = new RowLayout() { Height = Application.GetRealHeight(50), BackgroundColor = CSS_Color.MainBackgroundColor, LineColor = 0x00000000, }; contentView.AddChidren(row); if (isFrist) { isFrist = false; } else { Button btnLine = new Button() { X = Application.GetRealWidth(56), Width = Application.GetRealWidth(303), Height = 1, BackgroundColor = CSS_Color.DividingLineColor, }; row.AddChidren(btnLine); } var btnIcon = new Button() { X = Application.GetRealWidth(12), Gravity = Gravity.CenterVertical, Width = Application.GetRealWidth(32), Height = Application.GetRealWidth(32), Radius = (uint)Application.GetRealWidth(4), UnSelectedImagePath = $"FunctionIcon/Icon/{device.IconName}.png", }; row.AddChidren(btnIcon); Button btnRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/Right.png", }; row.AddChidren(btnRight); Button btnName = new Button() { X = Application.GetRealWidth(56), Width = Application.GetRealWidth(303), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, Text = device.name, }; row.AddChidren(btnName); btnName.MouseUpEventHandler = (sender, e) => { switch (device.spk) { case SPK.IrModule: new UI2.PersonalCenter.PirDevice.PirMethod().MainView(this, device, () => { contentView.BeginHeaderRefreshing(); }); break; case SPK.SensorMmvPose: case SPK.SenesorMegahealth: case SPK.SenesorMegahealth2: var smPage = new SenesorMegahealthManagerPage(); smPage.AddForm(device); smPage.DelDeviceEvent = () => { contentView.BeginHeaderRefreshing(); }; break; case SPK.SensorEnvironment: case SPK.SensorEnvironment2: case SPK.SensorEnvironment3: var smPage1 = new SensorEnvironmentManagerPage(); smPage1.AddForm(device); smPage1.DelDeviceEvent = () => { contentView.BeginHeaderRefreshing(); }; break; } }; if (device.spk == SPK.IpCam_Imou) { var btnDel = new Button() { TextColor = CSS_Color.MainBackgroundColor, BackgroundColor = CSS_Color.WarningColor, TextID = StringId.Del, TextAlignment = TextAlignment.Center, }; row.AddRightView(btnDel); btnDel.MouseUpEventHandler = (sender, e) => { Action action = () => { var waitPage = new Loading(); this.AddChidren(waitPage); waitPage.Start(""); new System.Threading.Thread(() => { try { var http = new HttpServerRequest(); var result = http.Delete3tyDevice(device.deviceId); if (result.Code == StateCode.SUCCESS) { Application.RunOnMainThread(() => { Load3tyBrandDeviceList(); }); } else { Application.RunOnMainThread(() => { new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.OperationFailed) + $"({result.Code})", true); }); } } catch (Exception ex) { MainPage.Log($"删除第三方设备失败:{ex.Message}"); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); }; new PublicAssmebly().TipOptionMsg(StringId.Tip, Language.StringByID(StringId.AreYouSureToDeleteThisDevice), action); }; var btnEdit = new Button() { Width = Application.GetRealWidth(150), }; row.AddChidren(btnEdit); btnEdit.MouseUpEventHandler = (sender, e) =>{ Action callBack = (str) => { if (string.IsNullOrEmpty(str)) { new Tip() { CloseTime = 1, Text = Language.StringByID(StringId.NameCannotBeEmpty), Direction = AMPopTipDirection.None, }.Show(bodyView); return; } if (str == device.name) { return; } var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); new System.Threading.Thread(() => { try { var resultObj = new HttpServerRequest().UpdataDevcieName(device, str); if (resultObj.Code == StateCode.SUCCESS) { device.name = str; var deviceNew = FunctionList.List.GetIpCamImouList().Find((obj) => obj.deviceId == device.deviceId); if (deviceNew != null) { deviceNew.name = str; } Application.RunOnMainThread(() => { btnName.Text = str; }); } else { //失败提示 IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code); } } catch (Exception ex) { MainPage.Log($"update 3ty device name error : {ex.Message}"); } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); }; new PublicAssmebly().LoadDialog_EditParater(StringId.ChangeName, device.name, callBack, StringId.NameCannotBeEmpty, 0, new List()); }; } } } } /// /// 云端返回的第三方设备列表数据 /// public class Function3tyBrandObj { public List list = new List(); } public class AddLcCam : Java.Lang.Object, Com.CallBack.IAddCamera { public Action backAction; //public IntPtr Handle => throw new NotImplementedException(); //public int JniIdentityHashCode => throw new NotImplementedException(); //public JniObjectReference PeerReference => throw new NotImplementedException(); //public JniPeerMembers JniPeerMembers => throw new NotImplementedException(); //public JniManagedPeerStates JniManagedPeerState => throw new NotImplementedException(); public void Back() { backAction?.Invoke(); } public void Dispose() { } public void Disposed() { } public void DisposeUnlessReferenced() { } public void Finalized() { } public void OnError(string p0) { } public void SetJniIdentityHashCode(int value) { } public void SetJniManagedPeerState(JniManagedPeerStates value) { } public void SetPeerReference(JniObjectReference reference) { } public void Success(string p0) { } public void UnregisterFromRuntime() { } } }