public void Select(ListItem item) { if (item == null) { return; } object actionObj; object mediaItemObj; if (!item.AdditionalProperties.TryGetValue(Consts.KEY_MEDIA_ITEM_ACTION, out actionObj) || !item.AdditionalProperties.TryGetValue(Consts.KEY_MEDIA_ITEM, out mediaItemObj)) { return; } IMediaItemAction action = actionObj as IMediaItemAction; MediaItem mediaItem = mediaItemObj as MediaItem; if (action == null || mediaItem == null) { return; } try { ContentDirectoryMessaging.MediaItemChangeType changeType; if (action.Process(mediaItem, out changeType) && changeType != ContentDirectoryMessaging.MediaItemChangeType.None) { ContentDirectoryMessaging.SendMediaItemChangedMessage(mediaItem, changeType); } } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error("Error executing MediaItemAction '{0}':", ex, action.GetType()); } }
public void Select(ListItem item) { if (item == null) { return; } object actionObj; object mediaItemObj; if (!item.AdditionalProperties.TryGetValue(Consts.KEY_MEDIA_ITEM_ACTION, out actionObj) || !item.AdditionalProperties.TryGetValue(Consts.KEY_MEDIA_ITEM, out mediaItemObj)) { return; } IMediaItemActionConfirmation confirmation = actionObj as IMediaItemActionConfirmation; IMediaItemAction action = actionObj as IMediaItemAction; MediaItem mediaItem = mediaItemObj as MediaItem; if (action == null || mediaItem == null) { return; } if (confirmation != null) { ShowConfirmation(confirmation, mediaItem); } else { InvokeAction(action, mediaItem); } }
public MediaListItemAction(MediaItemActionExtension extension) { Caption = extension.Caption; Sort = extension.Sort; _action = extension.Action; Restriction = _action as IUserRestriction; if (Restriction != null) { Restriction.RestrictionGroup = extension.RestrictionGroup; } Deferred = _action is IDeferredMediaItemAction; }
protected async Task InvokeAction(IMediaItemAction action, MediaItem mediaItem) { IDeferredMediaItemAction dmi = action as IDeferredMediaItemAction; if (dmi != null) { // Will be called when context is left _deferredAction = dmi; _deferredMediaItem = mediaItem; return; } await InvokeInternal(action, mediaItem); }
protected void InvokeAction(IMediaItemAction action, MediaItem mediaItem) { try { ContentDirectoryMessaging.MediaItemChangeType changeType; if (action.Process(mediaItem, out changeType) && changeType != ContentDirectoryMessaging.MediaItemChangeType.None) { ContentDirectoryMessaging.SendMediaItemChangedMessage(mediaItem, changeType); } } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error("Error executing MediaItemAction '{0}':", ex, action.GetType()); } }
private async Task InvokeInternal(IMediaItemAction action, MediaItem mediaItem) { try { var result = await action.ProcessAsync(mediaItem); if (result.Success && result.Result != ContentDirectoryMessaging.MediaItemChangeType.None) { ContentDirectoryMessaging.SendMediaItemChangedMessage(mediaItem, result.Result); } } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error("Error executing MediaItemAction '{0}':", ex, action.GetType()); } }
protected void BuildExtensions() { if (_mediaActionPluginItemStateTracker != null) { return; } _mediaActionPluginItemStateTracker = new FixedItemStateTracker("MediaItemsActionModel - Extension registration"); IPluginManager pluginManager = ServiceRegistration.Get <IPluginManager>(); foreach (PluginItemMetadata itemMetadata in pluginManager.GetAllPluginItemMetadata(MediaItemActionBuilder.MEDIA_EXTENSION_PATH)) { try { MediaItemActionExtension mediaExtension = pluginManager.RequestPluginItem <MediaItemActionExtension>( MediaItemActionBuilder.MEDIA_EXTENSION_PATH, itemMetadata.Id, _mediaActionPluginItemStateTracker); if (mediaExtension == null) { ServiceRegistration.Get <ILogger>().Warn("Could not instantiate Media extension with id '{0}'", itemMetadata.Id); } else { Type extensionClass = mediaExtension.ExtensionClass; if (extensionClass == null) { throw new PluginInvalidStateException("Could not find class type for extension {0}", mediaExtension.Caption); } IMediaItemAction action = Activator.CreateInstance(extensionClass) as IMediaItemAction; if (action == null) { throw new PluginInvalidStateException("Could not create IMediaItemAction instance of class {0}", extensionClass); } mediaExtension.Action = action; _actions.Add(mediaExtension); } } catch (PluginInvalidStateException e) { ServiceRegistration.Get <ILogger>().Warn("Cannot add Media extension with id '{0}'", e, itemMetadata.Id); } } }