Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-password.c
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2008-12-01 11:16:43 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2008-12-01 11:16:43 (GMT)
commitdc3a49f93a0798b5c0c8d2fd6283f39294945045 (patch)
tree68c16d20d561b645fde10246bd166f85f6a864f4 /shell/ev-password.c
parentfeeec13cf60423b15059f5e30cf3fb5763cd3922 (diff)
Removed
2008-12-01 Carlos Garcia Campos <carlosgc@gnome.org> * configure.ac: * shell/Makefile.am: * shell/ev-keyring.[ch]: * shell/ev-password.[ch]: Removed * shell/ev-password-view.[ch]: (ev_password_view_finalize), (ev_password_view_class_init), (ev_password_view_clicked_cb), (ev_password_view_init), (ev_password_view_set_uri), (ev_password_dialog_got_response), (ev_password_dialog_remember_button_toggled), (ev_password_dialog_entry_changed_cb), (ev_password_dialog_entry_activated_cb), (ev_password_view_ask_password), (ev_password_view_get_password), (ev_password_view_get_password_save_flags), (ev_password_view_new): * shell/ev-window.c: (ev_window_password_view_unlock), (ev_window_load_job_cb), (ev_window_close_dialogs), (ev_window_init): Rework the password view. When the password is in the keyring it's used automatically without showing the password dialog and it's only stored in the keyring when we are sure it's correct. The password dialog has been reworked too, in order to make it more hig compliant and consistent with the GTK+ dialog used in gtkmountoperation. Fixes bug #562496. svn path=/trunk/; revision=3281
Diffstat (limited to 'shell/ev-password.c')
-rw-r--r--shell/ev-password.c350
1 files changed, 0 insertions, 350 deletions
diff --git a/shell/ev-password.c b/shell/ev-password.c
deleted file mode 100644
index a191b9f..0000000
--- a/shell/ev-password.c
+++ /dev/null
@@ -1,350 +0,0 @@
-/* this file is part of evince, a gnome document viewer
- *
- * Copyright (C) 2005 Red Hat, Inc
- *
- * Evince is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Evince is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <glib/gi18n.h>
-#include <gio/gio.h>
-#include <gtk/gtk.h>
-#include <glade/glade.h>
-
-#ifdef WITH_KEYRING
-#include <gnome-keyring.h>
-#else
-#define gnome_keyring_is_available() FALSE
-#endif
-
-#include "ev-password.h"
-
-enum {
- PROP_0,
- PROP_URI,
-};
-
-struct _EvPasswordDialogPrivate {
-
- gchar *uri;
-
- GtkWidget *bad_label;
- GtkWidget *label;
- GtkWidget *entry;
- GtkWidget *check_default;
- GtkWidget *check_session;
-};
-
-#define EV_PASSWORD_DIALOG_GET_PRIVATE(object) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_PASSWORD_DIALOG, EvPasswordDialogPrivate));
-
-G_DEFINE_TYPE (EvPasswordDialog, ev_password_dialog, GTK_TYPE_DIALOG)
-
-
-static void ev_password_dialog_entry_changed_cb (GtkEditable *editable,
- EvPasswordDialog *dialog);
-static void ev_password_dialog_entry_activated_cb (GtkEntry *entry,
- EvPasswordDialog *dialog);
-static void ev_password_set_bad_password_label (EvPasswordDialog *dialog,
- gchar *message);
-static void ev_password_search_in_keyring (EvPasswordDialog *dialog,
- const gchar *uri);
-
-static void
-ev_password_dialog_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- EvPasswordDialog *dialog = EV_PASSWORD_DIALOG (object);
- char *format;
- char *markup;
- char *base_name;
- GFile *file;
-
- switch (prop_id) {
- case PROP_URI:
- dialog->priv->uri = g_strdup (g_value_get_string (value));
-
- file = g_file_new_for_uri (dialog->priv->uri);
-
- base_name = g_file_get_basename (file);
- format = g_strdup_printf ("<span size=\"larger\" weight=\"bold\">%s</span>\n\n%s",
- _("Password required"),
- _("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);
-
- g_free (base_name);
- g_free (format);
- g_free (markup);
- g_object_unref (file);
-
- ev_password_search_in_keyring (dialog, dialog->priv->uri);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-ev_password_dialog_finalize (GObject *object)
-{
- EvPasswordDialog *dialog = EV_PASSWORD_DIALOG (object);
-
- if (dialog->priv->uri) {
- g_free (dialog->priv->uri);
- dialog->priv->uri = NULL;
- }
-
- G_OBJECT_CLASS (ev_password_dialog_parent_class)->finalize (object);
-}
-
-
-static void
-ev_password_dialog_class_init (EvPasswordDialogClass *class)
-{
- GObjectClass *g_object_class;
- GtkWidgetClass *widget_class;
-
- g_object_class = G_OBJECT_CLASS (class);
- widget_class = GTK_WIDGET_CLASS (class);
-
- g_type_class_add_private (g_object_class, sizeof (EvPasswordDialogPrivate));
-
- g_object_class->set_property = ev_password_dialog_set_property;
- g_object_class->finalize = ev_password_dialog_finalize;
-
- g_object_class_install_property (g_object_class,
- PROP_URI,
- g_param_spec_string ("uri",
- "Document URI",
- "Encrypted document URI",
- NULL,
- G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-}
-
-
-static void
-ev_password_dialog_init (EvPasswordDialog *dialog)
-{
- GtkWidget *hbox;
- const char *glade_file = DATADIR "/evince-password.glade";
- GladeXML *xml;
-
- dialog->priv = EV_PASSWORD_DIALOG_GET_PRIVATE (dialog);
-
- gtk_window_set_title (GTK_WINDOW (dialog), _("Enter password"));
- gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
- gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (GTK_DIALOG (dialog)->vbox), 12);
-
- gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_CANCEL,
- GTK_RESPONSE_CANCEL);
- gtk_dialog_add_button (GTK_DIALOG (dialog), GTK_STOCK_OK,
- GTK_RESPONSE_OK);
-
- xml = glade_xml_new (glade_file, "hbox-contents", NULL);
- g_assert (xml);
-
- hbox = glade_xml_get_widget (xml, "hbox-contents");
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), hbox);
-
- dialog->priv->bad_label = glade_xml_get_widget (xml, "bad_password_label");
- dialog->priv->check_default = glade_xml_get_widget (xml, "savesession_checkbutton");
- dialog->priv->check_session = glade_xml_get_widget (xml, "savekeyring_checkbutton");
- dialog->priv->entry = glade_xml_get_widget (xml, "password_entry");
- dialog->priv->label = glade_xml_get_widget (xml, "password_label");
-
- g_signal_connect (dialog->priv->entry, "changed", G_CALLBACK (ev_password_dialog_entry_changed_cb), 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);
- }
-
- g_object_unref (xml);
-}
-
-static void
-ev_password_set_bad_password_label (EvPasswordDialog *dialog,
- gchar *message)
-{
- gchar *markup;
-
- markup = g_strdup_printf ("<span color=\"red\" size=\"smaller\">%s</span>",
- message);
- gtk_label_set_markup (GTK_LABEL (dialog->priv->bad_label), markup);
- g_free (markup);
-}
-
-static void
-ev_password_dialog_entry_changed_cb (GtkEditable *editable,
- EvPasswordDialog *dialog)
-{
- const char *text;
-
- text = gtk_entry_get_text (GTK_ENTRY (editable));
-
- if (text == NULL || *text == '\0')
- gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
- GTK_RESPONSE_OK, FALSE);
- else
- gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
- GTK_RESPONSE_OK, TRUE);
-
- ev_password_set_bad_password_label (dialog, " ");
-}
-
-static void
-ev_password_dialog_entry_activated_cb (GtkEntry *entry,
- EvPasswordDialog *dialog)
-{
- 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;
- gchar *name;
- gchar *unescaped_uri;
-
- attributes = gnome_keyring_attribute_list_new ();
-
- attribute.name = g_strdup ("type");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup ("document_password");
- g_array_append_val (attributes, attribute);
-
- attribute.name = g_strdup ("uri");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup (dialog->priv->uri);
- g_array_append_val (attributes, attribute);
-
- unescaped_uri = g_uri_unescape_string (dialog->priv->uri, NULL);
- 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 (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 ("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,
- gpointer data)
-
-{
- GnomeKeyringFound *found;
- EvPasswordDialog *dialog = EV_PASSWORD_DIALOG (data);
-
- if (result != GNOME_KEYRING_RESULT_OK || list == NULL)
- return;
-
- 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;
-
- attributes = gnome_keyring_attribute_list_new ();
-
- attribute.name = g_strdup ("type");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup ("document_password");
- g_array_append_val (attributes, attribute);
-
- attribute.name = g_strdup ("uri");
- attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
- attribute.value.string = g_strdup (uri);
- g_array_append_val (attributes, attribute);
-
- gnome_keyring_find_items (GNOME_KEYRING_ITEM_GENERIC_SECRET,
- attributes,
- ev_password_keyring_found_cb,
- g_object_ref (dialog),
- g_object_unref);
- gnome_keyring_attribute_list_free (attributes);
-#endif /* WITH_KEYRING */
- return;
-}
-
-const char *
-ev_password_dialog_get_password (EvPasswordDialog *dialog)
-{
- return gtk_entry_get_text (GTK_ENTRY (dialog->priv->entry));
-}
-
-void
-ev_password_dialog_set_bad_pass (EvPasswordDialog *dialog)
-{
- gtk_entry_set_text (GTK_ENTRY (dialog->priv->entry), "");
- ev_password_set_bad_password_label (dialog, _("Incorrect password"));
-}
-
-