diff --git a/src/app/qgsattributesformproperties.cpp b/src/app/qgsattributesformproperties.cpp index 90533ab8472..a7e7ee31b97 100644 --- a/src/app/qgsattributesformproperties.cpp +++ b/src/app/qgsattributesformproperties.cpp @@ -142,7 +142,7 @@ void QgsAttributesFormProperties::initAvailableWidgetsTree() DnDTreeItemData itemData = DnDTreeItemData( DnDTreeItemData::QmlWidget, QStringLiteral( "QmlWidget" ), tr( "QML Widget" ) ); itemData.setShowLabel( true ); - QTreeWidgetItem *item = mAvailableWidgetsTree->addItem( catitem, itemData ); + mAvailableWidgetsTree->addItem( catitem, itemData ); catitem ->setExpanded( true ); } @@ -851,6 +851,10 @@ QTreeWidgetItem *DnDTree::addItem( QTreeWidgetItem *parent, QgsAttributesFormPro case QgsAttributesFormProperties::DnDTreeItemData::Container: newItem->setIcon( 0, QgsApplication::getThemeIcon( "/mContainerIcon.svg" ) ); break; + + case QgsAttributesFormProperties::DnDTreeItemData::QmlWidget: + newItem->setIcon( 0, QgsApplication::getThemeIcon( "/mQmlWidgetIcon.svg" ) ); + break; } } newItem->setData( 0, QgsAttributesFormProperties::DnDTreeRole, data ); @@ -914,16 +918,23 @@ bool DnDTree::dropMimeData( QTreeWidgetItem *parent, int index, const QMimeData { stream >> itemElement; + QTreeWidgetItem *newItem; + if ( parent ) { - addItem( parent, itemElement, index ); + newItem = addItem( parent, itemElement, index ); bDropSuccessful = true; } else { - addItem( invisibleRootItem(), itemElement, index ); + newItem = addItem( invisibleRootItem(), itemElement, index ); bDropSuccessful = true; } + + if ( itemElement.type() == QgsAttributesFormProperties::DnDTreeItemData::QmlWidget ) + { + onItemDoubleClicked( newItem, 0 ); + } } } @@ -1094,8 +1105,8 @@ void DnDTree::onItemDoubleClicked( QTreeWidgetItem *item, int column ) case QgsAttributesFormProperties::DnDTreeItemData::QmlWidget: { QDialog dlg; + dlg.resize( 600, 400 ); dlg.setWindowTitle( tr( "Configure QML Widget" ) ); - dlg.setBaseSize( 600, 400 ); QFormLayout *layout = new QFormLayout() ; dlg.setLayout( layout ); layout->addWidget( baseWidget ); diff --git a/src/app/qgsqmlwidgetconfig.ui b/src/app/qgsqmlwidgetconfig.ui new file mode 100644 index 00000000000..18d31ab9155 --- /dev/null +++ b/src/app/qgsqmlwidgetconfig.ui @@ -0,0 +1,71 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="geometry" > + <rect> + <x>30</x> + <y>240</y> + <width>341</width> + <height>32</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>