#include "BakeryGateway/ViewIndividualRecord.hh" #include "options/Options.hh" BakeryGateway::ViewIndividualRecord::ViewIndividualRecord(MMIIndividualRecord * mmi) : _mmi_individual_record(mmi), _individuals(), _current_individu(), _local_document(0) { return; } BakeryGateway::ViewIndividualRecord::~ViewIndividualRecord(void) { return; } void BakeryGateway::ViewIndividualRecord::load_from_document(void) { if (_local_document != get_document()) { _local_document = get_document(); _individuals = get_document()->getIndividualRecords(); GEDCOMParser::IndividualRecords_t::const_iterator root = (get_document()->getRootIndividuals()).begin(); std::string root_id = root->first; _current_individu = _individuals.find(root_id); } LoadCurrentIndividu(); notify_subscribees(); return; } std::string const BakeryGateway::ViewIndividualRecord::getIndividualName(SmartPtr const & individual) { std::string individual_name; if (individual->getPersonalNames().size() > 0) { individual_name = individual->getPersonalNames()[0]->getName(); } else { individual_name = ""; } return individual_name; } void BakeryGateway::ViewIndividualRecord::LoadCurrentIndividu(void) { if (_current_individu != _individuals.end()) { _entity = _current_individu->second.getPtr(); std::string sex = _entity->getSex(); MMIIndividualRecord::enumSex mmi_sex = MMIIndividualRecord::e_Unknown; if (sex == "M") mmi_sex = MMIIndividualRecord::e_Man; if (sex == "F") mmi_sex = MMIIndividualRecord::e_Woman; _mmi_individual_record->setSex(mmi_sex); } return; } void BakeryGateway::ViewIndividualRecord::Goto(std::string const &key) { if (_individuals.size() != 0) { GEDCOMParser::IndividualRecords_t::const_iterator iter = _individuals.find(key); if (iter != _individuals.end()) { SetCurrentIndividu(iter); } } return; } void BakeryGateway::ViewIndividualRecord::SetCurrentIndividu(GEDCOMParser::IndividualRecords_t::const_iterator iter) { _current_individu = iter; LoadCurrentIndividu(); notify_subscribees(); return; }