@@ -275,6 +275,11 @@ QgsIdentifyResultsDialog::QgsIdentifyResultsDialog( QgsMapCanvas *canvas, QWidge
275
275
{
276
276
lstResults->setColumnWidth ( 0 , width );
277
277
}
278
+ width = mySettings.value ( " /Windows/Identify/columnWidthTable" , " 0" ).toInt ();
279
+ if ( width > 0 )
280
+ {
281
+ tblResults->setColumnWidth ( 0 , width );
282
+ }
278
283
279
284
// retrieve mode before on_cmbIdentifyMode_currentIndexChanged resets it on addItem
280
285
int identifyMode = mySettings.value ( " /Map/identifyMode" , 0 ).toInt ();
@@ -469,6 +474,15 @@ void QgsIdentifyResultsDialog::addFeature( QgsVectorLayer *vlayer, const QgsFeat
469
474
470
475
// table
471
476
int j = tblResults->rowCount ();
477
+ // insert empty row to separate layers
478
+ if ( j > 0 && tblResults->item ( j - 1 , 0 ) &&
479
+ tblResults->item ( j - 1 , 0 )->data ( Qt::UserRole + 1 ).toString () != vlayer->id () )
480
+ {
481
+ tblResults->setRowCount ( j + 1 );
482
+ tblResults->setRowHeight ( j, 2 );
483
+ j++;
484
+ }
485
+
472
486
for ( int i = 0 ; i < attrs.count (); ++i )
473
487
{
474
488
if ( i >= fields.count () )
@@ -501,6 +515,7 @@ void QgsIdentifyResultsDialog::addFeature( QgsVectorLayer *vlayer, const QgsFeat
501
515
502
516
QTableWidgetItem *item = new QTableWidgetItem ( vlayer->name () );
503
517
item->setData ( Qt::UserRole, QVariant::fromValue ( qobject_cast<QObject *>( vlayer ) ) );
518
+ item->setData ( Qt::UserRole + 1 , vlayer->id () );
504
519
tblResults->setItem ( j, 0 , item );
505
520
506
521
item = new QTableWidgetItem ( FID_TO_STRING ( f.id () ) );
@@ -522,6 +537,15 @@ void QgsIdentifyResultsDialog::addFeature( QgsVectorLayer *vlayer, const QgsFeat
522
537
item->setData ( Qt::DisplayRole, value2 );
523
538
tblResults->setItem ( j, 3 , item );
524
539
540
+ // highlight first item
541
+ // if ( i==0 )
542
+ // {
543
+ // QBrush b = tblResults->palette().brush( QPalette::AlternateBase );
544
+ // for ( int k = 0; k <= 3; k++)
545
+ // tblResults->item( j, k )->setBackground( b );
546
+ // }
547
+
548
+ tblResults->resizeRowToContents ( j );
525
549
j++;
526
550
}
527
551
tblResults->resizeColumnToContents ( 1 );
@@ -652,18 +676,31 @@ void QgsIdentifyResultsDialog::addFeature( QgsRasterLayer *layer,
652
676
}
653
677
654
678
// table
679
+ int i = 0 ;
655
680
int j = tblResults->rowCount ();
681
+ // insert empty row to separate layers
682
+ if ( j > 0 && tblResults->item ( j - 1 , 0 ) &&
683
+ tblResults->item ( j - 1 , 0 )->data ( Qt::UserRole + 1 ).toString () != layer->id () )
684
+ {
685
+ j++;
686
+ tblResults->setRowCount ( j + 1 );
687
+ tblResults->setRowHeight ( j - 1 , 2 );
688
+ }
656
689
tblResults->setRowCount ( j + attributes.count () );
657
- int i = 1 ;
690
+
658
691
for ( QMap<QString, QString>::const_iterator it = attributes.begin (); it != attributes.end (); ++it )
659
692
{
660
- QgsDebugMsg ( QString ( " adding item #%1 / %1 / %2 / %3 " ).arg ( j ).arg ( layer->name () ).arg ( it.key () ).arg ( it.value () ) );
693
+ QgsDebugMsg ( QString ( " adding item #%1 / %2 / %3 / %4 " ).arg ( j ).arg ( layer->name () ).arg ( it.key () ).arg ( it.value () ) );
661
694
QTableWidgetItem *item = new QTableWidgetItem ( layer->name () );
662
695
item->setData ( Qt::UserRole, QVariant::fromValue ( qobject_cast<QObject *>( layer ) ) );
696
+ item->setData ( Qt::UserRole + 1 , layer->id () );
663
697
tblResults->setItem ( j, 0 , item );
664
- tblResults->setItem ( j, 1 , new QTableWidgetItem ( QString::number ( i ) ) );
698
+ tblResults->setItem ( j, 1 , new QTableWidgetItem ( QString::number ( i + 1 ) ) );
665
699
tblResults->setItem ( j, 2 , new QTableWidgetItem ( it.key () ) );
666
700
tblResults->setItem ( j, 3 , new QTableWidgetItem ( it.value () ) );
701
+
702
+ tblResults->resizeRowToContents ( j );
703
+
667
704
j++; i++;
668
705
}
669
706
tblResults->resizeColumnToContents ( 1 );
@@ -896,6 +933,16 @@ void QgsIdentifyResultsDialog::contextMenuEvent( QContextMenuEvent* event )
896
933
mActionPopup ->popup ( event->globalPos () );
897
934
}
898
935
936
+ // Save the current window location (store in ~/.qt/qgisrc)
937
+ void QgsIdentifyResultsDialog::saveWindowLocation ()
938
+ {
939
+ QSettings settings;
940
+ settings.setValue ( " /Windows/Identify/geometry" , saveGeometry () );
941
+ // first column width
942
+ settings.setValue ( " /Windows/Identify/columnWidth" , lstResults->columnWidth ( 0 ) );
943
+ settings.setValue ( " /Windows/Identify/columnWidthTable" , tblResults->columnWidth ( 0 ) );
944
+ }
945
+
899
946
void QgsIdentifyResultsDialog::setColumnText ( int column, const QString & label )
900
947
{
901
948
QTreeWidgetItem* header = lstResults->headerItem ();
0 commit comments