23 |
#include "GEDCOMParser/IndividualAttribute.hh" |
#include "GEDCOMParser/IndividualAttribute.hh" |
24 |
#include <functional> |
#include <functional> |
25 |
#include <algorithm> |
#include <algorithm> |
26 |
|
#include <iostream> |
27 |
|
|
28 |
BakeryGateway::ViewIndividualAttributes::ViewIndividualAttributes(MMIIndividualAttributes * mmi) : |
BakeryGateway::ViewIndividualAttributes::ViewIndividualAttributes(MMIIndividualAttributes * mmi) : |
29 |
_mmi_individual_attributes(mmi) |
_mmi_individual_attributes(mmi), |
30 |
|
during_load(false) |
31 |
{ |
{ |
32 |
|
_mmi_individual_attributes->getOccupationWidget()->changed.connect(SigC::slot(this, &ViewIndividualAttributes::on_Occupation_changed)); |
33 |
|
return; |
34 |
|
} |
35 |
|
|
36 |
|
void BakeryGateway::ViewIndividualAttributes::save_to_document(void) |
37 |
|
{ |
38 |
|
if (! during_load) |
39 |
|
{ |
40 |
|
std::string const new_occupation = _mmi_individual_attributes->getOccupation(); |
41 |
|
if (new_occupation != getOccupation()->getValue()) |
42 |
|
{ |
43 |
|
getOccupation()->setValue(new_occupation); |
44 |
|
} |
45 |
|
} |
46 |
|
return; |
47 |
|
} |
48 |
|
|
49 |
|
void BakeryGateway::ViewIndividualAttributes::on_Occupation_changed(void) |
50 |
|
{ |
51 |
|
save_to_document(); |
52 |
return; |
return; |
53 |
} |
} |
54 |
|
|
57 |
return; |
return; |
58 |
} |
} |
59 |
|
|
60 |
void BakeryGateway::ViewIndividualAttributes::load_from_document(void) |
GEDCOMParser::IndividualAttribute * const BakeryGateway::ViewIndividualAttributes::getOccupation(void) |
61 |
{ |
{ |
62 |
_mmi_individual_attributes->setOccupation(""); |
GEDCOMParser::IndividualAttribute * res = 0; |
63 |
if (_parent_entity != 0) |
if (_parent_entity != 0) |
64 |
{ |
{ |
65 |
GEDCOMParser::IndividualAttributes_t attributes = _parent_entity->getIndividualAttributes(); |
GEDCOMParser::IndividualAttributes_t attributes = _parent_entity->getIndividualAttributes(); |
66 |
|
|
67 |
GEDCOMParser::IndividualAttributes_t::const_iterator iter = |
GEDCOMParser::IndividualAttributes_t::const_iterator iter = |
68 |
std::find(attributes.begin(), |
std::find(attributes.begin(), |
69 |
attributes.end(), |
attributes.end(), |
70 |
GEDCOMParser::IndividualAttribute::e_Occu); |
GEDCOMParser::IndividualAttribute::e_Occu); |
71 |
|
|
72 |
if (iter != attributes.end()) |
if (iter != attributes.end()) |
73 |
{ |
{ |
74 |
_mmi_individual_attributes->setOccupation((*iter)->getValue()); |
res = (*iter).getPtr(); |
75 |
|
} |
76 |
|
} |
77 |
|
return res; |
78 |
|
} |
79 |
|
|
80 |
|
void BakeryGateway::ViewIndividualAttributes::load_from_document(void) |
81 |
|
{ |
82 |
|
during_load = true; |
83 |
|
_mmi_individual_attributes->setOccupation(""); |
84 |
|
std::string occupation = ""; |
85 |
|
if (_parent_entity != 0) |
86 |
|
{ |
87 |
|
if (getOccupation() != 0) |
88 |
|
{ |
89 |
|
occupation = getOccupation()->getValue(); |
90 |
} |
} |
91 |
|
_mmi_individual_attributes->setOccupation(occupation); |
92 |
} |
} |
93 |
|
during_load = false; |
94 |
return; |
return; |
95 |
} |
} |