| 23 |
#include "BakeryGateway/ViewFamilyRecordNoteFactory.hh" |
#include "BakeryGateway/ViewFamilyRecordNoteFactory.hh" |
| 24 |
#include "BakeryGateway/ViewIndividualEventNoteFactory.hh" |
#include "BakeryGateway/ViewIndividualEventNoteFactory.hh" |
| 25 |
#include "OneFamilyLinkHandler.hh" |
#include "OneFamilyLinkHandler.hh" |
| 26 |
|
#include "FamilyMemberHandler.hh" |
| 27 |
#include "OneSpouseToFamilyLinkHandler.hh" |
#include "OneSpouseToFamilyLinkHandler.hh" |
| 28 |
#include "OneSpouseToFamilyLink.hh" |
#include "OneSpouseToFamilyLink.hh" |
| 29 |
#include "GEDCOMParser/Predicates/GenericPredicateIndividualRecords.hh" |
#include "GEDCOMParser/Predicates/GenericPredicateIndividualRecords.hh" |
| 30 |
#include "GEDCOMParser/Predicates/PredicateIndividualRecords.hh" |
#include "GEDCOMParser/Predicates/PredicateIndividualRecords.hh" |
| 31 |
#include "GEDCOMParser/Predicates/IsMale.hh" |
#include "GEDCOMParser/Predicates/IsMale.hh" |
| 32 |
|
#include "GEDCOMHelper/IndividualRecordHelper.hh" |
| 33 |
|
#include "GEDCOMHelper/FamilyRecordHelper.hh" |
| 34 |
|
|
| 35 |
BakeryGateway::ViewSpouseToFamilyLink::ViewSpouseToFamilyLink(MMISpouseToFamilyLink * mmi) : |
BakeryGateway::ViewSpouseToFamilyLink::ViewSpouseToFamilyLink(MMISpouseToFamilyLink * mmi) : |
| 36 |
_mmi_spousetofamilylink(mmi) |
_mmi_spousetofamilylink(mmi) |
| 74 |
if (ManageFamilyLinkHandler(fams_id, families, individuals, &familyrecord, &union_event, &familylink_handler)) |
if (ManageFamilyLinkHandler(fams_id, families, individuals, &familyrecord, &union_event, &familylink_handler)) |
| 75 |
{ |
{ |
| 76 |
OneFamilyLink * new_family_link = _mmi_spousetofamilylink->addFamilyLink(*familylink_handler); |
OneFamilyLink * new_family_link = _mmi_spousetofamilylink->addFamilyLink(*familylink_handler); |
|
new_family_link->LinkEdited().connect(SigC::slot(this, &ViewSpouseToFamilyLink::family_edited)); |
|
| 77 |
ManageFamilyLinkNote(new_family_link, (*iter).getPtr()); |
ManageFamilyLinkNote(new_family_link, (*iter).getPtr()); |
| 78 |
ManageFamilyRecordNote(new_family_link, familyrecord); |
ManageFamilyRecordNote(new_family_link, familyrecord); |
| 79 |
ManageUnionEventNote(new_family_link, union_event); |
ManageUnionEventNote(new_family_link, union_event); |
| 88 |
{ |
{ |
| 89 |
if ((! _during_load) && (_parent_entity != 0)) |
if ((! _during_load) && (_parent_entity != 0)) |
| 90 |
{ |
{ |
| 91 |
get_document()->AddSpouse(_parent_entity); |
GEDCOMHelper::IndividualRecordHelper individual_record_helper(_parent_entity, get_document()); |
| 92 |
|
|
| 93 |
|
individual_record_helper.setSpouseInFamily(); |
| 94 |
} |
} |
| 95 |
save_to_document(); |
save_to_document(); |
| 96 |
load_from_document(); //FIXME : this should be done automatically |
load_from_document(); //FIXME : this should be done automatically |
| 102 |
{ |
{ |
| 103 |
GEDCOMParser::SpouseToFamilyLinks_t family_links = _parent_entity->getSpouseToFamilyLinks(); |
GEDCOMParser::SpouseToFamilyLinks_t family_links = _parent_entity->getSpouseToFamilyLinks(); |
| 104 |
SmartPtr < GEDCOMParser::SpouseToFamilyLink > family_link_to_delete = family_links[family_index]; |
SmartPtr < GEDCOMParser::SpouseToFamilyLink > family_link_to_delete = family_links[family_index]; |
| 105 |
get_document()->RemoveSpouseToFamilyLink(_parent_entity, family_link_to_delete.getPtr()); |
GEDCOMHelper::IndividualRecordHelper individual_record_helper(_parent_entity, get_document()); |
| 106 |
|
GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords(); |
| 107 |
|
SmartPtr < GEDCOMParser::FamilyRecord > family = families[family_link_to_delete->getFamsXref()]; |
| 108 |
|
individual_record_helper.RemoveSpouseFromFamily(family.getPtr()); |
| 109 |
save_to_document(); |
save_to_document(); |
| 110 |
return; |
return; |
| 111 |
} |
} |
| 138 |
{ |
{ |
| 139 |
family = families[family_link->getFamsXref()]; |
family = families[family_link->getFamsXref()]; |
| 140 |
} |
} |
| 141 |
bool mariage_event_exists = false; |
|
|
bool mariage_event_detail_exists = false; |
|
|
bool mariage_event_detail_place_exists = false; |
|
| 142 |
if (!family.Null()) |
if (!family.Null()) |
| 143 |
{ |
{ |
| 144 |
if (family->getMarriageEvent() != 0) |
GEDCOMHelper::FamilyRecordHelper helper(family.getPtr(), get_document()); |
| 145 |
|
if (helper.getMarriageEvent() != 0) |
| 146 |
{ |
{ |
| 147 |
mariage_event_exists = true; |
SmartPtr < GEDCOMParser::Event > event = helper.getMarriageEvent()->getEvent(); |
|
SmartPtr < GEDCOMParser::Event > event = family->getMarriageEvent()->getEvent(); |
|
| 148 |
if (!event.Null()) |
if (!event.Null()) |
| 149 |
{ |
{ |
|
mariage_event_detail_exists = true; |
|
| 150 |
date_old_value = event->getDate(); |
date_old_value = event->getDate(); |
| 151 |
SmartPtr < GEDCOMParser::Place > place = event->getPlace(); |
SmartPtr < GEDCOMParser::Place > place = event->getPlace(); |
| 152 |
if (!place.Null()) |
if (!place.Null()) |
| 153 |
{ |
{ |
|
mariage_event_detail_place_exists = true; |
|
| 154 |
place_old_value = place->getPlaceValue(); |
place_old_value = place->getPlaceValue(); |
| 155 |
} |
} |
| 156 |
} |
} |
| 157 |
} |
} |
| 158 |
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)) |
| 159 |
{ |
{ |
| 160 |
GEDCOMParser::FamilyEvent * mariage_event = 0; |
helper.setMarriage(date_new_value, place_new_value); |
|
GEDCOMParser::Event * mariage_event_detail = 0; |
|
|
GEDCOMParser::Place * mariage_event_detail_place = 0; |
|
|
if (! mariage_event_exists) |
|
|
{ |
|
|
mariage_event = family->addFamilyEvent(); |
|
|
mariage_event->setType(GEDCOMParser::FamilyEvent::e_Marr); |
|
|
} |
|
|
else |
|
|
{ |
|
|
mariage_event = family->getMarriageEvent(); |
|
|
} |
|
|
if (! mariage_event_detail_exists) |
|
|
{ |
|
|
mariage_event_detail = mariage_event->setEvent(); |
|
|
} |
|
|
else |
|
|
{ |
|
|
mariage_event_detail = mariage_event->getEvent().getPtr(); |
|
|
} |
|
|
if (date_old_value != date_new_value) |
|
|
{ |
|
|
mariage_event_detail->setDate(date_new_value); |
|
|
} |
|
|
if (place_old_value != place_new_value) |
|
|
{ |
|
|
if (! mariage_event_detail_place_exists) |
|
|
{ |
|
|
mariage_event_detail_place = mariage_event_detail->setPlace(); |
|
|
} |
|
|
else |
|
|
{ |
|
|
mariage_event_detail_place = mariage_event_detail->getPlace().getPtr(); |
|
|
} |
|
|
mariage_event_detail_place->setPlaceValue(place_new_value); |
|
|
} |
|
| 161 |
} |
} |
| 162 |
} |
} |
| 163 |
} |
} |
| 223 |
std::string husband = get_name_individual(individuals, *husband_id); |
std::string husband = get_name_individual(individuals, *husband_id); |
| 224 |
std::string wife = get_name_individual(individuals, *wife_id); |
std::string wife = get_name_individual(individuals, *wife_id); |
| 225 |
std::string * individu_id = new std::string(_parent_entity->getId()); |
std::string * individu_id = new std::string(_parent_entity->getId()); |
| 226 |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_husband = getNavigationSlotHandler(husband_id); |
FamilyMemberHandler::NavigationSlotHandler_t * navigation_slot_husband = getNavigationSlotHandler(husband_id); |
| 227 |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_wife = getNavigationSlotHandler(wife_id); |
FamilyMemberHandler::NavigationSlotHandler_t * navigation_slot_wife = getNavigationSlotHandler(wife_id); |
| 228 |
|
|
| 229 |
GEDCOMParser::LineageLinkageGedcom const * const lineage = get_document(); |
GEDCOMParser::LineageLinkageGedcom const * const lineage = get_document(); |
| 230 |
SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > * husband_predicate = new SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords >(new GEDCOMParser::Predicates::IsMale()); |
SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > husband_predicate(new GEDCOMParser::Predicates::IsMale()); |
| 231 |
OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_husband = getPopdownLinkEditionSlotHandler(individu_id, husband_predicate); |
BakeryGateway::IndividualRecordsPredicates_t * husband_predicates = new BakeryGateway::IndividualRecordsPredicates_t(); |
| 232 |
OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_wife = getPopdownLinkEditionSlotHandler(individu_id, husband_predicate); |
husband_predicates->push_back(husband_predicate); |
| 233 |
|
FamilyMemberHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_husband = getPopdownLinkEditionSlotHandler(*familyrecord, husband_predicates); |
| 234 |
|
FamilyMemberHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_wife = getPopdownLinkEditionSlotHandler(*familyrecord, husband_predicates); |
| 235 |
|
|
| 236 |
std::vector<std::string> children; |
std::vector<std::string> children; |
| 237 |
std::vector < OneFamilyLinkHandler::NavigationSlotHandler_t * > navigation_slots_children; |
std::vector < FamilyMemberHandler::NavigationSlotHandler_t * > navigation_slots_children; |
| 238 |
GEDCOMParser::ChildXrefs_t children_ids = (*family_iter).second->getChilXrefs(); |
GEDCOMParser::ChildXrefs_t children_ids = (*family_iter).second->getChilXrefs(); |
| 239 |
for (GEDCOMParser::ChildXrefs_t::const_iterator child_iter = children_ids.begin(); child_iter != children_ids.end(); child_iter++) |
for (GEDCOMParser::ChildXrefs_t::const_iterator child_iter = children_ids.begin(); child_iter != children_ids.end(); child_iter++) |
| 240 |
{ |
{ |
| 241 |
std::string * child_id = new std::string(*child_iter); |
std::string * child_id = new std::string(*child_iter); |
| 242 |
std::string child = get_name_individual(individuals, *child_id); |
std::string child = get_name_individual(individuals, *child_id); |
| 243 |
children.push_back(child); |
children.push_back(child); |
| 244 |
OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_child = new OneFamilyLinkHandler::NavigationSlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewSpouseToFamilyLink::LeftButtonPressed), child_id)); |
FamilyMemberHandler::NavigationSlotHandler_t * navigation_slot_child = new FamilyMemberHandler::NavigationSlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewSpouseToFamilyLink::LeftButtonPressed), child_id)); |
| 245 |
navigation_slots_children.push_back(navigation_slot_child); |
navigation_slots_children.push_back(navigation_slot_child); |
| 246 |
} |
} |
| 247 |
OneFamilyLinkHandler * familylink_handler_tmp = new OneSpouseToFamilyLinkHandler(*union_date, *union_place, husband, wife, children, navigation_slot_husband, navigation_slot_wife, popdownlinkedition_slot_husband, popdownlinkedition_slot_wife, navigation_slots_children); |
FamilyMemberHandler * husband_handler = new FamilyMemberHandler(husband, navigation_slot_husband, popdownlinkedition_slot_husband); |
| 248 |
|
FamilyMemberHandler * wife_handler = new FamilyMemberHandler(wife, navigation_slot_wife, popdownlinkedition_slot_wife); |
| 249 |
|
OneFamilyLinkHandler * familylink_handler_tmp = new OneSpouseToFamilyLinkHandler(*husband_handler, *wife_handler, *union_date, *union_place, children, navigation_slots_children); |
| 250 |
*familylink_handler = familylink_handler_tmp; |
*familylink_handler = familylink_handler_tmp; |
| 251 |
} |
} |
| 252 |
else |
else |
| 261 |
return _mmi_spousetofamilylink; |
return _mmi_spousetofamilylink; |
| 262 |
} |
} |
| 263 |
|
|
| 264 |
void BakeryGateway::ViewSpouseToFamilyLink::family_edited(std::string id) |
void BakeryGateway::ViewSpouseToFamilyLink::family_edited(std::string * id, GEDCOMParser::FamilyRecord * const record) |
| 265 |
{ |
{ |
| 266 |
std::cerr << "Family edited : individu id = " << id << std::endl; |
std::cerr << "Family edited : individu id = " << *id << std::endl; |
| 267 |
return; |
return; |
| 268 |
} |
} |