1 /* This file is (c) 2012 Tvangeste <i.4m.l33t@yandex.ru> 2 * Part of GoldenDict. Licensed under GPLv3 or later, see the LICENSE file */ 3 4 #ifndef EXTLINEEDIT_H 5 #define EXTLINEEDIT_H 6 7 #include <QLineEdit> 8 #include <QAbstractButton> 9 10 class IconButton: public QAbstractButton 11 { 12 Q_OBJECT 13 Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap) 14 Q_PROPERTY(float opacity READ opacity WRITE setOpacity) 15 16 public: 17 explicit IconButton(QWidget * parent = 0); 18 void paintEvent(QPaintEvent * event); 19 void animate(bool visible); 20 setPixmap(const QPixmap & pixmap)21 void setPixmap(const QPixmap & pixmap) { m_pixmap = pixmap; update(); } pixmap() const22 QPixmap pixmap() const { return m_pixmap; } 23 setAutoHide(bool autohide)24 void setAutoHide(bool autohide) { m_autohide = autohide; update(); } isAutoHide() const25 bool isAutoHide() const { return m_autohide; } 26 opacity()27 float opacity() { return m_opacity; } setOpacity(float opacity)28 void setOpacity(float opacity) { m_opacity = opacity; update(); } 29 30 private: 31 QPixmap m_pixmap; 32 bool m_autohide; 33 float m_opacity; 34 }; 35 36 class ExtLineEdit : public QLineEdit 37 { 38 Q_OBJECT 39 Q_ENUMS(Side) 40 41 public: 42 enum Side { Left = 0, Right = 1 }; 43 44 explicit ExtLineEdit(QWidget * parent = 0); 45 ~ExtLineEdit(); 46 47 QPixmap buttonPixmap(Side side) const; 48 void setButtonPixmap(Side side, const QPixmap &pixmap); 49 50 void setButtonVisible(Side side, bool visible); 51 bool isButtonVisible(Side side) const; 52 53 void setButtonToolTip(Side side, const QString &); 54 void setButtonFocusPolicy(Side side, Qt::FocusPolicy policy); 55 56 void setButtonAutoHide(Side side, bool autohide); 57 58 signals: 59 void leftButtonClicked(); 60 void rightButtonClicked(); 61 62 private slots: 63 void iconClicked(); 64 void updateButtons(QString text); 65 66 protected: 67 virtual void resizeEvent( QResizeEvent * e ); 68 69 private: 70 void updateMargins(); 71 void updateButtonPositions(); 72 QPixmap pixmaps[2]; 73 IconButton * iconButtons[2]; 74 bool iconEnabled[2]; 75 QString oldText; 76 }; 77 78 #endif // EXTLINEEDIT_H 79