[browser] Provide mime data for directory items

Allows them to be dragged and dropped to file widgets
This commit is contained in:
Nyall Dawson 2019-02-08 17:45:09 +10:00
parent 2857f585ae
commit 35ddb3b630
3 changed files with 14 additions and 0 deletions

View File

@ -599,6 +599,9 @@ Constructor.
virtual QWidget *paramWidget() /Factory/;
virtual bool hasDragEnabled() const;
virtual QgsMimeDataUtils::Uri mimeUri() const;
static bool hiddenPath( const QString &path );
%Docstring

View File

@ -1021,6 +1021,15 @@ QWidget *QgsDirectoryItem::paramWidget()
return new QgsDirectoryParamWidget( mPath );
}
QgsMimeDataUtils::Uri QgsDirectoryItem::mimeUri() const
{
QgsMimeDataUtils::Uri u;
u.layerType = QStringLiteral( "directory" );
u.name = mName;
u.uri = mDirPath;
return u;
}
QgsDirectoryParamWidget::QgsDirectoryParamWidget( const QString &path, QWidget *parent )
: QTreeWidget( parent )
{

View File

@ -611,6 +611,8 @@ class CORE_EXPORT QgsDirectoryItem : public QgsDataCollectionItem
bool equal( const QgsDataItem *other ) override;
QIcon icon() override;
QWidget *paramWidget() override SIP_FACTORY;
bool hasDragEnabled() const override { return true; }
QgsMimeDataUtils::Uri mimeUri() const override;
//! Check if the given path is hidden from the browser model
static bool hiddenPath( const QString &path );