1 /***************************************************************************
2 *                                                                         *
3 *   This program is free software; you can redistribute it and/or modify  *
4 *   it under the terms of the GNU General Public License as published by  *
5 *   the Free Software Foundation; either version 3 of the License, or     *
6 *   (at your option) any later version.                                   *
7 *                                                                         *
8 ***************************************************************************/
9 
10 #pragma once
11 
12 #include <QPushButton>
13 #include <QDragEnterEvent>
14 #include <QDropEvent>
15 #include <QDragMoveEvent>
16 #include <QMouseEvent>
17 
18 class QResizeEvent;
19 class QPaintEvent;
20 class QLabel;
21 class QEvent;
22 
23 class TabButton : public QPushButton
24 {
25 Q_OBJECT
26 public:
27     explicit TabButton(QWidget *parent = 0);
28 
29     QSize sizeHint() const;
30     void setWidgetIcon(const QPixmap &px);
resetGeometry()31     void resetGeometry() { updateGeometry(); }
32     int normalWidth() const;
33     int normalHeight() const;
34 
35 protected:
36     virtual void resizeEvent(QResizeEvent *);
37     virtual bool eventFilter(QObject *, QEvent *);
38     virtual void dragEnterEvent(QDragEnterEvent *);
39     virtual void dragMoveEvent(QDragMoveEvent *);
40     virtual void dropEvent(QDropEvent *);
41     virtual void mousePressEvent(QMouseEvent *e);
42     virtual void mouseReleaseEvent(QMouseEvent *e);
43     virtual void mouseMoveEvent(QMouseEvent *e);
44     virtual void paintEvent(QPaintEvent *e);
45 
46 signals:
47     void closeRequest();
48     void dropped(TabButton*);
49 
50 private:
51     void updateStyles();
52     void updateGeometry();
53 
54     QLabel *label;
55     QLabel *px_label;
56     int parentHeight;
57     bool isLeftBtnHold;
58 };
59