/[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.9 by cpcp, Wed Mar 26 10:37:36 2003 UTC revision 1.10 by cpcp, Sun Aug 3 19:50:47 2003 UTC
# Line 25  Line 25 
25  #include "OneFamilyLinkHandler.hh"  #include "OneFamilyLinkHandler.hh"
26  #include "OneSpouseToFamilyLinkHandler.hh"  #include "OneSpouseToFamilyLinkHandler.hh"
27  #include "OneSpouseToFamilyLink.hh"  #include "OneSpouseToFamilyLink.hh"
28    #include "GEDCOMParser/Predicates/GenericPredicateIndividualRecords.hh"
29    #include "GEDCOMParser/Predicates/PredicateIndividualRecords.hh"
30    #include "GEDCOMParser/Predicates/IsMale.hh"
31    
32  BakeryGateway::ViewSpouseToFamilyLink::ViewSpouseToFamilyLink(MMISpouseToFamilyLink * mmi) :  BakeryGateway::ViewSpouseToFamilyLink::ViewSpouseToFamilyLink(MMISpouseToFamilyLink * mmi) :
33    _mmi_spousetofamilylink(mmi)    _mmi_spousetofamilylink(mmi)
# Line 112  void BakeryGateway::ViewSpouseToFamilyLi Line 115  void BakeryGateway::ViewSpouseToFamilyLi
115    if (tmp != 0)    if (tmp != 0)
116      {      {
117        OneSpouseToFamilyLink *  mmi_one_family_link = static_cast < OneSpouseToFamilyLink * >(tmp);        OneSpouseToFamilyLink *  mmi_one_family_link = static_cast < OneSpouseToFamilyLink * >(tmp);
118        date_new_value = mmi_one_family_link->getUnionDate();        if (mmi_one_family_link != 0)
       place_new_value = mmi_one_family_link->getUnionPlace();  
   
       GEDCOMParser::SpouseToFamilyLinks_t family_links = _parent_entity->getSpouseToFamilyLinks();  
       SmartPtr < GEDCOMParser::SpouseToFamilyLink > family_link = family_links[family_index];  
       GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords();  
       SmartPtr < GEDCOMParser::FamilyRecord > family = families[family_link->getFamsXref()];  
       bool mariage_event_exists = false;  
       bool mariage_event_detail_exists = false;  
       bool mariage_event_detail_place_exists = false;  
       if (family->getMarriageEvent() != 0)  
119          {          {
120            mariage_event_exists = true;            date_new_value = mmi_one_family_link->getUnionDate();
121            SmartPtr < GEDCOMParser::Event >  event = family->getMarriageEvent()->getEvent();            place_new_value = mmi_one_family_link->getUnionPlace();
122            if (!event.Null())            GEDCOMParser::SpouseToFamilyLinks_t family_links = _parent_entity->getSpouseToFamilyLinks();
123              SmartPtr < GEDCOMParser::SpouseToFamilyLink > family_link;
124              if (family_links.size() > 0)
125                {
126                  family_link = family_links[family_index];
127                }
128              GEDCOMParser::FamilyRecords_t families = get_document()->getFamilyRecords();
129              SmartPtr < GEDCOMParser::FamilyRecord > family;
130              if (!family_link.Null())
131                {
132                  family = families[family_link->getFamsXref()];
133                }
134              bool mariage_event_exists = false;
135              bool mariage_event_detail_exists = false;
136              bool mariage_event_detail_place_exists = false;
137              if (!family.Null())
138              {              {
139                mariage_event_detail_exists = true;                if (family->getMarriageEvent() != 0)
               date_old_value = event->getDate();  
               SmartPtr < GEDCOMParser::Place > place = event->getPlace();  
               if (!place.Null())  
140                  {                  {
141                    mariage_event_detail_place_exists = true;                    mariage_event_exists = true;
142                    place_old_value = place->getPlaceValue();                    SmartPtr < GEDCOMParser::Event >  event = family->getMarriageEvent()->getEvent();
143                      if (!event.Null())
144                        {
145                          mariage_event_detail_exists = true;
146                          date_old_value = event->getDate();
147                          SmartPtr < GEDCOMParser::Place > place = event->getPlace();
148                          if (!place.Null())
149                            {
150                              mariage_event_detail_place_exists = true;
151                              place_old_value = place->getPlaceValue();
152                            }
153                        }
154                  }                  }
155              }                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))  
         {  
           GEDCOMParser::FamilyEvent * mariage_event = 0;  
           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  
156                  {                  {
157                    mariage_event_detail_place = mariage_event_detail->getPlace().getPtr();                    GEDCOMParser::FamilyEvent * mariage_event = 0;
158                      GEDCOMParser::Event * mariage_event_detail = 0;
159                      GEDCOMParser::Place * mariage_event_detail_place = 0;
160                      if (! mariage_event_exists)
161                        {
162                          mariage_event = family->addFamilyEvent();
163                          mariage_event->setType(GEDCOMParser::FamilyEvent::e_Marr);
164                        }
165                      else
166                        {
167                          mariage_event = family->getMarriageEvent();
168                        }
169                      if (! mariage_event_detail_exists)
170                        {
171                      mariage_event_detail = mariage_event->setEvent();
172                        }
173                      else
174                        {
175                          mariage_event_detail = mariage_event->getEvent().getPtr();
176                        }
177                      if (date_old_value != date_new_value)
178                        {
179                          mariage_event_detail->setDate(date_new_value);
180                        }
181                      if (place_old_value != place_new_value)
182                        {
183                          if (! mariage_event_detail_place_exists)
184                            {
185                              mariage_event_detail_place = mariage_event_detail->setPlace();
186                            }
187                          else
188                            {
189                              mariage_event_detail_place = mariage_event_detail->getPlace().getPtr();
190                            }
191                          mariage_event_detail_place->setPlaceValue(place_new_value);
192                        }
193                  }                  }
               mariage_event_detail_place->setPlaceValue(place_new_value);  
194              }              }
195          }          }
196      }      }
# Line 241  bool BakeryGateway::ViewSpouseToFamilyLi Line 257  bool BakeryGateway::ViewSpouseToFamilyLi
257        std::string * individu_id = new std::string(_parent_entity->getId());        std::string * individu_id = new std::string(_parent_entity->getId());
258        OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_husband = getNavigationSlotHandler(husband_id);        OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_husband = getNavigationSlotHandler(husband_id);
259        OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_wife = getNavigationSlotHandler(wife_id);        OneFamilyLinkHandler::NavigationSlotHandler_t * navigation_slot_wife = getNavigationSlotHandler(wife_id);
260        OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_husband = getPopdownLinkEditionSlotHandler(individu_id);  
261        OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_wife = getPopdownLinkEditionSlotHandler(individu_id);        GEDCOMParser::LineageLinkageGedcom const * const lineage = get_document();
262          SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords > * husband_predicate = new SmartPtr < GEDCOMParser::Predicates::PredicateIndividualRecords >(new GEDCOMParser::Predicates::IsMale());
263          OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_husband = getPopdownLinkEditionSlotHandler(individu_id, husband_predicate);
264          OneFamilyLinkHandler::PopdownLinkEditionSlotHandler_t * popdownlinkedition_slot_wife = getPopdownLinkEditionSlotHandler(individu_id, husband_predicate);
265    
266        std::vector<std::string> children;        std::vector<std::string> children;
267        std::vector < OneFamilyLinkHandler::NavigationSlotHandler_t * > navigation_slots_children;        std::vector < OneFamilyLinkHandler::NavigationSlotHandler_t * > navigation_slots_children;

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

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