[evince/wip/matthiasc/portal] Wip: Use the content portal
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince/wip/matthiasc/portal] Wip: Use the content portal
- Date: Mon, 3 Aug 2015 16:44:11 +0000 (UTC)
commit 503dae580206c8251cb07668c2a2ec2d0d408b39
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Aug 3 12:43:31 2015 -0400
Wip: Use the content portal
shell/ev-window.c | 79 ++++++++++++++++++++++++++++-------------------------
1 files changed, 42 insertions(+), 37 deletions(-)
---
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 5b8fd5c..aeef5fb 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -2580,27 +2580,37 @@ ev_window_file_chooser_save_folder (EvWindow *window,
}
static void
-file_open_dialog_response_cb (GtkWidget *chooser,
- gint response_id,
- EvWindow *ev_window)
+got_content_id (GObject *source,
+ GAsyncResult *res,
+ gpointer user_data)
{
- if (response_id == GTK_RESPONSE_OK) {
- GSList *uris;
+ GDBusConnection *connection = G_DBUS_CONNECTION (source);
+ EvWindow *window = user_data;
+ GError *error = NULL;
+ GVariant *ret;
+ gchar *id;
+ GSList *uris;
- ev_window_file_chooser_save_folder (ev_window, GTK_FILE_CHOOSER (chooser),
- G_USER_DIRECTORY_DOCUMENTS);
+ ret = g_dbus_connection_call_finish (connection, res, &error);
+ if (!ret) {
+ g_warning ("Got error from content portal: %s\n", error->message);
+ g_error_free (error);
+ return;
+ }
- uris = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (chooser));
+ g_variant_get (ret, "(s)", &id);
- ev_application_open_uri_list (EV_APP, uris,
- gtk_window_get_screen (GTK_WINDOW (ev_window)),
- gtk_get_current_event_time ());
+ uris = g_slist_append (NULL, g_strconcat ("document:///", id, NULL));
- g_slist_foreach (uris, (GFunc)g_free, NULL);
- g_slist_free (uris);
- }
+ g_variant_unref (ret);
+ g_free (id);
- gtk_widget_destroy (chooser);
+ g_print ("Got document uri: %s\n", (gchar*)uris->data);
+
+ ev_application_open_uri_list (EV_APP, uris,
+ gtk_window_get_screen (GTK_WINDOW (window)),
+ gtk_get_current_event_time ());
+ g_slist_free_full (uris, g_free);
}
static void
@@ -2609,28 +2619,23 @@ ev_window_cmd_file_open (GSimpleAction *action,
gpointer user_data)
{
EvWindow *window = user_data;
- GtkWidget *chooser;
-
- chooser = gtk_file_chooser_dialog_new (_("Open Document"),
- GTK_WINDOW (window),
- GTK_FILE_CHOOSER_ACTION_OPEN,
- GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL,
- GTK_STOCK_OPEN, GTK_RESPONSE_OK,
- NULL);
-
- ev_document_factory_add_filters (chooser, NULL);
- gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (chooser), TRUE);
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), FALSE);
-
- ev_window_file_chooser_restore_folder (window, GTK_FILE_CHOOSER (chooser),
- NULL, G_USER_DIRECTORY_DOCUMENTS);
-
- g_signal_connect (chooser, "response",
- G_CALLBACK (file_open_dialog_response_cb),
- window);
-
- gtk_widget_show (chooser);
+ GDBusConnection *bus;
+ const char *types[] = { "application/pdf", NULL };
+
+ bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+
+ g_dbus_connection_call (bus,
+ "org.freedesktop.portal.ContentPortal",
+ "/org/freedesktop/portal/content",
+ "org.freedesktop.portal.ContentPortal",
+ "Open",
+ g_variant_new ("(^as)", types),
+ G_VARIANT_TYPE ("(s)"),
+ G_DBUS_CALL_FLAGS_NONE,
+ G_MAXINT,
+ NULL,
+ got_content_id,
+ window);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]