Browse Source

First overhaul to new application

Kenneth van Ewijk 10 năm trước cách đây
mục cha
commit
a5c991ee41
38 tập tin đã thay đổi với 563 bổ sung732 xóa
  1. 61 18
      YJMPD-UWP/App.xaml.cs
  2. 29 0
      YJMPD-UWP/Helpers/Converter/BoolToVisibilityConverter.cs
  3. 14 0
      YJMPD-UWP/Helpers/EventArgs/GameStatusUpdatedEventArgs.cs
  4. 14 0
      YJMPD-UWP/Helpers/EventArgs/HeadingUpdatedEventArgs.cs
  5. 14 0
      YJMPD-UWP/Helpers/EventArgs/NetworkStatusUpdatedEventArgs.cs
  6. 14 0
      YJMPD-UWP/Helpers/EventArgs/PositionStatusUpdatedEventArgs.cs
  7. 16 0
      YJMPD-UWP/Helpers/EventArgs/PositionUpdatedEventArgs.cs
  8. 3 33
      YJMPD-UWP/Helpers/Settings.cs
  9. 18 27
      YJMPD-UWP/Helpers/Util.cs
  10. 45 43
      YJMPD-UWP/MainPage.xaml
  11. 57 37
      YJMPD-UWP/MainPage.xaml.cs
  12. 3 12
      YJMPD-UWP/Model/CompassHandler.cs
  13. 19 0
      YJMPD-UWP/Model/GameHandler.cs
  14. 8 29
      YJMPD-UWP/Model/GeoHandler.cs
  15. 24 0
      YJMPD-UWP/Model/NetworkHandler.cs
  16. 9 29
      YJMPD-UWP/Package.appxmanifest
  17. 0 1
      YJMPD-UWP/Properties/AssemblyInfo.cs
  18. 10 0
      YJMPD-UWP/ViewModels/AboutVM.cs
  19. 10 0
      YJMPD-UWP/ViewModels/AccountVM.cs
  20. 0 72
      YJMPD-UWP/ViewModels/HelpVM.cs
  21. 8 147
      YJMPD-UWP/ViewModels/MainPageVM.cs
  22. 10 0
      YJMPD-UWP/ViewModels/MatchVM.cs
  23. 2 37
      YJMPD-UWP/ViewModels/SettingsVM.cs
  24. 10 0
      YJMPD-UWP/ViewModels/StatisticsVM.cs
  25. 1 17
      YJMPD-UWP/ViewModels/TemplateVM.cs
  26. 13 0
      YJMPD-UWP/Views/AboutView.xaml
  27. 17 0
      YJMPD-UWP/Views/AboutView.xaml.cs
  28. 13 0
      YJMPD-UWP/Views/AccountView.xaml
  29. 17 0
      YJMPD-UWP/Views/AccountView.xaml.cs
  30. 0 112
      YJMPD-UWP/Views/HelpView.xaml
  31. 0 17
      YJMPD-UWP/Views/HelpView.xaml.cs
  32. 13 0
      YJMPD-UWP/Views/MatchView.xaml
  33. 17 0
      YJMPD-UWP/Views/MatchView.xaml.cs
  34. 3 26
      YJMPD-UWP/Views/SettingsView.xaml
  35. 2 67
      YJMPD-UWP/Views/SettingsView.xaml.cs
  36. 13 0
      YJMPD-UWP/Views/StatisticsView.xaml
  37. 17 0
      YJMPD-UWP/Views/StatisticsView.xaml.cs
  38. 39 8
      YJMPD-UWP/YJMPD-UWP.csproj

+ 61 - 18
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;
             }

+ 29 - 0
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;
+        }
+    }
+}

+ 14 - 0
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;
+        }
+    }
+}

+ 14 - 0
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;
+        }
+    }
+}

+ 14 - 0
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;
+        }
+    }
+}

+ 14 - 0
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;
+        }
+    }
+}

+ 16 - 0
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;
+        }
+    }
+}

+ 3 - 33
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; } }
     }
 }

+ 18 - 27
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;
         }

+ 45 - 43
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">
 
     <Page.Resources>
+
+        <convert:BoolToVisibilityConverter x:Key="BoolToVisConverter" />
+
         <Style x:Key="NavStackPanel" TargetType="StackPanel">
             <Setter Property="Orientation" Value="Horizontal" />
             <Setter Property="VerticalAlignment" Value="Center" />
@@ -26,19 +30,19 @@
         </Style>
 
 
-        <Style x:Key="GPSInfoPanel" TargetType="StackPanel">
+        <Style x:Key="GameInfoPanel" TargetType="StackPanel">
             <Setter Property="Orientation" Value="Horizontal" />
             <Setter Property="VerticalAlignment" Value="Center" />
             <Setter Property="Margin" Value="10,0,10,0" />
         </Style>
 
-        <Style x:Key="GPSInfoIcon" TargetType="TextBlock">
+        <Style x:Key="GameInfoIcon" TargetType="TextBlock">
             <Setter Property="FontFamily" Value="Segoe MDL2 Assets" />
             <Setter Property="FontSize" Value="20" />
             <Setter Property="Margin" Value="5,5,0,0" />
         </Style>
 
-        <Style x:Key="GPSInfoText" TargetType="TextBlock">
+        <Style x:Key="GameInfoText" TargetType="TextBlock">
             <Setter Property="FontSize" Value="20" />
             <Setter Property="Margin" Value="15,0,0,0" />
         </Style>
@@ -54,7 +58,7 @@
             <Button RelativePanel.AlignLeftWithPanel="True" Name="NavButton" Click="NavButton_Click" VerticalAlignment="Stretch" FontFamily="Segoe MDL2 Assets" Content="&#xE700;" FontSize="28" />
 
             <Viewbox RelativePanel.RightOf="NavButton" RelativePanel.AlignBottomWith="NavButton" StretchDirection="DownOnly" Stretch="UniformToFill" Margin="10,0,10,0">
-                <TextBlock FontSize="28" Name="PageTitle" Text="{Binding Map}" />
+                <TextBlock FontSize="28" Name="PageTitle" Text="YJMPD-UWP" />
             </Viewbox>
         </RelativePanel>
 
@@ -66,67 +70,65 @@
 
                     <Viewbox Stretch="Uniform" StretchDirection="DownOnly" HorizontalAlignment="Stretch" RelativePanel.AlignTopWithPanel="True">
                         <ListBox SelectionMode="Single" Name="NavList" SelectionChanged="NavList_SelectionChanged" Tapped="NavList_Tapped">
-                            <ListBoxItem Name="NavListMap" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
+                            
+                            <ListBoxItem Name="NavListHome" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
                                 <StackPanel Style="{StaticResource NavStackPanel}">
-                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE909;"/>
-                                    <TextBlock Style="{StaticResource NavText}" Text="{Binding Map}"/>
+                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE80F;"/>
+                                    <TextBlock Style="{StaticResource NavText}" Text="Home"/>
                                 </StackPanel>
                             </ListBoxItem>
-                            <ListBoxItem Name="NavListRoute" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
+                            <ListBoxItem Name="NavListAccount" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
                                 <StackPanel Style="{StaticResource NavStackPanel}">
-                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE7AD;"/>
-                                    <TextBlock Style="{StaticResource NavText}" Text="{Binding Route}"/>
+                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE8B8;"/>
+                                    <TextBlock Style="{StaticResource NavText}" Text="Account"/>
                                 </StackPanel>
                             </ListBoxItem>
-                            <ListBoxItem Name="NavListLandmarks" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
+                            <ListBoxItem Name="NavListStatistics" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
                                 <StackPanel Style="{StaticResource NavStackPanel}">
-                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE913;"/>
-                                    <TextBlock Style="{StaticResource NavText}" Text="{Binding Landmarks}" />
+                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE8F1;"/>
+                                    <TextBlock Style="{StaticResource NavText}" Text="Statistics"/>
                                 </StackPanel>
                             </ListBoxItem>
-                            <ListBoxItem Name="NavListHelp" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
+                            <ListBoxItem Name="NavListAbout" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
                                 <StackPanel Style="{StaticResource NavStackPanel}">
                                     <TextBlock Style="{StaticResource NavIcon}" Text="&#xE897;"/>
-                                    <TextBlock Style="{StaticResource NavText}" Text="{Binding Help}"/>
-                                </StackPanel>
-                            </ListBoxItem>
-                            <ListBoxItem Name="NavListSearch" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
-                                <StackPanel Style="{StaticResource NavStackPanel}">
-                                    <TextBlock Style="{StaticResource NavIcon}" Text="&#xE71E;"/>
-                                    <TextBlock Style="{StaticResource NavText}" Text="{Binding Search}"/>
+                                    <TextBlock Style="{StaticResource NavText}" Text="About"/>
                                 </StackPanel>
                             </ListBoxItem>
                             <ListBoxItem Name="NavListSettings" ManipulationMode="TranslateX" ManipulationCompleted="Pane_ManipulationCompleted">
                                 <StackPanel Style="{StaticResource NavStackPanel}">
                                     <TextBlock Style="{StaticResource NavIcon}" Text="&#xE713;"/>
-                                    <TextBlock Style="{StaticResource NavText}" Text="{Binding Settings}"/>
+                                    <TextBlock Style="{StaticResource NavText}" Text="Settings"/>
                                 </StackPanel>
                             </ListBoxItem>
+                            
                         </ListBox>
                     </Viewbox>
                     
-                    <StackPanel RelativePanel.AlignBottomWithPanel="True" RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True" Background="Transparent" Tapped="GPSRefresh_Tapped">
-                        <StackPanel Style="{StaticResource GPSInfoPanel}">
-                            <TextBlock Margin="5,0,0,0" FontSize="16" FontWeight="Bold" Text="{Binding GPSInfo}"/>
-                        </StackPanel>
-
-                        <StackPanel Style="{StaticResource GPSInfoPanel}" Tapped="GPSRefresh_Tapped">
-                            <TextBlock Style="{StaticResource GPSInfoIcon}" Text="&#xE81D;"/>
-                            <TextBlock Style="{StaticResource GPSInfoText}" Text="{Binding Status}"/>
-                        </StackPanel>
-
-                        <StackPanel Style="{StaticResource GPSInfoPanel}">
-                            <TextBlock Style="{StaticResource GPSInfoIcon}" Text="&#xE774;"/>
-                            <TextBlock Style="{StaticResource GPSInfoText}" Text="{Binding Source}"/>
+                    <StackPanel RelativePanel.AlignBottomWithPanel="True" RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True" Background="Transparent">
+                        
+                        <StackPanel Visibility="{Binding GameVisible, Converter={StaticResource BoolToVisConverter}}">
+                            <StackPanel Style="{StaticResource GameInfoPanel}">
+                                <TextBlock Margin="5,0,0,0" FontSize="16" FontWeight="Bold" Text="Currently game"/>
+                            </StackPanel>
+
+                            <StackPanel Style="{StaticResource GameInfoPanel}">
+                                <TextBlock Style="{StaticResource GameInfoIcon}" Text="&#xE8A1;"/>
+                                <TextBlock Style="{StaticResource GameInfoText}" Text="{Binding GameState}"/>
+                            </StackPanel>
+
+                            <StackPanel Style="{StaticResource GameInfoPanel}">
+                                <TextBlock Style="{StaticResource GameInfoIcon}" Text="&#xE716;"/>
+                                <TextBlock Style="{StaticResource GameInfoText}" Text="{Binding People}"/>
+                            </StackPanel>
+
+                            <StackPanel Style="{StaticResource GameInfoPanel}">
+                                <Button Content="Back to Game" Background="DarkGreen" Foreground="White" Tapped="BackToGame_Tapped" HorizontalAlignment="Stretch"/>
+                            </StackPanel>
                         </StackPanel>
-
-                        <StackPanel Style="{StaticResource GPSInfoPanel}">
-                            <TextBlock Style="{StaticResource GPSInfoIcon}" Text="&#xE707;"/>
-                            <TextBlock Style="{StaticResource GPSInfoText}" Text="{Binding Accuracy}"/>
-                        </StackPanel>
-
+                        
                         <StackPanel Orientation="Horizontal" Margin="15,5">
-                            <TextBlock Text="Nav City Breda @"/>
+                            <TextBlock Text="YJMPD-UWP @"/>
                             <TextBlock Text="{Binding Year}" Margin="5,0,0,0" />
                         </StackPanel>
 
@@ -147,7 +149,7 @@
                     </StackPanel>
 
                     <StackPanel Name="BackMessage" Background="LightGray" Opacity="0.7" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0,0,0,40" Visibility="Collapsed" Height="Auto">
-                        <TextBlock Text="{Binding BackText}" Margin="5" HorizontalAlignment="Center" TextAlignment="Center"/>
+                        <TextBlock Text="Press back again to exit" Margin="5" HorizontalAlignment="Center" TextAlignment="Center"/>
                     </StackPanel>
                 </Grid>
             </SplitView.Content>

+ 57 - 37
YJMPD-UWP/MainPage.xaml.cs

@@ -9,6 +9,7 @@ using Windows.UI.Xaml;
 using Windows.UI.Xaml.Controls;
 using Windows.UI.Xaml.Input;
 using Windows.UI.Xaml.Navigation;
+using System.Diagnostics;
 
 namespace YJMPD_UWP
 {
@@ -17,16 +18,33 @@ namespace YJMPD_UWP
         double bptime;
         double lastbptime;
 
+
+
+        public Frame ContentFrame
+        {
+            get
+            {
+                return Frame;
+            }
+        }
+
+        public string Title { get { return PageTitle.Text; } set { PageTitle.Text = value; } }
+
+        MainPageVM mainpagevm;
+
         public MainPage()
         {
-            this.InitializeComponent();
-            Frame.Navigated += Frame_Navigated;
             SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested;
 
             bptime = Util.Now;
 
-            this.DataContext = new MainPageVM();
-            Frame.Navigate(typeof(MapView));
+            mainpagevm = new MainPageVM();
+            this.DataContext = mainpagevm;
+
+            this.InitializeComponent();
+
+            Frame.Navigated += Frame_Navigated;
+            Frame.Navigate(typeof(MatchView));
         }
 
         private void OnBackRequested(object sender, BackRequestedEventArgs e)
@@ -45,9 +63,12 @@ namespace YJMPD_UWP
 
             if (bptime - lastbptime > 2000)
             {
-                ShowHideBackMessage();
                 e.Handled = true;
+                ShowHideBackMessage();
+                return;
             }
+
+            BackMessage.Visibility = Visibility.Collapsed;
         }
 
         public async Task<String> ShowHideBackMessage()
@@ -58,18 +79,6 @@ namespace YJMPD_UWP
             return "success";
         }
 
-        public void Navigate(Type type)
-        {
-            Frame.Navigate(type);
-        }
-
-        public void Navigate(Type type, object param)
-        {
-            Frame.Navigate(type, param);
-        }
-
-        public string Title { get { return PageTitle.Text; } set { PageTitle.Text = value; } }
-
         public void NavButton_Click(object sender, RoutedEventArgs arg)
         {
             NavView.IsPaneOpen = !NavView.IsPaneOpen;
@@ -84,29 +93,25 @@ namespace YJMPD_UWP
 
             switch (pagename.ToLower())
             {
-                default:
-                    PageTitle.Text = "Nav City Breda";
-                    break;
-                case "helpview":
-                    NavList.SelectedIndex = 3;
-                    break;
-                case "settingsview":
-                    NavList.SelectedIndex = 5;
-                    break;
-                case "mapview":
+                case "matchview":
                     NavList.SelectedIndex = 0;
                     break;
-                case "routeview":
-                case "routedetailview":
+                case "accountview":
                     NavList.SelectedIndex = 1;
                     break;
-                case "landmarkdetailview":
-                case "landmarkview":
+                case "statisticsview":
                     NavList.SelectedIndex = 2;
                     break;
-                case "searchview":
+                case "aboutview":
+                    NavList.SelectedIndex = 3;
+                    break;
+                case "settingsview":
+                    Debug.WriteLine("Yes " + pagename);
                     NavList.SelectedIndex = 4;
                     break;
+                default:
+                    PageTitle.Text = "YJMPD-UWP";
+                    break;
             }
 
             SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
@@ -118,6 +123,21 @@ namespace YJMPD_UWP
         private void NavList_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
             NavView.IsPaneOpen = false;
+
+            if (NavListHome.IsSelected)
+                Frame.Navigate(typeof(MatchView));
+            else
+            if (NavListAccount.IsSelected)
+                Frame.Navigate(typeof(AccountView));
+            else
+            if (NavListStatistics.IsSelected)
+                Frame.Navigate(typeof(StatisticsView));
+            else
+            if (NavListAbout.IsSelected)
+                Frame.Navigate(typeof(AboutView));
+            else
+            if (NavListSettings.IsSelected)
+                Frame.Navigate(typeof(SettingsView));
         }
 
         private void NavList_Tapped(object sender, TappedRoutedEventArgs e)
@@ -125,6 +145,11 @@ namespace YJMPD_UWP
             NavView.IsPaneOpen = false;
         }
 
+        private async void BackToGame_Tapped(object sender, TappedRoutedEventArgs e)
+        {
+            bool b = await Util.ShowConfirmDialog("Not implemented", "", Util.DialogType.OKCANCEL);
+        }
+
         private void Content_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
         {
             if (e.Cumulative.Translation.X > 20)
@@ -140,10 +165,5 @@ namespace YJMPD_UWP
                 NavView.IsPaneOpen = false;
             }
         }
-
-        private void GPSRefresh_Tapped(object sender, TappedRoutedEventArgs e)
-        {
-            App.Geo.ForceRefresh();
-        }
     }
 }

+ 3 - 12
YJMPD-UWP/Model/CompassTracker.cs → YJMPD-UWP/Model/CompassHandler.cs

@@ -1,10 +1,11 @@
 using YJMPD_UWP.Helpers;
 using System;
 using Windows.Devices.Sensors;
+using YJMPD_UWP.Helpers.EventArgs;
 
 namespace YJMPD_UWP.Model
 {
-    public class CompassTracker
+    public class CompassHandler
     {
         public delegate void OnHeadingUpdateHandler(object sender, HeadingUpdatedEventArgs e);
         public event OnHeadingUpdateHandler OnHeadingUpdate;
@@ -20,7 +21,7 @@ namespace YJMPD_UWP.Model
         private CompassReading lastreading;
         private double lastreadingtime;
 
-        public CompassTracker()
+        public CompassHandler()
         {
             comp = Compass.GetDefault();
 
@@ -68,14 +69,4 @@ namespace YJMPD_UWP.Model
             }
         }
     }
-
-    public class HeadingUpdatedEventArgs : EventArgs
-    {
-        public CompassReading Heading;
-
-        public HeadingUpdatedEventArgs(CompassReading heading)
-        {
-            Heading = heading;
-        }
-    }
 }

+ 19 - 0
YJMPD-UWP/Model/GameHandler.cs

@@ -0,0 +1,19 @@
+using YJMPD_UWP.Helpers.EventArgs;
+
+namespace YJMPD_UWP.Model
+{
+    public class GameHandler
+    {
+        public delegate void OnStatusUpdateHandler(object sender, GameStatusUpdatedEventArgs e);
+        public event OnStatusUpdateHandler OnStatusUpdate;
+
+        public enum GameStatus { STOPPED, SEARCHING, WAITING, ENDED, STARTING, STARTED }
+
+        private void UpdateGameStatus(GameStatus status)
+        {
+            if (OnStatusUpdate == null) return;
+
+            OnStatusUpdate(this, new GameStatusUpdatedEventArgs(status));
+        }
+    }
+}

+ 8 - 29
YJMPD-UWP/Model/GeoTracker.cs → YJMPD-UWP/Model/GeoHandler.cs

@@ -5,10 +5,11 @@ using System.Threading.Tasks;
 using Windows.Devices.Geolocation;
 using Windows.Devices.Geolocation.Geofencing;
 using Windows.System;
+using YJMPD_UWP.Helpers.EventArgs;
 
 namespace YJMPD_UWP.Model
 {
-    public class GeoTracker
+    public class GeoHandler
     {
         private Geolocator geo;
 
@@ -30,13 +31,13 @@ namespace YJMPD_UWP.Model
         }
 
         //Events
-        public delegate void PositionUpdateHandler(object sender, PositionUpdatedEventArgs e);
-        public event PositionUpdateHandler OnPositionUpdate;
+        public delegate void OnPositionUpdateHandler(object sender, PositionUpdatedEventArgs e);
+        public event OnPositionUpdateHandler OnPositionUpdate;
 
-        public delegate void StatusUpdateHandler(object sender, StatusUpdatedEventArgs e);
-        public event StatusUpdateHandler OnStatusUpdate;
+        public delegate void OnStatusUpdateHandler(object sender, PositionStatusUpdatedEventArgs e);
+        public event OnStatusUpdateHandler OnStatusUpdate;
 
-        public GeoTracker()
+        public GeoHandler()
         {
             _status = PositionStatus.NotInitialized;
             Connected = false;
@@ -140,7 +141,7 @@ namespace YJMPD_UWP.Model
 
             if (OnStatusUpdate == null) return;
 
-            OnStatusUpdate(this, new StatusUpdatedEventArgs(s));
+            OnStatusUpdate(this, new PositionStatusUpdatedEventArgs(s));
         }
 
         private void UpdatePosition(Geoposition old, Geoposition newp)
@@ -152,26 +153,4 @@ namespace YJMPD_UWP.Model
             OnPositionUpdate(this, new PositionUpdatedEventArgs(old, newp));
         }
     }
-
-    public class PositionUpdatedEventArgs : EventArgs
-    {
-        public Geoposition Old { get; private set; }
-        public Geoposition New { get; private set; }
-
-        public PositionUpdatedEventArgs(Geoposition old, Geoposition notold)
-        {
-            Old = old;
-            New = notold;
-        }
-    }
-
-    public class StatusUpdatedEventArgs : EventArgs
-    {
-        public PositionStatus Status { get; private set; }
-
-        public StatusUpdatedEventArgs(PositionStatus status)
-        {
-            Status = status;
-        }
-    }
 }

+ 24 - 0
YJMPD-UWP/Model/NetworkHandler.cs

@@ -0,0 +1,24 @@
+using YJMPD_UWP.Helpers.EventArgs;
+
+namespace YJMPD_UWP.Model
+{
+    public class NetworkHandler
+    {
+        public delegate void OnStatusUpdatedHandler(object sender, NetworkStatusUpdatedEventArgs e);
+        public OnStatusUpdatedHandler OnStatusUpdated;
+
+        public enum NetworkStatus { DISCONNECTED, CONNECTING, CONNECTED }
+
+        private void UpdateNetworkStatus(NetworkStatus status)
+        {
+            if (OnStatusUpdated == null) return;
+
+            OnStatusUpdated(this, new NetworkStatusUpdatedEventArgs(status));
+        }
+
+        public NetworkHandler()
+        {
+
+        }
+    }
+}

+ 9 - 29
YJMPD-UWP/Package.appxmanifest

@@ -1,49 +1,29 @@
 <?xml version="1.0" encoding="utf-8"?>
-
-<Package
-  xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
-  xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
-  xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
-  IgnorableNamespaces="uap mp">
-
-  <Identity
-    Name="40d891d0-d02f-4aae-ab7d-a48efa630a65"
-    Publisher="CN=kenny"
-    Version="1.0.0.0" />
-
-  <mp:PhoneIdentity PhoneProductId="40d891d0-d02f-4aae-ab7d-a48efa630a65" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
-
+<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" IgnorableNamespaces="uap mp">
+  <Identity Name="40d891d0-d02f-4aae-ab7d-a48efa630a65" Publisher="CN=kenny" Version="1.0.0.0" />
+  <mp:PhoneIdentity PhoneProductId="40d891d0-d02f-4aae-ab7d-a48efa630a65" PhonePublisherId="00000000-0000-0000-0000-000000000000" />
   <Properties>
     <DisplayName>YJMPD-UWP</DisplayName>
     <PublisherDisplayName>kenny</PublisherDisplayName>
     <Logo>Assets\StoreLogo.png</Logo>
   </Properties>
-
   <Dependencies>
     <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />
   </Dependencies>
-
   <Resources>
-    <Resource Language="x-generate"/>
+    <Resource Language="x-generate" />
   </Resources>
-
   <Applications>
-    <Application Id="App"
-      Executable="$targetnametoken$.exe"
-      EntryPoint="YJMPD_UWP.App">
-      <uap:VisualElements
-        DisplayName="YJMPD-UWP"
-        Square150x150Logo="Assets\Square150x150Logo.png"
-        Square44x44Logo="Assets\Square44x44Logo.png"
-        Description="YJMPD-UWP"
-        BackgroundColor="transparent">
-        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"/>
+    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="YJMPD_UWP.App">
+      <uap:VisualElements DisplayName="YJMPD-UWP" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="YJMPD-UWP" BackgroundColor="transparent">
+        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">
+        </uap:DefaultTile>
         <uap:SplashScreen Image="Assets\SplashScreen.png" />
       </uap:VisualElements>
     </Application>
   </Applications>
-
   <Capabilities>
     <Capability Name="internetClient" />
+    <DeviceCapability Name="location" />
   </Capabilities>
 </Package>

+ 0 - 1
YJMPD-UWP/Properties/AssemblyInfo.cs

@@ -1,5 +1,4 @@
 using System.Reflection;
-using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
 // General Information about an assembly is controlled through the following 

+ 10 - 0
YJMPD-UWP/ViewModels/AboutVM.cs

@@ -0,0 +1,10 @@
+namespace YJMPD_UWP.ViewModels
+{
+    public class AboutVM : TemplateVM
+    {
+        public AboutVM() : base("About")
+        {
+
+        }
+    }
+}

+ 10 - 0
YJMPD-UWP/ViewModels/AccountVM.cs

@@ -0,0 +1,10 @@
+namespace YJMPD_UWP.ViewModels
+{
+    public class AccountVM : TemplateVM
+    {
+        public AccountVM() : base("Account")
+        {
+
+        }
+    }
+}

+ 0 - 72
YJMPD-UWP/ViewModels/HelpVM.cs

@@ -1,72 +0,0 @@
-using YJMPD_UWP.Helpers;
-
-namespace YJMPD_UWP.ViewModels
-{
-    public class HelpVM : TemplateVM
-    {
-        public HelpVM() : base(Util.Loader.GetString("Help"))
-        {
-
-        }
-
-        protected override void UpdatePropertiesToNewLanguage()
-        {
-            NotifyPropertyChanged(nameof(HelpItem1Header));
-            NotifyPropertyChanged(nameof(HelpItem1Text));
-
-            NotifyPropertyChanged(nameof(HelpItem2Header));
-            NotifyPropertyChanged(nameof(HelpItem2Text));
-
-            NotifyPropertyChanged(nameof(HelpItem3Header));
-            NotifyPropertyChanged(nameof(HelpItem3Text));
-        }
-
-        public string HelpItem1Header
-        {
-            get
-            {
-                return Util.Loader.GetString("HelpItem1Header");
-            }
-        }
-
-        public string HelpItem1Text
-        {
-            get
-            {
-                return Util.Loader.GetString("HelpItem1Text");
-            }
-        }
-
-        public string HelpItem2Header
-        {
-            get
-            {
-                return Util.Loader.GetString("HelpItem2Header");
-            }
-        }
-
-        public string HelpItem2Text
-        {
-            get
-            {
-                return Util.Loader.GetString("HelpItem2Text");
-            }
-        }
-
-        public string HelpItem3Header
-        {
-            get
-            {
-                return Util.Loader.GetString("HelpItem3Header");
-            }
-        }
-
-        public string HelpItem3Text
-        {
-            get
-            {
-                return Util.Loader.GetString("HelpItem3Text");
-            }
-        }
-    }
-}

+ 8 - 147
YJMPD-UWP/ViewModels/MainPageVM.cs

@@ -1,174 +1,35 @@
 using System;
-using Windows.Devices.Geolocation;
-using Windows.UI.Core;
-using YJMPD_UWP;
-using YJMPD_UWP.Helpers;
-using YJMPD_UWP.ViewModels;
 
 namespace YJMPD_UWP.ViewModels
 {
     public class MainPageVM : TemplateVM
     {
-        public MainPageVM() : base(Util.Loader.GetString("Loading"))
+        public MainPageVM() : base("Loading")
         {
-            App.Geo.OnPositionUpdate += Geo_OnPositionUpdate;
-            App.Geo.OnStatusUpdate += Geo_OnStatusUpdate;
+            
         }
 
-        protected override void UpdatePropertiesToNewLanguage()
-        {
-            NotifyPropertyChanged(nameof(Map));
-            NotifyPropertyChanged(nameof(Help));
-            NotifyPropertyChanged(nameof(Route));
-            NotifyPropertyChanged(nameof(Landmarks));
-            NotifyPropertyChanged(nameof(Search));
-            NotifyPropertyChanged(nameof(Settings));
-            NotifyPropertyChanged(nameof(Status));
-            NotifyPropertyChanged(nameof(Source));
-            NotifyPropertyChanged(nameof(Accuracy));
-            NotifyPropertyChanged(nameof(GPSInfo));
-            NotifyPropertyChanged(nameof(BackText));
-        }
-
-        public string BackText
-        {
-            get
-            {
-                return Util.Loader.GetString("BackTwiceText");
-            }
-        }
-
-
-        public string Map
-        {
-            get
-            {
-                return Util.Loader.GetString("Map");
-            }
-        }
-
-        public string Help
-        {
-            get
-            {
-                return Util.Loader.GetString("Help");
-            }
-        }
-
-        public string Route
-        {
-            get
-            {
-                return Util.Loader.GetString("Route");
-            }
-        }
-
-        public string Landmarks
-        {
-            get
-            {
-                return Util.Loader.GetString("Landmarks");
-            }
-        }
-
-        public string Search
+        public string GameState
         {
             get
             {
-                return Util.Loader.GetString("Search");
+                return "N/A";
             }
         }
 
-        public string Settings
+        public string People
         {
             get
             {
-                return Util.Loader.GetString("Settings");
+                return "0/0";
             }
         }
 
-        private void Geo_OnStatusUpdate(object sender, YJMPD_UWP.Model.StatusUpdatedEventArgs e)
-        {
-            dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
-            {
-                NotifyPropertyChanged(nameof(Status));
-            });
-        }
-
-        private void Geo_OnPositionUpdate(object sender, YJMPD_UWP.Model.PositionUpdatedEventArgs e)
-        {
-            dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
-            {
-                NotifyPropertyChanged(nameof(Source));
-                NotifyPropertyChanged(nameof(Accuracy));
-            });
-        }
-
-        public string GPSInfo
+        public bool GameVisible
         {
             get
             {
-                return Util.Loader.GetString("GPSInfo");
-            }
-        }
-
-        public string Status
-        {
-            get
-            {
-                switch (App.Geo.Status)
-                {
-                    case PositionStatus.Disabled:
-                        return Util.Loader.GetString("Disabled");
-                    case PositionStatus.Initializing:
-                        return Util.Loader.GetString("Initializing");
-                    case PositionStatus.NoData:
-                        return Util.Loader.GetString("NoData");
-                    default:
-                    case PositionStatus.NotAvailable:
-                        return Util.Loader.GetString("NotAvailable");
-                    case PositionStatus.NotInitialized:
-                        return Util.Loader.GetString("NotInitialized");
-                    case PositionStatus.Ready:
-                        return Util.Loader.GetString("Ready");
-                }
-            }
-        }
-
-        public string Source
-        {
-            get
-            {
-                if (App.Geo.Connected == true && App.Geo.Position != null)
-                    switch (App.Geo.Position.Coordinate.PositionSource)
-                    {
-                        case PositionSource.Cellular:
-                            return Util.Loader.GetString("Cellular");
-                        case PositionSource.IPAddress:
-                            return Util.Loader.GetString("IPAddress");
-                        case PositionSource.Satellite:
-                            return Util.Loader.GetString("Satellite");
-                        case PositionSource.WiFi:
-                            return Util.Loader.GetString("WiFi");
-                        default:
-                        case PositionSource.Unknown:
-                            return Util.Loader.GetString("Unknown");
-
-                    }
-                else
-                    return Util.Loader.GetString("Unknown");
-            }
-        }
-
-        public string Accuracy
-        {
-            get
-            {
-
-                if (App.Geo.Connected == true && App.Geo.Position != null)
-                    return App.Geo.Position.Coordinate.Accuracy.ToString() + "m";
-                else
-                    return Util.Loader.GetString("Unknown");
+                return true;
             }
         }
 

+ 10 - 0
YJMPD-UWP/ViewModels/MatchVM.cs

@@ -0,0 +1,10 @@
+namespace YJMPD_UWP.ViewModels
+{
+    public class MatchVM : TemplateVM
+    {
+        public MatchVM() : base("Match")
+        {
+
+        }
+    }
+}

+ 2 - 37
YJMPD-UWP/ViewModels/SettingsVM.cs

@@ -1,45 +1,10 @@
-using YJMPD_UWP.Helpers;
-
-namespace YJMPD_UWP.ViewModels
+namespace YJMPD_UWP.ViewModels
 {
     public class SettingsVM : TemplateVM
     {
-
-        public SettingsVM() : base(Util.Loader.GetString("Settings"))
-        {
-
-        }
-
-        protected override void UpdatePropertiesToNewLanguage()
-        {
-            NotifyPropertyChanged(nameof(Language));
-            NotifyPropertyChanged(nameof(Reset));
-            NotifyPropertyChanged(nameof(ResetHeader));
-            App.MainPage.Title = Util.Loader.GetString("Settings");
-        }
-
-        public string Language
+        public SettingsVM() : base("Settings")
         {
-            get
-            {
-                return Util.Loader.GetString("Language");
-            }
-        }
 
-        public string ResetHeader
-        {
-            get
-            {
-                return Util.Loader.GetString("Reset");
-            }
-        }
-
-        public string Reset
-        {
-            get
-            {
-                return Util.Loader.GetString("Reset") + " " + Util.Loader.GetString("Application");
-            }
         }
     }
 }

+ 10 - 0
YJMPD-UWP/ViewModels/StatisticsVM.cs

@@ -0,0 +1,10 @@
+namespace YJMPD_UWP.ViewModels
+{
+    public class StatisticsVM : TemplateVM
+    {
+        public StatisticsVM() : base("Statistics")
+        {
+
+        }
+    }
+}

+ 1 - 17
YJMPD-UWP/ViewModels/TemplateVM.cs

@@ -1,6 +1,4 @@
-using YJMPD_UWP.Helpers;
-using System;
-using System.ComponentModel;
+using System.ComponentModel;
 using Windows.UI.Core;
 
 namespace YJMPD_UWP.ViewModels
@@ -12,25 +10,11 @@ namespace YJMPD_UWP.ViewModels
         public TemplateVM(string title)
         {
             dispatcher = App.Dispatcher;
-            Settings.OnLanguageUpdate += Settings_OnLanguageUpdate;
 
             if (App.MainPage != null)
                 App.MainPage.Title = title;
         }
 
-        private void Settings_OnLanguageUpdate(EventArgs e)
-        {
-            dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
-            {
-                UpdatePropertiesToNewLanguage();
-            });
-        }
-
-        protected virtual void UpdatePropertiesToNewLanguage()
-        {
-            //to implement in underlying class
-        }
-
         public event PropertyChangedEventHandler PropertyChanged;
 
         protected void NotifyPropertyChanged(string propertyName)

+ 13 - 0
YJMPD-UWP/Views/AboutView.xaml

@@ -0,0 +1,13 @@
+<Page
+    x:Class="YJMPD_UWP.Views.AboutView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:YJMPD_UWP.Views"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d">
+
+    <Grid>
+        
+    </Grid>
+</Page>

+ 17 - 0
YJMPD-UWP/Views/AboutView.xaml.cs

@@ -0,0 +1,17 @@
+using YJMPD_UWP.ViewModels;
+using Windows.UI.Xaml.Controls;
+
+namespace YJMPD_UWP.Views
+{
+    public sealed partial class AboutView : Page
+    {
+        AboutVM aboutvm;
+
+        public AboutView()
+        {
+            aboutvm = new AboutVM();
+            this.DataContext = aboutvm;
+            this.InitializeComponent();
+        }
+    }
+}

+ 13 - 0
YJMPD-UWP/Views/AccountView.xaml

@@ -0,0 +1,13 @@
+<Page
+    x:Class="YJMPD_UWP.Views.AccountView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:YJMPD_UWP.Views"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d">
+
+    <Grid>
+
+    </Grid>
+</Page>

+ 17 - 0
YJMPD-UWP/Views/AccountView.xaml.cs

@@ -0,0 +1,17 @@
+using Windows.UI.Xaml.Controls;
+using YJMPD_UWP.ViewModels;
+
+namespace YJMPD_UWP.Views
+{
+    public sealed partial class AccountView : Page
+    {
+        AccountVM accountvm;
+
+        public AccountView()
+        {
+            accountvm = new AccountVM();
+            this.DataContext = accountvm;
+            this.InitializeComponent();
+        }
+    }
+}

+ 0 - 112
YJMPD-UWP/Views/HelpView.xaml

@@ -1,112 +0,0 @@
-<Page
-    x:Class="YJMPD_UWP.Views.HelpView"
-    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-    xmlns:local="using:YJMPD_UWP.Views"
-    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-    mc:Ignorable="d">
-
-    <Page.Resources>
-        <Style TargetType="StackPanel" x:Key="HelpPanel">
-            <Setter Property="Margin" Value="10,10,10,0" />
-            <Setter Property="Padding" Value="0,0,0,10" />
-            <Setter Property="BorderBrush" Value="{ThemeResource SystemControlBackgroundChromeMediumLowBrush}" />
-            <Setter Property="BorderThickness" Value="0,0,0,2" />
-        </Style>
-
-        <Style TargetType="TextBlock" x:Key="HelpText">
-            <Setter Property="RelativePanel.AlignTopWithPanel" Value="True" />
-            <Setter Property="RelativePanel.AlignLeftWithPanel" Value="True" />
-            <Setter Property="TextWrapping" Value="WrapWholeWords" />
-            <Setter Property="TextAlignment" Value="Left" />
-        </Style>
-
-        <Style TargetType="TextBlock" x:Key="HelpTextImage">
-            <Setter Property="RelativePanel.AlignTopWithPanel" Value="True" />
-            <Setter Property="RelativePanel.AlignLeftWithPanel" Value="True" />
-            <Setter Property="TextWrapping" Value="WrapWholeWords" />
-            <Setter Property="Margin" Value="0,0,60,0" />
-            <Setter Property="TextAlignment" Value="Left" />
-        </Style>
-
-        <Style TargetType="Image" x:Key="HelpImageSmall">
-            <Setter Property="RelativePanel.AlignRightWithPanel" Value="True" />
-            <Setter Property="RelativePanel.AlignVerticalCenterWithPanel" Value="True" />
-            <Setter Property="Width" Value="50" />
-            <Setter Property="Height" Value="50" />
-            <Setter Property="Stretch" Value="UniformToFill"/>
-        </Style>
-
-        <Style TargetType="SymbolIcon" x:Key="HelpSymbolSmall">
-            <Setter Property="RelativePanel.AlignRightWithPanel" Value="True" />
-            <Setter Property="RelativePanel.AlignVerticalCenterWithPanel" Value="True" />
-            <Setter Property="Width" Value="50" />
-            <Setter Property="Height" Value="50" />
-        </Style>
-
-        <Style TargetType="TextBlock" x:Key="HelpIconSmall">
-            <Setter Property="RelativePanel.AlignRightWithPanel" Value="True" />
-            <Setter Property="RelativePanel.AlignVerticalCenterWithPanel" Value="True" />
-            <Setter Property="FontFamily" Value="Segoe MDL2 Assets" />
-            <Setter Property="FontSize" Value="40" />
-        </Style>
-
-        <Style TargetType="Image" x:Key="HelpImageLarge">
-            <Setter Property="Stretch" Value="UniformToFill"/>
-            <Setter Property="Margin" Value="0,5,0,0" />
-        </Style>
-    </Page.Resources>
-
-    <ScrollViewer HorizontalScrollMode="Disabled" VerticalScrollMode="Enabled" VerticalSnapPointsAlignment="Near">
-        <Grid>
-            <Grid.RowDefinitions>
-                <RowDefinition Height="Auto" />
-                <RowDefinition Height="Auto" />
-                <RowDefinition Height="Auto" />
-                <RowDefinition Height="Auto" />
-                <RowDefinition Height="Auto" />
-                <RowDefinition Height="Auto" />
-                <RowDefinition Height="Auto" />
-            </Grid.RowDefinitions>
-
-            <!-- Position -->
-            <StackPanel Grid.Row="0" Style="{StaticResource HelpPanel}">
-                <TextBlock Text="{Binding HelpItem1Header}" Style="{StaticResource Header}" />
-                <RelativePanel>
-                    <TextBlock Text="{Binding HelpItem1Text}" Style="{StaticResource HelpTextImage}" />
-                    <Image Source="/Assets/CurrentLocationRound.png" Style="{StaticResource HelpImageSmall}" />
-                </RelativePanel>
-            </StackPanel>
-
-            <!-- Page Navigation -->
-            <StackPanel Grid.Row="1" Style="{StaticResource HelpPanel}">
-                <TextBlock Text="{Binding HelpItem2Header}" Style="{StaticResource Header}" />
-                <RelativePanel>
-                    <TextBlock Text="{Binding HelpItem2Text}" Style="{StaticResource HelpText}" />
-                </RelativePanel>
-                <Image Source="/Assets/Help/HelpItem2Image.png" Style="{StaticResource HelpImageLarge}" />
-            </StackPanel>
-
-            <!-- GPS Information -->
-            <StackPanel Grid.Row="2" Style="{StaticResource HelpPanel}">
-                <TextBlock Text="{Binding HelpItem3Header}" Style="{StaticResource Header}" />
-                <RelativePanel>
-                    <TextBlock Text="{Binding HelpItem3Text}" Style="{StaticResource HelpText}" />
-                </RelativePanel>
-                <Image Source="/Assets/Help/HelpItem3Image.png" Style="{StaticResource HelpImageLarge}" />
-            </StackPanel>
-
-            <!-- Map + Controls (Tilt,zoom,pan,rotate) -->
-            <!-- Route -->
-            <!-- Help -->
-            <!-- Settings -->
-            <!-- Landmark -->
-            <!-- Visited / Not Visited -->
-            <!-- Starting a route -->
-            <!-- Stopping a route -->
-            <!-- What happens when you walk -->
-            <!-- Buttons and text during navigation -->
-        </Grid>
-    </ScrollViewer>
-</Page>

+ 0 - 17
YJMPD-UWP/Views/HelpView.xaml.cs

@@ -1,17 +0,0 @@
-using YJMPD_UWP.ViewModels;
-using Windows.UI.Xaml.Controls;
-
-namespace YJMPD_UWP.Views
-{
-    public sealed partial class HelpView : Page
-    {
-        HelpVM helpvm;
-
-        public HelpView()
-        {
-            helpvm = new HelpVM();
-            this.DataContext = helpvm;
-            this.InitializeComponent();
-        }
-    }
-}

+ 13 - 0
YJMPD-UWP/Views/MatchView.xaml

@@ -0,0 +1,13 @@
+<Page
+    x:Class="YJMPD_UWP.Views.MatchView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:YJMPD_UWP.Views"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d">
+
+    <Grid>
+
+    </Grid>
+</Page>

+ 17 - 0
YJMPD-UWP/Views/MatchView.xaml.cs

@@ -0,0 +1,17 @@
+using Windows.UI.Xaml.Controls;
+using YJMPD_UWP.ViewModels;
+
+namespace YJMPD_UWP.Views
+{
+    public sealed partial class MatchView : Page
+    {
+        MatchVM matchvm;
+
+        public MatchView()
+        {
+            matchvm = new MatchVM();
+            this.DataContext = matchvm;
+            this.InitializeComponent();
+        }
+    }
+}

+ 3 - 26
YJMPD-UWP/Views/SettingsView.xaml

@@ -7,30 +7,7 @@
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
     mc:Ignorable="d">
 
-    <ScrollViewer>
-        <StackPanel HorizontalAlignment="Stretch">
-            <StackPanel Margin="10">
-                <TextBlock Text="{Binding Language}" Style="{StaticResource Header}"/>
-                <ComboBox Name="Language" SelectionChanged="Language_SelectionChanged" HorizontalAlignment="Stretch">
-                    <ComboBoxItem>English</ComboBoxItem>
-                    <ComboBoxItem>Nederlands</ComboBoxItem>
-                    <ComboBoxItem>Deutsch</ComboBoxItem>
-                    <!-- <ComboBoxItem>日本語</ComboBoxItem> -->
-                </ComboBox>
-            </StackPanel>
-
-            <StackPanel Margin="10">
-                <TextBlock Text="{Binding ResetHeader}" Style="{StaticResource Header}"/>
-                <StackPanel Orientation="Horizontal">
-                    <Button Name="ResetButton" Click="ResetButton_Click">
-                        <StackPanel Orientation="Horizontal">
-                            <TextBlock FontFamily="Segoe MDL2 Assets" Text="&#xE895;" Margin="0,3,10,0" />
-                            <TextBlock Text="{Binding Reset}" />
-                        </StackPanel>
-                    </Button>
-                    <ProgressRing Name="ResetProgress" IsActive="False" Margin="15,0,0,0"/>
-                </StackPanel>
-            </StackPanel>
-        </StackPanel>
-    </ScrollViewer>
+    <Grid>
+        
+    </Grid>
 </Page>

+ 2 - 67
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();
         }
     }
 }

+ 13 - 0
YJMPD-UWP/Views/StatisticsView.xaml

@@ -0,0 +1,13 @@
+<Page
+    x:Class="YJMPD_UWP.Views.StatisticsView"
+    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+    xmlns:local="using:YJMPD_UWP.Views"
+    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    mc:Ignorable="d">
+
+    <Grid>
+
+    </Grid>
+</Page>

+ 17 - 0
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();
+        }
+    }
+}

+ 39 - 8
YJMPD-UWP/YJMPD-UWP.csproj

@@ -22,7 +22,7 @@
     <DebugSymbols>true</DebugSymbols>
     <OutputPath>bin\x86\Debug\</OutputPath>
     <DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
-    <NoWarn>;2008</NoWarn>
+    <NoWarn>;2008;CS4014</NoWarn>
     <DebugType>full</DebugType>
     <PlatformTarget>x86</PlatformTarget>
     <UseVSHostingProcess>false</UseVSHostingProcess>
@@ -95,25 +95,45 @@
     <Compile Include="App.xaml.cs">
       <DependentUpon>App.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Helpers\Converter\BoolToVisibilityConverter.cs" />
+    <Compile Include="Helpers\EventArgs\GameStatusUpdatedEventArgs.cs" />
+    <Compile Include="Helpers\EventArgs\HeadingUpdatedEventArgs.cs" />
+    <Compile Include="Helpers\EventArgs\NetworkStatusUpdatedEventArgs.cs" />
+    <Compile Include="Helpers\EventArgs\PositionStatusUpdatedEventArgs.cs" />
+    <Compile Include="Helpers\EventArgs\PositionUpdatedEventArgs.cs" />
     <Compile Include="Helpers\Extensions.cs" />
     <Compile Include="Helpers\Settings.cs" />
     <Compile Include="Helpers\Util.cs" />
     <Compile Include="MainPage.xaml.cs">
       <DependentUpon>MainPage.xaml</DependentUpon>
     </Compile>
-    <Compile Include="Model\CompassTracker.cs" />
-    <Compile Include="Model\GeoTracker.cs" />
+    <Compile Include="Model\CompassHandler.cs" />
+    <Compile Include="Model\GameHandler.cs" />
+    <Compile Include="Model\GeoHandler.cs" />
+    <Compile Include="Model\NetworkHandler.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="ViewModels\HelpVM.cs" />
+    <Compile Include="ViewModels\AboutVM.cs" />
+    <Compile Include="ViewModels\AccountVM.cs" />
     <Compile Include="ViewModels\MainPageVM.cs" />
+    <Compile Include="ViewModels\MatchVM.cs" />
     <Compile Include="ViewModels\SettingsVM.cs" />
+    <Compile Include="ViewModels\StatisticsVM.cs" />
     <Compile Include="ViewModels\TemplateVM.cs" />
-    <Compile Include="Views\HelpView.xaml.cs">
-      <DependentUpon>HelpView.xaml</DependentUpon>
+    <Compile Include="Views\AboutView.xaml.cs">
+      <DependentUpon>AboutView.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Views\AccountView.xaml.cs">
+      <DependentUpon>AccountView.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="Views\MatchView.xaml.cs">
+      <DependentUpon>MatchView.xaml</DependentUpon>
     </Compile>
     <Compile Include="Views\SettingsView.xaml.cs">
       <DependentUpon>SettingsView.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Views\StatisticsView.xaml.cs">
+      <DependentUpon>StatisticsView.xaml</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
     <AppxManifest Include="Package.appxmanifest">
@@ -152,18 +172,29 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
-    <Page Include="Views\HelpView.xaml">
+    <Page Include="Views\AboutView.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="Views\AccountView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="Views\MatchView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Views\SettingsView.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
+    <Page Include="Views\StatisticsView.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Helpers\Comparer\" />
-    <Folder Include="Helpers\Converter\" />
   </ItemGroup>
   <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '14.0' ">
     <VisualStudioVersion>14.0</VisualStudioVersion>