using System;
using Shared;
using HDL_ON.UI.CSS;
using System.Net;
using System.Text;
using HDL_ON.DAL.Server;
using System.Threading.Tasks;
namespace HDL_ON.UI
{
///
/// 关于页面
///
public class AboutOnPage : FrameLayout
{
///
///
///
FrameLayout bodyView;
///
/// 新版本的版本号,查询到新版本才赋值
///
string newAppVersion;
///
/// 新版本的下载地址
/// iOS 默认为苹果商店地址
/// Android 云端返回地址
///
string newAppVersionUrl = "";
///
/// 版本更新ListCellView
///
ListCellView versionUpdateView;
///
///
///
public AboutOnPage()
{
bodyView = this;
}
///
///
///
public void LoadPage()
{
new TopViewDiv(bodyView, Language.StringByID(StringId.About)).LoadTopView();
this.BackgroundColor = CSS_Color.MainBackgroundColor;
Button btnOnIcon = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(106),
Width = Application.GetRealWidth(58),
Height = Application.GetRealWidth(58),
UnSelectedImagePath = "OnIcon.png",
};
bodyView.AddChidren(btnOnIcon);
Button btnOnTitle = new Button()
{
//Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(184),
Height = Application.GetRealWidth(28),
TextAlignment = TextAlignment.Center,
Text = "荣悦智能",
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
IsBold = true,
};
bodyView.AddChidren(btnOnTitle);
Button btnOnVersion = new Button()
{
Y = btnOnTitle.Bottom,
Height = Application.GetRealWidth(25),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = Language.StringByID(StringId.VersionNumber) + " " + MainPage.VersionString,
};
bodyView.AddChidren(btnOnVersion);
if(HttpUtil.GlobalRequestHttpsHost == "https://test-gz.hdlcontrol.com")
{
btnOnVersion.Text += "(Test Server)";
}
var lineView = new FrameLayout()
{
Y = Application.GetRealHeight(281),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.DividingLineColor,
};
bodyView.AddChidren(lineView);
#region 版本更新
versionUpdateView = new ListCellView()
{
Y = lineView.Bottom,
};
#if __ANDROID__
bodyView.AddChidren(versionUpdateView);
CheckIfNeedUpdateAsync(false);
#endif
versionUpdateView.BtnTilte.TextID = StringId.VersionUpdate;
Action versionUpdateAction = () =>
{
OpenUrl();
};
versionUpdateView.GoAction = versionUpdateAction;
#endregion
#region 软件服务协议
var serviceAgreementView = new ListCellView()
{
#if __ANDROID__
Y = versionUpdateView.Bottom,
#else
Y = lineView.Bottom,
#endif
};
bodyView.AddChidren(serviceAgreementView);
serviceAgreementView.BtnTilte.TextID = StringId.UserAgreement;
Action serviceAgreementAction = () => {
string url = Constant.URL_USERAGREEMENT;
string titleStr = Language.StringByID(StringId.UserAgreement);
new WebViewDialog().LoadPageWithdrawalConsent(titleStr, url);
};
serviceAgreementView.GoAction = serviceAgreementAction;
#endregion
#region 用户信息保护协议
var privacyPolicyView = new ListCellView()
{
Y = serviceAgreementView.Bottom,
};
bodyView.AddChidren(privacyPolicyView);
privacyPolicyView.BtnTilte.TextID = StringId.PrivacyPolicy;
Action privacyPolicyAction = () => {
string url = Constant.URL_PRIVACYPOLICY;
string titleStr = Language.StringByID(StringId.PrivacyPolicy);
new WebViewDialog().LoadPageWithdrawalConsent(titleStr, url);
};
#endregion
privacyPolicyView.GoAction = privacyPolicyAction;
}
///
/// 判断是否需要调整新版本下载地址
///
void OpenUrl()
{
if (!string.IsNullOrEmpty(newAppVersion)&& newAppVersion.Contains("http"))
{
HDLUtils.OpenUrl(newAppVersionUrl);
}
else
{
Utlis.ShowTip(Language.StringByID(StringId.IsLatestVersion));
}
}
///
/// 检测是否需要更新
/// Android等接口实现
///
///
void CheckIfNeedUpdateAsync(bool isTip = false)
{
new System.Threading.Thread(() =>
{
newAppVersion = CanUpdateAsync();
Application.RunOnMainThread(() =>
{
if (!string.IsNullOrEmpty(newAppVersion))
{
//发现新版本
versionUpdateView.BtnSubtitle.TextColor = CSS_Color.MainColor;
versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.DiscoverNewVersion) + "(" + newAppVersion + ")";
}
else
{
//已经是最新版本
versionUpdateView.BtnSubtitle.TextColor = CSS_Color.PromptingColor1;
versionUpdateView.BtnSubtitle.Text = Language.StringByID(StringId.IsLatestVersion);
}
});
})
{ IsBackground = true }.Start();
}
///
/// 检查版本
///
///
string CanUpdateAsync()
{
try
{
var versionResult = CheckAppVersion();
if (versionResult == null)
{
return "";
}
var newVersion = versionResult.version;
if (newVersion.CompareTo(MainPage.VersionString) > 0)
{
newAppVersionUrl = versionResult.packageUrl;
return newVersion;
}
return "";
}
catch (Exception ex)
{
return "";
}
}
///
/// 检测新版本
///
/// The https app version async.
private AppVersionResNew CheckAppVersion()
{
try
{
var result = new HttpServerRequest().CheckAppVersion();
if (result.Code == StateCode.SUCCESS)
{
if (result.Data == null)
{
return null;
}
var responeData = Newtonsoft.Json.JsonConvert.DeserializeObject(result.Data.ToString());
return responeData;
}
return null;
}
catch (Exception ex)
{
return null;
}
}
}
}