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; } } }
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; } } }
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"); } System.Uri uri = VersionUri(version_id); if (!keep_file) { if ((new Gnome.Vfs.Uri(uri.ToString())).Exists) { if ((new Gnome.Vfs.Uri(uri.ToString()).Unlink()) != Result.Ok) { throw new System.UnauthorizedAccessException(); } } try { string thumb_path = ThumbnailGenerator.ThumbnailPath(uri); System.IO.File.Delete(thumb_path); } catch (System.Exception) { //ignore an error here we don't really care. } PhotoStore.DeleteThumbnail(uri); } Versions.Remove(version_id); changes.RemoveVersion(version_id); do { version_id--; if (Versions.ContainsKey(version_id)) { DefaultVersionId = version_id; break; } } while (version_id > OriginalVersionId); }