MatchResDialog::MatchResDialog( Match match, QWidget* parent )
    : QDialog( parent ),
      _match( match ),
      _okButton( new QPushButton( tr( "Save" ) ) )
{
    setWindowTitle( tr( "Match score" ) );

    _okButton->setEnabled( false );

    QGridLayout* l = new QGridLayout( this );

    QLabel* playerA = new QLabel( match.playerA().name(), this );
    QLabel* playerB = new QLabel( match.playerB().name(), this );

    l->addWidget( playerA, 0, 0, Qt::AlignJustify );
    l->addWidget( playerB, 0, 1, Qt::AlignJustify );

    unsigned int games = match.games_const().count();
    for ( unsigned int i = 0; i < match.maxGames(); i ++ ) {
        QLineEdit* ballsA = new QLineEdit( this );
        QLineEdit* ballsB = new QLineEdit( this );

        if ( i < games ) {
            // this should be done before connecting of lineedits to textChanged
            // slot
            ballsA->setText( QString::number( match.games_const().at( i ).aBalls ) );
            ballsB->setText( QString::number( match.games_const().at( i ).bBalls ) );
        }

        connect( ballsA, SIGNAL( textChanged( const QString& ) ),
                 this, SLOT( textChanged( ) ) );
        connect( ballsB, SIGNAL( textChanged( const QString& ) ),
                 this, SLOT( textChanged( ) ) );

        l->addWidget( ballsA, i + 1, 0 );
        l->addWidget( ballsB, i + 1, 1 );
    }

    if ( games ) {
        textChanged();
    }

    l->addWidget( _okButton, l->rowCount(), 0, 1, 2 );

    connect( _okButton, SIGNAL( clicked() ), this, SLOT( okButtonClicked() ) );
}
void Group::setMatchResults( Match m )
{
  setMatchResults( m.playerA(), m.playerB(), m.games_const() );
}