diff --git a/CampusAppWP8/CampusAppWP8/App.xaml.cs b/CampusAppWP8/CampusAppWP8/App.xaml.cs index a0c297cf..ac1bc700 100644 --- a/CampusAppWP8/CampusAppWP8/App.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/App.xaml.cs @@ -141,8 +141,11 @@ namespace CampusAppWP8 private void LoadSettings() { this.UserSettingsLoaded(); - Thread thread = new Thread(new ThreadStart(Utilities.DetermineAndStoreCurrentPosition)); - thread.Start(); + if (Settings.AppSetting.GeoWatchEnable) + { + Thread thread = new Thread(new ThreadStart(Utilities.DetermineAndStoreCurrentPosition)); + thread.Start(); + } } /// diff --git a/CampusAppWP8/CampusAppWP8/Assets/campusmap.png b/CampusAppWP8/CampusAppWP8/Assets/campusmap.png new file mode 100644 index 00000000..8adaf203 Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/campusmap.png differ diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index a85ec411..a4942f33 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -104,6 +104,7 @@ + @@ -358,6 +359,7 @@ PreserveNewest + @@ -437,29 +439,10 @@ - - ..\packages\BuiltToRoam.Core.Agent.1.0.1.5\lib\sl4-wp71\AsyncCtpLibrary_Phone.dll - False - global - - - ..\packages\BuiltToRoam.Core.Agent.1.0.1.5\lib\sl4-wp71\BuiltToRoam.Core.Agent.dll - global - - - ..\packages\BuiltToRoam.GeoWatcher.1.0.1.5\lib\sl4-wp71\BuiltToRoam.GeoWatcher.dll - global - ..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll - - ..\packages\Newtonsoft.Json.4.5.11\lib\sl4-windowsphone71\Newtonsoft.Json.dll - - - ..\packages\SharpZipLib-WP7.0.86.0.518\lib\sl4-windowsphone71\SharpZipLib.WindowsPhone7.dll - diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs new file mode 100644 index 00000000..6360352a --- /dev/null +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/CBMainMapModel.cs @@ -0,0 +1,34 @@ +//----------------------------------------------------------------------------- +// +// Company copyright tag. +// +// fiedlchr +// 13.08.2013 +//----------------------------------------------------------------------------- +namespace CampusAppWP8.Model.Campusmap +{ + using System.Windows; + + /// + /// Class for the MapModel of the mainCampus of cottbus + /// + public class CBMainMapModel : MapModel + { + /// + /// Initializes a new instance of the class. + /// + public CBMainMapModel() + { + this.ImageSource = "/Assets/campusmap.png"; + this.ImageWidth = 2000; + this.ImageHeight = 1425; + this.MapImageOffsetX = -228; + this.MapImageOffsetY = -300; + this.RefPoint = new Point(1365, 800); + this.ScaleX = 129483.4123222749; + this.ScaleY = 197648.8919266073; + this.GeoOffsetX = 14.327159; + this.GeoOffsetY = 51.766548; + } + } +} diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs index 11d1b322..c015d99f 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapModel.cs @@ -68,7 +68,12 @@ namespace CampusAppWP8.Model.Campusmap /// /// Gets or sets the Scale (to pixel) of the map /// - public double Scale { get; set; } + public double ScaleX { get; set; } + + /// + /// Gets or sets the Scale (to pixel) of the map + /// + public double ScaleY { get; set; } /// /// Gets or sets the reference point @@ -159,19 +164,41 @@ namespace CampusAppWP8.Model.Campusmap /// Point in pixel-size public Point ConverToPixelPoint(double x, double y) { - return new Point { X = this.Scale * x, Y = this.Scale * y }; + Point p = new Point { X = this.ScaleX * x, Y = this.ScaleY * y }; + return p; } /// /// Convert a coordinates to coordinates which address pixels /// - /// not scaled point + /// not scaled pointd /// Point in pixel-size public Point ConverToPixelPoint(Point point) { return this.ConverToPixelPoint(point.X, point.Y); } + /// + /// Convert a coordinates to coordinates which address mapPoint + /// + /// the x-coordinate + /// the y-coordinate + /// Point in pixel-size + public Point ConverToMapPoint(double x, double y) + { + return new Point { X = x - this.GeoOffsetX, Y = y - this.GeoOffsetY }; + } + + /// + /// Convert a coordinates to coordinates which address mapPoint + /// + /// not scaled point + /// Point in pixel-size + public Point ConverToMapPoint(Point point) + { + return this.ConverToMapPoint(point.X, point.Y); + } + #endregion } } diff --git a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs index 8e9b131a..a46cacaa 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Campusmap/MapPinModel.cs @@ -8,6 +8,7 @@ namespace CampusAppWP8.Model.Campusmap { using System.Windows; + using CampusAppWP8.Resources; /// /// This Class manage the properties of a MapPin @@ -22,17 +23,18 @@ namespace CampusAppWP8.Model.Campusmap private Point position; #endregion + #region Constructor /// /// Initializes a new instance of the class. /// public MapPinModel() { - this.ImageSource = "/Assets/icons/search_159_light.png"; + this.ImageSource = Icons.Search; this.ImageWidth = 60; this.ImageHeight = 60; - this.PinImageOffsetX = -24; - this.PinImageOffsetY = -24; + this.PinImageOffsetX = -25; + this.PinImageOffsetY = -27; } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml index 2aa7d7f9..fc512ed1 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml +++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml @@ -7,11 +7,11 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:Location="clr-namespace:System.Device.Location;assembly=System.Device" x:Class="CampusAppWP8.Pages.Campusmap.CampusMapPage" + xmlns:lui="clr-namespace:CampusAppWP8.Utility.Lui.Button" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="PortraitOrLandscape" Orientation="Portrait" - OrientationChanged="PhoneApplicationPage_OrientationChanged" mc:Ignorable="d" shell:SystemTray.IsVisible="True"> @@ -21,7 +21,7 @@ - + @@ -39,8 +39,14 @@ - - + + + + + + + + @@ -56,5 +62,9 @@ - + + + + + \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs index 9879233b..bf6ed617 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs @@ -1,43 +1,123 @@ -using CampusAppWP8.Model.Campusmap; -using Microsoft.Phone.Controls; -using System.Windows; -using System.Windows.Navigation; - +//----------------------------------------------------------------------------- +// +// Company copyright tag. +// +// fiedlchr +// 13.08.2013 +//----------------------------------------------------------------------------- namespace CampusAppWP8.Pages.Campusmap { + using System; + using System.Globalization; + using System.Windows; + using System.Windows.Navigation; + using CampusAppWP8.Model.Campusmap; + using CampusAppWP8.Resources; + using CampusAppWP8.Utility; + using Microsoft.Phone.Controls; + + /// + /// Class for the campusMap page + /// public partial class CampusMapPage : PhoneApplicationPage { + /// + /// Variable for the map model + /// private MapModel map; + + /// + /// Initializes a new instance of the class. + /// public CampusMapPage() { - InitializeComponent(); - this.map = new MapModel() { ImageSource = "/Assets/testmap.png", ImageWidth = 2000, ImageHeight = 2000, MapImageOffsetX = -228, MapImageOffsetY = -300, RefPoint = new Point(1000, 1000), Scale = 20}; - this.MapCanvas.DataContext = map; - - } - - private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) - { + this.InitializeComponent(); + this.map = new CBMainMapModel(); + this.MapCanvas.DataContext = this.map; } /// /// Methods overrides the OnNavigatedTo-Method /// /// some NavigationEventArgs - protected override void OnNavigatedTo(NavigationEventArgs e) + protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); + this.ShowCurrentPositionDispatcher(); } + /// + /// Button click method + /// + /// caller object + /// some EventArgs private void Button_Click(object sender, RoutedEventArgs e) { - MapCanvas.Children.Clear(); - Point scrollPoint = map.GetScrollPoint(map.ConverToPixelPoint(double.Parse(XPoint.Text), double.Parse(YPoint.Text))); - MapCanvas.Children.Add(map.AddPinFromRefPoint(map.ConverToPixelPoint(double.Parse(XPoint.Text), double.Parse(YPoint.Text)))); + this.AddPin(double.Parse(XPoint.Text), double.Parse(YPoint.Text)); + } + /// + /// Add Pin to an certain position + /// + /// longitude parameter + /// latitude parameter + private void AddPin(double x, double y) + { + MapCanvas.Children.Clear(); + Point scrollPoint = this.map.GetScrollPoint(this.map.ConverToPixelPoint(this.map.ConverToMapPoint(x, y))); + MapCanvas.Children.Add(this.map.AddPinFromRefPoint(this.map.ConverToPixelPoint(this.map.ConverToMapPoint(x, y)))); + + MapScroller.UpdateLayout(); MapScroller.ScrollToVerticalOffset(scrollPoint.Y); - MapScroller.ScrollToHorizontalOffset(scrollPoint.X); - + MapScroller.ScrollToHorizontalOffset(scrollPoint.X); + XPoint.Text = x.ToString(); + YPoint.Text = y.ToString(); + } + + /// + /// On clicking the update button in the ApplicationBar. + /// + /// caller object + /// some EventArgs + private void UpdateButtonAppBar_Click(object sender, System.EventArgs e) + { + this.ShowCurrentPositionDispatcher(); + } + + /// + /// execute ShowCurrentPosition-Method via Dispatcher + /// + private void ShowCurrentPositionDispatcher() + { + ProgressBar.Visibility = Visibility.Visible; + + if (this.Dispatcher != null) + { + this.Dispatcher.BeginInvoke(new Action(() => this.ShowCurrentPosition())); + } + else + { + this.ShowCurrentPosition(); + } + } + + /// + /// Method add a pin on the at the position of the phone + /// + private void ShowCurrentPosition() + { + Utilities.DetermineAndStoreCurrentPositionForce(); + string lat = App.LoadFromAppState(Constants.GeoWatch_CurrentPosition_Lat); + string log = App.LoadFromAppState(Constants.GeoWatch_CurrentPosition_Long); + double x; + double y; + if (!double.TryParse(log, NumberStyles.Any, CultureInfo.InvariantCulture, out x) || !double.TryParse(lat, NumberStyles.Any, CultureInfo.InvariantCulture, out y)) + { + return; + } + + this.AddPin(x, y); + ProgressBar.Visibility = Visibility.Collapsed; } } } \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs index da74254d..a09237b8 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs @@ -77,7 +77,7 @@ namespace CampusAppWP8.Pages.Mensa base.OnNavigatedTo(e); this.ProgressBar.Visibility = System.Windows.Visibility.Visible; this.InitializeFeed(); - } + } /// /// Override the OnNavigatedFrom method @@ -138,7 +138,14 @@ namespace CampusAppWP8.Pages.Mensa { if (Settings.AppSetting.GeoWatchEnable) { - this.DeterminCurrentCampusAndLoadFeed(); + if (this.Dispatcher != null) + { + this.Dispatcher.BeginInvoke(new Action(() => this.DeterminCurrentCampusAndLoadFeed())); + } + else + { + this.DeterminCurrentCampusAndLoadFeed(); + } } else { diff --git a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml index 4c8cf1e0..ca2c2d80 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml +++ b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml @@ -80,7 +80,7 @@ - + diff --git a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs index e0256989..87a99ef9 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/StartPage.xaml.cs @@ -46,6 +46,15 @@ namespace CampusAppWP8.Pages } } + /// + /// Methods overrides the OnNavigatedTo-Method + /// + /// some NavigationEventArgs + protected override void OnNavigatedTo(NavigationEventArgs e) + { + base.OnNavigatedTo(e); + } + /// /// Method handle OrientationPage /// diff --git a/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml b/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml index 63a91f7c..6c5236ad 100644 --- a/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml +++ b/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml @@ -14,7 +14,7 @@ - + diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs index 865e17fb..8509b945 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs +++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs @@ -465,6 +465,15 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die /Pages/Campusmap/CampusMapPage.xaml ähnelt. + /// + public static string PathCampusmap_Campusmap { + get { + return ResourceManager.GetString("PathCampusmap_Campusmap", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die /Pages/Departments/DepartmentFavoritePage.xaml ähnelt. /// diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx index 45e2bc0c..7463f1be 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx +++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx @@ -405,4 +405,7 @@ longitude + + /Pages/Campusmap/CampusMapPage.xaml + \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs b/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs index 30296f10..bacf89c4 100644 --- a/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs +++ b/CampusAppWP8/CampusAppWP8/Utility/Utilities.cs @@ -6,7 +6,7 @@ // 16.07.2013 //----------------------------------------------------------------------------- namespace CampusAppWP8.Utility -{ +{ using System; using System.Collections.Generic; using System.Device.Location; @@ -209,11 +209,11 @@ namespace CampusAppWP8.Utility { if (!Settings.AppSetting.GeoWatchEnable) { - return null; + return null; } GeoCoordinateWatcher watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); - bool success = watcher.TryStart(false, TimeSpan.FromMilliseconds(1000)); + bool success = watcher.TryStart(false, TimeSpan.FromMilliseconds(10000)); GeoPosition geoposition = null; if (success) { @@ -236,6 +236,7 @@ namespace CampusAppWP8.Utility public static void DetermineAndStoreCurrentPositionForce() { GeoPosition geoposition = Utilities.DetermineCurrentPosition(); + if (geoposition != null) { string lat = geoposition.Location.Latitude.ToString(CultureInfo.InvariantCulture); diff --git a/CampusAppWP8/CampusAppWP8/packages.config b/CampusAppWP8/CampusAppWP8/packages.config index dbbe5283..a6c4d07d 100644 --- a/CampusAppWP8/CampusAppWP8/packages.config +++ b/CampusAppWP8/CampusAppWP8/packages.config @@ -1,8 +1,4 @@  - - - - \ No newline at end of file