File fix-upstream-new-qxmpp.patch of Package leechcraft

diff -ru src.orig/plugins/azoth/plugins/xoox/adhoccommandserver.cpp src/plugins/azoth/plugins/xoox/adhoccommandserver.cpp
--- src.orig/plugins/azoth/plugins/xoox/adhoccommandserver.cpp	2012-08-11 13:17:36.000000000 +0400
+++ src/plugins/azoth/plugins/xoox/adhoccommandserver.cpp	2012-09-11 09:46:14.466231154 +0400
@@ -374,8 +374,11 @@
 				const QString& from = var.isEmpty () ?
 						base->GetHumanReadableID () :
 						base->GetHumanReadableID () + '/' + var;
-				QXmppExtendedAddress address ("ofrom", from);
-				msg.setExtendedAddresses (QXmppExtendedAddressList () << address);
+
+				QXmppExtendedAddress address;
+				address.setType ("ofrom");
+				address.setJid (from);
+				msg.setExtendedAddresses (QList<QXmppExtendedAddress> () << address);
 
 				Conn_->GetClient ()->sendPacket (msg);
 			}
diff -ru src.orig/plugins/azoth/plugins/xoox/clientconnection.cpp src/plugins/azoth/plugins/xoox/clientconnection.cpp
--- src.orig/plugins/azoth/plugins/xoox/clientconnection.cpp	2012-08-11 13:17:36.000000000 +0400
+++ src/plugins/azoth/plugins/xoox/clientconnection.cpp	2012-09-11 09:35:52.930232413 +0400
@@ -211,7 +211,7 @@
 			vm.clientName (),
 			vm.clientVersion ()
 		};
-		DiscoveryManager_->setInfoForm (XEP0232Handler::ToDataForm (si));
+		DiscoveryManager_->setClientInfoForm (XEP0232Handler::ToDataForm (si));
 
 		connect (Client_,
 				SIGNAL (connected ()),
@@ -363,7 +363,6 @@
 				conf.setPort (port);
 			conf.setKeepAliveInterval (KAInterval_);
 			conf.setKeepAliveTimeout (KATimeout_);
-			conf.setUseSASLAuthentication (false);
 			Client_->connectToServer (conf, pres);
 
 			FirstTimeConnect_ = false;
diff -ru src.orig/plugins/azoth/plugins/xoox/entrybase.cpp src/plugins/azoth/plugins/xoox/entrybase.cpp
--- src.orig/plugins/azoth/plugins/xoox/entrybase.cpp	2012-08-11 13:17:36.000000000 +0400
+++ src/plugins/azoth/plugins/xoox/entrybase.cpp	2012-09-11 09:34:53.623805047 +0400
@@ -27,6 +27,7 @@
 #include <QXmppPresence.h>
 #include <QXmppClient.h>
 #include <QXmppRosterManager.h>
+#include <QXmppDiscoveryManager.h>
 #include <util/util.h>
 #include <interfaces/azoth/iproxyobject.h>
 #include <interfaces/azoth/azothutil.h>
@@ -269,7 +270,10 @@
 			to += '/' + variant;
 		pres.setTo (to);
 
-		conn->GetClient ()->addProperCapability (pres);
+		auto discoMgr = conn->GetClient ()->findExtension<QXmppDiscoveryManager> ();
+		pres.setCapabilityHash ("sha-1");
+		pres.setCapabilityNode (discoMgr->clientCapabilitiesNode ());
+		pres.setCapabilityVer (discoMgr->capabilities ().verificationString ());
 		conn->GetClient ()->sendPacket (pres);
 	}
 
diff -ru src.orig/plugins/azoth/plugins/xoox/inbandaccountregsecondpage.cpp src/plugins/azoth/plugins/xoox/inbandaccountregsecondpage.cpp
--- src.orig/plugins/azoth/plugins/xoox/inbandaccountregsecondpage.cpp	2012-08-11 13:17:36.000000000 +0400
+++ src/plugins/azoth/plugins/xoox/inbandaccountregsecondpage.cpp	2012-09-11 09:35:00.123742286 +0400
@@ -153,8 +153,8 @@
 
 		QXmppConfiguration conf;
 		conf.setDomain (server);
-		conf.setSASLAuthMechanism (QXmppConfiguration::SASLAnonymous);
-		conf.setIgnoreAuth (true);
+		conf.setUseNonSASLAuthentication (false);
+		conf.setUseSASLAuthentication (false);
 		Client_->connectToServer (conf);
 
 		SetState (SConnecting);
diff -ru src.orig/plugins/azoth/plugins/xoox/vcarddialog.cpp src/plugins/azoth/plugins/xoox/vcarddialog.cpp
--- src.orig/plugins/azoth/plugins/xoox/vcarddialog.cpp	2012-08-11 13:17:36.000000000 +0400
+++ src/plugins/azoth/plugins/xoox/vcarddialog.cpp	2012-09-11 09:34:53.614805134 +0400
@@ -115,11 +115,13 @@
 		else
 			Ui_.LabelPhoto_->setText (tr ("No photo"));
 
+		/* TODO wait until newer QXmpp
 		Ui_.OrgName_->setText (vcard.orgName ());
 		Ui_.OrgUnit_->setText (vcard.orgUnit ());
 		Ui_.Title_->setText (vcard.title ());
 		Ui_.Role_->setText (vcard.role ());
 		Ui_.About_->setPlainText (vcard.desc ());
+		*/
 	}
 
 	void VCardDialog::BuildPhones (const QXmppVCardPhoneList& phonesList)
@@ -127,22 +129,22 @@
 		QStringList phones;
 		Q_FOREACH (const QXmppVCardPhone& phone, phonesList)
 		{
-			if (phone.number.isEmpty ())
+			if (phone.number ().isEmpty ())
 				continue;
 
 			QStringList attrs;
-			if (phone.isPref)
+			if (phone.type () & QXmppVCardPhone::Preferred)
 				attrs << tr ("preferred");
-			if (phone.isHome)
+			if (phone.type () & QXmppVCardPhone::Home)
 				attrs << tr ("home");
-			if (phone.isWork)
+			if (phone.type () & QXmppVCardPhone::Work)
 				attrs << tr ("work");
-			if (phone.isCell)
+			if (phone.type () & QXmppVCardPhone::Cell)
 				attrs << tr ("cell");
 
 			phones << (attrs.isEmpty () ?
-						phone.number :
-						(phone.number + " (" + attrs.join (", ") + ")"));
+						phone.number () :
+						(phone.number () + " (" + attrs.join (", ") + ")"));
 		}
 		Ui_.EditPhone_->setText (phones.join ("; "));
 	}
@@ -152,22 +154,22 @@
 		QStringList emails;
 		Q_FOREACH (const QXmppVCardEmail& email, emailsList)
 		{
-			if (email.address.isEmpty ())
+			if (email.address ().isEmpty ())
 				continue;
 
 			QStringList attrs;
-			if (email.isPref)
+			if (email.type () == QXmppVCardEmail::Preferred)
 				attrs << tr ("preferred");
-			if (email.isHome)
+			if (email.type () == QXmppVCardEmail::Home)
 				attrs << tr ("home");
-			if (email.isWork)
+			if (email.type () == QXmppVCardEmail::Work)
 				attrs << tr ("work");
-			if (email.isX400)
+			if (email.type () == QXmppVCardEmail::X400)
 				attrs << "X400";
 
 			emails << (attrs.isEmpty () ?
-						email.address :
-						(email.address + " (" + attrs.join (", ") + ")"));
+						email.address () :
+						(email.address () + " (" + attrs.join (", ") + ")"));
 		}
 		Ui_.EditEmail_->setText (emails.join ("; "));
 	}
@@ -178,17 +180,18 @@
 		int addrNum = 1;
 		Q_FOREACH (const QXmppVCardAddress& address, addressList)
 		{
-			if (address.isEmpty ())
+			if ((address.country () + address.locality () + address.postcode () +
+					address.region () + address.street ()).isEmpty ())
 				continue;
 
 			QStringList attrs;
-			if (address.isHome)
+			if (address.type () & QXmppVCardAddress::Home)
 				attrs << tr ("home");
-			if (address.isWork)
+			if (address.type () & QXmppVCardAddress::Work)
 				attrs << tr ("work");
-			if (address.isPostal)
+			if (address.type () & QXmppVCardAddress::Postal)
 				attrs << tr ("postal");
-			if (address.isPref)
+			if (address.type () & QXmppVCardAddress::Preferred)
 				attrs << tr ("preferred");
 
 			QString str;
@@ -207,12 +210,11 @@
 				if (!val.isEmpty ())
 					fields << label.arg (val);
 			};
-			addField (tr ("Country: %1"), address.country);
-			addField (tr ("Region: %1"), address.region);
-			addField (tr ("Locality: %1", "User's locality"), address.locality);
-			addField (tr ("Street: %1"), address.street);
-			addField (tr ("Additional: %1", "Additional address in user's address"), address.extAdd);
-			addField (tr ("Postal code: %1"), address.pCode);
+			addField (tr ("Country: %1"), address.country ());
+			addField (tr ("Region: %1"), address.region ());
+			addField (tr ("Locality: %1", "User's locality"), address.locality ());
+			addField (tr ("Street: %1"), address.street ());
+			addField (tr ("Postal code: %1"), address.postcode ());
 			str += "<ul><li>";
 			str += fields.join ("</li><li>");
 			str += "</li></ul>";
@@ -292,11 +294,13 @@
 		VCard_.setNickName (Ui_.EditNick_->text ());
 		VCard_.setBirthday (Ui_.EditBirthday_->date ());
 		VCard_.setUrl (Ui_.EditURL_->text ());
+		/* TODO wait for newer QXmpp
 		VCard_.setOrgName (Ui_.OrgName_->text ());
 		VCard_.setOrgUnit (Ui_.OrgUnit_->text ());
 		VCard_.setTitle (Ui_.Title_->text ());
 		VCard_.setRole (Ui_.Role_->text ());
 		VCard_.setDesc (Ui_.About_->toPlainText ());
+		*/
 		VCard_.setEmail (QString ());
 
 		const QPixmap *px = Ui_.LabelPhoto_->pixmap ();
@@ -335,23 +339,28 @@
 				<< tr ("work")
 				<< tr ("cell");
 
+		const std::vector<QXmppVCardPhone::Type> type2pos =
+		{
+			QXmppVCardPhone::Preferred,
+			QXmppVCardPhone::Home,
+			QXmppVCardPhone::Work,
+			QXmppVCardPhone::Cell
+		};
+
 		VCardListEditDialog dia (options, this);
 		dia.setWindowTitle (tr ("VCard phones"));
 		Q_FOREACH (const QXmppVCardPhone& phone, VCard_.phones ())
 		{
-			if (phone.number.isEmpty ())
+			if (phone.number ().isEmpty ())
 				continue;
 
 			QPair<QString, QStringList> pair;
-			pair.first = phone.number;
-			if (phone.isPref)
-				pair.second << options.at (0);
-			if (phone.isHome)
-				pair.second << options.at (1);
-			if (phone.isWork)
-				pair.second << options.at (2);
-			if (phone.isCell)
-				pair.second << options.at (3);
+			pair.first = phone.number ();
+
+			for (size_t i = 0; i < type2pos.size (); ++i)
+				if (phone.type () & type2pos [i])
+					pair.second << options.at (i);
+
 			dia.AddItems (QList<decltype (pair)> () << pair);
 		}
 
@@ -362,11 +371,14 @@
 		Q_FOREACH (const auto& item, dia.GetItems ())
 		{
 			QXmppVCardPhone phone;
-			phone.number = item.first;
-			phone.isPref = item.second.contains (options.at (0));
-			phone.isHome = item.second.contains (options.at (1));
-			phone.isWork = item.second.contains (options.at (2));
-			phone.isCell = item.second.contains (options.at (3));
+			phone.setNumber (item.first);
+
+			QXmppVCardPhone::Type type = QXmppVCardPhone::None;
+			for (size_t i = 0; i < type2pos.size (); ++i)
+				if (item.second.contains (options.at (i)))
+					type &= type2pos [i];
+			phone.setType (type);
+
 			list << phone;
 		}
 		VCard_.setPhones (list);
@@ -381,23 +393,27 @@
 				<< tr ("work")
 				<< "X400";
 
+		const std::vector<QXmppVCardEmail::Type> type2pos =
+		{
+			QXmppVCardEmail::Preferred,
+			QXmppVCardEmail::Home,
+			QXmppVCardEmail::Work,
+			QXmppVCardEmail::X400
+		};
+
 		VCardListEditDialog dia (options, this);
 		dia.setWindowTitle (tr ("VCard emails"));
 		Q_FOREACH (const QXmppVCardEmail& email, VCard_.emails ())
 		{
-			if (email.address.isEmpty ())
+			if (email.address ().isEmpty ())
 				continue;
 
 			QPair<QString, QStringList> pair;
-			pair.first = email.address;
-			if (email.isPref)
-				pair.second << options.at (0);
-			if (email.isHome)
-				pair.second << options.at (1);
-			if (email.isWork)
-				pair.second << options.at (2);
-			if (email.isX400)
-				pair.second << options.at (3);
+			pair.first = email.address ();
+			for (size_t i = 0; i < type2pos.size (); ++i)
+				if (email.type () & type2pos [i])
+					pair.second << options.at (i);
+
 			dia.AddItems (QList<decltype (pair)> () << pair);
 		}
 
@@ -408,11 +424,14 @@
 		Q_FOREACH (const auto& item, dia.GetItems ())
 		{
 			QXmppVCardEmail email;
-			email.address = item.first;
-			email.isPref = item.second.contains (options.at (0));
-			email.isHome = item.second.contains (options.at (1));
-			email.isWork = item.second.contains (options.at (2));
-			email.isX400 = item.second.contains (options.at (3));
+			email.setAddress (item.first);
+
+			QXmppVCardEmail::Type type = QXmppVCardEmail::None;
+			for (size_t i = 0; i < type2pos.size (); ++i)
+				if (item.second.contains (options.at (i)))
+					type &= type2pos [i];
+			email.setType (type);
+
 			list << email;
 		}
 		VCard_.setEmails (list);
diff -ru src.orig/plugins/azoth/plugins/xoox/vcarddialog.h src/plugins/azoth/plugins/xoox/vcarddialog.h
--- src.orig/plugins/azoth/plugins/xoox/vcarddialog.h	2012-08-11 13:17:36.000000000 +0400
+++ src/plugins/azoth/plugins/xoox/vcarddialog.h	2012-09-11 09:34:53.622805056 +0400
@@ -32,6 +32,10 @@
 	class EntryBase;
 	class GlooxAccount;
 
+	typedef QList<QXmppVCardPhone> QXmppVCardPhoneList;
+	typedef QList<QXmppVCardEmail> QXmppVCardEmailList;
+	typedef QList<QXmppVCardAddress> QXmppVCardAddressList;
+
 	class VCardDialog : public QDialog
 	{
 		Q_OBJECT
openSUSE Build Service is sponsored by