Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • 2015ss
  • 2014ss
3 results

chardev-1write.c

Blame
  • Forked from Peter Gerwinski / bs
    Source project has a limited visibility.
    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));
    }