You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
6.6 KiB
187 lines
6.6 KiB
using Container.Business;
|
|
using Container.Common;
|
|
using Container.Viewmodel;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using System.Windows.Threading;
|
|
|
|
namespace Container.Win
|
|
{
|
|
/// <summary>
|
|
/// WeatherControl.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class WeatherControl : UserControl
|
|
{
|
|
DispatcherTimer WeatherTimer = new DispatcherTimer();//停止播放视频的定时器
|
|
JService jService = new JService();
|
|
Class_Log log = new Class_Log();
|
|
string city = string.Empty;
|
|
public WeatherControl()
|
|
{
|
|
InitializeComponent();
|
|
WeatherTimer.Interval = TimeSpan.FromMinutes(60);//每秒刷新一次
|
|
WeatherTimer.Tick += new EventHandler(WeatherTimer_Tick);
|
|
}
|
|
public void LoadWeather(string city,int type,double width,double height, string backgroundColor, string fontColor) {
|
|
this.Width = width;
|
|
this.Height = height;
|
|
this.city = city;
|
|
BrushConverter converter = new BrushConverter();
|
|
if (!string.IsNullOrEmpty(backgroundColor))
|
|
{
|
|
Brush newFill = (Brush)converter.ConvertFromString(backgroundColor);
|
|
gridMain.Background = newFill;
|
|
}
|
|
if (!string.IsNullOrEmpty(fontColor))
|
|
{
|
|
Brush newFill = (Brush)converter.ConvertFromString(fontColor);
|
|
txtFL1.Foreground = newFill;
|
|
txtAQI1.Foreground = newFill;
|
|
txtAQI2.Foreground = newFill;
|
|
txtFL2.Foreground = newFill;
|
|
txtPM1.Foreground = newFill;
|
|
txtPM2.Foreground = newFill;
|
|
txtsd1.Foreground = newFill;
|
|
txtsd2.Foreground = newFill;
|
|
txtTemp1.Foreground = newFill;
|
|
txtTemp2.Foreground = newFill;
|
|
|
|
txtTempZ1.Foreground = newFill;
|
|
txtsdp1.Foreground = newFill;
|
|
txtAQIA1.Foreground = newFill;
|
|
txtPMpm1.Foreground = newFill;
|
|
txtPMV1.Foreground = newFill;
|
|
|
|
txtTempZ2.Foreground = newFill;
|
|
txtsdp2.Foreground = newFill;
|
|
txtAQIA2.Foreground = newFill;
|
|
txtPMpm2.Foreground = newFill;
|
|
txtPMV2.Foreground = newFill;
|
|
}
|
|
gridMain.Width = width;
|
|
gridMain.Height = height;
|
|
style1.Width = width;
|
|
style1.Height = height;
|
|
style2.Width = width;
|
|
style2.Height = height;
|
|
BindWeather();
|
|
if (type == 0)
|
|
{
|
|
style1.Visibility = Visibility.Visible;
|
|
style2.Visibility = Visibility.Hidden;
|
|
}
|
|
else {
|
|
style2.Visibility = Visibility.Visible;
|
|
style1.Visibility = Visibility.Hidden;
|
|
}
|
|
|
|
|
|
WeatherTimer.Start();
|
|
}
|
|
|
|
private void WeatherTimer_Tick(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
BindWeather();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.WriteLogFile(ex.Message, "error");
|
|
}
|
|
}
|
|
|
|
private void BindWeather()
|
|
{
|
|
try
|
|
{
|
|
string imgUrl = "";
|
|
WeatherViewModel weather = jService.GetEnvironmental(city);
|
|
if (weather == null || string.IsNullOrEmpty(weather.status))
|
|
{
|
|
this.Width = 0;
|
|
this.Height = 0;
|
|
return;
|
|
}
|
|
if (weather.status.Contains("晴"))
|
|
{
|
|
imgUrl = "weather_sum.png";
|
|
}
|
|
else if (weather.status.Contains("云"))
|
|
{
|
|
imgUrl = "weather_cloud.png";
|
|
}
|
|
else if (weather.status.Contains("雨"))
|
|
{
|
|
imgUrl = "weather_rian.png";
|
|
}
|
|
|
|
else if (weather.status.Contains("雪"))
|
|
{
|
|
imgUrl = "weather_snow.png";
|
|
}
|
|
else if (weather.status.Contains("阴") || weather.status.Contains("雾"))
|
|
{
|
|
imgUrl = "weather_cloud.png";
|
|
}
|
|
else
|
|
{
|
|
imgUrl = "weather_sum.png";
|
|
}
|
|
if (!string.IsNullOrEmpty(weather.temperature))
|
|
{
|
|
txtTemp1.Text = Math.Floor(Convert.ToDouble(weather.temperature)).ToString();
|
|
txtTemp2.Text = Math.Floor(Convert.ToDouble(weather.temperature)).ToString();
|
|
}
|
|
if (!string.IsNullOrEmpty(weather.pm25))
|
|
{
|
|
txtPM1.Text = Math.Floor(Convert.ToDouble(weather.pm25)).ToString();
|
|
txtPM2.Text = Math.Floor(Convert.ToDouble(weather.pm25)).ToString();
|
|
}
|
|
if (!string.IsNullOrEmpty(weather.humidity))
|
|
{
|
|
txtsd1.Text = weather.humidity.Replace("%","");
|
|
txtsd2.Text = weather.humidity.Replace("%", "");
|
|
}
|
|
if (!string.IsNullOrEmpty(weather.windPower))
|
|
{
|
|
txtFL1.Text = weather.windPower.Substring(0,weather.windPower.IndexOf("级"));
|
|
txtFL2.Text = weather.windPower.Substring(0,weather.windPower.IndexOf("级"));
|
|
}
|
|
if (!string.IsNullOrEmpty(weather.aqi))
|
|
{
|
|
txtAQI1.Text = weather.aqi;
|
|
txtAQI2.Text = weather.aqi;
|
|
}
|
|
Uri uri = new Uri("pack://application:,,,/Container;component/image/weather/" + imgUrl);
|
|
ImageBrush ib = new ImageBrush();
|
|
ib.ImageSource = new BitmapImage(uri);
|
|
this.imgWeather1.Source = ib.ImageSource;
|
|
this.imgWeather2.Source = ib.ImageSource;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
this.Width = 0;
|
|
this.Height = 0;
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
if (WeatherTimer != null)
|
|
WeatherTimer.Stop();
|
|
}
|
|
}
|
|
}
|
|
|