Exemplo n.º 1
0
void FilmsViewList::ShowHeaderContextMenu( const QPoint& pos )
{
      // Setup
    QHeaderView* header = horizontalHeader();
    QMenu menu( tr("Columns") );

      // "Title" always enabled
      // "Filename" and "Poster" always disabled
    for( int column = 1; column < model()->columnCount() - 2; ++column )
    {
        QAction* action = menu.addAction( model()->headerData( column, Qt::Horizontal ).toString() );
        action->setCheckable( true );
        action->setChecked( !header->isSectionHidden( column ) );
        action->setData( column );
    }

    menu.addSeparator();
    QAction* resetAction = menu.addAction( tr("Reset to defaults") );
    resetAction->setData( model()->columnCount() );

      // Show
    QAction* triggered = menu.exec( header->viewport()->mapToGlobal(pos) );

      // Processing
    if( triggered != nullptr )
    {
        int i = triggered->data().toInt();

        if( i < model()->columnCount() )
        {
            header->setSectionHidden( i, !header->isSectionHidden( i ) );
        }
        else // "Reset to defaults" item
        {
            RestoreColumnsOrder();
            SetDefaultColumnsView();
        }

        SaveSettings();
    }
}