81 lines
2.1 KiB
C++
Executable File
81 lines
2.1 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* Handle bulding display in thp
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
|
|
#include "thp_building_widget.h"
|
|
#include "ui_thp_situation_building_base.h"
|
|
#include "thp_building_settings.h"
|
|
#include "thp_plugin_provider.h"
|
|
|
|
#include <QMenu>
|
|
|
|
#include <BuildingViewer/Common/bdv_controller.h>
|
|
#include <BuildingViewer/Common/bdv_plugin_provider.h>
|
|
#include <LtsScriptTimeline/track_entry.h>
|
|
#include <LtsWidgets/lts_dialog_helper.h>
|
|
|
|
#include <SituationReplay/handler_situation_replay_sqlite.h>
|
|
|
|
namespace THP
|
|
{
|
|
using namespace SituationReplay;
|
|
|
|
BuildingWidget::BuildingWidget(QWidget *parent)
|
|
: SituationBuildingBase("THP.BuildingWidget", parent)
|
|
{
|
|
QMenu *m = new QMenu(m_ui->btnFilter);
|
|
m->addAction(tr("Global Settings"), this, &BuildingWidget::onGlobalSettings);
|
|
m_ui->btnFilter->setMenu(m);
|
|
}
|
|
|
|
BuildingWidget::~BuildingWidget()
|
|
{
|
|
delete m_bgvController;
|
|
}
|
|
|
|
bool BuildingWidget::init(SituationReplay::MainHandlerSqlite *mhs, BuildingPluginProvider *pp, const QString &homePath)
|
|
{
|
|
if (!SituationBuildingBase::init(mhs))
|
|
return false;
|
|
m_replayHandler = mhs;
|
|
m_pluginProvider = pp;
|
|
|
|
// parse json, create xml, init buildingviewer
|
|
delete m_bgvController;
|
|
m_bgvController = new BuildingViewer::BgViewerController(this);
|
|
if (!m_bgvController->init(m_pluginProvider, true, homePath + QStringLiteral("/BuildingModels/")))
|
|
return false;
|
|
|
|
auto w = m_bgvController->getBgViewerWidget();
|
|
w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
m_ui->vLayout->insertWidget(0, w);
|
|
return true;
|
|
}
|
|
|
|
bool BuildingWidget::showSituationInternal()
|
|
{
|
|
m_bgvController->excRestoreViewState(m_attributes[QStringLiteral("arrBuildingStates")]);
|
|
if (!SituationBuildingBase::showSituationInternal())
|
|
return false;
|
|
onInitDone();
|
|
return true;
|
|
}
|
|
|
|
void BuildingWidget::emitPartitionTimeChanged(qint64 curTime)
|
|
{
|
|
m_pluginProvider->emitPartitionTimeChanged(curTime);
|
|
}
|
|
|
|
void BuildingWidget::onGlobalSettings()
|
|
{
|
|
if (!m_globalSettingsDialog)
|
|
m_globalSettingsDialog = new BgViewerSettingsView(m_bgvController, this);
|
|
m_globalSettingsDialog->show();
|
|
}
|
|
|
|
}
|