summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Göllnitz <camelcasenick@bewares.it>2023-04-24 18:31:32 +0200
committerNiels De Graef <nielsdegraef@gmail.com>2023-05-02 07:42:23 +0000
commit9ebe8c5411c2989fd577d920364a92e72fff4249 (patch)
tree7ab805107670f60e05f486d5d142ad04cd882d42
parent57eac7947b14fd5ba9e46392a8dbc9c86e77e11d (diff)
downloadgnome-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.vala20
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));