From 96cd4bccb4d4dfca0e06af379b05b4b8742b575d Mon Sep 17 00:00:00 2001 From: Christian Fiedler Date: Tue, 23 Jul 2013 16:01:40 +0200 Subject: [PATCH] #129 --- .../Model/Openinghours/OpeninghoursModel.cs | 2 +- .../DepartmentFavoritePage.xaml.cs | 56 ++++++++++++++++++- .../Departments/DepartmentIndexPage.xaml.cs | 38 +++++++++++++ .../Pages/Departments/DepartmentPage.xaml.cs | 43 ++++++++++++++ .../Pages/Events/EventIndexPage.xaml.cs | 21 ++++++- .../Pages/Events/EventPage.xaml.cs | 45 ++++++++++++++- .../Pages/News/NewsIndexPage.xaml.cs | 19 +++++++ .../CampusAppWP8/Pages/News/NewsPage.xaml.cs | 45 ++++++++++++++- .../Openinghours/OpeninghoursPage.xaml.cs | 50 ++++++++++++----- .../Resources/Constants.Designer.cs | 36 ++++++++++++ .../CampusAppWP8/Resources/Constants.resx | 15 ++++- 11 files changed, 348 insertions(+), 22 deletions(-) diff --git a/CampusAppWP8/CampusAppWP8/Model/Openinghours/OpeninghoursModel.cs b/CampusAppWP8/CampusAppWP8/Model/Openinghours/OpeninghoursModel.cs index 530d9220..59b7caa7 100644 --- a/CampusAppWP8/CampusAppWP8/Model/Openinghours/OpeninghoursModel.cs +++ b/CampusAppWP8/CampusAppWP8/Model/Openinghours/OpeninghoursModel.cs @@ -59,7 +59,7 @@ namespace CampusAppWP8.Model.Openinghours } /// - /// Gets the Institutions. + /// Gets or sets the Institutions. /// [XmlArray("data")] [XmlArrayItem("institution")] diff --git a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentFavoritePage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentFavoritePage.xaml.cs index 2647fdf7..533a6f04 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentFavoritePage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentFavoritePage.xaml.cs @@ -11,6 +11,7 @@ namespace CampusAppWP8.Pages.Departments using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; + using CampusAppWP8.Model.Departments; using CampusAppWP8.Resources; using Microsoft.Phone.Controls; @@ -24,12 +25,24 @@ namespace CampusAppWP8.Pages.Departments /// private FrameworkElement lastClickedBtn = null; + /// + /// For checking if instance is back from tombstone. + /// + private bool isNewInstance = false; + + /// + /// For checking if the source of the list is set. + /// + private bool isSourceSet = false; + /// /// Initializes a new instance of the class. /// public DepartmentFavoritePage() { this.InitializeComponent(); + + this.isNewInstance = true; } /// @@ -39,7 +52,48 @@ namespace CampusAppWP8.Pages.Departments /// event args protected override void OnNavigatedTo(NavigationEventArgs e) { - this.ContentPanel.ItemsSource = DepartmentIndexPage.GetFavoriteFeed().GetModel().Faculties[0].Chairs; + base.OnNavigatedTo(e); + + if (this.isNewInstance) + { + if ((DepartmentIndexPage.FavoriteFeed == null) || (DepartmentIndexPage.FavoriteFeed.GetModel() == null)) + { + DepartmentModel tempModel = null; + + if ((tempModel = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_DepartmentFavoriteModel)) != null) + { + if (DepartmentIndexPage.FavoriteFeed == null) + { + DepartmentIndexPage.FavoriteFeed = new Feed.Departments.DepartmentFavoriteFeed(false); + } + + DepartmentIndexPage.FavoriteFeed.Model = tempModel; + this.isSourceSet = false; + } + } + + this.isNewInstance = false; + } + + if (this.isSourceSet == false) + { + this.ContentPanel.ItemsSource = DepartmentIndexPage.GetFavoriteFeed().GetModel().Faculties[0].Chairs; + this.isSourceSet = true; + } + } + + /// + /// Override the OnNavigatedFrom function. + /// + /// event args + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + base.OnNavigatedFrom(e); + + if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) + { + App.SaveToIsolatedStorage(Constants.IsolatedStorage_DepartmentFavoriteModel, DepartmentIndexPage.FavoriteFeed.GetModel()); + } } /// diff --git a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentIndexPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentIndexPage.xaml.cs index eab525bb..13d1848c 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentIndexPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentIndexPage.xaml.cs @@ -55,6 +55,44 @@ namespace CampusAppWP8.Pages.Departments DepartmentIndexPage.favorite.LoadData(); } + /// + /// Gets or sets the feed object. + /// + public static DepartmentFeed Feed + { + get + { + return DepartmentIndexPage.feed; + } + + set + { + if (value != DepartmentIndexPage.feed) + { + DepartmentIndexPage.feed = value; + } + } + } + + /// + /// Gets or sets the favorite feed object. + /// + public static DepartmentFavoriteFeed FavoriteFeed + { + get + { + return DepartmentIndexPage.favorite; + } + + set + { + if (DepartmentIndexPage.favorite != value) + { + DepartmentIndexPage.favorite = value; + } + } + } + /// /// Return the feed object of the departments. /// diff --git a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs index 17af2974..d0517b3a 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs @@ -12,6 +12,7 @@ namespace CampusAppWP8.Pages.Departments using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; + using CampusAppWP8.Model.Departments; using CampusAppWP8.Resources; using Microsoft.Phone.Controls; @@ -30,12 +31,19 @@ namespace CampusAppWP8.Pages.Departments /// private FrameworkElement lastClickedBtn = null; + /// + /// For checking of the instance is back from tombstone. + /// + private bool isNewInstance = false; + /// /// Initializes a new instance of the class. /// public DepartmentPage() { this.InitializeComponent(); + + this.isNewInstance = true; } /// @@ -47,6 +55,27 @@ namespace CampusAppWP8.Pages.Departments { base.OnNavigatedTo(e); + if (this.isNewInstance) + { + if ((DepartmentIndexPage.Feed == null) || (DepartmentIndexPage.Feed.GetModel() == null)) + { + DepartmentModel tempModel = null; + + if ((tempModel = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_DepartmentModel)) != null) + { + if (DepartmentIndexPage.Feed == null) + { + DepartmentIndexPage.Feed = new Feed.Departments.DepartmentFeed(false); + } + + DepartmentIndexPage.Feed.Model = tempModel; + this.isSourceSet = false; + } + } + + this.isNewInstance = false; + } + if (this.isSourceSet == false) { this.DepartmentPivot.ItemsSource = DepartmentIndexPage.GetFeed().GetModel().Faculties; @@ -72,6 +101,20 @@ namespace CampusAppWP8.Pages.Departments } } + /// + /// Override the OnNavigatedFrom function. + /// + /// event args + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + base.OnNavigatedFrom(e); + + if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) + { + App.SaveToIsolatedStorage(Constants.IsolatedStorage_DepartmentModel, DepartmentIndexPage.Feed.GetModel()); + } + } + /// /// On orientation changed. /// diff --git a/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs index ea0fe842..c215d227 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs @@ -8,11 +8,9 @@ namespace CampusAppWP8.Pages.Events { using System; - using System.Linq; using System.Windows.Navigation; using CampusAppWP8.Feed.Events; using CampusAppWP8.Resources; - using CampusAppWP8.Utility; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; @@ -48,6 +46,25 @@ namespace CampusAppWP8.Pages.Events EventIndexPage.eventFeed.LoadData(); } + /// + /// Gets or sets the feed object. + /// + public static EventFeed Feed + { + get + { + return EventIndexPage.eventFeed; + } + + set + { + if (EventIndexPage.eventFeed != value) + { + EventIndexPage.eventFeed = value; + } + } + } + /// /// Return the eventFeed object. /// diff --git a/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml.cs index 983da532..78a5493e 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml.cs @@ -13,11 +13,12 @@ namespace CampusAppWP8.Pages.Events using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; + using CampusAppWP8.Model.RSS; using CampusAppWP8.Resources; using CampusAppWP8.Utility; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; - + /// /// EventPage, where every event fees has his own PivotItem. /// @@ -33,6 +34,11 @@ namespace CampusAppWP8.Pages.Events /// private int lastSelectedIndex = -1; + /// + /// For checking if the instance is back from tombstone. + /// + private bool isNewInstance = false; + /// /// Initializes a new instance of the class. /// @@ -45,6 +51,8 @@ namespace CampusAppWP8.Pages.Events linkBtn.Text = AppResources.NewsLinkBtn; linkBtn.Click += new EventHandler(this.EventLink_Click); ApplicationBar.Buttons.Add(linkBtn); + + this.isNewInstance = true; } /// @@ -57,6 +65,27 @@ namespace CampusAppWP8.Pages.Events { base.OnNavigatedTo(e); + if (this.isNewInstance) + { + if ((EventIndexPage.GetEventFeed() == null) || (EventIndexPage.GetEventFeed().GetModel() == null)) + { + RSSViewModel tempModel = null; + + if ((tempModel = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_EventRSSModel)) != null) + { + if (EventIndexPage.GetEventFeed() == null) + { + EventIndexPage.Feed = new Feed.Events.EventFeed(false); + } + + EventIndexPage.Feed.Model = tempModel; + this.isSourceSet = false; + } + } + + this.isNewInstance = false; + } + // Set pivotitem Source if (this.isSourceSet == false) { @@ -90,6 +119,20 @@ namespace CampusAppWP8.Pages.Events } } + /// + /// Override the OnNavigatedFrom function. + /// + /// event args + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + base.OnNavigatedFrom(e); + + if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) + { + App.SaveToIsolatedStorage(Constants.IsolatedStorage_EventRSSModel, EventIndexPage.GetEventFeed().GetModel()); + } + } + /// /// Called when the index of the selected PivotItem is changed. /// Set the text Grid to visible and the WebBrowser to collapsed. diff --git a/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs index 36f6b63c..12232368 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs @@ -46,6 +46,25 @@ namespace CampusAppWP8.Pages.News NewsIndexPage.newsFeed.LoadData(); } + /// + /// Gets or sets the feed object. + /// + public static NewsFeed Feed + { + get + { + return NewsIndexPage.newsFeed; + } + + set + { + if (NewsIndexPage.newsFeed != value) + { + NewsIndexPage.newsFeed = value; + } + } + } + /// /// Return the newsFeed object. /// diff --git a/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs index 7bcd863e..089a71c6 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs @@ -13,6 +13,7 @@ namespace CampusAppWP8.Pages.News using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; + using CampusAppWP8.Model.RSS; using CampusAppWP8.Resources; using CampusAppWP8.Utility; using Microsoft.Phone.Controls; @@ -33,6 +34,11 @@ namespace CampusAppWP8.Pages.News /// private int lastSelectedIndex = -1; + /// + /// For checking if the instance is back from tombstone. + /// + private bool isNewInstance = false; + /// /// Initializes a new instance of the class. /// @@ -45,6 +51,8 @@ namespace CampusAppWP8.Pages.News linkBtn.Text = AppResources.NewsLinkBtn; linkBtn.Click += new EventHandler(this.NewsLink_Click); ApplicationBar.Buttons.Add(linkBtn); + + this.isNewInstance = true; } /// @@ -56,7 +64,28 @@ namespace CampusAppWP8.Pages.News protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); - + + if (this.isNewInstance) + { + if ((NewsIndexPage.Feed == null) || (NewsIndexPage.Feed.GetModel() == null)) + { + RSSViewModel tempModel = null; + + if ((tempModel = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_NewsRSSModel)) != null) + { + if (NewsIndexPage.Feed == null) + { + NewsIndexPage.Feed = new Feed.News.NewsFeed(false); + } + + NewsIndexPage.Feed.Model = tempModel; + this.isSourceSet = false; + } + } + + this.isNewInstance = false; + } + // Set pivotitem Source if (this.isSourceSet == false) { @@ -83,6 +112,20 @@ namespace CampusAppWP8.Pages.News } } + /// + /// Overrides the OnNavigatedFrom function. + /// + /// event args + protected override void OnNavigatedFrom(NavigationEventArgs e) + { + base.OnNavigatedFrom(e); + + if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) + { + App.SaveToIsolatedStorage(Constants.IsolatedStorage_NewsRSSModel, NewsIndexPage.GetNewsFeed().GetModel()); + } + } + /// /// Called when the index of the selected PivotItem is changed. /// Set the text Grid to visible and the WebBrowser to collapsed. diff --git a/CampusAppWP8/CampusAppWP8/Pages/Openinghours/OpeninghoursPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Openinghours/OpeninghoursPage.xaml.cs index b16206ed..975de1f7 100644 --- a/CampusAppWP8/CampusAppWP8/Pages/Openinghours/OpeninghoursPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/Pages/Openinghours/OpeninghoursPage.xaml.cs @@ -7,11 +7,13 @@ //---------------------------------------------------------------------- namespace CampusAppWP8.Pages.Openinghours { + using System; using System.Windows.Navigation; using CampusAppWP8.Feed.Openinghours; + using CampusAppWP8.Model.Openinghours; + using CampusAppWP8.Resources; using Microsoft.Phone.Controls; - using System; - + /// /// Opening hours page. /// @@ -24,6 +26,11 @@ namespace CampusAppWP8.Pages.Openinghours /// private OpeninghoursFeed feed = null; + /// + /// for checking if the instance is new or a tombstone. + /// + private bool isNewInstance = false; + #endregion #region Constructor @@ -41,6 +48,8 @@ namespace CampusAppWP8.Pages.Openinghours this.feed.onLoaded += new OpeninghoursFeed.OnLoaded(this.FeedIsReady); this.feed.LoadData(); } + + this.isNewInstance = true; } #endregion @@ -62,6 +71,21 @@ namespace CampusAppWP8.Pages.Openinghours this.ProgressBar.Visibility = System.Windows.Visibility.Visible; } */ + if (this.isNewInstance) + { + if ((this.feed == null) || (this.feed.GetModel() == null)) + { + OpeninghoursModel tempModel = null; + + if ((tempModel = App.LoadFromIsolatedStorage(Constants.IsolatedStorage_OpeninghoursModel)) != null) + { + this.feed.Model = tempModel; + this.FeedIsReady(); + } + } + + this.isNewInstance = false; + } } /// @@ -71,6 +95,11 @@ namespace CampusAppWP8.Pages.Openinghours protected override void OnNavigatedFrom(NavigationEventArgs e) { this.feed.SaveData(); + + if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back) + { + App.SaveToIsolatedStorage(Constants.IsolatedStorage_OpeninghoursModel, this.feed.GetModel()); + } } // protected @@ -82,18 +111,11 @@ namespace CampusAppWP8.Pages.Openinghours /// Will be execute if the feed is ready. /// private void FeedIsReady() - { - this.SetupInstitutionList(); - //this.ProgressBar.Visibility = System.Windows.Visibility.Collapsed; - //this.feed.SaveData(true); - } - - /// - /// Setup the institution list. - /// - private void SetupInstitutionList() { this.InstitutionPanel.ItemsSource = this.feed.Model.Institutions; + + // this.ProgressBar.Visibility = System.Windows.Visibility.Collapsed; + // this.feed.SaveData(true); } /// @@ -104,11 +126,13 @@ namespace CampusAppWP8.Pages.Openinghours /// event args private void OpenHoursForceUpdate_Click(object sender, EventArgs e) { - //this.ProgressBar.Visibility = System.Windows.Visibility.Visible; + // this.ProgressBar.Visibility = System.Windows.Visibility.Visible; this.feed.ForceWebUpdate(); } + // private #endregion + // Method #endregion } diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs index e79b1eff..03c0063d 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs +++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs @@ -150,6 +150,24 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die IsolatedStorage_DepartmentModel ähnelt. + /// + public static string IsolatedStorage_DepartmentModel { + get { + return ResourceManager.GetString("IsolatedStorage_DepartmentModel", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die IsolatedStorage_EventRSSModel ähnelt. + /// + public static string IsolatedStorage_EventRSSModel { + get { + return ResourceManager.GetString("IsolatedStorage_EventRSSModel", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die LectureModel ähnelt. /// @@ -168,6 +186,24 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die IsolatedStorage_NewsRSSModel ähnelt. + /// + public static string IsolatedStorage_NewsRSSModel { + get { + return ResourceManager.GetString("IsolatedStorage_NewsRSSModel", resourceCulture); + } + } + + /// + /// Sucht eine lokalisierte Zeichenfolge, die IsolatedStorage_OpeninghoursModel ähnelt. + /// + public static string IsolatedStorage_OpeninghoursModel { + get { + return ResourceManager.GetString("IsolatedStorage_OpeninghoursModel", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die lsf_auszug ähnelt. /// diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx index 2e3354f7..af5239ef 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx +++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx @@ -251,9 +251,6 @@ MensaFeed.xml - - - EventsFeed.xml EventsFeed.xml @@ -276,4 +273,16 @@ http://www.tu-cottbus.de/oracle-gateway/php/rss2feed_aktuelles.php + + IsolatedStorage_DepartmentModel + + + IsolatedStorage_EventRSSModel + + + IsolatedStorage_NewsRSSModel + + + IsolatedStorage_OpeninghoursModel + \ No newline at end of file