void ListView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { QListView::selectionChanged(selected, deselected); bool haveSelection=haveSelectedItems(); setContextMenuPolicy(haveSelection ? Qt::ActionsContextMenu : (menu ? Qt::CustomContextMenu : Qt::NoContextMenu)); emit itemsSelected(haveSelection); }
void FileViewController::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { switch (selected.length()) { case 0: emit selectionCleared(); break; case 1: emit itemSelected(selected.indexes().at(0)); break; default: emit itemsSelected(selected.indexes()); break; } }
void ItemsComponent::onItemsSelectionChanged() { const QModelIndexList indexes = ui.tblItems->selectionModel()->selectedRows(); QList<Item *> selectedItems; foreach (QModelIndex index, indexes) selectedItems.push_back(itemsModel->getItem(index)); emit itemsSelected(selectedItems); // Single selection only if (indexes.size() != 1) itemDetailsModel->setItem(NULL); else itemDetailsModel->setItem(itemsModel->getItem(indexes.at(0))); }
// constructor: load loader dialog US_NoiseLoader::US_NoiseLoader( US_DB2* db, QStringList& mieGUIDs, QStringList& nieGUIDs, US_Noise& ti_noise, US_Noise& ri_noise, US_DataIO::EditedData* edata ) : US_WidgetsDialog( 0, 0 ), db( db ), mieGUIDs( mieGUIDs ), nieGUIDs( nieGUIDs ), ti_noise( ti_noise ), ri_noise( ri_noise ) { setWindowTitle( ( db == (US_DB2*) 0 ? tr( "Noise Vector Local Disk Load" ) : tr( "Noise Vector Database Load" ) ) ); setPalette( US_GuiSettings::frameColor() ); mainLayout = new QVBoxLayout( this ); btnsLayout = new QHBoxLayout(); mainLayout->setSpacing ( 2 ); mainLayout->setContentsMargins( 2, 2, 2, 2 ); QString hmsg = tr( "You may select multiple noise records.\n\n" ) + tr( "Click on a tree noise entry to add it\n" ) + tr( " to the list below of selected noise records.\n" ) + tr( "Click on a top-level entry to add all\n" ) + tr( " of its children to the selected list.\n" ) + tr( "Ctrl-click on multiple noise entries\n" ) + tr( " to add them to the selected list.\n\n" ) + tr( "Click the \"Load\" button to load selected noise\n" ) + tr( " or the \"Cancel\" button to select no noise.\n" ) + tr( "Click \"Details\" for noise entry details." ); QLabel* lb_noises = us_banner( hmsg ); lb_noises->setAlignment( Qt::AlignVCenter | Qt::AlignLeft ); QLabel* lb_selects = us_banner( "Selected Noise Vectors" ); lb_selects->setAlignment( Qt::AlignVCenter | Qt::AlignHCenter ); QFont font( US_GuiSettings::fontFamily(), US_GuiSettings::fontSize() ); QFontMetrics fm( font ); int fontHeight = fm.lineSpacing(); tw_noises = new QTreeWidget( this ); tw_noises->setFrameStyle( QFrame::NoFrame ); tw_noises->setPalette( US_GuiSettings::editColor() ); tw_noises->setFont( font ); tw_noises->setSelectionMode( QAbstractItemView::ExtendedSelection ); lw_selects = us_listwidget(); lw_selects->setMaximumHeight( fontHeight * 3 + 12 ); mainLayout->addWidget( lb_noises ); mainLayout->addWidget( tw_noises ); mainLayout->addWidget( lb_selects ); mainLayout->addWidget( lw_selects ); QPushButton* pb_detail = us_pushbutton( tr( "Details" ) ); QPushButton* pb_cancel = us_pushbutton( tr( "Cancel" ) ); QPushButton* pb_load = us_pushbutton( tr( "Load" ) ); btnsLayout->addWidget( pb_detail ); btnsLayout->addWidget( pb_cancel ); btnsLayout->addWidget( pb_load ); mainLayout->addLayout( btnsLayout ); ti_noise.count = 0; ri_noise.count = 0; // populate the tree widget QTreeWidgetItem* twi_null = (QTreeWidgetItem*)0; QString twtitle = QString( "Models-in-Edit / Noises-in-Model" ); QString mititle = QString( "Latest/Loaded Model" ); QList< QTreeWidgetItem* > items; tw_noises->setColumnCount( 1 ); tw_noises->setHeaderLabel( twtitle ); QTreeWidgetItem* twi_curr = new QTreeWidgetItem( twi_null, QStringList( mititle ) ); items.append( twi_curr ); // first top-level item in tree for ( int ii = 1; ii < mieGUIDs.size(); ii++ ) { // complete models list for top level mititle = QString().sprintf( "Model Sibling %4.4d", ii ); twi_curr = new QTreeWidgetItem( twi_null, QStringList( mititle ) ); items.append( twi_curr ); // other top-level items are model siblings } tw_noises->addTopLevelItems( items ); // put the top level in tree GUI for ( int ii = 0; ii < nieGUIDs.size(); ii++ ) { // review noises-in-edit, adding children QString nie = nieGUIDs.at( ii ); // noiseGUID:type:index in edit QString typ = nie.section( ":", 1, 1 ); // type part ("ti" or "ri") QString mdx = nie.section( ":", 2, 2 ); // model index part ("0001") nie = typ + "_noise " + mdx; // list name ("ti_noise 0003") int ndx = mdx.toInt(); // integral model index twi_curr = new QTreeWidgetItem( QStringList( nie ) ); items.at( ndx )->addChild( twi_curr ); // add as child of model "ndx" } if ( nieGUIDs.at( 0 ).section( ":", 2, 2 ).toInt() == 0 ) { // expand the loaded model tree if present tw_noises->expandItem( items.at( 0 ) ); } connect( tw_noises, SIGNAL( itemSelectionChanged() ), this, SLOT( itemsSelected() ) ); connect( pb_detail, SIGNAL( clicked() ), this, SLOT( view_details() ) ); connect( pb_cancel, SIGNAL( clicked() ), this, SLOT( cancelled() ) ); connect( pb_load, SIGNAL( clicked() ), this, SLOT( selected() ) ); // Compute the OD range of the edited data if ( edata != NULL ) { int nscans = edata->scanCount(); int npoints = edata->pointCount(); double datmin = edata->value( 0, 0 ); double datmax = datmin; for ( int ii = 0; ii < nscans; ii++ ) { for ( int jj = 0; jj < npoints; jj++ ) { double datval = edata->value( ii, jj ); datmin = qMin( datmin, datval ); datmax = qMax( datmax, datval ); } } darange = datmax - datmin; } else darange = 0.0; }