cookpanelbutton.h 1.43 KB
#ifndef COOKPANELBUTTON_H
#define COOKPANELBUTTON_H

#include <QWidget>
#include <QLabel>
#include <QButtonGroup>
#include <QTimer>

#include "cookhistory.h"

namespace Ui {
class CookPanelButton;
}

class CookPanelButton : public QWidget
{
    Q_OBJECT

signals:
    void resized();
    void clicked(CookPanelButton *);
    void infoClicked(CookPanelButton *);
    void deleteClicked(CookPanelButton *);
    void longPressed(CookPanelButton *);

public:
    explicit CookPanelButton(CookRecord record, QWidget *parent = 0);
    ~CookPanelButton();

    void setText(QString text);
    void showInfo();
    void hideInfo();

    void focusBar();
    void focusInfoButton();
    void focusDeleteButton();

    void setLongPressEnabled(bool enabled);

    CookRecord record;

public slots:
    void setEnabled(bool enabled = true);

protected:
    void keyPressEvent(QKeyEvent *event);
    void keyReleaseEvent(QKeyEvent *event);

private slots:
    void emitLongPressed();

    void on_pushButton_pressed();
    void on_pushButton_released();
    void on_pushButton_clicked();
    void on_showInfoButton_clicked();
    void on_deleteButton_clicked();

private:
    Ui::CookPanelButton *ui;

    QTimer longPressedTimer;
    bool rendered;
    QLabel *label;
    bool emitted;
    bool longPressEnabled;

    QWidget *pushed = NULL;

    void onEncoderLeft();
    void onEncoderRight();
    void onEncoderClicked(QWidget *clicked);
};

#endif // COOKPANELBUTTON_H