diff --git a/CampusAppWP8/CampusAppWP8/App.xaml b/CampusAppWP8/CampusAppWP8/App.xaml
index 99ad2874..7f65fb63 100644
--- a/CampusAppWP8/CampusAppWP8/App.xaml
+++ b/CampusAppWP8/CampusAppWP8/App.xaml
@@ -1,20 +1,21 @@
+ xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
+ x:Class="CampusAppWP8.App"
+ >
-
+
-
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/App.xaml.cs b/CampusAppWP8/CampusAppWP8/App.xaml.cs
index d13894e8..00d78264 100644
--- a/CampusAppWP8/CampusAppWP8/App.xaml.cs
+++ b/CampusAppWP8/CampusAppWP8/App.xaml.cs
@@ -7,29 +7,14 @@ using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using CampusAppWP8.Resources;
-using CampusAppWP8.ViewModels;
+using System.IO.IsolatedStorage;
+
namespace CampusAppWP8
{
public partial class App : Application
{
- private static MainViewModel viewModel = null;
- ///
- /// Eine statisches ViewModel, an das die Ansichten gebunden werden.
- ///
- /// MainViewModel-Objekt.
- public static MainViewModel ViewModel
- {
- get
- {
- // Erstellung des Ansichtsmodells verzögern bis erforderlich
- if (viewModel == null)
- viewModel = new MainViewModel();
-
- return viewModel;
- }
- }
///
/// Bietet einen einfachen Zugriff auf den Stammframe der Phone-Anwendung.
@@ -75,6 +60,37 @@ namespace CampusAppWP8
}
}
+ ///
+ /// Method save any object to the IsolatedStorage
+ ///
+ /// key of the object
+ /// value of the object, if value == null => remove key
+ public static void SaveToIsolatedStorage(string key, T value)
+ {
+ IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings;
+ isolatedStore.Remove(key);
+ if (value != null)
+ {
+ isolatedStore.Add(key, value);
+ }
+
+ isolatedStore.Save();
+ }
+
+ ///
+ /// Method load any object to the IsolatedStorage
+ ///
+ /// key of the object
+ public static T LoadFromIsolatedStorage(string key)
+ {
+ IsolatedStorageSettings isolatedStore = IsolatedStorageSettings.ApplicationSettings;
+
+ if(isolatedStore.Contains(key)) {
+ object value = isolatedStore[key];
+ return (T)value;
+ }
+ return default(T);
+ }
// Code, der beim Starten der Anwendung ausgeführt werden soll (z. B. über "Start")
// Dieser Code wird beim Reaktivieren der Anwendung nicht ausgeführt
private void Application_Launching(object sender, LaunchingEventArgs e)
@@ -85,11 +101,7 @@ namespace CampusAppWP8
// Dieser Code wird beim ersten Starten der Anwendung nicht ausgeführt
private void Application_Activated(object sender, ActivatedEventArgs e)
{
- // Sicherstellen, dass der Anwendungszustand ordnungsgemäß wiederhergestellt wird
- if (!App.ViewModel.IsDataLoaded)
- {
- App.ViewModel.LoadData();
- }
+
}
// Code, der ausgeführt werden soll, wenn die Anwendung deaktiviert wird (in den Hintergrund gebracht wird)
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/campus_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/campus_159_dark.png
new file mode 100644
index 00000000..e019ac39
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/campus_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/campus_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/campus_159_light.png
new file mode 100644
index 00000000..cae8735c
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/campus_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/departments_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/departments_159_dark.png
new file mode 100644
index 00000000..2aeac69f
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/departments_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/departments_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/departments_159_light.png
new file mode 100644
index 00000000..381e22bc
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/departments_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/homework_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/homework_159_dark.png
new file mode 100644
index 00000000..d118e23d
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/homework_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/homework_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/homework_159_light.png
new file mode 100644
index 00000000..5ecf6523
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/homework_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/lectures_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/lectures_159_dark.png
new file mode 100644
index 00000000..05a56ba2
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/lectures_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/lectures_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/lectures_159_light.png
new file mode 100644
index 00000000..20763277
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/lectures_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/link_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/link_159_dark.png
new file mode 100644
index 00000000..0491962d
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/link_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/link_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/link_159_light.png
new file mode 100644
index 00000000..da0bca39
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/link_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/mensa_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/mensa_159_dark.png
new file mode 100644
index 00000000..f1df7318
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/mensa_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/mensa_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/mensa_159_light.png
new file mode 100644
index 00000000..ceefcd59
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/mensa_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/news_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/news_159_dark.png
new file mode 100644
index 00000000..42a50354
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/news_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/news_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/news_159_light.png
new file mode 100644
index 00000000..2a7c0fa8
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/news_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/openhours_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/openhours_159_dark.png
new file mode 100644
index 00000000..68e82d0d
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/openhours_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/openhours_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/openhours_159_light.png
new file mode 100644
index 00000000..8bc66811
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/openhours_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/schedule_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/schedule_159_dark.png
new file mode 100644
index 00000000..266cd74b
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/schedule_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/schedule_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/schedule_159_light.png
new file mode 100644
index 00000000..9807c694
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/schedule_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/student_council_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/student_council_159_dark.png
new file mode 100644
index 00000000..c168e650
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/student_council_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/student_council_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/student_council_159_light.png
new file mode 100644
index 00000000..7c0cfb2d
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/student_council_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/webmail_159_dark.png b/CampusAppWP8/CampusAppWP8/Assets/icons/webmail_159_dark.png
new file mode 100644
index 00000000..295a60ee
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/webmail_159_dark.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/icons/webmail_159_light.png b/CampusAppWP8/CampusAppWP8/Assets/icons/webmail_159_light.png
new file mode 100644
index 00000000..0f27f6fc
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/icons/webmail_159_light.png differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/psd/holo_optionsbuttons.psd b/CampusAppWP8/CampusAppWP8/Assets/psd/holo_optionsbuttons.psd
new file mode 100644
index 00000000..53796ff0
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/psd/holo_optionsbuttons.psd differ
diff --git a/CampusAppWP8/CampusAppWP8/Assets/psd/iconbutton_effects2.psd b/CampusAppWP8/CampusAppWP8/Assets/psd/iconbutton_effects2.psd
new file mode 100644
index 00000000..4b15310c
Binary files /dev/null and b/CampusAppWP8/CampusAppWP8/Assets/psd/iconbutton_effects2.psd differ
diff --git a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj
index 65eb7650..19f0fb80 100644
--- a/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj
+++ b/CampusAppWP8/CampusAppWP8/CampusAppWP8.csproj
@@ -25,6 +25,7 @@
true
11.0
true
+ 5.0.40218.0
true
@@ -36,6 +37,8 @@
true
prompt
4
+
+
pdbonly
@@ -94,8 +97,66 @@
App.xaml
-
- MainPage.xaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CampusMapPage.xaml
+
+
+
+
+ DepartmentPage.xaml
+
+
+
+ EventIndexPage.xaml
+
+
+ EventPage.xaml
+
+
+ LecturePage.xaml
+
+
+
+
+
+ ModulWebPage.xaml
+
+
+ ResultDetailPage.xaml
+
+
+ ResultPage.xaml
+
+
+ MensaPage.xaml
+
+
+
+ NewsIndexPage.xaml
+
+
+ NewsPage.xaml
+
+
+
+ StartPage.xaml
+
+
+ WebmailPage.xaml
@@ -103,24 +164,82 @@
True
AppResources.resx
-
-
+
+ True
+ True
+ Constants.resx
+
+
+
+
+
+
+
+
+
+
Designer
MSBuild:Compile
-
+
Designer
MSBuild:Compile
-
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
MSBuild:Compile
Designer
-
+
+
+ MSBuild:Compile
+ Designer
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+ MSBuild:Compile
+ Designer
+
+
+
@@ -132,6 +251,28 @@
PreserveNewest
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
PreserveNewest
@@ -157,13 +298,20 @@
PublicResXFileCodeGenerator
AppResources.Designer.cs
+ Designer
+
+
+ ResXFileCodeGenerator
+ Constants.Designer.cs
+
..\packages\WPtoolkit.4.2012.10.30\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/MainPage.xaml.cs b/CampusAppWP8/CampusAppWP8/MainPage.xaml.cs
deleted file mode 100644
index f92d1b7e..00000000
--- a/CampusAppWP8/CampusAppWP8/MainPage.xaml.cs
+++ /dev/null
@@ -1,53 +0,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 CampusAppWP8.Resources;
-
-namespace CampusAppWP8
-{
- public partial class MainPage : PhoneApplicationPage
- {
- // Konstruktor
- public MainPage()
- {
- InitializeComponent();
-
- // Datenkontext des Listenfeldsteuerelements auf die Beispieldaten festlegen
- DataContext = App.ViewModel;
-
- // Beispielcode zur Lokalisierung der ApplicationBar
- //BuildLocalizedApplicationBar();
- }
-
- // Daten für die ViewModel-Elemente laden
- protected override void OnNavigatedTo(NavigationEventArgs e)
- {
- if (!App.ViewModel.IsDataLoaded)
- {
- App.ViewModel.LoadData();
- }
- }
-
- // Beispielcode zur Erstellung einer lokalisierten ApplicationBar
- //private void BuildLocalizedApplicationBar()
- //{
- // // ApplicationBar der Seite einer neuen Instanz von ApplicationBar zuweisen
- // ApplicationBar = new ApplicationBar();
-
- // // Eine neue Schaltfläche erstellen und als Text die lokalisierte Zeichenfolge aus AppResources zuweisen.
- // ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
- // appBarButton.Text = AppResources.AppBarButtonText;
- // ApplicationBar.Buttons.Add(appBarButton);
-
- // // Ein neues Menüelement mit der lokalisierten Zeichenfolge aus AppResources erstellen
- // ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
- // ApplicationBar.MenuItems.Add(appBarMenuItem);
- //}
- }
-}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Model/Departments/ChairModel.cs b/CampusAppWP8/CampusAppWP8/Model/Departments/ChairModel.cs
new file mode 100644
index 00000000..c98aadc2
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Departments/ChairModel.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Departments
+{
+ ///
+ /// Class to hold information about a professorship chair.
+ ///
+ public class ChairModel : BaseModel
+ {
+ private string name_de; // german name of the chair
+ private string url; // link-url to the chair homepage
+ private string name_en; // english name of the chair
+
+ ///
+ /// Default Constructor. Set every class variable to default value.
+ ///
+ public ChairModel()
+ {
+ this.name_de = String.Empty;
+ this.name_en = String.Empty;
+ this.url = String.Empty;
+ }
+
+ ///
+ /// Constructor. Set the german and english name.
+ ///
+ /// Name of the professorship chair.
+ public ChairModel(string name)
+ {
+ this.name_de = name;
+ this.name_en = name;
+ this.url = String.Empty;
+ }
+
+ ///
+ /// Set or return the german name of the chair.
+ ///
+ [XmlAttribute("name_de")]
+ public string Name_DE
+ {
+ get { return this.name_de; }
+ set
+ {
+ if (value != this.name_de)
+ {
+ this.name_de = value;
+ NotifyPropertyChanged("chair");
+ }
+ }
+ }
+
+ ///
+ /// Set or return the english name of the chair.
+ ///
+ [XmlAttribute("name_en")]
+ public string Name_EN
+ {
+ get { return this.name_en; }
+ set
+ {
+ if (value != this.name_en)
+ {
+ this.name_en = value;
+ NotifyPropertyChanged("chair");
+ }
+ }
+ }
+
+ ///
+ /// Set or return the url of the chair homepage.
+ ///
+ [XmlAttribute("url")]
+ public string Url
+ {
+ get { return this.url; }
+ set
+ {
+ if (value != this.url)
+ {
+ this.url = value;
+ NotifyPropertyChanged("chair");
+ }
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Departments/DepartmentModel.cs b/CampusAppWP8/CampusAppWP8/Model/Departments/DepartmentModel.cs
new file mode 100644
index 00000000..ab547308
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Departments/DepartmentModel.cs
@@ -0,0 +1,86 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Departments
+{
+ public class DepartmentModel : BaseModel
+ {
+ [XmlElement("chair")]
+ public ObservableCollection _chairs { get; set; }
+
+ private string _name = "d_mod";
+ private Visibility visible;
+
+ public DepartmentModel()
+ {
+ this.visible = Visibility.Collapsed;
+ this.Chairs = new ObservableCollection();
+ //this.LoadData();
+ }
+
+ public DepartmentModel(string name)
+ {
+ this.visible = Visibility.Collapsed;
+ _name = name;
+ this.Chairs = new ObservableCollection();
+ //this.LoadData();
+ }
+
+ public void LoadData()
+ {
+ this.Chairs.Add(new ChairModel("LS 1"));
+ this.Chairs.Add(new ChairModel("LS 2"));
+ this.Chairs.Add(new ChairModel("LS 3"));
+ this.Chairs.Add(new ChairModel("LS 4"));
+ }
+
+ public ObservableCollection Chairs
+ {
+ get
+ {
+ return _chairs;
+ }
+ set
+ {
+ if (value != _chairs)
+ {
+ _chairs = value;
+ NotifyPropertyChanged("department");
+ }
+ }
+ }
+
+ public string Name
+ {
+ get
+ {
+ return _name;
+ }
+ set
+ {
+ if (value != _name)
+ {
+ _name = value;
+ NotifyPropertyChanged("chair");
+ }
+ }
+ }
+
+ public Visibility Visible
+ {
+ get { return this.visible; }
+ set
+ {
+ if (value != this.visible)
+ {
+ this.visible = value;
+ }
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Departments/DepartmentViewModel.cs b/CampusAppWP8/CampusAppWP8/Model/Departments/DepartmentViewModel.cs
new file mode 100644
index 00000000..5b57d3c6
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Departments/DepartmentViewModel.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Departments
+{
+ [XmlRoot("root")]
+ public class DepartmentViewModel : BaseViewModel
+ {
+ [XmlArray("professorships")]
+ [XmlArrayItem("faculty")]
+ public ObservableCollection _faculties { get; set; }
+
+ public DepartmentViewModel()
+ {
+ this.Faculties = new ObservableCollection();
+ }
+
+ public ObservableCollection Faculties
+ {
+ get
+ {
+ return _faculties;
+ }
+ set
+ {
+ if (value != _faculties)
+ {
+ _faculties = value;
+ NotifyPropertyChanged("foodDays");
+ }
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Departments/FacultyModel.cs b/CampusAppWP8/CampusAppWP8/Model/Departments/FacultyModel.cs
new file mode 100644
index 00000000..3ceea2a8
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Departments/FacultyModel.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+using CampusAppWP8.Resources;
+
+namespace CampusAppWP8.Model.Departments
+{
+ public class FacultyModel : BaseModel
+ {
+ [XmlElement("chair")]
+ public ObservableCollection chairs { get; set; }
+ //public ObservableCollection _faculties { get; set; }
+
+ private string name = "t_fak";
+
+ public FacultyModel()
+ {
+ //this.Faculties = new ObservableCollection();
+ this.chairs = new ObservableCollection();
+ }
+
+ public FacultyModel(string name)
+ {
+ this.name = name;
+ //this.Faculties = new ObservableCollection();
+ this.chairs = new ObservableCollection();
+ }
+
+ public ObservableCollection Chairs
+ {
+ get { return this.chairs; }
+ set
+ {
+ if (value != this.chairs)
+ {
+ this.chairs = value;
+ NotifyPropertyChanged("faculty");
+ }
+ }
+ }
+
+ [XmlAttribute("id")]
+ public string Name
+ {
+ get
+ {
+ return AppResources.Faculty + " " + this.name;
+ }
+ set
+ {
+ if (value != this.name)
+ {
+ this.name = value;
+ NotifyPropertyChanged("faculty");
+ }
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Events/RSSChannelModel.cs b/CampusAppWP8/CampusAppWP8/Model/Events/RSSChannelModel.cs
new file mode 100644
index 00000000..2e8bc8aa
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Events/RSSChannelModel.cs
@@ -0,0 +1,45 @@
+using CampusAppWP8.Model;
+using System.Collections.ObjectModel;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.events_news
+{
+ ///
+ /// Channel Model, which contains the rss feed item list.
+ ///
+ public class RSSChannelModel : BaseModel
+ {
+ ///
+ /// RssFeed information item list.
+ ///
+ [XmlElement("item")]
+ public ObservableCollection item { get; set; }
+
+ ///
+ /// Default constructor.
+ ///
+ public RSSChannelModel()
+ {
+ this.item = new ObservableCollection();
+ }
+
+ ///
+ /// Set/Get the rss feed item list.
+ ///
+ public ObservableCollection Item
+ {
+ get
+ {
+ return this.item;
+ }
+ set
+ {
+ if (value != this.item)
+ {
+ this.item = value;
+ NotifyPropertyChanged("item");
+ }
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Events/RSSModel.cs b/CampusAppWP8/CampusAppWP8/Model/Events/RSSModel.cs
new file mode 100644
index 00000000..19d53cb9
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Events/RSSModel.cs
@@ -0,0 +1,204 @@
+using CampusAppWP8.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.events_news
+{
+ ///
+ /// Contains the rss feed informations.
+ ///
+ public class RSSModel : BaseModel
+ {
+ ///
+ /// Title of the fees
+ ///
+ private string title;
+ ///
+ /// Description text of the feed.
+ ///
+ private string text;
+ ///
+ /// Timestamp (publication date) of the event or news.
+ ///
+ private DateTime timestamp;
+ ///
+ /// Url of the feed.
+ ///
+ private string link;
+
+ ///
+ /// Set/Get the title of the feed.
+ ///
+ [XmlElement("title")]
+ public string Title
+ {
+ get { return this.title; }
+ set
+ {
+ if (this.title != value)
+ {
+ this.title = value;
+ NotifyPropertyChanged("rss");
+ }
+ }
+ }
+
+ ///
+ /// Set/Get the text of the feed.
+ ///
+ [XmlElement("description")]
+ public string Text
+ {
+ get { return this.text; }
+ set
+ {
+ if (this.text != HTMLUnicodeToString(value))
+ {
+ this.text = HTMLUnicodeToString(value);
+ NotifyPropertyChanged("rss");
+ }
+ }
+ }
+
+ ///
+ /// Set/Get the timestamp of the feed as string.
+ ///
+ [XmlElement("pubDate")]
+ public string Timestamp
+ {
+ get { return this.timestamp.ToString("R"); }
+ set
+ {
+ if (this.timestamp != DateTime.Parse(value))
+ {
+ this.timestamp = DateTime.Parse(value);
+ NotifyPropertyChanged("rss");
+ }
+ }
+ }
+
+ ///
+ /// Set/Get the timestamp of the feed as DateTime object.
+ ///
+ public DateTime DTTimestamp
+ {
+ get { return this.timestamp; }
+ set { this.timestamp = value; }
+ }
+
+ ///
+ /// Return the date of the timestamp as string.
+ /// example: Mon, 25.06.2013.
+ ///
+ public string Date
+ {
+ get { return String.Format("{0:ddd, dd.MM.yyyy}", this.timestamp); }
+ }
+
+ ///
+ /// Return the time of the timestamp as string.
+ /// example: 12:56 Uhr.
+ ///
+ public string Time
+ {
+ get { return String.Format("{0:h:mm} Uhr", this.timestamp); }
+ }
+
+ ///
+ /// Set/Get the link/url of the feed.
+ ///
+ [XmlElement("link")]
+ public string Link
+ {
+ get { return this.link; }
+ set
+ {
+ if (this.link != value)
+ {
+ this.link = value;
+ NotifyPropertyChanged("rss");
+ }
+ }
+ }
+
+ ///
+ /// Remove or transform html-unicode specific tags into ascii.
+ ///
+ /// html string
+ /// ascii string
+ private string HTMLUnicodeToString(string htmluni)
+ {
+ StringBuilder retValue = new StringBuilder();
+
+ for(int i = 0; i < htmluni.Length; i++)
+ {
+ switch (htmluni[i])
+ {
+ // beginning tag of the unicode
+ case '&':
+ {
+ int startOff = i + 2;
+ // sear closing tag of the unicode
+ int endOff = htmluni.IndexOf(';', startOff);
+ // get and parse value inbetween
+ string sub = htmluni.Substring(startOff, endOff - startOff);
+ int cVal = int.Parse(sub);
+
+ switch (cVal)
+ {
+ // if the unicode value is 128 (€)
+ case 128:
+ retValue.Append('€');
+ break;
+
+ default:
+ retValue.Append((char)cVal);
+ break;
+ }
+
+ // set the current index to the end of the unicode tag
+ i = endOff;
+ }
+ break;
+ case '<':
+ {
+ // ignoring <..> html tags
+ i = htmluni.IndexOf('>', i);
+ }
+ break;
+ case '\t':
+ // removing tabs
+ break;
+
+ default:
+ {
+ // adding other characters to the return string
+ retValue.Append(htmluni[i]);
+ }
+ break;
+ }
+ }
+
+ return retValue.ToString();
+ }
+
+ ///
+ /// Comparing function for Datetime-Timestamps.
+ /// (currently unused)
+ ///
+ /// first item
+ /// secound item
+ ///
+ public static int CompareTimeStamp(RSSModel item1, RSSModel item2)
+ {
+ if (item1.DTTimestamp > item2.DTTimestamp)
+ return -1;
+ else
+ return 0;
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Events/RSSViewModel.cs b/CampusAppWP8/CampusAppWP8/Model/Events/RSSViewModel.cs
new file mode 100644
index 00000000..a9625df9
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Events/RSSViewModel.cs
@@ -0,0 +1,47 @@
+using CampusAppWP8.Model;
+using System.Collections.ObjectModel;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.events_news
+{
+ ///
+ /// ViewModel of the rss feed, containing the feed/channel object.
+ ///
+ [XmlRoot("root")]
+ public class RSSViewModel : BaseViewModel
+ {
+ ///
+ /// channel list for the rss feeds.
+ ///
+ [XmlArray("rss")]
+ [XmlArrayItem("channel")]
+ public ObservableCollection channel { get; set; }
+
+ ///
+ /// Default constructor.
+ ///
+ public RSSViewModel()
+ {
+ this.channel = new ObservableCollection();
+ }
+
+ ///
+ /// Set/Get the channel list.
+ ///
+ public ObservableCollection Channel
+ {
+ get
+ {
+ return this.channel;
+ }
+ set
+ {
+ if (value != this.channel)
+ {
+ this.channel = value;
+ NotifyPropertyChanged("channel");
+ }
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureActivity.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureActivity.cs
new file mode 100644
index 00000000..3c178b2d
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureActivity.cs
@@ -0,0 +1,140 @@
+using CampusAppWP8.Utility;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Lecture
+{
+ public class LectureActivity
+ {
+ #region
+ private ObservableCollection lecturer;
+ private string lecturerString;
+ private string courseString;
+ private string topic;
+ #endregion
+ #region Constructor
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public LectureActivity()
+ {
+ }
+
+ #endregion
+
+ #region Proberty
+
+ [XmlElement("art")]
+ public string Type { get; set; }
+
+ [XmlAttribute("id")]
+ public int Id { get; set; }
+
+ [XmlElement("semester")]
+ public int Semester { get; set; }
+
+ [XmlElement("sws")]
+ public string SWS { get; set; }
+
+ [XmlElement("modul")]
+ public LectureModul Modul { get; set; }
+
+ [XmlElement("lehrperson")]
+ public ObservableCollection Lecturer {
+ get
+ {
+ return lecturer;
+ }
+ set
+ {
+ if (value != lecturer)
+ {
+ lecturer = value;
+ }
+ }
+ }
+
+ public string LecturerString {
+ get
+ {
+ return this.lecturerString;
+ }
+ set
+ {
+ if (value != this.lecturerString)
+ {
+ this.lecturerString = value;
+ }
+ }
+ }
+
+ public string CourseString
+ {
+ get
+ {
+ return this.courseString;
+ }
+ set
+ {
+ if (value != this.courseString)
+ {
+ this.courseString = value;
+ }
+ }
+ }
+
+
+ [XmlElement("studiengang")]
+ public ObservableCollection Course { get; set; }
+
+ [XmlElement("termin")]
+ public ObservableCollection Dates { get; set; }
+
+ [XmlElement("zugeordnete_einrichtung")]
+ public string Department { get; set; }
+
+ [XmlElement("lehrinhalt")]
+ public string Topic
+ {
+ get
+ {
+ return topic;
+ }
+ set
+ {
+ if (value != topic)
+ {
+ topic = StringManager.StripHTML(value);
+ }
+ }
+ }
+
+ #endregion
+
+ public void createLectureString()
+ {
+ string result = string.Empty;
+ foreach (LectureLecturer tmpLecturer in Lecturer)
+ {
+ result += tmpLecturer.ToString() + "\n";
+ }
+ this.LecturerString = result.TrimEnd('\n');
+ }
+
+ public void createCourseString()
+ {
+ string result = string.Empty;
+ foreach (LectureCourse course in Course)
+ {
+ result += course.Title + "\n";
+ }
+ this.CourseString = result.TrimEnd('\n');
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureCourse.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureCourse.cs
new file mode 100644
index 00000000..30018c7e
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureCourse.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Lecture
+{
+ public class LectureCourse
+ {
+ public LectureCourse()
+ {
+ }
+ [XmlElement("bezeichnung")]
+ public string Title {get;set;}
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureDate.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureDate.cs
new file mode 100644
index 00000000..9e802558
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureDate.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Lecture
+{
+ public class LectureDate
+ {
+ public LectureDate()
+ {
+ }
+
+ [XmlElement("wochentag")]
+ public string WeekDay { get; set; }
+ [XmlElement("von")]
+ public string From { get; set; }
+ [XmlElement("bis")]
+ public string To { get; set; }
+ [XmlElement("rhythmus")]
+ public string Interval { get; set; }
+ [XmlElement("raum")]
+ public string Room { get; set; }
+ [XmlElement("anfangsdatum")]
+ public string StarDate { get; set; }
+ [XmlElement("enddatum")]
+ public string EndDate { get; set; }
+
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureLecturer.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureLecturer.cs
new file mode 100644
index 00000000..c0cc8b42
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureLecturer.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace CampusAppWP8.Model.Lecture
+{
+ public class LectureLecturer
+ {
+ public LectureLecturer()
+ {
+ }
+
+ [XmlElement("vorname")]
+ public string FirstName { get; set; }
+
+ [XmlElement("name")]
+ public string LastName { get; set; }
+
+ [XmlElement("titel")]
+ public string Title { get; set; }
+
+ [XmlAttribute("zustaendigkeit")]
+ public string Responsibility { get; set; }
+
+ public override string ToString()
+ {
+ string result = string.Empty;
+
+ if (!Title.Equals(string.Empty))
+ {
+ result += Title + " ";
+ }
+
+ result += FirstName + " ";
+ result += LastName + " ";
+
+ if (!Responsibility.Equals(string.Empty))
+ {
+ result += "(" + Responsibility + ") ";
+ }
+ return result;
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureList.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureList.cs
new file mode 100644
index 00000000..6dff6569
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureList.cs
@@ -0,0 +1,48 @@
+//-----------------------------------------------------------------------
+//
+// Company copyright tag.
+//
+// stubbfel
+// 10.06.2013
+//----------------------------------------------------------------------
+namespace CampusAppWP8.Model.Lecture
+{
+ using System.Collections.Generic;
+ using System.Collections.ObjectModel;
+ using System.Xml.Serialization;
+ using System.Linq;
+
+ [XmlRoot("lsf_auszug")]
+ public class LectureList
+ {
+
+ #region Constructor
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public LectureList()
+ {
+ }
+
+ #endregion
+
+ #region Proberty
+
+ [XmlArray("veranstaltungsliste")]
+ [XmlArrayItem("veranstaltung")]
+ public ObservableCollection Activities { get; set; }
+
+ #endregion
+
+ #region Methods
+
+ public LectureActivity GetActivity(int id)
+ {
+ LectureActivity activity = Activities.Where(p => p.Id == id).First();
+ return activity;
+ }
+ #endregion
+
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureModul.cs b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureModul.cs
new file mode 100644
index 00000000..883f763f
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Model/Lecture/LectureModul.cs
@@ -0,0 +1,70 @@
+//-----------------------------------------------------------------------
+//
+// Company copyright tag.
+//
+// stubbfel
+// 10.06.2013
+//----------------------------------------------------------------------
+namespace CampusAppWP8.Model.Lecture
+{
+ using CampusAppWP8.Resources;
+ using System;
+ using System.Xml.Serialization;
+ public class LectureModul
+ {
+ #region Members
+
+ private int number;
+
+ private Uri url;
+
+ #endregion
+
+ #region Constructor
+
+ public LectureModul()
+ {
+ }
+
+ #endregion
+
+ #region Property
+
+ [XmlElement("titel")]
+ public string Title {get; set;}
+
+ [XmlElement("nummer")]
+ public int Number{
+ get
+ {
+ return this.number;
+ }
+ set
+ {
+ if (value != this.number)
+ {
+ this.number = value;
+ this.createUrl();
+ }
+ }
+ }
+
+ public Uri Url{
+ get
+ {
+ return url;
+ }
+ }
+
+ #endregion
+
+ #region Methods
+
+ private void createUrl()
+ {
+ this.url = new Uri(Constants.UrlLectureModulBaseAddr + number.ToString());
+ }
+
+ #endregion
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml
new file mode 100644
index 00000000..7919009f
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs
new file mode 100644
index 00000000..9e4cd703
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Campusmap/CampusMapPage.xaml.cs
@@ -0,0 +1,24 @@
+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;
+
+namespace CampusAppWP8.Pages.Campusmap
+{
+ public partial class CampusMapPage : PhoneApplicationPage
+ {
+ public CampusMapPage()
+ {
+ InitializeComponent();
+ }
+
+ private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml
new file mode 100644
index 00000000..3049f3c9
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs
new file mode 100644
index 00000000..2d71e3cd
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Departments/DepartmentPage.xaml.cs
@@ -0,0 +1,131 @@
+using CampusAppWP8.Feed.Departments;
+using CampusAppWP8.Pages.Departments;
+using CampusAppWP8.Utility;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Tasks;
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+
+
+namespace CampusAppWP8.Pages.Departments
+{
+ ///
+ /// Pivot page with list of the chairs of the facultis.
+ ///
+ public partial class DepartmentPage : PhoneApplicationPage
+ {
+ ///
+ /// Stores the last visible department panel.
+ ///
+ private UIElement lastVisibleUIElem = null;
+ ///
+ /// department/chair feed object, storing the model and data.
+ ///
+ private DepartmentFeed feed { get; set; }
+
+ ///
+ /// Default constructor.
+ ///
+ public DepartmentPage()
+ {
+ InitializeComponent();
+ // init feed object
+ this.feed = new DepartmentFeed();
+ }
+
+ ///
+ /// On naviagtion to this page.
+ /// Init the feed loading.
+ ///
+ /// event args
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+
+ this.feed.EventHandler.FeedIsReadyEvent += new FeedEventHandler.FeedReadyHandler(SetupDepartmentPivot);
+ this.feed.LoadFeed();
+ }
+
+ ///
+ /// Called after the feeds are loaded.
+ /// Set the pivotitem source of this page.
+ ///
+ private void SetupDepartmentPivot()
+ {
+ DepartmentPivot.ItemsSource = feed.Model._faculties;
+ }
+
+ ///
+ /// On orientation changed.
+ ///
+ /// unused
+ /// unused
+ private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
+ {
+ }
+
+ ///
+ /// Called at clicking on the department headline buttons.
+ /// Collapses all visible department panels and open (set to visible)
+ /// the clicked department list.
+ ///
+ /// clicked department button
+ /// unused
+ private void DepartmentBtn_Click(object sender, RoutedEventArgs e)
+ {
+ // if the sender was a button
+ if(sender is Button)
+ {
+ Button btn = sender as Button;
+
+ // if the parent is a stackpanel
+ if(btn.Parent is StackPanel)
+ {
+ StackPanel pan = (StackPanel)btn.Parent;
+
+ // if there is a child after the clicked button in the parent panel
+ if ((pan.Children.Count() > 1) && (pan.Children[1] != null))
+ {
+ // if the clicked department wasn't the one clicked before
+ if (pan.Children[1] != this.lastVisibleUIElem)
+ {
+ // collapse the last visible chair list
+ if (this.lastVisibleUIElem != null)
+ this.lastVisibleUIElem.Visibility = Visibility.Collapsed;
+
+ // open the choosen chair list
+ pan.Children[1].Visibility = Visibility.Visible;
+ this.lastVisibleUIElem = pan.Children[1];
+ }
+ }
+ }
+ }
+ }
+
+ ///
+ /// On clicking a chair textbolock.
+ /// Open the browser with the url of the chair.
+ ///
+ /// clicked chair textblock
+ ///
+ private void ChairTB_Click(object sender, RoutedEventArgs e)
+ {
+ if (sender is FrameworkElement)
+ {
+ FrameworkElement btn = sender as FrameworkElement;
+
+ // if the chair has a url in the tag element
+ if ((btn.Tag != null) && ((btn.Tag as string).Length > 0))
+ {
+ // open browser with the url
+ WebBrowserTask task = new WebBrowserTask();
+ task.Uri = new Uri(btn.Tag.ToString(), UriKind.Absolute);
+ task.Show();
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml
new file mode 100644
index 00000000..1c4b30c8
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs
new file mode 100644
index 00000000..4d3538e3
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Events/EventIndexPage.xaml.cs
@@ -0,0 +1,104 @@
+using CampusAppWP8.Feed.Events;
+using CampusAppWP8.Model.events_news;
+using CampusAppWP8.Utility;
+using Microsoft.Phone.Controls;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+
+namespace CampusAppWP8.Pages.Events
+{
+ ///
+ /// Overview page of all events.
+ ///
+ public partial class EventIndexPage : PhoneApplicationPage
+ {
+ ///
+ /// Event Feed object, which contains the rss models and data.
+ ///
+ public static EventFeed eventFeed { get; set; }
+
+ ///
+ /// Default constructor.
+ ///
+ public EventIndexPage()
+ {
+ InitializeComponent();
+ EventIndexPage.eventFeed = new EventFeed();
+ }
+
+ ///
+ /// On navigation to this page, creates a FeedEventHandler and load the rss feed data.
+ ///
+ /// event args
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+
+ // Set handler and load the fees informations.
+ EventIndexPage.eventFeed.EventHandler.FeedIsReadyEvent += new FeedEventHandler.FeedReadyHandler(SetupEventPageList);
+ EventIndexPage.eventFeed.LoadFeed();
+ }
+
+ ///
+ /// Is called after the rss feeds are loaded into the eventFeed model.
+ /// If there was no feed informations set to the ui, the feed list
+ /// will be sorted by timestamp and the buttons will be created.
+ ///
+ private void SetupEventPageList()
+ {
+ if ((EventIndexPage.eventFeed.Model != null)
+ && (EventIndexPage.eventFeed.Model.Channel != null)
+ && (EventIndexPage.eventFeed.Model.Channel.Count() >= 1)
+ && (this.ButtonPanel.Items.Count() == 0))
+ {
+ // Sort the list of rssfeeds.
+ IEnumerable tempList = EventIndexPage.eventFeed.Model.Channel[0].item.OrderByDescending(e => e.DTTimestamp);
+ EventIndexPage.eventFeed.Model.Channel[0].item = new ObservableCollection(tempList);
+
+ // Create the buttons for the fees selection and add it to the buttonpanel.
+ for (int i = 0; i < EventIndexPage.eventFeed.Model.Channel[0].item.Count(); i++)
+ {
+ Button tempBtn = new Button();
+ tempBtn.Name = "EventRowAppButton";
+ tempBtn.Content = EventIndexPage.eventFeed.Model.Channel[0].item[i].Title;
+ tempBtn.VerticalContentAlignment = VerticalAlignment.Stretch;
+ tempBtn.HorizontalContentAlignment = HorizontalAlignment.Stretch;
+ tempBtn.BorderThickness = new Thickness(0.0);
+ tempBtn.Padding = new Thickness(0.0);
+ tempBtn.Click += EventRowAppButton_Click;
+ tempBtn.Tag = i;
+
+ this.ButtonPanel.Items.Add(tempBtn);
+ }
+ }
+ }
+
+ ///
+ /// Return the eventFeed object.
+ ///
+ static public EventFeed GetEventFeed
+ {
+ get { return EventIndexPage.eventFeed; }
+ set { }
+ }
+
+ ///
+ /// Is called on clicking on a feed button.
+ /// Navigates to the event pivot page with the information of the
+ /// selected feed index.
+ ///
+ /// pressed button object
+ /// event args
+ private void EventRowAppButton_Click(object sender, RoutedEventArgs e)
+ {
+ FrameworkElement tempElem = sender as FrameworkElement;
+
+ NavigationService.Navigate(new Uri("/pages/events/EventPage.xaml?pivotindex=" + tempElem.Tag, UriKind.Relative));
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml
new file mode 100644
index 00000000..e5782082
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..1dd9c43f
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Events/EventPage.xaml.cs
@@ -0,0 +1,97 @@
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Tasks;
+using System;
+using System.Linq;
+using System.Windows;
+using System.Windows.Navigation;
+
+
+
+namespace CampusAppWP8.Pages.Events
+{
+ ///
+ /// EventPage, where every event fees has his own pivotitem.
+ ///
+ public partial class EventPage : PhoneApplicationPage
+ {
+ ///
+ /// for checking if the feed source is already set or not.
+ ///
+ private bool isSourceSet = false;
+
+ ///
+ /// Default constructor.
+ ///
+ public EventPage()
+ {
+ InitializeComponent();
+ }
+
+ ///
+ /// On navigation to this page.
+ /// The pivotitem source will be set, if it wasn't befor.
+ /// Navigating to the submited index of the choosen pivotitem page.
+ ///
+ ///
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+
+ // Set pivotitem Source
+ if (this.isSourceSet == false)
+ {
+ if ((EventIndexPage.GetEventFeed.Model != null)
+ && (EventIndexPage.GetEventFeed.Model.Channel != null)
+ && (EventIndexPage.GetEventFeed.Model.Channel.Count() >= 1))
+ {
+ this.EventPivot.ItemsSource = EventIndexPage.GetEventFeed.Model.Channel[0].item;
+ this.isSourceSet = true;
+ }
+ }
+
+ string pivotIndex = "";
+
+ // Navigate to the selected pivotitem
+ if (NavigationContext.QueryString.TryGetValue("pivotindex", out pivotIndex))
+ {
+ int pivotIndexInt = int.Parse(pivotIndex);
+
+ // if the index is in the range of the array
+ if((pivotIndexInt >= 0) && (pivotIndexInt < EventIndexPage.GetEventFeed.Model.Channel[0].item.Count()))
+ EventPivot.SelectedIndex = pivotIndexInt;
+ else
+ MessageBox.Show("ERROR: pivotIndex out of range!!!");
+ }
+
+ }
+
+ ///
+ /// On clicking the home button (lower left).
+ /// Navigate back to the event index page.
+ ///
+ /// clicked button
+ /// event args
+ private void EventHome_Click(object sender, RoutedEventArgs e)
+ {
+ // Navigate back to the event index page
+ NavigationService.GoBack();
+ }
+
+ ///
+ /// On clicking the link button if a link exists in the feed
+ /// (lower right).
+ /// Open the webbrowser with the url set in the feed.
+ ///
+ /// clicked button
+ /// event args
+ private void EventLink_Click(object sender, RoutedEventArgs e)
+ {
+ FrameworkElement fe = sender as FrameworkElement;
+
+ // Open the webbrowser
+ WebBrowserTask webBrowserTask = new WebBrowserTask();
+ webBrowserTask.Uri = new Uri(fe.Tag.ToString(), UriKind.Absolute);
+ webBrowserTask.Show();
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/LectureFeed.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LectureFeed.cs
new file mode 100644
index 00000000..c09325cd
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LectureFeed.cs
@@ -0,0 +1,37 @@
+using CampusAppWP8.Model.Lecture;
+using CampusAppWP8.Utility;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CampusAppWP8.Pages.Lecture
+{
+ public class LectureFeed : XmlFeed
+ {
+ public LectureFeed()
+ : base(new Uri("http://www.zv.tu-cottbus.de/LSFveranst/LSF4?Semester=20112&Abschluss=82&Studiengang=079&Von=1&Bis=2"), "Lecture.xml")
+ {
+ this.validRootName = "lsf_auszug";
+ }
+
+ ///
+ /// Method implement CheckIsModelUpToDate()-Method
+ ///
+ /// true, if model is up-to-date, otherwise false
+ protected override bool CheckIsModelUpToDate()
+ {
+ return false;
+ }
+
+ ///
+ /// Method implement CheckIsFileUpToDate()-Method
+ ///
+ /// true, if file is up-to-date, otherwise false
+ protected override bool CheckIsFileUpToDate()
+ {
+ return true;
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml
new file mode 100644
index 00000000..657782b2
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs
new file mode 100644
index 00000000..21f26d96
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/LecturePage.xaml.cs
@@ -0,0 +1,28 @@
+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 CampusAppWP8.Pages.Lecture;
+using CampusAppWP8.Utility;
+
+namespace CampusAppWP8.Pages.lecture
+{
+ public partial class Lecture : PhoneApplicationPage
+ {
+ public Lecture()
+ {
+ InitializeComponent();
+ LectureFeed test = new LectureFeed();
+ test.LoadFeed();
+ }
+
+ private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml
new file mode 100644
index 00000000..607d04b8
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs
new file mode 100644
index 00000000..989f0b51
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ModulWebPage.xaml.cs
@@ -0,0 +1,43 @@
+//-----------------------------------------------------------------------
+//
+// Company copyright tag.
+//
+// stubbfel
+// 11.06.2013
+//----------------------------------------------------------------------
+namespace CampusAppWP8.Pages.Lecture
+{
+ using System;
+ using System.Windows.Navigation;
+ using CampusAppWP8.Resources;
+ using Microsoft.Phone.Controls;
+
+ ///
+ /// Class for the page which shows Webpages from the BaseAddress
+ ///
+ public partial class ModulWebPage : PhoneApplicationPage
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public ModulWebPage()
+ {
+ this.InitializeComponent();
+ }
+
+ ///
+ /// Override the OnNavigatedTo method
+ ///
+ /// Arguments of navigation
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ if (NavigationContext.QueryString.ContainsKey(Constants.ParamLectureModulNumber))
+ {
+ string number = NavigationContext.QueryString[Constants.ParamLectureModulNumber];
+ this.WebmailBrowser.Navigate(new Uri(Constants.UrlLectureModulBaseAddr + number, UriKind.Absolute));
+ }
+
+ base.OnNavigatedTo(e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml
new file mode 100644
index 00000000..04b6ada9
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs
new file mode 100644
index 00000000..6a404776
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultDetailPage.xaml.cs
@@ -0,0 +1,59 @@
+//-----------------------------------------------------------------------
+//
+// Company copyright tag.
+//
+// stubbfel
+// 11.06.2013
+//----------------------------------------------------------------------
+namespace CampusAppWP8.Pages.Lecture
+{
+ using System.Windows.Navigation;
+ using CampusAppWP8.Model.Lecture;
+ using CampusAppWP8.Resources;
+ using Microsoft.Phone.Controls;
+
+ ///
+ /// Class for the page which shows details of an activity
+ ///
+ public partial class ResultDetailPage : PhoneApplicationPage
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public ResultDetailPage()
+ {
+ this.InitializeComponent();
+ }
+
+ ///
+ /// Override the OnNavigatedTo method
+ ///
+ /// Arguments of navigation
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ if (NavigationContext.QueryString.ContainsKey(Constants.ParamLectureActivityId))
+ {
+ string activityId = NavigationContext.QueryString[Constants.ParamLectureActivityId];
+ this.LoadActivity(int.Parse(activityId));
+ }
+
+ base.OnNavigatedTo(e);
+ }
+
+ ///
+ /// Method load a certain Activity from the model
+ ///
+ /// id of the activity
+ private void LoadActivity(int activityId)
+ {
+ LectureList list = App.LoadFromIsolatedStorage(Constants.IsolatedStorageLectureModel);
+ if (list != null)
+ {
+ LectureActivity activity = list.GetActivity(activityId);
+ activity.createLectureString();
+ activity.createCourseString();
+ this.ContentPanel.DataContext = activity;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml
new file mode 100644
index 00000000..187ffc38
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs
new file mode 100644
index 00000000..f5ecfd1f
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Lecture/ResultPage.xaml.cs
@@ -0,0 +1,158 @@
+//-----------------------------------------------------------------------
+//
+// Company copyright tag.
+//
+// stubbfel
+// 11.06.2013
+//----------------------------------------------------------------------
+namespace CampusAppWP8.Pages.Lecture
+{
+ using System;
+ using System.Windows;
+ using System.Windows.Controls;
+ using System.Windows.Navigation;
+ using CampusAppWP8.Model.Lecture;
+ using CampusAppWP8.Resources;
+ using CampusAppWP8.Utility;
+ using Microsoft.Phone.Controls;
+
+ ///
+ /// Class for the page which shows the results of an LectureRequest
+ ///
+ public partial class ResultPage : PhoneApplicationPage
+ {
+ ///
+ /// actual LectureFeed
+ ///
+ private LectureFeed feed;
+
+ ///
+ /// Reference of the button which was lastClicked
+ ///
+ private Button lastClickedButton;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public ResultPage()
+ {
+ this.InitializeComponent();
+ this.feed = new LectureFeed();
+ this.feed.EventHandler.FeedIsReadyEvent += new FeedEventHandler.FeedReadyHandler(this.FeedIsReady);
+ this.feed.LoadFeed();
+ }
+
+ ///
+ /// Method will be execute if the feed is ready
+ ///
+ private void FeedIsReady()
+ {
+ this.ResultList.ItemsSource = this.feed.Model.Activities;
+ App.SaveToIsolatedStorage(Constants.IsolatedStorageLectureModel, this.feed.Model);
+ }
+
+ ///
+ /// Method toggle the Visibility of the Link- and Details-Buttons
+ ///
+ /// Caller of the function
+ /// some EventArgs
+ private void ToggleOptions(object sender, RoutedEventArgs e)
+ {
+ Button button = (Button)sender;
+ StackPanel parent = (StackPanel)button.Parent;
+ if (this.lastClickedButton != null && !this.lastClickedButton.Equals(button))
+ {
+ this.HideOptions(parent);
+ }
+
+ this.lastClickedButton = button;
+
+ Button link = (Button)parent.FindName("Link");
+ Button details = (Button)parent.FindName("Details");
+ this.ToogleVisibility(link);
+ this.ToogleVisibility(details);
+ }
+
+ ///
+ /// Method shows the Link- and Details-Buttons
+ ///
+ /// Reference of the StackPanel which include the buttons
+ private void ShowOptions(StackPanel parent)
+ {
+ Button link = (Button)parent.FindName("Link");
+ Button details = (Button)parent.FindName("Details");
+ this.ShowVisibility(link);
+ this.ShowVisibility(details);
+ }
+
+ ///
+ /// Method hide the Link- and Details-Buttons
+ ///
+ /// Reference of the StackPanel which include the buttons
+ private void HideOptions(StackPanel parent)
+ {
+ Button link = (Button)parent.FindName("Link");
+ Button details = (Button)parent.FindName("Details");
+ this.HideVisibility(link);
+ this.HideVisibility(details);
+ }
+
+ ///
+ /// Method toggle the Visibility of an UIElement
+ ///
+ /// UIElement which Visibility has to be toggle
+ private void ToogleVisibility(UIElement element)
+ {
+ if (System.Windows.Visibility.Visible.Equals(element.Visibility))
+ {
+ this.HideVisibility(element);
+ }
+ else
+ {
+ this.ShowVisibility(element);
+ }
+ }
+
+ ///
+ /// Method set the Visibility=true of an UIElement
+ ///
+ /// UIElement which Visibility has to been true
+ private void ShowVisibility(UIElement element)
+ {
+ element.Visibility = System.Windows.Visibility.Visible;
+ }
+
+ ///
+ /// Method set the Visibility=false of an UIElement
+ ///
+ /// UIElement which Visibility has to been false
+ private void HideVisibility(UIElement element)
+ {
+ element.Visibility = System.Windows.Visibility.Collapsed;
+ }
+
+ ///
+ /// Method navigate to ModuleWebPage
+ ///
+ /// Caller of the function
+ /// some EventArgs
+ private void ShowModulWebPage(object sender, RoutedEventArgs e)
+ {
+ Button btn = (Button)sender;
+ Uri url = new Uri(Constants.PathLectureModulWebPage + Constants.Paramseparator + Constants.ParamLectureModulNumber + "=" + btn.Tag, UriKind.Relative);
+ NavigationService.Navigate(url);
+ }
+
+ ///
+ /// Method navigate to DetailPage
+ ///
+ /// Caller of the function
+ /// some EventArgs
+ private void ShowDetailPage(object sender, RoutedEventArgs e)
+ {
+ Button btn = (Button)sender;
+ Uri url = new Uri(Constants.PathResultDetailWebPage + Constants.Paramseparator + Constants.ParamLectureActivityId + "=" + btn.Tag, UriKind.Relative);
+ NavigationService.Navigate(url);
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml
new file mode 100644
index 00000000..9457d700
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs
new file mode 100644
index 00000000..fa1b8840
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/News/NewsIndexPage.xaml.cs
@@ -0,0 +1,108 @@
+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 CampusAppWP8.Model.events_news;
+using CampusAppWP8.Utility;
+using CampusAppWP8.Resources;
+using System.Collections.ObjectModel;
+using CampusAppWP8.Feed.News;
+
+namespace CampusAppWP8.Pages.News
+{
+ ///
+ /// Overview page of all news.
+ ///
+ public partial class NewsIndexPage : PhoneApplicationPage
+ {
+ ///
+ /// News Feed object, which contains the rss models and data.
+ ///
+ public static NewsFeed newsFeed { get; set; }
+
+ ///
+ /// Default constructor.
+ ///
+ public NewsIndexPage()
+ {
+ InitializeComponent();
+ NewsIndexPage.newsFeed = new NewsFeed();
+ }
+
+ ///
+ /// On navigation to this page, creates a FeedEventHandler and load the rss feed data.
+ ///
+ /// event args
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+
+ // Set handler and load the fees informations.
+ NewsIndexPage.newsFeed.EventHandler.FeedIsReadyEvent += new FeedEventHandler.FeedReadyHandler(SetupNewsPageList);
+ NewsIndexPage.newsFeed.LoadFeed();
+ }
+
+ ///
+ /// Is called after the rss feeds are loaded into the newsFeed model.
+ /// If there was no feed informations set to the ui, the feed list
+ /// will be sorted by timestamp and the buttons will be created.
+ ///
+ private void SetupNewsPageList()
+ {
+ if ((NewsIndexPage.newsFeed.Model != null)
+ && (NewsIndexPage.newsFeed.Model.Channel != null)
+ && (NewsIndexPage.newsFeed.Model.Channel.Count() >= 1)
+ && (this.ButtonPanel.Items.Count() == 0))
+ {
+ // Sort the list of rssfeeds.
+ IEnumerable tempList = NewsIndexPage.newsFeed.Model.Channel[0].item.OrderByDescending(e => e.DTTimestamp);
+ NewsIndexPage.newsFeed.Model.Channel[0].item = new ObservableCollection(tempList);
+
+ // Create the buttons for the fees selection and add it to the buttonpanel.
+ for (int i = 0; i < NewsIndexPage.newsFeed.Model.Channel[0].item.Count(); i++)
+ {
+ Button tempBtn = new Button();
+ tempBtn.Name = "NewsRowAppButton";
+ tempBtn.Content = NewsIndexPage.newsFeed.Model.Channel[0].item[i].Title;
+ tempBtn.VerticalContentAlignment = VerticalAlignment.Stretch;
+ tempBtn.HorizontalContentAlignment = HorizontalAlignment.Stretch;
+ tempBtn.BorderThickness = new Thickness(0.0);
+ tempBtn.Padding = new Thickness(0.0);
+ tempBtn.Click += NewsRowAppButton_Click;
+ tempBtn.Tag = i;
+
+ this.ButtonPanel.Items.Add(tempBtn);
+ }
+ }
+ }
+
+ ///
+ /// Return the newsFeed object.
+ ///
+ static public NewsFeed GetNewsFeed
+ {
+ get { return NewsIndexPage.newsFeed; }
+ set { }
+ }
+
+ ///
+ /// Is called on clicking on a feed button.
+ /// Navigates to the news pivot page with the information of the
+ /// selected feed index.
+ ///
+ /// pressed button object
+ /// event args
+ private void NewsRowAppButton_Click(object sender, RoutedEventArgs e)
+ {
+ FrameworkElement tempElem = sender as FrameworkElement;
+
+ NavigationService.Navigate(new Uri("/pages/news/NewsPage.xaml?pivotindex=" + tempElem.Tag, UriKind.Relative));
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml
new file mode 100644
index 00000000..dd9cb0a4
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs
new file mode 100644
index 00000000..cd7a1dfa
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/News/NewsPage.xaml.cs
@@ -0,0 +1,108 @@
+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;
+
+using CampusAppWP8.Model.events_news;
+using CampusAppWP8.Utility;
+using CampusAppWP8.Resources;
+
+
+
+namespace CampusAppWP8.Pages.News
+{
+ ///
+ /// EventPage, where every news fees has his own pivotitem.
+ ///
+ public partial class NewsPage : PhoneApplicationPage
+ {
+ ///
+ /// for checking if the feed source is already set or not.
+ ///
+ private bool isSourceSet = false;
+
+ ///
+ /// Default constructor.
+ ///
+ public NewsPage()
+ {
+ InitializeComponent();
+ }
+
+ ///
+ /// On navigation to this page.
+ /// The pivotitem source will be set, if it wasn't befor.
+ /// Navigating to the submited index of the choosen pivotitem page.
+ ///
+ ///
+ protected override void OnNavigatedTo(NavigationEventArgs e)
+ {
+ base.OnNavigatedTo(e);
+
+ // Set pivotitem Source
+ if (this.isSourceSet == false)
+ {
+ if ((NewsIndexPage.GetNewsFeed.Model != null)
+ && (NewsIndexPage.GetNewsFeed.Model.Channel != null)
+ && (NewsIndexPage.GetNewsFeed.Model.Channel.Count() >= 1))
+ {
+ this.NewsPivot.ItemsSource = NewsIndexPage.GetNewsFeed.Model.Channel[0].item;
+ this.isSourceSet = true;
+ }
+ }
+
+ string pivotIndex = "";
+
+ // Navigate to the selected pivotitem
+ if (NavigationContext.QueryString.TryGetValue("pivotindex", out pivotIndex))
+ {
+ int pivotIndexInt = int.Parse(pivotIndex);
+
+ // if the index is in the range of the array
+ if ((pivotIndexInt >= 0) && (pivotIndexInt < NewsIndexPage.GetNewsFeed.Model.Channel[0].item.Count()))
+ NewsPivot.SelectedIndex = pivotIndexInt;
+ else
+ MessageBox.Show("ERROR: pivotIndex out of range!!!");
+ }
+
+ }
+
+ ///
+ /// On clicking the home button (lower left).
+ /// Navigate back to the news index page.
+ ///
+ /// clicked button
+ /// event args
+ private void NewsHome_Click(object sender, RoutedEventArgs e)
+ {
+ // Navigate back to the news index page
+ NavigationService.GoBack();
+ }
+
+ ///
+ /// On clicking the link button if a link exists in the feed
+ /// (lower right).
+ /// Open the webbrowser with the url set in the feed.
+ ///
+ /// clicked button
+ /// event args
+ private void NewsLink_Click(object sender, RoutedEventArgs e)
+ {
+ FrameworkElement fe = sender as FrameworkElement;
+
+ // Open the webbrowser
+ WebBrowserTask webBrowserTask = new WebBrowserTask();
+ webBrowserTask.Uri = new Uri(fe.Tag.ToString(), UriKind.Absolute);
+ webBrowserTask.Show();
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml b/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml
new file mode 100644
index 00000000..ba9e152a
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs b/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs
new file mode 100644
index 00000000..f7248056
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Pages/Webmail/WebmailPage.xaml.cs
@@ -0,0 +1,20 @@
+using Microsoft.Phone.Controls;
+using System;
+
+
+namespace CampusAppWP8.Pages.Webmail
+{
+ public partial class Webmail : PhoneApplicationPage
+ {
+ public Webmail()
+ {
+ InitializeComponent();
+ loadWebmailPage();
+ }
+
+ private void loadWebmailPage()
+ {
+ this.WebmailBrowser.Navigate(new Uri("https://webmail.tu-cottbus.de", UriKind.Absolute));
+ }
+ }
+}
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml b/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml
index f0f57226..f4b319d3 100644
--- a/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml
+++ b/CampusAppWP8/CampusAppWP8/Properties/WMAppManifest.xml
@@ -13,7 +13,7 @@
-
+
diff --git a/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs
index 55ceef53..6d31c647 100644
--- a/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs
+++ b/CampusAppWP8/CampusAppWP8/Resources/AppResources.Designer.cs
@@ -79,7 +79,7 @@ namespace CampusAppWP8.Resources {
}
///
- /// Sucht eine lokalisierte Zeichenfolge, die MEINE ANWENDUNG ähnelt.
+ /// Sucht eine lokalisierte Zeichenfolge, die BTU CampusApp ähnelt.
///
public static string ApplicationTitle {
get {
@@ -87,6 +87,312 @@ namespace CampusAppWP8.Resources {
}
}
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Campusplan ähnelt.
+ ///
+ public static string CampusMapApp_Title {
+ get {
+ return ResourceManager.GetString("CampusMapApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Lehrstühle ähnelt.
+ ///
+ public static string DepartmentApp_Title {
+ get {
+ return ResourceManager.GetString("DepartmentApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Events ähnelt.
+ ///
+ public static string EventApp_Title {
+ get {
+ return ResourceManager.GetString("EventApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Fakultät ähnelt.
+ ///
+ public static string Faculty {
+ get {
+ return ResourceManager.GetString("Faculty", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Hausaufgaben ähnelt.
+ ///
+ public static string HomeworkApp_Title {
+ get {
+ return ResourceManager.GetString("HomeworkApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Studiengang ähnelt.
+ ///
+ public static string LectureApp_Course {
+ get {
+ return ResourceManager.GetString("LectureApp_Course", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Studiengänge ähnelt.
+ ///
+ public static string LectureApp_Courses {
+ get {
+ return ResourceManager.GetString("LectureApp_Courses", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Abschluss ähnelt.
+ ///
+ public static string LectureApp_Degree {
+ get {
+ return ResourceManager.GetString("LectureApp_Degree", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Lehrstuhl ähnelt.
+ ///
+ public static string LectureApp_Department {
+ get {
+ return ResourceManager.GetString("LectureApp_Department", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Vorlesungen - Details ähnelt.
+ ///
+ public static string LectureApp_DetailsHeader {
+ get {
+ return ResourceManager.GetString("LectureApp_DetailsHeader", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Veranstaltungsname ähnelt.
+ ///
+ public static string LectureApp_LectureName {
+ get {
+ return ResourceManager.GetString("LectureApp_LectureName", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Lehrinhalt ähnelt.
+ ///
+ public static string LectureApp_LectureTopic {
+ get {
+ return ResourceManager.GetString("LectureApp_LectureTopic", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Verantwortlicher ähnelt.
+ ///
+ public static string LectureApp_Officer {
+ get {
+ return ResourceManager.GetString("LectureApp_Officer", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Semester ähnelt.
+ ///
+ public static string LectureApp_Semester {
+ get {
+ return ResourceManager.GetString("LectureApp_Semester", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Fachsemester ähnelt.
+ ///
+ public static string LectureApp_Term {
+ get {
+ return ResourceManager.GetString("LectureApp_Term", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Vorlesungen ähnelt.
+ ///
+ public static string LectureApp_Title {
+ get {
+ return ResourceManager.GetString("LectureApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Veranstaltungsart ähnelt.
+ ///
+ public static string LectureApp_Type {
+ get {
+ return ResourceManager.GetString("LectureApp_Type", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Links ähnelt.
+ ///
+ public static string LinkApp_Title {
+ get {
+ return ResourceManager.GetString("LinkApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Webmail ähnelt.
+ ///
+ public static string MailApp_Title {
+ get {
+ return ResourceManager.GetString("MailApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Aktion ähnelt.
+ ///
+ public static string MensaApp_Action {
+ get {
+ return ResourceManager.GetString("MensaApp_Action", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Bio ähnelt.
+ ///
+ public static string MensaApp_Bio {
+ get {
+ return ResourceManager.GetString("MensaApp_Bio", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Essen 1 ähnelt.
+ ///
+ public static string MensaApp_Dinner1 {
+ get {
+ return ResourceManager.GetString("MensaApp_Dinner1", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Essen 2 ähnelt.
+ ///
+ public static string MensaApp_Dinner2 {
+ get {
+ return ResourceManager.GetString("MensaApp_Dinner2", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Essen 2 ähnelt.
+ ///
+ public static string MensaApp_Dinner3 {
+ get {
+ return ResourceManager.GetString("MensaApp_Dinner3", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Essen 4 ähnelt.
+ ///
+ public static string MensaApp_Dinner4 {
+ get {
+ return ResourceManager.GetString("MensaApp_Dinner4", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die 84 ähnelt.
+ ///
+ public static string MensaApp_DinnerLabelW {
+ get {
+ return ResourceManager.GetString("MensaApp_DinnerLabelW", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Heute nicht im Angbot ähnelt.
+ ///
+ public static string MensaApp_NotToday {
+ get {
+ return ResourceManager.GetString("MensaApp_NotToday", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Mensaplan ähnelt.
+ ///
+ public static string MensaApp_Title {
+ get {
+ return ResourceManager.GetString("MensaApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die News ähnelt.
+ ///
+ public static string NewsApp_Title {
+ get {
+ return ResourceManager.GetString("NewsApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die zur Übersicht ähnelt.
+ ///
+ public static string NewsHomeBtn {
+ get {
+ return ResourceManager.GetString("NewsHomeBtn", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Link ähnelt.
+ ///
+ public static string NewsLinkBtn {
+ get {
+ return ResourceManager.GetString("NewsLinkBtn", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Öffnungszeiten ähnelt.
+ ///
+ public static string OpenHoursApp_Title {
+ get {
+ return ResourceManager.GetString("OpenHoursApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Fachschaften ähnelt.
+ ///
+ public static string OSAApp_Title {
+ get {
+ return ResourceManager.GetString("OSAApp_Title", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Lehrstühle ähnelt.
+ ///
+ public static string Professorship_chairs {
+ get {
+ return ResourceManager.GetString("Professorship_chairs", resourceCulture);
+ }
+ }
+
///
/// Sucht eine lokalisierte Zeichenfolge, die LeftToRight ähnelt.
///
@@ -114,6 +420,60 @@ namespace CampusAppWP8.Resources {
}
}
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Freitag ähnelt.
+ ///
+ public static string Time_Day_Friday {
+ get {
+ return ResourceManager.GetString("Time_Day_Friday", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Montag ähnelt.
+ ///
+ public static string Time_Day_Monday {
+ get {
+ return ResourceManager.GetString("Time_Day_Monday", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Donnerstag ähnelt.
+ ///
+ public static string Time_Day_Thursday {
+ get {
+ return ResourceManager.GetString("Time_Day_Thursday", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Dienstag ähnelt.
+ ///
+ public static string Time_Day_Tuesday {
+ get {
+ return ResourceManager.GetString("Time_Day_Tuesday", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Mittwoch ähnelt.
+ ///
+ public static string Time_Day_Wednesday {
+ get {
+ return ResourceManager.GetString("Time_Day_Wednesday", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Stundenplan ähnelt.
+ ///
+ public static string TimeTableApp_Title {
+ get {
+ return ResourceManager.GetString("TimeTableApp_Title", resourceCulture);
+ }
+ }
+
///
/// Sucht eine lokalisierte Zeichenfolge, die Willkommen zur BTU-CampusApp WP8 ähnelt.
///
diff --git a/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx b/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx
index 72e5f29c..09832ae4 100644
--- a/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx
+++ b/CampusAppWP8/CampusAppWP8/Resources/AppResources.resx
@@ -126,7 +126,7 @@
Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.
- MEINE ANWENDUNG
+ BTU CampusApp
Beispielwert für die Laufzeiteigenschaft
@@ -140,4 +140,125 @@
Willkommen zur BTU-CampusApp WP8
+
+ Campusplan
+
+
+ Lehrstühle
+
+
+ Events
+
+
+ Hausaufgaben
+
+
+ Vorlesungen
+
+
+ Links
+
+
+ Webmail
+
+
+ Mensaplan
+
+
+ News
+
+
+ Öffnungszeiten
+
+
+ Fachschaften
+
+
+ Stundenplan
+
+
+ Studiengang
+
+
+ Abschluss
+
+
+ Veranstaltungsname
+
+
+ Semester
+
+
+ Fachsemester
+
+
+ Freitag
+
+
+ Montag
+
+
+ Donnerstag
+
+
+ Dienstag
+
+
+ Mittwoch
+
+
+ Aktion
+
+
+ Bio
+
+
+ Essen 1
+
+
+ Essen 2
+
+
+ Essen 2
+
+
+ Essen 4
+
+
+ Heute nicht im Angbot
+
+
+ zur Übersicht
+
+
+
+ 84
+
+
+ Studiengänge
+
+
+ Lehrstuhl
+
+
+ Vorlesungen - Details
+
+
+ Lehrinhalt
+
+
+ Verantwortlicher
+
+
+ Veranstaltungsart
+
+
+ Fakultät
+
+
+ Lehrstühle
+
+
+ Link
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs
new file mode 100644
index 00000000..5a0a3efd
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.Designer.cs
@@ -0,0 +1,144 @@
+//------------------------------------------------------------------------------
+//
+// Dieser Code wurde von einem Tool generiert.
+// Laufzeitversion:4.0.30319.18046
+//
+// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+// der Code erneut generiert wird.
+//
+//------------------------------------------------------------------------------
+
+namespace CampusAppWP8.Resources {
+ using System;
+
+
+ ///
+ /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ ///
+ // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Constants {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Constants() {
+ }
+
+ ///
+ /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager {
+ get {
+ if (object.ReferenceEquals(resourceMan, null)) {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CampusAppWP8.Resources.Constants", typeof(Constants).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture {
+ get {
+ return resourceCulture;
+ }
+ set {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die LectureModel ähnelt.
+ ///
+ internal static string IsolatedStorageLectureModel {
+ get {
+ return ResourceManager.GetString("IsolatedStorageLectureModel", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die ActivityId ähnelt.
+ ///
+ internal static string ParamLectureActivityId {
+ get {
+ return ResourceManager.GetString("ParamLectureActivityId", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die ModulNumber ähnelt.
+ ///
+ internal static string ParamLectureModulNumber {
+ get {
+ return ResourceManager.GetString("ParamLectureModulNumber", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die ? ähnelt.
+ ///
+ internal static string Paramseparator {
+ get {
+ return ResourceManager.GetString("Paramseparator", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die Url ähnelt.
+ ///
+ internal static string ParamUrl {
+ get {
+ return ResourceManager.GetString("ParamUrl", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die /Pages/Lecture/ModulWebPage.xaml ähnelt.
+ ///
+ internal static string PathLectureModulWebPage {
+ get {
+ return ResourceManager.GetString("PathLectureModulWebPage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die /Pages/Lecture/ResultDetailPage.xaml ähnelt.
+ ///
+ internal static string PathResultDetailWebPage {
+ get {
+ return ResourceManager.GetString("PathResultDetailWebPage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die https://www.tu-cottbus.de/modul/ ähnelt.
+ ///
+ internal static string UrlLectureModulBaseAddr {
+ get {
+ return ResourceManager.GetString("UrlLectureModulBaseAddr", resourceCulture);
+ }
+ }
+
+ ///
+ /// Sucht eine lokalisierte Zeichenfolge, die root ähnelt.
+ ///
+ internal static string XMLRootElementName {
+ get {
+ return ResourceManager.GetString("XMLRootElementName", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/CampusAppWP8/CampusAppWP8/Resources/Constants.resx b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx
new file mode 100644
index 00000000..157d81a4
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Resources/Constants.resx
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ LectureModel
+
+
+ ActivityId
+
+
+ ModulNumber
+
+
+ ?
+
+
+ Url
+
+
+ /Pages/Lecture/ModulWebPage.xaml
+
+
+ /Pages/Lecture/ResultDetailPage.xaml
+
+
+ https://www.tu-cottbus.de/modul/
+
+
+ root
+
+
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/SampleData/MainViewModelSampleData.xaml b/CampusAppWP8/CampusAppWP8/SampleData/MainViewModelSampleData.xaml
deleted file mode 100644
index 7aa39139..00000000
--- a/CampusAppWP8/CampusAppWP8/SampleData/MainViewModelSampleData.xaml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CampusAppWP8/CampusAppWP8/Utility/RestApi.cs b/CampusAppWP8/CampusAppWP8/Utility/RestApi.cs
new file mode 100644
index 00000000..f179c448
--- /dev/null
+++ b/CampusAppWP8/CampusAppWP8/Utility/RestApi.cs
@@ -0,0 +1,181 @@
+//-----------------------------------------------------------------------
+//
+// Company copyright tag.
+//
+// stubbfel
+// 10.06.2013
+//----------------------------------------------------------------------using System;
+namespace CampusAppWP8.Utility
+{
+ using System;
+ using System.Net;
+
+ ///
+ /// Class realize the access of restful RestAPI
+ ///
+ public abstract class RestApi
+ {
+ #region Members
+
+ ///
+ /// the WebClient, which send the requests
+ ///
+ private WebClient client;
+
+ #endregion
+
+ #region Constructor
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public RestApi()
+ {
+ this.client = new WebClient();
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// the url of the RestAPI base address
+ public RestApi(Uri apiBaseAddress)
+ {
+ this.client = new WebClient();
+ this.client.BaseAddress = apiBaseAddress.AbsoluteUri;
+ }
+
+ #endregion
+
+ #region Methods
+ #region public
+
+ ///
+ /// Method realize the http-get-method resource
+ ///
+ /// Url of the resource
+ /// callback method
+ public void HttpGet(Uri url, Action