added events, sort events by date, added link in news and events

This commit is contained in:
Christian Fiedler
2013-05-31 18:36:59 +02:00
parent 3d3e507849
commit c60fb42122
8 changed files with 229 additions and 4 deletions

View File

@@ -97,10 +97,13 @@
<Compile Include="MainPage.xaml.cs">
<DependentUpon>MainPage.xaml</DependentUpon>
</Compile>
<Compile Include="pages\events\EventPage.xaml.cs">
<DependentUpon>EventPage.xaml</DependentUpon>
</Compile>
<Compile Include="pages\news\NewsPage.xaml.cs">
<DependentUpon>NewsPage.xaml</DependentUpon>
</Compile>
<Compile Include="pages\news\RSSItem.cs" />
<Compile Include="pages\RSSItem.cs" />
<Compile Include="pages\news\RSSNewsTemplate.xaml.cs">
<DependentUpon>RSSNewsTemplate.xaml</DependentUpon>
</Compile>
@@ -129,6 +132,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</DesignData>
<Page Include="pages\events\EventPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="pages\news\NewsPage.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -187,9 +194,7 @@
<HintPath>..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Folder Include="pages\events\" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).$(TargetFrameworkVersion).Overrides.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\$(TargetFrameworkIdentifier)\$(TargetFrameworkVersion)\Microsoft.$(TargetFrameworkIdentifier).CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.

View File

@@ -177,6 +177,15 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Link ähnelt.
/// </summary>
public static string NewsLinkBtn {
get {
return ResourceManager.GetString("NewsLinkBtn", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Öffnungszeiten ähnelt.
/// </summary>

View File

@@ -179,4 +179,7 @@
<data name="NewsHomeBtn" xml:space="preserve">
<value>zur Übersicht</value>
</data>
<data name="NewsLinkBtn" xml:space="preserve">
<value>Link</value>
</data>
</root>

View File

@@ -11,6 +11,7 @@ namespace CampusAppWP8.pages.news
private string title;
private string text;
private DateTime timestamp;
private string link;
public string Title
{
@@ -30,6 +31,12 @@ namespace CampusAppWP8.pages.news
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); }
@@ -40,6 +47,12 @@ namespace CampusAppWP8.pages.news
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();
@@ -87,5 +100,13 @@ namespace CampusAppWP8.pages.news
return retValue.ToString();
}
public static int CompareTimeStamp(RSSItem item1, RSSItem item2)
{
if (item1.DTTimestamp > item2.DTTimestamp)
return -1;
else
return 0;
}
}
}

View File

@@ -0,0 +1,27 @@
<phone:PhoneApplicationPage
x:Class="CampusAppWP8.pages.events.EventPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
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"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot ist das Stammraster, in dem alle anderen Seiteninhalte platziert werden-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<!--Pivotsteuerelement-->
<phone:Pivot x:Name="EventPivot" Title="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}">
<!--Pivotelement eins-->
<phone:PivotItem Name="EventPivotHome" Header="{Binding Path=LocalizedResources.EventApp_Title, Source={StaticResource LocalizedStrings}}">
<ListBox x:Name="ButtonPanel" Grid.Row="1">
</ListBox>
</phone:PivotItem>
</phone:Pivot>
</Grid>
</phone:PhoneApplicationPage>

View File

@@ -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<RSSItem> itemList;
public EventPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.itemList = new List<RSSItem>();
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<XElement> 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();
}
}
}

View File

@@ -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();
}
}
}

View File

@@ -24,5 +24,6 @@
<TextBlock x:Name="NewsText" Text="(text)" Height="Auto" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="24" />
</ScrollViewer>
<Button Name="NewsHome" Content="{Binding Path=LocalizedResources.NewsHomeBtn, Source={StaticResource LocalizedStrings}}" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Left" />
<Button Name="NewsLink" Content="{Binding Path=LocalizedResources.NewsLinkBtn, Source={StaticResource LocalizedStrings}}" Grid.Row="2" VerticalAlignment="Bottom" HorizontalAlignment="Right" />
</Grid>
</UserControl>