public static void SavePlaylist(PlaylistRawData playlistData) { IContentDirectory contentDirectory = GetContentDirectoryService(); contentDirectory.SavePlaylist(playlistData); }
public static void SavePlaylist(PlaylistRawData playlistData) { IWorkflowManager workflowManager = ServiceRegistration.Get<IWorkflowManager>(); if (ContainsLocalMediaItems(playlistData)) SaveFailed(Consts.RES_SAVE_PLAYLIST_FAILED_LOCAL_MEDIAITEMS_TEXT); else workflowManager.NavigatePush(Consts.WF_STATE_ID_PLAYLIST_SAVE_EDIT_NAME, new NavigationContextConfig { AdditionalContextVariables = new Dictionary<string, object> { {Consts.KEY_PLAYLIST_DATA, playlistData} } }); }
protected static bool ContainsLocalMediaItems(PlaylistRawData playlistData) { return playlistData.MediaItemIds.Any(mediaItemId => mediaItemId == Guid.Empty); }
public static void SaveCurrentPlaylist() { IPlayerContextManager pcm = ServiceRegistration.Get<IPlayerContextManager>(); IPlayerContext pc = pcm.GetPlayerContext(PlayerChoice.CurrentPlayer); IPlaylist playlist = pc == null ? null : pc.Playlist; if (playlist == null) { ServiceRegistration.Get<ILogger>().Warn("ManagePlaylistsModel: No playlist available to save"); return; } PlaylistRawData playlistData = new PlaylistRawData(Guid.NewGuid(), string.Empty, ConvertAVTypeToPlaylistType(pc.AVType)); playlist.ExportPlaylistRawData(playlistData); SavePlaylist(playlistData); }
public void ExportPlaylistRawData(PlaylistRawData data) { IList<Guid> idList = data.MediaItemIds; idList.Clear(); lock (_syncObj) CollectionUtils.AddAll(idList, _itemList.Select(item => item.MediaItemId)); }
public void SavePlaylist(PlaylistRawData playlistData) { CpAction action = GetAction("SavePlaylist"); IList<object> inParameters = new List<object> {playlistData}; action.InvokeAction(inParameters); }
public void SavePlaylist(PlaylistRawData playlistData) { ISQLDatabase database = ServiceRegistration.Get<ISQLDatabase>(); ITransaction transaction = database.BeginTransaction(); Guid playlistId = playlistData.PlaylistId; try { // Playlist contents are automatically deleted (ON DELETE CASCADE) using (IDbCommand command = MediaLibrary_SubSchema.DeletePlaylistCommand(transaction, playlistId)) command.ExecuteNonQuery(); using (IDbCommand command = MediaLibrary_SubSchema.InsertPlaylistCommand(transaction, playlistId, playlistData.Name, playlistData.PlaylistType)) command.ExecuteNonQuery(); // Add media items int ct = 0; foreach (Guid mediaItemId in playlistData.MediaItemIds) using (IDbCommand command = MediaLibrary_SubSchema.AddMediaItemToPlaylistCommand(transaction, playlistId, ct++, mediaItemId)) command.ExecuteNonQuery(); transaction.Commit(); ContentDirectoryMessaging.SendPlaylistsChangedMessage(); } catch (Exception e) { ServiceRegistration.Get<ILogger>().Error("MediaLibrary: Error adding playlist '{0}' (id '{1}')", e, playlistData.Name, playlistId); transaction.Rollback(); throw; } }
protected void RunImportOperationAsync(IContentDirectory cd, IList<string> mediaFiles) { ILogger logger = ServiceRegistration.Get<ILogger>(); _importPlaylistOperation = new ImportPlaylistOperation(); IList<Guid> items = _importPlaylistOperation.Execute(mediaFiles, GetShareLocation()); if (items == null) { logger.Info("PlaylistImportModel: Playlist import cancelled"); return; } IDialogManager dialogManager = ServiceRegistration.Get<IDialogManager>(); if (items.Count == 0) { dialogManager.ShowDialog(Consts.RES_PLAYLIST_SAVE_FAILED_TITLE, Consts.RES_NO_ITEMS_WERE_IMPORTED_SKIPPING_SAVE_TEXT, DialogType.OkDialog, false, DialogButtonType.Ok); return; } string playlistName = PlaylistName; PlaylistRawData playlistRawData = new PlaylistRawData(Guid.NewGuid(), playlistName, ManagePlaylistsModel.ConvertAVTypeToPlaylistType(AVType.Audio), items); try { cd.SavePlaylist(playlistRawData); dialogManager.ShowDialog(Consts.RES_PLAYLIST_SAVED_SUCCESSFULLY_TITLE, LocalizationHelper.Translate(Consts.RES_PLAYLIST_SAVED_SUCCESSFULLY_TEXT, playlistName), DialogType.OkDialog, false, DialogButtonType.Ok); } catch (Exception e) { dialogManager.ShowDialog(Consts.RES_PLAYLIST_SAVE_FAILED_TITLE, e.Message, DialogType.OkDialog, false, DialogButtonType.Ok); } _importPlaylistOperation = null; }