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