
New patches:

[Show file icons in Transfer Manager on Windows
Maciej Niedzielski <machekku@uaznia.net>**20061122232326] {
hunk ./src/filetransdlg.cpp 141
+	QString filePath;	// full file path, but without ".part"
hunk ./src/filetransdlg.cpp 196
+	d->filePath = fname;
hunk ./src/filetransdlg.cpp 238
+#ifdef Q_WS_WIN
+// Copyright (C) 1992-2006 Trolltech AS. All rights reserved.
+// From Qt 4.1.3, qwindowsstyle.cpp
+QPixmap convertHIconToPixmap( const HICON icon)
+{
+    bool foundAlpha = false;
+    HDC screenDevice = qt_win_display_dc();
+    HDC hdc = CreateCompatibleDC(screenDevice);
+
+    ICONINFO iconinfo;
+    GetIconInfo(icon, &iconinfo); //x and y Hotspot describes the icon center
+
+    //create image
+    HBITMAP winBitmap = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);
+    HGDIOBJ oldhdc = SelectObject(hdc, winBitmap);
+    DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_NORMAL);
+    QPixmap::HBitmapFormat alphaType = QPixmap::PremultipliedAlpha;
+
+    BITMAP bitmapData;
+    GetObject(iconinfo.hbmColor, sizeof(BITMAP), &bitmapData);
+
+    QPixmap iconpixmap = QPixmap::fromWinHBITMAP(winBitmap, alphaType);
+    QImage img = iconpixmap.toImage();
+
+    if ( bitmapData.bmBitsPixel == 32 ) { //only check 32 bit images for alpha
+        for (int y = 0 ; y < iconpixmap.height() && !foundAlpha ; y++) {
+            QRgb *scanLine= reinterpret_cast<QRgb *>(img.scanLine(y));
+            for (int x = 0; x < img.width() ; x++) {
+                if (qAlpha(scanLine[x]) != 0) {
+                    foundAlpha = true;
+                    break;
+                }
+            }
+        }
+    }
+
+    if (!foundAlpha) {
+        //If no alpha was found, we use the mask to set alpha values
+        HBITMAP winMask = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);
+        SelectObject(hdc, winMask);
+        DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_MASK);
+
+        QPixmap maskPixmap = QPixmap::fromWinHBITMAP(winMask, alphaType);
+        QImage mask = maskPixmap.toImage();
+
+        for (int y = 0 ; y< iconpixmap.height() ; y++){
+            QRgb *scanlineImage = reinterpret_cast<QRgb *>(img.scanLine(y));
+            QRgb *scanlineMask = reinterpret_cast<QRgb *>(mask.scanLine(y));
+            for (int x = 0; x < img.width() ; x++){
+                if (qRed(scanlineMask[x]) != 0)
+                    scanlineImage[x] = 0; //mask out this pixel
+                else
+                    scanlineImage[x] |= 0xff000000; // set the alpha channel to 255
+            }
+        }
+        DeleteObject(winMask);
+    }
+
+    //dispose resources created by iconinfo call
+    DeleteObject(iconinfo.hbmMask);
+    DeleteObject(iconinfo.hbmColor);
+
+    SelectObject(hdc, oldhdc); //restore state
+    DeleteDC(hdc);
+    DeleteObject(winBitmap);
+    return QPixmap::fromImage(img);
+}
+#endif
+
+QPixmap FileTransferHandler::fileIcon() const
+{
+	QPixmap icon;
+
+#ifdef Q_WS_WIN
+
+	SHFILEINFO sfi;
+	const bool partial = !d->sending && d->sent < d->fileSize;
+
+	QFileInfo fi(d->filePath);
+	QString iconPath;
+	UINT flags = SHGFI_ICON | SHGFI_LARGEICON;
+
+	if (partial || !fi.exists()) {
+		flags |= SHGFI_USEFILEATTRIBUTES;
+		iconPath = "." + fi.suffix();
+	}
+	else {
+		iconPath = d->filePath;
+		iconPath.replace('/', '\\');
+	}
+
+	if (SHGetFileInfo(iconPath.utf16(), FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), flags)) {
+		icon = convertHIconToPixmap(sfi.hIcon);
+	}
+
+#endif
+
+	return icon;
+}
+
hunk ./src/filetransdlg.cpp 371
+	d->filePath = saveName;
+	d->filePath.chop(5);	// remove ".part"
hunk ./src/filetransdlg.cpp 1060
-	QPixmap icon;
+	QPixmap icon, fileicon;
hunk ./src/filetransdlg.cpp 1340
-		p->drawPixmap(m, m + yoff, icon);
-		int tm = m + icon.width() + 4;
-		tw = tw - (icon.width() + 4);
+		int fullIconWidth;
+		if(!fileicon.isNull()) {
+			fullIconWidth = fileicon.width() + icon.width()/2;
+			p->drawPixmap(m, m + yoff, fileicon);
+			p->drawPixmap(m + fullIconWidth - icon.width(), m + yoff + fileicon.height() - icon.height()/2, icon);
+		}
+		else {
+			fullIconWidth = icon.width();
+			p->drawPixmap(m, m + yoff, icon);
+		}
+
+		int tm = m + fullIconWidth + 4;
+		tw = tw - (fullIconWidth + 4);
hunk ./src/filetransdlg.cpp 1628
-		parent->setProgress(i->id, i->p, i->h->totalSteps(), i->sent, bps, updateAll);
-
hunk ./src/filetransdlg.cpp 1634
-			}
-
-			PsiAccount *pa = i->h->account();
-			transferList.removeRef(i);
hunk ./src/filetransdlg.cpp 1635
-			if(recv) {
hunk ./src/filetransdlg.cpp 1645
+
+				findItem(i->id)->fileicon = i->h->fileIcon();
hunk ./src/filetransdlg.cpp 1649
+			PsiAccount *pa = i->h->account();
hunk ./src/filetransdlg.cpp 1652
+
+		parent->setProgress(i->id, i->p, i->h->totalSteps(), i->sent, bps, updateAll);
+
+		if(done) {
+			transferList.removeRef(i);
+		}
hunk ./src/filetransdlg.cpp 1709
-int FileTransDlg::addItem(const QString &filename, qlonglong size, const QString &peer, bool sending)
+int FileTransDlg::addItem(const QString &filename, const QPixmap &fileicon, qlonglong size, const QString &peer, bool sending)
hunk ./src/filetransdlg.cpp 1717
+
+	i->fileicon = fileicon;
+
hunk ./src/filetransdlg.cpp 1780
-	i->id = addItem(h->fileName(), h->fileSize(), peer, (h->mode() == FileTransferHandler::Sending));
+	i->id = addItem(h->fileName(), h->fileIcon(), h->fileSize(), peer, (h->mode() == FileTransferHandler::Sending));
hunk ./src/filetransdlg.h 5
+#include <QPixmap>
hunk ./src/filetransdlg.h 38
+	QPixmap fileIcon() const;
hunk ./src/filetransdlg.h 118
-	int addItem(const QString &filename, qlonglong size, const QString &peer, bool sending);
+	int addItem(const QString &filename, const QPixmap &fileicon, qlonglong size, const QString &peer, bool sending);
}

[Created DesktopUtil with getFileIcon()
Maciej Niedzielski <machekku@uaznia.net>**20061205013924] {
adddir ./src/tools/desktoputil
adddir ./src/tools/desktoputil/third-party
hunk ./src/filetransdlg.cpp 42
+#include "desktoputil.h"
hunk ./src/filetransdlg.cpp 239
-#ifdef Q_WS_WIN
-// Copyright (C) 1992-2006 Trolltech AS. All rights reserved.
-// From Qt 4.1.3, qwindowsstyle.cpp
-QPixmap convertHIconToPixmap( const HICON icon)
-{
-    bool foundAlpha = false;
-    HDC screenDevice = qt_win_display_dc();
-    HDC hdc = CreateCompatibleDC(screenDevice);
-
-    ICONINFO iconinfo;
-    GetIconInfo(icon, &iconinfo); //x and y Hotspot describes the icon center
-
-    //create image
-    HBITMAP winBitmap = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);
-    HGDIOBJ oldhdc = SelectObject(hdc, winBitmap);
-    DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_NORMAL);
-    QPixmap::HBitmapFormat alphaType = QPixmap::PremultipliedAlpha;
-
-    BITMAP bitmapData;
-    GetObject(iconinfo.hbmColor, sizeof(BITMAP), &bitmapData);
-
-    QPixmap iconpixmap = QPixmap::fromWinHBITMAP(winBitmap, alphaType);
-    QImage img = iconpixmap.toImage();
-
-    if ( bitmapData.bmBitsPixel == 32 ) { //only check 32 bit images for alpha
-        for (int y = 0 ; y < iconpixmap.height() && !foundAlpha ; y++) {
-            QRgb *scanLine= reinterpret_cast<QRgb *>(img.scanLine(y));
-            for (int x = 0; x < img.width() ; x++) {
-                if (qAlpha(scanLine[x]) != 0) {
-                    foundAlpha = true;
-                    break;
-                }
-            }
-        }
-    }
-
-    if (!foundAlpha) {
-        //If no alpha was found, we use the mask to set alpha values
-        HBITMAP winMask = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);
-        SelectObject(hdc, winMask);
-        DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_MASK);
-
-        QPixmap maskPixmap = QPixmap::fromWinHBITMAP(winMask, alphaType);
-        QImage mask = maskPixmap.toImage();
-
-        for (int y = 0 ; y< iconpixmap.height() ; y++){
-            QRgb *scanlineImage = reinterpret_cast<QRgb *>(img.scanLine(y));
-            QRgb *scanlineMask = reinterpret_cast<QRgb *>(mask.scanLine(y));
-            for (int x = 0; x < img.width() ; x++){
-                if (qRed(scanlineMask[x]) != 0)
-                    scanlineImage[x] = 0; //mask out this pixel
-                else
-                    scanlineImage[x] |= 0xff000000; // set the alpha channel to 255
-            }
-        }
-        DeleteObject(winMask);
-    }
-
-    //dispose resources created by iconinfo call
-    DeleteObject(iconinfo.hbmMask);
-    DeleteObject(iconinfo.hbmColor);
-
-    SelectObject(hdc, oldhdc); //restore state
-    DeleteDC(hdc);
-    DeleteObject(winBitmap);
-    return QPixmap::fromImage(img);
-}
-#endif
-
hunk ./src/filetransdlg.cpp 241
-	QPixmap icon;
-
-#ifdef Q_WS_WIN
-
-	SHFILEINFO sfi;
-	const bool partial = !d->sending && d->sent < d->fileSize;
-
-	QFileInfo fi(d->filePath);
-	QString iconPath;
-	UINT flags = SHGFI_ICON | SHGFI_LARGEICON;
-
-	if (partial || !fi.exists()) {
-		flags |= SHGFI_USEFILEATTRIBUTES;
-		iconPath = "." + fi.suffix();
-	}
-	else {
-		iconPath = d->filePath;
-		iconPath.replace('/', '\\');
-	}
-
-	if (SHGetFileInfo(iconPath.utf16(), FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), flags)) {
-		icon = convertHIconToPixmap(sfi.hIcon);
-	}
-
-#endif
-
-	return icon;
+	return DesktopUtil::getFileIcon(d->filePath, !d->sending && d->sent < d->fileSize, true);
+			// use generic icon when still receiving the file
hunk ./src/src.pri 16
+include($$PWD/tools/desktoputil/desktoputil.pri)
addfile ./src/tools/desktoputil/desktoputil.cpp
hunk ./src/tools/desktoputil/desktoputil.cpp 1
+#include "desktoputil.h"
+
+#include <QFileInfo>
+
+/**
+ * \brief Returns icon of the given file.
+ * \param path, path to the file
+ * \param genericIcon, retrieve the icon basing just on file type
+ * \param largeIcon, retrieve large image
+ *
+ * If the file does not exist, a generic icon is always returned.
+ *
+ * To retrieve icon for a given file extension, simply provide ".extension" as \a path
+ * and set \a genericIcon to true.
+ */
+QPixmap DesktopUtil::getFileIcon(const QString &path, bool genericIcon, bool largeIcon)
+{
+	QPixmap icon;
+
+#ifdef Q_WS_WIN
+
+	SHFILEINFO sfi;
+
+	QFileInfo fi(path);
+	QString iconPath = path;
+
+	UINT flags = SHGFI_ICON;
+	flags |= largeIcon ? SHGFI_LARGEICON : SHGFI_SMALLICON;
+
+	if (genericIcon || !fi.exists()) {
+		flags |= SHGFI_USEFILEATTRIBUTES;
+		iconPath = "." + fi.suffix();
+	}
+	else {
+		iconPath.replace('/', '\\');
+	}
+
+	if (SHGetFileInfo(iconPath.utf16(), FILE_ATTRIBUTE_NORMAL, &sfi, sizeof(SHFILEINFO), flags)) {
+		icon = HIconUtil::convertHIconToPixmap(sfi.hIcon);
+		DestroyIcon(sfi.hIcon);
+	}
+
+#endif
+
+	return icon;
+}
addfile ./src/tools/desktoputil/desktoputil.h
hunk ./src/tools/desktoputil/desktoputil.h 1
+#include <QPixmap>
+#include <QString>
+
+#ifdef Q_WS_WIN
+#include "third-party/qt_hicon_win.h"
+#endif
+
+namespace DesktopUtil
+{
+	QPixmap getFileIcon(const QString &path, bool genericIcon = false, bool largeIcon = true);
+};
addfile ./src/tools/desktoputil/desktoputil.pri
hunk ./src/tools/desktoputil/desktoputil.pri 1
+HEADERS += $$PWD/desktoputil.h
+SOURCES += $$PWD/desktoputil.cpp
+INCLUDEPATH += $$PWD
+DEPENDPATH  += $$PWD
+
+win32: {
+	HEADERS += $$PWD/third-party/qt_hicon_win.h
+	SOURCES += $$PWD/third-party/qt_hicon_win.cpp
+}
addfile ./src/tools/desktoputil/third-party/qt_hicon_win.cpp
hunk ./src/tools/desktoputil/third-party/qt_hicon_win.cpp 1
+/****************************************************************************
+**
+** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** This file may be used under the terms of the GNU General Public
+** License version 2.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of
+** this file.  Please review the following information to ensure GNU
+** General Public Licensing requirements will be met:
+** http://www.trolltech.com/products/qt/opensource.html
+**
+** If you are unsure which license is appropriate for your use, please
+** review the following information:
+** http://www.trolltech.com/products/qt/licensing.html or contact the
+** sales department at sales@trolltech.com.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+****************************************************************************/
+
+/* From Qt 4.1.3, qwindowsstyle.cpp */
+
+#include "qt_hicon_win.h"
+
+QPixmap HIconUtil::convertHIconToPixmap(const HICON icon)
+{
+    bool foundAlpha = false;
+    HDC screenDevice = qt_win_display_dc();
+    HDC hdc = CreateCompatibleDC(screenDevice);
+
+    ICONINFO iconinfo;
+    GetIconInfo(icon, &iconinfo); //x and y Hotspot describes the icon center
+
+    //create image
+    HBITMAP winBitmap = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);
+    HGDIOBJ oldhdc = SelectObject(hdc, winBitmap);
+    DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_NORMAL);
+    QPixmap::HBitmapFormat alphaType = QPixmap::PremultipliedAlpha;
+
+    BITMAP bitmapData;
+    GetObject(iconinfo.hbmColor, sizeof(BITMAP), &bitmapData);
+
+    QPixmap iconpixmap = QPixmap::fromWinHBITMAP(winBitmap, alphaType);
+    QImage img = iconpixmap.toImage();
+
+    if ( bitmapData.bmBitsPixel == 32 ) { //only check 32 bit images for alpha
+        for (int y = 0 ; y < iconpixmap.height() && !foundAlpha ; y++) {
+            QRgb *scanLine= reinterpret_cast<QRgb *>(img.scanLine(y));
+            for (int x = 0; x < img.width() ; x++) {
+                if (qAlpha(scanLine[x]) != 0) {
+                    foundAlpha = true;
+                    break;
+                }
+            }
+        }
+    }
+
+    if (!foundAlpha) {
+        //If no alpha was found, we use the mask to set alpha values
+        HBITMAP winMask = CreateBitmap(iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 1, 32, 0);
+        SelectObject(hdc, winMask);
+        DrawIconEx( hdc, 0, 0, icon, iconinfo.xHotspot * 2, iconinfo.yHotspot * 2, 0, 0, DI_MASK);
+
+        QPixmap maskPixmap = QPixmap::fromWinHBITMAP(winMask, alphaType);
+        QImage mask = maskPixmap.toImage();
+
+        for (int y = 0 ; y< iconpixmap.height() ; y++){
+            QRgb *scanlineImage = reinterpret_cast<QRgb *>(img.scanLine(y));
+            QRgb *scanlineMask = reinterpret_cast<QRgb *>(mask.scanLine(y));
+            for (int x = 0; x < img.width() ; x++){
+                if (qRed(scanlineMask[x]) != 0)
+                    scanlineImage[x] = 0; //mask out this pixel
+                else
+                    scanlineImage[x] |= 0xff000000; // set the alpha channel to 255
+            }
+        }
+        DeleteObject(winMask);
+    }
+
+    //dispose resources created by iconinfo call
+    DeleteObject(iconinfo.hbmMask);
+    DeleteObject(iconinfo.hbmColor);
+
+    SelectObject(hdc, oldhdc); //restore state
+    DeleteDC(hdc);
+    DeleteObject(winBitmap);
+    return QPixmap::fromImage(img);
+}
addfile ./src/tools/desktoputil/third-party/qt_hicon_win.h
hunk ./src/tools/desktoputil/third-party/qt_hicon_win.h 1
+#include <QPixmap>
+#include <windows.h>
+
+namespace HIconUtil
+{
+	QPixmap convertHIconToPixmap(const HICON icon);
+};
}

Context:

[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] 
[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] 
[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:
107ae91364a24d7e0a6af40c22184351c327e6d1
