Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+59
@@ -0,0 +1,59 @@
|
||||
#include "viewwidgetcontainer.h"
|
||||
#include <cassert>
|
||||
|
||||
namespace VCtrl
|
||||
{
|
||||
ViewWidget *ViewWidgetContainer::getViewWidget(unsigned int contextID) const
|
||||
{
|
||||
for (const auto &pView : m_vecViewWidgets)
|
||||
{
|
||||
if (pView->contextID() == contextID)
|
||||
return pView;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
void ViewWidgetContainer::add(ViewWidget *pWidget)
|
||||
{
|
||||
m_vecViewWidgets.push_back(pWidget);
|
||||
m_mapFeatureID_To_ViewWidget[pWidget->featureID()] = pWidget;
|
||||
connect(pWidget, &QObject::destroyed, this, &ViewWidgetContainer::onWidgetDestroyed);
|
||||
}
|
||||
|
||||
|
||||
void ViewWidgetContainer::remove(const std::string &featureID)
|
||||
{
|
||||
auto it = m_mapFeatureID_To_ViewWidget.find(featureID);
|
||||
if (it != m_mapFeatureID_To_ViewWidget.end())
|
||||
{
|
||||
ViewWidget *pWidget = it->second;
|
||||
|
||||
auto vecIt = std::find(m_vecViewWidgets.begin(), m_vecViewWidgets.end(), pWidget);
|
||||
if (vecIt != m_vecViewWidgets.end())
|
||||
m_vecViewWidgets.erase(vecIt);
|
||||
|
||||
m_mapFeatureID_To_ViewWidget.erase(it);
|
||||
|
||||
assert(m_vecViewWidgets.size() == m_mapFeatureID_To_ViewWidget.size());
|
||||
}
|
||||
}
|
||||
|
||||
void ViewWidgetContainer::onWidgetDestroyed(QObject *obj)
|
||||
{
|
||||
ViewWidget *pWidget = static_cast<ViewWidget*>(obj);
|
||||
auto vecIt = std::find(m_vecViewWidgets.begin(), m_vecViewWidgets.end(), pWidget);
|
||||
if (vecIt != m_vecViewWidgets.end())
|
||||
m_vecViewWidgets.erase(vecIt);
|
||||
for (auto it = m_mapFeatureID_To_ViewWidget.begin(); it != m_mapFeatureID_To_ViewWidget.end(); ++it)
|
||||
{
|
||||
if (it->second == pWidget)
|
||||
{
|
||||
m_mapFeatureID_To_ViewWidget.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user