]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-password.c
Override PDF restrictions by default. Fixes bug #382700.
[evince.git] / shell / ev-password.c
index 4dc312dfb2d3fbcd9f58d101e52fe128988722d4..463d1e71af71d049c5b54781b8dd14a9e3c4071f 100644 (file)
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include <glade/glade.h>
-#include <gnome-keyring.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 
+#ifdef WITH_KEYRING
+#include <gnome-keyring.h>
+#else
+#define gnome_keyring_is_available()   FALSE
+#endif
+
 #include "ev-password.h"
 
 enum {
@@ -81,7 +86,7 @@ ev_password_dialog_set_property (GObject      *object,
                base_name = g_path_get_basename (file_name);
                format = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>\n\n%s",
                                          _("Password required"),
-                                         _("The document <i>%s</i> is locked and requires a password before it can be opened."));
+                                         _("The document ā€œ%sā€ is locked and requires a password before it can be opened."));
                markup = g_markup_printf_escaped (format, base_name);
 
                gtk_label_set_markup (GTK_LABEL (dialog->priv->label), markup);
@@ -173,7 +178,7 @@ ev_password_dialog_init (EvPasswordDialog *dialog)
        g_signal_connect (dialog->priv->entry, "activate", G_CALLBACK (ev_password_dialog_entry_activated_cb), dialog);
 
        ev_password_set_bad_password_label (dialog, " ");
-       
+
        if (!gnome_keyring_is_available ()) {
                gtk_widget_hide (dialog->priv->check_default);
                gtk_widget_hide (dialog->priv->check_session);
@@ -219,12 +224,23 @@ ev_password_dialog_entry_activated_cb (GtkEntry *entry,
        gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
 }
 
+#ifdef WITH_KEYRING
+static void
+ev_password_item_created_callback (GnomeKeyringResult result,
+                                  guint32            val,
+                                  gpointer           data)
+{
+       /* Nothing yet */
+       return;
+}
+#endif
+
 void
 ev_password_dialog_save_password (EvPasswordDialog *dialog)
 {
+#ifdef WITH_KEYRING
        GnomeKeyringAttributeList *attributes;
        GnomeKeyringAttribute attribute;
-       guint32 item_id;
        gchar *name;
        gchar *unescaped_uri;
 
@@ -244,32 +260,34 @@ ev_password_dialog_save_password (EvPasswordDialog *dialog)
        name = g_strdup_printf (_("Password for document %s"), unescaped_uri);  
 
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->check_default))) {
-               gnome_keyring_item_create_sync (NULL,
-                                               GNOME_KEYRING_ITEM_GENERIC_SECRET,
-                                               name,
-                                               attributes,
-                                               ev_password_dialog_get_password (dialog),
-                                               TRUE,
-                                               &item_id);
+               gnome_keyring_item_create (NULL,
+                                          GNOME_KEYRING_ITEM_GENERIC_SECRET,
+                                          name,
+                                          attributes,
+                                          ev_password_dialog_get_password (dialog),
+                                          TRUE, ev_password_item_created_callback, 
+                                          NULL, NULL);
        }
 
        if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->priv->check_session))) {
-               gnome_keyring_item_create_sync ("session",
-                                               GNOME_KEYRING_ITEM_GENERIC_SECRET,
-                                               name,
-                                               attributes,
-                                               ev_password_dialog_get_password (dialog),
-                                               TRUE,
-                                               &item_id);
+               gnome_keyring_item_create ("session",
+                                          GNOME_KEYRING_ITEM_GENERIC_SECRET,
+                                          name,
+                                          attributes,
+                                          ev_password_dialog_get_password (dialog),
+                                          TRUE, ev_password_item_created_callback, 
+                                          NULL, NULL);
        }
        
        gnome_keyring_attribute_list_free (attributes);
        g_free (name);
        g_free (unescaped_uri);
-       
+
+#endif /* WITH_KEYRING */
        return;
 }
 
+#ifdef WITH_KEYRING
 static void 
 ev_password_keyring_found_cb (GnomeKeyringResult result,
                              GList             *list,
@@ -285,10 +303,12 @@ ev_password_keyring_found_cb (GnomeKeyringResult result,
        found = list->data;
        gtk_entry_set_text (GTK_ENTRY (dialog->priv->entry), found->secret);
 }                        
+#endif /* WITH_KEYRING */
 
 static void
 ev_password_search_in_keyring (EvPasswordDialog *dialog, const gchar *uri)
 {
+#ifdef WITH_KEYRING
        GnomeKeyringAttributeList *attributes;
        GnomeKeyringAttribute attribute;
        
@@ -310,6 +330,7 @@ ev_password_search_in_keyring (EvPasswordDialog *dialog, const gchar *uri)
                                   g_object_ref (dialog),
                                   g_object_unref);
        gnome_keyring_attribute_list_free (attributes);
+#endif /* WITH_KEYRING */
        return;
 }