void ArticleListView::showHeaderMenu(const QPoint& pos) { if ( !model() ) return; QPointer<KMenu> menu = new KMenu( this ); menu->addTitle( i18n( "Columns" ) ); menu->setAttribute( Qt::WA_DeleteOnClose ); const int colCount = model()->columnCount(); int visibleColumns = 0; // number of column currently shown QAction *visibleColumnsAction = 0; for ( int i = 0; i < colCount; ++i ) { QAction* act = menu->addAction( model()->headerData( i, Qt::Horizontal ).toString() ); act->setCheckable( true ); act->setData( i ); bool sectionVisible = !header()->isSectionHidden( i ); act->setChecked( sectionVisible ); if ( sectionVisible ) { ++visibleColumns; visibleColumnsAction = act; } } // Avoid that the last shown column is also hidden if ( visibleColumns == 1 ) { visibleColumnsAction->setEnabled( false ); } QPointer<QObject> that( this ); QAction * const action = menu->exec( header()->mapToGlobal( pos ) ); if ( that && action ) { const int col = action->data().toInt(); if ( action->isChecked() ) header()->showSection( col ); else header()->hideSection( col ); } delete menu; }
void Akregator::SubscriptionListView::showHeaderMenu( const QPoint& pos ) { if( ! model() ) return; QPointer<KMenu> menu = new KMenu( this ); menu->addTitle( i18n( "Columns" ) ); menu->setAttribute( Qt::WA_DeleteOnClose ); connect(menu, SIGNAL( triggered( QAction* ) ), this, SLOT( headerMenuItemTriggered( QAction* ) ) ); for (int i = 0; i < model()->columnCount(); i++) { if ( SubscriptionListModel::TitleColumn == i ) { continue; } QString col = model()->headerData( i, Qt::Horizontal, Qt::DisplayRole ).toString(); QAction* act = menu->addAction( col ); act->setCheckable( true ); act->setChecked( !header()->isSectionHidden( i ) ); act->setData( i ); } menu->popup( header()->mapToGlobal( pos ) ); }