Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,53 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
# SIT_MAP
|
||||
SET(SIT_MAP_EXE_SRCS
|
||||
sit_map_main.cpp
|
||||
sit_map.cpp
|
||||
sit_map.h
|
||||
|
||||
log4cxx_sitmapMain.props
|
||||
)
|
||||
|
||||
|
||||
NGL_ADD_EXECUTABLE(WS NO_TRANSLATION sitMapExample ${SIT_MAP_EXE_SRCS})
|
||||
NGL_TARGET_LINK_LIBRARIES(sitMapExample
|
||||
Qt5::Network
|
||||
NGLLogger
|
||||
nglapplication
|
||||
LtsPluginManager
|
||||
LtsPluginLoader
|
||||
situationMap
|
||||
situationMapObjects
|
||||
situationMapFunctionDialog
|
||||
situationMapSideBar
|
||||
|
||||
advancedSymbologyGui
|
||||
|
||||
ArcGIS::ArcGIS
|
||||
ArcGISQt5Hack
|
||||
# situationMapSideBar
|
||||
)
|
||||
|
||||
# Copy on LIBchanges:
|
||||
IF(TARGET sitMapExample)
|
||||
SET(LOG4CXX_PROPS_FILE log4cxx_sitmapMain.props)
|
||||
ADD_CUSTOM_COMMAND(TARGET sitMapExample POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
ARGS -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${LOG4CXX_PROPS_FILE} $<TARGET_FILE_DIR:sitMapExample>/${LOG4CXX_PROPS_FILE}
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF(MSVC)
|
||||
# Configure the template file
|
||||
SET(VS_USER_FILE sitMapExample.vcxproj.user)
|
||||
configure_file( ../../SituationMap.vcxproj.user.in ${CMAKE_CURRENT_BINARY_DIR}/${VS_USER_FILE} @ONLY)
|
||||
ENDIF(MSVC)
|
||||
|
||||
NGL_INSTALL_TARGET(sitMapExample)
|
||||
NGL_INSTALL(FILES WS ${CMAKE_CURRENT_SOURCE_DIR}/${LOG4CXX_PROPS_FILE} DESTINATION "bin")
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
log4j.reset=true
|
||||
log4j.rootLogger=INFO, file, stdout
|
||||
|
||||
# SitMap
|
||||
###########################################################
|
||||
log4j.logger.SituationMap.sitmapMain=INFO
|
||||
log4j.logger.SituationMap.SitMap=INFO
|
||||
|
||||
# AdvancedSymbology (AdvSymbology)
|
||||
###########################################################
|
||||
#log4j.logger.AdvSymbology.SymbolDictionary=INFO
|
||||
#log4j.logger.AdvSymbology.SymbolDictionaryImpl=INFO
|
||||
#log4j.logger.AdvSymbology.EsriDictionaryProcessor=INFO
|
||||
#log4j.logger.AdvSymbology.SymbolResult=INFO
|
||||
#log4j.logger.AdvSymbology.Sidc2525Delta=INFO
|
||||
|
||||
# SituationMap
|
||||
###########################################################
|
||||
#log4j.logger.SituationMap.INFO
|
||||
#log4j.logger.SituationMap.MapImpl=INFO
|
||||
#log4j.logger.SituationMap.MapSettings=INFO
|
||||
#log4j.logger.SituationMap.MapInitializer=INFO
|
||||
#log4j.logger.SituationMap.JumpPoints=INFO
|
||||
#log4j.logger.SituationMap.LayerFactoryImpl=INFO
|
||||
#log4j.logger.SituationMap.LogicalLayer=INFO
|
||||
#log4j.logger.SituationMap.LayerControl=INFO
|
||||
#log4j.logger.SituationMap.CoordTranslationFunctorImpl=INFO
|
||||
#log4j.logger.SituationMap.CoordTranslationThread=INFO
|
||||
#log4j.logger.SituationMap.PositionsTranslated=INFO
|
||||
#log4j.logger.SituationMap.GridImpl=INFO
|
||||
#log4j.logger.SituationMap.ObjectFactory=INFO
|
||||
#log4j.logger.SituationMap.IdGenerator=INFO
|
||||
#log4j.logger.SituationMap.ObjectContainer=INFO
|
||||
#log4j.logger.SituationMap.ObjectContainerCTC=INFO
|
||||
#log4j.logger.SituationMap.OverlayHandlerImpl=INFO
|
||||
#log4j.logger.SituationMap.OverviewMapHandlerImpl=INFO
|
||||
#log4j.logger.SituationMap.OverviewMap=INFO
|
||||
log4j.logger.SituationMap.LocationDisplayImpl=TRACE
|
||||
log4j.logger.SituationMap.ViewshedImpl=TRACE
|
||||
log4j.logger.SituationMap.ViewshedBase=TRACE
|
||||
|
||||
log4j.logger.SituationMap.AbstractMapObjectImpl=INFO
|
||||
log4j.logger.SituationMap.AbstractEffectSimulationImpl=INFO
|
||||
log4j.logger.SituationMap.OriginTranslated=INFO
|
||||
log4j.logger.SituationMap.PositionsTranslated=INFO
|
||||
log4j.logger.SituationMap.AbstractMultiPointMapObjectImpl=INFO
|
||||
log4j.logger.SituationMap.AbstractSinglePointMapObjectImpl=INFO
|
||||
log4j.logger.SituationMap.BasicPathObjectImpl=INFO
|
||||
log4j.logger.SituationMap.IndicationContainer=INFO
|
||||
|
||||
log4j.logger.SituationMap.PolygonImpl=INFO
|
||||
log4j.logger.SituationMap.PolylineImpl=INFO
|
||||
log4j.logger.SituationMap.TextImpl=INFO
|
||||
|
||||
log4j.logger.SituationMap.AreaFireImpl=INFO
|
||||
log4j.logger.SituationMap.BiologicalAgentImpl=INFO
|
||||
log4j.logger.SituationMap.BuildingOutlineImpl=INFO
|
||||
log4j.logger.SituationMap.ChemicalAgentImpl=INFO
|
||||
log4j.logger.SituationMap.DangerAreaImpl=INFO
|
||||
log4j.logger.SituationMap.FunctionalAreaImpl=INFO
|
||||
log4j.logger.SituationMap.GeoImageImpl=INFO
|
||||
log4j.logger.SituationMap.HitLineImpl=INFO
|
||||
log4j.logger.SituationMap.MapObjectIndicatorImpl=INFO
|
||||
log4j.logger.SituationMap.MineImpl=INFO
|
||||
log4j.logger.SituationMap.MineFieldImpl=INFO
|
||||
log4j.logger.SituationMap.NuclearAgentImpl=INFO
|
||||
log4j.logger.SituationMap.ParticipantImpl=INFO
|
||||
log4j.logger.SituationMap.SingleFireImpl=INFO
|
||||
|
||||
log4j.logger.SituationMap.AbstractGraphicalObject=INFO
|
||||
log4j.logger.SituationMap.GraphicalObjectEllipse=INFO
|
||||
log4j.logger.SituationMap.GraphicalObjectPath=INFO
|
||||
log4j.logger.SituationMap.GraphicalObjectMultiPath=INFO
|
||||
log4j.logger.SituationMap.GraphicalObjectPictureMarker=INFO
|
||||
log4j.logger.SituationMap.GraphicalObjectRange=INFO
|
||||
log4j.logger.SituationMap.GraphicalObjectText=INFO
|
||||
log4j.logger.SituationMap.TacticalAppearance=INFO
|
||||
|
||||
log4j.logger.SituationMap.EventDispatcher=INFO
|
||||
log4j.logger.SituationMap.Rubberband=DEBUG
|
||||
log4j.logger.SituationMap.RubberbandRectangle=INFO
|
||||
log4j.logger.SituationMap.RubberbandDrawablesAndHandles=INFO
|
||||
log4j.logger.SituationMap.RubberbandFrameHandle=INFO
|
||||
log4j.logger.SituationMap.RubberbandPointHandle=INFO
|
||||
log4j.logger.SituationMap.RubberbandStateSelect=INFO
|
||||
|
||||
log4j.logger.SituationMap.ObjectIndicatorImpl=INFO
|
||||
|
||||
|
||||
# SituationMap-SideBar
|
||||
###########################################################
|
||||
log4j.logger.SituationMap.SideBar=INFO
|
||||
log4j.logger.SituationMap.SideBarItem=INFO
|
||||
log4j.logger.SituationMap.SideBarModel=INFO
|
||||
|
||||
|
||||
# PlanEditor
|
||||
###########################################################
|
||||
log4j.logger.SituationMap.PlanEditor=TRACE
|
||||
log4j.logger.SituationMap.PlanRenderer=TRACE
|
||||
|
||||
|
||||
|
||||
# Appnd_File
|
||||
###########################################################
|
||||
log4j.appender.file=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.file.MaxFileSize=1MB
|
||||
log4j.appender.file.MaxBackupIndex=9
|
||||
log4j.appender.file.file=${LOG4QT_LOGDIR}/${LOG4QT_USER}_SituationMap.log
|
||||
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.file.layout.ConversionPattern=%d %-5p %c |#| %m (%.50F:%L) %n
|
||||
|
||||
|
||||
# Appnd_Console
|
||||
###########################################################
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern= %d %-5p %c{1} |#| %m (%-.30F:%L) %n
|
||||
|
||||
#log4j.appender.stdout.layout.ConversionPattern= %d %-5p %-30c |#| %m (%-.30F:%L) %n
|
||||
|
||||
|
||||
# Appnd_Syslog
|
||||
###########################################################
|
||||
log4j.appender.syslog=org.apache.log4j.SyslogAppender
|
||||
log4j.appender.syslog.Threshold=ERROR
|
||||
log4j.appender.syslog.SysLogHost=localhost
|
||||
log4j.appender.syslog.Facility=LOCAL7
|
||||
log4j.appender.syslog.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.syslog.layout.ConversionPattern= %-4r %-5p %c %x - %m
|
||||
log4j.appender.syslog.LevelRangeFilter.AcceptOnMatch=true
|
||||
log4j.appender.syslog.LevelRangeFilter.LevelMin=INFO
|
||||
log4j.appender.syslog.LevelRangeFilter.LevelMax=FATAL
|
||||
|
||||
|
||||
###########################################################
|
||||
###########################################################
|
||||
###########################################################
|
||||
# 1) Available Levels in LOG4CXX Version 0.10.0:
|
||||
# TRACE,
|
||||
# DEBUG,
|
||||
# INFO,
|
||||
# WARN,
|
||||
# ERROR
|
||||
# FATAL
|
||||
#
|
||||
# d = date/time
|
||||
# p = priority (Level)
|
||||
# c = category/channel
|
||||
# m = message
|
||||
# F = file
|
||||
# L = line
|
||||
# n = platform dependent line separator character or characters.
|
||||
# ....
|
||||
#
|
||||
# Examples for console:
|
||||
# a)
|
||||
# %d %p %c #%m# (%.50F:%L)%n
|
||||
# date/time
|
||||
# priority
|
||||
# category/channel
|
||||
# #message#
|
||||
# (Maximal 50Character des Filename von rechts:Line)
|
||||
# line separator
|
||||
#
|
||||
# b)
|
||||
# %d (%.15F:%L) %-5p %c |#| %m%n
|
||||
# date/time
|
||||
# (Maximal 15Character des Filename von rechts:Line)
|
||||
# priority, Right pad with spaces if the priority name is less than 5 characters long.
|
||||
# category/channel
|
||||
# message
|
||||
# line separator
|
||||
#
|
||||
|
||||
+688
@@ -0,0 +1,688 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Interface
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
// Own
|
||||
#include "sit_map.h"
|
||||
|
||||
#include <ngltools/ngltools_filesystem.h>
|
||||
|
||||
#include <Map/grid.h>
|
||||
#include <Map/situation_map_utils.h>
|
||||
#include <Symbology/symbol_dictionary.h>
|
||||
|
||||
#include <Map/map_initializer.h>
|
||||
#include <Map/object_factory.h>
|
||||
#include <Map/camera.h>
|
||||
#include <MapObjectsImpl/polygon_impl.h>
|
||||
#include <MapObjectsImpl/polyline_impl.h>
|
||||
#include <MapObjectsImpl/text_impl.h>
|
||||
#include <MapObjectsImpl/area_fire_impl.h>
|
||||
#include <MapObjectsImpl/biological_agent_impl.h>
|
||||
#include <MapObjectsImpl/chemical_agent_impl.h>
|
||||
#include <MapObjectsImpl/cube_impl.h>
|
||||
#include <MapObjectsImpl/building_outline_impl.h>
|
||||
#include <MapObjectsImpl/danger_area_impl.h>
|
||||
#include <MapObjectsImpl/functional_area_impl.h>
|
||||
#include <MapObjectsImpl/geo_image_impl.h>
|
||||
#include <MapObjectsImpl/hit_line_impl.h>
|
||||
#include <MapObjectsImpl/line_of_sight_impl.h>
|
||||
#include <MapObjectsImpl/map_object_attributes_impl.h>
|
||||
#include <MapObjectsImpl/map_object_indicator_impl.h>
|
||||
#include <MapObjectsImpl/mine_impl.h>
|
||||
#include <MapObjectsImpl/mine_field_impl.h>
|
||||
#include <MapObjectsImpl/nuclear_agent_impl.h>
|
||||
#include <MapObjectsImpl/participant_impl.h>
|
||||
#include <MapObjectsImpl/single_fire_impl.h>
|
||||
//#include <MapObjectsImpl/single_fire_central_impl.h>
|
||||
#include <MapObjectsImpl/sound_area_impl.h>
|
||||
#include <MapImpl/sidc_symbol_impl.h>
|
||||
#include <MapImpl/sight_fan_impl.h>
|
||||
|
||||
#include <Map/camera.h>
|
||||
#include <Map/viewshed.h>
|
||||
#include <FunctionDialog/function_dialog.h>
|
||||
|
||||
#include <QStackedLayout>
|
||||
#include <SideBar/side_bar.h>
|
||||
|
||||
#include <Map/party_id_to_color_functor.h>
|
||||
|
||||
// PlanModel:
|
||||
|
||||
#include <GeometryModel/geometry_model_factory.h>
|
||||
#include <GeometryModel/geometry_model.h>
|
||||
#include <Map/geometry_model_renderer.h>
|
||||
|
||||
|
||||
// Qt
|
||||
#include <QApplication>
|
||||
#include <QTimer>
|
||||
#include <QPushButton>
|
||||
#include <QComboBox>
|
||||
#include <QGridLayout>
|
||||
#include <QSharedPointer>
|
||||
#include <QGraphicsView>
|
||||
#include <QGraphicsProxyWidget>
|
||||
#include <QMenu>
|
||||
#include <QFileDialog>
|
||||
#include <QDir>
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
class myMapInitializer : public SituationMap::MapInitializer
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
using BaseClass = SituationMap::MapInitializer;
|
||||
|
||||
public:
|
||||
explicit myMapInitializer(SituationMap::Map &map
|
||||
, SituationMap::MapSettings &mapSettings
|
||||
, const QString &debugName)
|
||||
: SituationMap::MapInitializer(map, mapSettings, debugName)
|
||||
{}
|
||||
|
||||
bool initializeObjectFactory() override
|
||||
{
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::MapObjectIndicator), new SituationMap::GenericObjectFactory<SituationMap::MapObjectIndicatorImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Cube), new SituationMap::GenericObjectFactory<SituationMap::CubeImpl>() );
|
||||
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Polygon), new SituationMap::GenericObjectFactory<SituationMap::PolygonImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Polyline), new SituationMap::GenericObjectFactory<SituationMap::PolylineImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Text), new SituationMap::GenericObjectFactory<SituationMap::TextImpl>() );
|
||||
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Participant), new SituationMap::GenericObjectFactory<SituationMap::ParticipantImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::AreaFire), new SituationMap::GenericObjectFactory<SituationMap::AreaFireImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::BiologicalAgent), new SituationMap::GenericObjectFactory<SituationMap::BiologicalAgentImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::ChemicalAgent), new SituationMap::GenericObjectFactory<SituationMap::ChemicalAgentImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::BuildingOutline), new SituationMap::GenericObjectFactory<SituationMap::BuildingOutlineImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::DangerArea), new SituationMap::GenericObjectFactory<SituationMap::DangerAreaImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::FunctionalArea), new SituationMap::GenericObjectFactory<SituationMap::FunctionalAreaImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::GeoImage), new SituationMap::GenericObjectFactory<SituationMap::GeoImageImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::HitLine), new SituationMap::GenericObjectFactory<SituationMap::HitLineImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::LineOfSight), new SituationMap::GenericObjectFactory<SituationMap::LineOfSightImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::MapObjectAttributes), new SituationMap::GenericObjectFactory<SituationMap::MapObjectAttributesImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::Mine), new SituationMap::GenericObjectFactory<SituationMap::MineImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::MineField), new SituationMap::GenericObjectFactory<SituationMap::MineFieldImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::NuclearAgent), new SituationMap::GenericObjectFactory<SituationMap::NuclearAgentImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SingleFire), new SituationMap::GenericObjectFactory<SituationMap::SingleFireImpl>() );
|
||||
// SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SingleFireCentral), new SituationMap::GenericObjectFactory<SituationMap::SingleFireCentralImpl>());
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SoundArea), new SituationMap::GenericObjectFactory<SituationMap::SoundAreaImpl>() );
|
||||
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SidcSymbol), new SituationMap::GenericObjectFactory<SituationMap::SidcSymbolImpl>() );
|
||||
SituationMap::ObjectFactory::registerMe(typeid(SituationMap::SightFan), new SituationMap::GenericObjectFactory<SituationMap::SightFanImpl>());
|
||||
|
||||
return true;
|
||||
} // initializeObjectFactory()
|
||||
|
||||
AdvancedSymbology::SymbologyType symbologyType() const override
|
||||
{
|
||||
return m_symbologyType;
|
||||
} // symbologyType
|
||||
|
||||
void setSymbologyType(AdvancedSymbology::SymbologyType symbologyType)
|
||||
{
|
||||
m_symbologyType = symbologyType;
|
||||
}
|
||||
|
||||
protected:
|
||||
AdvancedSymbology::SymbologyType m_symbologyType = AdvancedSymbology::SymbologyType::APP6B;
|
||||
|
||||
};
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
class SitMap::Private
|
||||
{
|
||||
public:
|
||||
Private() = default;
|
||||
~Private() = default;
|
||||
|
||||
// map
|
||||
QPointer<SituationMap::Map> m_map = nullptr;
|
||||
|
||||
bool m_demoMode = false;
|
||||
|
||||
QStackedLayout* m_stackedLayout = nullptr;
|
||||
|
||||
|
||||
QSharedPointer<SituationMap::MapSettings> m_mapSettings;
|
||||
QSharedPointer<myMapInitializer> m_mapInitializer;
|
||||
|
||||
// admin
|
||||
QGridLayout* m_mainLayout = nullptr;
|
||||
QPushButton* m_pbDestroyMap = nullptr;
|
||||
QPushButton* m_pbToggleMode = nullptr;
|
||||
SituationMap::Viewpoint2D m_viewpoint4Toggle;
|
||||
QPushButton* m_pbQuit = nullptr;
|
||||
QComboBox* m_cbIniFile = nullptr;
|
||||
QString m_initFilePath;
|
||||
QComboBox* m_cb2D3D = nullptr;
|
||||
QComboBox* m_cbSymbologyType = nullptr;
|
||||
|
||||
|
||||
int symbologyType() const
|
||||
{
|
||||
if (m_cbSymbologyType)
|
||||
{
|
||||
return m_cbSymbologyType->currentData().toInt();
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
QPushButton* m_pbPlan = nullptr;
|
||||
|
||||
QMenu* m_popupMenu = nullptr;
|
||||
|
||||
QTimer* m_getRotationTimer = nullptr;
|
||||
|
||||
}; // class SitMap::Private
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//SitMap
|
||||
//-----------------------------------------------------------------------------
|
||||
SitMap::SitMap(bool demoMode, QWidget *parent)
|
||||
: QDialog(parent)
|
||||
, m_logger(SituationMap::getLogger("SitMap"))
|
||||
, d(new Private)
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
|
||||
this->setObjectName( QLatin1String("SitMapExample-Widget") );
|
||||
|
||||
d->m_mainLayout = new QGridLayout(this);
|
||||
d->m_mainLayout->setObjectName( QLatin1String("SitMapExample-MainLayoutGrid") );
|
||||
|
||||
//-----------------------------------
|
||||
// Buttons
|
||||
//-----------------------------------
|
||||
QVariant data;
|
||||
|
||||
QGridLayout* topLayout = new QGridLayout();
|
||||
topLayout->setObjectName( QLatin1String("SitMapExample-TopLayoutGrid") );
|
||||
d->m_mainLayout->addLayout(topLayout, 0, 0);
|
||||
|
||||
|
||||
d->m_cbIniFile = new QComboBox();
|
||||
d->m_cbIniFile->setObjectName( QLatin1String("SitMapExample-IniFileComboBox") );
|
||||
topLayout->addWidget(d->m_cbIniFile, 0, 0);
|
||||
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_defaults.ini"), QLatin1String("situation_map_defaults.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_ahtc.ini"), QLatin1String("situation_map_ahtc.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_demo_center.ini"), QLatin1String("situation_map_demo_center.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_guez.ini"), QLatin1String("situation_map_guez.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_land400.ini"), QLatin1String("situation_map_land400.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_qatar.ini"), QLatin1String("situation_map_qatar.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("situation_map_luxemburg.ini"), QLatin1String("situation_map_luxemburg.ini"));
|
||||
d->m_cbIniFile->addItem(QStringLiteral("select"), QString());
|
||||
onIniFileActivated(d->m_cbIniFile->currentText());
|
||||
|
||||
connect(d->m_cbIniFile, QOverload<const QString&>::of(&QComboBox::activated),
|
||||
this, &SitMap::onIniFileActivated);
|
||||
|
||||
|
||||
d->m_cbSymbologyType = new QComboBox();
|
||||
d->m_cbSymbologyType->setObjectName( QLatin1String("SitMapExample-SymbologyComboBox") );
|
||||
topLayout->addWidget(d->m_cbSymbologyType, 0, 1);
|
||||
|
||||
|
||||
// debugging :
|
||||
if (0)
|
||||
{
|
||||
// highlighted -> UserInteraction
|
||||
connect(d->m_cbSymbologyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::highlighted), this, [](int idx){
|
||||
qCritical() << " called: highlighted(int) " << idx;
|
||||
});
|
||||
|
||||
// currentIndexChanged -> programmatically & UserInteraction
|
||||
connect(d->m_cbSymbologyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, [](int idx){
|
||||
qCritical() << " called: currentIndexChanged(int) " << idx;
|
||||
});
|
||||
|
||||
// activated -> UserInteraction
|
||||
connect(d->m_cbSymbologyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, [](int idx)
|
||||
{
|
||||
qCritical() << " called: activated(int) " << idx;
|
||||
});
|
||||
|
||||
} //
|
||||
|
||||
// : debugging
|
||||
|
||||
|
||||
d->m_cb2D3D = new QComboBox();
|
||||
d->m_cb2D3D->setObjectName( QLatin1String("SitMapExample-cb2D3D") );
|
||||
data.setValue(SituationMap::Mode::Mode_2D);
|
||||
d->m_cb2D3D->addItem(QStringLiteral("2D"), data);
|
||||
data.setValue(SituationMap::Mode::Mode_3D);
|
||||
d->m_cb2D3D->addItem(QStringLiteral("3D"), data);
|
||||
topLayout->addWidget(d->m_cb2D3D, 0, 2);
|
||||
|
||||
d->m_pbDestroyMap = new QPushButton( QLatin1String("Create Map") );
|
||||
d->m_pbDestroyMap->setObjectName( QLatin1String("SitMapExample-CreateDestroyMapButton") );
|
||||
topLayout->addWidget(d->m_pbDestroyMap, 0, 3);
|
||||
connect(d->m_pbDestroyMap, &QPushButton::clicked, this, &SitMap::onCreateDestroyClicked);
|
||||
|
||||
d->m_pbToggleMode = new QPushButton( QLatin1String("Toggle Mode") );
|
||||
d->m_pbToggleMode->setObjectName( QLatin1String("SitMapExample-ToggleModeButton") );
|
||||
topLayout->addWidget(d->m_pbToggleMode, 0, 4);
|
||||
connect(d->m_pbToggleMode, &QPushButton::clicked, this, &SitMap::onToggleModeClicked);
|
||||
d->m_pbToggleMode->setDisabled(true);
|
||||
|
||||
|
||||
AdvancedSymbology::SymbologyType symType;
|
||||
|
||||
symType = AdvancedSymbology::SymbologyType::MIL2525D;
|
||||
data.setValue(symType); d->m_cbSymbologyType->addItem(AdvancedSymbology::toString(symType), data);
|
||||
|
||||
symType = AdvancedSymbology::SymbologyType::MIL2525C;
|
||||
data.setValue(symType); d->m_cbSymbologyType->addItem(AdvancedSymbology::toString(symType), data);
|
||||
|
||||
symType = AdvancedSymbology::SymbologyType::APP6B;
|
||||
data.setValue(symType); d->m_cbSymbologyType->addItem(AdvancedSymbology::toString(symType), data);
|
||||
|
||||
symType = AdvancedSymbology::SymbologyType::APP6D;
|
||||
data.setValue(symType); d->m_cbSymbologyType->addItem(AdvancedSymbology::toString(symType), data);
|
||||
|
||||
symType = AdvancedSymbology::SymbologyType::None;
|
||||
data.setValue(symType); d->m_cbSymbologyType->addItem(AdvancedSymbology::toString(symType), data);
|
||||
|
||||
d->m_cbSymbologyType->setCurrentText(AdvancedSymbology::toString(AdvancedSymbology::SymbologyType::APP6D));
|
||||
|
||||
//-----------------------------------
|
||||
// Map
|
||||
//-----------------------------------
|
||||
// createMap();
|
||||
|
||||
{
|
||||
QGridLayout* bottomLayout = new QGridLayout();
|
||||
bottomLayout->setObjectName( QLatin1String("SitMapExample-TopBottomLayoutGrid") );
|
||||
d->m_mainLayout->addLayout(bottomLayout, 2, 0);
|
||||
|
||||
d->m_pbPlan = new QPushButton( QLatin1String("Plan") );
|
||||
d->m_pbPlan->setObjectName( QLatin1String("SitMapExample-Plan") );
|
||||
connect(d->m_pbPlan, &QPushButton::clicked, this, &SitMap::onPlanClicked);
|
||||
bottomLayout->addWidget(d->m_pbPlan, 0, 0);
|
||||
|
||||
|
||||
d->m_pbQuit = new QPushButton( QLatin1String("Quit") );
|
||||
d->m_pbQuit->setObjectName( QLatin1String("SitMapExample-Quit") );
|
||||
bottomLayout->addWidget(d->m_pbQuit, 1, 0);
|
||||
connect(d->m_pbQuit, &QPushButton::clicked, []() {
|
||||
QCoreApplication::quit();
|
||||
});
|
||||
|
||||
// tbc
|
||||
|
||||
}
|
||||
|
||||
if (demoMode)
|
||||
{
|
||||
// topLayout
|
||||
d->m_cbSymbologyType->hide();
|
||||
d->m_cb2D3D->hide();
|
||||
d->m_pbDestroyMap->hide();
|
||||
|
||||
// bottomLayout
|
||||
d->m_pbPlan->hide();
|
||||
|
||||
// createMap:
|
||||
onCreateDestroyClicked();
|
||||
|
||||
} // if (demoMode)
|
||||
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
SitMap::~SitMap()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
delete d;
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
SituationMap::Map *SitMap::map()
|
||||
{
|
||||
return d->m_map;
|
||||
}
|
||||
|
||||
void SitMap::onCreateDestroyClicked()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
|
||||
static bool destroy = true;
|
||||
destroy = !destroy;
|
||||
if (destroy)
|
||||
{
|
||||
d->m_cbIniFile->setEnabled(true);
|
||||
d->m_cbSymbologyType->setEnabled(true);
|
||||
d->m_cb2D3D->setEnabled(true);
|
||||
d->m_pbDestroyMap->setText( QLatin1String("Create Map") );
|
||||
if (d->m_getRotationTimer)
|
||||
d->m_getRotationTimer->stop(); // to avoid slot being called
|
||||
delete d->m_map;
|
||||
} else {
|
||||
d->m_cbIniFile->setEnabled(false);
|
||||
d->m_cbSymbologyType->setEnabled(false);
|
||||
d->m_cb2D3D->setEnabled(false);
|
||||
d->m_pbDestroyMap->setText( QLatin1String("Destroy Map") );
|
||||
createMap();
|
||||
}
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
}
|
||||
|
||||
void SitMap::onToggleModeClicked()
|
||||
{
|
||||
NOTICE_LOG(m_logger) << LOGFUNCTION << " START" << " curMode=" << d->m_cb2D3D->currentText();
|
||||
|
||||
d->m_pbToggleMode->setDisabled(true);
|
||||
|
||||
d->m_viewpoint4Toggle = d->m_map->viewpoint2D();
|
||||
qCritical() << " save last d->m_viewpoint4Toggle=" << d->m_viewpoint4Toggle.toString();
|
||||
|
||||
// toogle mode:
|
||||
SituationMap::Mode newMapMode = SituationMap::toggleMode(d->m_map->mode());
|
||||
|
||||
// destroy:
|
||||
onCreateDestroyClicked();
|
||||
|
||||
// rebuild
|
||||
QVariant data;
|
||||
data.setValue(newMapMode);
|
||||
int idx = d->m_cb2D3D->findData(data);
|
||||
d->m_cb2D3D->setCurrentIndex(idx);
|
||||
|
||||
// create
|
||||
onCreateDestroyClicked();
|
||||
}
|
||||
|
||||
void SitMap::createMap()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
|
||||
d->m_map = SituationMap::Map::create(this);
|
||||
d->m_map->setObjectName(QLatin1String("SitMapExample-Map"));
|
||||
|
||||
// d->m_mainLayout->addWidget(d->m_map, 1, 0);
|
||||
|
||||
if (!d->m_stackedLayout)
|
||||
d->m_stackedLayout = new QStackedLayout();
|
||||
d->m_stackedLayout->setStackingMode(QStackedLayout::StackAll);
|
||||
d->m_mainLayout->addLayout(d->m_stackedLayout, 1, 0);
|
||||
d->m_stackedLayout->addWidget(d->m_map);
|
||||
|
||||
NOTICE_LOG(m_logger) << LOGFUNCTION << " iniFile = '" << d->m_initFilePath << "'";
|
||||
|
||||
d->m_mapSettings = QSharedPointer<SituationMap::MapSettings> ( new SituationMap::MapSettings(d->m_initFilePath) );
|
||||
|
||||
d->m_mapInitializer = QSharedPointer<myMapInitializer>
|
||||
( new myMapInitializer(*d->m_map, *d->m_mapSettings, QLatin1String("SitMapExample")) );
|
||||
|
||||
// toggle?
|
||||
if (! d->m_viewpoint4Toggle.isNull())
|
||||
d->m_mapInitializer->setViewPoint(d->m_viewpoint4Toggle);
|
||||
|
||||
|
||||
// Take SymbologyType from UI and not from ini file:
|
||||
int symbologyTypeInt = d->symbologyType();
|
||||
if (symbologyTypeInt == -1)
|
||||
{
|
||||
ERROR_LOG(m_logger) << LOGFUNCTION << " Error retrieving symbologyType";
|
||||
abort();
|
||||
}
|
||||
|
||||
AdvancedSymbology::SymbologyType symbologyTypeUI =
|
||||
static_cast<AdvancedSymbology::SymbologyType>(symbologyTypeInt);
|
||||
d->m_mapInitializer->setSymbologyType(symbologyTypeUI);
|
||||
|
||||
|
||||
if (d->m_mapInitializer->hasErrors())
|
||||
{
|
||||
FATAL_LOG(m_logger) << LOGFUNCTION << " MapInitializer-filename='" << d->m_mapInitializer->filename()
|
||||
<< "'' has following errors: "
|
||||
<< " exists = " << d->m_mapInitializer->exists()
|
||||
<< " accessError = " << d->m_mapInitializer->accessError()
|
||||
<< " formatError = " << d->m_mapInitializer->formatError();
|
||||
return;
|
||||
} else {
|
||||
const SituationMap::Mode mapMode = d->m_cb2D3D->currentData().value<SituationMap::Mode>();
|
||||
if (d->m_mapInitializer->initMap(mapMode) )
|
||||
{
|
||||
INFO_LOG(m_logger) << LOGFUNCTION << " MapInitializer::initMap() ok";
|
||||
} else {
|
||||
ERROR_LOG(m_logger) << LOGFUNCTION << " MapInitializer::initMap() failed";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 50. turn over to application (if required):
|
||||
|
||||
d->m_map->setTimeString(QStringLiteral("#"));
|
||||
|
||||
|
||||
// connect (d->m_map.data(), &SituationMap::Map::mapObjectsClicked, this, &SitMap::onMapObjectClicked);
|
||||
connect( d->m_map.data()
|
||||
, &SituationMap::Map::contextMenuClicked
|
||||
, this
|
||||
, &SitMap::onMapContextClicked );
|
||||
|
||||
|
||||
if (d->m_map->isReady())
|
||||
d->m_pbToggleMode->setEnabled(true);
|
||||
else
|
||||
connect(d->m_map.data(), &SituationMap::Map::mapReady, this, [this]() {
|
||||
d->m_pbToggleMode->setEnabled(true);
|
||||
});
|
||||
|
||||
|
||||
|
||||
// Create FunctionDialog:
|
||||
SituationMap::FunctionDialog::addButtonToMap(d->m_map);
|
||||
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
|
||||
} // SitMap::createMap
|
||||
|
||||
|
||||
static QVector<SituationMap::RefPointer<SituationMap::Participant>>& participantMap()
|
||||
{
|
||||
static QVector<SituationMap::RefPointer<SituationMap::Participant>> s_participantCont;
|
||||
return s_participantCont;
|
||||
}
|
||||
|
||||
void SitMap::onPlanClicked()
|
||||
{
|
||||
if (!d->m_map || !d->m_map->isReady())
|
||||
return;
|
||||
|
||||
const SituationMap::PartyIdToColorFunctor::PartyData pData1(QStringLiteral("P1"),
|
||||
AdvancedSymbology::Role::Friend,
|
||||
Qt::blue, Qt::blue);
|
||||
const SituationMap::PartyIdToColorFunctor::PartyData pData2(QStringLiteral("P2"),
|
||||
AdvancedSymbology::Role::HostileFaker,
|
||||
Qt::red, Qt::red);
|
||||
d->m_map->partyIdToColorFunctor().setParty(1, pData1);
|
||||
d->m_map->partyIdToColorFunctor().setParty(2, pData2);
|
||||
|
||||
const QSize windowSize = this->size();
|
||||
const QSize offset(50, 50);
|
||||
|
||||
SituationMap::LayerFactory &layerFac = d->m_map->layerFactory();
|
||||
QStringList layernames = layerFac.layernames(SituationMap::LayerType::Operational);
|
||||
QString layername = layernames[0];
|
||||
layername = QStringLiteral("Participants");
|
||||
SituationMap::ObjectFactory &objFac = d->m_map->objectFactory();
|
||||
|
||||
SituationMap::RefPointer<SituationMap::Participant> participant;
|
||||
|
||||
|
||||
int counter = 0;
|
||||
int partyId = 1;
|
||||
for (int x = offset.width(); x<windowSize.width()-offset.width(); x+=offset.width())
|
||||
{
|
||||
for (int y = offset.height(); y<windowSize.height()-offset.height(); y+=offset.height())
|
||||
{
|
||||
++counter;
|
||||
|
||||
QString debugName = QString(QStringLiteral("ModuleTestId1 cnt=%1")).arg(counter);
|
||||
QPointF geoCoord = d->m_map->viewPortWindowPointToGeoCoordinate(QPointF(x,y));
|
||||
|
||||
SituationMap::SymbolData symData;
|
||||
symData.sidc = QStringLiteral("AP6D|CMPL|10031000111205000000");
|
||||
symData.color = Qt::cyan; // Will be overwritten via partyId.
|
||||
|
||||
|
||||
participant = objFac.create<SituationMap::Participant>(layername, debugName);
|
||||
participantMap().append(participant);
|
||||
|
||||
participant->setOrigin(SituationMap::Point3D::fromQPointF(geoCoord));
|
||||
participant->setSymbol(symData);
|
||||
|
||||
if (partyId == 2)
|
||||
partyId = 1;
|
||||
else
|
||||
partyId = 2;
|
||||
|
||||
participant->setPartyId(partyId);
|
||||
|
||||
if (!participant->updateView())
|
||||
{
|
||||
qCritical() << "updateView failed: debugName='" << debugName << "'";
|
||||
abort();
|
||||
}
|
||||
|
||||
} // for
|
||||
} // for
|
||||
|
||||
|
||||
QTimer *timer = new QTimer(this);
|
||||
timer->setInterval(150);
|
||||
static int s_partyId = 1;
|
||||
static int s_finishCounter=0;
|
||||
connect(timer, &QTimer::timeout, this, [timer]() {
|
||||
|
||||
qCritical() << " new partyId= " << s_partyId << " count=" << participantMap().size() << ")";
|
||||
|
||||
++s_finishCounter;
|
||||
if (s_finishCounter>10)
|
||||
timer->stop();
|
||||
|
||||
int counter = rand()%5;
|
||||
|
||||
for(auto participant : qAsConst(participantMap()))
|
||||
{
|
||||
int curPartyId = participant->partyId();
|
||||
if (curPartyId == 2)
|
||||
curPartyId = 1;
|
||||
else
|
||||
curPartyId = 2;
|
||||
|
||||
participant->setPartyId(curPartyId);
|
||||
|
||||
SituationMap::SymbolData symData = participant->symbol();
|
||||
int mod = ((++counter)%9);
|
||||
switch (mod)
|
||||
{
|
||||
case 0: symData.sidc = QStringLiteral("AP6D|CMPL|10031000111205000000"); break;
|
||||
case 1: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001202000000"); break;
|
||||
case 2: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001302000000"); break;
|
||||
case 3: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001402000000"); break;
|
||||
case 4: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001502000000"); break;
|
||||
case 5: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001602000000"); break;
|
||||
case 6: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001702000000"); break;
|
||||
case 7: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001802000000"); break;
|
||||
case 8: symData.sidc = QStringLiteral("AP6D|CMPL|10031500001902000000"); break;
|
||||
}
|
||||
participant->setSymbol(symData);
|
||||
|
||||
if (!participant->updateView())
|
||||
{
|
||||
qCritical() << "updateView failed:";
|
||||
abort();
|
||||
}
|
||||
}
|
||||
});
|
||||
timer->start();
|
||||
}
|
||||
|
||||
void SitMap::onMapObjectClicked(const SituationMap::Map::RefPointerMapObjectList & mapObjList, const QPointF &viewportPosition)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << "START onMapObjectClicked"
|
||||
<< " viewportPosition=" << viewportPosition
|
||||
<< " mapObjList.size()=" << mapObjList.size();
|
||||
|
||||
for (auto mapObj : mapObjList)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " id=" << mapObj->uniqueMapId()
|
||||
<< " object-debugInfo=" << mapObj->debugInfo()
|
||||
<< " object-identifier=" << mapObj->identifier();
|
||||
|
||||
// Selection:
|
||||
if (mapObj->pickable())
|
||||
{
|
||||
mapObj->setSelected(!mapObj->selected());
|
||||
mapObj->updateView();
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << (mapObj->selected() ? " is selected" : " is not selected");
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << "END onMapObjectClicked";
|
||||
}
|
||||
|
||||
void SitMap::onMapContextClicked(const SituationMap::Map::RefPointerMapObjectList & mapObjList, const QPointF & pos)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << "START onMapContextClicked window pos x=" << pos.x() << " y=" << pos.y()
|
||||
<< " mapObjList.size()=" << mapObjList.size();
|
||||
|
||||
return;
|
||||
|
||||
// delete d->m_popupMenu;
|
||||
|
||||
// d->m_popupMenu = new QMenu( d->m_map );
|
||||
|
||||
// d->m_popupMenu->addSection( QLatin1String("Object at mouse position") );
|
||||
// for (auto mapObj : mapObjList)
|
||||
// {
|
||||
// DEBUG_LOG(m_logger) << LOGFUNCTION << " id=" << mapObj->uniqueMapId()
|
||||
// << "object-debugInfo=" << mapObj->debugInfo()
|
||||
// << "object-identifier=" << mapObj->identifier();
|
||||
// d->m_popupMenu->addAction( mapObj->identifier() );
|
||||
// }
|
||||
// d->m_popupMenu->addSeparator();
|
||||
|
||||
// // d->m_popupMenu->popup(d->m_map->getQGraphicsView()->mapToGlobal(pos.toPoint()));
|
||||
// d->m_popupMenu->popup( QPoint(100, 100) );
|
||||
|
||||
// DEBUG_LOG(m_logger) << LOGFUNCTION << "END onMapContextClicked";
|
||||
|
||||
}
|
||||
|
||||
void SitMap::onIniFileActivated(const QString &text)
|
||||
{
|
||||
if (text.compare(QLatin1String("select")) == 0)
|
||||
{
|
||||
d->m_initFilePath = QFileDialog::getOpenFileName(this,
|
||||
QLatin1String("get ini file"),
|
||||
QLatin1String(""),
|
||||
QLatin1String("Ini files (*.ini)"));
|
||||
} else {
|
||||
// e.g. TDS-build/share/Lts/situation_map/situation_map_defaults.ini
|
||||
d->m_initFilePath = NGL::findFile(NGL::FileType::ConfigFile, text);
|
||||
}
|
||||
NOTICE_LOG(m_logger) << LOGFUNCTION << "selected filename= '" << d->m_initFilePath << "'";
|
||||
}
|
||||
// SitMap::onMapContextClicked(const SituationMap::Map::RefPointerMapObjectList & mapObjList, const QPoint &)
|
||||
|
||||
#include "sit_map.moc"
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Interface
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Qwn
|
||||
#include <Common/ref_pointer.h>
|
||||
#include <Common/situation_map_logging.h>
|
||||
|
||||
#include <Map/abstract_map_object.h>
|
||||
#include <Map/map.h>
|
||||
|
||||
// Qt
|
||||
#include <QDialog>
|
||||
|
||||
class SitMap : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SitMap(bool demoMode, QWidget *parent = nullptr);
|
||||
virtual ~SitMap ();
|
||||
|
||||
SituationMap::Map *map();
|
||||
|
||||
public slots:
|
||||
void onCreateDestroyClicked();
|
||||
void onToggleModeClicked();
|
||||
void createMap();
|
||||
|
||||
void onPlanClicked();
|
||||
void onMapObjectClicked (const SituationMap::Map::RefPointerMapObjectList & mapObjList, const QPointF &viewportPosition);
|
||||
void onMapContextClicked( const SituationMap::Map::RefPointerMapObjectList & mapObjList, const QPointF &pos);
|
||||
|
||||
protected slots:
|
||||
void onIniFileActivated(const QString &text);
|
||||
|
||||
private:
|
||||
SituationMap::LOGGER_T m_logger; ///< Interface of the Logging-Facility
|
||||
|
||||
class Private;
|
||||
Private* d = nullptr;
|
||||
|
||||
};
|
||||
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* Interface
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
*/
|
||||
|
||||
// Own
|
||||
|
||||
#include "sit_map.h"
|
||||
|
||||
#include <SideBar/side_bar.h>
|
||||
|
||||
#include <LtsPluginManager/lts_plugin_loader.h>
|
||||
#include <PluginInterfaces/style_plugin_interface.h>
|
||||
#include <PluginInterfaces/project_plugin_interface.h>
|
||||
|
||||
#include <nglapplication/nglapplication.h>
|
||||
#include <NGLLogger/INGLLogger.h>
|
||||
|
||||
|
||||
// Qt
|
||||
#include <QMessageBox>
|
||||
#include <QDir>
|
||||
#include <QNetworkProxy>
|
||||
#include <QSurface>
|
||||
|
||||
|
||||
// ESRI
|
||||
//#include <arcgis/ProxySetup.h>
|
||||
|
||||
|
||||
int main (int argc, char* argv[])
|
||||
{
|
||||
NGLApplication app ( argc, argv );
|
||||
|
||||
// ESRI :
|
||||
#ifdef Q_OS_WIN
|
||||
// Force usage of OpenGL ES through ANGLE on Windows
|
||||
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES);
|
||||
#endif
|
||||
// : ESRI
|
||||
|
||||
app.createLogger("sitmapMain", "log4cxx_sitmapMain.props");
|
||||
|
||||
STARTUP_LOG( app.baseLogger() );
|
||||
|
||||
// TODO: load style plugin
|
||||
//QApplication::setStyle(QLatin1String("rde"));
|
||||
//QDir::setSearchPaths(QLatin1String("icon"), QStringList(QLatin1String(":/icons/light")));
|
||||
|
||||
app.setOrganizationName( QLatin1String( "Rheinmetall Defence Electronics" ) );
|
||||
app.setApplicationName( QLatin1String( "SituationMap Example Application" ) );
|
||||
|
||||
LtsPluginManager::LtsPluginLoader *pluginLoader = LtsPluginManager::LtsPluginLoader::getInstance();
|
||||
|
||||
pluginLoader->loadPlugins(LtsPluginManager::PluginType::STYLE, nullptr,
|
||||
QStringList() << QStringLiteral("rme.light"));
|
||||
pluginLoader->loadPlugins(LtsPluginManager::PluginType::PROJECT, nullptr,
|
||||
QStringList() << QStringLiteral("legatus"));
|
||||
|
||||
// .. to keep some compatibility to old resource structure TODO: rm !
|
||||
QDir::setSearchPaths( QLatin1String( "icon" ), QStringList( QLatin1String( ":/style/icons/" ) ) );
|
||||
QDir::setSearchPaths( QLatin1String( "icon" ), QStringList( QLatin1String( ":/style/" ) ) ); // FIXME: does qt check for recursion ??
|
||||
|
||||
if(0)
|
||||
{
|
||||
INFO_LOG(app.baseLogger()) << LOGFUNCTION << " set PROXY PROXY PROXY PROXY PROXY PROXY PROXY";
|
||||
|
||||
QNetworkProxy proxy;
|
||||
proxy.setType(QNetworkProxy::HttpProxy);
|
||||
proxy.setHostName(QLatin1String("213.61.254.67")); // proxy-rde > 213.61.254.67
|
||||
proxy.setUser(QLatin1String("Norbert Thoden/RH-UBD-BC"));
|
||||
proxy.setPassword(QLatin1String("RDEWWW11"));
|
||||
proxy.setPort(8080);
|
||||
QNetworkProxy::setApplicationProxy(proxy);
|
||||
} else {
|
||||
NOTICE_LOG(app.baseLogger()) << LOGFUNCTION << " reset !!! QNETWORKPROXY QNETWORKPROXY QNETWORKPROXY QNETWORKPROXY QNETWORKPROXY !!!";
|
||||
QNetworkProxy::setApplicationProxy(QNetworkProxy());
|
||||
}
|
||||
|
||||
//QNetworkProxy proxy;
|
||||
//proxy.setType(QNetworkProxy::HttpProxy);
|
||||
//proxy.setHostName(QStringLiteral("proxy-rde"));
|
||||
//proxy.setPort(8080);
|
||||
//proxy.setUser(QStringLiteral("norbert.thoden@rheinmetall.com"));
|
||||
//proxy.setPassword(QStringLiteral("RDEWWW11"));
|
||||
//QNetworkProxy::setApplicationProxy(proxy);
|
||||
|
||||
|
||||
bool demoMode = false;
|
||||
if (argc == 2)
|
||||
demoMode = true;
|
||||
|
||||
SitMap* sitMap= new SitMap(demoMode);
|
||||
|
||||
sitMap->setMinimumWidth(200);
|
||||
sitMap->setMinimumHeight(200);
|
||||
|
||||
sitMap->resize(800, 600);
|
||||
|
||||
sitMap->show();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int ret = app.exec();
|
||||
|
||||
delete sitMap;
|
||||
|
||||
SHUTDOWN_LOG(app.baseLogger());
|
||||
|
||||
return ret;
|
||||
}
|
||||
Reference in new issue
Block a user