Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
    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);
            }
        }
    }