From 0e0584b87851c56745bf73b1a961b80613dd0721 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期二, 19 五月 2020 16:35:16 +0800
Subject: [PATCH] 2020-05-19-4
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 100 insertions(+), 4 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
index 7f5755c..cab34c9 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
@@ -79,10 +79,10 @@
/// <summary>
/// 鍒锋柊鏈湴鐨勫叏閮ㄥ満鏅�
/// </summary>
- public async Task<bool> RefreshSceneUIList()
+ public bool RefreshSceneUIList()
{
//鑾峰彇缃戝叧瀛樺湪鐨勫満鏅�
- var sceneList = await ZigBee.Device.Scene.GetSceneListAsync();
+ var sceneList = this.RefreshSceneListFromGateway();
if (sceneList == null)
{
return false;
@@ -95,6 +95,8 @@
continue;
}
listEsxit.Add(scene.ScenesId);
+ //鍒锋柊scene鐨勪俊鎭�
+ this.RefreshScene(scene);
}
var listDelete = new List<SceneUI>();
@@ -113,6 +115,99 @@
}
return true;
+ }
+
+ /// <summary>
+ /// 鍒锋柊scene鐨勪俊鎭�
+ /// </summary>
+ /// <param name="sceneInfo"></param>
+ private void RefreshScene(Scene.GetSceneAllInfo sceneInfo)
+ {
+ if (this.dicScenes.ContainsKey(sceneInfo.ScenesId) == true)
+ {
+ var localScene = this.dicScenes[sceneInfo.ScenesId];
+ //鍙埛鏂板悕瀛楀拰缁戝畾琛�
+ localScene.Name = sceneInfo.ScenesName;
+ localScene.AdjustTargetList.Clear();
+ localScene.AdjustTargetList.AddRange(sceneInfo.DeviceList);
+ localScene.Save();
+ }
+ else
+ {
+ var newScene = new SceneUI();
+ newScene.Name = sceneInfo.ScenesName;
+ newScene.IconPath = "SceneIcon/0.png";
+ newScene.Id = sceneInfo.ScenesId;
+ newScene.AdjustTargetList.AddRange(sceneInfo.DeviceList);
+ //娣诲姞缂撳瓨
+ newScene.Save();
+ //鍔犲叆缂撳瓨
+ this.dicScenes[newScene.Id] = newScene;
+ //澶囦唤
+ HdlAutoBackupLogic.AddOrEditorFile(newScene.FileName);
+ }
+
+ }
+
+ /// <summary>
+ /// 浠庣綉鍏抽噸鏂板埛鏂板満鏅垪琛�
+ /// </summary>
+ /// <returns></returns>
+ private List<Scene.GetSceneAllInfo> RefreshSceneListFromGateway()
+ {
+ var mainGateway = ZbGateway.MainGateWay;
+ if (mainGateway == null)
+ {
+ //鑾峰彇缃戝叧瀵硅薄澶辫触
+ this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uGetGatewayTagartFail));
+ return null;
+ }
+
+ //瓒呮椂鏃堕棿
+ int TimeOut = 0;
+ bool receiptAll = false;
+
+ var listScene = new List<Scene.GetSceneAllInfo>();
+ Action<string, string> action = (topic, message) =>
+ {
+ var gatewayID = topic.Split('/')[0];
+ var jobject = Newtonsoft.Json.Linq.JObject.Parse(message);
+
+ if (topic == gatewayID + "/" + "Scene/GetAllInfo_Respon")
+ {
+ var sceneGetAllInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene.GetSceneAllInfo>(jobject["Data"].ToString());
+ listScene.Add(sceneGetAllInfo);
+
+ if (sceneGetAllInfo.ScenesNum == sceneGetAllInfo.ScenesSum)
+ {
+ //鎺ユ敹瀹屾垚
+ receiptAll = true;
+ TimeOut = 0;
+ }
+ }
+ };
+ mainGateway.Actions += action;
+
+ var jObject = new Newtonsoft.Json.Linq.JObject { { "Cluster_ID", 0 }, { "Command", 807 } };
+ mainGateway.Send(("Scene/GetAllInfo"), System.Text.Encoding.UTF8.GetBytes(jObject.ToString()));
+
+ int waitTime = 20 * 6;
+ while (receiptAll == false && TimeOut < waitTime)
+ {
+ //鍏ㄩ儴鎺ユ敹鎵嶉��鍑�
+ System.Threading.Thread.Sleep(50);
+ TimeOut++;
+ }
+ mainGateway.Actions -= action;
+ action = null;
+ if (receiptAll == false)
+ {
+ //缃戠粶涓嶇ǔ瀹氾紝鍦烘櫙鍒楄〃淇℃伅缂烘崯
+ this.ShowTipMsg(Language.StringByID(R.MyInternationalizationString.uNetworkUnStableAndSceneInfoIsNotFull));
+ return null;
+ }
+
+ return listScene;
}
#endregion
@@ -589,13 +684,14 @@
/// <returns></returns>
public string GetZoneById(int sceneId)
{
- var room =HdlRoomLogic.Current.GetRoomBySceneId(sceneId);
+ var room = HdlRoomLogic.Current.GetRoomBySceneId(sceneId);
if (room == null)
{
return null;
}
var floorName = Shared.Common.Config.Instance.Home.GetFloorNameById(room.FloorId);
- if (floorName == null)
+ //鏇存敼浠g爜锛氬鏋渇loorName=鈥溾�濅篃瑕佸垽鏂紝鍚﹀垯鏈夆�滐紝鈥�
+ if (string.IsNullOrEmpty(floorName))
{
return room.Name;
}
--
Gitblit v1.8.0