@@ -728,62 +728,7 @@ void QgsComposerLegendWidget::on_mEditPushButton_clicked()
728
728
}
729
729
730
730
QModelIndex idx = mItemTreeView ->selectionModel ()->currentIndex ();
731
- QgsLayerTreeModel* model = mItemTreeView ->layerTreeModel ();
732
- QgsLayerTreeNode* currentNode = model->index2node ( idx );
733
- QgsLayerTreeModelLegendNode* legendNode = model->index2legendNode ( idx );
734
- QString currentText;
735
-
736
- if ( QgsLayerTree::isGroup ( currentNode ) )
737
- {
738
- currentText = QgsLayerTree::toGroup ( currentNode )->name ();
739
- }
740
- else if ( QgsLayerTree::isLayer ( currentNode ) )
741
- {
742
- currentText = QgsLayerTree::toLayer ( currentNode )->layerName ();
743
- QVariant v = currentNode->customProperty ( " legend/title-label" );
744
- if ( !v.isNull () )
745
- currentText = v.toString ();
746
- }
747
- else if ( legendNode )
748
- {
749
- currentText = legendNode->data ( Qt::EditRole ).toString ();
750
- }
751
-
752
- bool ok;
753
- QString newText = QInputDialog::getText ( this , tr ( " Legend item properties" ), tr ( " Item text" ),
754
- QLineEdit::Normal, currentText, &ok );
755
- if ( !ok || newText == currentText )
756
- return ;
757
-
758
- mLegend ->beginCommand ( tr ( " Legend item edited" ) );
759
-
760
- if ( QgsLayerTree::isGroup ( currentNode ) )
761
- {
762
- QgsLayerTree::toGroup ( currentNode )->setName ( newText );
763
- }
764
- else if ( QgsLayerTree::isLayer ( currentNode ) )
765
- {
766
- currentNode->setCustomProperty ( " legend/title-label" , newText );
767
-
768
- // force update of label of the legend node with embedded icon (a bit clumsy i know)
769
- QList<QgsLayerTreeModelLegendNode*> nodes = model->layerLegendNodes ( QgsLayerTree::toLayer ( currentNode ) );
770
- if ( nodes.count () == 1 && nodes[0 ]->isEmbeddedInParent () )
771
- nodes[0 ]->setUserLabel ( QString () );
772
- }
773
- else if ( legendNode )
774
- {
775
- QList<int > order = QgsMapLayerLegendUtils::legendNodeOrder ( legendNode->layerNode () );
776
- // find unfiltered row number
777
- QList<QgsLayerTreeModelLegendNode*> layerLegendNodes = model->layerOriginalLegendNodes ( legendNode->layerNode () );
778
- int unfilteredRowIndex = layerLegendNodes.indexOf ( legendNode );
779
- int originalIndex = ( unfilteredRowIndex >= 0 && unfilteredRowIndex < order.count () ? order[unfilteredRowIndex] : -1 );
780
- QgsMapLayerLegendUtils::setLegendNodeUserLabel ( legendNode->layerNode (), originalIndex, newText );
781
- model->refreshLayerLegend ( legendNode->layerNode () );
782
- }
783
-
784
- mLegend ->adjustBoxSize ();
785
- mLegend ->updateItem ();
786
- mLegend ->endCommand ();
731
+ on_mItemTreeView_doubleClicked ( idx );
787
732
}
788
733
789
734
void QgsComposerLegendWidget::resetLayerNodeToDefaults ()
@@ -1056,6 +1001,71 @@ void QgsComposerLegendWidget::updateFilterLegendByAtlasButton()
1056
1001
mFilterLegendByAtlasCheckBox ->setEnabled ( atlas.enabled () && atlas.coverageLayer () && atlas.coverageLayer ()->geometryType () == QGis::Polygon );
1057
1002
}
1058
1003
1004
+ void QgsComposerLegendWidget::on_mItemTreeView_doubleClicked ( const QModelIndex &idx )
1005
+ {
1006
+ if ( !mLegend || !idx.isValid () )
1007
+ {
1008
+ return ;
1009
+ }
1010
+
1011
+ QgsLayerTreeModel* model = mItemTreeView ->layerTreeModel ();
1012
+ QgsLayerTreeNode* currentNode = model->index2node ( idx );
1013
+ QgsLayerTreeModelLegendNode* legendNode = model->index2legendNode ( idx );
1014
+ QString currentText;
1015
+
1016
+ if ( QgsLayerTree::isGroup ( currentNode ) )
1017
+ {
1018
+ currentText = QgsLayerTree::toGroup ( currentNode )->name ();
1019
+ }
1020
+ else if ( QgsLayerTree::isLayer ( currentNode ) )
1021
+ {
1022
+ currentText = QgsLayerTree::toLayer ( currentNode )->layerName ();
1023
+ QVariant v = currentNode->customProperty ( " legend/title-label" );
1024
+ if ( !v.isNull () )
1025
+ currentText = v.toString ();
1026
+ }
1027
+ else if ( legendNode )
1028
+ {
1029
+ currentText = legendNode->data ( Qt::EditRole ).toString ();
1030
+ }
1031
+
1032
+ bool ok;
1033
+ QString newText = QInputDialog::getText ( this , tr ( " Legend item properties" ), tr ( " Item text" ),
1034
+ QLineEdit::Normal, currentText, &ok );
1035
+ if ( !ok || newText == currentText )
1036
+ return ;
1037
+
1038
+ mLegend ->beginCommand ( tr ( " Legend item edited" ) );
1039
+
1040
+ if ( QgsLayerTree::isGroup ( currentNode ) )
1041
+ {
1042
+ QgsLayerTree::toGroup ( currentNode )->setName ( newText );
1043
+ }
1044
+ else if ( QgsLayerTree::isLayer ( currentNode ) )
1045
+ {
1046
+ currentNode->setCustomProperty ( " legend/title-label" , newText );
1047
+
1048
+ // force update of label of the legend node with embedded icon (a bit clumsy i know)
1049
+ QList<QgsLayerTreeModelLegendNode*> nodes = model->layerLegendNodes ( QgsLayerTree::toLayer ( currentNode ) );
1050
+ if ( nodes.count () == 1 && nodes[0 ]->isEmbeddedInParent () )
1051
+ nodes[0 ]->setUserLabel ( QString () );
1052
+ }
1053
+ else if ( legendNode )
1054
+ {
1055
+ QList<int > order = QgsMapLayerLegendUtils::legendNodeOrder ( legendNode->layerNode () );
1056
+ // find unfiltered row number
1057
+ QList<QgsLayerTreeModelLegendNode*> layerLegendNodes = model->layerOriginalLegendNodes ( legendNode->layerNode () );
1058
+ int unfilteredRowIndex = layerLegendNodes.indexOf ( legendNode );
1059
+ int originalIndex = ( unfilteredRowIndex >= 0 && unfilteredRowIndex < order.count () ? order[unfilteredRowIndex] : -1 );
1060
+ QgsMapLayerLegendUtils::setLegendNodeUserLabel ( legendNode->layerNode (), originalIndex, newText );
1061
+ model->refreshLayerLegend ( legendNode->layerNode () );
1062
+ }
1063
+
1064
+ mLegend ->adjustBoxSize ();
1065
+ mLegend ->updateItem ();
1066
+ mLegend ->endCommand ();
1067
+ }
1068
+
1059
1069
1060
1070
//
1061
1071
// QgsComposerLegendMenuProvider
0 commit comments