From c60fb42122e6361a5bd39f91009f89e6cae61fe4 Mon Sep 17 00:00:00 2001 From: Christian Fiedler Date: Fri, 31 May 2013 18:36:59 +0200 Subject: [PATCH] added events, sort events by date, added link in news and events --- CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj | 13 +- .../Resources/AppResources.Designer.cs | 9 ++ .../CampusAppWP8/Resources/AppResources.resx | 3 + .../CampusAppWP8/pages/{news => }/RSSItem.cs | 21 +++ .../CampusAppWP8/pages/events/EventPage.xaml | 27 ++++ .../pages/events/EventPage.xaml.cs | 128 ++++++++++++++++++ .../CampusAppWP8/pages/news/NewsPage.xaml.cs | 31 +++++ .../pages/news/RSSNewsTemplate.xaml | 1 + 8 files changed, 229 insertions(+), 4 deletions(-) rename CampusAppWP8/CampusAppWP8/pages/{news => }/RSSItem.cs (80%) create mode 100644 CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml create mode 100644 CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml.cs diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index 23dd80f4..cd225cb6 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -97,10 +97,13 @@ MainPage.xaml + + EventPage.xaml + NewsPage.xaml - + RSSNewsTemplate.xaml @@ -129,6 +132,10 @@ MSBuild:Compile Designer + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -187,9 +194,7 @@ ..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml.cs b/CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml.cs new file mode 100644 index 00000000..ebd2273b --- /dev/null +++ b/CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Navigation; +using Microsoft.Phone.Controls; +using Microsoft.Phone.Shell; +using System.Xml.Linq; +using System.Xml; +using System.IO; +using Microsoft.Phone.Tasks; + +// Should be CampusAppWP8.pages (for RSSItem). +using CampusAppWP8.pages.news; + + +namespace CampusAppWP8.pages.events +{ + public partial class EventPage : PhoneApplicationPage + { + List itemList; + + public EventPage() + { + InitializeComponent(); + } + + protected override void OnNavigatedTo(NavigationEventArgs e) + { + this.itemList = new List(); + this.itemList.Clear(); + + WebClient wc = new WebClient(); + wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(WC_DownloadStringCompleted); + + wc.DownloadStringAsync(new Uri("http://www.tu-cottbus.de/oracle-gateway/php/rss2feed_veranstaltungen.php")); + } + + private void WC_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) + { + if (e.Error != null) + return; + + int i = 0; + + XElement xmlitems = XElement.Parse(e.Result); + + List elements = xmlitems.Descendants("item").ToList(); + + + foreach (XElement rssItem in elements) + { + if(i < 12) + { + RSSItem rss = new RSSItem(); + + rss.Title = rssItem.Element("title").Value; + rss.Text = rssItem.Element("description").Value; + rss.Timestamp = rssItem.Element("pubDate").Value; + rss.Link = rssItem.Element("link").Value; + + this.itemList.Add(rss); + + i++; + } + } + + this.itemList.Sort(RSSItem.CompareTimeStamp); + + for(i = 0; i < this.itemList.Count(); i++) + { + Button btn = new Button(); + btn.Name = "EventRowAppButton" + i; + btn.Content = this.itemList[i].Title; + btn.BorderBrush = null; + btn.Background = null; + btn.VerticalContentAlignment = VerticalAlignment.Stretch; + btn.HorizontalContentAlignment = HorizontalAlignment.Stretch; + btn.BorderThickness = new Thickness(0); + btn.Padding = new Thickness(0); + btn.Click += EventRowAppButton_Click; + btn.Tag = i; + + PivotItem newPivItem = new PivotItem(); + newPivItem.Name = "EventPivot" + i; + newPivItem.Header = this.itemList[i].Date; + + RSSNewsTemplate pvContent = new RSSNewsTemplate(); + pvContent.NewsHeadline.Text = this.itemList[i].Title; + pvContent.NewsText.Text = this.itemList[i].Text; + pvContent.NewsHome.Click += EventHome_Click; + pvContent.NewsLink.Click += EventLink_Click; + pvContent.NewsLink.Tag = i; + + if (this.itemList[i].Link.Length == 0) + pvContent.NewsLink.Visibility = Visibility.Collapsed; + + newPivItem.Content = pvContent; + EventPivot.Items.Add(newPivItem); + + ButtonPanel.Items.Add(btn); + } + } + + // + private void EventRowAppButton_Click(object sender, RoutedEventArgs e) + { + Button btn = (Button)sender; + EventPivot.SelectedIndex = (int)btn.Tag + 1; + } + + private void EventHome_Click(object sender, RoutedEventArgs e) + { + EventPivot.SelectedIndex = 0; + } + + private void EventLink_Click(object sender, RoutedEventArgs e) + { + Button btn = (Button)sender; + + WebBrowserTask webBrowserTask = new WebBrowserTask(); + webBrowserTask.Uri = new Uri(this.itemList[(int)btn.Tag].Link, UriKind.Absolute); + webBrowserTask.Show(); + } + } +} diff --git a/CampusAppWP8/CampusAppWP8/pages/news/NewsPage.xaml.cs b/CampusAppWP8/CampusAppWP8/pages/news/NewsPage.xaml.cs index b98bc8e0..b653acbb 100644 --- a/CampusAppWP8/CampusAppWP8/pages/news/NewsPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/pages/news/NewsPage.xaml.cs @@ -10,6 +10,8 @@ using Microsoft.Phone.Shell; using System.Xml.Linq; using System.Xml; using System.IO; +using Microsoft.Phone.Tasks; + namespace CampusAppWP8.pages.news { @@ -80,6 +82,26 @@ namespace CampusAppWP8.pages.news pvContent.NewsHeadline.Text = rss.Title; pvContent.NewsText.Text = rss.Text; pvContent.NewsHome.Click += NewsHome_Click; + pvContent.NewsLink.Click += NewsLink_Click; + pvContent.NewsLink.Tag = i; + /* + { + double height = pvContent.NewsHeadline.Height * 0.99; + double width = pvContent.NewsHeadline.Width * 0.99; + + Font tryFont = pvContent.NewsHeadline.Font; + Size tempSize = TextRenderer.MeasureText(pvContent.NewsHeadline.Text, tryFont); + + float heightRatio = height / tempSize.Height; + float widthRatio = width / tempSize.Width; + + tryFont = new Font(tryFont.FontFamily, tryFont.Size * Math.Min(widthRatio, heightRatio), tryFont.Style); + + pvContent.NewsHeadline.Font = tryFont; + } + */ + if ((rss.Link == null) || (rss.Link.Length == 0)) + pvContent.NewsLink.Visibility = Visibility.Collapsed; newPivItem.Content = pvContent; NewsPivot.Items.Add(newPivItem); @@ -102,5 +124,14 @@ namespace CampusAppWP8.pages.news { NewsPivot.SelectedIndex = 0; } + + private void NewsLink_Click(object sender, RoutedEventArgs e) + { + Button btn = (Button)sender; + + WebBrowserTask webBrowserTask = new WebBrowserTask(); + webBrowserTask.Uri = new Uri(this.itemList[(int)btn.Tag].Link, UriKind.Absolute); + webBrowserTask.Show(); + } } } \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml b/CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml index 0266db8a..cded6e06 100644 --- a/CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml +++ b/CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml @@ -24,5 +24,6 @@