using System;
|
using HDL_ON.Entity;
|
using Shared;
|
|
namespace HDL_ON.UI
|
{
|
public partial class MotorCurtainPage
|
{
|
/// <summary>
|
/// 更新窗帘
|
/// </summary>
|
/// <param name="updateTemp"></param>
|
public static void UpdataState(Function updateTemp)
|
{
|
Application.RunOnMainThread((Action)(() => {
|
if (bodyView == null)
|
return;
|
if (bodyView.onControl)
|
return;
|
if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid)
|
{
|
//var percentString = updateTemp.GetAttrState(FunctionAttributeKey.Percent);
|
//if (percentString != null)
|
//{
|
// int percent = 0;
|
// int.TryParse(percentString, out percent);
|
// bodyView.btnCurtainOpen.IsSelected = percent > 0;
|
// bodyView.btnCurtainClose.IsSelected = percent == 0;
|
//}
|
try
|
{
|
if (!bodyView.onCurtainAnimation)
|
{
|
bodyView.CurtainAnimation(Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Percent)));
|
}
|
}
|
catch { }
|
}
|
}));
|
}
|
|
/// <summary>
|
/// 正在执行窗帘动画
|
/// </summary>
|
bool onCurtainAnimation = false;
|
/// <summary>
|
/// 窗帘动画
|
/// </summary>
|
/// <param name="progress"></param>
|
void CurtainAnimation(int progress)
|
{
|
onCurtainAnimation = true;
|
//运行方向 打开(加进度):关闭(减进度)
|
bool runningDirection = progress > curtainSeekBar.Progress;
|
int curBarProgress = curtainSeekBar.Progress;
|
new System.Threading.Thread(() =>
|
{
|
try
|
{
|
while (progress != curBarProgress && onCurtainAnimation)
|
{
|
Application.RunOnMainThread(() =>
|
{
|
if (runningDirection)
|
{
|
if (curtainSeekBar.Progress + 10 > progress)
|
{
|
curtainSeekBar.Progress = progress;
|
}
|
else
|
{
|
curtainSeekBar.Progress = curtainSeekBar.Progress + 10;
|
}
|
}
|
else
|
{
|
if (curtainSeekBar.Progress - 10 < progress)
|
{
|
curtainSeekBar.Progress = progress;
|
}
|
else
|
{
|
curtainSeekBar.Progress = curtainSeekBar.Progress - 10;
|
}
|
}
|
curBarProgress = curtainSeekBar.Progress;
|
});
|
System.Threading.Thread.Sleep(100);
|
}
|
}
|
catch { }
|
finally
|
{
|
new System.Threading.Thread(() => {
|
System.Threading.Thread.Sleep(3000);
|
onCurtainAnimation = false;
|
})
|
{ IsBackground = true, Priority = System.Threading.ThreadPriority.Lowest }.Start();
|
}
|
}).Start();
|
}
|
|
|
/// <summary>
|
/// 加载事件列表
|
/// </summary>
|
void LoadEventList()
|
{
|
LoadEvent_ControlEvent();
|
LoadCollectionEvent();
|
|
//回退刷新信息事件
|
actionRefresh = () =>
|
{
|
btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
|
btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName();
|
//function.SaveFunctionData(true);
|
};
|
}
|
/// <summary>
|
/// 收藏功能按钮事件
|
/// </summary>
|
void LoadCollectionEvent()
|
{
|
btnCollection.MouseUpEventHandler += (sender, e) =>
|
{
|
btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
|
function.CollectFunction();
|
};
|
}
|
|
/// <summary>
|
/// 加载窗帘控制事件
|
/// </summary>
|
void LoadEvent_ControlEvent()
|
{
|
btnCurtainClose.MouseUpEventHandler = (sender, e) =>
|
{
|
new System.Threading.Thread(() =>
|
{
|
System.Threading.Thread.Sleep(2000);
|
Application.RunOnMainThread(() =>
|
{
|
btnCurtainClose.IsSelected = false;
|
});
|
})
|
{ IsBackground = true }.Start();
|
function.trait_on_off.curValue = "off";
|
function.SetAttrState(FunctionAttributeKey.Percent, 0);
|
System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
|
DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
CurtainAnimation(0);
|
};
|
|
btnCurtainStop.MouseUpEventHandler = (sender, e) =>
|
{
|
onCurtainAnimation = false;
|
new System.Threading.Thread(() =>
|
{
|
System.Threading.Thread.Sleep(2000);
|
Application.RunOnMainThread(() =>
|
{
|
btnCurtainStop.IsSelected = false;
|
});
|
})
|
{ IsBackground = true }.Start();
|
function.trait_on_off.curValue = "stop";
|
System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
|
DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
};
|
|
btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
|
{
|
new System.Threading.Thread(() =>
|
{
|
System.Threading.Thread.Sleep(2000);
|
Application.RunOnMainThread(() =>
|
{
|
btnCurtainOpen.IsSelected = false;
|
});
|
})
|
{ IsBackground = true }.Start();
|
function.trait_on_off.curValue = "on";
|
function.SetAttrState(FunctionAttributeKey.Percent, 100);
|
System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
|
DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
CurtainAnimation(100);
|
};
|
|
|
btnCurtainStop.MouseDownEventHandler = (sender, e) =>
|
{
|
btnCurtainStop.IsSelected = true;
|
btnCurtainClose.IsSelected = false;
|
btnCurtainOpen.IsSelected = false;
|
};
|
btnCurtainOpen.MouseDownEventHandler = (sender, e) =>
|
{
|
btnCurtainOpen.IsSelected = true;
|
btnCurtainClose.IsSelected = false;
|
btnCurtainStop.IsSelected = false;
|
};
|
btnCurtainClose.MouseDownEventHandler = (sender, e) =>
|
{
|
btnCurtainClose.IsSelected = true;
|
btnCurtainOpen.IsSelected = false;
|
btnCurtainStop.IsSelected = false;
|
};
|
|
//btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
|
//{
|
// function.percent--;
|
// controlBar.Progress = function.percent;
|
// System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
// d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
|
// DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
//};
|
|
//btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
|
//{
|
// function.percent++;
|
// controlBar.Progress = function.percent;
|
// System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
// d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
|
// DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
//};
|
|
//curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
|
//{
|
// controlBar.Progress = curtainSeekBar.Progress;
|
// new System.Threading.Thread(() =>
|
// {
|
// if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
|
// {
|
// function.percent = e;
|
// function.refreshTime = DateTime.Now;
|
// System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
// d.Add("percent", function.percent.ToString());
|
// Control.SendWriteCommand(function, d);
|
// }
|
// })
|
// { IsBackground = true }.Start();
|
//};
|
curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
|
{
|
//controlBar.Progress = curtainSeekBar.Progress;
|
new System.Threading.Thread(() =>
|
{
|
function.SetAttrState(FunctionAttributeKey.Percent, e);
|
function.refreshTime = DateTime.Now;
|
System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
d.Add(FunctionAttributeKey.Percent, e.ToString());
|
DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
})
|
{ IsBackground = true }.Start();
|
};
|
|
//controlBar.OnProgressChangedEvent = (sender, e) =>
|
//{
|
// curtainSeekBar.Progress = controlBar.Progress;
|
// new System.Threading.Thread(() =>
|
// {
|
// if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
|
// {
|
// function.percent = e;
|
// function.refreshTime = DateTime.Now;
|
// System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
// d.Add("percent", function.percent.ToString());
|
// Control.SendWriteCommand(function, d);
|
// }
|
// })
|
// { IsBackground = true }.Start();
|
//};
|
|
//controlBar.OnStopTrackingTouchEvent = (sender, e) =>
|
//{
|
// curtainSeekBar.Progress = controlBar.Progress;
|
// new System.Threading.Thread(() =>
|
// {
|
// function.percent = e;
|
// function.refreshTime = DateTime.Now;
|
// System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
|
// d.Add("percent", function.percent.ToString());
|
// DriverLayer.Control.Ins.SendWriteCommand(function, d);
|
// })
|
// { IsBackground = true }.Start();
|
//};
|
|
}
|
}
|
}
|