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

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

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

revision 1.3 by cpcp, Sun Feb 23 17:59:22 2003 UTC revision 1.4 by cpcp, Sun Feb 23 21:34:44 2003 UTC
# Line 23  Line 23 
23  #include "BakeryGateway/ViewFamilyRecordNoteFactory.hh"  #include "BakeryGateway/ViewFamilyRecordNoteFactory.hh"
24    
25  BakeryGateway::ViewChildToFamilyLink::ViewChildToFamilyLink(MMIChildToFamilyLink * mmi) :  BakeryGateway::ViewChildToFamilyLink::ViewChildToFamilyLink(MMIChildToFamilyLink * mmi) :
26    _mmi_childtofamilylink(mmi)    _mmi_childtofamilylink(mmi),
27      _during_load(false)
28  {  {
29    _mmi_childtofamilylink->FamilyAdded().connect(slot(this, &ViewChildToFamilyLink::family_added));    _mmi_childtofamilylink->FamilyAdded().connect(slot(this, &ViewChildToFamilyLink::family_added));
30      _mmi_childtofamilylink->FamilyDeleted().connect(slot(this, &ViewChildToFamilyLink::family_deleted));
31      return;
32    }
33    
34    
35    void BakeryGateway::ViewChildToFamilyLink::save_to_document(void)
36    {
37    return;    return;
38  }  }
39    
40  void BakeryGateway::ViewChildToFamilyLink::family_added(void)  void BakeryGateway::ViewChildToFamilyLink::family_added(void)
41  {  {
42    std::cerr << "FamilyAdd received in ViewChildToFamilyLink !!" << std::endl;    if ((! _during_load) && (_parent_entity != 0))
43        {
44          std::cerr << "enter save_to_document" << std::endl;
45          GEDCOMParser::ChildToFamilyLink * new_family_link = _parent_entity->addChildToFamilyLink();
46          if (new_family_link != 0)
47            {
48              std::cerr << "new_family_link created" << std::endl;
49              GEDCOMParser::FamilyRecord * new_family = get_document()->addFamilyRecord();
50              std::cerr << "new_family created" << std::endl;
51              new_family->addChilXref(_parent_entity->getId());
52              std::cerr << "new_family->addChilXref OK" << std::endl;
53              std::string new_family_id = new_family->getId();
54              std::cerr << "new_family->getId() OK" << std::endl;
55              new_family_link->setFamcXref(new_family_id);
56              std::cerr << "new_family_link->setFamcXref OK" << std::endl;
57            }
58        }
59      return;
60    }
61    
62    void BakeryGateway::ViewChildToFamilyLink::family_deleted(int family_index)
63    {
64      GEDCOMParser::ChildToFamilyLinks_t  * family_links = &_parent_entity->getChildToFamilyLinks();
65      SmartPtr < GEDCOMParser::ChildToFamilyLink > family_link_to_delete = (*family_links)[family_index];
66      GEDCOMParser::ChildToFamilyLinks_t::iterator family_link_iter = find(family_links->begin(), family_links->end(), family_link_to_delete);
67      if (family_link_iter != family_links->end())
68        {
69          GEDCOMParser::FamilyRecords_t family_records = get_document()->getFamilyRecords();
70          SmartPtr < GEDCOMParser::FamilyRecord > family =  family_records[(*family_link_iter)->getFamcXref()];
71          GEDCOMParser::ChildXrefs_t child_xrefs = family->getChilXrefs();
72          GEDCOMParser::ChildXrefs_t::iterator child_xref_iter = find(child_xrefs.begin(), child_xrefs.end(), _parent_entity->getId());
73          if (child_xref_iter != child_xrefs.end())
74            {
75              child_xrefs.erase(child_xref_iter);
76            }
77          family_links->erase(family_link_iter);
78        }
79    return;    return;
80  }  }
81    
# Line 42  BakeryGateway::ViewChildToFamilyLink::~V Line 86  BakeryGateway::ViewChildToFamilyLink::~V
86    
87  void BakeryGateway::ViewChildToFamilyLink::load_from_document(void)  void BakeryGateway::ViewChildToFamilyLink::load_from_document(void)
88  {  {
89      _during_load = true;
90    _mmi_childtofamilylink->Clear();    _mmi_childtofamilylink->Clear();
91    delete_subscribed_views();    delete_subscribed_views();
92    if ((_parent_entity != 0) && (get_document() != 0))    if ((_parent_entity != 0) && (get_document() != 0))
# Line 79  void BakeryGateway::ViewChildToFamilyLin Line 124  void BakeryGateway::ViewChildToFamilyLin
124              }              }
125          }            }  
126      }      }
127      _during_load = false;
128    return;    return;
129  }  }
130    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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