diff --git a/YJMPD-UWP/App.xaml.cs b/YJMPD-UWP/App.xaml.cs index 5c55a17..2c3bef0 100644 --- a/YJMPD-UWP/App.xaml.cs +++ b/YJMPD-UWP/App.xaml.cs @@ -3,7 +3,6 @@ using System; using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; -using Windows.Globalization; using Windows.Graphics.Display; using Windows.UI.Core; using Windows.UI.ViewManagement; @@ -16,37 +15,46 @@ namespace YJMPD_UWP sealed partial class App : Application { - public static Frame rootFrame; - - // ======================= // SINGLETONS // ======================= - private static GeoTracker geo = new GeoTracker(); + private static GeoHandler geohandler = new GeoHandler(); - public static GeoTracker Geo + public static GeoHandler Geo { get { - return geo; + return geohandler; } } - private static CompassTracker cm = new CompassTracker(); + private static CompassHandler compasshandler = new CompassHandler(); - public static CompassTracker CompassTracker + public static CompassHandler Compass { get { - return cm; + return compasshandler; } } - public static CoreDispatcher Dispatcher + private static NetworkHandler networkhandler = new NetworkHandler(); + + public static NetworkHandler Network { get { - return Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; + return networkhandler; + } + } + + private static GameHandler gamehandler = new GameHandler(); + + public static GameHandler Game + { + get + { + return gamehandler; } } @@ -66,6 +74,23 @@ namespace YJMPD_UWP } } + public static CoreDispatcher Dispatcher + { + get + { + return Windows.UI.Core.CoreWindow.GetForCurrentThread().Dispatcher; + } + } + + public static Frame MainFrame + { + get + { + Frame f = Window.Current.Content as Frame; + return f; + } + } + public static MainPage MainPage { get @@ -76,6 +101,29 @@ namespace YJMPD_UWP } } + public static Frame ContentFrame + { + get + { + Frame f = Window.Current.Content as Frame; + MainPage mp = f.Content as MainPage; + Frame cf = mp.ContentFrame; + return cf; + } + } + + public static bool Navigate(Type type) + { + return ContentFrame.Navigate(type); + } + + public static bool Navigate(Type type, object param) + { + return ContentFrame.Navigate(type, param); + } + + + // =============================== @@ -109,7 +157,7 @@ namespace YJMPD_UWP } #endif - rootFrame = Window.Current.Content as Frame; + Frame rootFrame = Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active @@ -120,11 +168,6 @@ namespace YJMPD_UWP rootFrame.NavigationFailed += OnNavigationFailed; - if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) - { - //TODO: Load state from previously suspended application - } - // Place the frame in the current Window Window.Current.Content = rootFrame; } diff --git a/YJMPD-UWP/Helpers/Converter/BoolToVisibilityConverter.cs b/YJMPD-UWP/Helpers/Converter/BoolToVisibilityConverter.cs new file mode 100644 index 0000000..5e3595a --- /dev/null +++ b/YJMPD-UWP/Helpers/Converter/BoolToVisibilityConverter.cs @@ -0,0 +1,29 @@ +using System; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Data; + +namespace YJMPD_UWP.Helpers.Converter +{ + public class BoolToVisibilityConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + bool b = (bool)value; + + if (b) + return Visibility.Visible; + else + return Visibility.Collapsed; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + Visibility v = (Visibility)value; + + if (v == Visibility.Visible) + return true; + else + return false; + } + } +} diff --git a/YJMPD-UWP/Helpers/EventArgs/GameStatusUpdatedEventArgs.cs b/YJMPD-UWP/Helpers/EventArgs/GameStatusUpdatedEventArgs.cs new file mode 100644 index 0000000..0a690c6 --- /dev/null +++ b/YJMPD-UWP/Helpers/EventArgs/GameStatusUpdatedEventArgs.cs @@ -0,0 +1,14 @@ +using YJMPD_UWP.Model; + +namespace YJMPD_UWP.Helpers.EventArgs +{ + public class GameStatusUpdatedEventArgs : System.EventArgs + { + public GameHandler.GameStatus GameStatus { get; private set; } + + public GameStatusUpdatedEventArgs(GameHandler.GameStatus status) + { + this.GameStatus = status; + } + } +} diff --git a/YJMPD-UWP/Helpers/EventArgs/HeadingUpdatedEventArgs.cs b/YJMPD-UWP/Helpers/EventArgs/HeadingUpdatedEventArgs.cs new file mode 100644 index 0000000..f2c892c --- /dev/null +++ b/YJMPD-UWP/Helpers/EventArgs/HeadingUpdatedEventArgs.cs @@ -0,0 +1,14 @@ +using Windows.Devices.Sensors; + +namespace YJMPD_UWP.Helpers.EventArgs +{ + public class HeadingUpdatedEventArgs : System.EventArgs + { + public CompassReading Heading; + + public HeadingUpdatedEventArgs(CompassReading heading) + { + Heading = heading; + } + } +} diff --git a/YJMPD-UWP/Helpers/EventArgs/NetworkStatusUpdatedEventArgs.cs b/YJMPD-UWP/Helpers/EventArgs/NetworkStatusUpdatedEventArgs.cs new file mode 100644 index 0000000..313555b --- /dev/null +++ b/YJMPD-UWP/Helpers/EventArgs/NetworkStatusUpdatedEventArgs.cs @@ -0,0 +1,14 @@ +using YJMPD_UWP.Model; + +namespace YJMPD_UWP.Helpers.EventArgs +{ + public class NetworkStatusUpdatedEventArgs : System.EventArgs + { + public NetworkHandler.NetworkStatus NetworkStatus { get; private set; } + + public NetworkStatusUpdatedEventArgs(NetworkHandler.NetworkStatus status) + { + this.NetworkStatus = status; + } + } +} diff --git a/YJMPD-UWP/Helpers/EventArgs/PositionStatusUpdatedEventArgs.cs b/YJMPD-UWP/Helpers/EventArgs/PositionStatusUpdatedEventArgs.cs new file mode 100644 index 0000000..1583ee2 --- /dev/null +++ b/YJMPD-UWP/Helpers/EventArgs/PositionStatusUpdatedEventArgs.cs @@ -0,0 +1,14 @@ +using Windows.Devices.Geolocation; + +namespace YJMPD_UWP.Helpers.EventArgs +{ + public class PositionStatusUpdatedEventArgs : System.EventArgs + { + public PositionStatus Status { get; private set; } + + public PositionStatusUpdatedEventArgs(PositionStatus status) + { + Status = status; + } + } +} diff --git a/YJMPD-UWP/Helpers/EventArgs/PositionUpdatedEventArgs.cs b/YJMPD-UWP/Helpers/EventArgs/PositionUpdatedEventArgs.cs new file mode 100644 index 0000000..5e4dbff --- /dev/null +++ b/YJMPD-UWP/Helpers/EventArgs/PositionUpdatedEventArgs.cs @@ -0,0 +1,16 @@ +using Windows.Devices.Geolocation; + +namespace YJMPD_UWP.Helpers.EventArgs +{ + public class PositionUpdatedEventArgs : System.EventArgs + { + public Geoposition Old { get; private set; } + public Geoposition New { get; private set; } + + public PositionUpdatedEventArgs(Geoposition old, Geoposition notold) + { + Old = old; + New = notold; + } + } +} diff --git a/YJMPD-UWP/Helpers/Settings.cs b/YJMPD-UWP/Helpers/Settings.cs index 6f8a321..2a0d62f 100644 --- a/YJMPD-UWP/Helpers/Settings.cs +++ b/YJMPD-UWP/Helpers/Settings.cs @@ -1,45 +1,15 @@ -using System; -using System.Threading.Tasks; -using Windows.Globalization; +using Windows.Foundation.Collections; using Windows.Storage; namespace YJMPD_UWP.Helpers { static class Settings { - private static ApplicationDataContainer LOCAL_SETTINGS = ApplicationData.Current.LocalSettings; - - public delegate void OnLanguageUpdateHandler(EventArgs e); - public static event OnLanguageUpdateHandler OnLanguageUpdate; - - public static bool Tracking - { - get - { - return (bool)LOCAL_SETTINGS.Values["tracking"]; - } - set - { - LOCAL_SETTINGS.Values["tracking"] = value; - } - } + public static IPropertySet Values = ApplicationData.Current.LocalSettings.Values; static Settings() { - LOCAL_SETTINGS.Values["tracking"] = true; - - if (CurrentLanguage == "") - ApplicationLanguages.PrimaryLanguageOverride = "en"; + //Define default settings here } - - public static async void ChangeLanguage(string lang) - { - ApplicationLanguages.PrimaryLanguageOverride = lang; - await Task.Delay(TimeSpan.FromMilliseconds(100)); - //App.rootFrame.Navigate(typeof(MainPage)); - OnLanguageUpdate(new EventArgs()); - } - - public static string CurrentLanguage { get { return ApplicationLanguages.PrimaryLanguageOverride; } } } } diff --git a/YJMPD-UWP/Helpers/Util.cs b/YJMPD-UWP/Helpers/Util.cs index 2cdebb2..f7d4260 100644 --- a/YJMPD-UWP/Helpers/Util.cs +++ b/YJMPD-UWP/Helpers/Util.cs @@ -2,7 +2,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Windows.ApplicationModel.Resources; using Windows.Data.Xml.Dom; using Windows.Devices.Geolocation; using Windows.Services.Maps; @@ -17,14 +16,6 @@ namespace YJMPD_UWP.Helpers { public enum DialogType { YESNO, OKCANCEL } - public static ResourceLoader Loader - { - get - { - return new Windows.ApplicationModel.Resources.ResourceLoader(); - } - } - public static double Now { get { return (DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; } } public static string MillisecondsToTime(double millis) @@ -169,13 +160,13 @@ namespace YJMPD_UWP.Helpers MessageDialog dlg = new MessageDialog(content, title); if (type == DialogType.YESNO) { - dlg.Commands.Add(new UICommand(Util.Loader.GetString("Yes")) { Id = 0 }); - dlg.Commands.Add(new UICommand(Util.Loader.GetString("No")) { Id = 1 }); + dlg.Commands.Add(new UICommand("Yes") { Id = 0 }); + dlg.Commands.Add(new UICommand("No") { Id = 1 }); } else if (type == DialogType.OKCANCEL) { - dlg.Commands.Add(new UICommand(Util.Loader.GetString("Ok")) { Id = 0 }); - dlg.Commands.Add(new UICommand(Util.Loader.GetString("Cancel")) { Id = 1 }); + dlg.Commands.Add(new UICommand("Ok") { Id = 0 }); + dlg.Commands.Add(new UICommand("Cancel") { Id = 1 }); } dlg.DefaultCommandIndex = 0; @@ -200,53 +191,53 @@ namespace YJMPD_UWP.Helpers switch (maneuver.Kind) { default: - response = Util.Loader.GetString("RouteSeeMap"); + response = "RouteSeeMap"; meters = false; break; case MapRouteManeuverKind.End: - response = Util.Loader.GetString("RouteEnd"); + response = "RouteEnd"; break; case MapRouteManeuverKind.GoStraight: - response = Util.Loader.GetString("RouteGoStraight"); + response = "RouteGoStraight"; onstreet = true; break; case MapRouteManeuverKind.None: - response = Util.Loader.GetString("RouteNone"); + response = "RouteNone"; meters = false; break; case MapRouteManeuverKind.Start: - response = Util.Loader.GetString("RouteStart"); + response = "RouteStart"; meters = false; break; case MapRouteManeuverKind.TurnHardLeft: case MapRouteManeuverKind.TurnLeft: - response = Util.Loader.GetString("RouteLeft"); + response = "RouteLeft"; onstreet = true; break; case MapRouteManeuverKind.TurnHardRight: case MapRouteManeuverKind.TurnRight: - response = Util.Loader.GetString("RouteRight"); + response = "RouteRight"; onstreet = true; break; case MapRouteManeuverKind.TrafficCircleLeft: - response = Util.Loader.GetString("RouteTrafficCircleLeft"); + response = "RouteTrafficCircleLeft"; onstreet = true; break; case MapRouteManeuverKind.TrafficCircleRight: - response = Util.Loader.GetString("RouteTrafficCircleRight"); + response = "RouteTrafficCircleRight"; onstreet = true; break; case MapRouteManeuverKind.TurnKeepLeft: case MapRouteManeuverKind.TurnLightLeft: - response = Util.Loader.GetString("RouteKeepLeft"); + response = "RouteKeepLeft"; break; case MapRouteManeuverKind.TurnKeepRight: case MapRouteManeuverKind.TurnLightRight: - response = Util.Loader.GetString("RouteKeepRight"); + response = "RouteKeepRight"; break; case MapRouteManeuverKind.UTurnLeft: case MapRouteManeuverKind.UTurnRight: - response = Util.Loader.GetString("RouteUTurn"); + response = "RouteUTurn"; break; } @@ -258,10 +249,10 @@ namespace YJMPD_UWP.Helpers if (onstreet) - response += " " + Util.Loader.GetString("RouteOn") + " " + maneuver.StreetName; + response += " " + "RouteOn" + " " + maneuver.StreetName; if (meters) - response = Util.Loader.GetString("RouteIn") + " " + distance + "m" + " " + response.ToLower(); + response = "RouteIn" + " " + distance + "m" + " " + response.ToLower(); return response; } diff --git a/YJMPD-UWP/MainPage.xaml b/YJMPD-UWP/MainPage.xaml index cd52771..27fc007 100644 --- a/YJMPD-UWP/MainPage.xaml +++ b/YJMPD-UWP/MainPage.xaml @@ -3,11 +3,15 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:YJMPD_UWP" + xmlns:convert="using:YJMPD_UWP.Helpers.Converter" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> + + + - - - @@ -54,7 +58,7 @@ - - - - - + + + diff --git a/YJMPD-UWP/Views/SettingsView.xaml.cs b/YJMPD-UWP/Views/SettingsView.xaml.cs index c0ab959..b851136 100644 --- a/YJMPD-UWP/Views/SettingsView.xaml.cs +++ b/YJMPD-UWP/Views/SettingsView.xaml.cs @@ -1,9 +1,5 @@ -using YJMPD_UWP.Helpers; -using YJMPD_UWP.ViewModels; -using System.Diagnostics; -using Windows.UI.Xaml; +using YJMPD_UWP.ViewModels; using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Navigation; namespace YJMPD_UWP.Views { @@ -13,70 +9,9 @@ namespace YJMPD_UWP.Views public SettingsView() { - this.InitializeComponent(); settingsvm = new SettingsVM(); this.DataContext = settingsvm; - } - - protected override void OnNavigatedTo(NavigationEventArgs e) - { - switch (Settings.CurrentLanguage) - { - default: - Debug.WriteLine("Unsupported language: " + Settings.CurrentLanguage); - Language.SelectedIndex = 0; - break; - case "en": - Language.SelectedIndex = 0; - break; - case "nl": - Language.SelectedIndex = 1; - break; - case "de": - Language.SelectedIndex = 2; - break; - case "ja": - Language.SelectedIndex = 3; - break; - } - } - - private void Language_SelectionChanged(object sender, SelectionChangedEventArgs e) - { - switch (Language.SelectedIndex) - { - default: - Language.SelectedIndex = 0; - break; - case 0: - if (Settings.CurrentLanguage != "en") - Settings.ChangeLanguage("en"); - break; - case 1: - if (Settings.CurrentLanguage != "nl") - Settings.ChangeLanguage("nl"); - break; - case 2: - if (Settings.CurrentLanguage != "de") - Settings.ChangeLanguage("de"); - break; - case 3: - if (Settings.CurrentLanguage != "ja") - Settings.ChangeLanguage("ja"); - break; - } - } - - private async void ResetButton_Click(object sender, RoutedEventArgs e) - { - bool confirm = await Util.ShowConfirmDialog(Util.Loader.GetString("Reset"), Util.Loader.GetString("ResetConfirmation"), Util.DialogType.YESNO); - - if (confirm) - { - ResetProgress.IsActive = true; - Language.SelectedIndex = 0; - ResetProgress.IsActive = false; - } + this.InitializeComponent(); } } } diff --git a/YJMPD-UWP/Views/StatisticsView.xaml b/YJMPD-UWP/Views/StatisticsView.xaml new file mode 100644 index 0000000..ceaa852 --- /dev/null +++ b/YJMPD-UWP/Views/StatisticsView.xaml @@ -0,0 +1,13 @@ + + + + + + diff --git a/YJMPD-UWP/Views/StatisticsView.xaml.cs b/YJMPD-UWP/Views/StatisticsView.xaml.cs new file mode 100644 index 0000000..2e90f27 --- /dev/null +++ b/YJMPD-UWP/Views/StatisticsView.xaml.cs @@ -0,0 +1,17 @@ +using Windows.UI.Xaml.Controls; +using YJMPD_UWP.ViewModels; + +namespace YJMPD_UWP.Views +{ + public sealed partial class StatisticsView : Page + { + StatisticsVM statisticsvm; + + public StatisticsView() + { + statisticsvm = new StatisticsVM(); + this.DataContext = statisticsvm; + this.InitializeComponent(); + } + } +} diff --git a/YJMPD-UWP/YJMPD-UWP.csproj b/YJMPD-UWP/YJMPD-UWP.csproj index daa2476..d1ec44f 100644 --- a/YJMPD-UWP/YJMPD-UWP.csproj +++ b/YJMPD-UWP/YJMPD-UWP.csproj @@ -22,7 +22,7 @@ true bin\x86\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP - ;2008 + ;2008;CS4014 full x86 false @@ -95,25 +95,45 @@ App.xaml + + + + + + MainPage.xaml - - + + + + - + + + + - - HelpView.xaml + + AboutView.xaml + + + AccountView.xaml + + + MatchView.xaml SettingsView.xaml + + StatisticsView.xaml + @@ -152,18 +172,29 @@ MSBuild:Compile Designer - + MSBuild:Compile Designer + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + MSBuild:Compile Designer + + Designer + MSBuild:Compile + - 14.0