using System;
using Shared;
using Shared.SimpleControl;
namespace SmartHome
{
public class SearchServerOnePortListPage : FrameLayout
{
#region 文本
string text_Title = "远程";
string text_userName = "组名";
string text_projectName = "工程名";
string text_password = "密码";
string text_entry_userName_tip = "请输入组名。";
string text_entry_projectName_tip = "请输入工程名。";
string text_entry_password_tip = "请输入密码。";
string text_link = "连接";
string text_back = "后退";
string text_reading = "读取中";
///
/// 已升级
///
string text_Upgraded = "已升级";
///
/// 正在升级
///
string text_Upgrading = "正在升级";
///
/// 升级失败
///
string text_UpgradeFailed = "升级失败";
///
/// 未知版本
///
string text_UnknownVersion = "未知版本";
///
/// 读取失败
///
string text_readFailure = "读取失败";
string txt_breakLink = "断开连接";
string txt_connectionSucceeded = "搜索完成";
string txt_linkSeverFailed = "连接服务器失败";
string txt_DataError = "数据异常";
string txt_QueryFailed = "查询失败";
string txt_NoData = "无数据";
string txt_Search = "搜索";
#endregion
///
/// 中间界面
///
public VerticalScrolViewLayout contentView;
public VerticalScrolViewLayout infoView;
public VerticalScrolViewLayout listView;
public override void RemoveFromParent ()
{
CommonPage.IsRemote = false;
base.RemoveFromParent ();
}
public SearchServerOnePortListPage ()
{
if (Language.CurrentLanguage != "Chinese") {
text_Title = "Remote";
text_userName = "Group name";
text_projectName = "project name";
text_password = "Password";
text_entry_userName_tip = "Please enter the group name.";
text_entry_projectName_tip = "Please enter the project name.";
text_entry_password_tip = "Please input a password.";
text_Upgraded = "Upgraded";
text_Upgrading = "Upgrading";
text_UpgradeFailed = "Upgrade failed";
text_UnknownVersion = "Unknown version";
text_readFailure = "Read failure";
text_back = "Back";
text_link = "Link";
text_reading = "Reading";
txt_breakLink = "Break link";
txt_connectionSucceeded = "Search complete";
txt_linkSeverFailed = "Failed to connect to the server";
txt_DataError = "Data exception";
txt_QueryFailed = "Query failed";
txt_Search = "search";
txt_NoData = "No data";
}
}
public void ShowPage ()
{
BackgroundColor = SkinStyle.Current.MainColor;
initTop ();
initContentView ();
}
void initTop ()
{
FrameLayout topView = new FrameLayout () {
Height = Application.GetRealHeight (126),
};
AddChidren (topView);
Button NameButton = new Button () {
Width = Application.GetRealWidth (400),
Height = Application.GetMinReal (90),
Text = text_Title,
TextColor = SkinStyle.Current.TextColor1,
Gravity = Gravity.CenterHorizontal,
TextAlignment = TextAlignment.Center,
Y = Application.GetRealHeight (30),
TextSize = 20,
};
topView.AddChidren (NameButton);
var btnBack = new Button () {
X = Application.GetRealWidth (34),
Y = Application.GetRealHeight (30),
Width = Application.GetRealWidth (200),
Height = Application.GetMinReal (90),
TextAlignment = TextAlignment.CenterLeft,
Text = text_back,
TextColor = 0xCC0195F9,
};
topView.AddChidren (btnBack);
btnBack.MouseUpEventHandler = (sender, e) => {
this.RemoveFromParent ();
};
}
void initContentView ()
{
var remoteClient = new SystemRemote ();
string userName = "";
string projectName = "";
string password = "";
contentView = new VerticalScrolViewLayout () {
Y = Application.GetRealHeight (126),
Height = Application.GetRealHeight (1136 - 126),
BackgroundColor = SkinStyle.Current.ViewColor,
ScrollEnabled = false,
};
AddChidren (contentView);
infoView = new VerticalScrolViewLayout () {
Height = Application.GetRealHeight (1136 - 126 - 90),
ScrollEnabled = false,
};
contentView.AddChidren (infoView);
#region
var userNameView = new FrameLayout () {
Height = Application.GetRealHeight (93),
BackgroundColor = SkinStyle.Current.ViewColor,
};
infoView.AddChidren (userNameView);
var btnUserNameTitle = new Button () {
X = Application.GetRealWidth (32),
Text = text_userName,
TextColor = SkinStyle.Current.TextColor1,
};
btnUserNameTitle.Width = btnUserNameTitle.GetTextWidth () + Application.GetRealWidth (30);
userNameView.AddChidren (btnUserNameTitle);
var tvUserName = new EditText () {
Width = Application.GetRealWidth (400),
X = btnUserNameTitle.Right,
TextColor = SkinStyle.Current.TextColor1,
};
userNameView.AddChidren (tvUserName);
var btnLine = new Button () {
Height = Application.GetRealHeight (2),
BackgroundColor = SkinStyle.Current.LineColor,
};
infoView.AddChidren (btnLine);
#endregion
var rightButton1 = new Button () {
Height = Application.GetRealHeight (93),
TextAlignment = TextAlignment.Center,
};
infoView.AddChidren (rightButton1);
listView = new VerticalScrolViewLayout () {
Height = Application.GetRealHeight (1136 - 126 - 90 - 93 * 2),
};
infoView.AddChidren (listView);
//--------------
var btnOption = new Button () {
TextAlignment = TextAlignment.Center,
TextColor = SkinStyle.Current.TextColor1,
BackgroundColor = SkinStyle.Current.MainColor,
Text = txt_Search,
Height = Application.GetRealHeight (90),
};
contentView.AddChidren (btnOption);
#if DEBUG
userName = tvUserName.Text = "gs";
//projectName = tvProjectName.Text = "www";
//password = tvPassword.Text = "wwwwww";
#endif
btnOption.MouseUpEventHandler = (sender, e) => {
userName = tvUserName.Text.Trim ();
if (string.IsNullOrEmpty (userName)) {
MainPage.AddTip (text_entry_userName_tip);
return;
}
listView.RemoveAll ();
rightButton1.Text = "";
CommonPage.IsRemote = true;
var sendBytes = new byte [29];
var b1 = System.Text.Encoding.UTF8.GetBytes (userName);
byte [] ggn = new byte [20];
Array.Copy (b1, 0, ggn, 0, 20 < b1.Length ? 20 : b1.Length);
Array.Copy (ggn, 0, sendBytes, 9, 20);
new System.Threading.Thread (() => {
CommonPage.IsRemote = true;
Application.RunOnMainThread (() => {
MainPage.Loading.Start ();
});
try {
var sss = Control.ControlBytesSendHasReturn (Command.GetRemoteOnePortListInfo, 0xFB, 0xFB, sendBytes);
if (sss != null) {
try {
if (sss [1] == 248) {
Application.RunOnMainThread (() => {
MainPage.Loading.Start ();
rightButton1.Text = txt_connectionSucceeded;
rightButton1.TextColor = SkinStyle.Current.TextColor1;
});
var count = sss [2] * 256 + sss [3];
for (int i = 1; i <= count; i++) {
byte [] arayImp = new byte [23];
if (b1.Length <= 20)
Array.Copy (b1, 0, arayImp, 1, b1.Length);
else
Array.Copy (b1, 0, arayImp, 1, 20);
arayImp [21] = (byte)(i / 256);
arayImp [22] = (byte)(i % 256);
var oneProtData = Control.ControlBytesSendHasReturn (Command.GetRemoteOnePortInfo, 0xFB, 0xFB, arayImp);
if (oneProtData != null) {
try {
var groupName = System.Text.Encoding.UTF8.GetString (oneProtData, 1, 20).Trim ('\0');//=============
var projectName22 = System.Text.Encoding.UTF8.GetString (oneProtData, 23, 20).Trim ('\0');//=============
var userName22 = System.Text.Encoding.UTF8.GetString (oneProtData, 43, 8).Trim ('\0');//=============
var isOnline = oneProtData [57] == 1;
Application.RunOnMainThread (() => {
RowLayout wirelessView = new RowLayout () {
Height = Application.GetRealHeight (93),
BackgroundColor = SkinStyle.Current.ViewColor,
};
listView.AddChidren (wirelessView);
showGatewayRow (userName22,projectName22, wirelessView,isOnline);
});
}catch (Exception ex) {
}
} else {
}
}
}
else if(sss[1] == 245) {
Application.RunOnMainThread (() => {
rightButton1.Text = txt_NoData;
rightButton1.TextColor = 0x99FF0000;
});
}
else {
Application.RunOnMainThread (() => {
rightButton1.Text = txt_QueryFailed;
rightButton1.TextColor = 0x99FF0000;
});
}
} catch (Exception ex) {
Application.RunOnMainThread (() => {
rightButton1.Text = txt_DataError;
rightButton1.TextColor = 0x99FF0000;
});
} finally {
}
} else {
Application.RunOnMainThread (() => {
rightButton1.Text = txt_linkSeverFailed;
rightButton1.TextColor = 0x99FF0000;
});
}
}catch(Exception ex) {
} finally {
Application.RunOnMainThread (() => {
MainPage.Loading.Hide ();
});
}
}) { IsBackground = true }.Start ();
};
}
///
/// 显示
///
void showGatewayRow (string userName,string projectName, RowLayout wirelessView,bool isOnline)
{
Button pointButton1 = new Button () {
Width = Application.GetRealHeight (20),
Height = Application.GetRealHeight (20),
X = Application.GetRealWidth (60),
Radius = (uint)Application.GetRealHeight (7),
Gravity = Gravity.CenterVertical,
BackgroundColor = isOnline ? 0xFF00FF00: 0xFF000000
};
wirelessView.AddChidren (pointButton1);
Button nameButton1 = new Button () {
Width = Application.GetRealWidth (342),
Height = LayoutParams.MatchParent,
Text = projectName,
TextAlignment = TextAlignment.CenterLeft,
X = pointButton1.Right + Application.GetRealWidth (20),
TextColor = SkinStyle.Current.TextColor1,
};
wirelessView.AddChidren (nameButton1);
Button rightButton1 = new Button () {
X = Application.GetRealWidth (480),
Width = Application.GetRealWidth (150),
Height = Application.GetRealHeight (40),
Gravity = Gravity.CenterVertical,
TextAlignment = TextAlignment.CenterLeft,
TextColor = SkinStyle.Current.TextColor1,
IsMoreLines = true,
TextSize = 12,
Text = text_link,
};
if (isOnline)
wirelessView.AddChidren (rightButton1);
EventHandler eventHandler = (sender, e) => {
LinkOnePort (userName,projectName);
};
nameButton1.MouseUpEventHandler = eventHandler;
rightButton1.MouseUpEventHandler = eventHandler;
wirelessView.MouseUpEventHandler = eventHandler;
}
void LinkOnePort (string userName, string projectName) {
var page = new RemoteOnePort (userName, projectName);
MainPage.MainFrameLayout.AddChidren (page);
page.ShowPage ();
}
}
}