Select Git revision
cell.cpp 1.75 KiB
#include "cell.h"
#include <QPushButton>
#include <QDebug>
#include <QSignalMapper>
Cell::Cell(QWidget *parent) : QWidget(parent)
{
// Set size of the window
// Create and position the button
setAutoFillBackground(true);
setStyleSheet("background-color:gray;");
setFixedSize(100, 100);
float w = width() / 3.0;
float h = height() / 3.0;
QSignalMapper *mapper = new QSignalMapper(this);
connect(mapper, SIGNAL(mapped(int)), this, SLOT(collapse(int)));
for (char i = 0; i < 9; i++)
{
m_states[i] = new QPushButton(QString::number(i + 1), this);
m_states[i]->setGeometry(i % 3 * w, i / 3 * h, w, h);
m_states[i]->setStyleSheet("border:none");
connect(m_states[i], SIGNAL(clicked()), mapper, SLOT(map()));
mapper->setMapping(m_states[i], i);
m_blocked[i] = 0;
}
m_number = new QPushButton(this);
m_number->setFixedSize(100, 100);
m_number->setStyleSheet("font-size:44px");
m_number->hide();
connect(m_number,SIGNAL(clicked()),this,SLOT(un()));
}
void Cell::collapse(int x)
{
collapsed = true;
m_number->show();
m_number->setText(QString::number(x + 1));
emit(update(x));
}
void Cell::removeOption(int x)
{
// states[x]->hide();
if (m_states[x]->isEnabled())
{
m_states[x]->setDisabled(true);
possibleStates--;
index.erase(std::find(index.begin(), index.end(), x));
}
m_blocked[x] ++;
}
void Cell::addOption(int x)
{
m_blocked[x] --;
//if (!m_states[x]->isEnabled())
if (m_blocked[x]<1)
{
m_states[x]->setDisabled(false);
possibleStates++;
index.push_back(x);
}
}
void Cell::un(void){
collapsed = false;
m_number->hide();
emit(undo(m_number->text().toInt()-1));
}