(qt) delete multiple trackers at once

This commit is contained in:
Daniel Lee 2010-07-03 03:46:14 +00:00
parent bb92d05860
commit a782d7849e
1 changed files with 14 additions and 9 deletions

View File

@ -1161,15 +1161,20 @@ Details :: removeTracker( const QTreeWidgetItem * item )
void
Details :: onRemoveTrackerPushed( )
{
const QTreeWidgetItem * item = myTrackerTree->selectedItems().first();
const bool isTier = item->data( 0, TRACKERID ).toInt() == -1;
if( isTier )
{
for( int i = 0; i < item->childCount(); ++i )
removeTracker( item->child( i ) );
const QList<QTreeWidgetItem*> items = myTrackerTree->selectedItems();
QSet<int> removedTiers;
foreach( const QTreeWidgetItem * item, items ) {
const bool isTier = item->data( 0, TRACKERID ).toInt() == -1;
const int curTier = item->data( 0, TRACKERTIER ).toInt();
if( isTier )
{
removedTiers << curTier;
for( int i = 0; i < item->childCount(); ++i )
removeTracker( item->child( i ) );
}
else if( !removedTiers.contains( curTier ) ) // skip trackers removed by clearing a tier
removeTracker( item );
}
else
removeTracker( item );
}
QWidget *
@ -1288,7 +1293,7 @@ Details :: createTrackerTab( )
headers << tr("Trackers");
myTrackerTree = new QTreeWidget;
myTrackerTree->setHeaderLabels( headers );
myTrackerTree->setSelectionMode( QTreeWidget::SingleSelection );
myTrackerTree->setSelectionMode( QTreeWidget::ExtendedSelection );
myTrackerTree->setRootIsDecorated( false );
myTrackerTree->setIndentation( 2 );
myTrackerTree->setItemsExpandable( false );