The DtEntityList class is a Qt-based dialog/ widget class that displays all existing entities as well as their current task and, if available, their destination.
#include <vlpi/appearance.h>
#include <QtGui/QPixmap>
using namespace makVrf;
namespace makVrfEntityListExample
{
: DtPage(de, parent, flags)
, makVrv::DtDockable(de, "DtEntityList")
{
setObjectName(tr("Entity List"));
setupUi(this);
mySimulatedEntityStateView = DtVrfStateViewCollectionManager::instance(de).simulatedEntityStateViewCollection();
populateEntityList();
mySimulatedEntityStateView->signal_stateViewAdded.connect(
boost::bind(&DtEntityList::slot_onObjectAdded, this, _1));
mySimulatedEntityStateView->signal_stateViewAboutToBeRemoved.connect(
boost::bind(&DtEntityList::slot_onObjectAboutToBeRemoved, this, _1));
boost::bind(&DtEntityList::slot_onCurrentTaskChanged, this, _1));
}
DtEntityList::~DtEntityList()
{
mySimulatedEntityStateView->signal_stateViewAdded.disconnect(
boost::bind(&DtEntityList::slot_onObjectAdded, this, _1));
mySimulatedEntityStateView->signal_stateViewAboutToBeRemoved.disconnect(
boost::bind(&DtEntityList::slot_onObjectAboutToBeRemoved, this, _1));
boost::bind(&DtEntityList::slot_onCurrentTaskChanged, this, _1));
}
{
return QIcon();
}
{
return tr("Entity List");
}
{
return myClassName;
}
{
}
{
}
std::string DtEntityList::thePageClassName()
{
return "DtEntityList";
}
void DtEntityList::setupUi(
QWidget* p)
{
myUi.setupUi(this);
}
void DtEntityList::clear()
{
myUi.myEntityTree->clear();
}
void DtEntityList::populateEntityList()
{
DtVrfSimulatedEntityStateViewCollection::StateViewMap::const_iterator iter =
mySimulatedEntityStateView->stateViewMap().begin();
while (iter != mySimulatedEntityStateView->stateViewMap().end())
{
slot_onObjectAdded(*entityState);
++iter;
}
}
{
if(myLineToStateViewMap[nonConstStateView] != 0)
{
return;
}
boost::bind(&DtEntityList::slot_onObjectUpdated, this, _1));
myLineToStateViewMap[nonConstStateView] = displayEntityItem;
myUi.myEntityTree->addTopLevelItem(displayEntityItem);
}
{
boost::bind(&DtEntityList::slot_onObjectUpdated, this, _1));
QTreeWidgetItem* displayEntityItem = myLineToStateViewMap[nonConstStateView];
if(displayEntityItem)
{
myUi.myEntityTree->takeTopLevelItem(
myUi.myEntityTree->indexOfTopLevelItem(displayEntityItem));
myLineToStateViewMap[nonConstStateView] = 0;
}
}
{
{
return;
}
if(displayEntityItem)
{
if(displayEntityItem->text(0).isEmpty())
{
manager.subscribeForTaskInformation(entityState->
id());
}
if(displayEntityItem->text(0).toLatin1().constData() != entityState->
state().
myMarkingText)
{
}
bool destroyed = false;
if (key.kind() == 11)
{
}
else
{
destroyed = (app.damageState() == DtDamageDestroyed);
}
key, destroyed, 48,
false, &entityState->
state());
if (pMap.serialNumber() != displayEntityItem->icon(0).serialNumber())
{
displayEntityItem->setIcon(0, pMap);
}
}
}
void DtEntityList::slot_onCurrentTaskChanged(const std::string& entityName)
{
if(entityName == "") return;
DtVrfSimulatedEntityStateViewCollection::StateViewMap::const_iterator iter =
mySimulatedEntityStateView->stateViewMap().begin();
while (iter != mySimulatedEntityStateView->stateViewMap().end())
{
if(iter->second->state().myMarkingText == entityName)
{
entityState = iter->second;
break;
}
++iter;
}
if(displayEntityItem)
{
if(!tasks || (tasks->size() == 0))
{
displayEntityItem->setText(1,"");
}
else
{
displayEntityItem->setText(1,taskType.
string().c_str());
fillDestinationLine(((*tasks)[0]).first.get(),displayEntityItem);
}
}
}
{
{
}
{
DtVrfStateViewCollectionManager::instance(DtPage::myDe).environmentStateViewCollection();
makVrf::DtEnvironmentStateViewCollection::StateViewMap::const_iterator iter =
{
{
displayEntityItem->setText(2,destinationText.c_str());
return;
}
++iter;
}
}
}
}