2 * \file fancylineedit.h
3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Nokia Corporation (qt-info@nokia.com)
8 * Full author contact details are available in file CREDITS.
12 // Code taken from the Qt Creator project and customized a little
14 #ifndef FANCYLINEEDIT_H
15 #define FANCYLINEEDIT_H
17 #include <QtGui/QLineEdit>
18 #include <QtGui/QAbstractButton>
23 class FancyLineEditPrivate;
25 class IconButton: public QAbstractButton
28 Q_PROPERTY(float iconOpacity READ iconOpacity WRITE setIconOpacity)
29 Q_PROPERTY(bool autoHide READ hasAutoHide WRITE setAutoHide)
30 Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
32 explicit IconButton(QWidget *parent = 0);
33 void paintEvent(QPaintEvent *event);
34 void setPixmap(const QPixmap &pixmap) { m_pixmap = pixmap; update(); }
35 QPixmap pixmap() const { return m_pixmap; }
36 float iconOpacity() { return m_iconOpacity; }
37 void setIconOpacity(float value) { m_iconOpacity = value; update(); }
38 void animateShow(bool visible);
40 void setAutoHide(bool hide) { m_autoHide = hide; }
41 bool hasAutoHide() const { return m_autoHide; }
49 /* A line edit with an embedded pixmap on one side that is connected to
50 * a menu. Additionally, it can display a grayed hintText (like "Type Here to")
51 * when not focused and empty. When connecting to the changed signals and
52 * querying text, one has to be aware that the text is set to that hint
53 * text if isShowingHintText() returns true (that is, does not contain
56 class FancyLineEdit : public QLineEdit
58 Q_DISABLE_COPY(FancyLineEdit)
63 enum Side {Left = 0, Right = 1};
66 void buttonClicked(Side side);
67 void leftButtonClicked();
68 void rightButtonClicked();
70 #if QT_VERSION >= 0x040600
72 explicit FancyLineEdit(QWidget *parent = 0);
75 QPixmap buttonPixmap(Side side) const;
76 void setButtonPixmap(Side side, const QPixmap &pixmap);
78 QMenu *buttonMenu(Side side) const;
79 void setButtonMenu(Side side, QMenu *menu);
81 void setButtonVisible(Side side, bool visible);
82 bool isButtonVisible(Side side) const;
84 void setButtonToolTip(Side side, const QString &);
85 void setButtonFocusPolicy(Side side, Qt::FocusPolicy policy);
87 // Set whether tabbing in will trigger the menu.
88 void setMenuTabFocusTrigger(Side side, bool v);
89 bool hasMenuTabFocusTrigger(Side side) const;
91 // Set if icon should be hidden when text is empty
92 void setAutoHideButton(Side side, bool h);
93 bool hasAutoHideButton(Side side) const;
96 void checkButtons(const QString &);
100 virtual void resizeEvent(QResizeEvent *e);
103 void updateMargins();
104 void updateButtonPositions();
106 FancyLineEditPrivate *m_d;
110 explicit FancyLineEdit(QWidget *parent = 0)
113 #endif // QT_VERSION >= 0x040600*/
119 #endif // FANCYLINEEDIT_H