Skip to content

Commit

Permalink
Bug #420342 - remember register filter and ordering settings
Browse files Browse the repository at this point in the history
Patch by Robert Fewell

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@21499 57a11ea4-9604-0410-9ed3-97b8803252fd
  • Loading branch information
gjanssens committed Oct 28, 2011
1 parent 9cab3b7 commit 3eacb2c
Show file tree
Hide file tree
Showing 4 changed files with 396 additions and 53 deletions.
48 changes: 48 additions & 0 deletions src/engine/Account.c
Expand Up @@ -85,6 +85,7 @@ enum
PROP_HIDDEN,
PROP_PLACEHOLDER,
PROP_FILTER,
PROP_SORT_ORDER,
};

typedef struct AccountPrivate
Expand Down Expand Up @@ -439,6 +440,9 @@ gnc_account_get_property (GObject *object,
case PROP_FILTER:
g_value_set_string(value, xaccAccountGetFilter(account));
break;
case PROP_SORT_ORDER:
g_value_set_string(value, xaccAccountGetSortOrder(account));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
Expand Down Expand Up @@ -534,6 +538,9 @@ gnc_account_set_property (GObject *object,
case PROP_FILTER:
xaccAccountSetFilter(account, g_value_get_string(value));
break;
case PROP_SORT_ORDER:
xaccAccountSetSortOrder(account, g_value_get_string(value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
Expand Down Expand Up @@ -881,6 +888,16 @@ gnc_account_class_init (AccountClass *klass)
"filters to be recalled.",
NULL,
G_PARAM_READWRITE));

g_object_class_install_property
(gobject_class,
PROP_SORT_ORDER,
g_param_spec_string ("sort-order",
"Account Sort Order",
"The account sort order is a value saved to allow "
"the sort order to be recalled.",
NULL,
G_PARAM_READWRITE));
}

static void
Expand Down Expand Up @@ -2237,6 +2254,26 @@ xaccAccountSetFilter (Account *acc, const char *str)
xaccAccountCommitEdit(acc);
}

void
xaccAccountSetSortOrder (Account *acc, const char *str)
{
g_return_if_fail(GNC_IS_ACCOUNT(acc));

xaccAccountBeginEdit(acc);
if (str)
{
gchar *tmp = g_strstrip(g_strdup(str));
kvp_frame_set_slot_nc(acc->inst.kvp_data, "sort-order",
strlen(tmp) ? kvp_value_new_string(tmp) : NULL);
g_free(tmp);
}
else
{
kvp_frame_set_slot_nc(acc->inst.kvp_data, "sort-order", NULL);
}
mark_account (acc);
xaccAccountCommitEdit(acc);
}

static void
qofAccountSetParent (Account *acc, QofInstance *parent)
Expand Down Expand Up @@ -3025,6 +3062,12 @@ xaccAccountGetFilter (const Account *acc)
return acc ? kvp_frame_get_string(acc->inst.kvp_data, "filter") : NULL;
}

const char *
xaccAccountGetSortOrder (const Account *acc)
{
g_return_val_if_fail(GNC_IS_ACCOUNT(acc), 0);
return acc ? kvp_frame_get_string(acc->inst.kvp_data, "sort-order") : NULL;
}

const char *
xaccAccountGetNotes (const Account *acc)
Expand Down Expand Up @@ -4862,6 +4905,11 @@ gboolean xaccAccountRegister (void)
(QofAccessFunc) xaccAccountGetFilter,
(QofSetterFunc) xaccAccountSetFilter
},
{
ACCOUNT_SORT_ORDER_, QOF_TYPE_STRING,
(QofAccessFunc) xaccAccountGetSortOrder,
(QofSetterFunc) xaccAccountSetSortOrder
},
{
ACCOUNT_NOTES_, QOF_TYPE_STRING,
(QofAccessFunc) xaccAccountGetNotes,
Expand Down
5 changes: 5 additions & 0 deletions src/engine/Account.h
Expand Up @@ -289,6 +289,8 @@ void xaccAccountSetDescription (Account *account, const char *desc);
void xaccAccountSetColor (Account *account, const char *color);
/** Set the account's Filter */
void xaccAccountSetFilter (Account *account, const char *filter);
/** Set the account's Sort Order */
void xaccAccountSetSortOrder (Account *account, const char *sortorder);
/** Set the account's notes */
void xaccAccountSetNotes (Account *account, const char *notes);
/** Set the last num field of an Account */
Expand Down Expand Up @@ -388,6 +390,8 @@ const char * xaccAccountGetDescription (const Account *account);
const char * xaccAccountGetColor (const Account *account);
/** Get the account's filter */
const char * xaccAccountGetFilter (const Account *account);
/** Get the account's Sort Order */
const char * xaccAccountGetSortOrder (const Account *account);
/** Get the account's notes */
const char * xaccAccountGetNotes (const Account *account);
/** Get the last num field of an Account */
Expand Down Expand Up @@ -1440,6 +1444,7 @@ const char * dxaccAccountGetQuoteTZ (const Account *account);
#define ACCOUNT_DESCRIPTION_ "desc"
#define ACCOUNT_COLOR_ "color"
#define ACCOUNT_FILTER_ "filter"
#define ACCOUNT_SORT_ORDER_ "sort-order"
#define ACCOUNT_NOTES_ "notes"
#define ACCOUNT_BALANCE_ "balance"
#define ACCOUNT_CLEARED_ "cleared"
Expand Down

0 comments on commit 3eacb2c

Please sign in to comment.