#include "cell.h" #include <QPushButton> #include <QToolButton> #include <QDebug> #include <QSignalMapper> #include <QGridLayout> #include <QStackedWidget> #include <QGroupBox> Cell::Cell(QWidget *parent) : QWidget(parent) { QSignalMapper *mapper = new QSignalMapper(this); connect(mapper, SIGNAL(mapped(int)), this, SLOT(collapse(int))); QGroupBox *groupBox = new QGroupBox(); QGridLayout *layout = new QGridLayout(); for (char i = 0; i < 9; i++) { m_states[i] = new QPushButton(QString::number(i + 1), this); layout->addWidget(m_states[i], i % 3, i / 3); 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; } groupBox->setLayout(layout); m_number = new QPushButton(this); connect(m_number, SIGNAL(clicked()), this, SLOT(un())); m_stackedWidget = new QStackedWidget(this); m_stackedWidget->addWidget(groupBox); m_stackedWidget->addWidget(m_number); setMinimumSize(70, 70); } void Cell::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); m_stackedWidget->setFixedSize(this->size()); int smallest = this->width() < this->height() ? this->width() : this->height(); m_number->setStyleSheet("font-size:" + QString::number(smallest / 2) + "px;"); return; } void Cell::collapse(int x) { collapsed = true; m_stackedWidget->setCurrentIndex(1); m_number->setText(QString::number(x + 1)); emit(update(x)); } void Cell::removeOption(int x) { if (m_blocked[x] == 0) { m_states[x]->setDisabled(true); m_states[x]->setText(" "); 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]->setText(QString::number(x + 1)); m_states[x]->setDisabled(false); possibleStates++; index.push_back(x); } } void Cell::un(void) { collapsed = false; m_stackedWidget->setCurrentIndex(0); emit(undo(m_number->text().toInt() - 1)); }