void HandleResponse(object obj, ResponseArgs args) { switch (args.ResponseId) { case ResponseType.Cancel: this.Destroy(); break; case ResponseType.Apply: Photo [] photos = new Photo [0]; if (RadioEntireCatalog.Active) { photos = Core.Database.Photos.Query(); } else if (RadioSelectedPhotos.Active) { photos = App.Instance.Organizer.SelectedPhotos(); } this.Hide(); foreach (Photo photo in photos) { SyncMetadataJob.Create(Core.Database.Jobs, photo); } this.Destroy(); break; } }
public void Commit(Tag [] tags, bool update_xmp) { // TODO. bool use_transactions = update_xmp; //!Database.InTransaction && update_xmp; //if (use_transactions) // Database.BeginTransaction (); // FIXME: this hack is used, because HyenaSqliteConnection does not support // the InTransaction propery if (use_transactions) { try { Database.BeginTransaction(); } catch { use_transactions = false; } } foreach (Tag tag in tags) { Database.Execute(new HyenaSqliteCommand("UPDATE tags SET name = ?, category_id = ?, " + "is_category = ?, sort_priority = ?, icon = ? WHERE id = ?", tag.Name, tag.Category.Id, tag is Category ? 1 : 0, tag.SortPriority, GetIconString(tag), tag.Id)); if (update_xmp && Preferences.Get <bool> (Preferences.METADATA_EMBED_IN_IMAGE)) { Photo [] photos = App.Instance.Database.Photos.Query(new Tag [] { tag }); foreach (Photo p in photos) { if (p.HasTag(tag)) // the query returns all the pics of the tag and all its child. this avoids updating child tags { SyncMetadataJob.Create(App.Instance.Database.Jobs, p); } } } } if (use_transactions) { Database.CommitTransaction(); } EmitChanged(tags); }
public void Commit(DbItem item, bool update_xmp) { Tag tag = item as Tag; bool use_transactions = !Database.InTransaction && update_xmp; if (use_transactions) { Database.BeginTransaction(); } Database.ExecuteNonQuery(new DbCommand("UPDATE tags SET name = :name, category_id = :category_id, " + "is_category = :is_category, sort_priority = :sort_priority, icon = :icon WHERE id = :id", "name", tag.Name, "category_id", tag.Category.Id, "is_category", tag is Category ? 1 : 0, "sort_priority", tag.SortPriority, "icon", GetIconString(tag), "id", tag.Id)); if (update_xmp && Preferences.Get <bool> (Preferences.METADATA_EMBED_IN_IMAGE)) { Photo [] photos = Core.Database.Photos.Query(new Tag [] { tag }); foreach (Photo p in photos) { if (p.HasTag(tag)) // the query returns all the pics of the tag and all its child. this avoids updating child tags { SyncMetadataJob.Create(Core.Database.Jobs, p); } } } if (use_transactions) { Database.CommitTransaction(); } EmitChanged(tag); }
public void Commit(DbItem item, bool update_xmp) { Tag tag = item as Tag; Database.ExecuteNonQuery(new DbCommand("UPDATE tags SET name = :name, category_id = :category_id, " + "is_category = :is_category, sort_priority = :sort_priority, icon = :icon WHERE id = :id", "name", tag.Name, "category_id", tag.Category.Id, "is_category", tag is Category ? 1 : 0, "sort_priority", tag.SortPriority, "icon", GetIconString(tag), "id", tag.Id)); EmitChanged(tag); if (update_xmp && (bool)Preferences.Get(Preferences.METADATA_EMBED_IN_IMAGE)) { Photo [] photos = Core.Database.Photos.Query(new Tag [] { tag }); foreach (Photo p in photos) { SyncMetadataJob.Create(Core.Database.Jobs, p); } } }