#ifndef _BAKERYGATEWAY_VIEWINDIVIDUALBROWSER_HH_ #define _BAKERYGATEWAY_VIEWINDIVIDUALBROWSER_HH_ #include "BakeryExtras/View_Linked.hh" #include "BakeryExtras/View_Navigator.hh" #include "BakeryGateway/Document.hh" #include namespace BakeryGateway { template < class MMI > class ViewIndividualBrowser : public BakeryExtras::View_Linked < BakeryGateway::Document, GEDCOMParser::IndividualRecord >, public BakeryExtras::View_Navigator < BakeryGateway::Document, std::string >, public SigC::Object { public: virtual void Load(void) = 0; ViewIndividualBrowser(void) : _local_document(0), _cb_pending(false) { }; void SelectCurrent(void) { if (!_cb_pending) { if (_parent_entity != 0) { _cb_pending = true; _mmi_browser.Select(_parent_entity->getId()); _cb_pending = false; } } return; }; void SelectionChanged(void) { if (!_cb_pending) { _cb_pending = true; std::string const key = _mmi_browser.getSelectedId(); Navigate(key); _cb_pending = false; } return; }; virtual void load_from_document(void) { if (_local_document != get_document()) { _local_document = get_document(); Load(); } SelectCurrent(); return; }; MMI & getMMI(void) { return _mmi_browser; }; protected: MMI _mmi_browser; BakeryGateway::Document * _local_document; bool _cb_pending; }; }; #endif