Mapping Fields
[Data Fields]


Detailed Description

Map one source to target, with a filter in the middle

The following struct defines how widget or database fields (read as input) are mapped to database or widget fields


Data Structures

struct  DuiFieldMap_s

Typedefs

typedef struct DuiFieldMap_s DuiFieldMap

Functions

DuiFieldMap * dui_field_map_new (void)
void dui_field_map_destroy (DuiFieldMap *fm)
void dui_field_map_transfer_data (DuiFieldMap *fm)
const char * dui_field_map_get_value (DuiFieldMap *fm)
void dui_field_map_resolve (DuiFieldMap *fm)


Function Documentation

const char* dui_field_map_get_value ( DuiFieldMap *  fm  ) 

Get a value, filter it

Definition at line 98 of file duifieldmap.c.

00099 {
00100     DuiField *src;
00101     const gchar * fieldval = NULL;
00102 
00103     if (!fm) return NULL;
00104     src = &fm->source;
00105 
00106     if (src->get_field_value)
00107     {
00108         fieldval = src->get_field_value (src);
00109     }
00110 
00111     /* Note that the empty string is a valid value for "clearing"
00112      * fields. i.e. its used to reset fields to empty. */
00113     PINFO ("src=%s:\"%s\" val=\"%s\"", src->type, src->fieldname, fieldval);
00114 
00115     if (fm->filter) fieldval = dui_filter_apply (fm->filter, fieldval);
00116     return fieldval;
00117 }

void dui_field_map_resolve ( DuiFieldMap *  fm  ) 

Get handles to the actual filters

Definition at line 123 of file duifieldmap.c.

00124 {
00125     if (!fm) return;
00126 
00127     if (fm->filtername)
00128     {
00129         fm->filter = dui_filter_find_by_name (fm->filtername);
00130     }
00131     else
00132     {
00133         fm->filter = NULL;
00134     }
00135 }

void dui_field_map_transfer_data ( DuiFieldMap *  fm  ) 

Transfer from source to target

Definition at line 68 of file duifieldmap.c.

00069 {
00070     DuiField *src, *tgt;
00071     const gchar * fieldval = NULL;
00072 
00073     if (!fm) return;
00074 
00075     src = &fm->source;
00076     tgt = &fm->target;
00077 
00078     if (NULL == tgt->set_field_value) return;
00079     if (src->get_field_value)
00080     {
00081         fieldval = src->get_field_value (src);
00082     }
00083 
00084     /* Note that the empty string is a valid value for "clearing"
00085      * fields. i.e. its used to reset fields to empty. */
00086     if (fm->filter) fieldval = dui_filter_apply (fm->filter, fieldval);
00087     if (!fieldval) fieldval = "";
00088     PINFO ("src=%s::\"%s\" val=\"%s\" tgt=%s::\"%s\"",
00089            src->type, src->fieldname, fieldval,
00090            tgt->type, tgt->fieldname);
00091     tgt->set_field_value (tgt, fieldval);
00092 }


Generated on Tue Apr 29 21:27:54 2008 for estron by  doxygen 1.5.5