cookpanelbutton.cpp 2.31 KB
#include "cookpanelbutton.h"
#include "ui_cookpanelbutton.h"

#include "soundplayer.h"
#include "manualcooksettingwidget.h"

CookPanelButton::CookPanelButton(CookRecord record, QWidget *parent) :
    QWidget(parent),
    record(record),
    ui(new Ui::CookPanelButton),
    rendered(false),
    longPressEnabled(false)
{
    ui->setupUi(this);

    setText(record.name);

    foreach (QPushButton *button, findChildren<QPushButton *>())
        connect(button, &QPushButton::pressed, SoundPlayer::playClick);

    longPressedTimer.setSingleShot(true);
    longPressedTimer.setInterval(3000);
    connect(&longPressedTimer, SIGNAL(timeout()), SLOT(emitLongPressed()));
}

CookPanelButton::~CookPanelButton()
{
    delete ui;
}

void CookPanelButton::setText(QString text)
{
    ui->pushButton->setText(text);
}

void CookPanelButton::showInfo()
{
    if (!rendered)
    {
        QPixmap p = CookHistory::render(record);

        label = new QLabel(this);
        label->setPixmap(p);
        label->setGeometry((width() - p.width()) / 2, 65, p.width(), p.height());
    }

    label->show();
    setMinimumHeight(ui->pushButton->height() + label->height());
}

void CookPanelButton::hideInfo()
{
    label->hide();
    setMinimumHeight(ui->pushButton->height());
}

void CookPanelButton::focusBar()
{
    ui->pushButton->setFocus();
}

void CookPanelButton::focusInfoButton()
{
    ui->showInfoButton->setFocus();
}

void CookPanelButton::focusDeleteButton()
{
    ui->deleteButton->setFocus();
}

void CookPanelButton::setLongPressEnabled(bool enabled)
{
    longPressEnabled = enabled;
}

void CookPanelButton::setEnabled(bool enabled)
{
    ui->pushButton->setEnabled(enabled);
    ui->showInfoButton->setEnabled(enabled);
    ui->deleteButton->setEnabled(enabled);
}

void CookPanelButton::emitLongPressed()
{
    emitted = true;
    emit longPressed(this);
}


void CookPanelButton::on_showInfoButton_clicked()
{
    emit infoClicked(this);
}

void CookPanelButton::on_pushButton_clicked()
{
    if (longPressEnabled && emitted)
        return;

    CookHistory::start(record, parentWidget());
}

void CookPanelButton::on_deleteButton_clicked()
{
    emit deleteClicked(this);
}

void CookPanelButton::on_pushButton_pressed()
{
    longPressedTimer.start();
    emitted = false;
}

void CookPanelButton::on_pushButton_released()
{
    longPressedTimer.stop();
}