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
{
DtEntityList::DtEntityList(
makVrv::DtDe& de, QWidget* parent, Qt ::WindowFlags flags)
: DtPage(de, parent, flags)
{
setObjectName(tr("Entity List"));
setupUi(this);
myUi.myEntityTree->setRootIsDecorated(false);
populateEntityList();
myConnections += DtVrfGuiSimObjectManager::instance(myDe).signal_objectAdded.connect(
boost::bind(&DtEntityList::slot_onObjectAdded, this, std::placeholders::_1));
myConnections += DtVrfGuiSimObjectManager::instance(myDe).signal_objectDeleted.connect(
boost::bind(&DtEntityList::slot_onObjectAboutToBeRemoved, this, std::placeholders::_1));
myConnections += DtVrfCurrentTaskManager::instance(de).signal_currentTaskChanged.connect(
boost::bind(&DtEntityList::slot_onCurrentTaskChanged, this, std::placeholders::_1));
DtVrfGuiSimObjectManager::SimObjects::const_iterator iter = DtVrfGuiSimObjectManager::instance(myDe).simObjects().begin();
DtVrfGuiSimObjectManager::SimObjects::const_iterator end = DtVrfGuiSimObjectManager::instance(myDe).simObjects().end();
while (iter != end)
{
slot_onObjectAdded(iter->second);
++iter;
}
}
DtEntityList::~DtEntityList()
{
}
QIcon DtEntityList::icon()
{
return QIcon();
}
{
return result;
}
QString DtEntityList::title()
{
return tr("Entity List");
}
const std::string& DtEntityList::pageClassName() const
{
static std::string theClassName = "DtEntityList";
return theClassName;
}
void DtEntityList::activate()
{
}
void DtEntityList::deactivate()
{
}
std::string DtEntityList::thePageClassName()
{
return "DtEntityList";
}
void DtEntityList::setupUi(QWidget* p)
{
myUi.setupUi(this);
}
void DtEntityList::clear()
{
myUi.myEntityTree->clear();
}
void DtEntityList::populateEntityList()
{
for(auto& object : DtVrfGuiSimObjectManager::instance(myDe).simObjects())
{
slot_onObjectAdded(object.second);
}
}
{
{
return;
}
if(myLineToStateViewMap.find(state->
id()) != myLineToStateViewMap.end())
{
return;
}
boost::bind(&DtEntityList::slot_onObjectUpdated, this, std::placeholders::_1));
myLineToStateViewMap[state->
id()].item = displayEntityItem;
slot_onObjectUpdated(state);
}
{
std::map<makVrv::DtUniqueID, LineToStateView>::iterator iter = myLineToStateViewMap.find(state->
id());
if (iter == myLineToStateViewMap.end())
{
return;
}
iter->second.connection.disconnect();
if(displayEntityItem)
{
myUi.myEntityTree->takeTopLevelItem(
myUi.myEntityTree->indexOfTopLevelItem(displayEntityItem));
}
myLineToStateViewMap.erase(iter);
}
{
std::map<makVrv::DtUniqueID, LineToStateView>::iterator iter = myLineToStateViewMap.find(entityState->
id());
if(iter != myLineToStateViewMap.end())
{
if(displayEntityItem->text(0).isEmpty())
{
DtVrfCurrentTaskManager::instance(myDe).requestCurrentTasksFor(entityState->
id(),
boost::bind(&DtEntityList::slot_onCurrentTaskChanged, this, std::placeholders::_1));
}
if(
DtString(displayEntityItem->text(0).toLocal8Bit().constData()) != entityState->
objectName())
{
displayEntityItem->setText(0, QString::fromLocal8Bit(entityState->
objectName().c_str()));
}
bool destroyed = false;
key, destroyed, 48, false, entityState);
if (pMap.cacheKey() != displayEntityItem->icon(0).cacheKey())
{
displayEntityItem->setIcon(0, pMap);
}
}
}
void DtEntityList::slot_onCurrentTaskChanged(
DtUUID entityName)
{
{
return;
}
std::map<makVrv::DtUniqueID, LineToStateView>::iterator iter = myLineToStateViewMap.find(entityState->
id());
if(iter != myLineToStateViewMap.end())
{
if (allTasks)
{
if(allTasks->size() == 0)
{
displayEntityItem->setText(1,"");
displayEntityItem->setText(2,"");
}
else
{
displayEntityItem->setText(1,QString::fromUtf8(taskType.
type().c_str()));
fillDestinationLine(((*allTasks)[0]).task.get(),displayEntityItem);
}
}
}
}
{
displayEntityItem->setText(2, "");
{
if (stt)
{
if (rwv)
{
}
}
}
{
DtVector aimingPoint;
if (locTask)
{
}
else
{
if (stt)
{
if (cp)
{
controlPoint = *cp;
}
}
}
if (controlPoint.isValid())
{
{
}
}
if (aimingPoint != DtVector::zero())
{
QString destinationText =
QString::fromUtf8(
formatSourceToDisplay(aimingPoint)) +
" (" + QString::fromUtf8(controlPoint.markingText()) +
")";
displayEntityItem->setText(2,destinationText);
}
}
}
}