r17205 - gnucash/branches/aqbanking3/src/import-export/aqbanking - Patch from Micha Lenk to activate password caching while entering one.

Andreas Köhler andi5 at cvs.gnucash.org
Sun Jun 8 19:13:31 EDT 2008


Author: andi5
Date: 2008-06-08 19:13:30 -0400 (Sun, 08 Jun 2008)
New Revision: 17205
Trac: http://svn.gnucash.org/trac/changeset/17205

Modified:
   gnucash/branches/aqbanking3/src/import-export/aqbanking/aqbanking.glade
   gnucash/branches/aqbanking3/src/import-export/aqbanking/gnc-gwen-gui.c
Log:
Patch from Micha Lenk to activate password caching while entering one.


Modified: gnucash/branches/aqbanking3/src/import-export/aqbanking/aqbanking.glade
===================================================================
--- gnucash/branches/aqbanking3/src/import-export/aqbanking/aqbanking.glade	2008-06-08 23:12:06 UTC (rev 17204)
+++ gnucash/branches/aqbanking3/src/import-export/aqbanking/aqbanking.glade	2008-06-08 23:13:30 UTC (rev 17205)
@@ -2408,7 +2408,7 @@
 	  <child>
 	    <widget class="GtkTable" id="table7">
 	      <property name="visible">True</property>
-	      <property name="n_rows">2</property>
+	      <property name="n_rows">3</property>
 	      <property name="n_columns">2</property>
 	      <property name="homogeneous">False</property>
 	      <property name="row_spacing">6</property>
@@ -2511,6 +2511,28 @@
 		  <property name="y_options"></property>
 		</packing>
 	      </child>
+
+	      <child>
+		<widget class="GtkCheckButton" id="remember_pin">
+		  <property name="visible">True</property>
+		  <property name="can_focus">True</property>
+		  <property name="label" translatable="yes">Remember _PIN</property>
+		  <property name="use_underline">True</property>
+		  <property name="relief">GTK_RELIEF_NORMAL</property>
+		  <property name="focus_on_click">True</property>
+		  <property name="active">False</property>
+		  <property name="inconsistent">False</property>
+		  <property name="draw_indicator">True</property>
+		</widget>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">2</property>
+		  <property name="bottom_attach">3</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"></property>
+		</packing>
+	      </child>
 	    </widget>
 	    <packing>
 	      <property name="padding">0</property>

Modified: gnucash/branches/aqbanking3/src/import-export/aqbanking/gnc-gwen-gui.c
===================================================================
--- gnucash/branches/aqbanking3/src/import-export/aqbanking/gnc-gwen-gui.c	2008-06-08 23:12:06 UTC (rev 17204)
+++ gnucash/branches/aqbanking3/src/import-export/aqbanking/gnc-gwen-gui.c	2008-06-08 23:13:30 UTC (rev 17205)
@@ -88,6 +88,7 @@
 static void register_callbacks(GncGWENGui *gui);
 static void unregister_callbacks(GncGWENGui *gui);
 static void setup_dialog(GncGWENGui *gui);
+static void enable_password_cache(GncGWENGui *gui, gboolean enabled);
 static void reset_dialog(GncGWENGui *gui);
 static void set_runing(GncGWENGui *gui);
 static void set_finished(GncGWENGui *gui);
@@ -387,8 +388,28 @@
 }
 
 static void
+enable_password_cache(GncGWENGui *gui, gboolean enabled)
+{
+    g_return_if_fail(gui);
+
+    if (enabled && !gui->passwords) {
+        /* Remember passwords in memory, mapping tokens to passwords */
+        gui->passwords = g_hash_table_new_full(
+            g_str_hash, g_str_equal, (GDestroyNotify) g_free,
+            (GDestroyNotify) erase_password);
+    } else if (!enabled && gui->passwords) {
+        /* Erase and free remembered passwords from memory */
+        g_hash_table_destroy(gui->passwords);
+        gui->passwords = NULL;
+    }
+    gui->cache_passwords = enabled;
+}
+
+static void
 reset_dialog(GncGWENGui *gui)
 {
+    gboolean cache_passwords;
+
     g_return_if_fail(gui);
 
     ENTER("gui=%p", gui);
@@ -420,18 +441,9 @@
     gui->state = INIT;
     gui->min_loglevel = GWEN_LoggerLevel_Verbous;
 
-    gui->cache_passwords = gnc_gconf_get_bool(GCONF_SECTION_AQBANKING,
-                                              KEY_REMEMBER_PIN, NULL);
-    if (gui->cache_passwords && !gui->passwords) {
-        /* Remember passwords in memory, mapping tokens to passwords */
-        gui->passwords = g_hash_table_new_full(
-            g_str_hash, g_str_equal, (GDestroyNotify) g_free,
-            (GDestroyNotify) erase_password);
-    } else if (!gui->cache_passwords && gui->passwords) {
-        /* Erase and free remembered passwords from memory */
-        g_hash_table_destroy(gui->passwords);
-        gui->passwords = NULL;
-    }
+    cache_passwords = gnc_gconf_get_bool(GCONF_SECTION_AQBANKING,
+                                         KEY_REMEMBER_PIN, NULL);
+    enable_password_cache(gui, cache_passwords);
 
     if (!gui->accepted_certs)
         gui->accepted_certs = g_hash_table_new_full(
@@ -766,6 +778,7 @@
     GtkWidget *input_entry;
     GtkWidget *confirm_entry;
     GtkWidget *confirm_label;
+    GtkWidget *remember_pin_checkbutton;
     const gchar *internal_input, *internal_confirmed;
     gboolean confirm = (flags & GWEN_GUI_INPUT_FLAGS_CONFIRM) != 0;
     gboolean hidden = (flags & GWEN_GUI_INPUT_FLAGS_SHOW) == 0;
@@ -785,6 +798,9 @@
     input_entry = glade_xml_get_widget(xml, "input_entry");
     confirm_entry = glade_xml_get_widget(xml, "confirm_entry");
     confirm_label = glade_xml_get_widget(xml, "confirm_label");
+    remember_pin_checkbutton = glade_xml_get_widget(xml, "remember_pin");
+    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(remember_pin_checkbutton),
+                                 gui->cache_passwords);
 
     if (gui->parent)
         gtk_window_set_transient_for(GTK_WINDOW(dialog),
@@ -819,9 +835,18 @@
 
     /* Ask the user until he enters a valid input or cancels */
     while (TRUE) {
+        gboolean remember_pin;
+
         if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_OK)
             break;
 
+        /* Enable or disable the password cache */
+        remember_pin = gtk_toggle_button_get_active(
+            GTK_TOGGLE_BUTTON(remember_pin_checkbutton));
+        enable_password_cache(gui, remember_pin);
+        gnc_gconf_set_bool(GCONF_SECTION_AQBANKING, KEY_REMEMBER_PIN,
+                           remember_pin, NULL);
+
         internal_input = gtk_entry_get_text(GTK_ENTRY(input_entry));
         if (strlen(internal_input) < min_len) {
             gboolean retval;



More information about the gnucash-changes mailing list