26 #include "../../../widgets/layer/explorer/LayerItemView.h" 31 #include "../../../../dataaccess/datasource/DataSource.h" 32 #include "../../../../dataaccess/datasource/DataSourceFactory.h" 33 #include "../../../../maptools/Utils.h" 34 #include "../../../widgets/canvas/MultiThreadMapDisplay.h" 35 #include "../../../af/events/MapEvents.h" 38 #include <QDragEnterEvent> 45 std::string connInfo (
"file://" + fileName);
55 std::vector<std::string> dsets = ds->getDataSetNames();
57 if (dsets.size() == 0)
60 dsType = ds->getDataSetType(dsets[0]);
62 if (dsType.get() ==
nullptr)
65 catch (
const std::exception&)
89 if (e->type() == QEvent::DragEnter)
91 QDragEnterEvent* dragEvent =
dynamic_cast<QDragEnterEvent*
>(e);
92 dragEvent->setDropAction(Qt::DropAction::LinkAction);
94 const QMimeData* mimeData = dragEvent->mimeData();
96 QList<QUrl> urlList = mimeData->urls();
101 for (
int i = 0; i < urlList.size(); ++i)
103 std::string fileName = urlList.at(i).toLocalFile().toUtf8().constData();
119 return QObject::eventFilter(watched, e);
122 else if (e->type() == QEvent::Drop &&
m_isValid)
124 QDropEvent* dropEvent =
dynamic_cast<QDropEvent*
>(e);
126 const QMimeData* mimeData = dropEvent->mimeData();
128 QStringList pathList;
129 QList<QUrl> urlList = mimeData->urls();
132 for (
int i = 0; i < urlList.size(); ++i)
134 pathList.append(urlList.at(i).toLocalFile());
137 std::list<te::map::AbstractLayerPtr> layers;
145 std::list<te::map::AbstractLayerPtr> curList = mtmd->
getLayerList();
146 std::list<te::map::AbstractLayerPtr>::const_iterator it = layers.begin();
148 while (it != layers.end())
152 curList.push_back(*it);
172 return QObject::eventFilter(watched, e);
183 std::pair<int, std::string> srid(layer->getSRID(),
"EPSG");
189 std::list<te::map::AbstractLayerPtr>::const_iterator it;
191 for (it = layers.begin(); it != layers.end(); ++it)
198 mapDisplay->
setSRID(layer->getSRID(),
false);
200 std::pair<int, std::string> srid(layer->getSRID(),
"EPSG");
static std::unique_ptr< DataSource > make(const std::string &driver, const te::core::URI &connInfo)
void triggered(te::qt::af::evt::Event *e)
boost::shared_ptr< DataSetType > DataSetTypePtr
#define TE_UNKNOWN_SRS
A numeric value to represent a unknown SRS identification in TerraLib.
TEMAPEXPORT te::gm::Envelope GetExtent(const std::list< te::map::AbstractLayerPtr > &layers, int srid, bool onlyVisibles)
It calculates the extent of the given layers in the given SRID.
void configSRS(const std::list< te::map::AbstractLayerPtr > &layers, te::qt::widgets::MapDisplay *mapDisplay)
virtual std::list< AbstractLayerPtr > getLayerList() const
This event signals that the srid of the map display changed.
static te::dt::Date ds(2010, 01, 01)
void CreateLayers(QStringList fileNames, std::list< te::map::AbstractLayerPtr > &layers)
An Envelope defines a 2D rectangular region.
bool IsSupported(const std::string &fileName)
virtual int getSRID() const
It return the Spatial Reference System used by the Map Display.
~GeoFileDragAndDropHandler()
virtual bool eventFilter(QObject *watched, QEvent *e)
GeoFileDragAndDropHandler(QObject *parent=0)
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr