From da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Wed, 8 Sep 2010 09:23:18 +0000 Subject: add Gui Client example --- examples/GuiClient/statusTextWidget.h | 111 ++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 examples/GuiClient/statusTextWidget.h (limited to 'examples/GuiClient/statusTextWidget.h') diff --git a/examples/GuiClient/statusTextWidget.h b/examples/GuiClient/statusTextWidget.h new file mode 100644 index 00000000..1d91e143 --- /dev/null +++ b/examples/GuiClient/statusTextWidget.h @@ -0,0 +1,111 @@ +#ifndef STATUSTEXTWIDGET_H +#define STATUSTEXTWIDGET_H + +#include +#include +#include +#include +#include +#include +#include + + +class statusLineEditButton : public QPushButton +{ + Q_OBJECT + +public: + statusLineEditButton(QWidget* parent = 0): QPushButton(parent) + { + setCursor(Qt::PointingHandCursor); + } + void paintEvent(QPaintEvent* event); + QSize sizeHint() const + { + return QSize(14, 14); + } +}; + +class statusLineEdit : public QLineEdit +{ +public: + statusLineEdit(QWidget* parent = 0) : QLineEdit(parent) + { + setAttribute(Qt::WA_Hover, true); + setText("Available"); + setMinimumSize(QSize(20, 18)); + } + void focusInEvent(QFocusEvent* event); + void mousePressEvent(QMouseEvent* event); + + void paintEvent(QPaintEvent* event) + { + if(hasFocus()) + { + QLineEdit::paintEvent(event); + } + else + { + QPainter p(this); + QRect r = rect(); + QPalette pal = palette(); + + QStyleOptionFrameV2 panel; + initStyleOption(&panel); + r = style()->subElementRect(QStyle::SE_LineEditContents, &panel, this); + r.adjust(-1, -1, 0, 0); + r.setLeft(r.left() + 4); + p.setPen(Qt::darkGray); + p.drawText(r, Qt::AlignVCenter, text()); + } + + if(underMouse() && !hasFocus()) + { + QPainter p(this); + QRect r = rect(); + QPalette pal = palette(); + + QStyleOptionFrameV2 panel; + initStyleOption(&panel); + r = style()->subElementRect(QStyle::SE_LineEditContents, &panel, this); + r.adjust(-1, -1, 0, 0); + p.setPen(Qt::gray); + p.drawRect(r); + r.setLeft(r.left() + 4); + p.setPen(Qt::darkGray); + p.drawText(r, Qt::AlignVCenter, text()); + } + } + QSize sizeHint() const; +}; + +class statusTextWidget : public QWidget +{ + Q_OBJECT + +public: + statusTextWidget(QWidget* parent = 0); + void setStatusText(const QString& statusText); + +public slots: + void showMenu(); + void textChanged(); + +private slots: + void statusTextChanged_helper(); + void statusTextChanged_menuClick(); + void clearStatusTextHistory(); + +signals: + void statusTextChanged(const QString&); + +private: + void addStatusTextToList(const QString& status); + statusLineEdit* m_statusLineEdit; + statusLineEditButton* m_statusButton; + + QList m_statusTextActionList; + QAction m_clearStatusTextHistory; +}; + +#endif // STATUSTEXTWIDGET_H -- cgit v1.2.3