// // Commands // private void RotateSelectedPictures (Gtk.Window parent, RotateDirection direction) { RotateCommand command = new RotateCommand (parent); int [] selected_ids = SelectedIds (); if (command.Execute (direction, SelectedPhotos (selected_ids))) #if MONO_1_9_0 query.MarkChanged (selected_ids, new PhotoChanges () {DataChanged = true}); #else { PhotoChanges changes = new PhotoChanges (); changes.DataChanged = true; query.MarkChanged (selected_ids, changes); } #endif }
PhotoChanges Update(Photo photo) { PhotoChanges changes = photo.Changes; // Update photo. if (changes.DescriptionChanged || changes.DefaultVersionIdChanged || changes.TimeChanged || changes.UriChanged || changes.RatingChanged || changes.MD5SumChanged) { Database.Execute( new HyenaSqliteCommand( "UPDATE photos " + "SET description = ?, " + " default_version_id = ?, " + " time = ?, " + " base_uri = ?, " + " filename = ?, " + " rating = ? " + "WHERE id = ? ", photo.Description, photo.DefaultVersionId, DateTimeUtil.FromDateTime(photo.Time), photo.VersionUri(Photo.OriginalVersionId).GetBaseUri().ToString(), photo.VersionUri(Photo.OriginalVersionId).GetFilename(), String.Format("{0}", photo.Rating), photo.Id ) ); } // Update tags. if (changes.TagsRemoved != null) { foreach (Tag tag in changes.TagsRemoved) { Database.Execute(new HyenaSqliteCommand( "DELETE FROM photo_tags WHERE photo_id = ? AND tag_id = ?", photo.Id, tag.Id)); } } if (changes.TagsAdded != null) { foreach (Tag tag in changes.TagsAdded) { Database.Execute(new HyenaSqliteCommand( "INSERT OR IGNORE INTO photo_tags (photo_id, tag_id) " + "VALUES (?, ?)", photo.Id, tag.Id)); } } // Update versions. if (changes.VersionsRemoved != null) { foreach (uint version_id in changes.VersionsRemoved) { Database.Execute(new HyenaSqliteCommand( "DELETE FROM photo_versions WHERE photo_id = ? AND version_id = ?", photo.Id, version_id)); } } if (changes.VersionsAdded != null) { foreach (uint version_id in changes.VersionsAdded) { PhotoVersion version = photo.GetVersion(version_id); InsertVersion(photo, version); } } if (changes.VersionsModified != null) { foreach (uint version_id in changes.VersionsModified) { PhotoVersion version = photo.GetVersion(version_id); Database.Execute(new HyenaSqliteCommand( "UPDATE photo_versions SET name = ?, " + "base_uri = ?, filename = ?, protected = ?, import_md5 = ? " + "WHERE photo_id = ? AND version_id = ?", version.Name, version.BaseUri.ToString(), version.Filename, version.IsProtected, (version.ImportMD5 != String.Empty ? version.ImportMD5 : null), photo.Id, version_id)); } } photo.Changes = null; return(changes); }
void HandleUpdateThumbnailCommand (object sender, EventArgs args) { ThumbnailCommand command = new ThumbnailCommand (main_window); int [] selected_ids = SelectedIds (); if (command.Execute (SelectedPhotos (selected_ids))) #if MONO_1_9_0 query.MarkChanged (selected_ids, new PhotoChanges {DataChanged = true}); #else { PhotoChanges changes = new PhotoChanges (); changes.DataChanged = true; query.MarkChanged (selected_ids, changes); } #endif }