/***************************************************************************
 *   Copyright (C) 2005 by Tavarez Arnaud Bakoula                          *
 *   tbakoula@yahoo.fr                                                     *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef BOARDWIDGET_H
#define BOARDWIDGET_H

#include <qwidget.h>

#include <qvaluelist.h>
#include <vector>

class PionSrc;
class MarkSrc;
class SiteRow;
class TickRow;
class CellRow;
class SiteManager;
class TickManager;
class AnswerManager;
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QSpacerItem;
class QHBox;
class QFrame;

/**
@author Tavarez Arnaud Bakoula
*/
class BoardWidget : public QWidget
{
public:
    BoardWidget( int r, int c, int n, QWidget* parent=0, const char* name=0 );
    ~BoardWidget();

    void changeChoicesBy( int rz );
    void changeCellsBy( int rz );
    void changeRowsBy( int rz );
    void reset();

    void updateMe();

    SiteRow* answer_row;
    SiteRow* pion_row;
    TickRow* mark_row;

    AnswerManager* theAnswer;
    SiteManager* theSites;
    TickManager* theTicks;

private:
    QHBox* boardBox;
    QFrame* markFrame;
    QFrame* choiceFrame;
    QVBoxLayout* mainBoardLayout;
    QHBoxLayout* choiceLayout;
    QSpacerItem* choiceSpacer;
    QHBoxLayout* markLayout;
    QSpacerItem* markSpacer;

private:
    void setupBoard();
    void setupMarks();
    void setupChoices();
    void setupSolution();

    int nb_row;
    int nb_col;
    int nb_choice;
    std::vector<PionSrc*> *pChoiceList;
    MarkSrc* white_mark;
    MarkSrc* black_mark;
};

#endif // BOARDWIDGET_H
