r21680 - gnucash/trunk/src/gnome - Fix r21499 which fixed bug #420342
Mike Alexander
mta at code.gnucash.org
Mon Dec 5 01:06:03 EST 2011
Author: mta
Date: 2011-12-05 01:06:03 -0500 (Mon, 05 Dec 2011)
New Revision: 21680
Trac: http://svn.gnucash.org/trac/changeset/21680
Modified:
gnucash/trunk/src/gnome/gnc-plugin-page-register.c
Log:
Fix r21499 which fixed bug #420342
1. Make searching for a date range work, the date range was being ignored and
all transactions were returned.
2. Don't leak so many strings
3. Allow an end date in the filter even if there is no start date.
4. Don't reset the sort order or filter to the default if the user says
to not save it. Instead leave the saved value unchanged.
Modified: gnucash/trunk/src/gnome/gnc-plugin-page-register.c
===================================================================
--- gnucash/trunk/src/gnome/gnc-plugin-page-register.c 2011-12-05 00:42:51 UTC (rev 21679)
+++ gnucash/trunk/src/gnome/gnc-plugin-page-register.c 2011-12-05 06:06:03 UTC (rev 21680)
@@ -873,6 +873,7 @@
{
GncPluginPageRegister *page;
GncPluginPageRegisterPrivate *priv;
+ GNCLedgerDisplayType ledger_type;
GncWindow *gnc_window;
guint numRows;
GtkWidget *gsr;
@@ -917,40 +918,45 @@
gnc_plugin_page_register_ui_initial_state (page);
gnc_plugin_page_register_ui_update (NULL, page);
- /* Set the sort order for the split register and status of save order button */
- priv->sd.save_order = FALSE;
- order = gnc_plugin_page_register_get_sort_order(plugin_page);
+ ledger_type = gnc_ledger_display_type (priv->ledger);
- PINFO("Loaded Sort order is %s", order);
-
- gnc_split_reg_set_sort_type(priv->gsr, SortTypefromString(order));
-
- if (order && (strcmp (order, DEFAULT_SORT_ORDER) != 0))
- priv->sd.save_order = TRUE;
-
- priv->sd.original_save_order = priv->sd.save_order;
- g_free(order);
-
- /* Set the filter for the split register and status of save filter button */
- priv->fd.save_filter = FALSE;
-
- filter = g_strsplit(gnc_plugin_page_register_get_filter(plugin_page),",",-1);
-
- PINFO("Loaded Filter Status is %s", filter[0]);
-
- priv->fd.cleared_match = (gint)g_ascii_strtoll( filter[0], NULL, 16 );
-
- if (filter[0] && (strcmp (filter[0], DEFAULT_FILTER) != 0))
- filter_changed = filter_changed + 1;
-
- if (filter[1] && (strcmp (filter[1],"0") != 0 ))
+ if (ledger_type == LD_SINGLE || ledger_type == LD_SUBACCOUNT)
{
- PINFO("Loaded Filter Start Date is %s", filter[1]);
-
- priv->fd.start_time = gnc_plugin_page_register_filter_dmy2time( filter[1] );
- priv->fd.start_time = gnc_timet_get_day_start(priv->fd.start_time);
- filter_changed = filter_changed + 1;
-
+ /* Set the sort order for the split register and status of save order button */
+ priv->sd.save_order = FALSE;
+ order = gnc_plugin_page_register_get_sort_order(plugin_page);
+
+ PINFO("Loaded Sort order is %s", order);
+
+ gnc_split_reg_set_sort_type(priv->gsr, SortTypefromString(order));
+
+ if (order && (strcmp (order, DEFAULT_SORT_ORDER) != 0))
+ priv->sd.save_order = TRUE;
+
+ priv->sd.original_save_order = priv->sd.save_order;
+ g_free(order);
+
+ /* Set the filter for the split register and status of save filter button */
+ priv->fd.save_filter = FALSE;
+
+ filter = g_strsplit(gnc_plugin_page_register_get_filter(plugin_page),",",-1);
+
+ PINFO("Loaded Filter Status is %s", filter[0]);
+
+ priv->fd.cleared_match = (gint)g_ascii_strtoll( filter[0], NULL, 16 );
+
+ if (filter[0] && (strcmp (filter[0], DEFAULT_FILTER) != 0))
+ filter_changed = filter_changed + 1;
+
+ if (filter[1] && (strcmp (filter[1],"0") != 0 ))
+ {
+ PINFO("Loaded Filter Start Date is %s", filter[1]);
+
+ priv->fd.start_time = gnc_plugin_page_register_filter_dmy2time( filter[1] );
+ priv->fd.start_time = gnc_timet_get_day_start(priv->fd.start_time);
+ filter_changed = filter_changed + 1;
+ }
+
if (filter[2] && (strcmp (filter[2],"0") != 0 ))
{
PINFO("Loaded Filter End Date is %s", filter[2]);
@@ -959,18 +965,18 @@
priv->fd.end_time = gnc_timet_get_day_end(priv->fd.end_time);
filter_changed = filter_changed + 1;
}
+
+ if(filter_changed != 0)
+ priv->fd.save_filter = TRUE;
+
+ priv->fd.original_save_filter = priv->fd.save_filter;
+ g_strfreev(filter);
+
+ /* Update Query with Filter Status and Dates */
+ gnc_ppr_update_status_query (page);
+ gnc_ppr_update_date_query(page);
}
- if(filter_changed != 0)
- priv->fd.save_filter = TRUE;
-
- priv->fd.original_save_filter = priv->fd.save_filter;
- g_strfreev(filter);
-
- /* Update Query with Filter Status and Dates */
- gnc_ppr_update_status_query (page);
- gnc_ppr_update_date_query(page);
-
plugin_page->summarybar = gsr_create_summary_bar(priv->gsr);
if (plugin_page->summarybar)
{
@@ -1462,7 +1468,6 @@
SplitRegister *reg;
Account *leader;
const char* filter;
- gchar *default_filter;
g_return_val_if_fail (GNC_IS_PLUGIN_PAGE_REGISTER (plugin_page), _("unknown"));
@@ -1476,9 +1481,7 @@
if ((ledger_type == LD_SINGLE) || (ledger_type == LD_SUBACCOUNT))
filter = xaccAccountGetFilter (leader);
- default_filter = g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0");
-
- return g_strdup(filter ? filter : default_filter);
+ return filter ? g_strdup(filter) : g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0");
}
void
@@ -1497,13 +1500,18 @@
ledger_type = gnc_ledger_display_type (ld);
leader = gnc_ledger_display_leader (ld);
- default_filter = g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0");
+ if (leader != NULL)
+ {
+ default_filter = g_strdup_printf("%s,%s,%s", DEFAULT_FILTER, "0", "0");
+
+ if (!filter || (strcmp (filter, default_filter) == 0))
+ xaccAccountSetFilter (leader, NULL);
+ else
+ xaccAccountSetFilter (leader, filter);
+
+ g_free (default_filter);
+ }
- if (!filter || (strcmp (filter, default_filter) == 0))
- xaccAccountSetFilter (leader, NULL);
- else
- xaccAccountSetFilter (leader, filter);
-
return;
}
@@ -1546,12 +1554,15 @@
reg = gnc_ledger_display_get_split_register (ld);
ledger_type = gnc_ledger_display_type (ld);
leader = gnc_ledger_display_leader (ld);
+
+ if (leader != NULL)
+ {
+ if (!sort_order || (strcmp (sort_order, DEFAULT_SORT_ORDER) == 0))
+ xaccAccountSetSortOrder (leader, NULL);
+ else
+ xaccAccountSetSortOrder (leader, sort_order);
+ }
- if (!sort_order || (strcmp (sort_order, DEFAULT_SORT_ORDER) == 0))
- xaccAccountSetSortOrder (leader, NULL);
- else
- xaccAccountSetSortOrder (leader, sort_order);
-
return;
}
@@ -1668,10 +1679,8 @@
{
type = gnc_split_reg_get_sort_type(priv->gsr);
order = SortTypeasString(type);
- gnc_plugin_page_register_set_sort_order (plugin_page, g_strdup_printf("%s", order));
+ gnc_plugin_page_register_set_sort_order (plugin_page, order);
}
- else
- gnc_plugin_page_register_set_sort_order (plugin_page, g_strdup_printf("%s", DEFAULT_SORT_ORDER));
}
priv->sd.dialog = NULL;
gtk_widget_destroy(GTK_WIDGET(dialog));
@@ -1991,7 +2000,6 @@
time_val = gnc_date_edit_get_date(GNC_DATE_EDIT(priv->fd.start_date));
time_val = gnc_timet_get_day_start(time_val);
priv->fd.start_time = time_val;
-
}
else
{
@@ -2232,7 +2240,6 @@
{
GncPluginPageRegisterPrivate *priv;
GncPluginPage *plugin_page;
- const char* filter;
g_return_if_fail(GTK_IS_DIALOG(dialog));
g_return_if_fail(GNC_IS_PLUGIN_PAGE_REGISTER(page));
@@ -2257,24 +2264,32 @@
if(priv->fd.save_filter)
{
+ gchar* filter;
filter = g_strdup_printf("0x%04x", priv->fd.cleared_match);
if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->fd.start_date_choose)) && priv->fd.start_time != 0 )
- filter = g_strconcat ( filter, ",", gnc_plugin_page_register_filter_time2dmy(priv->fd.start_time) , NULL);
+ {
+ gchar *timeval = gnc_plugin_page_register_filter_time2dmy(priv->fd.start_time);
+ filter = g_strconcat ( filter, ",", timeval, NULL);
+ g_free (timeval);
+ }
else
filter = g_strconcat ( filter, ",0", NULL);
if ( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->fd.end_date_choose)) && priv->fd.end_time != 0 )
- filter = g_strconcat ( filter, ",", gnc_plugin_page_register_filter_time2dmy(priv->fd.end_time) , NULL);
+ {
+ gchar *timeval = gnc_plugin_page_register_filter_time2dmy(priv->fd.end_time);
+ filter = g_strconcat ( filter, ",", timeval, NULL);
+ g_free (timeval);
+ }
else
filter = g_strconcat ( filter, ",0", NULL);
PINFO("The filter to save is %s",filter);
gnc_plugin_page_register_set_filter (plugin_page, filter);
+ g_free (filter);
}
- else
- gnc_plugin_page_register_set_filter (plugin_page, g_strdup_printf("%s,%s,%s", DEFAULT_FILTER,"0","0"));
}
priv->fd.dialog = NULL;
gtk_widget_destroy(GTK_WIDGET(dialog));
More information about the gnucash-changes
mailing list