21 #include <QTableWidgetItem> 22 #include <QPushButton> 26 QWidget* parent, Qt::WindowFlags fl )
27 : QDialog( parent, fl ), mName( name )
33 setWindowTitle(
tr(
"Select vector layers to add..." ) );
34 layersTable->setHeaderLabels( QStringList() <<
tr(
"Layer ID" ) <<
tr(
"Layer name" )
35 <<
tr(
"Number of features" ) <<
tr(
"Geometry type" ) );
39 setWindowTitle(
tr(
"Select raster layers to add..." ) );
40 layersTable->setHeaderLabels( QStringList() <<
tr(
"Layer ID" ) <<
tr(
"Layer name" ) );
44 setWindowTitle(
tr(
"Select layers to add..." ) );
45 layersTable->setHeaderLabels( QStringList() <<
tr(
"Layer ID" ) <<
tr(
"Layer name" )
50 QPushButton* button =
new QPushButton(
tr(
"Select All" ) );
51 buttonBox->addButton( button, QDialogButtonBox::ActionRole );
52 connect( button, SIGNAL( pressed() ), layersTable, SLOT( selectAll() ) );
56 restoreGeometry( settings.value(
"/Windows/" +
mName +
"SubLayers/geometry" ).toByteArray() );
62 settings.setValue(
"/Windows/" +
mName +
"SubLayers/geometry", saveGeometry() );
63 settings.setValue(
"/Windows/" +
mName +
"SubLayers/headerState",
64 layersTable->header()->saveState() );
70 for (
int i = 0; i < layersTable->selectedItems().size(); i++ )
75 QString name = layersTable->selectedItems().at( i )->text( 1 );
77 for (
int j = 0; j < layersTable->topLevelItemCount(); j++ )
79 if ( layersTable->topLevelItem( j )->text( 1 ) == name )
87 name +=
":" + layersTable->selectedItems().at( i )->text( 3 );
102 for (
int i = 0; i < layersTable->selectedItems().size(); i++ )
104 list << layersTable->selectedItems().at( i )->text( 0 ).toInt();
111 foreach ( QString item, theList )
113 QStringList elements = item.split( delim );
114 while ( elements.size() > 4 )
116 elements[1] += delim + elements[2];
117 elements.removeAt( 2 );
119 layersTable->addTopLevelItem(
new QTreeWidgetItem( elements ) );
124 QByteArray ba = settings.value(
"/Windows/" +
mName +
"SubLayers/headerState" ).toByteArray();
127 layersTable->header()->restoreState( ba );
131 for (
int i = 0; i < layersTable->columnCount(); i++ )
132 layersTable->resizeColumnToContents( i );
133 layersTable->setColumnWidth( 1, layersTable->columnWidth( 1 ) + 10 );
143 QString promptLayers = settings.value(
"/qgis/promptForSublayers", 1 ).toString();
146 if ( layersTable->topLevelItemCount() == 0 )
147 return QDialog::Rejected;
150 if ( promptLayers ==
"no" )
151 return QDialog::Rejected;
152 else if ( promptLayers ==
"all" )
154 layersTable->selectAll();
155 return QDialog::Accepted;
159 if ( layersTable->topLevelItemCount() == 1 )
161 layersTable->selectAll();
162 return QDialog::Accepted;
168 bool overrideCursor = ( QApplication::overrideCursor() != 0 );
169 if ( overrideCursor )
171 cursor = QCursor( * QApplication::overrideCursor() );
172 QApplication::restoreOverrideCursor();
174 int ret = QDialog::exec();
175 if ( overrideCursor )
176 QApplication::setOverrideCursor( cursor );
QStringList selectionNames()
QList< int > selectionIndexes()
QgsSublayersDialog(ProviderType providerType, QString name, QWidget *parent=0, Qt::WindowFlags fl=0)
void populateLayerTable(QStringList theList, QString delim=":")