261 lines
8.7 KiB
C#
261 lines
8.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Animation;
|
|
using System.Windows.Shapes;
|
|
using System.ComponentModel;
|
|
using System.Windows.Data;
|
|
using System.Net.NetworkInformation;
|
|
using Microsoft.Phone.Controls;
|
|
using Newtonsoft.Json;
|
|
|
|
namespace Dota_2_Matches
|
|
{
|
|
public partial class MainPage : PhoneApplicationPage
|
|
{
|
|
RootObject matches = new RootObject();
|
|
List<Upcoming> upMatches = new List<Upcoming>();
|
|
List<Ended> endMatches = new List<Ended>();
|
|
WebClient webClient = new WebClient();
|
|
|
|
// Constructor
|
|
public MainPage()
|
|
{
|
|
InitializeComponent();
|
|
this.loadJSON();
|
|
}
|
|
|
|
// Load the JSON data
|
|
private void loadJSON()
|
|
{
|
|
//webClient = new WebClient();
|
|
webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClient_DownloadStringCompleted);
|
|
webClient.DownloadStringAsync(new Uri("http://api.dotaprj.me/v2/jd/"));
|
|
}
|
|
|
|
// Displaying the upcoming matches sorted by date
|
|
private void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
|
|
{
|
|
// Check if the download finished correctly
|
|
if (e.Error != null)
|
|
{
|
|
MessageBox.Show("Can't access the data right now. Try again later.");
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
|
|
matches = JsonConvert.DeserializeObject<RootObject>(e.Result);
|
|
loadTxtBlock.Visibility = System.Windows.Visibility.Collapsed;
|
|
loadTxtBlock2.Visibility = System.Windows.Visibility.Collapsed;
|
|
upMatches.Clear();
|
|
endMatches.Clear();
|
|
|
|
// Setting images
|
|
if (matches.started != null)
|
|
{
|
|
foreach (var item in matches.started)
|
|
{
|
|
//Team 1
|
|
item.img1 = getImgPath(item.img1tit);
|
|
item.img2 = getImgPath(item.img2tit);
|
|
|
|
// Save live matches into an Upcoming object to add it to the upcoming list)
|
|
upMatches.Add(new Upcoming()
|
|
{
|
|
id = item.id,
|
|
img1 = item.img1,
|
|
img1tit = item.img1tit,
|
|
team1 = item.team1,
|
|
img2 = item.img2,
|
|
img2tit = item.img2tit,
|
|
team2 = item.team2,
|
|
linkID = item.linkID,
|
|
eventName = item.eventName,
|
|
fullDate = item.fullDate,
|
|
timeStamp = item.timeStamp,
|
|
liveIn = item.liveIn,
|
|
teamWidth = item.teamWidth,
|
|
eventWidth = item.eventWidth,
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
if (matches.upcoming != null)
|
|
{
|
|
foreach (var item in matches.upcoming)
|
|
{
|
|
//Team 1
|
|
item.img1 = getImgPath(item.img1tit);
|
|
item.img2 = getImgPath(item.img2tit);
|
|
}
|
|
}
|
|
|
|
if (matches.ended != null)
|
|
{
|
|
foreach (var item in matches.ended)
|
|
{
|
|
//Team 1
|
|
item.img1 = getImgPath(item.img1tit);
|
|
item.img2 = getImgPath(item.img2tit);
|
|
|
|
// Winner color
|
|
if (item.score1 > item.score2)
|
|
{
|
|
item.color1 = "#FFEEE1A8";
|
|
item.color2 = "#FFF1F1F1";
|
|
}
|
|
else if (item.score1 < item.score2)
|
|
{
|
|
item.color1 = "#FFF1F1F1";
|
|
item.color2 = "#FFEEE1A8";
|
|
}
|
|
else
|
|
{
|
|
item.color1 = "#FFF1F1F1";
|
|
item.color2 = "#FFF1F1F1";
|
|
}
|
|
}
|
|
}
|
|
|
|
// Merge live and upcoming matches
|
|
if (matches.upcoming != null)
|
|
{
|
|
upMatches.AddRange(matches.upcoming);
|
|
}
|
|
if (matches.ended != null)
|
|
{
|
|
endMatches.AddRange(matches.ended);
|
|
}
|
|
|
|
// Set the size of the textblocks
|
|
if (Orientation == PageOrientation.LandscapeRight || Orientation == PageOrientation.LandscapeLeft)
|
|
{
|
|
setLandscapeProperties();
|
|
}
|
|
else
|
|
{
|
|
setPortraitProperties();
|
|
}
|
|
|
|
ListUpMatches.ItemsSource = upMatches;
|
|
ListEndMatches.ItemsSource = endMatches;
|
|
}
|
|
}
|
|
|
|
// Returning the right image
|
|
private string getImgPath(string o)
|
|
{
|
|
string s;
|
|
switch (o)
|
|
{
|
|
case "USA": s = "img/us.jpg";
|
|
break;
|
|
case "Sweden": s = "img/se.jpg";
|
|
break;
|
|
case "China": s = "img/cn.jpg";
|
|
break;
|
|
case "Europe": s = "img/eu.jpg";
|
|
break;
|
|
case "Ukraine": s = "img/ua.jpg";
|
|
break;
|
|
case "World": s = "img/world.jpg";
|
|
break;
|
|
case "Singapore": s = "img/sg.jpg";
|
|
break;
|
|
case "Philippines": s = "img/ph.jpg";
|
|
break;
|
|
case "Thailand": s = "img/th.jpg";
|
|
break;
|
|
case "Russia": s = "img/ru.jpg";
|
|
break;
|
|
case "Belarus": s = "img/by.jpg";
|
|
break;
|
|
case "Denmark": s = "img/dk.jpg";
|
|
break;
|
|
case "Australia": s = "img/au.jpg";
|
|
break;
|
|
case "Korea": s = "img/kr.jpg";
|
|
break;
|
|
case "Malaysia": s = "img/my.jpg";
|
|
break;
|
|
case "Vietnam": s = "img/vn.jpg";
|
|
break;
|
|
case "Bhutan": s = "img/bt.jpg";
|
|
break;
|
|
case "Brazil": s = "img/br.jpg";
|
|
break;
|
|
case "Peru": s = "img/pe.jpg";
|
|
break;
|
|
default: s = "img/world.jpg";
|
|
break;
|
|
}
|
|
|
|
return s;
|
|
}
|
|
|
|
private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
|
|
{
|
|
// Portrait
|
|
if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
|
|
{
|
|
setPortraitProperties();
|
|
}
|
|
// Landscape
|
|
else
|
|
{
|
|
setLandscapeProperties();
|
|
}
|
|
ListUpMatches.ItemsSource = null;
|
|
ListEndMatches.ItemsSource = null;
|
|
ListUpMatches.ItemsSource = upMatches;
|
|
ListEndMatches.ItemsSource = endMatches;
|
|
}
|
|
|
|
private void setLandscapeProperties()
|
|
{
|
|
foreach (var item in upMatches)
|
|
{
|
|
item.eventWidth = 390;
|
|
item.teamWidth = 172;
|
|
}
|
|
foreach (var item in endMatches)
|
|
{
|
|
item.eventWidth = 390;
|
|
item.teamWidth = 188;
|
|
}
|
|
}
|
|
|
|
private void setPortraitProperties()
|
|
{
|
|
foreach (var item in upMatches)
|
|
{
|
|
item.eventWidth = 205;
|
|
item.teamWidth = 80;
|
|
}
|
|
foreach (var item in endMatches)
|
|
{
|
|
item.eventWidth = 205;
|
|
item.teamWidth = 95;
|
|
}
|
|
}
|
|
|
|
// Load again the data
|
|
private void reloadData(object sender, EventArgs e)
|
|
{
|
|
this.loadJSON();
|
|
ListUpMatches.ItemsSource = null;
|
|
ListEndMatches.ItemsSource = null;
|
|
loadTxtBlock.Visibility = System.Windows.Visibility.Visible;
|
|
loadTxtBlock2.Visibility = System.Windows.Visibility.Visible;
|
|
}
|
|
|
|
}
|
|
} |