diff options
author | Markus Göllnitz <camelcasenick@bewares.it> | 2023-04-24 18:31:32 +0200 |
---|---|---|
committer | Niels De Graef <nielsdegraef@gmail.com> | 2023-05-02 07:42:23 +0000 |
commit | 9ebe8c5411c2989fd577d920364a92e72fff4249 (patch) | |
tree | 7ab805107670f60e05f486d5d142ad04cd882d42 | |
parent | 57eac7947b14fd5ba9e46392a8dbc9c86e77e11d (diff) | |
download | gnome-contacts-9ebe8c5411c2989fd577d920364a92e72fff4249.tar.gz |
avatar-selector: add file format filter to file dialog
Originally, the file dialog does not provide any filter.
Therefore, it is harder to find a file for an avatar, and
easier to select a non-image or an image with an
unsupported image format that would be not suitable here.
Hence, a format filter for any supported type as the
default makes it easier to make an expected input. Also,
adding each supported format individually helps users to
find an image in cases of directories with many image
files.
Signed-off-by: Markus Göllnitz <camelcasenick@bewares.it>
-rw-r--r-- | src/contacts-avatar-selector.vala | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/contacts-avatar-selector.vala b/src/contacts-avatar-selector.vala index 0c31968..ddd75ad 100644 --- a/src/contacts-avatar-selector.vala +++ b/src/contacts-avatar-selector.vala @@ -210,6 +210,26 @@ public class Contacts.AvatarSelector : Gtk.Window { file_dialog.accept_label = _("_Open"); file_dialog.modal = true; + var filters = new ListStore (typeof (Gtk.FileFilter)); + var any_image_filter = new Gtk.FileFilter (); + any_image_filter.name = _("Image File"); + Gdk.Pixbuf.get_formats ().foreach ((format) => { + var filter = new Gtk.FileFilter (); + filter.name = format.get_description (); + foreach (string mime_type in format.get_mime_types ()) { + filter.add_mime_type (mime_type); + any_image_filter.add_suffix (mime_type); + } + foreach (string extension in format.get_extensions ()) { + filter.add_suffix (extension); + any_image_filter.add_suffix (extension); + } + filters.append (filter); + }); + filters.append (any_image_filter); + file_dialog.filters = filters; + file_dialog.default_filter = any_image_filter; + unowned var pictures_folder = Environment.get_user_special_dir (UserDirectory.PICTURES); if (pictures_folder != null) file_dialog.set_initial_folder (File.new_for_path (pictures_folder)); |