GnuCash c935c2f+
Loading...
Searching...
No Matches
Files | Typedefs | Functions

For systems with a large number of accounts (>500), the creation of the account name quickfill can take a significant amount of time (tens of seconds in bad cases). More...

Files

file  account-quickfill.h
 Create an account-name quick-fill.
 

Typedefs

typedef gboolean(* AccountBoolCB) (Account *, gpointer)
 

Functions

QuickFill * gnc_get_shared_account_name_quickfill (Account *root, const char *key, AccountBoolCB skip_cb, gpointer cb_data)
 Create/fetch a quickfill of account names.
 
GtkListStore * gnc_get_shared_account_name_list_store (Account *root, const char *key, AccountBoolCB cb, gpointer cb_data)
 

Detailed Description

For systems with a large number of accounts (>500), the creation of the account name quickfill can take a significant amount of time (tens of seconds in bad cases).

This routine will build a cache of account names that can be shared by all registers, thus dramatically improving the performance of opening a new register.

Typedef Documentation

◆ AccountBoolCB

typedef gboolean(* AccountBoolCB) (Account *, gpointer)

Definition at line 48 of file account-quickfill.h.

Function Documentation

◆ gnc_get_shared_account_name_list_store()

GtkListStore * gnc_get_shared_account_name_list_store ( Account root,
const char *  key,
AccountBoolCB  cb,
gpointer  cb_data 
)

Definition at line 220 of file account-quickfill.c.

222{
223 QFB* qfb;
224 QofBook* book;
225
226 book = gnc_account_get_book (root);
227 qfb = qof_book_get_data (book, key);
228
229 if (qfb)
230 return qfb->list_store;
231
232 qfb = build_shared_quickfill (book, root, key, cb, cb_data);
233 return qfb->list_store;
234}
QofBook reference.
Definition qofbook-p.hpp:47

◆ gnc_get_shared_account_name_quickfill()

QuickFill * gnc_get_shared_account_name_quickfill ( Account root,
const char *  key,
AccountBoolCB  skip_cb,
gpointer  cb_data 
)

Create/fetch a quickfill of account names.

The quickfill is created out of all of the subaccounts in the account group, filtered by the 'skip_cb' callback. If 'skip_cb' is not NULL, and if it returns TRUE when passed a particular account, then that account won't be included in the quickfill. The 'cb_data' is passed to the callback.

The quickfill is created only once; it is then stored with the QofBook that is the parent of the root account. It is automatically destroyed when the QofBook is destroyed.

Multiple, distinct quickfills, for different uses, are allowed. Each is identified with the 'key'. Be sure to use distinct, unique keys that don't conflict with other users of QofBook.

This code listens to account creation events, and automatically adds new accounts to the quickfill list (assuming skip_cb allows it). This code does not currently listen to account-destroy events.

Definition at line 203 of file account-quickfill.c.

205{
206 QFB* qfb;
207 QofBook* book;
208
209 book = gnc_account_get_book (root);
210 qfb = qof_book_get_data (book, key);
211
212 if (qfb)
213 return qfb->qf;
214
215 qfb = build_shared_quickfill (book, root, key, cb, cb_data);
216 return qfb->qf;
217}