wjc
2023-03-28 f46be160caed45c67e8980173d29ed48d525a4d3
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -3,6 +3,9 @@
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
#if __Android__
using Java.Interop;
#endif
using Shared;
namespace HDL_ON.UI
{
@@ -23,10 +26,124 @@
        {
            Action<string, string> action = (s, a) =>
            {
                var page = new AddDevciePage(brand);
                MainPage.BasePageView.AddChidren(page);
                page.LoadPage(contentView);
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                if (brand.productBrand == "IMOU")
                {
#if __ANDROID__
                    FunctionList.List.GetIpCamImouList();
                    if (string.IsNullOrEmpty(Com.Utils.HdlToLcUtils.Instance.SubAccessToken))
                    {
                        var waitPage = new Loading();
                        MainPage.BaseView.AddChidren(waitPage);
                        waitPage.Start("");
                        new System.Threading.Thread(() =>
                        {
                            try
                            {
#if DEBUG
                                Com.Utils.HdlToLcUtils.Instance.ShowErrorInfo(true);
#endif
                                var http = new HttpServerRequest();
                                var pack = http.GetLcSubAccountToken();
                                if (pack.Code == StateCode.SUCCESS)
                                {
                                    if (pack.Data == null || string.IsNullOrEmpty(pack.Data.ToString()))
                                    {
                                        Application.RunOnMainThread(() =>
                                        {
                                            new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.Get3tyIotInfoFailed));
                                            return;
                                        });
                                    }
                                    Com.Utils.HdlToLcUtils.Instance.InitData(Shared.Application.Activity, "HDL-HOME-APP-TEST", "WeJ8TY88vbakCcnvH8G1tDUqzLWY8yss", OnAppConfig.Instance.RequestHttpsHost);
                                    Com.Utils.HdlToLcUtils.Instance.HomeId = DB_ResidenceData.Instance.CurrentRegion.id;
                                    Com.Utils.HdlToLcUtils.Instance.Token = UserInfo.Current.AccessToken;
                                    Com.Utils.HdlToLcUtils.Instance.SubAccessToken = pack.Data.ToString();
#if __ANDROID__
                                    Application.RunOnMainThread(() =>
                                    {
                                        try
                                        {
                                            var result = Com.Utils.HdlToLcUtils.Instance.CheckCameraPermissions();
                                            if (result)
                                            {
                                                var backTemp = new AddLcCam();
                                                backTemp.backAction = () =>
                                                {
                                                    Load3tyBrandDeviceList();
                                                };
                                                Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
                                            }
                                            else
                                            {
                                                Com.Utils.HdlToLcUtils.Instance.RequestCameraPermissions();
                                            }
                                        }
                                        catch (Exception ex)
                                        {
                                        }
                                    });
#endif
                                }
                                else
                                {
                                    Application.RunOnMainThread(() =>
                                    {
                                        new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), Language.StringByID(StringId.huoqushujushibao) + $"({pack.Code})");
                                    });
                                }
                            }
                            catch (Exception ex)
                            {
                                MainPage.Log("加载乐橙摄像头异常");
                            }
                            finally
                            {
                                Application.RunOnMainThread(() =>
                                {
                                    if (waitPage != null)
                                    {
                                        waitPage.RemoveFromParent();
                                        waitPage = null;
                                    }
                                });
                            }
                        })
                        { IsBackground = true }.Start();
                    }
                    else
                    {
                        var result = Com.Utils.HdlToLcUtils.Instance.CheckCameraPermissions();
                        if (result)
                        {
                            var backTemp = new AddLcCam();
                            backTemp.backAction = () =>
                            {
                                Load3tyBrandDeviceList();
                            };
                            Com.Utils.HdlToLcUtils.Instance.AddCamera(backTemp);
                        }
                        else
                        {
                            Com.Utils.HdlToLcUtils.Instance.RequestCameraPermissions();
                        }
                    }
#endif
                }
                else
                {
                    var page = new AddDevciePage(brand);
                    MainPage.BasePageView.AddChidren(page);
                    page.LoadPage(contentView);
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
            };
            new TopViewDiv(bodyView, Language.StringByID(StringId.Devices)).LoadTopView_AddIcon("3ty", action);
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
@@ -115,63 +232,6 @@
                    LineColor = 0x00000000,
                };
                contentView.AddChidren(row);
                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);
                    };
                }
                if (isFrist)
                {
@@ -251,6 +311,140 @@
                            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<string> 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<string>());
                    };
                }
            }
        }
@@ -265,5 +459,79 @@
    {
        public List<Function> list = new List<Function>();
    }
#if __Android__
    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()
        {
        }
    }
#else
    public class AddLcCam
    {
        public Action backAction;
        public void Back()
        {
            backAction?.Invoke();
        }
    }
#endif
}