@@ -710,62 +710,7 @@ void QgsComposerLegendWidget::on_mEditPushButton_clicked()
710
710
}
711
711
712
712
QModelIndex idx = mItemTreeView ->selectionModel ()->currentIndex ();
713
- QgsLayerTreeModel* model = mItemTreeView ->layerTreeModel ();
714
- QgsLayerTreeNode* currentNode = model->index2node ( idx );
715
- QgsLayerTreeModelLegendNode* legendNode = model->index2legendNode ( idx );
716
- QString currentText;
717
-
718
- if ( QgsLayerTree::isGroup ( currentNode ) )
719
- {
720
- currentText = QgsLayerTree::toGroup ( currentNode )->name ();
721
- }
722
- else if ( QgsLayerTree::isLayer ( currentNode ) )
723
- {
724
- currentText = QgsLayerTree::toLayer ( currentNode )->layerName ();
725
- QVariant v = currentNode->customProperty ( " legend/title-label" );
726
- if ( !v.isNull () )
727
- currentText = v.toString ();
728
- }
729
- else if ( legendNode )
730
- {
731
- currentText = legendNode->data ( Qt::EditRole ).toString ();
732
- }
733
-
734
- bool ok;
735
- QString newText = QInputDialog::getText ( this , tr ( " Legend item properties" ), tr ( " Item text" ),
736
- QLineEdit::Normal, currentText, &ok );
737
- if ( !ok || newText == currentText )
738
- return ;
739
-
740
- mLegend ->beginCommand ( tr ( " Legend item edited" ) );
741
-
742
- if ( QgsLayerTree::isGroup ( currentNode ) )
743
- {
744
- QgsLayerTree::toGroup ( currentNode )->setName ( newText );
745
- }
746
- else if ( QgsLayerTree::isLayer ( currentNode ) )
747
- {
748
- currentNode->setCustomProperty ( " legend/title-label" , newText );
749
-
750
- // force update of label of the legend node with embedded icon (a bit clumsy i know)
751
- QList<QgsLayerTreeModelLegendNode*> nodes = model->layerLegendNodes ( QgsLayerTree::toLayer ( currentNode ) );
752
- if ( nodes.count () == 1 && nodes[0 ]->isEmbeddedInParent () )
753
- nodes[0 ]->setUserLabel ( QString () );
754
- }
755
- else if ( legendNode )
756
- {
757
- QList<int > order = QgsMapLayerLegendUtils::legendNodeOrder ( legendNode->layerNode () );
758
- // find unfiltered row number
759
- QList<QgsLayerTreeModelLegendNode*> layerLegendNodes = model->layerOriginalLegendNodes ( legendNode->layerNode () );
760
- int unfilteredRowIndex = layerLegendNodes.indexOf ( legendNode );
761
- int originalIndex = ( unfilteredRowIndex >= 0 && unfilteredRowIndex < order.count () ? order[unfilteredRowIndex] : -1 );
762
- QgsMapLayerLegendUtils::setLegendNodeUserLabel ( legendNode->layerNode (), originalIndex, newText );
763
- model->refreshLayerLegend ( legendNode->layerNode () );
764
- }
765
-
766
- mLegend ->adjustBoxSize ();
767
- mLegend ->updateItem ();
768
- mLegend ->endCommand ();
713
+ on_mItemTreeView_doubleClicked ( idx );
769
714
}
770
715
771
716
void QgsComposerLegendWidget::resetLayerNodeToDefaults ()
@@ -995,6 +940,71 @@ void QgsComposerLegendWidget::updateFilterLegendByAtlasButton()
995
940
mFilterLegendByAtlasCheckBox ->setEnabled ( atlas.enabled () && atlas.coverageLayer () && atlas.coverageLayer ()->geometryType () == QGis::Polygon );
996
941
}
997
942
943
+ void QgsComposerLegendWidget::on_mItemTreeView_doubleClicked ( const QModelIndex &idx )
944
+ {
945
+ if ( !mLegend || !idx.isValid () )
946
+ {
947
+ return ;
948
+ }
949
+
950
+ QgsLayerTreeModel* model = mItemTreeView ->layerTreeModel ();
951
+ QgsLayerTreeNode* currentNode = model->index2node ( idx );
952
+ QgsLayerTreeModelLegendNode* legendNode = model->index2legendNode ( idx );
953
+ QString currentText;
954
+
955
+ if ( QgsLayerTree::isGroup ( currentNode ) )
956
+ {
957
+ currentText = QgsLayerTree::toGroup ( currentNode )->name ();
958
+ }
959
+ else if ( QgsLayerTree::isLayer ( currentNode ) )
960
+ {
961
+ currentText = QgsLayerTree::toLayer ( currentNode )->layerName ();
962
+ QVariant v = currentNode->customProperty ( " legend/title-label" );
963
+ if ( !v.isNull () )
964
+ currentText = v.toString ();
965
+ }
966
+ else if ( legendNode )
967
+ {
968
+ currentText = legendNode->data ( Qt::EditRole ).toString ();
969
+ }
970
+
971
+ bool ok;
972
+ QString newText = QInputDialog::getText ( this , tr ( " Legend item properties" ), tr ( " Item text" ),
973
+ QLineEdit::Normal, currentText, &ok );
974
+ if ( !ok || newText == currentText )
975
+ return ;
976
+
977
+ mLegend ->beginCommand ( tr ( " Legend item edited" ) );
978
+
979
+ if ( QgsLayerTree::isGroup ( currentNode ) )
980
+ {
981
+ QgsLayerTree::toGroup ( currentNode )->setName ( newText );
982
+ }
983
+ else if ( QgsLayerTree::isLayer ( currentNode ) )
984
+ {
985
+ currentNode->setCustomProperty ( " legend/title-label" , newText );
986
+
987
+ // force update of label of the legend node with embedded icon (a bit clumsy i know)
988
+ QList<QgsLayerTreeModelLegendNode*> nodes = model->layerLegendNodes ( QgsLayerTree::toLayer ( currentNode ) );
989
+ if ( nodes.count () == 1 && nodes[0 ]->isEmbeddedInParent () )
990
+ nodes[0 ]->setUserLabel ( QString () );
991
+ }
992
+ else if ( legendNode )
993
+ {
994
+ QList<int > order = QgsMapLayerLegendUtils::legendNodeOrder ( legendNode->layerNode () );
995
+ // find unfiltered row number
996
+ QList<QgsLayerTreeModelLegendNode*> layerLegendNodes = model->layerOriginalLegendNodes ( legendNode->layerNode () );
997
+ int unfilteredRowIndex = layerLegendNodes.indexOf ( legendNode );
998
+ int originalIndex = ( unfilteredRowIndex >= 0 && unfilteredRowIndex < order.count () ? order[unfilteredRowIndex] : -1 );
999
+ QgsMapLayerLegendUtils::setLegendNodeUserLabel ( legendNode->layerNode (), originalIndex, newText );
1000
+ model->refreshLayerLegend ( legendNode->layerNode () );
1001
+ }
1002
+
1003
+ mLegend ->adjustBoxSize ();
1004
+ mLegend ->updateItem ();
1005
+ mLegend ->endCommand ();
1006
+ }
1007
+
998
1008
999
1009
//
1000
1010
// QgsComposerLegendMenuProvider
0 commit comments