From bbf43cdf7f0b5af477f17e3587c06e927d30f4aa Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Tue, 28 Sep 2010 15:27:15 +0000 Subject: adduser implementation --- examples/GuiClient/mainDialog.cpp | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) (limited to 'examples/GuiClient/mainDialog.cpp') 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 #include +#include +#include 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 = "%1 wants to subscribe"; + break; + case QXmppPresence::Subscribed: + message = "%1 accepted your request"; + break; + case QXmppPresence::Unsubscribe: +// message = "%1 unsubscribe"; + break; + case QXmppPresence::Unsubscribed: +// message = "%1 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; + } +} -- cgit v1.2.3