/[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.5 by cpcp, Sun Mar 2 20:26:53 2003 UTC revision 1.6 by cpcp, Mon Mar 3 21:39:24 2003 UTC
# Line 47  void BakeryGateway::ViewSpouseToFamilyLi Line 47  void BakeryGateway::ViewSpouseToFamilyLi
47        GEDCOMParser::SpouseToFamilyLinks_t links = _parent_entity->getSpouseToFamilyLinks();          GEDCOMParser::SpouseToFamilyLinks_t links = _parent_entity->getSpouseToFamilyLinks();  
48        GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords();        GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords();
49        GEDCOMParser::IndividualRecords_t individuals = get_document()->getIndividualRecords();        GEDCOMParser::IndividualRecords_t individuals = get_document()->getIndividualRecords();
       std::string husband;  
       std::string wife;  
         
50        for (GEDCOMParser::SpouseToFamilyLinks_t::const_iterator iter = links.begin(); iter != links.end(); iter++)        for (GEDCOMParser::SpouseToFamilyLinks_t::const_iterator iter = links.begin(); iter != links.end(); iter++)
51          {          {
52            std::string fams_id = (*iter)->getRawFamsXref();            std::string fams_id = (*iter)->getRawFamsXref();
53            GEDCOMParser::FamilyRecords_t::const_iterator fams_iter = families.find(fams_id);            GEDCOMParser::FamilyRecord * familyrecord = 0;
54            if (fams_iter != families.end())            GEDCOMParser::Event * union_event = 0;
55              OneFamilyLinkHandler * familylink_handler = 0;
56              if (ManageFamilyLinkHandler(fams_id, families, individuals, &familyrecord, &union_event, &familylink_handler))
57              {              {
58                std::string * union_date = new std::string();                OneFamilyLink * new_family_link = _mmi_spousetofamilylink->addFamilyLink(*familylink_handler);
59                std::string * union_place = new std::string();                ManageFamilyLinkNote(new_family_link, (*iter).getPtr());
60                GEDCOMParser::FamilyEvents_t events = (*fams_iter).second->getFamilyEvents();                ManageFamilyRecordNote(new_family_link, familyrecord);
61                GEDCOMParser::FamilyEvents_t::const_iterator union_event_iter = std::find(events.begin(), events.end(), GEDCOMParser::FamilyEvent::e_Marr);                ManageUnionEventNote(new_family_link, union_event);
               GEDCOMParser::Event * union_event = 0;  
               if (union_event_iter != events.end())  
                 {  
                   if (!(*union_event_iter)->getEvent().Null())  
                     {  
                       union_event = (*union_event_iter)->getEvent().getPtr();  
                       delete union_date;  
                       union_date = new std::string(union_event->getDate());  
                       if (!(union_event->getPlace().Null()))  
                         {  
                           delete union_place;  
                           union_place = new std::string(union_event->getPlace()->getPlaceValue());          
                         }  
                     }  
                 }  
               std::string * husband_id = new std::string((*fams_iter).second->getHusb());  
               std::string * wife_id = new std::string((*fams_iter).second->getWife());  
               husband = get_name_individual(individuals, *husband_id);  
               wife = get_name_individual(individuals, *wife_id);  
               OneFamilyLinkHandler::SlotHandler_t * slot_husband = new OneFamilyLinkHandler::SlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewSpouseToFamilyLink::ButtonPressed), husband_id));  
               OneFamilyLinkHandler::SlotHandler_t * slot_wife = new OneFamilyLinkHandler::SlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewSpouseToFamilyLink::ButtonPressed), wife_id));  
               std::vector<std::string> children;  
               std::vector < OneFamilyLinkHandler::SlotHandler_t * > slots_children;  
               GEDCOMParser::ChildXrefs_t children_ids = (*fams_iter).second->getChilXrefs();  
               for (GEDCOMParser::ChildXrefs_t::const_iterator child_iter = children_ids.begin(); child_iter != children_ids.end(); child_iter++)  
                 {  
                   std::string * child_id = new std::string(*child_iter);  
                   std::string child = get_name_individual(individuals, *child_id);  
                   children.push_back(child);  
                   OneFamilyLinkHandler::SlotHandler_t * slot_child = new OneFamilyLinkHandler::SlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewSpouseToFamilyLink::ButtonPressed), child_id));  
                   slots_children.push_back(slot_child);  
                 }  
               OneSpouseToFamilyLinkHandler new_handler(*union_date, *union_place, husband, wife, children, slot_husband, slot_wife, slots_children);  
               OneFamilyLink * new_family_link;  
               new_family_link = _mmi_spousetofamilylink->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::SpouseToFamilyLink > * tmp =  dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::SpouseToFamilyLink > * > (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(fams_iter->second.getPtr());  
               if (union_event != 0)  
                 {  
                   BakeryGateway::ViewIndividualEventNoteFactory union_event_note_factory;  
                   Bakery::View<BakeryGateway::Document> * union_event_note_view = union_event_note_factory.createView((static_cast<OneSpouseToFamilyLink *>(new_family_link))->getUnionEventNote());  
                   subscribe_view(union_event_note_view);  
                   BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * tmp3 =  dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * > (union_event_note_view);  
                   tmp3->set_parent_entity(union_event);  
                 }  
         
62              }              }
63          }            }  
64      }      }
# Line 131  void BakeryGateway::ViewSpouseToFamilyLi Line 75  void BakeryGateway::ViewSpouseToFamilyLi
75  {  {
76    return;    return;
77  }  }
78    
79    void BakeryGateway::ViewSpouseToFamilyLink::ManageUnionEventNote(OneFamilyLink * family_link, GEDCOMParser::Event * union_event)
80    {
81      if (union_event != 0)
82        {
83          BakeryGateway::ViewIndividualEventNoteFactory union_event_note_factory;
84          Bakery::View<BakeryGateway::Document> * union_event_note_view = union_event_note_factory.createView((static_cast<OneSpouseToFamilyLink *>(family_link))->getUnionEventNote());
85          subscribe_view(union_event_note_view);
86          BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * tmp =  dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::Event > * > (union_event_note_view);
87          tmp->set_parent_entity(union_event);
88        }
89      return;
90    }
91    
92    void BakeryGateway::ViewSpouseToFamilyLink::ManageFamilyLinkNote(OneFamilyLink * family_link, GEDCOMParser::SpouseToFamilyLink * gedcom_family_link)
93    {
94      Bakery::View<BakeryGateway::Document> * familylink_note_view = _view_factory->createView(family_link->getFamilyLinkNote());
95      subscribe_view(familylink_note_view);
96      BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::SpouseToFamilyLink > * tmp =  dynamic_cast < BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::SpouseToFamilyLink > * > (familylink_note_view);
97      tmp->set_parent_entity(gedcom_family_link);
98      return;
99    }
100    
101    bool BakeryGateway::ViewSpouseToFamilyLink::ManageFamilyLinkHandler(std::string const &family_record_id, GEDCOMParser::FamilyRecords_t const &families, GEDCOMParser::IndividualRecords_t const &individuals, GEDCOMParser::FamilyRecord ** familyrecord, GEDCOMParser::Event ** union_event, OneFamilyLinkHandler ** familylink_handler)
102    {
103      bool res;
104      
105      GEDCOMParser::FamilyRecords_t::const_iterator family_iter = families.find(family_record_id);
106      if (family_iter != families.end())
107        {
108          res = true;
109          *familyrecord = (*family_iter).second.getPtr();
110          std::string * union_date = new std::string();
111          std::string * union_place = new std::string();
112          GEDCOMParser::FamilyEvents_t events = (*family_iter).second->getFamilyEvents();
113          GEDCOMParser::FamilyEvents_t::const_iterator union_event_iter = std::find(events.begin(), events.end(), GEDCOMParser::FamilyEvent::e_Marr);
114          GEDCOMParser::Event * union_event_tmp = 0;
115          if (union_event_iter != events.end())
116            {
117              if (!(*union_event_iter)->getEvent().Null())
118                {
119                  union_event_tmp = (*union_event_iter)->getEvent().getPtr();
120                  delete union_date;
121                  union_date = new std::string(union_event_tmp->getDate());
122                  if (!(union_event_tmp->getPlace().Null()))
123                    {
124                      delete union_place;
125                      union_place = new std::string(union_event_tmp->getPlace()->getPlaceValue());    
126                    }
127                }
128              *union_event = union_event_tmp;
129            }
130          std::string * husband_id = new std::string((*family_iter).second->getHusb());
131          std::string * wife_id = new std::string((*family_iter).second->getWife());
132          std::string husband = get_name_individual(individuals, *husband_id);
133          std::string wife = get_name_individual(individuals, *wife_id);
134          OneFamilyLinkHandler::SlotHandler_t * slot_husband = getSlotHandler(husband_id);
135          OneFamilyLinkHandler::SlotHandler_t * slot_wife = getSlotHandler(wife_id);
136          std::vector<std::string> children;
137          std::vector < OneFamilyLinkHandler::SlotHandler_t * > slots_children;
138          GEDCOMParser::ChildXrefs_t children_ids = (*family_iter).second->getChilXrefs();
139          for (GEDCOMParser::ChildXrefs_t::const_iterator child_iter = children_ids.begin(); child_iter != children_ids.end(); child_iter++)
140            {
141              std::string * child_id = new std::string(*child_iter);
142              std::string child = get_name_individual(individuals, *child_id);
143              children.push_back(child);
144              OneFamilyLinkHandler::SlotHandler_t * slot_child = new OneFamilyLinkHandler::SlotHandler_t(SigC::bind(SigC::slot(this, &BakeryGateway::ViewSpouseToFamilyLink::ButtonPressed), child_id));
145              slots_children.push_back(slot_child);
146            }
147          OneFamilyLinkHandler * familylink_handler_tmp = new OneSpouseToFamilyLinkHandler(*union_date, *union_place, husband, wife, children, slot_husband, slot_wife, slots_children);
148          *familylink_handler = familylink_handler_tmp;
149        }
150      else
151        {
152          res = false;
153        }
154      return res;
155    }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

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