
New patches:

[Entity Time support
Maciej Niedzielski <machekku@uaznia.net>**20070119201927
 Reply to both urn:xmpp:time and jabber:iq:time queries. Display timezone and time based on XEP-0202 timezone information.
 Note: all timezone offsets are now in minutes, not hours!
] {
hunk ./iris/xmpp-im/types.cpp 1700
-		d->timeStamp = d->timeStamp.addSecs(timeZoneOffset * 3600);
+		d->timeStamp = d->timeStamp.addSecs(timeZoneOffset * 60);
hunk ./iris/xmpp-im/xmpp_tasks.cpp 703
-					dt = dt.addSecs(client()->timeZoneOffset() * 3600);
+					dt = dt.addSecs(client()->timeZoneOffset() * 60);
addfile ./src/entitytimetask.cpp
hunk ./src/entitytimetask.cpp 1
+/*
+ * entitytimetask.cpp - Entity time fetching task
+ * Copyright (C) 2007  Maciej Niedzielski
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include <QTime>
+#include "entitytimetask.h"
+#include "xmpp_xmlcommon.h"
+
+using namespace XMPP;
+
+/**
+ * \class EntityTimeTask
+ * \brief Gets entity time
+ *
+ * This task can be used to get time zone information of an entity.
+ */
+
+
+// convert [+|-]hh:mm to minutes
+static Maybe<int> stringToOffset(const QString &off)
+{
+	QTime t = QTime::fromString(off.mid(1), "hh:mm");
+
+	if (t.isValid() && off[0] == '+' || off[0] == '-') {
+		int m = t.hour() * 60 + t.minute();
+		if (off[0] == '-')
+			m = -m;
+		return m;
+	}
+	else {
+		return Maybe<int>();
+	}
+}
+
+/**
+ * \brief Create new task.
+ */
+EntityTimeTask::EntityTimeTask(Task* parent) : Task(parent)
+{
+}
+
+/**
+ * \brief Queried entity's JID.
+ */
+const Jid & EntityTimeTask::jid() const
+{
+	return jid_;
+}
+
+/**
+ * \brief Prepares the task to get information from JID.
+ */
+void EntityTimeTask::get(const Jid &jid)
+{
+	jid_ = jid;
+	iq_ = createIQ(doc(), "get", jid_.full(), id());
+	QDomElement query = doc()->createElement("query");
+	query.setAttribute("xmlns", "urn:xmpp:time");
+	iq_.appendChild(query);
+}
+
+void EntityTimeTask::onGo()
+{
+	send(iq_);
+}
+
+bool EntityTimeTask::take(const QDomElement &x)
+{
+	if (!iqVerify(x, jid_, id()))
+		return false;
+
+	if (x.attribute("type") == "result") {
+		bool found = false;
+		QDomElement q = queryTag(x);
+		QDomElement tag;
+		tag = findSubTag(q, "utc", &found);
+		if (found)
+			utc_ = tagContent(tag);
+		tag = findSubTag(q, "tzo", &found);
+		if (found) {
+			tzoString_ = tagContent(tag);
+			tzo_ = stringToOffset(tzoString_);
+		}
+		setSuccess();
+	}
+	else {
+		setError(x);
+	}
+
+	return true;
+}
+
+/**
+ * \brief Timezone offset in [+|-]hh:mm format (or empty string if no data).
+ */
+const QString& EntityTimeTask::timezoneOffsetString() const
+{
+	return tzoString_;
+}
+
+/**
+ * \brief Timezone offset in minutes (if available).
+ */
+Maybe<int> EntityTimeTask::timezoneOffset() const
+{
+	return tzo_;
+}
addfile ./src/entitytimetask.h
hunk ./src/entitytimetask.h 1
+/*
+ * entitytimetask.h - Entity time fetching task
+ * Copyright (C) 2007  Maciej Niedzielski
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#ifndef ENTITYTIMETASK_H
+#define ENTITYTIMETASK_H
+
+#include <QDomElement>
+#include "xmpp_task.h"
+#include "xmpp_jid.h"
+#include "maybe.h"
+
+class EntityTimeTask : public XMPP::Task
+{
+public:
+	EntityTimeTask(Task*);
+
+	void onGo();
+	bool take(const QDomElement &);
+	void get(const XMPP::Jid &jid);
+	const XMPP::Jid & jid() const;
+
+	const QString& timezoneOffsetString() const;
+	Maybe<int> timezoneOffset() const;
+
+private:
+	QDomElement iq_;
+	XMPP::Jid jid_;
+	QString utc_, tzoString_;
+	Maybe<int> tzo_;
+};
+
+#endif
hunk ./src/infodlg.cpp 43
+#include "entitytimetask.h"
hunk ./src/infodlg.cpp 67
+	QList<QString> timeRequested;
hunk ./src/infodlg.cpp 123
+			requestEntityTime(d->jid.withResource(r.name()));
hunk ./src/infodlg.cpp 605
+			updateStatus();
+		}
+	}
+}
+
+void InfoDlg::requestEntityTime(const Jid& j)
+{
+	d->timeRequested += j.full();
+	EntityTimeTask *jet = new EntityTimeTask(d->pa->client()->rootTask());
+	connect(jet, SIGNAL(finished()), SLOT(entityTimeFinished()));
+	jet->get(j);
+	jet->go(true);
+}
+
+void InfoDlg::entityTimeFinished()
+{
+	EntityTimeTask *j = (EntityTimeTask *)sender();
+	if(j->success()) {
+		foreach(UserListItem* u, d->pa->findRelevant(j->jid())) {
+			UserResourceList::Iterator rit = u->userResourceList().find(j->jid().resource());
+			bool found = (rit == u->userResourceList().end()) ? false: true;
+			if(!found)
+				continue;
+
+			(*rit).setTimezone(j->timezoneOffset());
+			d->pa->contactProfile()->updateEntry(*u);
hunk ./src/infodlg.h 61
+	void entityTimeFinished();
hunk ./src/infodlg.h 81
+	void requestEntityTime(const XMPP::Jid& j);
hunk ./src/psiaccount.cpp 116
+#include "timeserver.h"
hunk ./src/psiaccount.cpp 567
+	// Time server
+	new TimeServer(d->client->rootTask());
+
hunk ./src/src.pri 168
+	$$PWD/entitytimetask.h \
+	$$PWD/timeserver.h \
hunk ./src/src.pri 281
+	$$PWD/entitytimetask.cpp \
+	$$PWD/timeserver.cpp \
hunk ./src/systeminfo.cpp 40
-		timezone_offset_ = s.toInt();
+		timezone_offset_ = s.toInt() * 60;	// FIX-ME: should really read the offset in minutes
hunk ./src/systeminfo.cpp 147
-	//GetTimeZoneInformation(&i);
-	//timezone_offset_ = (-i.Bias) / 60;
hunk ./src/systeminfo.cpp 152
-	timezone_offset_ = (-bias) / 60;
+	timezone_offset_ = -bias;
hunk ./src/systeminfo.cpp 194
+/**
+ * \fn int SystemInfo::timezoneOffset()
+ * \brief Local timezone offset in minutes.
+ */
+
+/**
+ * \fn const QString& SystemInfo::timezoneString() const
+ * \brief Local timezone name.
+ */
+
addfile ./src/timeserver.cpp
hunk ./src/timeserver.cpp 1
+/*
+ * timeserver.cpp - Entity time server
+ * Copyright (C) 2001, 2002, 2007  Justin Karneges, Maciej Niedzielski
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#include "timeserver.h"
+#include "systeminfo.h"
+#include "xmpp_xmlcommon.h"
+#include <QDateTime>
+
+using namespace XMPP;
+
+
+/**
+ * \class TimeServer
+ * \brief Server current time
+ *
+ * This serving task answers urn:xmpp:time and jabber:iq:time queries
+ */
+
+TimeServer::TimeServer(Task *parent)
+:Task(parent)
+{
+}
+
+TimeServer::~TimeServer()
+{
+}
+
+bool TimeServer::take(const QDomElement &e)
+{
+	if (e.tagName() != "iq" || e.attribute("type") != "get")
+		return false;
+
+	QString ns = queryNS(e);
+	if (ns == "urn:xmpp:time") {
+		QDomElement iq = createIQ(doc(), "result", e.attribute("from"), e.attribute("id"));
+		QDomElement query = doc()->createElement("query");
+		query.setAttribute("xmlns", ns);
+		iq.appendChild(query);
+
+		QDateTime local = QDateTime::currentDateTime();
+		int off = SystemInfo::instance()->timezoneOffset();
+		QTime t = QTime(0, 0).addSecs(abs(off)*60);
+		QString tzo = (off < 0 ? "-" : "+") + t.toString("HH:mm");
+		query.appendChild(textTag(doc(), "tzo", tzo));
+		query.appendChild(textTag(doc(), "utc", local.toUTC().toString(Qt::ISODate) + "Z"));
+
+		send(iq);
+		return true;
+	}
+	else if (ns == "jabber:iq:time") {
+		QDomElement iq = createIQ(doc(), "result", e.attribute("from"), e.attribute("id"));
+		QDomElement query = doc()->createElement("query");
+		query.setAttribute("xmlns", "jabber:iq:time");
+		iq.appendChild(query);
+
+		QDateTime local = QDateTime::currentDateTime();
+		QString str = SystemInfo::instance()->timezoneString();
+		query.appendChild(textTag(doc(), "utc", TS2stamp(local.toUTC())));
+		query.appendChild(textTag(doc(), "tz", str));
+		query.appendChild(textTag(doc(), "display", QString("%1 %2").arg(local.toString()).arg(str)));
+
+		send(iq);
+		return true;
+	}
+	return false;
+}
addfile ./src/timeserver.h
hunk ./src/timeserver.h 1
+/*
+ * timeserver.h - Entity time server
+ * Copyright (C) 2007  Maciej Niedzielski
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+#ifndef TIMESERVER_H
+#define TIMESERVER_H
+
+#include "xmpp_task.h"
+
+class TimeServer : public XMPP::Task
+{
+	Q_OBJECT
+public:
+	TimeServer(Task *);
+	~TimeServer();
+	bool take(const QDomElement &);
+};
+
+#endif
hunk ./src/userlist.cpp 106
+/**
+ * \brief Timezone offset in minutes (if available).
+ */
+Maybe<int> UserResource::timezoneOffset() const
+{
+	return v_tzo;
+}
+
+/**
+ * \brief Timezone offset as string (or empty string if no data).
+ *
+ * String is formatted as "UTC[+|-]h[:mm]".
+ */
+const QString& UserResource::timezoneOffsetString() const
+{
+	return v_tzoString;
+}
+
+/**
+ * \brief Set timezone offset (in minutes).
+ */
+void UserResource::setTimezone(Maybe<int> off)
+{
+	v_tzo = off;
+
+	if (off.hasValue()) {
+		QTime t = QTime(0, 0).addSecs(abs(off.value())*60);
+		QString u = QString("UTC") + (off.value() < 0 ? "-" : "+");
+		u += QString::number(t.hour());
+		if (t.minute())
+			u += QString(":%1").arg(t.minute());
+		v_tzoString = u;
+	}
+	else
+		v_tzoString = "";
+}
+
hunk ./src/userlist.cpp 603
+			// Entity Time
+			if (r.timezoneOffset().hasValue()) {
+				QDateTime dt = QDateTime::currentDateTime().toUTC().addSecs(r.timezoneOffset().value()*60);
+				str += QString("<br><nobr>") + QObject::tr("Time") + QString(": %1 (%2)").arg(dt.toString(Qt::TextDate)).arg(r.timezoneOffsetString()) + "</nobr>";
+			}
+
hunk ./src/userlist.h 33
+#include "maybe.h"
hunk ./src/userlist.h 52
+	Maybe<int> timezoneOffset() const;
+	const QString& timezoneOffsetString() const;
+	void setTimezone(Maybe<int> tzo);
+
hunk ./src/userlist.h 72
+	Maybe<int> v_tzo;
+	QString v_tzoString;
}

[Fix and refactor Entity Time in InfoDlg
Maciej Niedzielski <machekku@uaznia.net>**20070120031716] {
hunk ./src/infodlg.cpp 67
-	QList<QString> timeRequested;
hunk ./src/infodlg.cpp 121
-			requestClientVersion(d->jid.withResource(r.name()));
-			requestEntityTime(d->jid.withResource(r.name()));
+			requestResourceInfo(d->jid.withResource(r.name()));
hunk ./src/infodlg.cpp 582
-void InfoDlg::requestClientVersion(const Jid& j)
+/**
+ * \brief Requests per-resource information.
+ *
+ * Gets information about client version and time.
+ */
+void InfoDlg::requestResourceInfo(const Jid& j)
hunk ./src/infodlg.cpp 590
+
hunk ./src/infodlg.cpp 595
+
+	EntityTimeTask *jet = new EntityTimeTask(d->pa->client()->rootTask());
+	connect(jet, SIGNAL(finished()), SLOT(entityTimeFinished()));
+	jet->get(j);
+	jet->go(true);
hunk ./src/infodlg.cpp 619
-void InfoDlg::requestEntityTime(const Jid& j)
-{
-	d->timeRequested += j.full();
-	EntityTimeTask *jet = new EntityTimeTask(d->pa->client()->rootTask());
-	connect(jet, SIGNAL(finished()), SLOT(entityTimeFinished()));
-	jet->get(j);
-	jet->go(true);
-}
-
hunk ./src/infodlg.cpp 661
-			requestClientVersion(j.withResource(r.name()));
+			requestResourceInfo(j.withResource(r.name()));
hunk ./src/infodlg.h 80
-	void requestClientVersion(const XMPP::Jid& j);
-	void requestEntityTime(const XMPP::Jid& j);
+	void requestResourceInfo(const XMPP::Jid& j);
}

[Use XEP-0202 temporary namespace
Maciej Niedzielski <machekku@uaznia.net>**20070208161809] {
hunk ./src/entitytimetask.cpp 74
-	query.setAttribute("xmlns", "urn:xmpp:time");
+	query.setAttribute("xmlns", "http://www.xmpp.org/extensions/xep-0202.html#ns");
hunk ./src/timeserver.cpp 33
- * This serving task answers urn:xmpp:time and jabber:iq:time queries
+ * This serving task answers XEP-0202 and XEP-0090 queries
hunk ./src/timeserver.cpp 51
-	if (ns == "urn:xmpp:time") {
+	if (ns == "http://www.xmpp.org/extensions/xep-0202.html#ns") {
}

[Updated delayed delivery (XEP-0203)
Maciej Niedzielski <machekku@uaznia.net>**20070120010516] {
hunk ./iris/xmpp-im/types.cpp 1484
-		e.setAttribute("stamp", TS2stamp(d->timeStamp));
+		e.setAttribute("stamp", TS2stamp(d->timeStamp.toUTC()));
+		s.appendChild(e);
+
+		e = s.createElement("urn:xmpp:delay", "x");
+		e.setAttribute("stamp", d->timeStamp.toUTC().toString(Qt::ISODate) + "Z");
hunk ./iris/xmpp-im/types.cpp 1701
-	QDomElement t = root.elementsByTagNameNS("jabber:x:delay", "x").item(0).toElement();
-	if(!t.isNull()) {
-		d->timeStamp = stamp2TS(t.attribute("stamp"));
-		d->timeStamp = d->timeStamp.addSecs(timeZoneOffset * 60);
+	QDomElement t = root.elementsByTagNameNS("urn:xmpp:delay", "x").item(0).toElement();
+	if (!t.isNull()) {
+		d->timeStamp = QDateTime::fromString(t.attribute("stamp").left(19), Qt::ISODate).addSecs(timeZoneOffset * 60);
+		d->spooled = true;
+	}
+	else if (t = root.elementsByTagNameNS("jabber:x:delay", "x").item(0).toElement(), !t.isNull()) {
+		d->timeStamp = stamp2TS(t.attribute("stamp")).addSecs(timeZoneOffset * 60);
hunk ./iris/xmpp-im/xmpp_tasks.cpp 706
+		}
+		else if(i.tagName() == "x" && i.attribute("xmlns") == "urn:xmpp:delay") {
+			if(i.hasAttribute("stamp")) {
+				QDateTime dt = QDateTime::fromString(i.attribute("stamp").left(19), Qt::ISODate).addSecs(client()->timeZoneOffset() * 60);
+				p.setTimeStamp(dt);
+			}
}

[Use XEP-0203 temporary namespace
Maciej Niedzielski <machekku@uaznia.net>**20070209011558] {
hunk ./iris/xmpp-im/types.cpp 1487
-		e = s.createElement("urn:xmpp:delay", "x");
+		e = s.createElement("http://www.xmpp.org/extensions/xep-0203.html#ns", "x");
hunk ./iris/xmpp-im/types.cpp 1701
-	QDomElement t = root.elementsByTagNameNS("urn:xmpp:delay", "x").item(0).toElement();
+	QDomElement t = root.elementsByTagNameNS("http://www.xmpp.org/extensions/xep-0203.html#ns", "x").item(0).toElement();
hunk ./iris/xmpp-im/xmpp_tasks.cpp 707
-		else if(i.tagName() == "x" && i.attribute("xmlns") == "urn:xmpp:delay") {
+		else if(i.tagName() == "x" && i.attribute("xmlns") == "http://www.xmpp.org/extensions/xep-0203.html#ns") {
}

Context:

[Bring To Front and New Blank Message global shortcuts
Maciej Niedzielski <machekku@uaznia.net>**20070208151313] 
[Disable auto-browse by default.
Remko Troncon <remko@psi-im.org>**20070208140039] 
[Show Hidden -> Show Hidden Contacts.
Remko Troncon <remko@psi-im.org>**20070207140047] 
[Default 'Show "show away/xa"' to false.
Remko Troncon <remko@psi-im.org>**20070207135851] 
[Reply to roster pushes.
Remko Troncon <remko@psi-im.org>**20070207112517] 
[Don't advertise empty hostnames for file transfer
Maciej Niedzielski <machekku@uaznia.net>**20070207125626] 
[Disable rich text pasting in message window
Maciej Niedzielski <machekku@uaznia.net>**20070206201931] 
[Display inline message subject in a separate line
Maciej Niedzielski <machekku@uaznia.net>**20070206200127] 
[Enable XHTML-IM rendering in messages
Maciej Niedzielski <machekku@uaznia.net>**20070206193616] 
[Don't invite people to a MUC if they are already there.
Remko Troncon <remko@psi-im.org>**20070206151054] 
[Add drag functionality to MUC dialog.
Remko Troncon <remko@psi-im.org>**20070206145853] 
[Fixing 'Add' button in MUC config dialog.
Remko Troncon <remko@psi-im.org>**20070206142956] 
[Removing some obsolete code.
Remko Troncon <remko@psi-im.org>**20070205131835] 
[Added a Google FT dialog.
Remko Troncon <remko@psi-im.org>**20070205122919] 
[Fixed some XML namespace problems with libjingle.
Remko Troncon <remko@psi-im.org>**20070205103134] 
[Forgot 2 class declarations.
Remko Troncon <remko@psi-im.org>**20070205101157] 
[Initial work on Google FT support.
Remko Troncon <remko@psi-im.org>**20070204153530] 
[Separating Google FT from Jingle.
Remko Troncon <remko@psi-im.org>**20070204105034] 
[More flexible libjingle compilation.
Remko Troncon <remko@psi-im.org>**20070203201432] 
[Making the tip dialog bigger.
Remko Troncon <remko@psi-im.org>**20070203203643] 
[Add missing library to XMMS plugin.
Remko Troncon <remko@psi-im.org>**20070203161332] 
[Fixed compilation warning on Linux.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070202201441] 
[Fixed QCA-SASL issue where the authzid was always set.
Remko Troncon <remko@psi-im.org>**20070202155936] 
[Join two lines in advanced options.
Remko Troncon <remko@psi-im.org>**20070202012231] 
[Some visual tweaks in the toolbar dialog.
Remko Troncon <remko@psi-im.org>**20070202011819] 
[Make more room in the toolbar dialog.
Remko Troncon <remko@psi-im.org>**20070202010534] 
[Clarified 'Unable to bind port' message.
Remko Troncon <remko@psi-im.org>**20070202004805] 
[Make about dialog parentless.
Remko Troncon <remko@psi-im.org>**20070202003224] 
[Avoid compilation warning.
Remko Troncon <remko@psi-im.org>**20070202001336] 
[Fancifying the tip of the day.
Remko Troncon <remko@psi-im.org>**20070202000723] 
[Disable gnupg again.
Remko Troncon <remko@psi-im.org>**20070201174210] 
[Fix disabled 'add' button in MUC config dialog.
Remko Troncon <remko@psi-im.org>**20070201173036] 
[Avoid broadcasting tune information when WinAmp scrolls.
Remko Troncon <remko@psi-im.org>**20070201102418
 Thanks to michalj.
] 
[Fix simplesasl challenge parser
Maciej Niedzielski <machekku@uaznia.net>**20070206120831] 
[(Don't) sort groups in MUC window
Maciej Niedzielski <machekku@uaznia.net>**20070201163554] 
[Do not present error message when unable to fetch the server list.
Remko Troncon <remko@psi-im.org>**20070131202025] 
[Updated README.
Remko Troncon <remko@psi-im.org>**20070131190050] 
[Fix tab order in account registration dialog.
Remko Troncon <remko@psi-im.org>**20070131184220] 
[Make registration URIs clickable (and selectable).
Remko Troncon <remko@psi-im.org>**20070131182626] 
[Move the account registration dialog back to the first step upon disconnect.
Remko Troncon <remko@psi-im.org>**20070131121609] 
[Fix segfault when enabling/disabling accounts.
Remko Troncon <remko@psi-im.org>**20070131103630] 
[Fixing the crash when using tabs and trying to close a chat with a recently incoming message.
Kevin Smith <kismith@psi-im.org>**20070131094422] 
[Workaround for servers that do not send a response to an unregister request.
Remko Troncon <remko@psi-im.org>**20070131093531] 
[Inform the user of his JID after registration.
Remko Troncon <remko@psi-im.org>**20070130212800] 
[Make Search button the default button of Search Dialog
Maciej Niedzielski <machekku@uaznia.net>**20070201012915] 
[Handle TLS when registering account.
Remko Troncon <remko@psi-im.org>**20070130205346] 
[Disabling of SSL is not necessary for account registration.
Remko Troncon <remko@psi-im.org>**20070130202653] 
[Some aesthetic changes to the regdlg.
Remko Troncon <remko@psi-im.org>**20070130201354] 
[Allow to retrieve the list of XMPP servers that support in-band registration.
Remko Troncon <remko@psi-im.org>**20070130192240] 
[Close connection when the user cancels registration.
Remko Troncon <remko@psi-im.org>**20070130181246] 
[Implemented in-band registration (XEP-0077).
Remko Troncon <remko@psi-im.org>**20070130171858
 Refactored registration dialog in the process.
] 
[Add instructions to XDataWidget.
Remko Troncon <remko@psi-im.org>**20070130153427] 
[Removed UI compilation warning.
Remko Troncon <remko@psi-im.org>**20070130115852] 
[Removed some warnings from .qc modules.
Remko Troncon <remko@psi-im.org>**20070130115709] 
[Move 'User says' chat option to hidden options.
Remko Troncon <remko@psi-im.org>**20070130102356] 
[Set 'Notify when auth received' to false by default.
Remko Troncon <remko@psi-im.org>**20070130101601] 
[Fixed Prev/Next tab comments.
Remko Troncon <remko@psi-im.org>**20070130100908] 
[Updated .desktop file to most recent version.
Remko Troncon <remko@psi-im.org>**20070130095632
 Alphabetized translations.
 Thanks to Cliff Dugal.
] 
[Added more tab-switching shortcuts for Windows users.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070129175036] 
[Refactored main window position restoring code.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070129173038] 
[Make auto-copy work also when selecting by double clicking
Maciej Niedzielski <machekku@uaznia.net>**20070128145937] 
[Get the next/previous tabs the right way around in the config file
Kevin Smith <kismith@psi-im.org>**20070126201231] 
[Change ContactView shortcuts without restart
Maciej Niedzielski <machekku@uaznia.net>**20070126111028] 
[Stanza error handling improvements
Maciej Niedzielski <machekku@uaznia.net>**20070125151126] 
[Fixed tooltips in DiscoDlg.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070118175228] 
[Use XMPP::Status::* constants instead of STATUS_*.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070110151520] 
[Removed outdated iconsets/emoticons/README file.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070109163008] 
[OptionsTabIconset* are now able to list embedded iconsets; Embedded default emoticons iconset.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070109162511] 
[IconsetSelect wouldn't assert when it doesn't have any iconsets.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070109161707] 
[Another qt3to4 patch (thanks again Stigger)
Kevin Smith <kismith@psi-im.org>**20070109105500] 
[Converting some classes using Qt3support to Qt4 proper (Thanks to Stigger)
Kevin Smith <kismith@psi-im.org>**20070109102145] 
[Added QSize to optionstree types.
Remko Troncon <remko@psi-im.org>**20070108203340] 
[GlobalAccel is now obsolete and removed from repository.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070108170202] 
[Global shortcuts.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070108065657
 Thanks to Machekku.
] 
[Sort room roster in groupchats.
Michail Pishchagin <mblsha@users.sourceforge.net>**20070107212236] 
[Gracefully resize columns in DiscoDlg.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061225004401] 
[Don't crash in GroupChatDlg when trying to perform an action on user who quit the room.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061224231038
 Thanks to Dion.
] 
[Use hostname when using HTTP connect proxy (FS#579).
Remko Troncon <remko@psi-im.org>**20061223102350
 Warning: this means that no SRV lookups are done anymore when a HTTP
 CONNECT PROXY is used. A slightly better detection mechanism will be
 implemented later.
] 
[Do not sign presence sent to MUC rooms (FS#606).
Remko Troncon <remko@psi-im.org>**20061220123454] 
[Fixed empty window appearing on OS X (FS#605).
Remko Troncon <remko@psi-im.org>**20061217201724] 
[Fix segfault on OS X due to double delete.
Remko Troncon <remko@psi-im.org>**20061217200303] 
[Added Q_OBJECT macro to TranslationManager.
Remko Troncon <remko@psi-im.org>**20061217104147] 
[Removing Q3CString from Jid.
Remko Troncon <remko@psi-im.org>**20061215224858] 
[Tightening include in jid.cpp.
Remko Troncon <remko@psi-im.org>**20061215222713] 
[Completed XEP-0004 (Data forms) support.
Remko Troncon <remko@psi-im.org>**20061214140351
 We now support data forms in messages (thanks to Roelof Naude)
] 
[Reply to invalid disco#info requests.
Remko Troncon <remko@psi-im.org>**20061214123701] 
[Added shortcuts icon.
Remko Troncon <remko@psi-im.org>**20061214115800] 
[Forgot closing #warning.
Remko Troncon <remko@psi-im.org>**20061214085033] 
[Removed MainWin::setInfo().
Michail Pishchagin <mblsha@users.sourceforge.net>**20061213161941] 
[Cleaning up some more singletons.
Remko Troncon <remko@psi-im.org>**20061213144209] 
[Clean up the default menubar.
Remko Troncon <remko@psi-im.org>**20061213143809] 
[Clean up the shortcutmanager upon exit.
Remko Troncon <remko@psi-im.org>**20061213141827] 
[Include language_name in the translations.
Remko Troncon <remko@psi-im.org>**20061213134432] 
[Fixed the SyncThread::call() method.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061213124029] 
[Chop off encoding from XML language string.
Remko Troncon <remko@psi-im.org>**20061213085832] 
[Added stream language setting.
Remko Troncon <remko@psi-im.org>**20061212232131] 
[Moved translation operations into TranslationManager.
Remko Troncon <remko@psi-im.org>**20061212222831] 
[Moving XData to iris.
Remko Troncon <remko@psi-im.org>**20061212144557] 
[Fixed compilation warnings when compiling in release mode.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061212100730] 
[Don't issue warning when deleting of pointer to incomplete type, when compiling moc_tabdlg.cpp.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061208085153] 
[Remove dependency on image plugins.
Remko Troncon <remko@psi-im.org>**20061207102450] 
[Fix double 'overwrite file' check.
Remko Troncon <remko@psi-im.org>**20061206215847
 Thanks to machekku.
] 
[HttpAuthRequest refactoring.
Remko Troncon <remko@psi-im.org>**20061206203535] 
[Allow empty http auth requests.
Remko Troncon <remko@psi-im.org>**20061206200908
 Thanks to Machekku.
] 
[Don't show http auth confirmation when iq type is not get.
Remko Troncon <remko@psi-im.org>**20061206195927
 Thanks to machekku.
] 
[Shortcuts options tab fix.
Remko Troncon <remko@psi-im.org>**20061206195426] 
[Reply to privacy list pushes.
Remko Troncon <remko@psi-im.org>**20061206194718] 
[Fix error replies to server.
Remko Troncon <remko@psi-im.org>**20061206194712] 
[Privacy list refactoring.
Remko Troncon <remko@psi-im.org>**20061206192411] 
[Filter text nodes in privacy lists.
Remko Troncon <remko@psi-im.org>**20061206191808] 
[Don't use relative paths in Psi project files.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061206162140] 
[Fixed menubar on non-osx platforms.
Remko Troncon <remko@psi-im.org>**20061206130833] 
[Fixed disappearing menubar on OS X.
Remko Troncon <remko@psi-im.org>**20061205194734] 
[Reset status messages when going offline.
Remko Troncon <remko@psi-im.org>**20061204133046] 
[Last Activity (XEP-0012) for offline users.
Remko Troncon <remko@psi-im.org>**20061204131343] 
[Disable 'Publish tune' if no PEP is available (FS#594).
Remko Troncon <remko@psi-im.org>**20061203150921] 
[Some PsiContactList refactoring.
Remko Troncon <remko@psi-im.org>**20061203133749] 
[Fix illegal nick change handling (FS#596).
Remko Troncon <remko@psi-im.org>**20061203123229] 
[Uncheck legacy ssl probe if disabled.
Remko Troncon <remko@psi-im.org>**20061129191140] 
[Some xmpptest tweaks.
Remko Troncon <remko@psi-im.org>**20061129191102] 
[Remove obsolete widgets.
Remko Troncon <remko@psi-im.org>**20061128175136] 
[Keep account JID bare.
Remko Troncon <remko@psi-im.org>**20061128140200] 
[Finished authzid support.
Remko Troncon <remko@psi-im.org>**20061128125911] 
[Encode domain names before passing them to SASL.
Remko Troncon <remko@psi-im.org>**20061128104108] 
[Fix overriding of realms in simplesasl.
Remko Troncon <remko@psi-im.org>**20061128104041] 
[Compilation fix.
Remko Troncon <remko@psi-im.org>**20061128092442] 
[Encode internationalized domain names.
Remko Troncon <remko@psi-im.org>**20061128091835] 
[Reworked SSL/TLS account settings.
Remko Troncon <remko@psi-im.org>**20061127221100] 
[We don't need PsiCon::mainWin() around anymore.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061126210629] 
[Removed dependencies on MainWin.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061126194557] 
[Fix httpconnect.cpp newline detection bug.
Remko Troncon <remko@psi-im.org>**20061126181911
 Thanks to michalj.
] 
[but lets make it statuschangeless in MUC by default
Kevin Smith <kismith@psi-im.org>**20061126124231] 
[Show status changes in MUC (thanks dion)
Kevin Smith <kismith@psi-im.org>**20061126123852] 
[OptionsTab Shortcuts (Thanks Ephraim)
Kevin Smith <kismith@psi-im.org>**20061126120715] 
[temporary add options.ui.contactlist.temp-no-roster-animation option to workaround extrem CPU usage of animated roaster icons
Martin H. <textshell-I1QKlO@neutronstar.dyndns.org>**20060730215542] 
[Auto-copy fix
Maciej Niedzielski <machekku@uaznia.net>**20061106222750] 
[Report reason when people leave a MUC (Thanks Dion)
Kevin Smith <kismith@psi-im.org>**20061126102314] 
[IconToolButton will display text if it doesn't have an icon.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061125185504] 
[options.tip.* -> options.ui.tip.*.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061125184705] 
[Icon -> PsiIcon.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061125173226] 
[Windows Vista detection support
Kevin Smith <kismith@psi-im.org>**20061122230043] 
[Three doxygen comments from Textshell
Kevin Smith <kismith@psi-im.org>**20061122221724] 
[(ClassName *)PsiAccount::dialogFind("ClassName") -> PsiAccount::findDialog<ClassName*>().
Michail Pishchagin <mblsha@users.sourceforge.net>**20061122132956] 
[Two null XMPP::Jids are equal.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061122120403] 
[Correctly ignore WinAmp header warnings.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061120145252] 
[Suppress more warnings.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061120140823] 
[Suppress compilation warnings.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061120140034] 
[Conditional plugin compilation.
Remko Troncon <remko@psi-im.org>**20061120140852] 
[Fix to BookmarkManager (thanks Ephraim)
Kevin Smith <kismith@psi-im.org>**20061119195128] 
[Make window flashing optional (options.xml)
Kevin Smith <kismith@psi-im.org>**20061119152845] 
[Don't needlessly expand LineEdit vertically in ChatDlg.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061113125127] 
[New Alertable class to simplify alert icon plumbing.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061114213929] 
[Strip unnecessary data from the manifest file.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061108164138] 
[Compile-in image format plugins on Windows.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061108160706] 
[Ephraim's fix correction for the gcdialog
Kevin Smith <kismith@psi-im.org>**20061107165709] 
[AvatarFactory ensures that all avatars are square in size.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061107160555] 
[Moved function to create transparent QPixmaps to separate file.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061107160210] 
[Changed animation groupbox to combobox.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061106163452
 Thanks to Martin H.
] 
[Visual Styles Manifest (for Windows)
Maciej Niedzielski <machekku@uaznia.net>**20061018203842
 Enables Windows Visual Styles in Psi. Now all common dialogs (file open, file save) will use visual styles, too.
] 
[Fixed splitter resizing in chats and groupchats.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061106151310
 Thanks to Ephraim.
] 
[Added Q_OBJECT macro to aboutdlg.
Remko Troncon <remko@psi-im.org>**20061104145551] 
[Fixed sort order in groupchat dialog.
Remko Troncon <remko@psi-im.org>**20061103220932] 
[Do not add a body to MUC topic changes.
Remko Troncon <remko@psi-im.org>**20061103170842] 
[More Aspell UTF-8 support.
Remko Troncon <remko@psi-im.org>**20061102211848] 
[Added Mac OS X spell checking support.
Remko Troncon <remko@psi-im.org>**20061102203818] 
[Use UTF-8 in the ASpellChecker.
Remko Troncon <remko@psi-im.org>**20061102182805] 
[Fix statusdlg signal slot.
Remko Troncon <remko@psi-im.org>**20061101003800] 
[Added support for JEP-70.
Remko Troncon <remko@psi-im.org>**20061031193236
 Thanks to Machekku.
] 
[Added more ignore rules to the boring file.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061030100120] 
[Tab drag and drop
Kevin Smith <psichangelog@kismith.co.uk>**20061026100810] 
[Disable 'check spelling' option when no spell checker is available.
Remko Troncon <remko@psi-im.org>**20061026095747
 Thanks to Ephraim.
] 
[Added XMPP::Status constructor.
Remko Troncon <remko@psi-im.org>**20061026095152] 
[Fix shortcuts in event dialog.
Remko Troncon <remko@psi-im.org>**20061026085820] 
[Remove unwanted whitespace from error stanza.
Remko Troncon <remko@psi-im.org>**20061026075059
 Thanks to Machekku.
] 
[Fixed typo in shortcut manager.
Remko Troncon <remko@psi-im.org>**20061026074154] 
[Fixed warning fix.
Remko Troncon <remko@psi-im.org>**20061025213440] 
[Fix compilation warning.
Remko Troncon <remko@psi-im.org>**20061025172832] 
[Make sure that there is at least one shortcut to send chat messages.
Remko Troncon <remko@psi-im.org>**20061025154932] 
[Workaround for shortcut segfault.
Remko Troncon <remko@psi-im.org>**20061025154348] 
[Remove the shortcut for clearing the chatlog.
Remko Troncon <remko@psi-im.org>**20061025153546] 
[Start rewriting Tab widgets
Kevin Smith <psichangelog@kismith.co.uk>**20061025150151] 
[Narrowing includes down.
Remko Troncon <remko@psi-im.org>**20061025134832] 
[Split off some common classes from im.h.
Remko Troncon <remko@psi-im.org>**20061025134244] 
[Make resourceMenu use XMPP::Status.
Remko Troncon <remko@psi-im.org>**20061025121333] 
[Make status presets use XMPP::Status.
Remko Troncon <remko@psi-im.org>**20061025120452] 
[Removed redundant type field from XMPP::Status.
Remko Troncon <remko@psi-im.org>**20061025114556] 
[Added XMPP::Status::type() function and Type enum for safer programming.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061025105450] 
[Refactored BlockTransportPopupList class a little.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061025082210] 
[mac builds should be devel, not beta3
Kevin Smith <psichangelog@kismith.co.uk>**20061025094954] 
[Use QDesktopServices::openUrl instead of our hand coded way.
Remko Troncon <remko@psi-im.org>**20061025094241] 
[Enable new tray icon by default on all platforms.
Remko Troncon <remko@psi-im.org>**20061024214146] 
[Add shadow around tray icon on X11.
Remko Troncon <remko@psi-im.org>**20061024192121] 
[More tray icon code.
Remko Troncon <remko@psi-im.org>**20061024190541] 
[Some more tray menu refactoring.
Remko Troncon <remko@psi-im.org>**20061024184654] 
[Fixed trayicon slot mismatch.
Remko Troncon <remko@psi-im.org>**20061024181846] 
[Use QSystemTrayIcon on Mac OS X.
Remko Troncon <remko@psi-im.org>**20061024180330] 
[Renamed MTray to PsiTrayIcon, and put it in a separate file.
Remko Troncon <remko@psi-im.org>**20061024161054] 
[Use QSyntaxHighlighter for spell checking.
Remko Troncon <remko@psi-im.org>**20061024154309
 Fixes highlighting issues.
] 
[Do not set mask while the pixmap is being painted on.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061024141610] 
[Extracted AccountLabel to separate file.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061024120956] 
[Disabling qca-gnupg.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061024120537] 
[Refactored PsiCon::accountList() -> PsiContactList::accounts().
Michail Pishchagin <mblsha@users.sourceforge.net>**20061024112623
 To be more precise: accountList(false) -> PsiContactList::accounts() and
 accountList(true) -> PsiContactList::enabledAccounts().
] 
[Moved PsiAccountList to the separate PsiContactList class.
Michail Pishchagin <mblsha@users.sourceforge.net>**20061024102058] 
[Added more valgrind suppressions (tested on Kubuntu Dapper).
Michail Pishchagin <mblsha@users.sourceforge.net>**20061024100830] 
[Workaround for 100% CPU usage on connection error.
Remko Troncon <remko@psi-im.org>**20061024084520] 
[Migrating tip of the day.
Remko Troncon <remko@psi-im.org>**20061023185050] 
[Moved text utilities to TextUtil.
Remko Troncon <remko@psi-im.org>**20061023121846] 
[Fixed X11 compilation issues.
Remko Troncon <remko@psi-im.org>**20061023115501] 
[Some more common.h reordering.
Remko Troncon <remko@psi-im.org>**20061023113057] 
[Moving some things out of common.cpp.
Remko Troncon <remko@psi-im.org>**20061023111734] 
[Moved global PsiIconset instance into PsiIconset.
Remko Troncon <remko@psi-im.org>**20061023094755] 
[Cleanups in common.h.
Remko Troncon <remko@psi-im.org>**20061023085345] 
[Remove dependency on Psi from aspellchecker.
Remko Troncon <remko@psi-im.org>**20061023082646] 
[Aspell fix.
Remko Troncon <remko@psi-im.org>**20061023075215] 
[Some src.pri cleanups.
Remko Troncon <remko@psi-im.org>**20061022213649] 
[More portable way of linking against static jingle.
Remko Troncon <remko@psi-im.org>**20061022212611] 
[More portable way of linking against a static qca.
Remko Troncon <remko@psi-im.org>**20061022212124] 
[Tightening includes.
Remko Troncon <remko@psi-im.org>**20061022204405] 
[Copied BSocket from ambrosia.
Remko Troncon <remko@psi-im.org>**20061022200658] 
[Removed Q3CStrings.
Remko Troncon <remko@psi-im.org>**20061022200025] 
[Split off AboutDlg.
Remko Troncon <remko@psi-im.org>**20061022185351] 
[Fixed segfault on linux in getHomeDir().
Remko Troncon <remko@psi-im.org>**20061022152235] 
[Migrate global shortcut options to new options system.
Remko Troncon <remko@psi-im.org>**20061021213722] 
[More common.h cleanups.
Remko Troncon <remko@psi-im.org>**20061021210021] 
[Some more common.h cleanups.
Remko Troncon <remko@psi-im.org>**20061021201149] 
[Fixed windows building of QCA.
Remko Troncon <remko@psi-im.org>**20061021201442] 
[Moved application information out of common.h into ApplicationInfo.
Remko Troncon <remko@psi-im.org>**20061021191231] 
[Added Mac OS X support in SystemInfo.
Remko Troncon <remko@psi-im.org>**20061021173553] 
[Sorting Ad-Hoc commands.
Remko Troncon <remko@psi-im.org>**20061021172941
 Thanks to Norman Rasmussen.
] 
[Added missing includes to systeminfo.
Remko Troncon <remko@psi-im.org>**20061021172045] 
[Added busywidget to ad-hoc command dialog.
Remko Troncon <remko@psi-im.org>**20061021171745
 Thanks to Norman Rasmussen.
] 
[Added extra include to systeminfo.
Remko Troncon <remko@psi-im.org>**20061021171133] 
[Moved system information methods from common.h to SystemInfo.
Remko Troncon <remko@psi-im.org>**20061021163132] 
[Removed obsolete string functions from common.h
Remko Troncon <remko@psi-im.org>**20061021150533] 
[Added registrationdlg to darcs.
Remko Troncon <remko@psi-im.org>**20061021143528] 
[Moved StretchWidget from common.h.
Remko Troncon <remko@psi-im.org>**20061021143301] 
[Splitting up servicesdlg into searchdlg and registrationdlg.
Remko Troncon <remko@psi-im.org>**20061021142021] 
[Removing some qt3support dependencies.
Remko Troncon <remko@psi-im.org>**20061021135310] 
[Ported all Q3FileDialogs.
Remko Troncon <remko@psi-im.org>**20061021134311] 
[Refactoring + Qt4-proper port of SSLCertDlg.
Remko Troncon <remko@psi-im.org>**20061021130542] 
[Clear keypad modifier from key events.
Remko Troncon <remko@psi-im.org>**20061021112448] 
[Added workaround to force VS2005/VC8 to link.
Remko Troncon <remko@psi-im.org>**20061021104201
 Thanks to Norman Rasmussen.
] 
[Migration of 'enter sends message' to new shortcut system.
Remko Troncon <remko@psi-im.org>**20061021093801] 
[Updated README.
Remko Troncon <remko@psi-im.org>**20061020160227] 
[Make (group)chatdlg respect shortcuts.
Remko Troncon <remko@psi-im.org>**20061020141504] 
[Fixed compilation problems.
Remko Troncon <remko@psi-im.org>**20061020144525] 
[Removed roster opacity from common.h.
Remko Troncon <remko@psi-im.org>**20061020135341] 
[Removed 'enter sends message' option from the UI.
Remko Troncon <remko@psi-im.org>*-20061019184833] 
[TAG 20061020
Remko Troncon <remko@psi-im.org>**20061020124531] 
Patch bundle hash:
367efd15893bf6cec970e51e759b9c73ba66c5f3
