From 0446b122504b83aef39087e91a960d53920bec05 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期二, 28 三月 2023 13:27:46 +0800
Subject: [PATCH] 2023年03月28日13:26:53
---
HDL_ON/Entity/Function/Function.cs | 4
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs | 451 +++++++++++++++++
HDL_ON/Common/Constant.cs | 1
HDL_ON/Common/HDLCommon.cs | 2
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs | 2
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockListPage.cs | 222 ++++++++
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/StackTraceLog.cs | 58 ++
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideDoorLockSend.cs | 216 ++++++++
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs | 511 +++++++++++++++++++
HDL_ON/HDL_ON.projitems | 6
HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/ObjectClass.cs | 82 +++
11 files changed, 1,553 insertions(+), 2 deletions(-)
diff --git a/HDL_ON/Common/Constant.cs b/HDL_ON/Common/Constant.cs
index 0dd7756..36d7dbc 100644
--- a/HDL_ON/Common/Constant.cs
+++ b/HDL_ON/Common/Constant.cs
@@ -309,6 +309,7 @@
/// HDL鍙瀵硅
/// </summary>
HDL_INTERPHONE,
+ DOOR_BELL,
}
/// <summary>
diff --git a/HDL_ON/Common/HDLCommon.cs b/HDL_ON/Common/HDLCommon.cs
index befc921..df2cec0 100644
--- a/HDL_ON/Common/HDLCommon.cs
+++ b/HDL_ON/Common/HDLCommon.cs
@@ -397,7 +397,7 @@
return;
}
///瑙嗛闂ㄩ攣
- HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.SkipRTVActivity(expantContent.devSerial, expantContent.deviceId,expantContent.spk,true);
+ HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.SkipRTVActivity(expantContent.devSerial, expantContent.deviceId,expantContent.spk);
}
catch { }
}
diff --git a/HDL_ON/Entity/Function/Function.cs b/HDL_ON/Entity/Function/Function.cs
index 3252d44..4b0511a 100644
--- a/HDL_ON/Entity/Function/Function.cs
+++ b/HDL_ON/Entity/Function/Function.cs
@@ -1375,6 +1375,10 @@
/// </summary>
public const string DoorLock = "security.door";
/// <summary>
+ /// 钀ょ煶瑙嗗睆闂ㄩ攣
+ /// </summary>
+ public const string VideoDoorLock = "security.door.ezviz";
+ /// <summary>
/// 闂ㄩ攣spk鍒楄〃
/// </summary>
/// <returns></returns>
diff --git a/HDL_ON/HDL_ON.projitems b/HDL_ON/HDL_ON.projitems
index 7f41d93..250013a 100644
--- a/HDL_ON/HDL_ON.projitems
+++ b/HDL_ON/HDL_ON.projitems
@@ -528,6 +528,12 @@
<Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31UsbMusicList.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\CommonMethod.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Music\A31FlieList.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideDoorLockSend.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\StackTraceLog.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\ObjectClass.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\CommonMethod.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockPage.cs" />
+ <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\VideoDoorLock\VideoDoorLockListPage.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
index 1c62cfb..2183231 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -628,7 +628,7 @@
view1.btnClick.MouseUpEventHandler += (sender, e) =>
{
this.identifier = "open_door";//寮�閿佷簨浠�
- this.VideoDoorLockAction(this, device, view1.btnState);
+ //this.VideoDoorLockAction(this, device, view1.btnState);
};
if (edit)
{
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
new file mode 100644
index 0000000..f68971a
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/CommonMethod.cs
@@ -0,0 +1,451 @@
+锘縰sing System;
+using HDL_ON.Entity;
+using System.Collections.Generic;
+using Shared;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
+{
+ /// <summary>
+ /// 钀ょ煶瑙嗛闂ㄩ攣鍏叡鏂规硶绫�
+ /// </summary>
+ public class CommonMethod
+ {
+ private Loading loading;
+ /// <summary>
+ /// 璁板綍褰撳墠鐣岄潰绱㈠紩鍊�
+ /// </summary>
+ private int pageLayoutIndexValue;
+
+ private static CommonMethod commonMethod = null;
+ /// <summary>
+ /// 鑾峰彇瀵硅薄
+ /// </summary>
+ public static CommonMethod Current
+ {
+ get
+ {
+ if (commonMethod == null)
+ {
+ commonMethod = new CommonMethod();
+ }
+
+ return commonMethod;
+
+ }
+
+ }
+
+ #region --------- 璺宠浆鍒癆ndroid閭h竟鐨勬柟娉�(钀ょ煶瑙嗛闂ㄩ攣) --------
+ /// <summary>
+ /// 璇诲彇浜戠鐨勪笂璁惧鍒楄〃(android婧愮敓娣诲姞璁惧鍒颁簯绔垚鍔熷悗)
+ /// <paramref name="devSerial"/>璁惧搴忓垪鍙�</param>
+ /// </summary>
+ public void SkipAddDeviceActivity(string devSerial)
+ {
+#if __IOS__
+
+#else
+ this.InitializationAndroidData((isBools) =>
+ {
+ if (!isBools) {
+ this.MainThread(()=> {
+ this.ShowTip("鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken澶辫触銆�");
+
+ });
+ }
+ HDLEzvizSdk.Instance.JumpToEZScanActivity(Application.Activity);
+ HDLEzvizSdk.SetAddCallback(new AndroidIHdlInterface((isBool, adnroidActionDevSerial) =>
+ {
+ if (isBool)
+ {
+
+ var list = VideDoorLockSend.Current.GetVideoDoorLockDeviceList(SPK.VideoDoorLock);
+ if (list.Count > 0)
+ {
+ var function = list.Find((o) => o.sid == adnroidActionDevSerial);
+ if (function != null)
+ {
+ this.SaveFunctionFile(function);
+ }
+ }
+
+
+ }
+
+ }));
+ });
+
+
+
+#endif
+
+ }
+ /// <summary>
+ /// 鎵撳紑瀹炴椂瑙嗛鐢婚潰
+ /// </summary>
+ /// <param name="deviceSerial">璁惧搴忓垪鍙�</param>
+ /// <param name="deviceId">璁惧id(浜戠涓奷eviceId)</param>
+ /// <param name="spk">璁惧spk(浜戦泙涓婂畾涔夊ソ鐨�)</param>
+ public void SkipRTVActivity(string deviceSerial, string deviceId, string spk)
+ {
+ #if __IOS__
+
+#else
+ this.InitializationAndroidData((isBools) =>
+ {
+ if (!isBools)
+ {
+ this.MainThread(() => {
+ this.ShowTip("鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken澶辫触銆�");
+
+ });
+ }
+ Video.View.ShowDialog.Currnet.ClickBox(Language.StringByID(StringId.laizimenlinghujiao), (dialog) =>
+ {
+ dialog.Close();
+ HDLEzvizSdk.Instance.JumpToEZRealPlayActivity(Application.Activity,deviceId,deviceSerial,spk);
+ }, (dialog) =>
+ {
+ dialog.Close();
+ });
+
+ });
+
+
+#endif
+ }
+ /// <summary>
+ /// 娴忚鍘嗗彶璁板綍
+ /// </summary>
+ public void SkipRecordActivity(string deviceId)
+ {
+ this.InitializationAndroidData((s)=> {
+
+
+ //HDLEzvizSdk.Instance.JumpLockHistoryActivity(Application.Activity, deviceId);
+
+ });
+ //鏈疄鐜�
+ //this.InitializationAndroidData();
+ //
+ }
+ /// <summary>
+ /// 涓存椂瀵嗙爜寮�闂�
+ /// <paramref name="deviceId"/>
+ /// </summary>
+ public void SkipPSWActivity(string deviceId)
+ {
+#if __IOS__
+
+#else
+ this.InitializationAndroidData((isBools) =>
+ {
+ if (!isBools)
+ {
+ this.MainThread(() =>
+ {
+ this.ShowTip("鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken澶辫触銆�");
+
+ });
+ }
+ HDLEzvizSdk.Instance.JumpTempPasswordActivity(Application.Activity, deviceId);
+
+ });
+#endif
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栬悿鐭砈DK(瀹為檯灏辨槸浼犲弬鏁�,澶氭璋冪敤涔熸病鏈夊奖鍝�)
+ /// </summary>
+ public void InitializationAndroidData(Action<bool> action)
+ {
+
+
+ bool isBool = true;
+ this.SunThread(() =>
+ {
+ try
+ {
+ //鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken
+ var ezChildAccessToken = VideDoorLockSend.Current.GetEZGetChildToken();
+ this.MainThread(() =>
+ {
+ if (string.IsNullOrEmpty(ezChildAccessToken))
+ {
+ //Token
+ isBool = false;
+ return;
+ }
+ Application.RunOnMainThread(() =>
+ {
+#if __IOS__
+ ////iOS
+ ////鍒濆鍖栬悿鐭充簯SDK锛屼腑鏂囧浗鍐卥ey銆佽嫳鏂囨捣澶杒ey 寮�鍙戣�呰处鍙蜂娇鐢ㄥ簲鐢ㄥ寘鍚嶇敵璇风殑APPKEY锛屼笉鍚屽寘鍚嶅簲鐢ㄩ渶閰嶇疆涓嶅悓鐨凙PPKEY
+ //EZSDK.IOS.EZSDK.SharedInstance().InitLibWithAppKey("1aa98a90489b4838b966b57018b4b04b", "1aa98a90489b4838b966b57018b4b04b");
+ ////1.璁剧疆鎵�闇�娌充笢鐨凙ccessToken鍜孯efreshToken銆佸煙鍚嶅湴鍧�
+ //EZSDK.IOS.EZSDK.SharedInstance().SetHDlAccessToken(UserVideoDoorLockInfo.Current.LoginTokenString, UserVideoDoorLockInfo.Current.RefreshToken);
+ //EZSDK.IOS.EZSDK.SharedInstance().SetRequestHttpsHostAndPlatform(OnAppConfig.Instance.RequestHttpsHost, 1, DB_ResidenceData.Instance.CurrentRegion.id);
+ ////2.璁剧疆钀ょ煶瀛愯处鍙风殑AccessToken鍒癝DK
+ //EZSDK.IOS.EZSDK.SharedInstance().SetEZAccessToken(ezChildAccessToken);
+ //////3.鎵撳紑鎽勫儚澶磋澶囧垪琛ㄩ〉闈�
+ //EZSDK.IOS.EZSDK.SharedInstance().Go2EZvizMonitor();
+ ////EZSDK.IOS.EZDeviceInfo info = new EZSDK.IOS.EZDeviceInfo();
+ ////info.de
+ ////EZSDK.IOS.EZSDK.Play(info);
+#else
+ HDLEzvizSdk.Instance.Init(Application.Activity.Application, ezChildAccessToken, UserInfo.Current.LoginTokenString, UserInfo.Current.RefreshToken, OnAppConfig.Instance.RequestHttpsHost, "1aa98a90489b4838b966b57018b4b04b", 1, DB_ResidenceData.Instance.CurrentRegion.id);
+
+#endif
+ });
+
+ });
+
+ }
+ catch (Exception e)
+ {
+ }
+ finally
+ {
+ this.MainThread(() =>
+ {
+ action?.Invoke(isBool);
+ });
+ }
+ });
+ }
+
+ /// <summary>
+ /// 鏇存崲浣忓畢
+ /// </summary>
+ /// <param name="home">瀵硅薄</param>
+ public void ChangeCurrHome(RegionInfoRes home)
+ {
+ if (DB_ResidenceData.Instance.CurrentRegion.id == home.id || string.IsNullOrEmpty(home.id)) return;
+
+ }
+#endregion
+
+ /// <summary>
+ /// 钀ょ煶瑙嗛闂ㄩ攣鐨勫浘鏍�
+ /// <param name="comerom">鏉ヨ嚜閭i噷</param>
+ /// </summary>
+ public string GetVideoDoorLockIcon(Comerom comerom)
+ {
+ if (comerom == Comerom.collect)
+ {
+ return "FunctionIcon/DoorLock/VideoDoorLockOpen.png";
+ }
+ else
+ {
+ return "FunctionIcon/DoorLock/VideoDoorlockClose.png";
+ }
+
+ }
+#region --------- 鍔熻兘鏂囦欢淇濆瓨锛屽垹闄� --------
+ /// <summary>
+ /// 淇濆瓨鏈湴鏂囦欢
+ /// </summary>
+ /// <param name="function">褰撳墠璁惧</param>
+ public void SaveFunctionFile(Function function)
+ {
+ if (function == null) return;
+ function.AssembleStatus();
+ function.SaveFunctionFile();
+ FunctionList.List.IniFunctionList(function.savePath, true);
+ MainPage.Log($"鏂囦欢淇濆瓨->{function.name}-->{function.spk}");
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鏈湴鏂囦欢
+ /// </summary>
+ /// <param name="function">褰撳墠璁惧</param>
+ public void DeleteFunction(Function function)
+ {
+ if (function == null) return;
+ FunctionList.List.DeleteFunction(function);
+ MainPage.Log($"鏂囦欢鍒犻櫎->{function.name}-->{function.spk}");
+ }
+#endregion
+ /// <summary>
+ /// 鑾峰彇Loading瀵硅薄
+ /// </summary>
+ /// <returns></returns>
+ public Loading Loading
+ {
+ get
+ {
+ this.MainThread(() =>
+ {
+ //if (loading != null && this.pageLayoutIndexValue == MainPage.BasePageView.ChildrenCount - 1)
+ //{
+ // //闃叉浜岄噸娣诲姞瀵硅薄
+ // return;
+ //}
+ if (loading == null)//|| MainPage.BasePageView.ChildrenCount < 1)
+ {
+ loading = new Loading();
+ }
+ //loading.BringToFront();
+ Application.MainPage.AddChidren(loading);
+ //View view = MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1);
+ //if (view is ViewGroup)
+ //{
+ // pageLayoutIndexValue = MainPage.BasePageView.ChildrenCount - 1;
+ // ((ViewGroup)view).AddChidren(loading);
+ //}
+ });
+ return loading;
+ }
+
+ }
+
+ /// <summary>
+ /// 鑾峰彇钀ょ煶瑙嗛闂ㄩ攣鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ public List<Function> GetVideoDoorLockList()
+ {
+ //var list = FunctionList.List.GetVideoDoorLockList();
+#if DEBUG
+ //list.Add(new Function { name = "瑙嗛闂ㄩ攣涓�", sid = "23456789", spk = SPK.VideoDoorLock });
+ //list.Add(new Function { name = "瑙嗛闂ㄩ攣浜�", sid = "2345678922", spk = SPK.VideoDoorLock });
+#endif
+ return new List<Function>();
+ }
+#region ---------鑷畾涔夌嚎绋�(瀛愮嚎绋嬶紝涓荤嚎绋�)--------
+ /// <summary>
+ /// 瀛愮嚎绋�
+ /// </summary>
+ /// <paramref name="tipType"/>鏄惁瑕佹彁绀洪敊璇俊鎭�(榛樿鏄剧ず)<paramref>
+ /// <param name="action"></param>
+ public void SunThread(Action action, TipType tipType = TipType.confirmation)
+ {
+ new System.Threading.Thread(() =>
+ {
+ try
+ {
+ action?.Invoke();
+ }
+ catch (Exception e)
+ {
+ this.ShowAlert(e, tipType);
+ }
+ })
+ { IsBackground = true }.Start();
+
+ }
+ /// <summary>
+ /// 涓荤嚎绋�(UI鏇存柊)
+ /// </summary>
+ /// <paramref name="tipType"/>鏄惁瑕佹彁绀洪敊璇俊鎭�(榛樿鏄剧ず)<paramref>
+ /// <param name="action"></param>
+ public void MainThread(Action action, TipType tipType = TipType.confirmation)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ try
+ {
+ action?.Invoke();
+ }
+ catch (Exception e)
+ {
+ this.ShowAlert(e, tipType);
+ }
+ });
+
+ }
+#endregion
+#region --------- 鎻愮ず妗嗭紝纭妗� --------
+ /// <summary>
+ /// 瀵硅瘽妗�(鍙绋嬪簭鎶ラ敊鐨勬椂鍊欐墠鐢ㄥ埌)
+ /// </summary>
+ /// <paramref name="e"/>寮傚父瀵硅薄<paramref>
+ /// <paramref name="tipType"/>鏄惁瑕佹彁绀洪敊璇俊鎭�(榛樿鏄剧ず)<paramref>
+ private void ShowAlert(Exception e, TipType tipType)
+ {
+
+ if (tipType != TipType.confirmation)
+ {
+ return;
+ }
+ Application.RunOnMainThread(() =>
+ {
+ string msg = e.Message + "\r\n" + e.StackTrace;
+ Alert alert = new Alert("鎶辨瓑绋嬪簭鍑洪敊浜�.", "鎸塡"纭畾\"鑳借幏鍙栨洿璇︾粏鐨勯敊璇俊鎭�.", "鍙栨秷", "纭畾");
+ alert.Show();
+ alert.ResultEventHandler += (alerts, isBool) =>
+ {
+ alert.Dismiss();
+ if (isBool)
+ {
+ StackTraceLog stackTraceLog = new StackTraceLog(msg);
+ stackTraceLog.Show();
+ }
+ };
+ });
+ }
+ /// <summary>
+ /// 淇℃伅鎻愮ず绐楀彛锛岃嚜鍔ㄥ叧闂�
+ /// </summary>
+ /// <param name="msg">鎻愮ず閿欒鏂囨湰</param>
+ public void ShowTip(string msg, int time = 2)
+ {
+ Application.RunOnMainThread(() =>
+ {
+ new PublicAssmebly().TipMsgAutoClose(msg, false, time * 1000);
+ });
+ }
+#endregion
+ /// <summary>
+ /// 寮规绫诲瀷
+ /// </summary>
+ public enum TipType
+ {
+ none,//鏃犳彁绀�
+ flicker,//闂儊妗�
+ confirmation//纭妗�
+ }
+ /// <summary>
+ /// 琛ㄧず鏉ヨ嚜閭d釜鐣岄潰
+ /// </summary>
+ public enum Comerom
+ {
+ function,//鍔熻兘
+ collect,//鏀惰棌
+ room,//鎴块棿
+ push,//鎺ㄩ��
+ }
+#if __IOS__
+
+#else
+
+ /// <summary>
+ ///
+ /// </summary>
+ public class AndroidIHdlInterface : Java.Lang.Object, IHdlInterface
+ {
+
+ Action<bool,string> mAction;
+ public AndroidIHdlInterface(Action<bool,string> action)
+ {
+ mAction = action;
+ }
+ /// <summary>
+ ///
+ /// </summary>
+ /// <param name="p0">true鏄叆缃戞垚鍔�(婧愮敓鍥炶皟杩斿洖)</param>
+ /// <param name="p1">璁惧鐨勫簭鍒楀寲(婧愮敓鍥炶皟杩斿洖)</param>
+ public void AddCallback(bool p0, string p1)
+ {
+ mAction?.Invoke(p0,p1);
+ }
+
+
+ }
+
+#endif
+ }
+
+
+
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/ObjectClass.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/ObjectClass.cs
new file mode 100644
index 0000000..5aa77bb
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/ObjectClass.cs
@@ -0,0 +1,82 @@
+锘縰sing System;
+namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
+{
+ public class ObjectClass
+ {
+
+
+ }
+ /// <summary>
+ /// 鐢ㄦ埛淇℃伅(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ public class UserVideoDoorLockInfo
+ {
+ /// <summary>
+ /// 鐢ㄦ埛id
+ /// </summary>
+ public string extUserId = string.Empty;
+ /// <summary>
+ /// 鐢ㄦ埛鍚嶇О
+ /// </summary>
+ public string extUserName = string.Empty;
+
+ }
+ /// <summary>
+ /// 闂ㄩ攣鐘舵��(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ public class VideoDoorLockInfo
+ {
+ /// <summary>
+ /// 閿佺姸鎬侊紙lock:閿侊紱unlock:瑙i攣锛�
+ /// </summary>
+ public string lockStatus = string.Empty;
+ /// <summary>
+ /// 闂ㄧ姸鎬侊紙open锛氬紑锛沜lose锛氬叧锛�
+ /// </summary>
+ public string doorStatus = string.Empty;
+
+ }
+
+ /// <summary>
+ /// 鐢垫睜璇︽儏(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ public class CellInfo
+ {
+ /// <summary>
+ /// 鐢甸噺
+ /// </summary>
+ public string remain = string.Empty;
+ /// <summary>
+ /// 鐢垫睜鍚嶇О
+ /// </summary>
+ public string name = string.Empty;
+
+ }
+ /// <summary>
+ /// 鎺ㄩ�佸唴瀹瑰璞�
+ /// </summary>
+ public class ExpantContent
+ {
+ /// <summary>
+ /// 璁惧搴忓垪鍙�
+ /// </summary>
+ public string devSerial = string.Empty;
+ /// <summary>
+ /// 璁惧id
+ /// </summary>
+ public string deviceId = string.Empty;
+ /// <summary>
+ /// 涓嶇煡閬撴槸鍟�
+ /// </summary>
+ public string interphoneTypeEnum = string.Empty;
+ /// <summary>
+ /// 涓嶇煡閬撴槸鍟�
+ /// </summary>
+ public string subToken = string.Empty;
+ /// <summary>
+ /// 浜戦泙涓婂畾涔夌殑璁惧spk
+ /// </summary>
+ public string spk = string.Empty;
+ }
+
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/StackTraceLog.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/StackTraceLog.cs
new file mode 100644
index 0000000..05ad631
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/StackTraceLog.cs
@@ -0,0 +1,58 @@
+锘縰sing System;
+using HDL_ON.UI.CSS;
+using HDL_ON.UI.Music;
+using Shared;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
+{
+ public class StackTraceLog
+ {
+ /// <summary>
+ /// 鍫嗗彔璺熻釜鏃ュ織
+ /// </summary>
+ public string msg;
+
+ public StackTraceLog(string msg)
+ {
+ this.msg = msg;
+ }
+ public void Show()
+ {
+
+ Dialog dialog = new Dialog()
+ {
+ BackgroundColor = CSS_Color.textWhiteColor,
+ };
+ dialog.Show();
+ TopView topView = new TopView();
+ topView.topNameBtn.Text="閿欒鏃ュ織淇℃伅";
+ dialog.AddChidren(topView.TopFLayoutView());
+ topView.clickBackBtn.MouseUpEventHandler += (sen, e) =>
+ {
+ dialog.Close();
+ };
+
+ var middleFl = new FrameLayout
+ {
+ Y = topView.fLayout.Bottom,
+ Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+ };
+ dialog.AddChidren(middleFl);
+
+ Button btnLogText = new Button
+ {
+ //TextSize = TextSize.Text14,
+ TextColor = MusicColor.Text18Color,
+ Width = Application.GetRealWidth(H_W.W - 16 - 16),
+ Height = middleFl.Height,
+ X = Application.GetRealWidth(16),
+ Text = this.msg,
+ TextAlignment = TextAlignment.TopLeft,
+ IsMoreLines = true,
+ };
+ middleFl.AddChidren(btnLogText);
+
+
+ }
+ }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideDoorLockSend.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideDoorLockSend.cs
new file mode 100644
index 0000000..fe1a0f0
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideDoorLockSend.cs
@@ -0,0 +1,216 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Threading;
+using HDL_ON.DAL.Server;
+using HDL_ON.Entity;
+using Shared;
+using static HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock.CommonMethod;
+
+
+namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
+{
+ /// <summary>
+ /// 钀ょ煶瑙嗛闂ㄩ攣鏁版嵁鍙戦��
+ /// </summary>
+ public class VideDoorLockSend
+ {
+
+ private static VideDoorLockSend send = null;
+ /// <summary>
+ /// 鑾峰彇褰撳墠鐨勫璞�
+ /// </summary>
+ public static VideDoorLockSend Current
+ {
+ get
+ {
+ if (send == null)
+ {
+ send = new VideDoorLockSend();
+ }
+
+ return send;
+ }
+ }
+ /// <summary>
+ /// 瑙g粦璁惧(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ /// <param name="function">褰撳墠鐨勮澶�</param>
+ /// <param name="action">鍥炶皟缁撴灉</param>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�,榛樿鎻愮ず</param>
+ public void DelDevice(Function function, Action<bool> action, TipType tipType = TipType.flicker)
+ {
+ new Thread(() =>
+ {
+ try
+ {
+ Dictionary<string, object> d = new Dictionary<string, object>();
+ d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+ d.Add("deviceSerial", function.sid);//绛夊悓闂ㄩ攣搴忓垪鍙�
+ d.Add("platform", 1);//骞冲彴
+ var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_DeleteDevice, "鍒犻櫎钀ょ煶闂ㄩ攣璁惧");
+ if (!this.DataChecking(responsePackNew, tipType))
+ {
+ return;
+ }
+
+ if (function != null)
+ {
+ action?.Invoke(true);
+ }
+ }
+ catch (Exception s)
+ {
+ }
+ })
+ { IsBackground = true }.Start();
+
+ }
+ /// <summary>
+ /// 鑾峰彇闂ㄩ攣鐘舵��(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ /// <param name="function">褰撳墠鐨勮澶�</param>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�,榛樿鎻愮ず</param>
+ /// <param name="return">杩斿洖缁撴灉涓嶄細涓簄ull</param>
+ public VideoDoorLockInfo GetVideoDoorLockState(Function function, TipType tipType = TipType.flicker)
+ {
+
+ Dictionary<string, object> d = new Dictionary<string, object>();
+ d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+ d.Add("deviceId", function.deviceId);
+ var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Lockstatus, "鑾峰彇钀ょ煶瑙嗛闂ㄩ攣鐘舵��");
+ if (!this.DataChecking(responsePackNew,tipType))
+ {
+ return new VideoDoorLockInfo();
+ }
+
+ var videoDoorLockInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<VideoDoorLockInfo>(responsePackNew.Data.ToString());
+ if (videoDoorLockInfo == null)
+ {
+ return new VideoDoorLockInfo();
+ }
+ return videoDoorLockInfo;
+
+
+
+ }
+ /// <summary>
+ /// 鑾峰彇鐢垫睜鐢甸噺(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ /// <param name="function">褰撳墠鐨勮澶�</param>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�,榛樿鎻愮ず</param>
+ /// <param name="return">杩斿洖缁撴灉涓嶄細涓簄ull</param>
+ public CellInfo GetCellValue(Function function, TipType tipType = TipType.flicker)
+ {
+ Dictionary<string, object> d = new Dictionary<string, object>();
+ d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+ d.Add("deviceId", function.deviceId);
+ var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_Details, "鑾峰彇钀ょ煶闂ㄩ攣璁惧鐢甸噺");
+ if (!this.DataChecking(responsePackNew,tipType))
+ {
+ return new CellInfo();
+ }
+ var cellInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<CellInfo>(responsePackNew.Data.ToString());
+ if (cellInfo == null)
+ {
+ return new CellInfo();
+ }
+
+ return cellInfo;
+
+ }
+ /// <summary>
+ /// 鑾峰彇闂ㄩ攣鐢ㄦ埛鍒楄〃(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ /// <param name="function">褰撳墠鐨勮澶�</param>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�,榛樿鎻愮ず</param>
+ /// <param name="return">杩斿洖缁撴灉涓嶄細涓簄ull</param>
+ public List<UserVideoDoorLockInfo> GetVideoDoorLockUserListInfo(Function function, TipType tipType = TipType.flicker)
+ {
+ Dictionary<string, object> d = new Dictionary<string, object>();
+ d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+ d.Add("deviceId", function.deviceId);
+ var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_UserList, "鑾峰彇钀ょ煶闂ㄩ攣鐢ㄦ埛鍒楄〃");
+ if (!this.DataChecking(responsePackNew, tipType))
+ {
+ return new List<UserVideoDoorLockInfo>();
+ }
+ var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UserVideoDoorLockInfo>>(responsePackNew.Data.ToString());
+ if (list == null)
+ {
+ return new List<UserVideoDoorLockInfo>();
+ }
+ return list;
+ }
+ /// <summary>
+ /// 鑾峰彇闂ㄩ攣璁惧鍒楄〃(钀ょ煶瑙嗛闂ㄩ攣)
+ /// </summary>
+ /// <param name="spk">鎸囧畾spk鑾峰彇</param>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�,榛樿鎻愮ず</param>
+ /// <returns>杩斿洖缁撴灉涓嶄細涓簄ull</returns>
+ public List<Function> GetVideoDoorLockDeviceList(string spk, TipType tipType = TipType.flicker)
+ {
+
+ Dictionary<string, object> d = new Dictionary<string, object>();
+ d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
+ d.Add("spk", spk);
+ var responsePackNew = UI.Music.SendMethod.Current.RequestServerhomeId(d, NewAPI.Api_Post_UserList, "鑾峰彇钀ょ煶闂ㄩ攣璁惧鍒楄〃");
+ if (!this.DataChecking(responsePackNew, tipType))
+ {
+ return new List<Function>();
+ }
+ var list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Function>>(responsePackNew.Data.ToString());
+ if (list == null)
+ {
+ return new List<Function>();
+ }
+ return list;
+ }
+ /// <summary>
+ /// 鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken
+ /// </summary>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�,榛樿鎻愮ず</param>
+ public string GetEZGetChildToken(TipType tipType = TipType.flicker)
+ {
+ //鍏堣幏鍙栬悿鐭充簯瀛愯处鍙穞oken
+ var responsePackNew = new HttpServerRequest().EZGetChildToken();
+ if (!this.DataChecking(responsePackNew, tipType))
+ {
+ return "";
+ }
+ return responsePackNew.Data.ToString();
+ }
+ /// <summary>
+ /// 妫�楠屾暟鎹洖澶嶆垚鍔熸垨鑰呭け璐�
+ /// </summary>
+ /// <param name="responsePackNew">鍥炲鏁版嵁瀵硅薄</param>
+ /// <param name="tipType">鏄惁闇�瑕佹彁绀�</param>
+ /// <returns></returns>
+ private bool DataChecking(ResponsePackNew responsePackNew, TipType tipType)
+ {
+ if (responsePackNew.Data == null || responsePackNew.Code != "0" || responsePackNew.Data.ToString() == "")
+ {
+ if (TipType.flicker == tipType)
+ {
+ if (responsePackNew == null)
+ {
+ responsePackNew = new ResponsePackNew { message = "娌″洖澶�,璇风‘璁ょ綉缁滄槸鍚︽甯�.", Code = "-1", };
+ }
+ Application.RunOnMainThread(() =>
+ {
+ //new Tip()
+ //{
+ // CloseTime = 1,
+ // Text = responsePackNew.message + "(" + responsePackNew.Code + ")",
+ // Direction = AMPopTipDirection.None,
+ //}.Show(MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1));
+ CommonMethod.Current.ShowTip(responsePackNew.message + "(" + responsePackNew.Code + ")");
+ });
+ }
+ return false;
+ }
+ return true;
+ }
+
+
+ }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockListPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockListPage.cs
new file mode 100644
index 0000000..11c271d
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockListPage.cs
@@ -0,0 +1,222 @@
+锘縰sing Shared;
+using HDL_ON.Stan;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+
+namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
+{
+ /// <summary>
+ /// 瑙嗛闂ㄩ攣鍒楄〃鐣岄潰
+ /// </summary>
+ public class VideoDoorLockListPage : EditorCommonForm
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+
+ /// <summary>
+ /// 闂ㄩ攣璁惧鍒楄〃
+ /// </summary>
+ private List<Function> listDevice = new List<Function>();
+ /// <summary>
+ /// 鐢垫睜鎺т欢鍒楄〃(key:璁惧鐨剆id)
+ /// </summary>
+ private Dictionary<string, BatteryPersentControl> dicBatteryContr = new Dictionary<string, BatteryPersentControl>();
+ /// <summary>
+ /// 鍒楄〃鎺т欢
+ /// </summary>
+ private VerticalListControl listView = null;
+ /// <summary>
+ /// 鍒犻櫎璁惧鍚庨渶瑕佹洿鏂扮晫闈㈢殑鍥炶皟
+ /// </summary>
+ public Action action;
+
+
+ #endregion
+
+ #region 鈻� 鍒濆鍖朹____________________________
+
+ public VideoDoorLockListPage(Action action) {
+ this.action = action;
+ }
+
+
+ /// <summary>
+ /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+ /// </summary>
+ /// <param name="i_listDevice">闂ㄩ攣璁惧鍒楄〃</param>
+ public void ShowForm(List<Function> i_listDevice)
+ {
+ this.listDevice.AddRange(i_listDevice);
+ //鏅鸿兘闂ㄩ攣
+ base.SetTitleText(Language.StringByID(StringId.shipinmensuo));
+
+ //鍒濆鍖栦腑閮ㄤ俊鎭�
+ this.InitMiddleFrame();
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+ /// </summary>
+ private void InitMiddleFrame()
+ {
+ //娓呯┖bodyFrame
+ this.ClearBodyFrame();
+
+ string nowSelectId = string.Empty;
+ //妤煎眰涓嬫媺鍥炬爣
+ var btnFloor = new NormalViewControl(500, Application.GetRealHeight(16), false);
+ var btnFloorIcon = new IconViewControl(16);
+ btnFloorIcon.X = HdlControlResourse.XXLeft;
+ btnFloorIcon.Y = Application.GetRealHeight(18);
+ btnFloorIcon.UnSelectedImagePath = "Public/DownIcon.png";
+ bodyFrameLayout.AddChidren(btnFloorIcon);
+ btnFloorIcon.ButtonClickEvent += (sender, e) =>
+ {
+ //鏄剧ず涓嬫媺鍒楄〃
+ var form = new FloorRoomSelectPopupView();
+ form.ShowDeviceFunctionView(btnFloor, this.listDevice, (selectId, listFunc) =>
+ {
+ btnFloor.Width = btnFloor.GetRealWidthByText();//閲嶇疆鏂囨湰瀹藉害
+ nowSelectId = selectId;
+ //閲嶆柊鍒濆鍖栭棬閿佸垪琛ㄦ帶浠�
+ this.InitDoorListControl(listFunc);
+
+ }, nowSelectId);
+ };
+ //妤煎眰
+ btnFloor.X = btnFloorIcon.Right + Application.GetRealWidth(2);
+ btnFloor.TextColor = CSS_Color.FirstLevelTitleColor;
+ btnFloor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
+ btnFloor.Text = DB_ResidenceData.Instance.CurFloor.roomName;
+ //btnFloor.Width = btnFloor.GetRealWidthByText();
+ bodyFrameLayout.AddChidren(btnFloor);
+ //璁╁畠鐩稿鍥炬爣灞呬腑
+ btnFloor.Y = btnFloorIcon.Y + (btnFloorIcon.Height - btnFloor.Height) / 2;
+ btnFloor.ButtonClickEvent += (sender, e) =>
+ {
+ btnFloorIcon.ButtonClickEvent(null, null);
+ };
+
+ //鍒楄〃鎺т欢
+ this.listView = new VerticalListControl();
+ listView.Y = Application.GetRealHeight(53);
+ listView.Height = bodyFrameLayout.Height - Application.GetRealHeight(53);
+ bodyFrameLayout.AddChidren(listView);
+
+ //鍒濆鍖栭棬閿佸垪琛ㄦ帶浠�
+ this.InitDoorListControl(this.listDevice);
+ }
+
+ #endregion
+
+ #region 鈻� 娣诲姞闂ㄩ攣鎺т欢_______________________
+
+ /// <summary>
+ /// 鍒濆鍖栭棬閿佸垪琛ㄦ帶浠�
+ /// </summary>
+ private void InitDoorListControl(List<Function> i_listDevice)
+ {
+ this.listView.RemoveAll();
+ this.dicBatteryContr = new Dictionary<string, BatteryPersentControl>();
+
+ //鐢熸垚闂ㄩ攣鎺т欢
+ foreach (var device in i_listDevice)
+ {
+ this.AddDoorControl(device);
+ }
+ }
+
+ /// <summary>
+ /// 娣诲姞闂ㄩ攣鎺т欢
+ /// </summary>
+ /// <param name="i_device">闂ㄩ攣瀵硅薄</param>
+ private void AddDoorControl(Function i_device)
+ {
+ //鐧借壊鑳屾櫙瀹瑰櫒
+ var frameBack = new FrameLayoutStatuControl();
+ frameBack.Width = Application.GetRealWidth(343);
+ frameBack.Height = Application.GetRealHeight(96);
+ frameBack.Radius = (uint)Application.GetRealWidth(12);
+ frameBack.Gravity = Gravity.CenterHorizontal;
+ frameBack.BackgroundColor = CSS_Color.MainBackgroundColor;
+ this.listView.AddChidren(frameBack);
+ //闂ㄩ攣鍥炬爣
+ var btnIcon = new IconViewControl(32);
+ btnIcon.X = Application.GetRealWidth(10);
+ btnIcon.Y = Application.GetRealHeight(15);
+ btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
+ frameBack.AddChidren(btnIcon, ChidrenBindMode.BindEvent);
+ //璁惧鍚嶅瓧
+ var btnName = new Button();
+ btnName.X = btnIcon.Right + Application.GetRealWidth(12);
+ btnName.Y = Application.GetRealHeight(12);
+ btnName.Width = Application.GetRealWidth(150);
+ btnName.Height = Application.GetRealHeight(20);
+ btnName.TextColor = CSS_Color.FirstLevelTitleColor;
+ btnName.TextAlignment = TextAlignment.CenterLeft;
+ btnName.Text = i_device.name;
+ frameBack.AddChidren(btnName, ChidrenBindMode.BindEvent);
+ //鎴块棿
+ var btnRoom = new Button();
+ btnRoom.X = btnName.X;
+ btnRoom.Y = btnName.Bottom + Application.GetRealHeight(4);
+ btnRoom.Width = Application.GetRealWidth(150);
+ btnRoom.Height = Application.GetRealHeight(15);
+ btnRoom.TextColor = CSS_Color.PromptingColor1;
+ btnRoom.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
+ btnRoom.TextAlignment = TextAlignment.CenterLeft;
+ btnRoom.Text = i_device.GetRoomListName();
+ frameBack.AddChidren(btnRoom, ChidrenBindMode.BindEvent);
+ //鐢垫睜鍥炬爣
+ var btnBattery = new BatteryPersentControl();
+ btnBattery.Y = Application.GetRealHeight(62);
+ //frameBack.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
+ btnBattery.InitControl();
+ btnBattery.SetValue(80);
+ btnBattery.X = frameBack.Width - btnBattery.Width - Application.GetRealWidth(12);
+ this.dicBatteryContr[i_device.sid] = btnBattery;
+ frameBack.ButtonClickEvent += (sender, e) =>
+ {
+
+ var form = new VideoDoorLockPage(i_device, btnName, btnRoom, CommonMethod.Comerom.function,()=> {
+ this.CloseForm();
+ this.action?.Invoke();
+ });
+ MainPage.BasePageView.AddChidren(form);
+ MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+ form.Show();
+
+ };
+
+ //搴曢儴鍐嶅姞涓棿璺�
+ var frameSpace = new FrameLayout();
+ frameSpace.Height = Application.GetRealHeight(12);
+ this.listView.AddChidren(frameSpace);
+ }
+
+ #endregion
+
+
+ #region 鈻� 璁惧鐘舵�佹帹閫乢______________________
+
+ /// <summary>
+ /// 璁惧鐘舵�佹帹閫�
+ /// </summary>
+ /// <param name="i_LocalDevice"></param>
+ public override void DeviceStatuPush(Function i_LocalDevice)
+ {
+ //涓嶆槸鐩爣璁惧
+ if (this.dicBatteryContr.ContainsKey(i_LocalDevice.sid) == false)
+ {
+ return;
+ }
+
+ }
+
+ #endregion
+
+
+ }
+}
diff --git a/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs
new file mode 100644
index 0000000..49bbbf1
--- /dev/null
+++ b/HDL_ON/UI/UI2/FuntionControlView/VideoDoorLock/VideoDoorLockPage.cs
@@ -0,0 +1,511 @@
+锘縰sing Shared;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HDL_ON.UI.CSS;
+using HDL_ON.Entity;
+using HDL_ON.DriverLayer;
+using HDL_ON.UI.Music;
+using HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock;
+
+namespace HDL_ON.UI
+{
+ /// <summary>
+ /// 瑙嗛闂ㄩ攣鐨勬帶鍒剁晫闈�
+ /// </summary>
+ public class VideoDoorLockPage : FrameLayout
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
+ /// <summary>
+ /// 璁惧
+ /// </summary>
+ private Function device;
+ /// <summary>
+ /// 涓婁竴绾х晫闈㈢殑璁惧鍚嶅瓧鎺т欢
+ /// </summary>
+ private Button btnDeviceName;
+ /// <summary>
+ /// 涓婁竴绾х晫闈㈢殑鎴块棿鍚嶅瓧鎺т欢
+ /// </summary>
+ private Button btnRoomName;
+ /// <summary>
+ /// 澶撮儴甯冨眬
+ /// </summary>
+ private TopView topView;
+ /// <summary>
+ /// 褰撳墠璁惧鍚嶇О
+ /// </summary>
+ private Button btnCurrDeviceName;
+ /// <summary>
+ /// 鍖哄煙
+ /// </summary>
+ private Button btnCurrDeviceRoom;
+ /// <summary>
+ /// 鐢甸噺鐖舵帶浠�
+ /// </summary>
+ private FrameLayout cellFrame;
+ /// <summary>
+ /// 鐢甸噺
+ /// </summary>
+ private Button btnCell;
+ /// <summary>
+ /// 鐢甸噺杩涘害鏉�
+ /// </summary>
+ private DiyArcSeekBar cellDiyArcSeekBar;
+ /// <summary>
+ ///鏀惰棌鍥炬爣
+ /// </summary>
+ private Button btnCollectIcon;
+ /// <summary>
+ /// 闂ㄩ攣鐘舵��
+ /// </summary>
+ private Button btnDoorLockIcon;
+ /// <summary>
+ /// 瀹炴椂瑙嗛
+ /// </summary>
+ private CustomFrameLayout rtvFL;
+ /// <summary>
+ /// 涓存椂瀵嗙爜
+ /// </summary>
+ private CustomFrameLayout pswFL;
+ /// <summary>
+ /// 鍘嗗彶璁板綍
+ /// </summary>
+ private CustomFrameLayout recordFL;
+
+ /// <summary>
+ /// 琛ㄧず鏉ヨ嚜閭d釜鐣岄潰
+ /// </summary>
+ private CommonMethod.Comerom comerom;
+ /// <summary>
+ /// 鍒犻櫎璁惧鍚庨渶瑕佹洿鏂扮晫闈㈢殑鍥炶皟
+ /// </summary>
+ public Action action;
+ #endregion
+
+
+ /// <summary>
+ /// 鏋勯�犲嚱鏁�
+ /// </summary>
+ /// <param name="function">璁惧</param>
+ /// <param name="btnDeviceName">涓婁竴绾х晫闈㈢殑璁惧鍚嶅瓧鎺т欢(娉�:涓嶈兘浼爊ull,娌℃湁鍙互浼爊ew Button())</param>
+ /// <param name="btnRoomName">涓婁竴绾х晫闈㈢殑鎴块棿鍚嶅瓧鎺т欢(娉�:涓嶈兘浼爊ull,娌℃湁鍙互浼爊ew Button())</param>
+ public VideoDoorLockPage(Function function, Button btnDeviceName, Button btnRoomName, CommonMethod.Comerom comerom, Action action)
+ {
+ this.device = function;
+ this.btnDeviceName = btnDeviceName;
+ this.btnRoomName = btnRoomName;
+ this.comerom = comerom;
+ this.action = action;
+
+ }
+
+ public void Show()
+ {
+ //鍒濆鍖朥I
+ this.InitUI();
+ //鍒濆鍖栦簨浠�
+ this.EventListener();
+ //璇诲彇鏁版嵁
+ this.ReadData();
+
+ }
+
+
+ /// <summary>
+ /// 鍒濆鍖栫晫闈�
+ /// </summary>
+ private void InitUI()
+ {
+ #region ---鐣岄潰甯冨眬---
+ this.BackgroundColor = MusicColor.ViewColor;
+ this.topView = new TopView();
+ this.topView.setBtn.Visible = true;
+ this.topView.topNameBtn.TextID = StringId.shipinmensuo;
+ this.AddChidren(topView.TopFLayoutView());
+ var middleFl = new FrameLayout
+ {
+ Y = topView.fLayout.Bottom,
+ Height = Application.GetRealHeight(H_W.H - H_W.T_Height),
+ };
+ this.AddChidren(middleFl);
+
+ var whiteFl = new FrameLayout
+ {
+ Y = Application.GetRealHeight(24),
+ X = Application.GetRealWidth(24),
+ Height = Application.GetRealHeight(526),
+ Width = Application.GetRealWidth(327),
+ BackgroundImagePath = "MusicIcon/playBj.png",
+ Name = "fl",
+ };
+ middleFl.AddChidren(whiteFl);
+
+ btnCollectIcon = new Button
+ {
+ X = Application.GetRealWidth(264),
+ Y = Application.GetRealHeight(14),
+ Width = Application.GetRealWidth(40),
+ Height = Application.GetRealWidth(40),
+ UnSelectedImagePath = "MusicIcon/collect.png",
+ SelectedImagePath = "MusicIcon/collectSelected.png",
+ IsSelected = this.device.collect,
+ Name = "collect"
+ };
+ whiteFl.AddChidren(btnCollectIcon);
+
+ btnCurrDeviceName = new Button
+ {
+ TextSize = TextSize.Text24,
+ TextColor = MusicColor.Text18Color,
+ Width = Application.GetRealWidth(160),
+ Height = Application.GetRealHeight(33),
+ Y = Application.GetRealHeight(16),
+ X = Application.GetRealWidth(16),
+ Text = this.device.name,
+ TextAlignment = TextAlignment.CenterLeft,
+ };
+ whiteFl.AddChidren(btnCurrDeviceName);
+
+
+ btnCurrDeviceRoom = new Button
+ {
+ TextSize = TextSize.Text12,
+ TextColor = MusicColor.MusicNoTxetColor,
+ Width = Application.GetRealWidth(160),
+ Height = Application.GetRealHeight(17),
+ Y = btnCurrDeviceName.Bottom + Application.GetRealHeight(4),
+ X = Application.GetRealWidth(16),
+ Text = this.device.GetRoomListName(),
+ TextAlignment = TextAlignment.CenterLeft,
+ };
+ whiteFl.AddChidren(btnCurrDeviceRoom);
+
+ cellFrame = new FrameLayout
+ {
+ X = btnCurrDeviceRoom.Right + Application.GetRealWidth(20),
+ Y = btnCurrDeviceName.Bottom + Application.GetRealHeight(5),
+ Width = Application.GetRealWidth(30),
+ Height = Application.GetRealHeight(16),
+ };
+ whiteFl.AddChidren(cellFrame);
+
+ cellDiyArcSeekBar = new DiyArcSeekBar
+ {
+ X = Application.GetRealWidth(3),
+ Y = Application.GetRealHeight(3),
+ Width = cellFrame.Width + Application.GetRealWidth(-6),
+ Height = cellFrame.Height + Application.GetRealHeight(-6),
+ Progress = 60,
+ ProgressBarColor = MusicColor.MusicNoTxetColor,
+ MaxValue = 100,
+ MinValue = 0,
+
+ //IsCanMove = false,
+ //IsCanScrolled=false,
+ };
+ //cellFrame.AddChidren(cellDiyArcSeekBar);
+
+ btnCell = new Button
+ {
+ TextSize = TextSize.Text10,
+ TextColor = MusicColor.TextColor,
+ Text = "60" + "%",
+ TextAlignment = TextAlignment.Center,
+ UnSelectedImagePath = "FunctionIcon/DoorLock/Cell.png",
+ };
+ cellFrame.AddChidren(btnCell);
+
+
+ //闂ㄩ攣鐘舵��
+ btnDoorLockIcon = new Button
+ {
+ X = Application.GetRealWidth(65),
+ Y = Application.GetRealHeight(108),
+ Width = Application.GetRealWidth(198),
+ Height = Application.GetRealWidth(200),
+ UnSelectedImagePath = "FunctionIcon/DoorLock/UnLocked.png",
+ SelectedImagePath = "FunctionIcon/DoorLock/UnLocking.png",
+ };
+ whiteFl.AddChidren(btnDoorLockIcon);
+
+ this.CalculatedPosition();//閲嶆柊璁$畻瀹藉害
+
+ int heightY = btnDoorLockIcon.Bottom + Application.GetRealHeight(70);
+ //瀹炴椂瑙嗛
+ rtvFL = new CustomFrameLayout(CustomFrameLayout.widthFrameLayout, CustomFrameLayout.heightFrameLayout);
+ whiteFl.AddChidren(rtvFL);
+ rtvFL.Y = heightY;
+ rtvFL.X = Application.GetRealWidth(41);
+ rtvFL.AddImageView();
+ rtvFL.AddTextButtonView();
+ rtvFL.GetImageButton().UnSelectedImagePath = "FunctionIcon/DoorLock/RTV.png";
+ rtvFL.GetTextButton().TextID = StringId.shishishipin;
+ //鍘嗗彶璁板綍
+ recordFL = new CustomFrameLayout(CustomFrameLayout.widthFrameLayout, CustomFrameLayout.heightFrameLayout);
+ whiteFl.AddChidren(recordFL);
+ recordFL.Y = heightY;
+ recordFL.X = rtvFL.Right + Application.GetRealWidth(CustomFrameLayout.interval);
+ recordFL.AddImageView();
+ recordFL.AddTextButtonView();
+ recordFL.GetImageButton().UnSelectedImagePath = "FunctionIcon/DoorLock/HistoryList.png";
+ recordFL.GetTextButton().TextID = StringId.lishijilu;
+ //涓存椂瀵嗙爜
+ pswFL = new CustomFrameLayout(CustomFrameLayout.widthFrameLayout, CustomFrameLayout.heightFrameLayout);
+ whiteFl.AddChidren(pswFL);
+ pswFL.Y = heightY;
+ pswFL.X = recordFL.Right + Application.GetRealWidth(CustomFrameLayout.interval);
+ pswFL.AddImageView();
+ pswFL.AddTextButtonView();
+ pswFL.GetImageButton().UnSelectedImagePath = "FunctionIcon/DoorLock/OneOpenLock.png";
+ pswFL.GetTextButton().TextID = StringId.linshimima1;
+
+
+
+ #endregion
+
+
+ }
+ /// <summary>
+ /// 娉ㄥ唽浜嬩欢
+ /// </summary>
+ private void EventListener()
+ {
+ //杩斿洖
+ this.topView.clickBackBtn.MouseUpEventHandler += (sender, e) =>
+ {
+ this.RemoveFromParent();
+ };
+ //璁剧疆
+ this.topView.clickSetBtn.MouseUpEventHandler += (sender, e) =>
+ {
+ CommonMethod.Current.MainThread(() =>
+ {
+ //璋冪敤绉�缁曠殑鐣岄潰
+ var infoView = new UI.FunctionBaseInfoSetPage(this.device, () =>
+ {
+ if (this.btnDeviceName == null || this.btnRoomName == null || this.device == null)
+ {
+ return;
+ }
+ ////鍒锋柊鏄剧ず
+ this.btnDeviceName.Text = this.device.name;
+ this.btnRoomName.Text = this.device.GetRoomListName();
+ this.btnCurrDeviceName.Text = this.device.name;
+ this.btnCurrDeviceRoom.Text = this.device.GetRoomListName();
+ this.CalculatedPosition();//閲嶆柊璁$畻瀹藉害
+
+ });
+ //infoView.actionDel += () =>
+ // {
+ // //瑙g粦璁惧鍚�
+ // this.RemoveFromParent();
+ // this.action?.Invoke();
+
+ // };
+ MainPage.BasePageView.AddChidren(infoView);
+ infoView.LoadPage();
+ MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
+ });
+ };
+ //鏀惰棌
+ this.btnCollectIcon.MouseUpEventHandler += (sender, e) =>
+ {
+ btnCollectIcon.IsSelected = this.device.collect = !btnCollectIcon.IsSelected;
+ this.device.CollectFunction();
+ };
+ //瀹炴椂瑙嗛
+ this.rtvFL.SetClickListener((fl, btnStateImage, btnStateText) =>
+ {
+ CommonMethod.Current.SkipRTVActivity(this.device.sid, this.device.deviceId, this.device.spk);
+ });
+ //涓存椂瀵嗙爜
+ this.pswFL.SetClickListener((fl, btnStateImage, btnStateText) =>
+ {
+ CommonMethod.Current.SkipPSWActivity(this.device.deviceId);
+ });
+ //鍘嗗彶璁板綍
+ this.recordFL.SetClickListener((fl, btnStateImage, btnStateText) =>
+ {
+ CommonMethod.Current.SkipRecordActivity(this.device.deviceId);
+ });
+
+
+ }
+ /// <summary>
+ /// 鍒濆鏁版嵁
+ /// </summary>
+ private void ReadData()
+ {
+ CommonMethod.Current.Loading.Start();
+ CommonMethod.Current.SunThread(() =>
+ {
+ try
+ {
+ var videoDoorLockInfo = VideDoorLockSend.Current.GetVideoDoorLockState(this.device);
+ var cellInfo = VideDoorLockSend.Current.GetCellValue(this.device);
+ CommonMethod.Current.MainThread(() =>
+ {
+ //this.cellDiyArcSeekBar.Progress = i;
+ //鏇存柊鐢甸噺鍊�
+ this.btnCell.Text = cellInfo.remain + "%";
+ this.btnDoorLockIcon.IsSelected = videoDoorLockInfo.doorStatus == "open";
+ });
+ }
+ catch { }
+ finally
+ {
+ Application.RunOnMainThread(() =>
+ {
+ CommonMethod.Current.Loading.Hide();
+ });
+ }
+ });
+ }
+
+ /// <summary>
+ /// 閲嶆柊璁$畻瀹藉害(璁惧鍚嶇О,鎴块棿鎺т欢)
+ /// </summary>
+ private void CalculatedPosition()
+ {
+ this.btnCurrDeviceName.Width = this.btnCurrDeviceName.GetTextWidth();
+ if (this.btnCurrDeviceName.GetTextWidth() > this.btnCollectIcon.X)
+ {
+ //閲嶆柊璁$畻瀹藉害
+ this.btnCurrDeviceName.Width = this.btnCollectIcon.X + Application.GetRealWidth(-10);
+ }
+ this.btnCurrDeviceRoom.Width = this.btnCurrDeviceRoom.GetTextWidth();
+ if (this.btnCurrDeviceRoom.GetTextWidth() > this.btnCollectIcon.X)
+ {
+ //閲嶆柊璁$畻瀹藉害
+ this.btnCurrDeviceRoom.Width = this.btnCollectIcon.X + Application.GetRealWidth(-20 - 10);
+ }
+ this.cellFrame.X = this.btnCurrDeviceRoom.Right + Application.GetRealWidth(20);
+ }
+
+ }
+ /// <summary>
+ /// 鑷繁寮勪竴涓狥rameLayout
+ /// </summary>
+ class CustomFrameLayout : FrameLayout
+ {
+ public const int widthFrameLayout = 48;
+ public const int heightFrameLayout = 53;
+ public const int yFrameLayout = 378;
+ public const int xFrameLayout = 41;
+ public const int interval = 51;//琛屼腑鐨勫垪闂撮殧鍊�
+
+ public CustomFrameLayout(int width, int height, int x = 0, int y = 0)
+ {
+ this.Width = Application.GetRealWidth(width);
+ this.Height = Application.GetRealHeight(height);
+ this.X = Application.GetRealWidth(x);
+ this.Y = Application.GetRealHeight(y);
+
+ }
+ Button btnStateImage = new Button
+ {
+ Width = Application.GetRealWidth(32),
+ Height = Application.GetRealWidth(32),
+ Gravity = Gravity.TopCenter,
+ Name = "btnStateImage",
+
+ };
+ Button btnStateText = new Button
+ {
+ Y = Application.GetRealHeight(4),
+ Width = Application.GetRealWidth(100),
+ Height = Application.GetRealWidth(20),
+ TextID = StringId.dangqianmenweiguan,
+ TextSize = TextSize.Text12,
+ TextColor = MusicColor.TextCancelColor,
+ TextAlignment = TextAlignment.Center,
+ Gravity = Gravity.CenterHorizontal,
+ Name = "btnStateText"
+ };
+ public void AddImageView()
+ {
+ this.AddChidren(btnStateImage);
+
+ }
+ public void AddTextButtonView()
+ {
+ btnStateText.Y += btnStateImage.Bottom;
+ this.AddChidren(btnStateText);
+ }
+ public Button GetImageButton()
+ {
+ //if (!this.AddWithout(this.btnStateImage))
+ //{
+ // this.AddImageView();
+ //}
+ return this.btnStateImage;
+ }
+ public Button GetTextButton()
+ {
+ //if (!this.AddWithout(this.btnStateText))
+ //{
+ // this.AddTextButtonView();
+ //}
+ return this.btnStateText;
+ }
+
+ /// <summary>
+ /// 浜嬩欢鐩戝惉鏂规硶
+ /// </summary>
+ /// <param name="action">鍥炶皟(绗竴涓槸鐖剁被瀵硅薄;绗簩涓槸鍥炬爣瀵硅薄;绗笁涓槸鐘舵�佸璞�</param>
+ /// <param name="button1">娉ㄦ剰:鍦⊿etClickListener()鍓嶉潰璋冪敤AddImageView()鎵嶆湁鏁�</param>
+ /// <param name="button2">娉ㄦ剰:鍦⊿etClickListener()鍓嶉潰璋冪敤AddImageView()鎵嶆湁鏁�</param>
+ public void SetClickListener(Action<FrameLayout, Button, Button> action)
+ {
+ EventHandler<MouseEventArgs> click = (sender, e) =>
+ {
+ action?.Invoke(this, btnStateImage, btnStateText);
+ };
+ this.MouseUpEventHandler += click;
+ btnStateImage.MouseUpEventHandler += click;
+ btnStateText.MouseUpEventHandler += click;
+
+ }
+
+
+
+ /// <summary>
+ /// 鍦ㄧ埗甯冨眬鏌ユ壘瀛愭帶浠舵槸鍚﹀瓨鍦�
+ /// </summary>
+ /// <param name="btn">鏌ユ壘瀵硅薄</param>
+ /// <returns>瀛樺湪涓簍rue,鍚﹀垯涓篺alse</returns>
+ private bool AddWithout(View btn)
+ {
+
+ if (this.ChildrenCount <= 0 || btn == null)
+ {
+ return false;
+ }
+ for (int i = 0; i < this.ChildrenCount; i++)
+ {
+ View view = this.GetChildren(i);
+ if (view == null)
+ {
+ continue;
+ }
+ if (view is Button)
+ {
+ if (view.Name == btn.Name)
+ {
+ return true;
+ }
+ }
+
+ }
+ return false;
+
+ }
+
+
+
+
+ }
+
+
+}
--
Gitblit v1.8.0