- Support Vendor-owned Jobs.. Fill in all the GNC_OWNER_VENDOR place

holders with appropriate code.
- Change gncJob{Get,Set}Desc to {Get,Set}Reference to better reflect
  its purpose in life


git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@6636 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Derek Atkins
2002-01-22 17:16:02 +00:00
parent 7e2891f0d8
commit 4d54387978
8 changed files with 76 additions and 23 deletions

View File

@@ -75,7 +75,7 @@ void gncJobDestroy (GncJob *job)
gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job);
break;
case GNC_OWNER_VENDOR:
/* XXX */
gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job);
break;
default:
}
@@ -111,7 +111,7 @@ void gncJobSetName (GncJob *job, const char *name)
job->dirty = TRUE;
}
void gncJobSetDesc (GncJob *job, const char *desc)
void gncJobSetReference (GncJob *job, const char *desc)
{
if (!job) return;
if (!desc) return;
@@ -141,7 +141,7 @@ void gncJobSetOwner (GncJob *job, GncOwner *owner)
gncCustomerRemoveJob (gncOwnerGetCustomer(&job->owner), job);
break;
case GNC_OWNER_VENDOR:
/* XXX */
gncVendorRemoveJob (gncOwnerGetVendor(&job->owner), job);
break;
default:
}
@@ -153,7 +153,7 @@ void gncJobSetOwner (GncJob *job, GncOwner *owner)
gncCustomerAddJob (gncOwnerGetCustomer(&job->owner), job);
break;
case GNC_OWNER_VENDOR:
/* XXX */
gncVendorAddJob (gncOwnerGetVendor(&job->owner), job);
break;
default:
}
@@ -195,7 +195,7 @@ const char * gncJobGetName (GncJob *job)
return job->name;
}
const char * gncJobGetDesc (GncJob *job)
const char * gncJobGetReference (GncJob *job)
{
if (!job) return NULL;
return job->desc;

View File

@@ -22,8 +22,8 @@ void gncJobDestroy (GncJob *job);
/* Set Functions */
void gncJobSetID (GncJob *job, const char *id);
void gncJobSetName (GncJob *job, const char *username);
void gncJobSetDesc (GncJob *job, const char *language);
void gncJobSetName (GncJob *job, const char *jobname);
void gncJobSetReference (GncJob *job, const char *owner_reference);
void gncJobSetOwner (GncJob *job, GncOwner *owner);
void gncJobSetActive (GncJob *job, gboolean active);
@@ -35,7 +35,7 @@ GNCBook * gncJobGetBook (GncJob *job);
const GUID * gncJobGetGUID (GncJob *job);
const char * gncJobGetID (GncJob *job);
const char * gncJobGetName (GncJob *job);
const char * gncJobGetDesc (GncJob *job);
const char * gncJobGetReference (GncJob *job);
GncOwner * gncJobGetOwner (GncJob *job);
gboolean gncJobGetActive (GncJob *job);

View File

@@ -1,6 +1,6 @@
/*
* gncVendor.c -- the Core Vendor Interface
* Copyright (C) 2001 Derek Atkins
* Copyright (C) 2001, 2002 Derek Atkins
* Author: Derek Atkins <warlord@MIT.EDU>
*/
@@ -30,6 +30,7 @@ struct _gncVendor {
gint terms;
gboolean taxincluded;
gboolean active;
GList * jobs;
gboolean dirty;
};
@@ -74,6 +75,8 @@ void gncVendorDestroy (GncVendor *vendor)
CACHE_REMOVE (vendor->name);
CACHE_REMOVE (vendor->notes);
gncAddressDestroy (vendor->addr);
g_list_free (vendor->jobs);
remObj (vendor);
g_free (vendor);
@@ -204,17 +207,30 @@ gboolean gncVendorGetActive (GncVendor *vendor)
return vendor->active;
}
GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid)
/* Note that JobList changes do not affect the "dirtiness" of the vendor */
void gncVendorAddJob (GncVendor *vendor, GncJob *job)
{
if (!book || !guid) return NULL;
return xaccLookupEntity (gnc_book_get_entity_table (book),
guid, _GNC_MOD_NAME);
if (!vendor) return;
if (!job) return;
if (g_list_index(vendor->jobs, job) == -1)
vendor->jobs = g_list_insert_sorted (vendor->jobs, job, gncJobSortFunc);
}
gboolean gncVendorIsDirty (GncVendor *vendor)
void gncVendorRemoveJob (GncVendor *vendor, GncJob *job)
{
if (!vendor) return FALSE;
return (vendor->dirty || gncAddressIsDirty (vendor->addr));
GList *node;
if (!vendor) return;
if (!job) return;
node = g_list_find (vendor->jobs, job);
if (!node) {
/* PERR ("split not in account"); */
} else {
vendor->jobs = g_list_remove_link (vendor->jobs, node);
g_list_free_1 (node);
}
}
void gncVendorCommitEdit (GncVendor *vendor)
@@ -232,6 +248,36 @@ static gint gncVendorSortFunc (gconstpointer a, gconstpointer b) {
return(strcmp(va->name, vb->name));
}
GList * gncVendorGetJoblist (GncVendor *vendor, gboolean show_all)
{
if (!vendor) return NULL;
if (show_all) {
return (g_list_copy (vendor->jobs));
} else {
GList *list = NULL, *iterator;
for (iterator = vendor->jobs; iterator; iterator=iterator->next) {
GncJob *j = iterator->data;
if (gncJobGetActive (j))
list = g_list_append (list, j);
}
return list;
}
}
GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid)
{
if (!book || !guid) return NULL;
return xaccLookupEntity (gnc_book_get_entity_table (book),
guid, _GNC_MOD_NAME);
}
gboolean gncVendorIsDirty (GncVendor *vendor)
{
if (!vendor) return FALSE;
return (vendor->dirty || gncAddressIsDirty (vendor->addr));
}
/* Package-Private functions */
static void addObj (GncVendor *vendor)

View File

@@ -1,6 +1,6 @@
/*
* gncVendor.h -- the Core Vendor Interface
* Copyright (C) 2001 Derek Atkins
* Copyright (C) 2001, 2002 Derek Atkins
* Author: Derek Atkins <warlord@MIT.EDU>
*/
@@ -11,6 +11,7 @@ typedef struct _gncVendor GncVendor;
#include "gnc-book.h"
#include "gncAddress.h"
#include "gncJob.h"
#define GNC_VENDOR_MODULE_NAME "gncVendor"
@@ -28,6 +29,9 @@ void gncVendorSetTerms (GncVendor *vendor, gint terms);
void gncVendorSetTaxIncluded (GncVendor *vendor, gboolean taxincl);
void gncVendorSetActive (GncVendor *vendor, gboolean active);
void gncVendorAddJob (GncVendor *vendor, GncJob *job);
void gncVendorRemoveJob (GncVendor *vendor, GncJob *job);
void gncVendorCommitEdit (GncVendor *vendor);
/* Get Functions */
@@ -42,6 +46,8 @@ gint gncVendorGetTerms (GncVendor *vendor);
gboolean gncVendorGetTaxIncluded (GncVendor *vendor);
gboolean gncVendorGetActive (GncVendor *vendor);
GList * gncVendorGetJoblist (GncVendor *vendor, gboolean show_all);
GncVendor * gncVendorLookup (GNCBook *book, const GUID *guid);
gboolean gncVendorIsDirty (GncVendor *vendor);

View File

@@ -63,7 +63,7 @@ test_job (void)
test_string_fcn (book, "Id", gncJobSetID, gncJobGetID);
test_string_fcn (book, "Name", gncJobSetName, gncJobGetName);
test_string_fcn (book, "Desc", gncJobSetDesc, gncJobGetDesc);
test_string_fcn (book, "Reference", gncJobSetReference, gncJobGetReference);
test_bool_fcn (book, "Active", gncJobSetActive, gncJobGetActive);

View File

@@ -60,7 +60,8 @@ update_job_select_picker (struct select_job_window *w)
show_all);
break;
case GNC_OWNER_VENDOR:
/* XXX */
objs = gncVendorGetJoblist (gncOwnerGetVendor (&(w->owner)),
show_all);
break;
default:
}

View File

@@ -67,8 +67,8 @@ static void gnc_ui_to_job (JobWindow *jw, GncJob *job)
0, -1));
gncJobSetName (job, gtk_editable_get_chars (GTK_EDITABLE (jw->name_entry),
0, -1));
gncJobSetDesc (job, gtk_editable_get_chars (GTK_EDITABLE (jw->desc_entry),
0, -1));
gncJobSetReference (job, gtk_editable_get_chars
(GTK_EDITABLE (jw->desc_entry), 0, -1));
gncJobSetActive (job, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON
(jw->active_check)));
{
@@ -314,7 +314,7 @@ gnc_job_new_window (GtkWidget *parent, GNCBook *bookp, GncOwner *owner,
gtk_entry_set_text (GTK_ENTRY (jw->id_entry), gncJobGetID (job));
gtk_entry_set_editable (GTK_ENTRY (jw->id_entry), FALSE);
gtk_entry_set_text (GTK_ENTRY (jw->name_entry), gncJobGetName (job));
gtk_entry_set_text (GTK_ENTRY (jw->desc_entry), gncJobGetDesc (job));
gtk_entry_set_text (GTK_ENTRY (jw->desc_entry), gncJobGetReference (job));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (jw->active_check),
gncJobGetActive (job));

View File

@@ -270,7 +270,7 @@ gnc_order_owner_changed_cb (GtkWidget *widget, gpointer data)
switch (gncOwnerGetType (&(ow->owner))) {
case GNC_OWNER_JOB:
{
char const *msg = gncJobGetDesc (gncOwnerGetJob (&(ow->owner)));
char const *msg = gncJobGetReference (gncOwnerGetJob (&(ow->owner)));
gtk_entry_set_text (GTK_ENTRY (ow->ref_entry), msg ? msg : "");
break;
}