aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-28 15:27:15 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-28 15:27:15 +0000
commitbbf43cdf7f0b5af477f17e3587c06e927d30f4aa (patch)
tree492c4bcdb82779089f2c31f2fbc61884f2cd640b
parentd8c86658f117f2cdf2047a2f02daf8cde3eae7da (diff)
downloadqxmpp-bbf43cdf7f0b5af477f17e3587c06e927d30f4aa.tar.gz
adduser implementation
-rw-r--r--examples/GuiClient/mainDialog.cpp86
-rw-r--r--examples/GuiClient/mainDialog.h2
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);