Merge branch 'feature/#135' into develop

This commit is contained in:
stubbfel
2013-09-09 11:28:17 +02:00
28 changed files with 752 additions and 78 deletions

View File

@@ -9,8 +9,9 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CampusAppDLL</RootNamespace>
<AssemblyName>CampusAppDLL</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile>Client</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>

View File

@@ -33,9 +33,9 @@ Global
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|ARM.ActiveCfg = Debug|ARM
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|ARM.Build.0 = Debug|ARM
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|ARM.Deploy.0 = Debug|ARM
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Mixed Platforms.Build.0 = Debug|x86
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Win32.ActiveCfg = Debug|x86
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Win32.Build.0 = Debug|x86
{120B88CC-F3F0-4C5A-A3FD-C26E835338CC}.Debug|Win32.Deploy.0 = Debug|x86
@@ -65,9 +65,9 @@ Global
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|ARM.ActiveCfg = Debug|ARM
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|ARM.Build.0 = Debug|ARM
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|ARM.Deploy.0 = Debug|ARM
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Mixed Platforms.Build.0 = Debug|x86
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Mixed Platforms.Deploy.0 = Debug|x86
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Mixed Platforms.Deploy.0 = Debug|Any CPU
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Win32.ActiveCfg = Debug|x86
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Win32.Build.0 = Debug|x86
{E49420AA-3023-42EF-8255-67B1F5E52B43}.Debug|Win32.Deploy.0 = Debug|x86

View File

@@ -5,16 +5,12 @@
// <author>stubbfel</author>
// <sience>12.08.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.GeoApi
namespace CampusAppWP8.Api.GeoApi
{
using System;
using System.Collections.Generic;
using CampusAppWP8.Model;
using CampusAppWP8.Model.GeoDb;
using CampusAppWP8.Model.Utility;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
using System.Device.Location;
using CampusAppWP8.Utility;
/// <summary>
/// Class for SPSAPI

View File

@@ -5,7 +5,7 @@
// <author>stubbfel</author>
// <sience>06.08.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.GeoApi
namespace CampusAppWP8.Api.GeoApi
{
using System;
using System.Collections.Generic;

View File

@@ -5,7 +5,7 @@
// <author>stubbfel</author>
// <sience>13.06.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Feed.Lecture
namespace CampusAppWP8.Api.Lecture
{
using CampusAppWP8.Model;
using CampusAppWP8.Model.Lecture;

View File

@@ -0,0 +1,27 @@
//-----------------------------------------------------------------------------
// <copyright file="PersonSearchApi.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>05.09.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Api.Person
{
using CampusAppWP8.Model;
using CampusAppWP8.Model.Person;
using CampusAppWP8.Resources;
/// <summary>Person search api.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public class PersonSearchApi : XmlModel<PersonListModel>
{
/// <summary>Initializes a new instance of the PersonSearchApi class.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public PersonSearchApi()
: base(ModelType.Feed, Constants.UrlPerson_PersonSearchByName)
{
this.ValidRootName = Constants.PersonListValidRootName;
}
}
}

View File

@@ -95,6 +95,7 @@
<ItemGroup>
<Compile Include="Api\GeoApi\CampusSpsApi.cs" />
<Compile Include="Api\GeoApi\SpsApi.cs" />
<Compile Include="Api\Person\PersonSearchApi.cs" />
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
@@ -119,6 +120,7 @@
<Compile Include="Model\GeoDb\SpsModel.cs" />
<Compile Include="Model\Mensa\MealModel.cs" />
<Compile Include="Model\Person\PersonFunctionModel.cs" />
<Compile Include="Model\Person\PersonListModel.cs" />
<Compile Include="Model\Person\PersonModel.cs" />
<Compile Include="Model\Setting\AppSettings.cs" />
<Compile Include="Model\Setting\UserProfilModel.cs" />
@@ -132,6 +134,7 @@
<Compile Include="Pages\Person\PersonPage.xaml.cs">
<DependentUpon>PersonPage.xaml</DependentUpon>
</Compile>
<Compile Include="Utility\Lui\Button\AddPersonButton.cs" />
<Compile Include="Utility\NDEF\NDEFMessage.cs" />
<Compile Include="Utility\NDEF\NDEFRecord.cs" />
<Compile Include="Utility\NDEF\NDEFShortRecord.cs" />

View File

@@ -1,24 +1,42 @@
using CampusAppWP8.Resources;
using CampusAppWP8.Utility;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml.Serialization;
//-----------------------------------------------------------------------------
// <copyright file="PersonFunctionModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>05.09.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Person
{
using System.Xml.Serialization;
using CampusAppWP8.Utility;
/// <summary>Person function model.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public class PersonFunctionModel
{
/// <summary>The first tel.</summary>
private string tel1;
/// <summary>The second tel.</summary>
private string tel2;
/// <summary>The fax.</summary>
private string fax;
/// <summary>The mail.</summary>
private string mail;
/// <summary>The function.</summary>
private string function;
/// <summary>The appointment.</summary>
private string appointment;
/// <summary>The building.</summary>
private string building;
/// <summary>Gets or sets the tel 1.</summary>
/// <value>The tel 1.</value>
[XmlAttribute("telefon")]
public string Tel1
{
@@ -26,15 +44,18 @@ namespace CampusAppWP8.Model.Person
{
return this.tel1;
}
set
{
if (value != null && value != this.tel1)
if (value != null && value != string.Empty && value != this.tel1)
{
this.tel1 = StringManager.CreateUniTelefonNumber(value);
}
}
}
/// <summary>Gets or sets the tel 2.</summary>
/// <value>The tel 2.</value>
[XmlAttribute("telefon2")]
public string Tel2
{
@@ -42,15 +63,18 @@ namespace CampusAppWP8.Model.Person
{
return this.tel2;
}
set
{
if (value != null && value != this.tel2)
if (value != null && value != string.Empty && value != this.tel2)
{
this.tel2 = StringManager.CreateUniTelefonNumber(value);
}
}
}
/// <summary>Gets or sets the fax.</summary>
/// <value>The fax.</value>
[XmlAttribute("fax")]
public string Fax
{
@@ -58,24 +82,75 @@ namespace CampusAppWP8.Model.Person
{
return this.fax;
}
set
{
if (value != null && value != this.fax)
if (value != null && value != string.Empty && value != this.fax)
{
this.fax = StringManager.CreateUniTelefonNumber(value);
}
}
}
/// <summary>Gets or sets the function.</summary>
/// <value>The function.</value>
[XmlAttribute("funktion")]
public string Function { get; set; }
public string Function
{
get
{
return this.function;
}
set
{
if (value != this.function)
{
this.function = StringManager.StripHTML(value);
}
}
}
/// <summary>Gets or sets the appointment.</summary>
/// <value>The appointment.</value>
[XmlAttribute("einrichtung")]
public string Appointment { get; set; }
public string Appointment
{
get
{
return this.appointment;
}
set
{
if (value != this.appointment)
{
this.appointment = StringManager.StripHTML(value);
}
}
}
/// <summary>Gets or sets the building.</summary>
/// <value>The building.</value>
[XmlAttribute("gebaeude")]
public string Building { get; set; }
public string Building
{
get
{
return this.building;
}
set
{
if (value != this.building)
{
this.building = StringManager.StripHTML(value);
}
}
}
/// <summary>Gets or sets the mail.</summary>
/// <value>The mail.</value>
[XmlAttribute("mail")]
public string Mail
{
@@ -83,6 +158,7 @@ namespace CampusAppWP8.Model.Person
{
return this.mail;
}
set
{
if (value != null && value != this.mail && StringManager.IsValidEmail(value))
@@ -92,6 +168,12 @@ namespace CampusAppWP8.Model.Person
}
}
/// <summary>Gets or sets the identifier of the person.</summary>
/// <value>The identifier of the person.</value>
public string PersonID { get; set; }
/// <summary>Gets or sets zero-based index of the function.</summary>
/// <value>The function index.</value>
public int FunctionIndex { get; set; }
}
}

View File

@@ -0,0 +1,79 @@
//-----------------------------------------------------------------------------
// <copyright file="PersonListModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>05.09.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Person
{
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Xml.Serialization;
/// <summary>Person list model.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
[XmlRoot("Uebersicht")]
public class PersonListModel
{
/// <summary>Gets or sets the persons.</summary>
/// <value>The persons.</value>
[XmlElement("person")]
public ObservableCollection<PersonModel> Persons { get; set; }
/// <summary>Sets person identifier to function.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public void SetPersonIdToFunction()
{
foreach (PersonModel person in this.Persons)
{
person.SetPersonIdToFunction();
}
}
/// <summary>Gets a person.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
/// <param name="id">The identifier.</param>
/// <returns>The person.</returns>
public PersonModel GetPerson(string id)
{
foreach (PersonModel tmpPerson in this.Persons)
{
if (tmpPerson.ID.Equals(id))
{
return tmpPerson;
}
}
return null;
}
/// <summary>Removes the non function and set identifiers person.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public void RemoveNonFunctionAndSetIdsPerson()
{
this.RemoveNonFunctionPerson();
this.SetPersonIdToFunction();
}
/// <summary>Removes the non function person.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public void RemoveNonFunctionPerson()
{
List<PersonModel> removeList = new List<PersonModel>();
foreach (PersonModel tmpPerson in this.Persons)
{
if (tmpPerson.Functions.Count < 1)
{
removeList.Add(tmpPerson);
}
}
foreach (PersonModel removePerson in removeList)
{
this.Persons.Remove(removePerson);
}
}
}
}

View File

@@ -1,28 +1,157 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
//-----------------------------------------------------------------------------
// <copyright file="PersonModel.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>05.09.2013</sience>
//-----------------------------------------------------------------------------
namespace CampusAppWP8.Model.Person
{
using System.Collections.ObjectModel;
using System.Xml.Serialization;
using CampusAppWP8.Utility;
/// <summary>Person model.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public class PersonModel
{
/// <summary>The akadgrad.</summary>
private string akadgrad;
/// <summary>Name of the sur.</summary>
private string surName;
/// <summary>The person's first name.</summary>
private string firstName;
/// <summary>The identifier.</summary>
private string id;
/// <summary>The functions.</summary>
private ObservableCollection<PersonFunctionModel> functions;
/// <summary>Gets or sets the identifier.</summary>
/// <value>The identifier.</value>
[XmlAttribute("id")]
public string ID {get; set;}
public string ID
{
get
{
return this.id;
}
set
{
if (value != this.id)
{
this.id = value;
this.SetPersonIdToFunction();
}
}
}
/// <summary>Gets or sets the akadgrad.</summary>
/// <value>The akadgrad.</value>
[XmlAttribute("akadgrad")]
public string Akadgrad { get; set; }
public string Akadgrad
{
get
{
return this.akadgrad;
}
set
{
if (value != this.akadgrad)
{
this.akadgrad = StringManager.StripHTML(value);
}
}
}
/// <summary>Gets or sets the name of the sur.</summary>
/// <value>The name of the sur.</value>
[XmlAttribute("nachname")]
public string SureName { get; set; }
public string SurName
{
get
{
return this.surName;
}
set
{
if (value != this.surName)
{
this.surName = StringManager.StripHTML(value);
}
}
}
/// <summary>Gets or sets the person's first name.</summary>
/// <value>The name of the first.</value>
[XmlAttribute("vorname")]
public string FirstName { get; set; }
public string FirstName
{
get
{
return this.firstName;
}
set
{
if (value != this.firstName)
{
this.firstName = StringManager.StripHTML(value);
}
}
}
/// <summary>Gets or sets the functions of a person.</summary>
/// <value>The functions.</value>
[XmlElement("funktion")]
public ObservableCollection<PersonFunctionModel> Function { get; set; }
public ObservableCollection<PersonFunctionModel> Functions
{
get
{
return this.functions;
}
set
{
if (value != this.functions)
{
this.functions = value;
this.SetPersonIdToFunction();
}
}
}
/// <summary>Gets the name of a Person (FirstName SurName).</summary>
/// <value>The name of a Person.</value>
public string FullName
{
get
{
return this.Akadgrad + " " + this.FirstName + " " + this.SurName;
}
}
/// <summary>Sets person identifier to function.</summary>
/// <remarks>Stubbfel, 05.09.2013.</remarks>
public void SetPersonIdToFunction()
{
if (this.id == null || this.id.Equals(string.Empty) || this.functions == null)
{
return;
}
int index = 0;
foreach (PersonFunctionModel function in this.functions)
{
function.PersonID = this.ID;
function.FunctionIndex = index++;
}
}
}
}

View File

@@ -50,7 +50,7 @@ namespace CampusAppWP8.Pages.Departments
DepartmentIndexPage.feed.OnFailedWeb += new DepartmentFeed.OnFailed(this.FeedIsFailedWeb);
DepartmentIndexPage.feed.OnFailedFile += new DepartmentFeed.OnFailed(this.FeedIsFailedFile);
DepartmentIndexPage.feed.LoadData(Utilities.getLoadModus<Model.Departments.DepartmentModel>());
DepartmentIndexPage.feed.LoadData(Utilities.GetLoadModus<Model.Departments.DepartmentModel>());
if (DepartmentIndexPage.favorite == null)
{

View File

@@ -49,7 +49,7 @@ namespace CampusAppWP8.Pages.Events
EventIndexPage.eventFeed.OnLoaded += new EventFeed.OnIO(this.SetupEventPageList);
EventIndexPage.eventFeed.OnFailedWeb += new EventFeed.OnFailed(this.FeedIsFailedWeb);
EventIndexPage.eventFeed.OnFailedFile += new EventFeed.OnFailed(this.FeedIsFailedFile);
EventIndexPage.eventFeed.LoadData(Utilities.getLoadModus<Model.RSS.RSSViewModel>());
EventIndexPage.eventFeed.LoadData(Utilities.GetLoadModus<Model.RSS.RSSViewModel>());
}
/// <summary>

View File

@@ -47,7 +47,7 @@ namespace CampusAppWP8.Pages.Exams
}
this.ProgressBar.Visibility = System.Windows.Visibility.Visible;
this.feed.LoadData(Utilities.getLoadModus<Model.Exams.ExamListModel>());
this.feed.LoadData(Utilities.GetLoadModus<Model.Exams.ExamListModel>());
}
/// <summary>

View File

@@ -11,7 +11,7 @@ namespace CampusAppWP8.Pages.Lecture
using System.Collections.Generic;
using System.Windows;
using System.Windows.Navigation;
using CampusAppWP8.Feed.Lecture;
using CampusAppWP8.Api.Lecture;
using CampusAppWP8.Model.Lecture;
using CampusAppWP8.Model.Utility;
using CampusAppWP8.Resources;
@@ -159,9 +159,6 @@ namespace CampusAppWP8.Pages.Lecture
/// <summary>
/// Method send a request to the Feed
/// </summary>
/// <remarks>
/// have to refactors
/// </remarks>
/// <param name="sender">sender of this event</param>
/// <param name="e"> events arguments</param>
private void SendRequest(object sender, RoutedEventArgs e)

View File

@@ -67,8 +67,8 @@ namespace CampusAppWP8.Pages.Links
this.InitializeFeeds();
this.ProgressBar.Visibility = System.Windows.Visibility.Visible;
this.loadingFeeds = 2;
this.commonLinkFeed.LoadData(Utilities.getLoadModus<Model.Link.LinkListModel>());
this.clubLinkFeed.LoadData(Utilities.getLoadModus<Model.Link.LinkListModel>());
this.commonLinkFeed.LoadData(Utilities.GetLoadModus<Model.Link.LinkListModel>());
this.clubLinkFeed.LoadData(Utilities.GetLoadModus<Model.Link.LinkListModel>());
}
/// <summary>

View File

@@ -11,7 +11,7 @@ namespace CampusAppWP8.Pages.Mensa
using System.Threading;
using System.Windows;
using System.Windows.Navigation;
using CampusAppWP8.Feed.GeoApi;
using CampusAppWP8.Api.GeoApi;
using CampusAppWP8.Feed.Mensa;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility.Lui.MessageBoxes;
@@ -177,7 +177,7 @@ namespace CampusAppWP8.Pages.Mensa
}
else
{
this.feed.LoadData(Utilities.getLoadModus<Model.Mensa.MenuWeekModel>());
this.feed.LoadData(Utilities.GetLoadModus<Model.Mensa.MenuWeekModel>());
}
}

View File

@@ -49,7 +49,7 @@ namespace CampusAppWP8.Pages.News
NewsIndexPage.newsFeed.OnLoaded += new NewsFeed.OnIO(this.SetupNewsPageList);
NewsIndexPage.newsFeed.OnFailedWeb += new NewsFeed.OnFailed(this.FeedIsFailWeb);
NewsIndexPage.newsFeed.OnFailedFile += new NewsFeed.OnFailed(this.FeedIsFailFile);
NewsIndexPage.newsFeed.LoadData(Utilities.getLoadModus<Model.RSS.RSSViewModel>());
NewsIndexPage.newsFeed.LoadData(Utilities.GetLoadModus<Model.RSS.RSSViewModel>());
}
/// <summary>

View File

@@ -52,7 +52,7 @@ namespace CampusAppWP8.Pages.Openinghours
this.feed.OnLoaded += new OpeninghoursFeed.OnIO(this.FeedIsReady);
this.feed.OnFailedWeb += new OpeninghoursFeed.OnFailed(this.FeedIsFailedWeb);
this.feed.OnFailedFile += new OpeninghoursFeed.OnFailed(this.FeedIsFailedFile);
this.feed.LoadData(Utilities.getLoadModus<Model.Openinghours.OpeninghoursModel>());
this.feed.LoadData(Utilities.GetLoadModus<Model.Openinghours.OpeninghoursModel>());
}
this.isNewInstance = true;

View File

@@ -6,6 +6,7 @@
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"
xmlns:lui="clr-namespace:CampusAppWP8.Utility.Lui.Button"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
@@ -20,6 +21,8 @@
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ProgressBar Name="ProgressBar" Grid.Row="1" Visibility="Collapsed" IsIndeterminate="True"/>
<!--TitlePanel enthält den Namen der Anwendung und den Seitentitel-->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Text="{Binding Path=LocalizedResources.ApplicationTitle, Source={StaticResource LocalizedStrings}}" Style="{StaticResource PhoneTextNormalStyle}"/>
@@ -33,18 +36,22 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Nachname: " Grid.Row="0"/>
<StackPanel Orientation="Horizontal" Grid.Row="0">
<TextBlock Text="{Binding Path=LocalizedResources.PersonApp_SearchTextLabel, Source={StaticResource LocalizedStrings}}"/>
<TextBlock Text=" : "/>
</StackPanel>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<TextBox AcceptsReturn="False" Grid.Column="0" InputScope="PersonalSurname"/>
<Button Grid.Column="1">
<TextBox Name="SearchName" AcceptsReturn="False" Grid.Column="0" InputScope="PersonalSurname"/>
<Button Grid.Column="1" Click="SendRequest">
<Image Source="{Binding Path=ThemelizedIcon.Search, Source={StaticResource ThemelizedIcons}}" Width="50"/>
</Button>
</Grid>
<ListBox x:Name="ResultPanel" ItemsSource="{Binding Value}" Grid.Row="2">
<ListBox x:Name="ResultBox" Grid.Row="2">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
@@ -54,9 +61,61 @@
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button Tag="{Binding Link}" Style="{StaticResource ListButtonStyle}">
<TextBlock Text="{Binding Caption}" TextWrapping="Wrap"/>
</Button>
<lui:ToggleButton ToggleContentTag="{Binding Path=Constants.ToggleContent, Source={StaticResource Const}}" Style="{StaticResource ListButtonStyle}">
<TextBlock Text="{Binding FullName}" TextWrapping="Wrap"/>
</lui:ToggleButton>
<StackPanel Tag="{Binding Path=Constants.ToggleContent, Source={StaticResource Const}}" Visibility="Collapsed">
<ListBox ItemsSource="{Binding Functions}">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="{StaticResource PhoneBorderBrush}" BorderThickness="0,0,0,1" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="0">
<TextBlock Text="{Binding Path=LocalizedResources.PersonApp_FunctionName, Source={StaticResource LocalizedStrings}}" />
<TextBlock Text=" : "/>
</StackPanel>
<TextBlock Text="{Binding Function}" Grid.Row="0" Grid.Column="1" TextWrapping="Wrap"/>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="0">
<TextBlock Text="{Binding Path=LocalizedResources.PersonApp_Appointment, Source={StaticResource LocalizedStrings}}"/>
<TextBlock Text=" : "/>
</StackPanel>
<TextBlock Text="{Binding Appointment}" Grid.Row="1" Grid.Column="1" TextWrapping="Wrap"/>
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="0">
<TextBlock Text ="{Binding Path=LocalizedResources.PersonApp_Building, Source={StaticResource LocalizedStrings}}" />
<TextBlock Text=" : "/>
</StackPanel>
<TextBlock Text="{Binding Building}" Grid.Row="2" Grid.Column="1" TextWrapping="Wrap"/>
<StackPanel Grid.Row="3" Grid.Column="1" Orientation="Horizontal">
<lui:EmailButton EmailAddress="{Binding Mail}" Height="100" />
<lui:PhoneButton Number="{Binding Tel1}" Height="100" />
<lui:AddPersonButton Height="100" Click="Button_Click" PersonId="{Binding PersonID}" FunctionIndex="{Binding FunctionIndex}" />
</StackPanel>
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>

View File

@@ -1,20 +1,131 @@
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;
//-----------------------------------------------------------------------
// <copyright file="PersonPage.xaml.cs" company="BTU/IIT">
// Company copyright tag.
// </copyright>
// <author>stubbfel</author>
// <sience>09.09.2013</sience>
//----------------------------------------------------------------------
namespace CampusAppWP8.Pages.Person
{
using System.Collections.Generic;
using System.Windows;
using CampusAppWP8.Api.Person;
using CampusAppWP8.Model.Person;
using CampusAppWP8.Model.Utility;
using CampusAppWP8.Resources;
using CampusAppWP8.Utility.Lui.Button;
using CampusAppWP8.Utility.Lui.MessageBoxes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
/// <summary>Person page.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
public partial class PersonPage : PhoneApplicationPage
{
/// <summary>The API.</summary>
private PersonSearchApi api;
/// <summary>Initializes a new instance of the PersonPage class.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
public PersonPage()
{
InitializeComponent();
this.InitializeComponent();
}
/// <summary>Sends a request.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
/// <param name="sender">Source of the event.</param>
/// <param name="e"> Routed event information.</param>
private void SendRequest(object sender, RoutedEventArgs e)
{
string query = this.SearchName.Text.Trim();
if (query.Equals(string.Empty))
{
return;
}
this.api = new PersonSearchApi();
this.api.OnLoaded += new PersonSearchApi.OnIO(this.ApiIsReady);
this.api.OnFailedLoad += new PersonSearchApi.OnFailed(this.ApiIsFail);
this.ProgressBar.Visibility = System.Windows.Visibility.Visible;
List<UrlParamModel> parameterList = this.CreateUrlParameter(query);
this.api.SetUriParams(parameterList);
this.api.LoadData();
}
/// <summary>Creates URL parameter.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
/// <param name="name">The name.</param>
/// <returns>The new URL parameter.</returns>
private List<UrlParamModel> CreateUrlParameter(string name)
{
List<UrlParamModel> parameterList = new List<UrlParamModel>();
parameterList.Add(new CleanUrlParamModel(Constants.ParamPersonList, name));
return parameterList;
}
/// <summary>API is fail.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
private void ApiIsFail()
{
MessageBoxResult result = MessageBoxes.ShowMainModelErrorMessageBox(AppResources.MsgBox_ErrorMainModelLoad);
this.ProgressBar.Visibility = Visibility.Collapsed;
}
/// <summary>API is ready.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
private void ApiIsReady()
{
this.SetupResultBox();
this.ProgressBar.Visibility = Visibility.Collapsed;
}
/// <summary>Sets up the result box.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
private void SetupResultBox()
{
this.api.Model.RemoveNonFunctionAndSetIdsPerson();
this.ResultBox.ItemsSource = this.api.Model.Persons;
}
/// <summary>Event handler. Called by Button for click events.</summary>
/// <remarks>Stubbfel, 09.09.2013.</remarks>
/// <param name="sender">Source of the event.</param>
/// <param name="e"> Routed event information.</param>
private void Button_Click(object sender, RoutedEventArgs e)
{
AddPersonButton btn = sender as AddPersonButton;
if (btn == null)
{
return;
}
string personID = btn.PersonId as string;
int functionIndex = (int)btn.FunctionIndex;
PersonModel person = this.api.Model.GetPerson(personID);
if (person == null)
{
return;
}
SaveContactTask saveContactTask = new SaveContactTask();
saveContactTask.FirstName = person.FirstName;
saveContactTask.LastName = person.SurName;
saveContactTask.Title = person.Akadgrad;
saveContactTask.JobTitle = person.Functions[functionIndex].Function;
saveContactTask.Company = Constants.Addr_CBMainCompanyName + " - " + person.Functions[functionIndex].Appointment;
saveContactTask.WorkAddressCountry = Constants.Addr_CBMainCountry;
saveContactTask.WorkAddressCity = Constants.Addr_CBMainCity;
saveContactTask.WorkAddressState = Constants.Addr_CBMainState;
saveContactTask.WorkAddressZipCode = Constants.Addr_CBMainZipCode;
saveContactTask.WorkAddressStreet = person.Functions[functionIndex].Building;
saveContactTask.WorkPhone = person.Functions[functionIndex].Tel1;
saveContactTask.WorkEmail = person.Functions[functionIndex].Mail;
saveContactTask.Show();
}
}
}

View File

@@ -60,7 +60,7 @@ namespace CampusAppWP8.Pages.StudentCouncil
}
this.ProgressBar.Visibility = System.Windows.Visibility.Visible;
this.feed.LoadData(Utilities.getLoadModus<Model.StudentCouncil.StudentCouncilListModel>());
this.feed.LoadData(Utilities.GetLoadModus<Model.StudentCouncil.StudentCouncilListModel>());
}
/// <summary>

View File

@@ -699,6 +699,33 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Einrichtung ähnelt.
/// </summary>
public static string PersonApp_Appointment {
get {
return ResourceManager.GetString("PersonApp_Appointment", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Sitz ähnelt.
/// </summary>
public static string PersonApp_Building {
get {
return ResourceManager.GetString("PersonApp_Building", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Tätigkeit ähnelt.
/// </summary>
public static string PersonApp_FunctionName {
get {
return ResourceManager.GetString("PersonApp_FunctionName", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Personensuche ähnelt.
/// </summary>
@@ -708,6 +735,15 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Nachname ähnelt.
/// </summary>
public static string PersonApp_SearchTextLabel {
get {
return ResourceManager.GetString("PersonApp_SearchTextLabel", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Personen ähnelt.
/// </summary>

View File

@@ -431,4 +431,16 @@
<data name="PersonApp_Title" xml:space="preserve">
<value>Personen</value>
</data>
<data name="PersonApp_Appointment" xml:space="preserve">
<value>Einrichtung</value>
</data>
<data name="PersonApp_Building" xml:space="preserve">
<value>Sitz</value>
</data>
<data name="PersonApp_FunctionName" xml:space="preserve">
<value>Tätigkeit</value>
</data>
<data name="PersonApp_SearchTextLabel" xml:space="preserve">
<value>Nachname</value>
</data>
</root>

View File

@@ -60,6 +60,51 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Cottbus ähnelt.
/// </summary>
public static string Addr_CBMainCity {
get {
return ResourceManager.GetString("Addr_CBMainCity", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die BTU ähnelt.
/// </summary>
public static string Addr_CBMainCompanyName {
get {
return ResourceManager.GetString("Addr_CBMainCompanyName", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die De ähnelt.
/// </summary>
public static string Addr_CBMainCountry {
get {
return ResourceManager.GetString("Addr_CBMainCountry", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Brandenburg ähnelt.
/// </summary>
public static string Addr_CBMainState {
get {
return ResourceManager.GetString("Addr_CBMainState", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die 03046 ähnelt.
/// </summary>
public static string Addr_CBMainZipCode {
get {
return ResourceManager.GetString("Addr_CBMainZipCode", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die DevMode ähnelt.
/// </summary>
@@ -564,6 +609,15 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Uebersicht ähnelt.
/// </summary>
public static string ParamPersonList {
get {
return ResourceManager.GetString("ParamPersonList", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die pivotindex ähnelt.
/// </summary>
@@ -780,6 +834,15 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Uebersicht ähnelt.
/// </summary>
public static string PersonListValidRootName {
get {
return ResourceManager.GetString("PersonListValidRootName", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die [+-]{0,1}[0-9]+[.,]{0,1}[0-9]+[\s][+-]{0,1}[0-9]+[.,]{0,1}[0-9]+ ähnelt.
/// </summary>
@@ -978,6 +1041,15 @@ namespace CampusAppWP8.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die https://www.zv.tu-cottbus.de/CMS-Webservice/Person ähnelt.
/// </summary>
public static string UrlPerson_PersonSearchByName {
get {
return ResourceManager.GetString("UrlPerson_PersonSearchByName", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die http://141.43.76.140/service/sps ähnelt.
/// </summary>

View File

@@ -459,4 +459,28 @@
<data name="UniCBTelPrefix" xml:space="preserve">
<value>035569</value>
</data>
<data name="PersonListValidRootName" xml:space="preserve">
<value>Uebersicht</value>
</data>
<data name="UrlPerson_PersonSearchByName" xml:space="preserve">
<value>https://www.zv.tu-cottbus.de/CMS-Webservice/Person</value>
</data>
<data name="Addr_CBMainCity" xml:space="preserve">
<value>Cottbus</value>
</data>
<data name="Addr_CBMainCompanyName" xml:space="preserve">
<value>BTU</value>
</data>
<data name="Addr_CBMainCountry" xml:space="preserve">
<value>De</value>
</data>
<data name="Addr_CBMainState" xml:space="preserve">
<value>Brandenburg</value>
</data>
<data name="Addr_CBMainZipCode" xml:space="preserve">
<value>03046</value>
</data>
<data name="ParamPersonList" xml:space="preserve">
<value>Uebersicht</value>
</data>
</root>

View File

@@ -1,6 +1,7 @@
<StyleCopSettings Version="105">
<GlobalSettings>
<CollectionProperty Name="RecognizedWords">
<Value>api</Value>
<Value>enum</Value>
<Value>Stubbfel</Value>
</CollectionProperty>

View File

@@ -0,0 +1,43 @@
using CampusAppWP8.Resources;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace CampusAppWP8.Utility.Lui.Button
{
public class AddPersonButton : System.Windows.Controls.Button
{
private static BitmapImage icon = new BitmapImage(new Uri(Icons.Add, UriKind.Relative));
public AddPersonButton()
: base()
{
this.Content = new Image
{
Source = icon
};
}
public static readonly DependencyProperty PersonIdProperty = DependencyProperty.Register("PersonID", typeof(object), typeof(AddPersonButton), new PropertyMetadata(false));
public static readonly DependencyProperty FunctionIndexProperty = DependencyProperty.Register("FunctionIndex", typeof(object), typeof(AddPersonButton), new PropertyMetadata(false));
public object PersonId
{
get { return (object)this.GetValue(PersonIdProperty); }
set { this.SetValue(PersonIdProperty, value); }
}
public object FunctionIndex
{
get { return (object)this.GetValue(FunctionIndexProperty); }
set { this.SetValue(FunctionIndexProperty, value); }
}
}
}

View File

@@ -302,12 +302,13 @@ namespace CampusAppWP8.Utility
return true;
}
}
return false;
}
/// <summary>Queries if a wifik is available.</summary>
/// <summary>Queries if a wifi is available.</summary>
/// <remarks>Stubbfel, 26.08.2013.</remarks>
/// <returns>true if a wifik is available, false if not.</returns>
/// <returns>true if a wifi is available, false if not.</returns>
public static bool IsWifiAvailable()
{
NetworkInterfaceList networkInterfaceList = new NetworkInterfaceList();
@@ -320,6 +321,7 @@ namespace CampusAppWP8.Utility
return true;
}
}
return false;
}
@@ -327,7 +329,7 @@ namespace CampusAppWP8.Utility
/// <remarks>Stubbfel, 27.08.2013.</remarks>
/// <typeparam name="T">Generic type parameter.</typeparam>
/// <returns>The load modus&lt; t&gt;</returns>
public static MainModel<T>.ForceType getLoadModus<T>()
public static MainModel<T>.ForceType GetLoadModus<T>()
{
if (Settings.AppSetting.OnlyWifi && !Settings.AppSetting.WifiEnable)
{