| 20 |
|
|
| 21 |
**/ |
**/ |
| 22 |
#include "BakeryGateway/ViewChildToFamilyLink.hh" |
#include "BakeryGateway/ViewChildToFamilyLink.hh" |
|
#include "BakeryGateway/ViewFamilyRecordNoteFactory.hh" |
|
| 23 |
#include "OneFamilyLinkHandler.hh" |
#include "OneFamilyLinkHandler.hh" |
| 24 |
#include "OneChildToFamilyLink.hh" |
#include "OneChildToFamilyLink.hh" |
| 25 |
#include "OneChildToFamilyLinkHandler.hh" |
#include "OneChildToFamilyLinkHandler.hh" |
| 87 |
if ((_parent_entity != 0) && (get_document() != 0)) |
if ((_parent_entity != 0) && (get_document() != 0)) |
| 88 |
{ |
{ |
| 89 |
GEDCOMParser::ChildToFamilyLinks_t links = _parent_entity->getChildToFamilyLinks(); |
GEDCOMParser::ChildToFamilyLinks_t links = _parent_entity->getChildToFamilyLinks(); |
|
GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords(); |
|
| 90 |
GEDCOMParser::IndividualRecords_t individuals = get_document()->getIndividualRecords(); |
GEDCOMParser::IndividualRecords_t individuals = get_document()->getIndividualRecords(); |
| 91 |
std::string father; |
GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords(); |
|
std::string mother; |
|
|
|
|
| 92 |
for (GEDCOMParser::ChildToFamilyLinks_t::const_iterator iter = links.begin(); iter != links.end(); iter++) |
for (GEDCOMParser::ChildToFamilyLinks_t::const_iterator iter = links.begin(); iter != links.end(); iter++) |
| 93 |
{ |
{ |
| 94 |
std::string famc_id = (*iter)->getRawFamcXref(); |
std::string famc_id = (*iter)->getRawFamcXref(); |
| 95 |
GEDCOMParser::FamilyRecords_t::const_iterator famc_iter = families.find(famc_id); |
GEDCOMParser::FamilyRecord * familyrecord = 0; |
| 96 |
if (famc_iter != families.end()) |
OneFamilyLinkHandler * familylink_handler = 0; |
| 97 |
|
if (ManageFamilyLinkHandler(famc_id, families, individuals, &familyrecord, &familylink_handler)) |
| 98 |
{ |
{ |
| 99 |
std::string * father_id = new std::string((*famc_iter).second->getHusb()); |
OneFamilyLink * new_family_link = _mmi_childtofamilylink->addFamilyLink(*familylink_handler); |
| 100 |
std::string * mother_id = new std::string((*famc_iter).second->getWife()); |
ManageFamilyLinkNote(new_family_link, (*iter).getPtr()); |
| 101 |
father = get_name_individual(individuals, *father_id); |
ManageFamilyRecordNote(new_family_link, familyrecord); |
|
mother = get_name_individual(individuals, *mother_id); |
|
|
OneFamilyLinkHandler::SlotHandler_t * slot_father = new OneFamilyLinkHandler::SlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewChildToFamilyLink::ButtonPressed), father_id)); |
|
|
OneFamilyLinkHandler::SlotHandler_t * slot_mother = new OneFamilyLinkHandler::SlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewChildToFamilyLink::ButtonPressed), mother_id)); |
|
|
OneChildToFamilyLinkHandler new_handler(father, mother, slot_father, slot_mother); |
|
|
OneFamilyLink * new_family_link; |
|
|
new_family_link = _mmi_childtofamilylink->addFamilyLink(new_handler); |
|
|
Bakery::View<BakeryGateway::Document> * note_view = _view_factory->createView(new_family_link->getFamilyLinkNote()); |
|
|
subscribe_view(note_view); |
|
|
BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::ChildToFamilyLink > * tmp = dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::ChildToFamilyLink > * > (note_view); |
|
|
tmp->set_parent_entity((*iter).getPtr()); |
|
|
|
|
|
BakeryGateway::ViewFamilyRecordNoteFactory familyrecord_note_factory; |
|
|
|
|
|
Bakery::View<BakeryGateway::Document> * family_note_view = familyrecord_note_factory.createView(new_family_link->getFamilyRecordNote()); |
|
|
subscribe_view(family_note_view); |
|
|
BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::FamilyRecord > * tmp2 = dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::FamilyRecord > * > (family_note_view); |
|
|
tmp2->set_parent_entity(famc_iter->second.getPtr()); |
|
| 102 |
} |
} |
| 103 |
} |
} |
| 104 |
} |
} |
| 106 |
return; |
return; |
| 107 |
} |
} |
| 108 |
|
|
| 109 |
|
void BakeryGateway::ViewChildToFamilyLink::ManageFamilyLinkNote(OneFamilyLink * family_link, GEDCOMParser::ChildToFamilyLink * gedcom_family_link) |
| 110 |
|
{ |
| 111 |
|
Bakery::View<BakeryGateway::Document> * familylink_note_view = _view_factory->createView(family_link->getFamilyLinkNote()); |
| 112 |
|
subscribe_view(familylink_note_view); |
| 113 |
|
BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::ChildToFamilyLink > * tmp = dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::ChildToFamilyLink > * > (familylink_note_view); |
| 114 |
|
tmp->set_parent_entity(gedcom_family_link); |
| 115 |
|
return; |
| 116 |
|
} |
| 117 |
|
|
| 118 |
|
bool BakeryGateway::ViewChildToFamilyLink::ManageFamilyLinkHandler(std::string const &family_record_id, GEDCOMParser::FamilyRecords_t const &families, GEDCOMParser::IndividualRecords_t const &individuals, GEDCOMParser::FamilyRecord ** familyrecord, OneFamilyLinkHandler ** familylink_handler) |
| 119 |
|
{ |
| 120 |
|
|
| 121 |
|
bool res; |
| 122 |
|
GEDCOMParser::FamilyRecords_t::const_iterator family_iter = families.find(family_record_id); |
| 123 |
|
if (family_iter != families.end()) |
| 124 |
|
{ |
| 125 |
|
res = true; |
| 126 |
|
*familyrecord = (*family_iter).second.getPtr(); |
| 127 |
|
std::string * father_id = new std::string((*family_iter).second->getHusb()); |
| 128 |
|
std::string * mother_id = new std::string((*family_iter).second->getWife()); |
| 129 |
|
std::string father = get_name_individual(individuals, *father_id); |
| 130 |
|
std::string mother = get_name_individual(individuals, *mother_id); |
| 131 |
|
OneFamilyLinkHandler::SlotHandler_t * slot_father = getSlotHandler(father_id); |
| 132 |
|
OneFamilyLinkHandler::SlotHandler_t * slot_mother = getSlotHandler(mother_id); |
| 133 |
|
OneFamilyLinkHandler * familylink_handler_tmp = new OneChildToFamilyLinkHandler(father, mother, slot_father, slot_mother); |
| 134 |
|
*familylink_handler = familylink_handler_tmp; |
| 135 |
|
} |
| 136 |
|
else |
| 137 |
|
{ |
| 138 |
|
res = false; |
| 139 |
|
} |
| 140 |
|
return res; |
| 141 |
|
} |
| 142 |
|
|