From 1b0ebe3f983a8b2050094686ae04899e798c74cb Mon Sep 17 00:00:00 2001 From: stubbfel Date: Wed, 29 May 2013 16:12:22 +0200 Subject: [PATCH] updtade feedutlilty --- CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj | 3 +- .../CampusAppWP8/Properties/WMAppManifest.xml | 2 +- CampusAppWP8/CampusAppWP8/model/mensa/Food.cs | 56 ----------- .../CampusAppWP8/model/mensa/FoodDay.cs | 94 ------------------- .../model/mensa/MensaViewModel.cs | 17 ++-- .../CampusAppWP8/model/mensa/MenuModel.cs | 50 ++++++++++ .../CampusAppWP8/pages/mensa/MensaFeed.cs | 30 ++++-- .../CampusAppWP8/pages/mensa/MensaPage.xaml | 33 +------ .../pages/mensa/MensaPage.xaml.cs | 34 ++++++- CampusAppWP8/CampusAppWP8/utility/Feed.cs | 57 +++++++++++ 10 files changed, 172 insertions(+), 204 deletions(-) delete mode 100644 CampusAppWP8/CampusAppWP8/model/mensa/Food.cs delete mode 100644 CampusAppWP8/CampusAppWP8/model/mensa/FoodDay.cs create mode 100644 CampusAppWP8/CampusAppWP8/model/mensa/MenuModel.cs diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index 3caed675..50ad8105 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -102,6 +102,7 @@ + CampusMapPage.xaml @@ -113,8 +114,6 @@ - - MensaPage.xaml diff --git a/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml b/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml index 9f9619ed..04b6f0e8 100644 --- a/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml +++ b/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml @@ -13,7 +13,7 @@ - + diff --git a/CampusAppWP8/CampusAppWP8/model/mensa/Food.cs b/CampusAppWP8/CampusAppWP8/model/mensa/Food.cs deleted file mode 100644 index a7995f2f..00000000 --- a/CampusAppWP8/CampusAppWP8/model/mensa/Food.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace CampusAppWP8.model.mensa -{ - public class Food : BaseModel - { - private string _detail; - private string _title; - public Food() - { - } - - public Food(string title, string detail) - { - _title = title; - _detail = detail; - } - - public string Title - { - get - { - return _title; - } - - set - { - if (value != _title) - { - _title = value; - NotifyPropertyChanged("title"); - } - } - } - - public string Detail - { - get - { - return _detail; - } - - set - { - if (value != _detail) - { - _detail = value; - NotifyPropertyChanged("detail"); - } - } - } - } -} diff --git a/CampusAppWP8/CampusAppWP8/model/mensa/FoodDay.cs b/CampusAppWP8/CampusAppWP8/model/mensa/FoodDay.cs deleted file mode 100644 index 0f585be5..00000000 --- a/CampusAppWP8/CampusAppWP8/model/mensa/FoodDay.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace CampusAppWP8.model.mensa -{ - public class FoodDay : BaseModel - { - private int _id; - private string _header; - private string _date; - - private ObservableCollection _foods = null; - - public FoodDay() - { - this.LoadData(); - } - - public FoodDay(int id, string header) - { - _id = id; - _header = header; - _date = header + " (01.01.1970)"; - this.LoadData(); - } - - public void LoadData() - { - this.Foods = new ObservableCollection(); - this.Foods.Add(new Food("Tagesuppe", "Schweinebrühe")); - this.Foods.Add(new Food("Essen 1", "Gaisburger Marsch mit Rindfleisch und Wurzelgemüse, dazu eine Scheibe Brot, Obst (R)")); - this.Foods.Add(new Food("Essen 2", "Weißkohlroulade mit pikanter Fleischfüllung auf Schmorkohlsauce zu Petersilienkartoffeln, Obst (S)")); - this.Foods.Add(new Food("Essen 3", "Spätzle-Pilz-Gouda-Pfanne mit Leipziger Allerlei und Sauce Mousseline (*)")); - this.Foods.Add(new Food("Essen 4", "Putenragout \"Florenz\" aus der Brust auf feiner Parmesansauce angerichtet (P),dazu Buttererbsen, Paprikagemüse, Maisgemüse sowie Ingwerreis, Pasta oder Kartoffelrösti(*)")); - this.Foods.Add(new Food("Aktion", "Tandem - Magdeburg kocht für Cottbus Harzer Teufelwurst mit grünen Teufelspuck, Scharfes Hexendessert (S)")); - } - - public string Header - { - get { return _header; } - set - { - if (value != _header) - { - _header = value; - NotifyPropertyChanged("header"); - } - } - } - - public string Date - { - get { return _date; } - set - { - if (value != _date) - { - _date = value; - NotifyPropertyChanged("date"); - } - } - } - - public ObservableCollection Foods - { - get { return _foods; } - set - { - if (value != _foods) - { - _foods = value; - NotifyPropertyChanged("foods"); - } - } - } - - public int Id - { - get { return _id; } - set - { - if (value != _id) - { - _id = value; - NotifyPropertyChanged("id"); - } - } - } - } -} diff --git a/CampusAppWP8/CampusAppWP8/model/mensa/MensaViewModel.cs b/CampusAppWP8/CampusAppWP8/model/mensa/MensaViewModel.cs index d2d5c9d0..11443e57 100644 --- a/CampusAppWP8/CampusAppWP8/model/mensa/MensaViewModel.cs +++ b/CampusAppWP8/CampusAppWP8/model/mensa/MensaViewModel.cs @@ -1,4 +1,6 @@ -using CampusAppWP8.Resources; +using CampusAppWP8.pages.mensa; +using CampusAppWP8.Resources; +using CampusAppWP8.utility; using Microsoft.Phone.Controls; using System; using System.Collections.Generic; @@ -12,24 +14,21 @@ namespace CampusAppWP8.model.mensa { public class MensaViewModel : BaseViewModel { - private ObservableCollection _foodDays = null; + private ObservableCollection _foodDays = null; public MensaViewModel() { - this.FoodDays = new ObservableCollection(); + _foodDays = new ObservableCollection(); this.LoadData(); } public void LoadData() { - this.FoodDays.Add(new FoodDay(0, AppResources.Time_Day_Monday)); - this.FoodDays.Add(new FoodDay(1, AppResources.Time_Day_Tuesday)); - this.FoodDays.Add(new FoodDay(2, AppResources.Time_Day_Wednesday)); - this.FoodDays.Add(new FoodDay(3, AppResources.Time_Day_Thursday)); - this.FoodDays.Add(new FoodDay(4, AppResources.Time_Day_Friday)); + Feed feed = new MensaFeed(); + feed.downloadFeed(); } - public ObservableCollection FoodDays + public ObservableCollection FoodDays { get { diff --git a/CampusAppWP8/CampusAppWP8/model/mensa/MenuModel.cs b/CampusAppWP8/CampusAppWP8/model/mensa/MenuModel.cs new file mode 100644 index 00000000..42338ede --- /dev/null +++ b/CampusAppWP8/CampusAppWP8/model/mensa/MenuModel.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Serialization; + +namespace CampusAppWP8.model.mensa +{ + + [XmlRoot("root")] + public class MenuWeekModel + { + [XmlArray("BTU")] + [XmlArrayItem("Tagesmenu")] + public ObservableCollection menus { get; set; } + public MenuWeekModel() + { + } + } + + public class MenuModel + { + public MenuModel() + { + } + + [XmlElement("Wochentag")] + public string WochenTag { get; set; } + + [XmlElement("Essen1")] + public string Essen1 {get; set;} + + [XmlElement("Essen2")] + public string Essen2 {get; set;} + + [XmlElement("Essen3")] + public string Essen3 {get; set;} + + [XmlElement("Essen4")] + public string Essen4 {get; set;} + + [XmlElement("Bio")] + public string Bio {get; set;} + + [XmlElement("Aktionstag")] + public string Aktionstag {get; set;} + } +} diff --git a/CampusAppWP8/CampusAppWP8/pages/mensa/MensaFeed.cs b/CampusAppWP8/CampusAppWP8/pages/mensa/MensaFeed.cs index 9658357e..6201c714 100644 --- a/CampusAppWP8/CampusAppWP8/pages/mensa/MensaFeed.cs +++ b/CampusAppWP8/CampusAppWP8/pages/mensa/MensaFeed.cs @@ -1,28 +1,38 @@ -using CampusAppWP8.utility; +using CampusAppWP8.model.mensa; +using CampusAppWP8.utility; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Xml.Linq; +using System.Xml.Serialization; namespace CampusAppWP8.pages.mensa { public class MensaFeed : Feed { - private readonly Uri _feedUrl = URLList.MensaFeedURL; - - public MensaFeed() + public MensaFeed(): base(URLList.MensaFeedURL) { - + } - public Uri FeedURL + protected override void doSomething(string downloadResult) { - get - { - return _feedUrl; - } + XmlSerializer serializer = new XmlSerializer(typeof(MenuWeekModel)); + XDocument document = XDocument.Parse(downloadResult); + + if (!document.Root.Name.Equals("root")) + { + XElement content = document.Root; + document = new XDocument(); + document.Add(new XElement("root", content)); } + MenuWeekModel menuWeek = (MenuWeekModel)serializer.Deserialize(document.CreateReader()); + menus = menuWeek.menus; + } + + public System.Collections.ObjectModel.ObservableCollection menus { get; set; } } } diff --git a/CampusAppWP8/CampusAppWP8/pages/mensa/MensaPage.xaml b/CampusAppWP8/CampusAppWP8/pages/mensa/MensaPage.xaml index f515d977..21aa8f8e 100644 --- a/CampusAppWP8/CampusAppWP8/pages/mensa/MensaPage.xaml +++ b/CampusAppWP8/CampusAppWP8/pages/mensa/MensaPage.xaml @@ -6,7 +6,6 @@ xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:viewModel="clr-namespace:CampusAppWP8.model.mensa" mc:Ignorable="d" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" @@ -14,43 +13,15 @@ SupportedOrientations="PortraitOrLandscape" Orientation="Portrait" OrientationChanged="PhoneApplicationPage_OrientationChanged" shell:SystemTray.IsVisible="True"> - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - \ 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 b7a5e1fa..9ac341b9 100644 --- a/CampusAppWP8/CampusAppWP8/pages/mensa/MensaPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/pages/mensa/MensaPage.xaml.cs @@ -7,6 +7,10 @@ using System.Windows.Controls; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; +using CampusAppWP8.utility; +using System.Xml.Serialization; +using CampusAppWP8.model.mensa; +using System.Xml.Linq; namespace CampusAppWP8.pages.mensa { @@ -15,8 +19,36 @@ namespace CampusAppWP8.pages.mensa public MensaPage() { InitializeComponent(); - MensaPivot.SelectedIndex = this.calcSelectedIndex(); + //MensaPivot.SelectedIndex = this.calcSelectedIndex(); + WebClient client = new WebClient(); + client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadCompleted); + client.DownloadStringAsync(URLList.MensaFeedURL); + } + private void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e) + { + Exception downloadError = e.Error; + if (downloadError != null) + { + Console.Out.WriteLineAsync(downloadError.Message); + return; + } + + string downloadResult = e.Result; + if (downloadResult != null && !downloadResult.Equals(String.Empty)) + { + XmlSerializer serializer = new XmlSerializer(typeof(MenuWeekModel)); + XDocument document = XDocument.Parse(downloadResult); + + if (!document.Root.Name.Equals("root")) + { + XElement content = document.Root; + document = new XDocument(); + document.Add(new XElement("root", content)); + } + MenuWeekModel menuWeek = (MenuWeekModel)serializer.Deserialize(document.CreateReader()); + MensaPivot.ItemsSource = menuWeek.menus; + } } private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e) diff --git a/CampusAppWP8/CampusAppWP8/utility/Feed.cs b/CampusAppWP8/CampusAppWP8/utility/Feed.cs index a3ea8996..45aaf63d 100644 --- a/CampusAppWP8/CampusAppWP8/utility/Feed.cs +++ b/CampusAppWP8/CampusAppWP8/utility/Feed.cs @@ -3,10 +3,67 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Net; namespace CampusAppWP8.utility { public abstract class Feed { + #region Member + + private readonly Uri _feedURL; + + #endregion + + #region Constructor + + public Feed() + { + } + + public Feed(Uri FeedURL) + { + _feedURL = FeedURL; + } + + #endregion + + #region Methods + public void downloadFeed() + { + WebClient client = new WebClient(); + client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadCompleted); + client.DownloadStringAsync(_feedURL); + } + + private void DownloadCompleted(object sender, DownloadStringCompletedEventArgs e) + { + Exception downloadError = e.Error; + if (downloadError != null) + { + Console.Out.WriteLineAsync(downloadError.Message); + return; + } + + string downloadResult = e.Result; + if (downloadResult != null && !downloadResult.Equals(String.Empty)) + { + doSomething(downloadResult); + } + } + + protected abstract void doSomething(string downloadResult); + + #endregion + + #region Getter&Setter + + public Uri FeedURL + { + get { return _feedURL; } + } + + #endregion + } }