using System;
using System.Collections.Generic;
using System.Text;
using Shared;
using Shared.SimpleControl;
using Shared.SimpleControl.R;
using Shared.SimpleControl.Pad.Music;
using Shared.SimpleControl.Pad;
using System.Xml;
namespace SmartHome.UI.SimpleControl.Pad.Music
{
class A31Tidalhome : FrameLayout
{
///
/// 密码
///
EditText password;
///
/// 用户名
///
EditText username;
A31MusicModel currentMusiceA31;
public void show (A31MusicModel a31)
{
currentMusiceA31 = a31;
AddChidren (new Button {
Height = Application.GetRealHeight (36),
BackgroundColor = SkinStyle.Current.MainColor,
});
var topFrameLayout = new FrameLayout {
Height = Application.GetRealHeight (90),
Y = Application.GetRealHeight (36),
BackgroundColor = SkinStyle.Current.MainColor,
};
AddChidren (topFrameLayout);
var LocallistName = new Button {
Text = "TIDAL LOGIN",
};
topFrameLayout.AddChidren (LocallistName);
var hdl = new Button {
Width = Application.GetRealWidth (154),
Height = Application.GetRealHeight (90),
X = Application.GetRealWidth (486),
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = MainPage.LogoString,
};
topFrameLayout.AddChidren (hdl);
var back = new Button {
Width = Application.GetRealWidth (82),
Height = Application.GetRealHeight (89),
X = Application.GetRealWidth (10),
Gravity = Gravity.CenterVertical,
UnSelectedImagePath = "MusicIcon/HomepageBack.png",
};
topFrameLayout.AddChidren (back);
back.MouseDownEventHandler += (sender, e) => {
RemoveFromParent ();
};
var middle = new FrameLayout ();
middle.Y = topFrameLayout.Bottom;
middle.Height = Application.GetRealHeight (1136 - 130);
middle.BackgroundColor = 0xff2F2F2F;
AddChidren (middle);
username = new EditText {
Width = Application.GetRealWidth (580),
Height = Application.GetRealHeight (80),
X = Application.GetRealWidth (30),
Y = Application.GetRealHeight (180),
TextAlignment = TextAlignment.CenterLeft,
BackgroundColor = 0xFF4D4D4D,
};
middle.AddChidren (username);
password = new EditText {
Width = Application.GetRealWidth (580),
Height = Application.GetRealHeight (80),
X = Application.GetRealWidth (30),
Y = Application.GetRealHeight (300),
TextAlignment = TextAlignment.CenterLeft,
BackgroundColor = 0xFF4D4D4D,
};
middle.AddChidren (password);
Button login = new Button {
Width = Application.GetRealWidth (500),
Height = Application.GetRealHeight (100),
X = Application.GetRealWidth (70),
Y = Application.GetRealHeight (460),
BackgroundColor = 0xff009999,
Text = "Login",
TextSize = 18,
Radius = (uint)Application.GetRealHeight (16),
};
login.MouseUpEventHandler += (sender, e) => {
login.BackgroundColor = 0xff009999;
var ddd = Login (username.Text, password.Text).Replace (""", "\"");
if (ddd == null) {
return;
}
int startIndex = ddd.IndexOf ("");
int endIndex = ddd.IndexOf ("") + "".Length;
var ss = ddd.Substring (startIndex, endIndex - startIndex);
if (endIndex <= startIndex) {
return;
}
XmlDocument xml = new XmlDocument ();
xml.LoadXml (ss);
var Result = xml.SelectSingleNode ("Result").InnerText;
if (Result != null) {
// var ifTidal = Newtonsoft.Json.JsonConvert.DeserializeObject(Result);
//if (ifTidal.userMessage != "Username or password is wrong")
//{
// var list = ListReading().Replace(""", "\"");
//}
//else
//{
// new Tip() { Text = Language.StringByID(MyInternationalizationString.Accountorpassworderro), Direction = AMPopTipDirection.Down }.Show(login);
//}
}
};
login.MouseDownEventHandler += (sender, e) => {
login.BackgroundColor = 0xffFE5E00;
};
middle.AddChidren (login);
}
List readRadiohome (string userName, string password, string url)
{
//var userName = "ieast";
//var password = "60b25158ee94";
System.Net.WebClient webClient = new System.Net.WebClient ();
webClient.Headers.Add ("CONTENT-TYPE", "text/xml;charset=\"utf-8\"");
webClient.Headers.Add ("Authorization", "Basic " + Convert.ToBase64String (System.Text.Encoding.ASCII.GetBytes (userName + ":" + password)));
System.IO.StringReader sr = null;
var airablelist = new List ();
try {
byte [] recevieBytes = webClient.DownloadData (new Uri (url));
string tempString = System.Text.Encoding.UTF8.GetString (recevieBytes, 0, recevieBytes.Length);
sr = new System.IO.StringReader (tempString);
string line = null;
StringBuilder stringBuilder = null;
while ((line = sr.ReadLine ()) != null) {
line = line.Trim ();
if (line.StartsWith ("")) {
stringBuilder = new StringBuilder ();
stringBuilder.Append ("{");
} else if (line.EndsWith ("
")) {
stringBuilder.Append ("}");
string s = @stringBuilder.ToString ().Replace (",}", "}");
var ariable = Newtonsoft.Json.JsonConvert.DeserializeObject (@s);
stringBuilder = null;
MusicInfo musicInfo = new MusicInfo ();
musicInfo.Title = ariable.title;
musicInfo.URL = ariable.url;
for (int i = 0; i < ariable.id.Length; i++) {
if (ariable.id [i].ToString () == "radio") {
musicInfo.IsDirectory = false;
break;
}
}
airablelist.Add (musicInfo);
} else {
if (stringBuilder != null) {
if (line.StartsWith ("\"url\"")) {
line = line.Remove (line.IndexOf ("") - line.IndexOf ("", "");
stringBuilder.Append (@line);
} else {
stringBuilder.Append (@line);
}
}
}
}
return airablelist;
} catch {
return null;
} finally {
if (sr != null) {
sr.Close ();
}
}
}
///
/// 登录信息
///
/// 用户名
/// 密码
///
string Login (string username, string password)
{
StringBuilder getPlayList = new StringBuilder ();
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("Tidal");
getPlayList.AppendLine ("" + username + "");//muzodev4
getPlayList.AppendLine ("" + password + "");//ECJUFDFLAICSFUAHEE
getPlayList.AppendLine ("0");
getPlayList.AppendLine ("
");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
System.Net.WebClient webClient = new System.Net.WebClient ();
webClient.Headers.Add ("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#UserLogin\"");
webClient.Headers.Add ("CONTENT-TYPE", "text/xml;charset=\"utf-8\"");
try {
byte [] recevieBytes = webClient.UploadData (new Uri ("http://" + currentMusiceA31.IPAddress + ":" + currentMusiceA31.Port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes (getPlayList.ToString ()));
return System.Text.Encoding.UTF8.GetString (recevieBytes, 0, recevieBytes.Length);
} catch (Exception e) {
return null;
}
}
string ListReading ()
{
StringBuilder getPlayList = new StringBuilder ();
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("Tidal");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
getPlayList.AppendLine ("");
System.Net.WebClient webClient = new System.Net.WebClient ();
webClient.Headers.Add ("SOAPACTION", "\"urn:schemas-wiimu-com:service:PlayQueue:1#GetUserInfo\"");
webClient.Headers.Add ("CONTENT-TYPE", "text/xml;charset=\"utf-8\"");
try {
byte [] recevieBytes = webClient.UploadData (new Uri ("http://" + currentMusiceA31.IPAddress + ":" + currentMusiceA31.Port + "/upnp/control/PlayQueue1"), "POST", System.Text.Encoding.UTF8.GetBytes (getPlayList.ToString ()));
return System.Text.Encoding.UTF8.GetString (recevieBytes, 0, recevieBytes.Length);
} catch (Exception e) {
return null;
}
}
}
}