Showing with 2,163 additions and 557 deletions.
  1. +5 −0 MediaPortal/Incubator/Login/Language/strings_en.xml
  2. +12 −0 MediaPortal/Incubator/Login/Login.csproj
  3. +71 −45 MediaPortal/Incubator/Login/LoginModel.cs
  4. +42 −0 MediaPortal/Incubator/Login/Skin/default/screens/Login.xaml
  5. +14 −0 MediaPortal/Incubator/Login/Skin/default/workflow/login-actions.xml
  6. +11 −1 MediaPortal/Incubator/Login/build.targets
  7. +17 −3 MediaPortal/Incubator/Login/plugin.xml
  8. +97 −0 MediaPortal/Incubator/Trakt/Skin/BlueVision/themes/Titanium Extended/screens/dialogTraktSetup.xaml
  9. +31 −30 MediaPortal/Incubator/Trakt/Skin/default/screens/dialogTraktSetup.xaml
  10. +5 −0 MediaPortal/Incubator/Trakt/Trakt.csproj
  11. +6 −0 MediaPortal/Source/Base/Server/Scripts/UserProfileDataManagement-1.0-1.1.sql
  12. +52 −0 ...ediaPortal.Backend/Services/UserProfileDataManagement/UPnPUserProfileDataManagementServiceImpl.cs
  13. +53 −4 ...l/Source/Core/MediaPortal.Backend/Services/UserProfileDataManagement/UserProfileDataManagement.cs
  14. +35 −5 ...ore/MediaPortal.Backend/Services/UserProfileDataManagement/UserProfileDataManagement_SubSchema.cs
  15. +154 −117 MediaPortal/Source/Core/MediaPortal.Common/Genres/GenreMapper.cs
  16. +3 −3 MediaPortal/Source/Core/MediaPortal.Common/Genres/GenreMapping.cs
  17. +94 −0 MediaPortal/Source/Core/MediaPortal.Common/Genres/GenreStringManager.cs
  18. +70 −0 MediaPortal/Source/Core/MediaPortal.Common/Genres/Language/strings_en.xml
  19. +2 −0 MediaPortal/Source/Core/MediaPortal.Common/Genres/MusicGenre.cs
  20. +8 −1 MediaPortal/Source/Core/MediaPortal.Common/MediaManagement/DefaultItemAspects/MediaAspect.cs
  21. +20 −0 MediaPortal/Source/Core/MediaPortal.Common/MediaManagement/MediaItem.cs
  22. +7 −1 MediaPortal/Source/Core/MediaPortal.Common/MediaPortal.Common.csproj
  23. +12 −8 ...l/Source/Core/MediaPortal.Common/Services/MediaManagement/ImportDataflowBlocks/FileUnfoldBlock.cs
  24. +0 −1 MediaPortal/Source/Core/MediaPortal.Common/Services/MediaManagement/MediaAccessor.cs
  25. +16 −0 ...Core/MediaPortal.Common/Services/ServerCommunication/UPnPUserProfileDataManagementServiceProxy.cs
  26. +3 −1 MediaPortal/Source/Core/MediaPortal.Common/UserProfileDataManagement/IUserProfileDataManagement.cs
  27. +89 −2 MediaPortal/Source/Core/MediaPortal.Common/UserProfileDataManagement/UserProfile.cs
  28. +6 −1 MediaPortal/Source/Core/MediaPortal.Common/build.targets
  29. +5 −1 MediaPortal/Source/Core/MediaPortal.UI/Services/Players/PlayerContextManager.cs
  30. +49 −0 MediaPortal/Source/Core/MediaPortal.Utilities/Collections/SafeList.cs
  31. +1 −0 MediaPortal/Source/Core/MediaPortal.Utilities/MediaPortal.Utilities.csproj
  32. +35 −8 MediaPortal/Source/Core/UPnP/Infrastructure/CP/SSDP/SSDPClientController.cs
  33. +3 −4 .../Source/Extensions/MetadataExtractors/AudioMetadataExtractor/FanArtHandlers/AudioFanArtHandler.cs
  34. +2 −1 ...adataExtractors/AudioMetadataExtractor/RelationshipExtractors/AlbumArtistRelationshipExtractor.cs
  35. +2 −1 ...tadataExtractors/AudioMetadataExtractor/RelationshipExtractors/AlbumLabelRelationshipExtractor.cs
  36. +2 −1 ...Extractors/AudioMetadataExtractor/RelationshipExtractors/TrackAlbumArtistRelationshipExtractor.cs
  37. +2 −1 ...adataExtractors/AudioMetadataExtractor/RelationshipExtractors/TrackArtistRelationshipExtractor.cs
  38. +2 −1 ...ataExtractors/AudioMetadataExtractor/RelationshipExtractors/TrackComposerRelationshipExtractor.cs
  39. +2 −1 ...taExtractors/AudioMetadataExtractor/RelationshipExtractors/TrackConductorRelationshipExtractor.cs
  40. +6 −1 MediaPortal/Source/Extensions/MetadataExtractors/BluRayMetadaExtractor/BluRayMetadataExtractor.cs
  41. +5 −6 .../Source/Extensions/MetadataExtractors/MovieMetadataExtractor/FanArtHandlers/MovieFanArtHandler.cs
  42. +2 −1 ...tadataExtractors/MovieMetadataExtractor/RelationshipExtractors/MovieActorRelationshipExtractor.cs
  43. +2 −1 ...taExtractors/MovieMetadataExtractor/RelationshipExtractors/MovieCharacterRelationshipExtractor.cs
  44. +2 −1 ...ataExtractors/MovieMetadataExtractor/RelationshipExtractors/MovieDirectorRelationshipExtractor.cs
  45. +2 −1 ...aExtractors/MovieMetadataExtractor/RelationshipExtractors/MovieProductionRelationshipExtractor.cs
  46. +2 −1 ...adataExtractors/MovieMetadataExtractor/RelationshipExtractors/MovieWriterRelationshipExtractor.cs
  47. +8 −8 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/NfoMovieMetadataExtractor.cs
  48. +13 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/NfoReaders/NfoAlbumReader.cs
  49. +13 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/NfoReaders/NfoMovieReader.cs
  50. +13 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/NfoReaders/NfoSeriesReader.cs
  51. +8 −8 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/NfoSeriesMetadataExtractor.cs
  52. +2 −1 ...adataExtractors/NfoMetadataExtractors/RelationshipExtractors/EpisodeActorRelationshipExtractor.cs
  53. +2 −1 ...aExtractors/NfoMetadataExtractors/RelationshipExtractors/EpisodeCharacterRelationshipExtractor.cs
  54. +2 −1 ...dataExtractors/NfoMetadataExtractors/RelationshipExtractors/EpisodeSeriesRelationshipExtractor.cs
  55. +2 −1 ...etadataExtractors/NfoMetadataExtractors/RelationshipExtractors/MovieActorRelationshipExtractor.cs
  56. +2 −1 ...ataExtractors/NfoMetadataExtractors/RelationshipExtractors/MovieCharacterRelationshipExtractor.cs
  57. +2 −1 ...dataExtractors/NfoMetadataExtractors/RelationshipExtractors/MovieDirectorRelationshipExtractor.cs
  58. +2 −1 ...tadataExtractors/NfoMetadataExtractors/RelationshipExtractors/SeriesActorRelationshipExtractor.cs
  59. +2 −1 ...taExtractors/NfoMetadataExtractors/RelationshipExtractors/SeriesCharacterRelationshipExtractor.cs
  60. +1 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/StubAudioMetadataExtractor.cs
  61. +1 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/StubMovieMetadataExtractor.cs
  62. +1 −0 ...aPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/StubSeriesMetadataExtractor.cs
  63. +6 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/Stubs/AlbumStub.cs
  64. +6 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/Stubs/MovieStub.cs
  65. +6 −0 MediaPortal/Source/Extensions/MetadataExtractors/NfoMetadataExtractors/Stubs/SeriesStub.cs
  66. +2 −0 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Libraries/IMovieMatcher.cs
  67. +2 −0 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Libraries/IMusicMatcher.cs
  68. +2 −0 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Libraries/ISeriesMatcher.cs
  69. +2 −4 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Matchers/MovieMatcher.cs
  70. +2 −0 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Matchers/MovieOmDbMatcher.cs
  71. +3 −5 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Matchers/MusicMatcher.cs
  72. +1 −3 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Matchers/SeriesMatcher.cs
  73. +2 −0 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/Matchers/SeriesOmDbMatcher.cs
  74. +3 −2 MediaPortal/Source/Extensions/MetadataExtractors/OnlineLibraries/OnlineMatcherService.cs
  75. +4 −5 ...ource/Extensions/MetadataExtractors/SeriesMetadataExtractor/FanArtHandlers/SeriesFanArtHandler.cs
  76. +2 −1 ...ataExtractors/SeriesMetadataExtractor/RelationshipExtractors/EpisodeActorRelationshipExtractor.cs
  77. +2 −1 ...xtractors/SeriesMetadataExtractor/RelationshipExtractors/EpisodeCharacterRelationshipExtractor.cs
  78. +2 −1 ...Extractors/SeriesMetadataExtractor/RelationshipExtractors/EpisodeDirectorRelationshipExtractor.cs
  79. +2 −4 ...taExtractors/SeriesMetadataExtractor/RelationshipExtractors/EpisodeSeasonRelationshipExtractor.cs
  80. +2 −1 ...taExtractors/SeriesMetadataExtractor/RelationshipExtractors/EpisodeSeriesRelationshipExtractor.cs
  81. +2 −1 ...taExtractors/SeriesMetadataExtractor/RelationshipExtractors/EpisodeWriterRelationshipExtractor.cs
  82. +2 −1 ...dataExtractors/SeriesMetadataExtractor/RelationshipExtractors/SeriesActorRelationshipExtractor.cs
  83. +2 −1 ...Extractors/SeriesMetadataExtractor/RelationshipExtractors/SeriesCharacterRelationshipExtractor.cs
  84. +2 −1 ...taExtractors/SeriesMetadataExtractor/RelationshipExtractors/SeriesEpisodeRelationshipExtractor.cs
  85. +2 −1 ...taExtractors/SeriesMetadataExtractor/RelationshipExtractors/SeriesNetworkRelationshipExtractor.cs
  86. +2 −1 ...xtractors/SeriesMetadataExtractor/RelationshipExtractors/SeriesProductionRelationshipExtractor.cs
  87. +1 −0 MediaPortal/Source/MP2-Client.sln
  88. +41 −0 MediaPortal/Source/UI/Players/BassPlayer/BassPlayerPlugin.cs
  89. +8 −25 MediaPortal/Source/UI/Players/BassPlayer/Controller.cs
  90. +10 −0 MediaPortal/Source/UI/Players/BassPlayer/Interfaces/IOutputDevice.cs
  91. +7 −1 MediaPortal/Source/UI/Players/BassPlayer/OutputDevices/AbstractOutputDevice.cs
  92. +48 −11 MediaPortal/Source/UI/Players/BassPlayer/OutputDevices/DirectXOutputDevice.cs
  93. +38 −0 MediaPortal/Source/UI/Players/BassPlayer/OutputDevices/WASAPIOutputDevice.cs
  94. +44 −2 MediaPortal/Source/UI/Players/VideoPlayer/VideoPlayerBuilder.cs
  95. +6 −0 MediaPortal/Source/UI/SkinEngine/InputManagement/InputManager.cs
  96. BIN MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/images/temp_measure.png
  97. +2 −3 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/screens/weather.xaml
  98. +1 −1 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/Win10/screens/master_bare.xaml
  99. +4 −5 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/Win10/screens/weather.xaml
  100. +5 −5 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/Win10/styles/Buttons.xaml
  101. +3 −0 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/Win10/styles/Consts.xaml
  102. +7 −1 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/Win10/styles/MediaStyles.xaml
  103. +15 −8 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/Win10/styles/WeatherStyles.xaml
  104. +1 −0 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/default/styles/Consts.xaml
  105. +26 −8 MediaPortal/Source/UI/Skins/BlueVision/Skin/BlueVision/themes/default/styles/WeatherStyles.xaml
  106. +13 −17 ...l/Source/UI/Skins/Titanium Extended/Skin/BlueVision/themes/Titanium Extended/screens/weather.xaml
  107. +3 −2 ...tal/Source/UI/Skins/Titanium Extended/Skin/BlueVision/themes/Titanium Extended/styles/Colors.xaml
  108. +40 −8 ...rce/UI/Skins/Titanium Extended/Skin/BlueVision/themes/Titanium Extended/styles/WeatherStyles.xaml
  109. +5 −0 MediaPortal/Source/UI/Skins/Titanium Extended/Titanium Extended.csproj
  110. +30 −0 MediaPortal/Source/UI/Skins/WMC/Controls/SubItemsContentPresenter.cs
  111. +56 −8 MediaPortal/Source/UI/Skins/WMC/Models/HomeMenuModel.cs
  112. +58 −0 MediaPortal/Source/UI/Skins/WMC/Models/SubItem.cs
  113. BIN MediaPortal/Source/UI/Skins/WMC/Skin/WMCSkin/images/temp_measure.png
  114. +24 −9 MediaPortal/Source/UI/Skins/WMC/Skin/WMCSkin/screens/master_homemenu.xaml
  115. +9 −10 MediaPortal/Source/UI/Skins/WMC/Skin/WMCSkin/screens/weather.xaml
  116. +16 −1 MediaPortal/Source/UI/Skins/WMC/Skin/WMCSkin/themes/default/styles/OtherControlsOverrides.xaml
  117. +25 −11 MediaPortal/Source/UI/Skins/WMC/Skin/WMCSkin/themes/default/styles/WeatherStyles.xaml
  118. +1 −0 MediaPortal/Source/UI/Skins/WMC/WMCSkin.csproj
  119. +19 −10 MediaPortal/Source/UI/TV/SlimTvClient/Skin/BlueVision/screens/SlimTvClient-fullguide.xaml
  120. +30 −20 ...Portal/Source/UI/TV/SlimTvClient/Skin/BlueVision/themes/Win10/screens/SlimTvClient-fullguide.xaml
  121. +2 −0 MediaPortal/Source/UI/TV/SlimTvClient/Skin/BlueVision/themes/Win10/styles/SlimTvConsts.xaml
  122. +50 −9 MediaPortal/Source/UI/TV/SlimTvClient/Skin/BlueVision/themes/Win10/styles/SlimTvStyles.xaml
  123. +37 −13 MediaPortal/Source/UI/TV/SlimTvClient/Skin/BlueVision/themes/default/styles/SlimTvStyles.xaml
  124. +1 −1 MediaPortal/Source/UI/TV/SlimTvClient/Skin/WMCSkin/screens/ProgramInfoSlim.inc
  125. +9 −9 MediaPortal/Source/UI/TV/SlimTvClient/Skin/WMCSkin/screens/SlimTvClient-fullguide.xaml
  126. +2 −1 MediaPortal/Source/UI/TV/SlimTvClient/Skin/WMCSkin/themes/default/styles/SlimTvColors.xaml
  127. +7 −8 MediaPortal/Source/UI/TV/SlimTvClient/Skin/WMCSkin/themes/default/styles/SlimTvStyles.xaml
  128. +9 −3 MediaPortal/Source/UI/UiComponents/Media/FilterCriteria/FilterByAlbumCompilationCriterion.cs
  129. +18 −3 MediaPortal/Source/UI/UiComponents/Media/Language/strings_en.xml
  130. +5 −0 MediaPortal/Source/UI/UiComponents/Media/Media.csproj
  131. +3 −3 MediaPortal/Source/UI/UiComponents/Media/Models/NavigationModel/AudioNavigationInitializer.cs
  132. +4 −1 MediaPortal/Source/UI/UiComponents/Media/Models/PlayItemsModel.cs
  133. +2 −2 ...aPortal/Source/UI/UiComponents/Media/Models/ScreenData/AudioFilterByAlbumCompilationScreenData.cs
  134. +86 −6 MediaPortal/Source/UI/UiComponents/Media/Views/RemovableMediaDrives/AudioCDDriveHandler.cs
  135. +83 −1 MediaPortal/Source/UI/UiComponents/Media/Views/RemovableMediaDrives/BaseDriveHandler.cs
  136. +8 −4 MediaPortal/Source/UI/UiComponents/Media/Views/RemovableMediaDrives/MultimediaDriveHandler.cs
  137. +3 −1 MediaPortal/Source/UI/UiComponents/Media/Views/RemovableMediaDrives/VideoDriveHandler.cs
  138. +4 −0 MediaPortal/Source/UI/UiComponents/Media/packages.config
  139. +30 −8 MediaPortal/Source/UI/UiComponents/Weather/Grabbers/OpenWeatherMap.cs
  140. +1 −0 MediaPortal/Source/UI/UiComponents/Weather/Helper Classes/City.cs
  141. +0 −4 MediaPortal/Source/UI/UiComponents/Weather/Helper Classes/CitySetupInfo.cs
  142. +1 −0 MediaPortal/Source/UI/UiComponents/Weather/Models/WeatherModel.cs
  143. +4 −3 MediaPortal/Source/UI/UiComponents/Weather/Models/WeatherSetupModel.cs
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="Login.Title">User profile</string>
<string name="Login.Title.Help">Change user profile</string>
</resources>
@@ -63,13 +63,25 @@
<Name>MediaPortal.UI</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\Source\UI\UiComponents\SkinBase\SkinBase.csproj">
<Project>{4EFED5BE-2F6A-4944-BB96-053D5945BA1F}</Project>
<Name>SkinBase</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Content Include="Language\strings_en.xml" />
<Content Include="plugin.xml" />
<Content Include="Skin\default\workflow\login-actions.xml" />
</ItemGroup>
<ItemGroup>
<None Include="build.targets" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="build.targets" />
<ItemGroup>
<Folder Include="Skin\default\themes\" />
</ItemGroup>
<ItemGroup>
<Content Include="Skin\default\screens\Login.xaml" />
</ItemGroup>
</Project>
@@ -23,12 +23,14 @@
#endregion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using MediaPortal.Common;
using MediaPortal.Common.General;
using MediaPortal.Common.UserProfileDataManagement;
using MediaPortal.UI.Presentation.DataObjects;
using MediaPortal.UI.UserManagement;
using MediaPortal.UiComponents.SkinBase.General;
using MediaPortal.UI.Services.UserManagement;

namespace MediaPortal.UiComponents.Login
{
@@ -37,64 +39,88 @@ namespace MediaPortal.UiComponents.Login
/// </summary>
public class LoginModel
{
private ItemsList _usersExposed = new ItemsList();
private readonly ItemsList _usersExposed = new ItemsList();
private AbstractProperty _currentUser;
const string KEY_PROFILE_ID = "ProfileId";

/// <summary>
/// constructor
/// </summary>
public LoginModel()
{
_currentUser = new WProperty(null);
_currentUser = new WProperty(typeof(UserProfile), null);
LoadUsers();
SetCurrentUser();
}

/// <summary>
/// will load the users from somewhere
/// </summary>
private void LoadUsers()
{
IUserService userService = ServiceRegistration.Get<IUserService>();
// add a few dummy users, later this should be more flexible and handled by a login manager / user account control
IUser u1 = userService.AddUser(SystemInformation.ComputerName.ToLower());
u1.NeedsPassword = true;
u1.LastLogin = new DateTime(2007, 10, 25, 12, 20, 30);
u1.UserImage = SystemInformation.ComputerName.ToLower() + ".jpg";
IUser u2 = userService.AddUser(SystemInformation.UserName.ToLower());
u2.NeedsPassword = false;
u2.LastLogin = new DateTime(2007, 10, 26, 10, 30, 13);
u2.UserImage = SystemInformation.UserName.ToLower() + ".jpg";
IUserManagement userManagement = ServiceRegistration.Get<IUserManagement>();
if (userManagement.UserProfileDataManagement == null)
return;

UserProfile u1;
string profileName = SystemInformation.ComputerName.ToLower();
if (!userManagement.UserProfileDataManagement.GetProfileByName(profileName, out u1))
{
// add a few dummy users, later this should be more flexible and handled by a login manager / user account control
Guid userId1 = userManagement.UserProfileDataManagement.CreateProfile(profileName);
if (!userManagement.UserProfileDataManagement.GetProfile(userId1, out u1))
return;
}

//u1.NeedsPassword = true;
//u1.LastLogin = new DateTime(2007, 10, 25, 12, 20, 30);
//u1.UserImage = SystemInformation.ComputerName.ToLower() + ".jpg";
//IUser u2 = userService.AddUser(SystemInformation.UserName.ToLower());
//u2.NeedsPassword = false;
//u2.LastLogin = new DateTime(2007, 10, 26, 10, 30, 13);
//u2.UserImage = SystemInformation.UserName.ToLower() + ".jpg";
RefreshUserList();
}

private void SetCurrentUser(UserProfile userProfile = null)
{
IUserManagement userProfileDataManagement = ServiceRegistration.Get<IUserManagement>();
if (userProfile == null)
{
// Init with system default
userProfile = userProfileDataManagement.CurrentUser;
}
else
{
userProfileDataManagement.CurrentUser = userProfile;
}
CurrentUser = userProfile;
}

/// <summary>
/// this will turn the _users list into the _usersExposed list
/// </summary>
private void RefreshUserList()
{
IList<IUser> users = ServiceRegistration.Get<IUserService>().GetUsers();
// clear the exposed users list
Users.Clear();

IUserManagement userManagement = ServiceRegistration.Get<IUserManagement>();
if (userManagement.UserProfileDataManagement == null)
return;
// add users to expose them
foreach (IUser user in users)
var users = userManagement.UserProfileDataManagement.GetProfiles();
foreach (UserProfile user in users.Where(u => u != null))
{
if (user == null)
{
continue;
}
ListItem buff = new ListItem();
buff.SetLabel("UserName", user.UserName);
buff.SetLabel("UserImage", user.UserImage);
if (user.NeedsPassword)
{
buff.SetLabel("NeedsPassword", "true");
}
else
{
buff.SetLabel("NeedsPassword", "false");
}
buff.SetLabel("LastLogin", user.LastLogin.ToString("G"));
Users.Add(buff);
ListItem item = new ListItem();
item.SetLabel(Consts.KEY_NAME, user.Name);

item.AdditionalProperties[KEY_PROFILE_ID] = user.ProfileId;
item.SetLabel("UserName", user.Name);
item.SetLabel("HasImage", user.Image != null ? "true" : "false");
item.SetLabel("HasPassword", !string.IsNullOrEmpty(user.Password) ? "true" : "false");
item.SetLabel("LastLogin", user.LastLogin.HasValue ? user.LastLogin.Value.ToString("G") : "");
Users.Add(item);
}
// tell the skin that something might have changed
Users.FireChange();
@@ -106,16 +132,16 @@ private void RefreshUserList()
/// <param name="item"></param>
public void SelectUser(ListItem item)
{
IList<IUser> users = ServiceRegistration.Get<IUserService>().GetUsers();

foreach (IUser user in users)
{
if (user.UserName == item.Labels["UserName"].Evaluate())
{
CurrentUser = user;
return;
}
}
Guid profileId = (Guid)item.AdditionalProperties[KEY_PROFILE_ID];
IUserManagement userManagement = ServiceRegistration.Get<IUserManagement>();

UserProfile userProfile;
if (userManagement.UserProfileDataManagement == null)
return;
if (!userManagement.UserProfileDataManagement.GetProfile(profileId, out userProfile))
return;
SetCurrentUser(userProfile);
userManagement.UserProfileDataManagement.LoginProfile(profileId);
}

/// <summary>
@@ -130,9 +156,9 @@ public AbstractProperty CurrentUserProperty
/// <summary>
/// exposes the current user to the skin
/// </summary>
public IUser CurrentUser
public UserProfile CurrentUser
{
get { return (IUser) _currentUser.GetValue(); }
get { return (UserProfile)_currentUser.GetValue(); }
set { _currentUser.SetValue(value); }
}

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<Include
xmlns="www.team-mediaportal.com/2008/mpf/directx"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Source="screens\master_menu.xaml"
>
<Include.Resources>

<!-- Header -->
<ResourceWrapper x:Key="Header_Text" Resource="[Login.Title]"/>

<!-- Login model -->
<Model x:Key="Model" Id="82582433-FD64-41bd-9059-7F662DBDA713"/>

<!-- Contents -->
<ControlTemplate x:Key="Contents_Template">
<DockPanel DataContext="{Binding Source={StaticResource Model}}">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- User profile list -->
<ListView Margin="10" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Style="{ThemeResource MenuListViewStyle}"
ItemsSource="{Binding Path=Users}" >
<ListView.Resources>
<Command x:Key="Menu_Command" Source="{StaticResource Model}" Path="SelectUser"
Parameters="{LateBoundValue BindingValue={Binding}}"/>
</ListView.Resources>
</ListView>

<Label Grid.Row="2" HorizontalAlignment="Left" DataContext="{Binding Source={StaticResource Model}, Path=CurrentUser}" Content="{Binding Path=Name}" Color="{ThemeResource TextColor}"/>
</Grid>
</DockPanel>
</ControlTemplate>

</Include.Resources>
</Include>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- News workflow state actions -->
<Workflow DescriptorVersion="1.0">
<MenuActions>
<PushNavigationTransition Id="ABEDFC40-7F02-4FBB-AA1E-9F57B131BBB6"
Name="Home->Login"
DisplayCategory="z-Login"
SortOrder="z"
SourceStates="7F702D9C-F2DD-42da-9ED8-0BA92F07787F"
TargetState="2529B0F0-8415-4A4E-971B-38D6CDD2406A"
DisplayTitle="[Login.Title]"
HelpText="[Login.Title.Help]"/>
</MenuActions>
</Workflow>
@@ -10,8 +10,18 @@
<PluginFiles Include="$(ProjectDir)plugin.xml" />
</ItemGroup>

<ItemGroup>
<LanguageFiles Include="$(ProjectDir)Language\*.*" />
</ItemGroup>

<ItemGroup>
<SkinFiles Include="$(ProjectDir)Skin\**\*.*" />
</ItemGroup>

<Target Name="AfterBuild">
<Copy SourceFiles="@(PluginFiles)" DestinationFolder="$(PluginDestination)" />
<Copy SourceFiles="@(LanguageFiles)" DestinationFolder="$(PluginDestination)Language\" />
<Copy SourceFiles="@(SkinFiles)" DestinationFiles="@(SkinFiles->'$(PluginDestination)Skin\%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>

</Project>
</Project>
@@ -10,7 +10,7 @@
PluginVersion="1.0"
ReleaseDate="2013-11-11 01:00:00 GMT+01:00"
CurrentAPI="1"/>

<DependsOn>
<CoreDependency Name="MediaPortal.Common" CompatibleAPI="2" />
<CoreDependency Name="MediaPortal.UI" CompatibleAPI="2" />
@@ -21,6 +21,20 @@
</Runtime>

<Register Location="/Models">
<Model Id="{82582433-FD64-41bd-9059-7F662DBDA713}" Name="LoginModel" ClassName="MediaPortal.UiComponents.Login.LoginModel"/>
<Model Id="82582433-FD64-41bd-9059-7F662DBDA713" Name="LoginModel" ClassName="MediaPortal.UiComponents.Login.LoginModel"/>
</Register>

<Register Location="/Workflow/States">
<WorkflowState Id="2529B0F0-8415-4A4E-971B-38D6CDD2406A" Name="Login" MainScreen="Login"
DisplayLabel="[Login.Title]" />
</Register>

<Register Location="/Resources/Language">
<Resource Id="LoginLanguage" Directory="Language" Type="Language"/>
</Register>

<Register Location = "/Resources/Skin">
<Resource Id="LoginSkin" Directory="Skin" Type="Skin"/>
</Register>
</Plugin>

</Plugin>