mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
Make GncAddress more QOF compliant. (#343726)
Adds BeginEdit/CommitEdit calls. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@14515 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
f64d70b454
commit
76202b1b33
@ -1,3 +1,9 @@
|
|||||||
|
2006-07-15 Derek Atkins <derek@ihtfp.com>
|
||||||
|
|
||||||
|
* src/business/business-core/gncAddress.[ch]:
|
||||||
|
Make GncAddress more QOF compliant. (#343726)
|
||||||
|
Adds BeginEdit/CommitEdit calls.
|
||||||
|
|
||||||
2006-07-15 Andreas Köhler <andi5.py@gmx.net>
|
2006-07-15 Andreas Köhler <andi5.py@gmx.net>
|
||||||
|
|
||||||
* src/report/report-system/html-text.scm: Remove a duplicate of
|
* src/report/report-system/html-text.scm: Remove a duplicate of
|
||||||
|
@ -50,6 +50,8 @@ struct _gncAddress
|
|||||||
char * email;
|
char * email;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static QofLogModule log_module = GNC_MOD_BUSINESS;
|
||||||
|
|
||||||
#define _GNC_MOD_NAME GNC_ADDRESS_MODULE_NAME
|
#define _GNC_MOD_NAME GNC_ADDRESS_MODULE_NAME
|
||||||
|
|
||||||
G_INLINE_FUNC void mark_address (GncAddress *address);
|
G_INLINE_FUNC void mark_address (GncAddress *address);
|
||||||
@ -137,6 +139,16 @@ void
|
|||||||
gncAddressDestroy (GncAddress *addr)
|
gncAddressDestroy (GncAddress *addr)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
|
addr->inst.do_free = TRUE;
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gncAddressFree (GncAddress *addr)
|
||||||
|
{
|
||||||
|
if (!addr) return;
|
||||||
|
|
||||||
|
qof_event_gen (&addr->inst.entity, QOF_EVENT_DESTROY, NULL);
|
||||||
|
|
||||||
CACHE_REMOVE (addr->name);
|
CACHE_REMOVE (addr->name);
|
||||||
CACHE_REMOVE (addr->addr1);
|
CACHE_REMOVE (addr->addr1);
|
||||||
@ -147,16 +159,19 @@ gncAddressDestroy (GncAddress *addr)
|
|||||||
CACHE_REMOVE (addr->fax);
|
CACHE_REMOVE (addr->fax);
|
||||||
CACHE_REMOVE (addr->email);
|
CACHE_REMOVE (addr->email);
|
||||||
|
|
||||||
|
qof_instance_release (&addr->inst);
|
||||||
g_free (addr);
|
g_free (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Set functions */
|
/* Set functions */
|
||||||
|
|
||||||
#define SET_STR(member, str) { \
|
#define SET_STR(obj, member, str) { \
|
||||||
char * tmp; \
|
char * tmp; \
|
||||||
\
|
\
|
||||||
if (member == str) return; \
|
if (member == str) return; \
|
||||||
if (!safe_strcmp (member, str)) return; \
|
if (!safe_strcmp (member, str)) return; \
|
||||||
|
gncAddressBeginEdit (obj); \
|
||||||
tmp = CACHE_INSERT (str); \
|
tmp = CACHE_INSERT (str); \
|
||||||
CACHE_REMOVE (member); \
|
CACHE_REMOVE (member); \
|
||||||
member = tmp; \
|
member = tmp; \
|
||||||
@ -166,66 +181,100 @@ void gncAddressSetName (GncAddress *addr, const char *name)
|
|||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!name) return;
|
if (!name) return;
|
||||||
SET_STR(addr->name, name);
|
SET_STR(addr, addr->name, name);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetAddr1 (GncAddress *addr, const char *addr1)
|
void gncAddressSetAddr1 (GncAddress *addr, const char *addr1)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!addr1) return;
|
if (!addr1) return;
|
||||||
SET_STR(addr->addr1, addr1);
|
SET_STR(addr, addr->addr1, addr1);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetAddr2 (GncAddress *addr, const char *addr2)
|
void gncAddressSetAddr2 (GncAddress *addr, const char *addr2)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!addr2) return;
|
if (!addr2) return;
|
||||||
SET_STR(addr->addr2, addr2);
|
SET_STR(addr, addr->addr2, addr2);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetAddr3 (GncAddress *addr, const char *addr3)
|
void gncAddressSetAddr3 (GncAddress *addr, const char *addr3)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!addr3) return;
|
if (!addr3) return;
|
||||||
SET_STR(addr->addr3, addr3);
|
SET_STR(addr, addr->addr3, addr3);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetAddr4 (GncAddress *addr, const char *addr4)
|
void gncAddressSetAddr4 (GncAddress *addr, const char *addr4)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!addr4) return;
|
if (!addr4) return;
|
||||||
SET_STR(addr->addr4, addr4);
|
SET_STR(addr, addr->addr4, addr4);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetPhone (GncAddress *addr, const char *phone)
|
void gncAddressSetPhone (GncAddress *addr, const char *phone)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!phone) return;
|
if (!phone) return;
|
||||||
SET_STR(addr->phone, phone);
|
SET_STR(addr, addr->phone, phone);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetFax (GncAddress *addr, const char *fax)
|
void gncAddressSetFax (GncAddress *addr, const char *fax)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!fax) return;
|
if (!fax) return;
|
||||||
SET_STR(addr->fax, fax);
|
SET_STR(addr, addr->fax, fax);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gncAddressSetEmail (GncAddress *addr, const char *email)
|
void gncAddressSetEmail (GncAddress *addr, const char *email)
|
||||||
{
|
{
|
||||||
if (!addr) return;
|
if (!addr) return;
|
||||||
if (!email) return;
|
if (!email) return;
|
||||||
SET_STR(addr->email, email);
|
SET_STR(addr, addr->email, email);
|
||||||
mark_address (addr);
|
mark_address (addr);
|
||||||
|
gncAddressCommitEdit (addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void gncAddressBeginEdit (GncAddress *addr)
|
||||||
|
{
|
||||||
|
qof_begin_edit (&addr->inst);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void gncAddressOnError (QofInstance *inst, QofBackendError errcode)
|
||||||
|
{
|
||||||
|
PERR("Address QofBackend Failure: %d", errcode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void gncAddressOnDone (QofInstance *addr) { }
|
||||||
|
|
||||||
|
static inline void address_free (QofInstance *inst)
|
||||||
|
{
|
||||||
|
GncAddress *addr = (GncAddress *) inst;
|
||||||
|
gncAddressFree (addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void gncAddressCommitEdit (GncAddress *addr)
|
||||||
|
{
|
||||||
|
if (!qof_commit_edit (QOF_INSTANCE(addr))) return;
|
||||||
|
qof_commit_edit_part2 (&addr->inst, gncAddressOnError,
|
||||||
|
gncAddressOnDone, address_free);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Get Functions */
|
/* Get Functions */
|
||||||
|
|
||||||
const char * gncAddressGetName (const GncAddress *addr)
|
const char * gncAddressGetName (const GncAddress *addr)
|
||||||
|
@ -80,11 +80,10 @@ typedef struct _gncAddress GncAddress;
|
|||||||
|
|
||||||
/** @name Create/Destroy functions
|
/** @name Create/Destroy functions
|
||||||
@{ */
|
@{ */
|
||||||
/** create a new address */
|
GncAddress *gncAddressCreate (QofBook *book, QofEntity *parent);
|
||||||
GncAddress * gncAddressCreate (QofBook *book, QofEntity *parent);
|
|
||||||
|
|
||||||
/** destroy an address */
|
|
||||||
void gncAddressDestroy (GncAddress *addr);
|
void gncAddressDestroy (GncAddress *addr);
|
||||||
|
void gncAddressBeginEdit (GncAddress *addr);
|
||||||
|
void gncAddressCommitEdit (GncAddress *addr);
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user