r14515 - gnucash/trunk - Make GncAddress more QOF compliant. (#343726)
Derek Atkins
warlord at cvs.gnucash.org
Sun Jul 16 01:16:52 EDT 2006
Author: warlord
Date: 2006-07-16 01:16:52 -0400 (Sun, 16 Jul 2006)
New Revision: 14515
Trac: http://svn.gnucash.org/trac/changeset/14515
Modified:
gnucash/trunk/
gnucash/trunk/ChangeLog
gnucash/trunk/src/business/business-core/gncAddress.c
gnucash/trunk/src/business/business-core/gncAddress.h
Log:
Make GncAddress more QOF compliant. (#343726)
Adds BeginEdit/CommitEdit calls.
Property changes on: gnucash/trunk
___________________________________________________________________
Name: svk:merge
- d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:12841
+ d2ab10a8-8a95-4986-baff-8d511d9f15b2:/local/gnucash/trunk:12866
Modified: gnucash/trunk/ChangeLog
===================================================================
--- gnucash/trunk/ChangeLog 2006-07-15 22:27:57 UTC (rev 14514)
+++ gnucash/trunk/ChangeLog 2006-07-16 05:16:52 UTC (rev 14515)
@@ -1,3 +1,9 @@
+2006-07-15 Derek Atkins <derek at 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 at gmx.net>
* src/report/report-system/html-text.scm: Remove a duplicate of
Modified: gnucash/trunk/src/business/business-core/gncAddress.c
===================================================================
--- gnucash/trunk/src/business/business-core/gncAddress.c 2006-07-15 22:27:57 UTC (rev 14514)
+++ gnucash/trunk/src/business/business-core/gncAddress.c 2006-07-16 05:16:52 UTC (rev 14515)
@@ -50,6 +50,8 @@
char * email;
};
+static QofLogModule log_module = GNC_MOD_BUSINESS;
+
#define _GNC_MOD_NAME GNC_ADDRESS_MODULE_NAME
G_INLINE_FUNC void mark_address (GncAddress *address);
@@ -137,7 +139,17 @@
gncAddressDestroy (GncAddress *addr)
{
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->addr1);
CACHE_REMOVE (addr->addr2);
@@ -147,16 +159,19 @@
CACHE_REMOVE (addr->fax);
CACHE_REMOVE (addr->email);
+ qof_instance_release (&addr->inst);
g_free (addr);
}
+
/* Set functions */
-#define SET_STR(member, str) { \
+#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (member == str) return; \
if (!safe_strcmp (member, str)) return; \
+ gncAddressBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
@@ -166,66 +181,100 @@
{
if (!addr) return;
if (!name) return;
- SET_STR(addr->name, name);
+ SET_STR(addr, addr->name, name);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetAddr1 (GncAddress *addr, const char *addr1)
{
if (!addr) return;
if (!addr1) return;
- SET_STR(addr->addr1, addr1);
+ SET_STR(addr, addr->addr1, addr1);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetAddr2 (GncAddress *addr, const char *addr2)
{
if (!addr) return;
if (!addr2) return;
- SET_STR(addr->addr2, addr2);
+ SET_STR(addr, addr->addr2, addr2);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetAddr3 (GncAddress *addr, const char *addr3)
{
if (!addr) return;
if (!addr3) return;
- SET_STR(addr->addr3, addr3);
+ SET_STR(addr, addr->addr3, addr3);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetAddr4 (GncAddress *addr, const char *addr4)
{
if (!addr) return;
if (!addr4) return;
- SET_STR(addr->addr4, addr4);
+ SET_STR(addr, addr->addr4, addr4);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetPhone (GncAddress *addr, const char *phone)
{
if (!addr) return;
if (!phone) return;
- SET_STR(addr->phone, phone);
+ SET_STR(addr, addr->phone, phone);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetFax (GncAddress *addr, const char *fax)
{
if (!addr) return;
if (!fax) return;
- SET_STR(addr->fax, fax);
+ SET_STR(addr, addr->fax, fax);
mark_address (addr);
+ gncAddressCommitEdit (addr);
}
void gncAddressSetEmail (GncAddress *addr, const char *email)
{
if (!addr) return;
if (!email) return;
- SET_STR(addr->email, email);
+ SET_STR(addr, addr->email, email);
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 */
const char * gncAddressGetName (const GncAddress *addr)
Modified: gnucash/trunk/src/business/business-core/gncAddress.h
===================================================================
--- gnucash/trunk/src/business/business-core/gncAddress.h 2006-07-15 22:27:57 UTC (rev 14514)
+++ gnucash/trunk/src/business/business-core/gncAddress.h 2006-07-16 05:16:52 UTC (rev 14515)
@@ -80,11 +80,10 @@
/** @name Create/Destroy functions
@{ */
-/** create a new address */
-GncAddress * gncAddressCreate (QofBook *book, QofEntity *parent);
-
-/** destroy an address */
+GncAddress *gncAddressCreate (QofBook *book, QofEntity *parent);
void gncAddressDestroy (GncAddress *addr);
+void gncAddressBeginEdit (GncAddress *addr);
+void gncAddressCommitEdit (GncAddress *addr);
/** @} */
More information about the gnucash-changes
mailing list