From 43110ef19b9e69d5afd7ce0a978565786baa87b5 Mon Sep 17 00:00:00 2001
From: lss <lsc@hdlchina.com.cn>
Date: 星期三, 27 四月 2022 14:13:53 +0800
Subject: [PATCH] 修复红米手机闪退问题
---
ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs | 180 ++++++++++++++++-------------------------------------------
1 files changed, 50 insertions(+), 130 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs b/ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs
index 71524d2..435a274 100755
--- a/ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/DeviceDetailInfoForm.cs
@@ -17,19 +17,19 @@
/// <summary>
/// 鐣岄潰鍏抽棴浜嬩欢(璇ヤ簨浠剁洰鍓嶇粰鍒嗙被鐣岄潰鐨勮嚜瀹氫箟琛屾帶浠朵娇鐢�)
/// </summary>
- public Action<CommonDevice, Room> FormCloseEvent = null;
+ public Action FormCloseEvent = null;
/// <summary>
/// 璁惧瀵硅薄
/// </summary>
private CommonDevice device;
/// <summary>
- /// 鎴块棿瀵硅薄(杩欎釜鎴块棿鏈夊彲鑳芥槸鍠滅埍)
+ /// 鎴块棿瀵硅薄(杩欎釜鎴块棿鏈夊彲鑳芥槸鍠滅埍,鏈夊彲鑳芥槸null)
/// </summary>
private Room room = null;
/// <summary>
/// 鍒楄〃鎺т欢
/// </summary>
- private VerticalListControl listview = null;
+ private FrameListControl listview = null;
#endregion
@@ -70,23 +70,25 @@
//娓呯┖bodyFrame
this.ClearBodyFrame();
+ var listBackControl = new VerticalFrameControl();
+ listBackControl.Height = bodyFrameLayout.Height;
+ bodyFrameLayout.AddChidren(listBackControl);
+
//鍒濆鍖栨甯�
var tableContr = new InformationEditorControl();
- this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 418, 1319);
+ this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1319);
//鍥剧墖
var btnPic = new DeviceInfoIconControl();
btnPic.Y = Application.GetRealHeight(46);
btnPic.Gravity = Gravity.CenterHorizontal;
- bodyFrameLayout.AddChidren(btnPic);
+ listBackControl.frameTable.AddChidren(btnPic);
btnPic.InitControl(device.DeviceAddr, device.DeviceEpoint);
btnPic.ButtonClickEvent += (sender, e) =>
{
- var localPic = new Device.CommonForm.DeviceIconSelectedIMGByLocal();
- UserView.HomePage.Instance.AddChidren(localPic);
- UserView.HomePage.Instance.PageIndex += 1;
- localPic.Show();
- localPic.action = (unSelectedImagePath, selectedImagePath) =>
+ var form = new SelectLocalDeviceImageForm();
+ form.AddForm();
+ form.FinishSelectEvent = (unSelectedImagePath) =>
{
//鍙樻洿鍥剧墖
device.IconPath = unSelectedImagePath;
@@ -102,15 +104,16 @@
var btnBelongType = new NormalViewControl(700, 62, true);
btnBelongType.Y = btnPic.Bottom + Application.GetRealHeight(35);
btnBelongType.Gravity = Gravity.CenterHorizontal;
- btnBelongType.TextID = infoType.BeloneTextId;
+ btnBelongType.Text = infoType.BeloneText;
btnBelongType.TextSize = 15;
btnBelongType.TextAlignment = TextAlignment.Center;
- bodyFrameLayout.AddChidren(btnBelongType);
+ listBackControl.frameTable.AddChidren(btnBelongType);
//鍔熻兘鍚嶇О
string caption = Language.StringByID(R.MyInternationalizationString.FunctionName);
string deviceName = LocalDevice.Current.GetDeviceEpointName(device);
var btnNote = new FrameCaptionInputControl(caption, deviceName, listview.rowSpace / 2);
+ btnNote.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
listview.AddChidren(btnNote);
btnNote.InitControl();
//鍒掔嚎
@@ -130,7 +133,7 @@
};
//鍠滅埍鎴块棿涓嶅厑璁稿彉鏇村尯鍩�
- if (this.room.IsLove == false)
+ if (this.room == null || this.room.IsLove == false)
{
//鎵�灞炲尯鍩�
var rowBeloneArea = new BelongAreaControl(listview.rowSpace / 2);
@@ -147,7 +150,7 @@
}
//鎵�灞炴ā鍧�
- caption = Language.StringByID(R.MyInternationalizationString.BelongModel);
+ caption = Language.StringByID(R.MyInternationalizationString.BelongDevice);
deviceName = Common.LocalDevice.Current.GetDeviceMacName(device);
var rowBelongModul = new FrameCaptionViewControl(caption, deviceName, listview.rowSpace / 2);
listview.AddChidren(rowBelongModul);
@@ -159,7 +162,7 @@
this.AddFunctionTypeRowByAdmin(btnBelongType);
//鍒濆鍖栨甯冨畬鎴�
- tableContr.FinishInitControl(bodyFrameLayout, this.listview);
+ tableContr.FinishInitControl();
tableContr = null;
//淇濆瓨
@@ -194,15 +197,19 @@
//娓呯┖bodyFrame
this.ClearBodyFrame();
+ var listBackControl = new VerticalFrameControl();
+ listBackControl.Height = bodyFrameLayout.Height;
+ bodyFrameLayout.AddChidren(listBackControl);
+
//鍒濆鍖栨甯�
var tableContr = new InformationEditorControl();
- this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 418, 1319);
+ this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1319);
//鍥剧墖
var btnPic = new DeviceInfoIconControl();
btnPic.Y = Application.GetRealHeight(92);
btnPic.Gravity = Gravity.CenterHorizontal;
- bodyFrameLayout.AddChidren(btnPic);
+ listBackControl.frameTable.AddChidren(btnPic);
btnPic.InitControl(device.DeviceAddr, device.DeviceEpoint);
//璁惧鎵�灞炵被鍨�
@@ -210,10 +217,10 @@
var btnBelongType = new NormalViewControl(700, 62, true);
btnBelongType.Y = btnPic.Bottom + Application.GetRealHeight(35);
btnBelongType.Gravity = Gravity.CenterHorizontal;
- btnBelongType.TextID = infoType.BeloneTextId;
+ btnBelongType.Text = infoType.BeloneText;
btnBelongType.TextSize = 15;
btnBelongType.TextAlignment = TextAlignment.Center;
- bodyFrameLayout.AddChidren(btnBelongType);
+ listBackControl.frameTable.AddChidren(btnBelongType);
//鍔熻兘鍚嶇О
string caption = Language.StringByID(R.MyInternationalizationString.FunctionName);
@@ -226,7 +233,7 @@
btnNote.AddBottomLine();
//鍠滅埍鎴块棿涓嶅厑璁稿嚭鐜板尯鍩�
- if (this.room.IsLove == false)
+ if (this.room == null || this.room.IsLove == false)
{
//鎵�灞炲尯鍩�
caption = Language.StringByID(R.MyInternationalizationString.uBelongArea);
@@ -240,7 +247,7 @@
}
//鎵�灞炴ā鍧�
- caption = Language.StringByID(R.MyInternationalizationString.BelongModel);
+ caption = Language.StringByID(R.MyInternationalizationString.BelongDevice);
nameValue = Common.LocalDevice.Current.GetDeviceMacName(device);
var rowBelongModul = new FrameCaptionViewControl(caption, nameValue, listview.rowSpace / 2);
rowBelongModul.UseClickStatu = false;
@@ -253,7 +260,7 @@
this.AddFunctionTypeRowByMember();
//鍒濆鍖栨甯冨畬鎴�
- tableContr.FinishInitControl(bodyFrameLayout, this.listview);
+ tableContr.FinishInitControl();
tableContr = null;
}
@@ -266,90 +273,19 @@
/// </summary>
private void AddFunctionTypeRowByAdmin(NormalViewControl btnBelongType)
{
- //濡傛灉鏄户鐢靛櫒,绌烘皵寮�鍏�,璋冨厜鍣ㄧ殑璇�
- if (device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.DimmableLight
- || device.Type == DeviceType.ColorDimmableLight || device.Type == DeviceType.AirSwitch)
+ //鑷畾涔夊姛鑳界被鍨嬫帶浠�
+ var rowFunction = new DeviceFunctionTypeRowControl(device, listview.rowSpace / 2);
+ if (rowFunction.CanShowRow == true)
{
- //鍔熻兘绫诲瀷鐨勭炕璇戝悕瀛�
- int nowSelectNo = 1;
- string strType = string.Empty;
- if (this.device.DfunctionType == DeviceFunctionType.A鐏厜)
- {
- strType = Language.StringByID(R.MyInternationalizationString.uLight);
- nowSelectNo = 1;
- }
- else if (this.device.DfunctionType == DeviceFunctionType.A寮�鍏�)
- {
- strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
- nowSelectNo = 0;
- }
- else if (this.device.DfunctionType == DeviceFunctionType.A鎻掑骇)
- {
- strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
- nowSelectNo = 2;
- }
- //鍔熻兘绫诲瀷
- var btnFunction = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uFunctionType), strType, listview.rowSpace / 2);
- btnFunction.UseClickStatu = false;
- listview.AddChidren(btnFunction);
- btnFunction.InitControl();
+ listview.AddChidren(rowFunction);
+ rowFunction.InitControl();
//搴曠嚎
- btnFunction.AddBottomLine();
- //濡傛灉鏄┖姘斿紑鍏冲拰缁х數鍣�,鎵嶈兘淇敼
- if (device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.AirSwitch)
+ rowFunction.AddBottomLine();
+ rowFunction.FinishSelectEvent += (index) =>
{
- //鍙崇澶�
- btnFunction.AddRightArrow();
- btnFunction.ButtonClickEvent += (sender, e) =>
- {
- //鏄剧ず鍒楄〃
- var listText = new List<string>();
- listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//寮�鍏�
- listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//鐏厜
- listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//鎻掑骇
- //鏍囬:閫夋嫨鍔熻兘绫诲瀷
- var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType);
-
- var form = new BottomItemSelectForm();
- form.AddForm(title, listText, nowSelectNo);
- form.FinishSelectEvent += (selectNo) =>
- {
- btnFunction.Text = listText[selectNo];
- //褰撶被鍨嬪彉鏇存椂,澶翠笂鐨勭被鍨嬩篃涓�璧峰彉鏇�
- btnBelongType.Text = listText[selectNo];
- nowSelectNo = selectNo;
- //璁板綍璧峰綋鍓嶉�夋嫨鐨勫姛鑳界被鍨�
- if (selectNo == 0)
- {
- this.device.DfunctionType = DeviceFunctionType.A寮�鍏�;
- if (this.device.IsCustomizeImage == false)
- {
- //閲嶆柊璁剧疆鍥剧墖
- this.device.IconPath = "Device/Switch.png";
- }
- }
- else if (selectNo == 1)
- {
- this.device.DfunctionType = DeviceFunctionType.A鐏厜;
- if (this.device.IsCustomizeImage == false)
- {
- //閲嶆柊璁剧疆鍥剧墖
- this.device.IconPath = "Device/Light.png";
- }
- }
- else
- {
- this.device.DfunctionType = DeviceFunctionType.A鎻掑骇;
- if (this.device.IsCustomizeImage == false)
- {
- //閲嶆柊璁剧疆鍥剧墖
- this.device.IconPath = "Device/Socket1.png";
- }
- }
- this.device.ReSave();
- };
- };
- }
+ //褰撶被鍨嬪彉鏇存椂,澶翠笂鐨勭被鍨嬩篃涓�璧峰彉鏇�
+ btnBelongType.Text = rowFunction.Text;
+ };
}
}
@@ -358,32 +294,16 @@
/// </summary>
private void AddFunctionTypeRowByMember()
{
- //濡傛灉鏄户鐢靛櫒,绌烘皵寮�鍏�,璋冨厜鍣ㄧ殑璇�
- if (device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.DimmableLight
- || device.Type == DeviceType.ColorDimmableLight || device.Type == DeviceType.AirSwitch)
+ //鑷畾涔夊姛鑳界被鍨嬫帶浠�
+ var rowFunction = new DeviceFunctionTypeRowControl(device, listview.rowSpace / 2);
+ if (rowFunction.CanShowRow == true)
{
- //鍔熻兘绫诲瀷鐨勭炕璇戝悕瀛�
- string strType = string.Empty;
- if (this.device.DfunctionType == DeviceFunctionType.A鐏厜)
- {
- strType = Language.StringByID(R.MyInternationalizationString.uLight);
- }
- else if (this.device.DfunctionType == DeviceFunctionType.A寮�鍏�)
- {
- strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
- }
- else if (this.device.DfunctionType == DeviceFunctionType.A鎻掑骇)
- {
- strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
- }
-
- //鍔熻兘绫诲瀷
- var btnFunction = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uFunctionType), strType, listview.rowSpace / 2);
- btnFunction.UseClickStatu = false;
- listview.AddChidren(btnFunction);
- btnFunction.InitControl();
+ //寮哄埗骞叉秹涓嶈兘閫夋嫨
+ rowFunction.SetCanSelect = false;
+ listview.AddChidren(rowFunction);
+ rowFunction.InitControl();
//搴曠嚎
- btnFunction.AddBottomLine();
+ rowFunction.AddBottomLine();
}
}
@@ -395,11 +315,11 @@
/// 璁惧閲嶅懡鍚�
/// </summary>
/// <param name="i_deviceName">deviceName.</param>
- private async void DeviceReName(string i_deviceName, bool closeForm)
+ private void DeviceReName(string i_deviceName, bool closeForm)
{
//淇敼MAC鍚�
string deviceName = i_deviceName.Trim();
- var result = await LocalDevice.Current.ReName(this.device, deviceName);
+ var result = LocalDevice.Current.ReName(this.device, deviceName);
if (result == false)
{
return;
@@ -426,7 +346,7 @@
/// </summary>
public override void CloseFormBefore()
{
- this.FormCloseEvent?.Invoke(this.device, this.room);
+ this.FormCloseEvent?.Invoke();
this.FormCloseEvent = null;
base.CloseFormBefore();
--
Gitblit v1.8.0