#include "cookpanelbutton.h" #include "ui_cookpanelbutton.h" #include #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(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; } QPushButton *CookPanelButton::bar() { return ui->pushButton; } QPushButton *CookPanelButton::deleteButton() { return ui->deleteButton; } void CookPanelButton::setEnabled(bool enabled) { ui->pushButton->setEnabled(enabled); ui->showInfoButton->setEnabled(enabled); ui->deleteButton->setEnabled(enabled); } //void CookPanelButton::keyPressEvent(QKeyEvent *event) //{ // switch (event->key()) // { // case 0x01000030: // Turn left // onEncoderLeft(); // break; // case 0x01000031: // Push // pushed = focusWidget(); // break; // case 0x01000032: // Turn right // onEncoderRight(); // break; // } //} //void CookPanelButton::keyReleaseEvent(QKeyEvent *event) //{ // switch (event->key()) // { // case 0x01000030: // Turn left // onEncoderLeft(); // break; // case 0x01000031: // Push // if (focusWidget() == pushed) // onEncoderClicked(pushed); // pushed = NULL; // break; // case 0x01000032: // Turn right // onEncoderRight(); // break; // } //} 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::onEncoderLeft() { } void CookPanelButton::onEncoderRight() { } void CookPanelButton::onEncoderClicked(QWidget *clicked) { } void CookPanelButton::on_pushButton_pressed() { longPressedTimer.start(); emitted = false; } void CookPanelButton::on_pushButton_released() { longPressedTimer.stop(); }