20 |
|
|
21 |
**/ |
**/ |
22 |
#include "BakeryGateway/ViewIndividualEvents.hh" |
#include "BakeryGateway/ViewIndividualEvents.hh" |
23 |
|
#include "GEDCOMHelper/IndividualRecordHelper.hh" |
24 |
|
|
25 |
BakeryGateway::ViewIndividualEvents::ViewIndividualEvents(MMIIndividualEvents * mmi) : |
BakeryGateway::ViewIndividualEvents::ViewIndividualEvents(MMIIndividualEvents * mmi) : |
26 |
_mmi_individual_events(mmi), |
_mmi_individual_events(mmi), |
79 |
if (_parent_entity != 0) |
if (_parent_entity != 0) |
80 |
{ |
{ |
81 |
delete_subscribed_views(); |
delete_subscribed_views(); |
82 |
|
GEDCOMHelper::IndividualRecordHelper helper(_parent_entity, get_document()); |
83 |
// handling of birth |
// handling of birth |
84 |
_mmi_individual_events->setBirthDate(""); |
_mmi_individual_events->setBirthDate(""); |
85 |
_mmi_individual_events->setBirthPlace(""); |
_mmi_individual_events->setBirthPlace(""); |
86 |
_mmi_individual_events->MMIBirthNote->clear(); |
_mmi_individual_events->MMIBirthNote->clear(); |
87 |
GEDCOMParser::IndividualEvent * const birth_event = _parent_entity->getBirth(); |
GEDCOMParser::IndividualEvent * const birth_event = helper.getBirth(); |
88 |
if (birth_event != 0) |
if (birth_event != 0) |
89 |
{ |
{ |
90 |
if (!birth_event->getEvent().Null()) |
if (!birth_event->getEvent().Null()) |
102 |
_mmi_individual_events->setDeathDate(""); |
_mmi_individual_events->setDeathDate(""); |
103 |
_mmi_individual_events->setDeathPlace(""); |
_mmi_individual_events->setDeathPlace(""); |
104 |
_mmi_individual_events->MMIDeathNote->clear(); |
_mmi_individual_events->MMIDeathNote->clear(); |
105 |
GEDCOMParser::IndividualEvent * const death_event = _parent_entity->getDeath(); |
GEDCOMParser::IndividualEvent * const death_event = helper.getDeath(); |
106 |
if (death_event != 0) |
if (death_event != 0) |
107 |
{ |
{ |
108 |
if (!death_event->getEvent().Null()) |
if (!death_event->getEvent().Null()) |
122 |
return; |
return; |
123 |
} |
} |
124 |
|
|
125 |
void BakeryGateway::ViewIndividualEvents::getEventsChanges(GEDCOMParser::IndividualEvent const * const event, std::string * const date_old_value, std::string * const place_old_value, bool * const event_exists, bool * const eventdetail_exists, bool * const place_exists) const |
void BakeryGateway::ViewIndividualEvents::getEventsChanges(GEDCOMParser::IndividualEvent const * const event, std::string * const date_old_value, std::string * const place_old_value) const |
126 |
{ |
{ |
127 |
*date_old_value = ""; |
*date_old_value = ""; |
128 |
*place_old_value = ""; |
*place_old_value = ""; |
135 |
{ |
{ |
136 |
*place_old_value = event->getEvent()->getPlace()->getPlaceValue(); |
*place_old_value = event->getEvent()->getPlace()->getPlaceValue(); |
137 |
} |
} |
|
else |
|
|
{ |
|
|
*place_exists = false; |
|
|
} |
|
138 |
} |
} |
|
else |
|
|
{ |
|
|
*eventdetail_exists = false; |
|
|
*place_exists = false; |
|
|
} |
|
|
} |
|
|
else |
|
|
{ |
|
|
*event_exists = false; |
|
|
*eventdetail_exists = false; |
|
|
*place_exists = false; |
|
139 |
} |
} |
140 |
return; |
return; |
141 |
} |
} |
142 |
|
|
143 |
void BakeryGateway::ViewIndividualEvents::setEventsChanges(std::string const &date_new_value, std::string const &date_old_value, std::string const &place_new_value, std::string const &place_old_value, bool event_flag, bool eventdetail_flag, bool place_flag, GEDCOMParser::IndividualEvent::enumIndividualEvents event_type) |
void BakeryGateway::ViewIndividualEvents::setEventsChanges(std::string const &date_new_value, std::string const &date_old_value, std::string const &place_new_value, std::string const &place_old_value, GEDCOMParser::IndividualEvent::enumIndividualEvents event_type) |
144 |
{ |
{ |
145 |
if ((date_new_value != date_old_value) || (place_new_value != place_old_value)) |
if ((date_new_value != date_old_value) || (place_new_value != place_old_value)) |
146 |
{ |
{ |
147 |
GEDCOMParser::IndividualEvent * event = 0; |
GEDCOMHelper::IndividualRecordHelper helper(_parent_entity, get_document()); |
148 |
GEDCOMParser::Event * event_detail = 0; |
helper.setEvent(event_type, date_new_value, place_new_value); |
|
GEDCOMParser::Place * place = 0; |
|
|
if (event_flag == false) |
|
|
{ |
|
|
event = _parent_entity->addIndividualEvent(); |
|
|
event->setType(event_type); |
|
|
} |
|
|
else |
|
|
{ |
|
|
event = _parent_entity->getEvent(event_type); |
|
|
} |
|
|
if (eventdetail_flag == false) |
|
|
{ |
|
|
event_detail = event->setEvent(); |
|
|
} |
|
|
else |
|
|
{ |
|
|
event_detail = event->getEvent().getPtr(); |
|
|
} |
|
|
if (date_new_value != date_old_value) |
|
|
{ |
|
|
event_detail->setDate(date_new_value); |
|
|
} |
|
|
|
|
|
if (place_new_value != place_old_value) |
|
|
{ |
|
|
if (place_flag == false) |
|
|
{ |
|
|
place = event_detail->setPlace(); |
|
|
} |
|
|
else |
|
|
{ |
|
|
place = event_detail->getPlace().getPtr(); |
|
|
} |
|
|
place->setPlaceValue(place_new_value); |
|
|
// if (place_flag == false) |
|
|
// { |
|
|
// event_detail->setPlace(place); |
|
|
// } |
|
|
} |
|
|
// if (eventdetail_flag == false) |
|
|
// { |
|
|
// event->setEvent(event_detail); |
|
|
// } |
|
149 |
} |
} |
150 |
return; |
return; |
151 |
} |
} |
152 |
|
|
153 |
void BakeryGateway::ViewIndividualEvents::save_to_document(void) |
void BakeryGateway::ViewIndividualEvents::save_to_document(void) |
154 |
{ |
{ |
|
bool birth_eventdetail_flag = true; |
|
|
bool birth_flag = true; |
|
|
bool birth_place_flag = true; |
|
|
bool death_eventdetail_flag = true; |
|
|
bool death_flag = true; |
|
|
bool death_place_flag = true; |
|
155 |
if ((! _during_load) && (_parent_entity != 0)) |
if ((! _during_load) && (_parent_entity != 0)) |
156 |
{ |
{ |
157 |
std::string new_birth_date = _mmi_individual_events->getBirthDate(); |
std::string new_birth_date = _mmi_individual_events->getBirthDate(); |
162 |
std::string old_death_date; |
std::string old_death_date; |
163 |
std::string new_death_place = _mmi_individual_events->getDeathPlace(); |
std::string new_death_place = _mmi_individual_events->getDeathPlace(); |
164 |
std::string old_death_place; |
std::string old_death_place; |
165 |
getEventsChanges(_parent_entity->getBirth(), &old_birth_date, &old_birth_place, &birth_flag, &birth_eventdetail_flag, &birth_place_flag); |
GEDCOMHelper::IndividualRecordHelper helper(_parent_entity, get_document()); |
166 |
getEventsChanges(_parent_entity->getDeath(), &old_death_date, &old_death_place, &death_flag, &death_eventdetail_flag, &death_place_flag); |
getEventsChanges(helper.getBirth(), &old_birth_date, &old_birth_place); |
167 |
setEventsChanges(new_birth_date, old_birth_date, new_birth_place, old_birth_place, birth_flag, birth_eventdetail_flag, birth_place_flag, GEDCOMParser::IndividualEvent::e_Birt); |
getEventsChanges(helper.getDeath(), &old_death_date, &old_death_place); |
168 |
setEventsChanges(new_death_date, old_death_date, new_death_place, old_death_place, death_flag, death_eventdetail_flag, death_place_flag, GEDCOMParser::IndividualEvent::e_Deat); |
setEventsChanges(new_birth_date, old_birth_date, new_birth_place, old_birth_place, GEDCOMParser::IndividualEvent::e_Birt); |
169 |
|
setEventsChanges(new_death_date, old_death_date, new_death_place, old_death_place, GEDCOMParser::IndividualEvent::e_Deat); |
170 |
loadEventList(); |
loadEventList(); |
171 |
} |
} |
172 |
return; |
return; |