Example #1
0
        public void DeleteVersion(uint version_id, bool remove_original, bool keep_file)
        {
            if (version_id == OriginalVersionId && !remove_original)
            {
                throw new Exception("Cannot delete original version");
            }

            SafeUri uri = VersionUri(version_id);

            if (!keep_file)
            {
                GLib.File file = GLib.FileFactory.NewForUri(uri);
                if (file.Exists)
                {
                    try {
                        file.Trash(null);
                    } catch (GLib.GException) {
                        Log.Debug("Unable to Trash, trying to Delete");
                        file.Delete();
                    }
                }

                try {
                    thumbnailService.DeleteThumbnails(uri);
                } catch {
                    // ignore an error here we don't really care.
                }

                // do we really need to check if the parent is a directory?
                // i.e. is file.Parent always a directory if the file instance is
                // an actual file?
                GLib.File     directory = file.Parent;
                GLib.FileType file_type = directory.QueryFileType(GLib.FileQueryInfoFlags.None, null);

                if (directory.Exists && file_type == GLib.FileType.Directory)
                {
                    DeleteEmptyDirectory(directory);
                }
            }

            versions.Remove(version_id);
            changes.RemoveVersion(version_id);

            for (version_id = highest_version_id; version_id >= OriginalVersionId; version_id--)
            {
                if (versions.ContainsKey(version_id))
                {
                    DefaultVersionId = version_id;
                    break;
                }
            }
        }
Example #2
0
        public void DeleteVersion(uint versionId, bool removeOriginal = false, bool keepFile = false)
        {
            if (versionId == OriginalVersionId && !removeOriginal)
            {
                throw new Exception("Cannot delete original version");
            }

            var uri  = VersionUri(versionId);
            var file = new FileInfo(uri.AbsolutePath);

            if (!keepFile && file.Exists)
            {
                file.Delete();
            }

            try
            {
                thumbnailService.DeleteThumbnails(uri);
            }
            catch
            {
                // ignore an error here we don't really care.
            }

            var directory = Directory.GetParent(uri.AbsolutePath);

            if (directory.Exists)
            {
                DeleteEmptyDirectory(directory);
            }

            versions.Remove(versionId);
            changes.RemoveVersion(versionId);

            for (versionId = highestVersionId; versionId >= OriginalVersionId; versionId--)
            {
                if (versions.ContainsKey(versionId))
                {
                    DefaultVersionId = versionId;
                    break;
                }
            }
        }