diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-08 09:23:18 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-08 09:23:18 +0000 |
| commit | da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9 (patch) | |
| tree | c3686f7649785a2bfcc2c637a1588acdb8a721e8 /examples/GuiClient/statusTextWidget.h | |
| parent | 3431f5a37174b7eb8490672686db68df2b48e35f (diff) | |
| download | qxmpp-da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9.tar.gz | |
add Gui Client example
Diffstat (limited to 'examples/GuiClient/statusTextWidget.h')
| -rw-r--r-- | examples/GuiClient/statusTextWidget.h | 111 |
1 files changed, 111 insertions, 0 deletions
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 <QWidget>
+#include <QAction>
+#include <QLineEdit>
+#include <QPainter>
+#include <QPushButton>
+#include <QStyleOptionFrameV2>
+#include <QFontMetrics>
+
+
+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<QAction*> m_statusTextActionList;
+ QAction m_clearStatusTextHistory;
+};
+
+#endif // STATUSTEXTWIDGET_H
|
