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/statusWidget.cpp | |
| parent | 3431f5a37174b7eb8490672686db68df2b48e35f (diff) | |
| download | qxmpp-da88f5f0bb5e73bc69bf7ed3962691622b1ae4f9.tar.gz | |
add Gui Client example
Diffstat (limited to 'examples/GuiClient/statusWidget.cpp')
| -rw-r--r-- | examples/GuiClient/statusWidget.cpp | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/examples/GuiClient/statusWidget.cpp b/examples/GuiClient/statusWidget.cpp new file mode 100644 index 00000000..0ad1ead6 --- /dev/null +++ b/examples/GuiClient/statusWidget.cpp @@ -0,0 +1,130 @@ +#include "statusWidget.h"
+#include <QMenu>
+#include <QFileDialog>
+#include <QMessageBox>
+
+statusWidget::statusWidget(QWidget* parent)
+{
+ setupUi(this);
+ QMenu* menu = new QMenu(this);
+ menu->addAction(actionAvailable);
+ menu->addAction(actionBusy);
+ menu->addAction(actionAway);
+// menu->addAction(actionInvisible);
+ menu->addSeparator();
+ menu->addAction(actionSign_out);
+ toolButton_userName->setMenu(menu);
+
+ bool check = connect(statusTextWidgetObject, SIGNAL(statusTextChanged(const QString&)), SIGNAL(statusTextChanged(const QString&)));
+ Q_ASSERT(check);
+
+ check = connect(actionAvailable, SIGNAL(triggered()), SLOT(presenceMenuTriggered()));
+ Q_ASSERT(check);
+ check = connect(actionBusy, SIGNAL(triggered()), SLOT(presenceMenuTriggered()));
+ Q_ASSERT(check);
+ check = connect(actionAway, SIGNAL(triggered()), SLOT(presenceMenuTriggered()));
+ Q_ASSERT(check);
+ check = connect(actionInvisible, SIGNAL(triggered()), SLOT(presenceMenuTriggered()));
+ Q_ASSERT(check);
+ check = connect(actionSign_out, SIGNAL(triggered()), SLOT(presenceMenuTriggered()));
+ Q_ASSERT(check);
+
+ check = connect(pushButton_avatar, SIGNAL(clicked()), SLOT(avatarSelection()));
+ Q_ASSERT(check);
+}
+
+void statusWidget::setStatusText(const QString& statusText)
+{
+ statusTextWidgetObject->setStatusText(statusText);
+}
+
+void statusWidget::presenceMenuTriggered()
+{
+ QString icon = "green";
+ QAction* action = qobject_cast<QAction*>(sender());
+ if(action == actionAvailable)
+ {
+ emit presenceTypeChanged(QXmppPresence::Available);
+ icon = "green";
+ }
+ else if(action == actionBusy)
+ {
+ emit presenceStatusTypeChanged(QXmppPresence::Status::DND);
+ icon = "red";
+ }
+ else if(action == actionAway)
+ {
+ emit presenceStatusTypeChanged(QXmppPresence::Status::Away);
+ icon = "orange";
+ }
+ else if(action == actionInvisible)
+ {
+ emit presenceStatusTypeChanged(QXmppPresence::Status::Invisible);
+ icon = "gray";
+ }
+ else if(action == actionSign_out)
+ {
+ emit presenceTypeChanged(QXmppPresence::Unavailable);
+ icon = "gray";
+ }
+ label->setPixmap(QPixmap(":/icons/resource/"+icon+".png"));
+}
+
+void statusWidget::setPresenceAndStatusType(QXmppPresence::Type presenceType,
+ QXmppPresence::Status::Type statusType)
+{
+ if(presenceType == QXmppPresence::Available)
+ {
+ QString icon = "green";
+ switch(statusType)
+ {
+ case QXmppPresence::Status::Online:
+ case QXmppPresence::Status::Chat:
+ icon = "green";
+ break;
+ case QXmppPresence::Status::Away:
+ case QXmppPresence::Status::XA:
+ icon = "orange";
+ break;
+ case QXmppPresence::Status::DND:
+ icon = "red";
+ break;
+ case QXmppPresence::Status::Invisible:
+ case QXmppPresence::Status::Offline:
+ icon = "gray";
+ break;
+ }
+ label->setPixmap(QPixmap(":/icons/resource/"+icon+".png"));
+ }
+ else if(presenceType == QXmppPresence::Unavailable)
+ {
+ label->setPixmap(QPixmap(":/icons/resource/gray.png"));
+ }
+}
+
+void statusWidget::avatarSelection()
+{
+ QString file = QFileDialog::getOpenFileName(this, "Select your avatar");
+ if(file.isEmpty())
+ return;
+
+ QImage image;
+ if(image.load(file))
+ {
+ QImage scaled = image.scaled(QSize(96, 96), Qt::KeepAspectRatio,
+ Qt::SmoothTransformation);
+ emit avatarChanged(scaled);
+ }
+ else
+ QMessageBox::information(this, "Avatar selection", "Invalid image file");
+}
+
+void statusWidget::setDisplayName(const QString& name)
+{
+ toolButton_userName->setText(name);
+}
+
+void statusWidget::setAvatar(const QImage& image)
+{
+ pushButton_avatar->setIcon(QIcon(QPixmap::fromImage(image)));
+}
|
