#ifndef CELL_H
#define CELL_H

#include <QWidget>
class QPushButton;
class QStackedWidget;
class QSignalMapper;
class QGroupBox;
class QGridLayout;
class Cell : public QWidget
{
    Q_OBJECT
public:
    explicit Cell(QWidget *parent = 0);
    void resizeEvent(QResizeEvent *event);
    int possibleStates = 9;
    bool collapsed = false;
    std::vector<int> options = {0, 1, 2, 3, 4, 5, 6, 7, 8};

private:
    QSignalMapper *mapper;
    QGroupBox *groupBox;
    QGridLayout *gridLayout;
    QPushButton *states[9];
    QPushButton *number;
    std::array<int, 9> blocked;
    QStackedWidget *stackedWidget;

signals:
    void update(int x);
    void undo(int x);
public slots:
    void addOption(int x);
    void removeOption(int x);
    void collapse(int x);
    void collapsedCellClicked(void);
};

#endif // CELL_H