diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj index 15d058d4..000fbfcb 100644 --- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj +++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj @@ -123,7 +123,7 @@ NewsPage.xaml - + RSSNewsTemplate.xaml diff --git a/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs index 4f6aa3de..259a25eb 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs +++ b/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs @@ -1,4 +1,5 @@ -//------------------------------------------------------------------------------ +<<<<<<< HEAD +//------------------------------------------------------------------------------ // // Dieser Code wurde von einem Tool generiert. // Laufzeitversion:4.0.30319.18046 @@ -294,6 +295,15 @@ namespace CampusAppWP8.Resources { } } + /// + /// Sucht eine lokalisierte Zeichenfolge, die Link ähnelt. + /// + public static string NewsLinkBtn { + get { + return ResourceManager.GetString("NewsLinkBtn", resourceCulture); + } + } + /// /// Sucht eine lokalisierte Zeichenfolge, die Öffnungszeiten ähnelt. /// @@ -412,3 +422,5 @@ namespace CampusAppWP8.Resources { } } } + + diff --git a/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx b/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx index 0e96f9f4..9eab1638 100644 --- a/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx +++ b/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx @@ -230,10 +230,10 @@ zur Übersicht - - Fakultät - - - Lehrstühle - + + Fakultät + + + Lehrstühle + \ No newline at end of file diff --git a/CampusAppWP8/CampusAppWP8/pages/news/RSSItem.cs b/CampusAppWP8/CampusAppWP8/pages/RSSItem.cs similarity index 80% rename from CampusAppWP8/CampusAppWP8/pages/news/RSSItem.cs rename to CampusAppWP8/CampusAppWP8/pages/RSSItem.cs index af72a0df..0a5b7124 100644 --- a/CampusAppWP8/CampusAppWP8/pages/news/RSSItem.cs +++ b/CampusAppWP8/CampusAppWP8/pages/RSSItem.cs @@ -1,91 +1,112 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace CampusAppWP8.pages.news -{ - class RSSItem - { - private string title; - private string text; - private DateTime timestamp; - - public string Title - { - get { return this.title; } - set { this.title = value; } - } - - public string Text - { - get { return this.text; } - set { this.text = HTMLUnicodeToString(value); } - } - - public string Timestamp - { - get { return this.timestamp.ToString("R"); } - set { this.timestamp = DateTime.Parse(value); } - } - - public string Date - { - get { return String.Format("{0:ddd, dd.MM.yyyy}", this.timestamp); } - } - - public string Time - { - get { return String.Format("{0:h:mm} Uhr", this.timestamp); } - } - - private string HTMLUnicodeToString(string htmluni) - { - StringBuilder retValue = new StringBuilder(); - - for(int i = 0; i < htmluni.Length; i++) - { - switch (htmluni[i]) - { - case '&': - { - int startOff = i + 2; - int endOff = htmluni.IndexOf(';', startOff); - string sub = htmluni.Substring(startOff, endOff - startOff); - int cVal = int.Parse(sub); - - switch (cVal) - { - case 128: - retValue.Append('€'); - break; - - default: - retValue.Append((char)cVal); - break; - } - - i = endOff; - } - break; - case '<': - { - i = htmluni.IndexOf('>', i); - } - break; - case '\t': - break; - - default: - { - retValue.Append(htmluni[i]); - } - break; - } - } - - return retValue.ToString(); - } - } -} +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CampusAppWP8.pages.news +{ + class RSSItem + { + private string title; + private string text; + private DateTime timestamp; + private string link; + + public string Title + { + get { return this.title; } + set { this.title = value; } + } + + public string Text + { + get { return this.text; } + set { this.text = HTMLUnicodeToString(value); } + } + + public string Timestamp + { + get { return this.timestamp.ToString("R"); } + set { this.timestamp = DateTime.Parse(value); } + } + + public DateTime DTTimestamp + { + get { return this.timestamp; } + set { this.timestamp = value; } + } + + public string Date + { + get { return String.Format("{0:ddd, dd.MM.yyyy}", this.timestamp); } + } + + public string Time + { + get { return String.Format("{0:h:mm} Uhr", this.timestamp); } + } + + public string Link + { + get { return this.link; } + set { this.link = value; } + } + + private string HTMLUnicodeToString(string htmluni) + { + StringBuilder retValue = new StringBuilder(); + + for(int i = 0; i < htmluni.Length; i++) + { + switch (htmluni[i]) + { + case '&': + { + int startOff = i + 2; + int endOff = htmluni.IndexOf(';', startOff); + string sub = htmluni.Substring(startOff, endOff - startOff); + int cVal = int.Parse(sub); + + switch (cVal) + { + case 128: + retValue.Append('€'); + break; + + default: + retValue.Append((char)cVal); + break; + } + + i = endOff; + } + break; + case '<': + { + i = htmluni.IndexOf('>', i); + } + break; + case '\t': + break; + + default: + { + retValue.Append(htmluni[i]); + } + break; + } + } + + return retValue.ToString(); + } + + public static int CompareTimeStamp(RSSItem item1, RSSItem item2) + { + if (item1.DTTimestamp > item2.DTTimestamp) + return -1; + else + return 0; + } + } +} diff --git a/CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml b/CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml new file mode 100644 index 00000000..f9fff42c --- /dev/null +++ b/CampusAppWP8/CampusAppWP8/pages/events/EventPage.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ 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 37094ce9..b653acbb 100644 --- a/CampusAppWP8/CampusAppWP8/pages/news/NewsPage.xaml.cs +++ b/CampusAppWP8/CampusAppWP8/pages/news/NewsPage.xaml.cs @@ -1,106 +1,137 @@ -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; - -namespace CampusAppWP8.pages.news -{ - public partial class NewsPage : PhoneApplicationPage - { - List itemList; - - public NewsPage() - { - 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_aktuelles.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; - - this.itemList.Add(rss); - - - Button btn = new Button(); - btn.Name = "NewsRowAppButton" + i; - btn.Content = rss.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 += NewsRowAppButton_Click; - btn.Tag = i; - - PivotItem newPivItem = new PivotItem(); - newPivItem.Name = "NewsPivot" + i; - newPivItem.Header = rss.Date; - - RSSNewsTemplate pvContent = new RSSNewsTemplate(); - pvContent.NewsHeadline.Text = rss.Title; - pvContent.NewsText.Text = rss.Text; - pvContent.NewsHome.Click += NewsHome_Click; - - newPivItem.Content = pvContent; - NewsPivot.Items.Add(newPivItem); - - ButtonPanel.Items.Add(btn); - - i++; - } - } - } - - // Button Functions - private void NewsRowAppButton_Click(object sender, RoutedEventArgs e) - { - Button btn = (Button)sender; - NewsPivot.SelectedIndex = (int)btn.Tag + 1; - } - - private void NewsHome_Click(object sender, RoutedEventArgs e) - { - NewsPivot.SelectedIndex = 0; - } - } +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; + + +namespace CampusAppWP8.pages.news +{ + public partial class NewsPage : PhoneApplicationPage + { + List itemList; + + public NewsPage() + { + 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_aktuelles.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; + + this.itemList.Add(rss); + + + Button btn = new Button(); + btn.Name = "NewsRowAppButton" + i; + btn.Content = rss.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 += NewsRowAppButton_Click; + btn.Tag = i; + + PivotItem newPivItem = new PivotItem(); + newPivItem.Name = "NewsPivot" + i; + newPivItem.Header = rss.Date; + + RSSNewsTemplate pvContent = new RSSNewsTemplate(); + 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); + + ButtonPanel.Items.Add(btn); + + i++; + } + } + } + + // Button Functions + private void NewsRowAppButton_Click(object sender, RoutedEventArgs e) + { + Button btn = (Button)sender; + NewsPivot.SelectedIndex = (int)btn.Tag + 1; + } + + private void NewsHome_Click(object sender, RoutedEventArgs e) + { + 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 64756342..3b9566dc 100644 --- a/CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml +++ b/CampusAppWP8/CampusAppWP8/pages/news/RSSNewsTemplate.xaml @@ -1,3 +1,34 @@ +<<<<<<< HEAD + + + + + + + + + + + + + +