Ejemplo n.º 1
0
        /// <inheritdoc />
        public virtual void Dispose()
        {
            ArchiveChildren?.Clear();
            DialogOptions?.Clear();
            PluginManager?.CloseAll();
            StreamManager?.ReleaseAll();

            // Dispose content of state
            switch (PluginState)
            {
            case IArchiveState archiveState:
                archiveState.Files?.ForEach(x => x.Dispose());
                break;

            case IImageState imageState:
                imageState.Images?.ForEach(x => x.Dispose());
                break;
            }

            FilePlugin    = null;
            PluginState   = null;
            FilePath      = UPath.Empty;
            FileSystem    = null;
            StreamManager = null;
            PluginManager = null;
            DialogOptions = null;

            ParentStateInfo = null;

            IsDisposed = true;
        }
Ejemplo n.º 2
0
        private bool IsStateChanged()
        {
            if (!(PluginState is ISaveFiles saveState))
            {
                return(false);
            }

            return(saveState.ContentChanged || ArchiveChildren.Any(child => child.StateChanged));
        }
Ejemplo n.º 3
0
        private bool IsStateChanged()
        {
            if (!PluginState.CanSave)
            {
                return(false);
            }

            return(PluginState.AttemptContentChanged || ArchiveChildren.Any(child => child.StateChanged));
        }
Ejemplo n.º 4
0
        /// <inheritdoc />
        public virtual void Dispose()
        {
            ArchiveChildren?.Clear();
            DialogOptions?.Clear();
            PluginManager?.CloseAll();
            StreamManager?.ReleaseAll();

            FilePlugin    = null;
            PluginState   = null;
            FilePath      = UPath.Empty;
            FileSystem    = null;
            StreamManager = null;
            PluginManager = null;
            DialogOptions = null;

            ParentStateInfo = null;
        }