Index: Source/UI/UiComponents/Media/General/Consts.cs
===================================================================
--- Source/UI/UiComponents/Media/General/Consts.cs (revision 3811)
+++ Source/UI/UiComponents/Media/General/Consts.cs (working copy)
@@ -192,6 +192,7 @@
public const string RES_SAVE_PLAYLIST_FAILED_LOCAL_MEDIAITEMS_TEXT = "[Media.CannotSavePlaylistWithLocalMediaItems]";
public const string RES_SAVE_PLAYLIST_LOCAL_SUCCESSFUL_TEXT = "[Media.SavePlaylistLocalSuccessfulText]";
public const string RES_SAVE_PLAYLIST_SERVER_SUCCESSFUL_TEXT = "[Media.SavePlaylistServerSuccessfulText]";
+ public const string RES_SAVE_PLAYLIST_FAILED_PLAYLIST_ALREADY_EXISTS = "[Media.SavePlaylistFailedAlreadyExists]";
public const string RES_PLAYLIST_LOAD_NO_PLAYLIST = "[Media.PlaylistLoadNoPlaylistText]";
public const string RES_PLAYLIST_LOAD_ERROR_LOADING = "[Media.PlaylistLoadErrorLoadingPlaylist]";
Index: Source/UI/UiComponents/Media/Language/strings_en.xml
===================================================================
--- Source/UI/UiComponents/Media/Language/strings_en.xml (revision 3811)
+++ Source/UI/UiComponents/Media/Language/strings_en.xml (working copy)
@@ -210,6 +210,7 @@
+
Index: Source/UI/UiComponents/Media/Models/ManagePlaylistsModel.cs
===================================================================
--- Source/UI/UiComponents/Media/Models/ManagePlaylistsModel.cs (revision 3811)
+++ Source/UI/UiComponents/Media/Models/ManagePlaylistsModel.cs (working copy)
@@ -99,7 +99,7 @@
void OnPlaylistNameChanged(AbstractProperty prop, object oldVal)
{
- IsPlaylistNameValid = !string.IsNullOrEmpty(PlaylistName);
+ IsPlaylistNameValid = !string.IsNullOrEmpty(PlaylistName.Trim());
if (_playlist != null)
_playlist.Name = PlaylistName;
}
@@ -315,16 +315,33 @@
{
if (_playlistLocation == PlaylistLocation.Local)
{
- string fileName;
- _localPlaylistsHandler.SavePlaylist(playlistData, out fileName);
- _message = LocalizationHelper.Translate(Consts.RES_SAVE_PLAYLIST_LOCAL_SUCCESSFUL_TEXT, fileName);
- workflowManager.NavigatePush(Consts.WF_STATE_ID_PLAYLIST_SAVE_SUCCESSFUL);
+ if (!(_localPlaylistsHandler.Playlists.Any(p => p.Name == _playlist.Name)))
+ {
+ string fileName;
+ _localPlaylistsHandler.SavePlaylist(playlistData, out fileName);
+ _message = LocalizationHelper.Translate(Consts.RES_SAVE_PLAYLIST_LOCAL_SUCCESSFUL_TEXT, fileName);
+ workflowManager.NavigatePush(Consts.WF_STATE_ID_PLAYLIST_SAVE_SUCCESSFUL);
+ }
+ else
+ {
+ //TODO : Add new screen to allow playlist name change instead of error message
+ SaveFailed(LocalizationHelper.Translate(Consts.RES_SAVE_PLAYLIST_FAILED_PLAYLIST_ALREADY_EXISTS, _playlist.Name));
+ }
}
else
{
- Models.ServerPlaylists.SavePlaylist(playlistData);
- _message = LocalizationHelper.Translate(Consts.RES_SAVE_PLAYLIST_SERVER_SUCCESSFUL_TEXT);
- workflowManager.NavigatePush(Consts.WF_STATE_ID_PLAYLIST_SAVE_SUCCESSFUL);
+ if (!(Models.ServerPlaylists.GetPlaylists().Any(p => p.Name == _playlist.Name)))
+ {
+ Models.ServerPlaylists.SavePlaylist(playlistData);
+ _message = LocalizationHelper.Translate(Consts.RES_SAVE_PLAYLIST_SERVER_SUCCESSFUL_TEXT);
+ workflowManager.NavigatePush(Consts.WF_STATE_ID_PLAYLIST_SAVE_SUCCESSFUL);
+ }
+ else
+ {
+ //TODO : Add new screen to allow playlist name change instead of error message
+ SaveFailed(LocalizationHelper.Translate(Consts.RES_SAVE_PLAYLIST_FAILED_PLAYLIST_ALREADY_EXISTS, _playlist.Name));
+ }
+
}
}
catch (Exception e)