| 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; |