using System;
|
using System.Collections.Generic;
|
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
|
{
|
public class DeviceListPage : FrameLayout
|
{
|
FrameLayout bodyView;
|
VerticalRefreshLayout contentView;
|
|
IntegratedBrand brand;
|
public DeviceListPage(IntegratedBrand integratedBrand)
|
{
|
bodyView = this;
|
brand = integratedBrand;
|
}
|
|
|
public void LoadPage()
|
{
|
Action<string, string> action = (s, a) =>
|
{
|
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;
|
|
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<Function3tyBrandObj>(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<Function> 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.SensorEnvironmentHailin:
|
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<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>());
|
};
|
}
|
|
}
|
|
}
|
|
}
|
|
|
/// <summary>
|
/// 云端返回的第三方设备列表数据
|
/// </summary>
|
public class Function3tyBrandObj
|
{
|
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
|
}
|