Esempio n. 1
0
        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);
            }
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
        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());
     }
 }
Esempio n. 6
0
        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);
                }
            }
        }