using System;
using System.Collections.Generic;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
{
public class VideoDoorlockAudioSetupPage : FrameLayout
{
FrameLayout bodyView;
Function device;
///
/// 门锁系统音量
///
DoorLockSystemSound doorLockSystemSound;
///
/// 门铃音量
///
int doorbellVol = 0;
public VideoDoorlockAudioSetupPage(Function function)
{
doorLockSystemSound = new DoorLockSystemSound();
device = function;
bodyView = this;
}
public void LoadPage()
{
new TopViewDiv(bodyView, Language.StringByID(StringId.AudioSetup)).LoadTopView();
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
#region 门锁系统音量
var doorlockSystemVolumeView = new FrameLayout()
{
Y = Application.GetRealHeight(64),
Height = Application.GetRealHeight(50),
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
};
bodyView.AddChidren(doorlockSystemVolumeView);
var btnDoorlockSystemVolumeRight = new Button()
{
X = Application.GetRealWidth(339),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/Right.png",
};
doorlockSystemVolumeView.AddChidren(btnDoorlockSystemVolumeRight);
var btnDoorlockSystemVolumeStateText = new Button()
{
X = Application.GetRealWidth(100),
Width = Application.GetRealWidth(223),
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.PromptingColor1,
};
doorlockSystemVolumeView.AddChidren(btnDoorlockSystemVolumeStateText);
var btnDoorlockSystemVolumeText = new Button()
{
X = Application.GetRealWidth(16),
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.DoorlockSystemVolume,
};
doorlockSystemVolumeView.AddChidren(btnDoorlockSystemVolumeText);
btnDoorlockSystemVolumeText.MouseUpEventHandler = (sender, e) =>
{
LoadEditDialog(StringId.DoorlockSystemVolume, btnDoorlockSystemVolumeStateText,true);
};
#endregion
#region 门铃音量
var viewDoorbellVolume = new FrameLayout()
{
Y = doorlockSystemVolumeView.Bottom,
Height = Application.GetRealHeight(50),
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
};
bodyView.AddChidren(viewDoorbellVolume);
viewDoorbellVolume.AddChidren(new Button
{
Height = 1,
BackgroundColor = CSS_Color.DividingLineColor,
});
var btnDoorbellVolumeRight = new Button()
{
X = Application.GetRealWidth(339),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/Right.png",
};
viewDoorbellVolume.AddChidren(btnDoorbellVolumeRight);
var btnDoorbellVolumeStateText = new Button()
{
X = Application.GetRealWidth(100),
Width = Application.GetRealWidth(223),
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.PromptingColor1,
};
viewDoorbellVolume.AddChidren(btnDoorbellVolumeStateText);
var btnDoorbellVolumeText = new Button()
{
X = Application.GetRealWidth(16),
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.DoorbellVolume,
};
viewDoorbellVolume.AddChidren(btnDoorbellVolumeText);
btnDoorbellVolumeText.MouseUpEventHandler = (sender, e) =>
{
LoadEditDialog(StringId.DoorbellVolume, btnDoorbellVolumeStateText,false);
};
#endregion
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start("");
new System.Threading.Thread(() => {
try
{
var pack = ApiUtlis.Ins.HttpRequest.GetDoorLockSystemSound(device.deviceId);
if (pack != null && pack.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
//更新界面
doorLockSystemSound = Newtonsoft.Json.JsonConvert.DeserializeObject(pack.Data.ToString());
if(doorLockSystemSound != null)
{
switch (doorLockSystemSound.sound)
{
case 0:
btnDoorlockSystemVolumeStateText.TextID = StringId.Mute;
break;
case 1:
btnDoorlockSystemVolumeStateText.TextID = StringId.Low;
break;
case 2:
btnDoorlockSystemVolumeStateText.TextID = StringId.Moderate;
break;
case 3:
btnDoorlockSystemVolumeStateText.TextID = StringId.High;
break;
}
}
});
}
else
{
//失败提示
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(pack.message))
{
pack.message = Language.StringByID(StringId.OperationFailed);
}
{
var tip = new Tip()
{
MaxWidth = Application.GetRealWidth(300),
Text = $"{pack.message}({pack.Code})",
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(MainPage.BaseView);
}
});
}
pack = ApiUtlis.Ins.HttpRequest.GetDoorBellTone(device.deviceId);
if (pack != null && pack.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
//更新界面
var doorbellTone = Newtonsoft.Json.JsonConvert.DeserializeObject(pack.Data.ToString());
if (doorbellTone != null)
{
if (doorbellTone.volume == 0)
{
doorbellVol = 0;
btnDoorbellVolumeStateText.TextID = StringId.Mute;
}
else if (doorbellTone.volume > 0 && doorbellTone.volume < 35)
{
doorbellVol = 1;
btnDoorbellVolumeStateText.TextID = StringId.Low;
}
else if (doorbellTone.volume > 35 && doorbellTone.volume < 70)
{
doorbellVol = 2;
btnDoorbellVolumeStateText.TextID = StringId.Moderate;
}
else if (doorbellTone.volume > 70)
{
doorbellVol = 3;
btnDoorbellVolumeStateText.TextID = StringId.High;
}
}
});
}
else
{
//失败提示
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(pack.message))
{
pack.message = Language.StringByID(StringId.OperationFailed);
}
{
var tip = new Tip()
{
MaxWidth = Application.GetRealWidth(300),
Text = $"{pack.message}({pack.Code})",
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(MainPage.BaseView);
}
});
}
}
catch (Exception ex)
{
MainPage.Log($"UnlockSettingPage error : {ex.Message}");
}
finally
{
Application.RunOnMainThread(() =>
{
waitPage.Hide();
});
}
})
{ IsBackground = true }.Start();
}
///
/// 加载功能属性数据选择弹窗
///
void LoadEditDialog(int titleId, Button btn,bool isDoorlockSystemVolume)
{
Button lastButton = new Button();
var lastText = "";
Dialog dialog = new Dialog();
var pView = new FrameLayout()
{
BackgroundColor = CSS_Color.DialogTransparentColor1,
};
dialog.AddChidren(pView);
var optionBaseView = new FrameLayout()
{
Y = Application.GetRealHeight(579 - 50 * 4),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(50 * 4 + 50),
AnimateSpeed = 0.3f,
Animate = Animate.DownToUp,
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(12),
};
pView.AddChidren(optionBaseView);
var topView = new FrameLayout()
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(50),
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(12),
};
optionBaseView.AddChidren(topView);
var btnTitle = new Button()
{
Gravity = Gravity.CenterHorizontal,
TextAlignment = TextAlignment.Center,
Width = Application.GetRealWidth(150),
TextID = titleId,
IsBold = true,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.SubheadingFontSize,
};
topView.AddChidren(btnTitle);
var btnCancel = new Button()
{
X = Application.GetRealWidth(21),
Width = Application.GetRealWidth(100),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.TextFontSize,
TextID = StringId.Cancel,
};
topView.AddChidren(btnCancel);
var btnConfrim = new Button()
{
X = Application.GetRealWidth(200),
Width = Application.GetRealWidth(120),
TextAlignment = TextAlignment.CenterRight,
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.TextFontSize,
TextID = StringId.Complete,
};
topView.AddChidren(btnConfrim);
int index = 1;
var statusList = new List
{
Language.StringByID(StringId.High),
Language.StringByID(StringId.Moderate),
Language.StringByID(StringId.Low),
Language.StringByID(StringId.Mute),
};
foreach (var m in statusList)
{
var row = new FrameLayout()
{
Y = Application.GetRealHeight(50 * index),
Height = Application.GetRealHeight(50),
};
optionBaseView.AddChidren(row);
if (statusList.Count > index)
{
optionBaseView.AddChidren(new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = row.Bottom,
Width = Application.GetRealWidth(343),
BackgroundColor = CSS_Color.DividingLineColor,
Height = 1,
});
}
var btnChoose = new Button()
{
X = Application.GetRealWidth(303),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(28),
Height = Application.GetMinRealAverage(28),
UnSelectedImagePath = "Public/ChooseIcon.png",
SelectedImagePath = "Public/ChooseOnIcon.png",
Tag = index - 1,
};
row.AddChidren(btnChoose);
if (isDoorlockSystemVolume) {//设置门锁系统音量
switch (doorLockSystemSound.sound)
{
case 0:
if (index == 3 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
case 1:
if (index == 2 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
case 2:
if (index == 1 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
case 3:
if (index == 0 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
}
}
else//设置门铃音量
{
switch (doorbellVol)
{
case 0:
if (index == 3 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
case 1:
if (index == 2 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
case 2:
if (index == 1 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
case 3:
if (index == 0 + 1)
{
lastButton = btnChoose;
btnChoose.IsSelected = true;
}
break;
}
}
var btnPropertyTitle = new Button()
{
X = Application.GetRealWidth(16),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
Text = m
};
row.AddChidren(btnPropertyTitle);
btnPropertyTitle.MouseUpEventHandler = (sender, e) => {
if (btnChoose.IsSelected)
{
return;
}
btnChoose.IsSelected = true;
if (lastButton != null)
{
lastButton.IsSelected = false;
}
lastButton = btnChoose;
lastText = btnPropertyTitle.Text;
};
index++;
}
dialog.Show();
pView.MouseUpEventHandler = (sender, e) => {
dialog.Close();
};
btnCancel.MouseUpEventHandler = (sender, e) => {
dialog.Close();
};
btnConfrim.MouseUpEventHandler = (sender, e) => {
dialog.Close();
var lastData = lastButton.Tag.ToString();
if (isDoorlockSystemVolume)
{
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start("");
new System.Threading.Thread(() => {
try
{
int sound = 0;
/// 0-静音 1-低音 2-中音 3-高音 4-自动
switch (lastData)
{
case "0":
sound = 3;
break;
case "1":
sound = 2;
break;
case "2":
sound = 1;
break;
case "3":
sound = 0;
break;
}
var pack = ApiUtlis.Ins.HttpRequest.SetDoorLockSystemSound(device.deviceId,sound);
if (pack != null && pack.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
//更新界面
switch (sound)
{
case 0:
doorLockSystemSound.sound = 0;
btn.TextID = StringId.Mute;
break;
case 1:
doorLockSystemSound.sound = 1;
btn.TextID = StringId.Low;
break;
case 2:
doorLockSystemSound.sound = 2;
btn.TextID = StringId.Moderate;
break;
case 3:
doorLockSystemSound.sound = 3;
btn.TextID = StringId.High;
break;
}
});
}
else
{
//失败提示
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(pack.message))
{
pack.message = Language.StringByID(StringId.OperationFailed);
}
{
var tip = new Tip()
{
MaxWidth = Application.GetRealWidth(300),
Text = $"{pack.message}({pack.Code})",
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(MainPage.BaseView);
}
});
}
}
catch (Exception ex)
{
MainPage.Log($"{this.GetType()} error 4: {ex.Message}");
}
finally
{
Application.RunOnMainThread(() =>
{
waitPage.Hide();
});
}
})
{ IsBackground = true }.Start();
}
else
{
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start("");
new System.Threading.Thread(() => {
try
{
int Vol = 0;
switch (lastData)
{
case "0":
Vol = 100;
break;
case "1":
Vol = 70;
break;
case "2":
Vol = 30;
break;
case "3":
Vol = 0;
break;
}
var pack = ApiUtlis.Ins.HttpRequest.SetDoorBellTone(device.deviceId,Vol);
if (pack != null && pack.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
//更新界面
switch (lastData)
{
case "0":
doorbellVol = 3;
btn.TextID = StringId.High;
break;
case "1":
doorbellVol = 2;
btn.TextID = StringId.Moderate;
break;
case "2":
doorbellVol = 1;
btn.TextID = StringId.Low;
break;
case "3":
doorbellVol = 0;
btn.TextID = StringId.Mute;
break;
}
});
}
else
{
//失败提示
Application.RunOnMainThread(() =>
{
if (string.IsNullOrEmpty(pack.message))
{
pack.message = Language.StringByID(StringId.OperationFailed);
}
{
var tip = new Tip()
{
MaxWidth = Application.GetRealWidth(300),
Text = $"{pack.message}({pack.Code})",
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(MainPage.BaseView);
}
});
}
}
catch (Exception ex)
{
MainPage.Log($"{this.GetType()} error 5 : {ex.Message}");
}
finally
{
Application.RunOnMainThread(() =>
{
waitPage.Hide();
});
}
})
{ IsBackground = true }.Start();
}
};
}
}
///
/// 门锁系统声音
///
public class DoorLockSystemSound
{
///
/// 声音
/// 0-静音 1-低音 2-中音 3-高音 4-自动
///
public int sound = 0;
}
///
/// 门铃提示音量
///
public class DoorBellTone
{
///
/// 音量 范围0-100
///
public int volume = 0;
}
}