diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs index 030d6aae..670e02b3 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeed.cs @@ -13,12 +13,19 @@ namespace CampusAppWP8.Feed.Mensa using CampusAppWP8.Model; using CampusAppWPortalLib8.Model.Mensa; using CampusAppWPortalLib8.Model; + using CampusAppWP8.Resources; + using CampusAppWPortalLib8.Model.Settings; /// This Class is for MensaFeeds. /// Stubbfel, 14.10.2013. /// public abstract class MensaFeed : XmlModel { + #region Member + /// The price feed. + private PriceFeed priceFeed = null; + + #endregion #region Constructor /// Initializes a new instance of the class. @@ -31,6 +38,11 @@ namespace CampusAppWP8.Feed.Mensa this.IsFileUpToDateOnLoad += new IsFileUpToDate(this.CheckIsFileUpToDate); this.IsModelUpToDateOnLoad += new IsModelUpToDate(this.CheckIsModelUpToDate); this.IsFileUpToDateOnSave += new IsFileUpToDate(this.CheckIsFileUpToDate); + + this.priceFeed = new PriceFeed(); + this.priceFeed.OnLoaded += this.PriceFeedIsReady; + this.priceFeed.OnFailedLoad += this.PriceFeedIsFailed; + this.priceFeed.LoadData(); } #endregion @@ -41,6 +53,10 @@ namespace CampusAppWP8.Feed.Mensa /// The title. public string Title { get; protected set; } + /// Gets the title. + /// The title. + public Campus Campus { get; protected set; } + #endregion #region Method @@ -119,6 +135,79 @@ namespace CampusAppWP8.Feed.Mensa return true; } + /// + /// Ändert die Quelldaten vor der Übergabe an das Ziel zur Anzeige in der Benutzeroberfläche. + /// + /// Fiedler, 14.11.2013. + /// + public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo language) + { + string retValue = string.Empty; + int intVal = -1; + int intParam = -1; + + if (value is int) + { + intVal = (int)value; + } + else if (value is string) + { + intVal = int.Parse((string)value); + } + + if (parameter is int) + { + intParam = (int)parameter; + } + else if (parameter is string) + { + intParam = int.Parse((string)parameter); + } + + if ((intVal >= 0) && (intParam >= 0)) + { + if (this.priceFeed != null && this.priceFeed.Model != null) + { + PriceMealModel model = this.priceFeed.Model.GetCanteen(intParam).GetPriceMealModel(intVal); + retValue = AppResources.Students + ": " + model.PriceStudentStr + " € " + AppResources.Employees + ": " + model.PriceEmployeeStr + " € " + AppResources.Guests + ": " + model.PriceGuestStr + " €"; + } + } + + return retValue; + } + + /// Price feed is ready. + /// Fiedler, 14.11.2013. + private void PriceFeedIsReady() + { + this.priceFeed.SaveData(); + } + + /// Sets the prices. + /// Stubbfel, 18.11.2013. + public void SetPrices() + { + if (this.Model == null || this.Model.Menus == null || this.priceFeed == null || this.priceFeed.Model == null) + { + return; + } + + foreach(MenuModel menu in this.Model.Menus) { + foreach (MealModel meal in menu.Meals) + { + PriceMealModel model = this.priceFeed.Model.GetCanteen(this.Campus).GetPriceMealModel(meal.MealId); + meal.Price = AppResources.Students + ": " + model.PriceStudentStr + " € " + AppResources.Employees + ": " + model.PriceEmployeeStr + " € " + AppResources.Guests + ": " + model.PriceGuestStr + " €"; + } + } + + } + + /// Price feed is failed. + /// Fiedler, 14.11.2013. + private void PriceFeedIsFailed() + { + } + #endregion #endregion diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs index e0765814..7ea6dcf3 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBMain.cs @@ -23,6 +23,7 @@ namespace CampusAppWP8.Feed.Mensa : base(Constants.FileMensa_Shedule_CBMain, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_CBMain) { this.Title = CampusAppWPortalLib8.Resources.AppResources.Campus_CBMain; + this.Campus = CampusAppWPortalLib8.Model.Settings.Campus.CB_MAIN; } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs index a6956d5f..b6959904 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBNorth.cs @@ -23,6 +23,7 @@ namespace CampusAppWP8.Feed.Mensa : base(Constants.FileMensa_Shedule_CBNorth, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_CBNorth) { this.Title = CampusAppWPortalLib8.Resources.AppResources.Campus_CBNorth; + this.Campus = CampusAppWPortalLib8.Model.Settings.Campus.CB_NORTH; } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs index fc33a1da..7c0cf80f 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedCBSouth.cs @@ -23,6 +23,7 @@ namespace CampusAppWP8.Feed.Mensa : base(Constants.FileMensa_Shedule_CBSouth, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_CBSouth) { this.Title = CampusAppWPortalLib8.Resources.AppResources.Campus_CBSouth; + this.Campus = CampusAppWPortalLib8.Model.Settings.Campus.CB_SOUTH; } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs index 0fe1fc1e..17c6c64e 100644 --- a/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs +++ b/CampusAppWP8/CampusAppWP8/Feed/Mensa/MensaFeedSBFMain.cs @@ -23,6 +23,7 @@ namespace CampusAppWP8.Feed.Mensa : base(Constants.FileMensa_Shedule_SBFMain, CampusAppWPortalLib8.Resources.Constants.UrlMensa_Week_SBFMain) { this.Title = CampusAppWPortalLib8.Resources.AppResources.Campus_SFBMain; + this.Campus = CampusAppWPortalLib8.Model.Settings.Campus.SFB_MAIN; } #endregion diff --git a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml index 3b83b591..ea1339ba 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml +++ b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml @@ -19,11 +19,7 @@ SupportedOrientations="PortraitOrLandscape" Orientation="Portrait" shell:SystemTray.IsVisible="True" x:Name="root"> - - - - - + @@ -33,7 +29,7 @@ - + @@ -56,7 +52,7 @@ - + @@ -71,8 +67,7 @@ - - + @@ -96,6 +91,9 @@ + + + diff --git a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs index 8952c549..e837fc79 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Mensa/MensaPage.xaml.cs @@ -65,6 +65,8 @@ namespace CampusAppWP8.Pages.Mensa ApplicationBarMenuItem menuItem1 = ApplicationBar.MenuItems[0] as ApplicationBarMenuItem; ApplicationBarMenuItem menuItem2 = ApplicationBar.MenuItems[1] as ApplicationBarMenuItem; ApplicationBarMenuItem menuItem3 = ApplicationBar.MenuItems[2] as ApplicationBarMenuItem; + ApplicationBarMenuItem menuItem4 = ApplicationBar.MenuItems[3] as ApplicationBarMenuItem; + ApplicationBarMenuItem menuItem5 = ApplicationBar.MenuItems[4] as ApplicationBarMenuItem; if (menuItem1 != null) { @@ -81,6 +83,16 @@ namespace CampusAppWP8.Pages.Mensa menuItem3.Text = CampusAppWPortalLib8.Resources.AppResources.Campus_SFBMain; } + if (menuItem4 != null) + { + menuItem4.Text = AppResources.MensaApp_Dayplan + " " + AppResources.Copy; + } + + if (menuItem5 != null) + { + menuItem5.Text = AppResources.MensaApp_Weekplan + " " + AppResources.Copy; + } + this.DefHeader.ProgressVisibility = Visibility.Visible; } @@ -185,12 +197,12 @@ namespace CampusAppWP8.Pages.Mensa this.InitializeFeed(mensaCampus); } } - - /* this.campusApi = new CampusSpsApi(); - this.campusApi.OnLoaded += new SpsApi.OnIO(this.SpsApiIsReady); - this.campusApi.OnFailedLoad += new SpsApi.OnFailed(this.SpsApiIsFail); - this.campusApi.SetupCurrentCampusRequest(); - this.campusApi.LoadData();*/ + + /* this.campusApi = new CampusSpsApi(); + this.campusApi.OnLoaded += new SpsApi.OnIO(this.SpsApiIsReady); + this.campusApi.OnFailedLoad += new SpsApi.OnFailed(this.SpsApiIsFail); + this.campusApi.SetupCurrentCampusRequest(); + this.campusApi.LoadData();*/ } /// Method initialize the Feed depends of a campus. @@ -234,6 +246,7 @@ namespace CampusAppWP8.Pages.Mensa /// Stubbfel, 15.10.2013. private void FeedIsReady() { + this.feed.SetPrices(); this.SetupMensaPivot(); this.DefHeader.ProgressVisibility = Visibility.Collapsed; } @@ -404,6 +417,80 @@ namespace CampusAppWP8.Pages.Mensa Clipboard.SetText(copyText); } + /// Copies the menu of the selected day. + /// Stubbfel, 18.11.2013. + /// button object. + /// Event information. + private void CopyDay(object sender, EventArgs e) + { + if (this.MensaPivot == null) + { + return; + } + + int selecetdIndex = this.MensaPivot.SelectedIndex; + + if (this.feed == null || this.feed.Model == null || selecetdIndex >= this.feed.Model.Menus.Count || selecetdIndex < 0) + { + return; + } + + MenuModel menu = this.feed.Model.Menus[selecetdIndex]; + string copyText = AppResources.MensaApp_Dayplan + " (" + menu.Day + " - " + menu.Date + ") - " + AppResources.Setting_UserCampus + " " + this.feed.Title + " :"; + copyText = Wp8StringManager.AddNewLine(copyText); + + foreach (MealModel meal in menu.Meals) + { + copyText += meal.MealName + ": " + meal.MealDesc; + copyText = Wp8StringManager.AddNewLine(copyText); + } + + + Clipboard.SetText(copyText); + } + + /// Copies all meals from the week. + /// Stubbfel, 18.11.2013. + /// button object. + /// Event information. + private void CopyWeek(object sender, EventArgs e) + { + + if (this.MensaPivot == null || this.feed == null || this.feed.Model == null) + { + return; + } + + string startDate = null; + string endDate = null; + + string copyText = string.Empty; + foreach (MenuModel menu in this.feed.Model.Menus) + { + if (startDate == null) + { + startDate = menu.Date; + } + endDate = menu.Date; + + copyText += menu.Day + " (" + menu.Date + "):"; + copyText = Wp8StringManager.AddNewLine(copyText); + + foreach (MealModel meal in menu.Meals) + { + copyText += meal.MealName + ": " + meal.MealDesc; + copyText = Wp8StringManager.AddNewLine(copyText); + } + copyText = Wp8StringManager.AddNewLine(copyText); + + } + + string headline = AppResources.MensaApp_Weekplan + " (" + startDate + " - " + endDate + ") - " + AppResources.Setting_UserCampus + " " + this.feed.Title + " :"; + headline = Wp8StringManager.AddNewLine(headline); + + Clipboard.SetText(headline + copyText); + } + #endregion #endregion diff --git a/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs index 5ab45237..c58ee146 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs +++ b/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs @@ -276,6 +276,15 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die Kopieren ähnelt. + /// + public static string Copy { + get { + return ResourceManager.GetString("Copy", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die Erstellen ähnelt. /// @@ -744,6 +753,15 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die Tagesplan ähnelt. + /// + public static string MensaApp_Dayplan { + get { + return ResourceManager.GetString("MensaApp_Dayplan", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die 84 ähnelt. /// @@ -762,6 +780,15 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die Wochenplan ähnelt. + /// + public static string MensaApp_Weekplan { + get { + return ResourceManager.GetString("MensaApp_Weekplan", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die BTU-Tag ähnelt. /// diff --git a/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx b/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx index 9297b6cd..f21e5f63 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx +++ b/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx @@ -605,4 +605,13 @@ Studenten + + Kopieren + + + Tagesplan + + + Wochenplan + \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs index 18a32b4d..e1502d6f 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/MealModel.cs @@ -112,6 +112,10 @@ namespace CampusAppWPortalLib8.Model.Mensa /// The icon URL. public string IconUrl { get; set; } + /// Gets or sets the price. + /// The price. + public string Price { get; set; } + /// Gets or sets the icon name. /// The name of the icon. [XmlAttribute("icon")] diff --git a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/PriceModel.cs b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/PriceModel.cs index 3a62b506..5630e72a 100644 --- a/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/PriceModel.cs +++ b/CampusAppWP8/CampusAppWPortalLib8/Model/Mensa/PriceModel.cs @@ -8,6 +8,7 @@ //----------------------------------------------------------------------- namespace CampusAppWPortalLib8.Model.Mensa { + using CampusAppWPortalLib8.Model.Settings; using System.Collections.ObjectModel; using System.Xml.Serialization; @@ -51,15 +52,25 @@ namespace CampusAppWPortalLib8.Model.Mensa { PriceCanteenModel retValue = null; - for (int i = 0; i < this.canteens.Count; i++) + foreach (PriceCanteenModel prize in this.canteens) { - if (this.canteens[i].Id.Equals(id)) + if (prize.Id == id) { - retValue = this.canteens[i]; + retValue = prize; + break; } } return retValue; } + + /// Gets a canteen. + /// Stubbfel, 18.11.2013. + /// The campus. + /// The canteen. + public PriceCanteenModel GetCanteen(Campus campus) + { + return this.GetCanteen((int)campus - 1); + } } } \ No newline at end of file