/[ghosts]/ghosts/gedcomviewer/src/BakeryGateway/ViewSpouseToFamilyLink.cpp
ViewVC logotype

Diff of /ghosts/gedcomviewer/src/BakeryGateway/ViewSpouseToFamilyLink.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.10 by cpcp, Sun Aug 3 19:50:47 2003 UTC revision 1.11 by cpcp, Mon Dec 1 20:11:00 2003 UTC
# Line 23  Line 23 
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)
# Line 71  void BakeryGateway::ViewSpouseToFamilyLi Line 74  void BakeryGateway::ViewSpouseToFamilyLi
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);
# Line 86  void BakeryGateway::ViewSpouseToFamilyLi Line 88  void BakeryGateway::ViewSpouseToFamilyLi
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
# Line 98  void BakeryGateway::ViewSpouseToFamilyLi Line 102  void BakeryGateway::ViewSpouseToFamilyLi
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  }  }
# Line 131  void BakeryGateway::ViewSpouseToFamilyLi Line 138  void BakeryGateway::ViewSpouseToFamilyLi
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          }          }
# Line 255  bool BakeryGateway::ViewSpouseToFamilyLi Line 223  bool BakeryGateway::ViewSpouseToFamilyLi
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
# Line 289  MMIFamilyLink * BakeryGateway::ViewSpous Line 261  MMIFamilyLink * BakeryGateway::ViewSpous
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  }  }

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26