Skip to content

Commit 6efe1eb

Browse files
committed
Dropping on mssql schema items should import to that schema (fix #8327)
1 parent 4a1bf6d commit 6efe1eb

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

src/providers/mssql/qgsmssqldataitems.cpp

+25-2
Original file line numberDiff line numberDiff line change
@@ -338,12 +338,16 @@ void QgsMssqlConnectionItem::deleteConnection()
338338
}
339339

340340
bool QgsMssqlConnectionItem::handleDrop( const QMimeData * data, Qt::DropAction )
341+
{
342+
return handleDrop( data, QString() );
343+
}
344+
345+
bool QgsMssqlConnectionItem::handleDrop( const QMimeData* data, const QString& toSchema )
341346
{
342347
if ( !QgsMimeDataUtils::isUriList( data ) )
343348
return false;
344349

345350
// TODO: probably should show a GUI with settings etc
346-
347351
qApp->setOverrideCursor( Qt::WaitCursor );
348352

349353
QStringList importResults;
@@ -363,7 +367,17 @@ bool QgsMssqlConnectionItem::handleDrop( const QMimeData * data, Qt::DropAction
363367

364368
if ( srcLayer->isValid() )
365369
{
366-
QString uri = connInfo() + " table=" + u.name + " (geom)";
370+
QString tableName;
371+
if ( !toSchema.isEmpty() )
372+
{
373+
tableName = QString( "\"%1\".\"%2\"" ).arg( toSchema, u.name );
374+
}
375+
else
376+
{
377+
tableName = u.name;
378+
}
379+
380+
QString uri = connInfo() + " table=" + tableName + " (geom)";
367381

368382
QgsVectorLayerImport::ImportError err;
369383
QString importError;
@@ -474,6 +488,15 @@ void QgsMssqlSchemaItem::addLayers( QgsDataItem* newLayers )
474488
}
475489
}
476490

491+
bool QgsMssqlSchemaItem::handleDrop( const QMimeData* data, Qt::DropAction )
492+
{
493+
QgsMssqlConnectionItem *conn = qobject_cast<QgsMssqlConnectionItem *>( parent() );
494+
if ( !conn )
495+
return 0;
496+
497+
return conn->handleDrop( data, mName );
498+
}
499+
477500
QgsMssqlLayerItem* QgsMssqlSchemaItem::addLayer( QgsMssqlLayerProperty layerProperty, bool refresh )
478501
{
479502
QGis::WkbType wkbType = QgsMssqlTableModel::wkbTypeFromMssql( layerProperty.type );

src/providers/mssql/qgsmssqldataitems.h

+5
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ class QgsMssqlConnectionItem : public QgsDataCollectionItem
6060

6161
virtual bool acceptDrop() override { return true; }
6262
virtual bool handleDrop( const QMimeData * data, Qt::DropAction action ) override;
63+
64+
bool handleDrop( const QMimeData * data, const QString& toSchema );
65+
6366
void refresh() override;
6467

6568
QString connInfo() const { return mConnInfo; }
@@ -100,6 +103,8 @@ class QgsMssqlSchemaItem : public QgsDataCollectionItem
100103
QgsMssqlLayerItem* addLayer( QgsMssqlLayerProperty layerProperty, bool refresh );
101104
void refresh() override {} // do not refresh directly
102105
void addLayers( QgsDataItem* newLayers );
106+
virtual bool acceptDrop() override { return true; }
107+
virtual bool handleDrop( const QMimeData * data, Qt::DropAction action ) override;
103108
};
104109

105110
class QgsMssqlLayerItem : public QgsLayerItem

0 commit comments

Comments
 (0)