#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()) connect(button, &QPushButton::pressed, SoundPlayer::playClick); longPressedTimer.setSingleShot(true); longPressedTimer.setInterval(2000); 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(); }