//
	// 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
	}
예제 #2
0
        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
	}