Skip to content

Commit

Permalink
#3, #11: egy működő kinézet a Current adatokra
Browse files Browse the repository at this point in the history
  • Loading branch information
gplesz committed Dec 28, 2018
1 parent e1d9b81 commit d48c59c
Show file tree
Hide file tree
Showing 9 changed files with 270 additions and 66 deletions.
9 changes: 8 additions & 1 deletion pg.DarkSky.Wpf/App.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using pg.DarkSky.Wpf.Properties;
using System;
using System.Globalization;
using System.Threading;
using System.Windows;

namespace pg.DarkSky.Wpf
Expand All @@ -15,16 +16,22 @@ protected override void OnStartup(StartupEventArgs e)
//ha a verziószámok változnának, akkor ez segít a korábbi beállításokat áthozni a legújabb properties állományba
Settings.Default.Upgrade();

//Ez a felület nyelve miatt kell
CultureInfo.DefaultThreadCurrentCulture =
CultureInfo.CreateSpecificCulture(Settings.Default.Culture);
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.DefaultThreadCurrentCulture;

//ez pedig a nyelvi beállítások miatt (dátum, idő, számok)
Thread.CurrentThread.CurrentCulture = CultureInfo.DefaultThreadCurrentCulture;

var culture = CultureInfo.DefaultThreadCurrentCulture;
var dict = new ResourceDictionary
{
Source = new Uri($"pack://application:,,,/Resources/StringResources.{culture.Name}.xaml")
};
this.Resources.MergedDictionaries.Add(dict);
Application.Current.Resources
.MergedDictionaries
.Add(dict);

base.OnStartup(e);
}
Expand Down
2 changes: 1 addition & 1 deletion pg.DarkSky.Wpf/Helpers/IconHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public static PackIconWeatherIconsKind IconToWeatherIcon(this string icon)
case "snow":
return PackIconWeatherIconsKind.Snow;
case "wind":
return PackIconWeatherIconsKind.StrongWind;
return PackIconWeatherIconsKind.Dust;
case "fog":
return PackIconWeatherIconsKind.Fog;
default:
Expand Down
171 changes: 151 additions & 20 deletions pg.DarkSky.Wpf/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
xmlns:helpers="clr-namespace:pg.DarkSky.Wpf.Helpers"
mc:Ignorable="d"
DataContext="{x:Static vm:ViewModelLocator.MainViewModel }"
MinHeight="450" MinWidth="650"
Title="pg.DarkSky" Height="450" Width="800">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="VisibleIfTrueConverter" />
Expand Down Expand Up @@ -51,35 +52,165 @@
<Grid.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedSingleRowTabControl.xaml" />
</Grid.Resources>
<TabControl>
<TabControl Controls:TabControlHelper.Underlined="TabPanel">
<TabItem Header="{DynamicResource MainWindow.Current}"
ToolTip="{DynamicResource MainWindow.Current.Tooltip}">
<StackPanel>
<iconPacks:PackIconWeatherIcons x:Name="SummaryIcon"
Width="32" Height="32"
ToolTip="{Binding Current.Summary}"/>
<iconPacks:PackIconWeatherIcons x:Name="WindspeedIcon" Width="32" Height="32"
ToolTip="{Binding Current.WindSpeedText}"/>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<helpers:ExtendedBinding Source="{Binding Current.WeatherIcon, Mode=TwoWay}"
Target="{Binding ElementName=SummaryIcon,Path=Kind,Mode=TwoWay}"/>
<helpers:ExtendedBinding Source="{Binding Current.WindspeedIcon, Mode=TwoWay}"
Target="{Binding ElementName=WindspeedIcon,Path=Kind,Mode=TwoWay}"/>

<TextBlock Text="{Binding Current.AtmosphericPressureText}" />
<TextBlock Text="{Binding Current.HumidityText}" />
<iconPacks:PackIconWeatherIcons Grid.Row="0" Grid.Column="0"
Grid.ColumnSpan="2"
Grid.RowSpan="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Width="Auto" Height="Auto"
Margin="25"
x:Name="SummaryIcon"
/>
<Label VerticalAlignment="Top"
HorizontalAlignment="Left"
Grid.Row="2" Grid.Column="0"
Grid.ColumnSpan="3"
FontSize="10"
Content="{Binding Current.TimeText}" />

<StackPanel Orientation="Horizontal"
Grid.Row="2" Grid.Column="0"
Grid.ColumnSpan="3"
HorizontalAlignment="Center"
VerticalAlignment="Center"
>

<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
<Label Content="{Binding Current.Temperature}"
FontSize="21"
Margin="0,0,0,0"
VerticalAlignment="Center" />
<iconPacks:PackIconWeatherIcons Kind="Celsius" Width="16" Height="16"
Margin="0"
VerticalAlignment="Center"/>
</StackPanel>

<Label
VerticalAlignment="Center"
FontSize="22"
Content="{Binding Current.Summary}" />

<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Current.Temperature}" />
<iconPacks:PackIconWeatherIcons Kind="Celsius"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Current.ApparentTemperature}" />
<iconPacks:PackIconWeatherIcons Kind="Celsius"/>
</StackPanel>

<TextBlock Text="{Binding Current.UvIndex}"
<Grid Grid.Row="0" Grid.Column="2"
Grid.RowSpan="2"
HorizontalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Label Grid.Row="0"
Content="{DynamicResource MainWindow.Temperature}"
FontSize="10"
VerticalAlignment="Top"
HorizontalAlignment="Center"
/>
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center">
<Label Content="{Binding Current.Temperature}"
FontSize="21" FontWeight="Bold"
Margin="0,0,5,0"
VerticalAlignment="Center" />
<iconPacks:PackIconWeatherIcons Kind="Celsius" Width="16" Height="16"
Margin="0"
VerticalAlignment="Center"/>
</StackPanel>

<Label Grid.Row="1"
Content="{DynamicResource MainWindow.ApparentTemperature}"
FontSize="10"
VerticalAlignment="Top"
HorizontalAlignment="Center"
/>
<StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Center">
<Label Content="{Binding Current.ApparentTemperature}"
FontSize="21"
VerticalAlignment="Center"
Margin="0,0,5,0"/>
<iconPacks:PackIconWeatherIcons Kind="Celsius"
Margin="0"
VerticalAlignment="Center"/>
</StackPanel>

<Label Grid.Row="2"
Content="{DynamicResource MainWindow.WindSpeed}"
FontSize="10"
VerticalAlignment="Top"
HorizontalAlignment="Center"
/>
<StackPanel Grid.Row="2"
Orientation="Horizontal"
HorizontalAlignment="Center">

<helpers:ExtendedBinding Source="{Binding Current.WindspeedIcon, Mode=TwoWay}"
Target="{Binding ElementName=WindspeedIcon,Path=Kind,Mode=TwoWay}"/>
<iconPacks:PackIconWeatherIcons x:Name="WindspeedIcon"
Width="32" Height="32"
VerticalAlignment="Center"
HorizontalAlignment="Center"
/>
<Label Content="{Binding Current.WindSpeedText}" Margin="5,0,0,0"
FontSize="20"
VerticalAlignment="Center"/>
</StackPanel>

</Grid>

<Label Grid.Row="3" Grid.Column="0"
Content="{DynamicResource MainWindow.AtmosphericPressure}"
FontSize="10"
Margin="0"
VerticalAlignment="Top"
HorizontalAlignment="Left"
/>
<Label Grid.Row="3" Grid.Column="0"
FontSize="16"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Content="{Binding Current.AtmosphericPressureText}" />

<Label Grid.Row="3" Grid.Column="1"
Content="{DynamicResource MainWindow.UvIndex}"
FontSize="10"
VerticalAlignment="Top"
HorizontalAlignment="Left"
/>
<Label Grid.Row="3" Grid.Column="1" Content="{Binding Current.UvIndex}"
FontSize="16"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Background="{Binding Current.UvIndexBackgroundColor}"/>
</StackPanel>

<Label Grid.Row="3" Grid.Column="2"
Content="{DynamicResource MainWindow.Humidity}"
FontSize="10"
VerticalAlignment="Top"
HorizontalAlignment="Left"
/>
<Label Grid.Row="3" Grid.Column="2"
FontSize="16"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Content="{Binding Current.HumidityText}" />
</Grid>
</TabItem>
<TabItem Header="{DynamicResource MainWindow.Forecast}"
ToolTip="{DynamicResource MainWindow.Forecast.Tooltip}" >
Expand Down
36 changes: 2 additions & 34 deletions pg.DarkSky.Wpf/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
using pg.DarkSky.Wpf.Helpers;
using pg.DarkSky.Wpf.Models;
using pg.DarkSky.Wpf.Properties;
using pg.DarkSky.Wpf.ViewModels;
using System;
using System.Globalization;
using System.Linq;
using System.Threading;
using System.Windows;

namespace pg.DarkSky.Wpf
Expand All @@ -21,40 +23,6 @@ public MainWindow()
private void CboSelectableLanguage_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{

var code = ((Language)CboSelectableLanguage.SelectedItem).Code;
//elmentjük későbbi használatra
Settings.Default.Culture = code.CodeToLanguageName();
Settings.Default.Save();
Settings.Default.Reload();


CultureInfo.DefaultThreadCurrentCulture =
CultureInfo.CreateSpecificCulture(Settings.Default.Culture);
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.DefaultThreadCurrentCulture;

//ha korábban már betöltöttünk ilyet, akkor törölni kell
var oldDicts = this.Resources
.MergedDictionaries
.Where(x => x.Source
.ToString()
.Contains("StringResources.")
).ToList();

for (int i = 0; i < oldDicts.Count(); i++)
{
this.Resources
.MergedDictionaries
.Remove(oldDicts[i]);
}

//beállítjuk az újat
var culture = CultureInfo.DefaultThreadCurrentCulture;
var dict = new ResourceDictionary
{
Source = new Uri($"pack://application:,,,/Resources/StringResources.{culture.Name}.xaml")
};
this.Resources.MergedDictionaries.Add(dict);

}
}
}
11 changes: 11 additions & 0 deletions pg.DarkSky.Wpf/Resources/StringResources.en-US.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,16 @@
<system:String x:Key="MainWindow.ForecastApiCalls">Number of used API calls</system:String>
<system:String x:Key="MainWindow.SelectableLanguage">Select language</system:String>
<system:String x:Key="MainWindow.SelectableCity">Select location</system:String>
<system:String x:Key="MainWindow.WindSpeed">Wind speed:</system:String>
<system:String x:Key="MainWindow.Temperature">Temperature:</system:String>
<system:String x:Key="MainWindow.ApparentTemperature">Feels like:</system:String>
<system:String x:Key="MainWindow.Humidity">Humidity:</system:String>
<system:String x:Key="MainWindow.UvIndex">UV Index:</system:String>
<system:String x:Key="MainWindow.AtmosphericPressure">Pressure:</system:String>






</ResourceDictionary>
8 changes: 8 additions & 0 deletions pg.DarkSky.Wpf/Resources/StringResources.hu-HU.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,13 @@
<system:String x:Key="MainWindow.ForecastApiCalls">Elhasznált API hívások száma</system:String>
<system:String x:Key="MainWindow.SelectableLanguage">Nyelv választása</system:String>
<system:String x:Key="MainWindow.SelectableCity">Helyszín választása</system:String>
<system:String x:Key="MainWindow.WindSpeed">Szélsebesség:</system:String>
<system:String x:Key="MainWindow.Temperature">Hőmérséklet:</system:String>
<system:String x:Key="MainWindow.ApparentTemperature">Hőérzet:</system:String>
<system:String x:Key="MainWindow.Humidity">Páratartalom:</system:String>
<system:String x:Key="MainWindow.UvIndex">UV Index:</system:String>
<system:String x:Key="MainWindow.AtmosphericPressure">Légköri nyomás:</system:String>



</ResourceDictionary>
33 changes: 29 additions & 4 deletions pg.DarkSky.Wpf/ViewModels/ForecastViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,17 @@ public class ForecastViewModel : ViewModelBase
{

private DateTimeOffset _time;
public DateTimeOffset Time { get { return _time; } set { SetProperty(value, ref _time); } }
public DateTimeOffset Time
{
get { return _time; }
set
{
if (SetProperty(value, ref _time))
{
OnPropertyChanged(nameof(TimeText));
}
}
}

private string _summary;
public string Summary { get { return _summary; } set { SetProperty(value, ref _summary); } }
Expand Down Expand Up @@ -113,7 +123,7 @@ public string WindSpeedText
{
get
{
return $"{WindSpeed} m/s";
return $"({WindSpeed} m/s)";
}
}

Expand Down Expand Up @@ -165,8 +175,23 @@ public SolidColorBrush UvIndexBackgroundColor
}
}

public string TimeText
{
get
{
var date = Time.ToLocalTime().DateTime;
return $"{date.ToLongDateString()} {date.ToShortTimeString()}";
}
}



/// <summary>
/// Ez azért kell, hogy ne oldjam fel az OnPorpertyChanged láthatóságát publicra,
/// mert csak ebben azesetben kell hívnom kívülről. Ha változik a nyelv, akkor
/// újra kell tölteni a dátumot, és ezt így lehet kívülről elérni
/// </summary>
internal void RaiseLanguageChanged()
{
OnPropertyChanged(nameof(TimeText));
}
}
}
Loading

0 comments on commit d48c59c

Please sign in to comment.