diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-28 15:27:15 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-28 15:27:15 +0000 |
| commit | bbf43cdf7f0b5af477f17e3587c06e927d30f4aa (patch) | |
| tree | 492c4bcdb82779089f2c31f2fbc61884f2cd640b | |
| parent | d8c86658f117f2cdf2047a2f02daf8cde3eae7da (diff) | |
| download | qxmpp-bbf43cdf7f0b5af477f17e3587c06e927d30f4aa.tar.gz | |
adduser implementation
| -rw-r--r-- | examples/GuiClient/mainDialog.cpp | 86 | ||||
| -rw-r--r-- | examples/GuiClient/mainDialog.h | 2 |
2 files changed, 88 insertions, 0 deletions
diff --git a/examples/GuiClient/mainDialog.cpp b/examples/GuiClient/mainDialog.cpp index a1572a6c..787f03c3 100644 --- a/examples/GuiClient/mainDialog.cpp +++ b/examples/GuiClient/mainDialog.cpp @@ -41,6 +41,8 @@ #include <QMovie> #include <QCompleter> +#include <QInputDialog> +#include <QMessageBox> mainDialog::mainDialog(QWidget *parent): QDialog(parent, Qt::Window), @@ -74,6 +76,11 @@ mainDialog::mainDialog(QWidget *parent): QDialog(parent, Qt::Window), this, SLOT(rosterChanged(const QString&))); Q_ASSERT(check); + check = connect(&m_xmppClient, + SIGNAL(presenceReceived(const QXmppPresence&)), + this, SLOT(presenceReceived(const QXmppPresence&))); + Q_ASSERT(check); + QXmppLogger::getLogger()->setLoggingType(QXmppLogger::FileLogging); @@ -160,6 +167,9 @@ mainDialog::mainDialog(QWidget *parent): QDialog(parent, Qt::Window), SIGNAL(vCardReadyToUse(const QString&)), SLOT(updateVCard(const QString&))); Q_ASSERT(check); + + check = connect(ui->pushButton_addContact, SIGNAL(clicked()), SLOT(action_addContact())); + Q_ASSERT(check); } void mainDialog::rosterChanged(const QString& bareJid) @@ -642,3 +652,79 @@ void mainDialog::action_trayIconActivated(QSystemTrayIcon::ActivationReason reas ; } } + +void mainDialog::action_addContact() +{ + bool ok; + QString bareJid = QInputDialog::getText(this, "Add a jabber contact", + "Contact ID:", QLineEdit::Normal, "manjeetd@gmail.com", &ok); + + if(ok && !bareJid.isEmpty()) + { + //TODO: check for valid bareJid + QXmppPresence subscribe; + subscribe.setTo(bareJid); + subscribe.setType(QXmppPresence::Subscribe); + m_xmppClient.sendPacket(subscribe); + } +} + +void mainDialog::presenceReceived(const QXmppPresence& presence) +{ + QString from = presence.from(); + + QString message; + switch(presence.type()) + { + case QXmppPresence::Subscribe: + message = "<B>%1</B> wants to subscribe"; + break; + case QXmppPresence::Subscribed: + message = "<B>%1</B> accepted your request"; + break; + case QXmppPresence::Unsubscribe: +// message = "<B>%1</B> unsubscribe"; + break; + case QXmppPresence::Unsubscribed: +// message = "<B>%1</B> unsubscribed"; + break; + default: + return; + break; + } + + if(message.isEmpty()) + return; + + int retButton = QMessageBox::question( + this, "Contact Subscription", message.arg(from), + QMessageBox::Yes, QMessageBox::No); + + switch(retButton) + { + case QMessageBox::Yes: + { + QXmppPresence subscribed; + subscribed.setTo(from); + subscribed.setType(QXmppPresence::Subscribed); + m_xmppClient.sendPacket(subscribed); + + // reciprocal subscription + QXmppPresence subscribe; + subscribe.setTo(from); + subscribe.setType(QXmppPresence::Subscribe); + m_xmppClient.sendPacket(subscribe); + } + break; + case QMessageBox::No: + { + QXmppPresence unsubscribed; + unsubscribed.setTo(from); + unsubscribed.setType(QXmppPresence::Unsubscribed); + m_xmppClient.sendPacket(unsubscribed); + } + break; + default: + break; + } +} diff --git a/examples/GuiClient/mainDialog.h b/examples/GuiClient/mainDialog.h index 9c3f6ae9..672580d8 100644 --- a/examples/GuiClient/mainDialog.h +++ b/examples/GuiClient/mainDialog.h @@ -83,7 +83,9 @@ private slots: void showProfile(const QString& bareJid); void userNameCompleter_activated(const QString&); void addAccountToCache(); + void presenceReceived(const QXmppPresence&); + void action_addContact(); void action_signOut(); void action_quit(); void action_trayIconActivated(QSystemTrayIcon::ActivationReason reason); |
