@@ -275,6 +275,11 @@ QgsIdentifyResultsDialog::QgsIdentifyResultsDialog( QgsMapCanvas *canvas, QWidge
275275 {
276276 lstResults->setColumnWidth ( 0 , width );
277277 }
278+ width = mySettings.value ( " /Windows/Identify/columnWidthTable" , " 0" ).toInt ();
279+ if ( width > 0 )
280+ {
281+ tblResults->setColumnWidth ( 0 , width );
282+ }
278283
279284 // retrieve mode before on_cmbIdentifyMode_currentIndexChanged resets it on addItem
280285 int identifyMode = mySettings.value ( " /Map/identifyMode" , 0 ).toInt ();
@@ -469,6 +474,15 @@ void QgsIdentifyResultsDialog::addFeature( QgsVectorLayer *vlayer, const QgsFeat
469474
470475 // table
471476 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+
472486 for ( int i = 0 ; i < attrs.count (); ++i )
473487 {
474488 if ( i >= fields.count () )
@@ -501,6 +515,7 @@ void QgsIdentifyResultsDialog::addFeature( QgsVectorLayer *vlayer, const QgsFeat
501515
502516 QTableWidgetItem *item = new QTableWidgetItem ( vlayer->name () );
503517 item->setData ( Qt::UserRole, QVariant::fromValue ( qobject_cast<QObject *>( vlayer ) ) );
518+ item->setData ( Qt::UserRole + 1 , vlayer->id () );
504519 tblResults->setItem ( j, 0 , item );
505520
506521 item = new QTableWidgetItem ( FID_TO_STRING ( f.id () ) );
@@ -522,6 +537,15 @@ void QgsIdentifyResultsDialog::addFeature( QgsVectorLayer *vlayer, const QgsFeat
522537 item->setData ( Qt::DisplayRole, value2 );
523538 tblResults->setItem ( j, 3 , item );
524539
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 );
525549 j++;
526550 }
527551 tblResults->resizeColumnToContents ( 1 );
@@ -652,18 +676,31 @@ void QgsIdentifyResultsDialog::addFeature( QgsRasterLayer *layer,
652676 }
653677
654678 // table
679+ int i = 0 ;
655680 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+ }
656689 tblResults->setRowCount ( j + attributes.count () );
657- int i = 1 ;
690+
658691 for ( QMap<QString, QString>::const_iterator it = attributes.begin (); it != attributes.end (); ++it )
659692 {
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 () ) );
661694 QTableWidgetItem *item = new QTableWidgetItem ( layer->name () );
662695 item->setData ( Qt::UserRole, QVariant::fromValue ( qobject_cast<QObject *>( layer ) ) );
696+ item->setData ( Qt::UserRole + 1 , layer->id () );
663697 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 ) ) );
665699 tblResults->setItem ( j, 2 , new QTableWidgetItem ( it.key () ) );
666700 tblResults->setItem ( j, 3 , new QTableWidgetItem ( it.value () ) );
701+
702+ tblResults->resizeRowToContents ( j );
703+
667704 j++; i++;
668705 }
669706 tblResults->resizeColumnToContents ( 1 );
@@ -896,6 +933,16 @@ void QgsIdentifyResultsDialog::contextMenuEvent( QContextMenuEvent* event )
896933 mActionPopup ->popup ( event->globalPos () );
897934}
898935
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+
899946void QgsIdentifyResultsDialog::setColumnText ( int column, const QString & label )
900947{
901948 QTreeWidgetItem* header = lstResults->headerItem ();
0 commit comments