From 0333d7006f7c1e415819c0521d01b58f80313fbe Mon Sep 17 00:00:00 2001
From: George Hazan <ghazan@miranda.im>
Date: Tue, 12 Feb 2019 18:29:58 +0300
Subject: code cleaning

---
 plugins/UserInfoEx/src/commonheaders.cpp           | 158 ---------
 plugins/UserInfoEx/src/ctrl_contact.cpp            |   6 +-
 plugins/UserInfoEx/src/dlg_anniversarylist.cpp     |  14 +-
 .../src/ex_import/classExImContactBase.cpp         |   6 +-
 .../src/ex_import/classExImContactBase.h           |   4 +-
 .../src/ex_import/classExImContactXML.cpp          |   2 +-
 plugins/UserInfoEx/src/ex_import/svc_ExImXML.cpp   | 317 ++++++++----------
 plugins/UserInfoEx/src/init.cpp                    |   3 +
 plugins/UserInfoEx/src/stdafx.h                    |   6 -
 plugins/UserInfoEx/src/svc_refreshci.cpp           | 365 ++++++++-------------
 10 files changed, 292 insertions(+), 589 deletions(-)
 delete mode 100644 plugins/UserInfoEx/src/commonheaders.cpp

(limited to 'plugins/UserInfoEx')

diff --git a/plugins/UserInfoEx/src/commonheaders.cpp b/plugins/UserInfoEx/src/commonheaders.cpp
deleted file mode 100644
index 21c680affe..0000000000
--- a/plugins/UserInfoEx/src/commonheaders.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
-UserinfoEx plugin for Miranda IM
-
-Copyright:
-© 2006-2010 DeathAxe, Yasnovidyashii, Merlin, K. Romanov, Kreol
-
-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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-*/
-
-#include "stdafx.h"
-
-// global:
-
-MGLOBAL myGlobals;
-pfnDwmIsCompositionEnabled	dwmIsCompositionEnabled;
-
-/**
- * Calculates an unique DWORD number from a string.
- * It's the same as used in langpack.
- *
- * @param		szStr	- string to calculate the hash value for
- * @return	the unique id for the szStr
- **/
-
-#if __GNUC__
-#define NOINLINEASM
-#endif
-
-DWORD hashSetting(LPCSTR szStr)
-{
-#if defined _M_IX86 && !defined _NUMEGA_BC_FINALCHECK && !defined NOINLINEASM
-	__asm
-	{
-		xor		edx,edx
-		xor		eax,eax
-		mov		esi,szStr
-		mov		al,[esi]
-		dec		esi
-		xor		cl,cl
-		lph_top:			//only 4 of 9 instructions in here don't use AL, so optimal pipe use is impossible
-		xor		edx,eax
-		inc		esi
-		and		cl,31
-		movzx	eax,byte ptr [esi]
-		add		cl,5
-		test	al,al
-		rol		eax,cl		//rol is u-pipe only, but pairable
-							//rol doesn't touch z-flag
-		jnz		lph_top		//5 clock tick loop. not bad.
-
-		xor		eax,edx
-	}
-#else
-	DWORD hash = 0;
-	int i;
-	int shift = 0;
-	for (i = 0; szStr[i]; i++)
-	{
-		hash ^= szStr[i] << shift;
-		if (shift > 24)
-		{
-			hash ^= (szStr[i] >> (32 - shift)) & 0x7F;
-		}
-		shift = (shift + 5) & 0x1F;
-	}
-	return hash;
-#endif
-}
-
-// MurmurHash2
-#ifdef _DEBUG
-#pragma optimize( "gt", on )
-#endif
-unsigned int __fastcall hash_M2(const void * key, unsigned int len)
-{
-	// 'm' and 'r' are mixing constants generated offline.
-	// They're not really 'magic', they just happen to work well.
-	const unsigned int m = 0x5bd1e995;
-	const int r = 24;
-
-	// Initialize the hash to a 'random' value
-	unsigned int h = len;
-
-	// Mix 4 bytes at a time into the hash
-	const unsigned char * data = (const unsigned char *)key;
-
-	while(len >= 4)
-	{
-		unsigned int k = *(unsigned int *)data;
-
-		k *= m;
-		k ^= k >> r;
-		k *= m;
-
-		h *= m;
-		h ^= k;
-
-		data += 4;
-		len -= 4;
-	}
-
-	// Handle the last few bytes of the input array
-	switch(len)
-	{
-	case 3: h ^= data[2] << 16;
-	case 2: h ^= data[1] << 8;
-	case 1: h ^= data[0];
-			h *= m;
-	};
-
-	// Do a few final mixes of the hash to ensure the last few
-	// bytes are well-incorporated.
-	h ^= h >> 13;
-	h *= m;
-	h ^= h >> 15;
-
-	return h;
-}
-
-unsigned int hashSettingW_M2(const char * key)
-{
-	if (key == nullptr) return 0;
-	const unsigned int len = (unsigned int)mir_wstrlen((const wchar_t*)key);
-	char* buf = (char*)alloca(len + 1);
-	for (unsigned i = 0; i <= len ; ++i)
-		buf[i] = key[i << 1];
-	return hash_M2(buf, len);
-}
-
-unsigned int hashSetting_M2(const char * key)
-{
-	if (key == nullptr) return 0;
-	const unsigned int len = (unsigned int)mir_strlen((const char*)key);
-	return hash_M2(key, len);
-}
-
-unsigned int hashSetting_M2(const wchar_t * key)
-{
-	if (key == nullptr) return 0;
-	const unsigned int len = (unsigned int)mir_wstrlen((const wchar_t*)key);
-	return hash_M2(key, len * sizeof(wchar_t));
-}
-
-#ifdef _DEBUG
-#pragma optimize( "", on )
-#endif
diff --git a/plugins/UserInfoEx/src/ctrl_contact.cpp b/plugins/UserInfoEx/src/ctrl_contact.cpp
index c0ad33eb9c..d8084daaed 100644
--- a/plugins/UserInfoEx/src/ctrl_contact.cpp
+++ b/plugins/UserInfoEx/src/ctrl_contact.cpp
@@ -1290,7 +1290,7 @@ int CtrlContactAddItemFromDB(
 	CBEXITEM cbi;
 
 	cbi.pszVal = nullptr;
-	cbi.dwID = hashSetting(szSettingVal);
+	cbi.dwID = mir_hashstr(szSettingVal);
 	cbi.wFlags = CBEXIF_CATREADONLY|DB::Setting::GetTStringCtrl(hContact, pszModule, pszModule, pszProto, szSettingVal, &dbv);
 	if (dbv.type >= DBVT_WCHAR) {
 		// no value read from database
@@ -1355,7 +1355,7 @@ int CtrlContactAddMyItemsFromDB(
 		i++)
 	{
 		// read value
-		cbi.dwID = hashSetting(pszSetting);
+		cbi.dwID = mir_hashstr(pszSetting);
 		cbi.pszVal = dbv.pwszVal;
 		dbv.type = DBVT_DELETED;
 		dbv.pwszVal = nullptr;
@@ -1421,7 +1421,7 @@ int CtrlContactWriteItemToDB(
 	cbi.pszVal = szVal;
 	cbi.ccVal = MAXDATASIZE - 4;
 	cbi.iItem = 0;
-	cbi.dwID = hashSetting(pszSetting);
+	cbi.dwID = mir_hashstr(pszSetting);
 	if (!CtrlContactWndProc(hCtrl, CBEXM_GETITEM, NULL, (LPARAM)&cbi)) return 1;
 	if (!(cbi.wFlags & CTRLF_CHANGED)) return 0;
 	if (!hContact && !(pszModule = pszProto)) return 1;
diff --git a/plugins/UserInfoEx/src/dlg_anniversarylist.cpp b/plugins/UserInfoEx/src/dlg_anniversarylist.cpp
index 69dc4dce35..0f8c68c09f 100644
--- a/plugins/UserInfoEx/src/dlg_anniversarylist.cpp
+++ b/plugins/UserInfoEx/src/dlg_anniversarylist.cpp
@@ -927,17 +927,11 @@ public:
 INT_PTR DlgAnniversaryListShow(WPARAM, LPARAM)
 {
 	if (!gpDlg) {
-		try {
-			myGlobals.WantAeroAdaption = g_plugin.getByte(SET_PROPSHEET_AEROADAPTION, TRUE);
-			gpDlg = new CAnnivList();
-		}
-		catch(...) {
-			delete gpDlg;
-			gpDlg = nullptr;
-		}
+		myGlobals.WantAeroAdaption = g_plugin.getByte(SET_PROPSHEET_AEROADAPTION, TRUE);
+		gpDlg = new CAnnivList();
 	} 
-	else
-		gpDlg->BringToFront();
+	else gpDlg->BringToFront();
+	
 	return 0;
 }
 
diff --git a/plugins/UserInfoEx/src/ex_import/classExImContactBase.cpp b/plugins/UserInfoEx/src/ex_import/classExImContactBase.cpp
index bd1829e228..717203bab7 100644
--- a/plugins/UserInfoEx/src/ex_import/classExImContactBase.cpp
+++ b/plugins/UserInfoEx/src/ex_import/classExImContactBase.cpp
@@ -334,13 +334,13 @@ BYTE CExImContactBase::compareUID(DBVARIANT *dbv)
 			}
 			break;
 		case DBVT_ASCIIZ:
-			hash = hashSetting_M2(dbv->pszVal);
+			hash = mir_hashstr(dbv->pszVal);
 		case DBVT_WCHAR:
-			if (!hash) hash = hashSettingW_M2((const char *)dbv->pwszVal);
+			if (!hash) hash = mir_hashstrW(dbv->pwszVal);
 		case DBVT_UTF8:
 			if (!hash) {
 				LPWSTR tmp = mir_utf8decodeW(dbv->pszVal);
-				hash = hashSettingW_M2((const char *)tmp);
+				hash = mir_hashstrW(tmp);
 				mir_free(tmp);
 			}
 			if (hash == _dbvUIDHash)
diff --git a/plugins/UserInfoEx/src/ex_import/classExImContactBase.h b/plugins/UserInfoEx/src/ex_import/classExImContactBase.h
index 4894d09bae..122b35c6ef 100644
--- a/plugins/UserInfoEx/src/ex_import/classExImContactBase.h
+++ b/plugins/UserInfoEx/src/ex_import/classExImContactBase.h
@@ -60,13 +60,13 @@ public:
 	__inline void	uida(LPCSTR val)
 	{
 		_dbvUID.type = (_dbvUID.pszVal = mir_utf8decodeA(val))? DBVT_ASCIIZ : DBVT_DELETED;
-		_dbvUIDHash  = hashSetting_M2(_dbvUID.pszVal);
+		_dbvUIDHash  = mir_hashstr(_dbvUID.pszVal);
 	}
 	__inline void	uidu(LPCSTR val)
 	{
 		_dbvUID.type = (_dbvUID.pszVal = mir_strdup(val))? DBVT_UTF8 : DBVT_DELETED;
 		LPWSTR temp  = mir_utf8decodeW(val);
-		_dbvUIDHash  = hashSettingW_M2((const char *)temp);
+		_dbvUIDHash  = mir_hashstrW(temp);
 		mir_free(temp);
 	}
 
diff --git a/plugins/UserInfoEx/src/ex_import/classExImContactXML.cpp b/plugins/UserInfoEx/src/ex_import/classExImContactXML.cpp
index d30973d337..c1d0d624cd 100644
--- a/plugins/UserInfoEx/src/ex_import/classExImContactXML.cpp
+++ b/plugins/UserInfoEx/src/ex_import/classExImContactXML.cpp
@@ -83,7 +83,7 @@ BYTE CExImContactXML::IsContactInfo(LPCSTR pszKey)
 	if (pszKey && *pszKey) {
 		char buf[MAXSETTING];
 		// convert to hash and make bsearch as it is much faster then working with strings
-		const DWORD dwHash = hashSetting(_strlwr(mir_strncpy(buf, pszKey, _countof(buf))));
+		const DWORD dwHash = mir_hashstr(_strlwr(mir_strncpy(buf, pszKey, _countof(buf))));
 		return bsearch(&dwHash, dwCiHash, _countof(dwCiHash), sizeof(dwCiHash[0]), (int (*)(const void*, const void*))SortProc) != nullptr;
 	}
 	return FALSE;
diff --git a/plugins/UserInfoEx/src/ex_import/svc_ExImXML.cpp b/plugins/UserInfoEx/src/ex_import/svc_ExImXML.cpp
index 390af4034f..196daf6230 100644
--- a/plugins/UserInfoEx/src/ex_import/svc_ExImXML.cpp
+++ b/plugins/UserInfoEx/src/ex_import/svc_ExImXML.cpp
@@ -79,43 +79,40 @@ INT_PTR CALLBACK DlgProc_DataHistory(HWND hDlg, UINT msg, WPARAM wParam, LPARAM
  * exporting stuff
  ***********************************************************************************************************/
 
-/**
- * name:	Export
- * desc:	globally accessible function which does the whole export stuff.
- * params:	hContact	- handle to the contact who is to export
- *			pszFileName	- full qualified path to the xml file which is destination for the export process
- * return:	0 on success, 1 otherwise
- **/
+ /**
+  * name:	Export
+  * desc:	globally accessible function which does the whole export stuff.
+  * params:	hContact	- handle to the contact who is to export
+  *			pszFileName	- full qualified path to the xml file which is destination for the export process
+  * return:	0 on success, 1 otherwise
+  **/
 int CFileXml::Export(lpExImParam ExImContact, LPCSTR pszFileName)
 {
 	DB::CEnumList Modules;
 
-	DWORD result = (DWORD) DialogBox(g_plugin.getInst(), 
-							MAKEINTRESOURCE(IDD_EXPORT_DATAHISTORY),
-							nullptr, DlgProc_DataHistory);
-	if (LOWORD(result) != IDOK)
-	{
+	DWORD result = (DWORD)DialogBox(g_plugin.getInst(),
+		MAKEINTRESOURCE(IDD_EXPORT_DATAHISTORY),
+		nullptr, DlgProc_DataHistory);
+	if (LOWORD(result) != IDOK) {
 		return 0;
 	}
 	_wExport = HIWORD(result);
 
 	// show dialog to enable user to select modules for export
 	if (!(_wExport & EXPORT_DATA) ||
-		!DlgExImModules_SelectModulesToExport(ExImContact, &Modules, nullptr)) 
-	{
+		!DlgExImModules_SelectModulesToExport(ExImContact, &Modules, nullptr)) {
 
 		FILE *xmlfile = fopen(pszFileName, "wt");
-		if (!xmlfile)
-		{
+		if (!xmlfile) {
 			MsgErr(nullptr, LPGENW("Can't create xml file!\n%S"), pszFileName);
 			return 1;
 		}
-		
+
 		SYSTEMTIME now;
 		GetLocalTime(&now);
 
 		// write xml header raw as it is without using the tinyxml api
-		fprintf(xmlfile, 
+		fprintf(xmlfile,
 			"%c%c%c<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"
 			"<XMLCard ver=\"" XMLCARD_VERSION "\" ref=\"%04d-%02d-%02d %02d:%02d:%02d\">\n",
 			0xefU, 0xbbU, 0xbfU, now.wYear, now.wMonth, now.wDay, now.wHour, now.wMinute, now.wSecond
@@ -126,7 +123,7 @@ int CFileXml::Export(lpExImParam ExImContact, LPCSTR pszFileName)
 		CExImContactXML vContact(this);
 
 		// write data
-		if ( ExImContact->Typ == EXIM_CONTACT) {
+		if (ExImContact->Typ == EXIM_CONTACT) {
 			// export single contact
 			_hContactToWorkOn = ExImContact->hContact;
 			if (vContact.fromDB(ExImContact->hContact)) {
@@ -136,57 +133,45 @@ int CFileXml::Export(lpExImParam ExImContact, LPCSTR pszFileName)
 		else {
 			// other export mode
 			_hContactToWorkOn = INVALID_CONTACT_ID;
-#ifdef _DEBUG
-			LARGE_INTEGER freq, t1, t2;
 
-			QueryPerformanceFrequency(&freq);
-			QueryPerformanceCounter(&t1);
-#endif
 			// export owner contact
 			if (ExImContact->Typ == EXIM_ALL && vContact.fromDB(NULL)) {
 				vContact.Export(xmlfile, &Modules);
 			}
 			// loop for all other contact
-			for (MCONTACT hContact = db_find_first(); hContact != NULL; hContact = db_find_next(hContact))
-			{
-				switch (ExImContact->Typ)
-				{
-					case EXIM_ALL:
-					case EXIM_GROUP:
-						// dont export meta subcontacts by default
-						if (!db_mc_isSub(hContact)) {
-							if (vContact.fromDB(hContact)) {
-								vContact.Export(xmlfile, &Modules);
-							}
+			for (MCONTACT hContact = db_find_first(); hContact != NULL; hContact = db_find_next(hContact)) {
+				switch (ExImContact->Typ) {
+				case EXIM_ALL:
+				case EXIM_GROUP:
+					// dont export meta subcontacts by default
+					if (!db_mc_isSub(hContact)) {
+						if (vContact.fromDB(hContact)) {
+							vContact.Export(xmlfile, &Modules);
 						}
-						break;
-					case EXIM_SUBGROUP:
-						// dont export meta subcontacts by default and
-						// export only contact with selectet group name
-						if (!db_mc_isSub(hContact) && 
-							mir_wstrncmp(ExImContact->ptszName, DB::Setting::GetTString(hContact, "CList", "Group"), mir_wstrlen(ExImContact->ptszName))== 0)
-							{
-							if (vContact.fromDB(hContact)) {
-								vContact.Export(xmlfile, &Modules);
-							}
+					}
+					break;
+				case EXIM_SUBGROUP:
+					// dont export meta subcontacts by default and
+					// export only contact with selectet group name
+					if (!db_mc_isSub(hContact) &&
+						mir_wstrncmp(ExImContact->ptszName, DB::Setting::GetTString(hContact, "CList", "Group"), mir_wstrlen(ExImContact->ptszName)) == 0) {
+						if (vContact.fromDB(hContact)) {
+							vContact.Export(xmlfile, &Modules);
 						}
-						break;
-					case EXIM_ACCOUNT:
-						// export only contact with selectet account name
-						if (!mir_strncmp(ExImContact->pszName, Proto_GetBaseAccountName(hContact), mir_strlen(ExImContact->pszName))) {
-							if (vContact.fromDB(hContact)) {
-								vContact.Export(xmlfile, &Modules);
-							}
+					}
+					break;
+				case EXIM_ACCOUNT:
+					// export only contact with selectet account name
+					if (!mir_strncmp(ExImContact->pszName, Proto_GetBaseAccountName(hContact), mir_strlen(ExImContact->pszName))) {
+						if (vContact.fromDB(hContact)) {
+							vContact.Export(xmlfile, &Modules);
 						}
-						break;
+					}
+					break;
 				}
 			} // *end for
-#ifdef _DEBUG
-			QueryPerformanceCounter(&t2);
-			MsgErr(nullptr, LPGENW("Export took %f ms"),
-				(long double)(t2.QuadPart - t1.QuadPart) / freq.QuadPart * 1000.);
-#endif
-		}// *end other export mode
+		}
+		// *end other export mode
 
 		// nothing exported?
 		if (cbHeader == ftell(xmlfile)) {
@@ -207,15 +192,15 @@ int CFileXml::Export(lpExImParam ExImContact, LPCSTR pszFileName)
 
 CFileXml::CFileXml()
 {
-	_numContactsTodo		= 0;
-	_numContactsDone		= 0;
-	_numSettingsTodo		= 0;
-	_numSettingsDone		= 0;
-	_numEventsTodo			= 0;
-	_numEventsDone			= 0;
-	_numEventsDuplicated	= 0;
-	_hContactToWorkOn		= INVALID_CONTACT_ID;
-	_wExport				= 0;
+	_numContactsTodo = 0;
+	_numContactsDone = 0;
+	_numSettingsTodo = 0;
+	_numSettingsDone = 0;
+	_numEventsTodo = 0;
+	_numEventsDone = 0;
+	_numEventsDuplicated = 0;
+	_hContactToWorkOn = INVALID_CONTACT_ID;
+	_wExport = 0;
 }
 
 /**
@@ -258,33 +243,23 @@ int CFileXml::ImportContacts(TiXmlElement* xmlParent)
 			if (_progress.UpdateContact(LPGENW("Contact: %s (%S)"), pszNick, xContact->Attribute("proto"))) {
 				int result = vContact.LoadXmlElemnt(xContact);
 				switch (result) {
-					case ERROR_OK:
-						// init contact class and import if matches the user desires
-						if (_hContactToWorkOn == INVALID_CONTACT_ID || vContact.handle() == _hContactToWorkOn) {
-							result = vContact.Import(_hContactToWorkOn != INVALID_CONTACT_ID);
-							switch (result) {
-								case ERROR_OK:
-									_numContactsDone++;
-									break;
-								case ERROR_ABORTED:
-									if (pszNick) mir_free(pszNick);
-									return ERROR_ABORTED;
-#ifdef _DEBUG
-								default:
-									MsgErr(nullptr, LPGENW("Importing %s caused error %d"), pszNick, result);
-									break;
-#endif
-							}
+				case ERROR_OK:
+					// init contact class and import if matches the user desires
+					if (_hContactToWorkOn == INVALID_CONTACT_ID || vContact.handle() == _hContactToWorkOn) {
+						result = vContact.Import(_hContactToWorkOn != INVALID_CONTACT_ID);
+						switch (result) {
+						case ERROR_OK:
+							_numContactsDone++;
+							break;
+						case ERROR_ABORTED:
+							if (pszNick) mir_free(pszNick);
+							return ERROR_ABORTED;
 						}
-						break;
-					case ERROR_ABORTED:
-						if (pszNick) mir_free(pszNick);
-						return ERROR_ABORTED;
-#ifdef _DEBUG
-					default:
-						MsgErr(nullptr, LPGENW("Loading contact %s from xml failed with error %d"), pszNick, result);
-						break;
-#endif
+					}
+					break;
+				case ERROR_ABORTED:
+					if (pszNick) mir_free(pszNick);
+					return ERROR_ABORTED;
 				}
 			}
 			if (pszNick) mir_free(pszNick);
@@ -293,15 +268,11 @@ int CFileXml::ImportContacts(TiXmlElement* xmlParent)
 		else if (_hContactToWorkOn == INVALID_CONTACT_ID && !mir_strcmpi(xContact->Value(), XKEY_OWNER) && (vContact = xContact)) {
 			int result = vContact.Import();
 			switch (result) {
-				case ERROR_OK:
-					_numContactsDone++;
-					break;
-				case ERROR_ABORTED:
-					return ERROR_ABORTED;
-#ifdef _DEBUG
-				default:
-					MsgErr(nullptr, LPGENW("Importing Owner caused error %d"), result);
-#endif
+			case ERROR_OK:
+				_numContactsDone++;
+				break;
+			case ERROR_ABORTED:
+				return ERROR_ABORTED;
 			}
 		}
 	}
@@ -316,18 +287,13 @@ int CFileXml::ImportContacts(TiXmlElement* xmlParent)
  **/
 DWORD CFileXml::CountContacts(TiXmlElement* xmlParent)
 {
-	try {
-		DWORD dwCount = 0;
-		// count contacts in file for progress bar
-		for (TiXmlNode *xContact = xmlParent->FirstChild(); xContact != nullptr; xContact = xContact->NextSibling())
-			if (!mir_strcmpi(xContact->Value(), XKEY_CONTACT) || !mir_strcmpi(xContact->Value(), XKEY_OWNER))
-				dwCount += CountContacts(xContact->ToElement()) + 1;
+	DWORD dwCount = 0;
+	// count contacts in file for progress bar
+	for (TiXmlNode *xContact = xmlParent->FirstChild(); xContact != nullptr; xContact = xContact->NextSibling())
+		if (!mir_strcmpi(xContact->Value(), XKEY_CONTACT) || !mir_strcmpi(xContact->Value(), XKEY_OWNER))
+			dwCount += CountContacts(xContact->ToElement()) + 1;
 
-		return dwCount;
-	}
-	catch(...) {
-		return 0;
-	}
+	return dwCount;
 }
 
 /**
@@ -340,77 +306,72 @@ DWORD CFileXml::CountContacts(TiXmlElement* xmlParent)
  **/
 int CFileXml::Import(MCONTACT hContact, LPCSTR pszFileName)
 {
-	try {
-		_hContactToWorkOn = hContact;
-		// load xml file
-		TiXmlDocument doc;
-		if (!doc.LoadFile(pszFileName)) {
-			MsgErr(nullptr, LPGENW("Parser is unable to load XMLCard \"%s\"\nError: %d\nDescription: %s"),
-				pszFileName, doc.ErrorID(), doc.Error());
-			return 1;
-		}
-		// is xmlfile a XMLCard ?
-		TiXmlElement *xmlCard = doc.FirstChildElement("XMLCard");
-		if (xmlCard == nullptr) {
-			MsgErr(nullptr, LPGENW("The selected file is no valid XMLCard"));
-			return 1;
+	_hContactToWorkOn = hContact;
+	// load xml file
+	TiXmlDocument doc;
+	if (!doc.LoadFile(pszFileName)) {
+		MsgErr(nullptr, LPGENW("Parser is unable to load XMLCard \"%s\"\nError: %d\nDescription: %s"),
+			pszFileName, doc.ErrorID(), doc.Error());
+		return 1;
+	}
+	// is xmlfile a XMLCard ?
+	TiXmlElement *xmlCard = doc.FirstChildElement("XMLCard");
+	if (xmlCard == nullptr) {
+		MsgErr(nullptr, LPGENW("The selected file is no valid XMLCard"));
+		return 1;
+	}
+	// check version
+	if (mir_strcmp(xmlCard->Attribute("ver"), XMLCARD_VERSION)) {
+		MsgErr(nullptr, LPGENW("The version of the XMLCard is not supported by UserInfoEx"));
+		return 1;
+	}
+
+	// is owner contact to import ?
+	if (_hContactToWorkOn == NULL) {
+		int ret;
+
+		// disable database safty mode to speed up the operation
+		db_set_safety_mode(0);
+		// import owner contact
+		ret = ImportOwner(xmlCard->FirstChildElement(XKEY_OWNER));
+		// as soon as possible enable safty mode again!
+		db_set_safety_mode(1);
+
+		if (!ret) {
+			MsgBox(nullptr, MB_ICONINFORMATION,
+				LPGENW("Complete"),
+				LPGENW("Import complete"),
+				LPGENW("Owner contact successfully imported."));
+			return 0;
 		}
-		// check version
-		if (mir_strcmp(xmlCard->Attribute("ver"), XMLCARD_VERSION)) {
-			MsgErr(nullptr, LPGENW("The version of the XMLCard is not supported by UserInfoEx"));
+		else {
+			MsgErr(nullptr, LPGENW("Selected XMLCard does not contain an owner contact!"));
 			return 1;
 		}
-
-		// is owner contact to import ?
-		if (_hContactToWorkOn == NULL) {
-			int ret;
-			
+	}
+	else {
+		// count contacts in file for progress bar
+		_numContactsTodo = CountContacts(xmlCard);
+		if (_numContactsTodo > 0) {
+			_progress.SetContactCount(_numContactsTodo);
 			// disable database safty mode to speed up the operation
 			db_set_safety_mode(0);
-			// import owner contact
-			ret = ImportOwner(xmlCard->FirstChildElement(XKEY_OWNER));
+			// import the contacts
+			ImportContacts(xmlCard);
 			// as soon as possible enable safty mode again!
 			db_set_safety_mode(1);
-
-			if (!ret) {
-				MsgBox(nullptr, MB_ICONINFORMATION, 
-					LPGENW("Complete"),
-					LPGENW("Import complete"),
-					LPGENW("Owner contact successfully imported."));
-				return 0;
-			} else {
-				MsgErr(nullptr, LPGENW("Selected XMLCard does not contain an owner contact!"));
-				return 1;
-			}
-		}
-		else {
-			// count contacts in file for progress bar
-			_numContactsTodo = CountContacts(xmlCard);
-			if (_numContactsTodo > 0) {
-				_progress.SetContactCount(_numContactsTodo);
-				// disable database safty mode to speed up the operation
-				db_set_safety_mode(0);
-				// import the contacts
-				ImportContacts(xmlCard);
-				// as soon as possible enable safty mode again!
-				db_set_safety_mode(1);
-			}
-			// finally hide the progress dialog
-			_progress.Hide();
-
-			// show results
-			MsgBox(nullptr, MB_ICONINFORMATION, LPGENW("Import complete"), LPGENW("Some basic statistics"), 
-				LPGENW("added contacts: %u / %u\nadded settings: %u / %u\nadded events %u / %u\nduplicated events: %u"),
-				_numContactsDone, _numContactsTodo,
-				_numSettingsDone, _numSettingsTodo,
-				_numEventsDone, _numEventsTodo,
-				_numEventsDuplicated);
-			
 		}
-		return 0;
-	}	
-	catch(...) {
-		MsgErr(nullptr, LPGENW("FATAL: An exception was thrown while importing contacts from xmlCard!"));
-		return 1;
+		// finally hide the progress dialog
+		_progress.Hide();
+
+		// show results
+		MsgBox(nullptr, MB_ICONINFORMATION, LPGENW("Import complete"), LPGENW("Some basic statistics"),
+			LPGENW("added contacts: %u / %u\nadded settings: %u / %u\nadded events %u / %u\nduplicated events: %u"),
+			_numContactsDone, _numContactsTodo,
+			_numSettingsDone, _numSettingsTodo,
+			_numEventsDone, _numEventsTodo,
+			_numEventsDuplicated);
+
 	}
+	return 0;
 }
diff --git a/plugins/UserInfoEx/src/init.cpp b/plugins/UserInfoEx/src/init.cpp
index c71c1c64e8..2259a892b0 100644
--- a/plugins/UserInfoEx/src/init.cpp
+++ b/plugins/UserInfoEx/src/init.cpp
@@ -24,6 +24,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 CMPlugin g_plugin;
 HMODULE hDwmApi;
 
+MGLOBAL myGlobals;
+pfnDwmIsCompositionEnabled	dwmIsCompositionEnabled;
+
 /////////////////////////////////////////////////////////////////////////////////////////
 
 static PLUGININFOEX pluginInfoEx =
diff --git a/plugins/UserInfoEx/src/stdafx.h b/plugins/UserInfoEx/src/stdafx.h
index 095017dd57..c15c141fe9 100644
--- a/plugins/UserInfoEx/src/stdafx.h
+++ b/plugins/UserInfoEx/src/stdafx.h
@@ -104,10 +104,6 @@ using namespace std;
 #define GetUserData(p)		GetWindowLongPtr((p), GWLP_USERDATA)
 #define SetUserData(p, l)	SetWindowLongPtr((p), GWLP_USERDATA, (LONG_PTR) (l))
 
-unsigned int hashSetting_M2(const wchar_t * key);	//new Murma2 hash
-unsigned int hashSetting_M2(const char * key);		//new Murma2 hash
-unsigned int hashSettingW_M2(const char * key);		//new Murma2 hash
-
 #include "resource.h"
 #include "version.h"
 #include "../IconPacks/default/src/icons.h"
@@ -209,8 +205,6 @@ extern struct CountryListEntry *countries;
  * UserInfoEx common used functions
  ***********************************************************************************************************/
 
-DWORD	hashSetting(LPCSTR szStr);					//old miranda hash
-
 static FORCEINLINE BOOL IsProtoOnline(LPSTR pszProto)
 {
 	return pszProto && pszProto[0] && Proto_GetStatus(pszProto) >= ID_STATUS_ONLINE;
diff --git a/plugins/UserInfoEx/src/svc_refreshci.cpp b/plugins/UserInfoEx/src/svc_refreshci.cpp
index 6f3d9473ea..6f07273138 100644
--- a/plugins/UserInfoEx/src/svc_refreshci.cpp
+++ b/plugins/UserInfoEx/src/svc_refreshci.cpp
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 #define HM_PROTOACK	(WM_USER+100)
 
-typedef INT_PTR	(*PUpdCallback) (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, void *UserData);
+typedef INT_PTR(*PUpdCallback) (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, void *UserData);
 
 /***********************************************************************************************************
  * class CUpdProgress
@@ -51,36 +51,30 @@ protected:
 	 *
 	 * @return	This method returns 0.
 	 **/
-	static INT_PTR CALLBACK DefWndProc(CUpdProgress *pProgress, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
+	static INT_PTR CALLBACK DefWndProc(CUpdProgress *pProgress, HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 	{
-		__try
-		{
-			if (PtrIsValid(pProgress))
-			{
-				switch (uMsg)
-				{
+		__try {
+			if (PtrIsValid(pProgress)) {
+				switch (uMsg) {
 				case UM_POPUPACTION:
 				case WM_COMMAND:
 					{
-						if (wParam == MAKEWORD(IDSKIP, BN_CLICKED))
-						{
+						if (wParam == MAKEWORD(IDSKIP, BN_CLICKED)) {
 							pProgress->Destroy();
 						}
-						else						
-						if (wParam == MAKEWORD(IDCANCEL, BN_CLICKED))
-						{
-							pProgress->_bIsCanceled = TRUE;
-						}
+						else
+							if (wParam == MAKEWORD(IDCANCEL, BN_CLICKED)) {
+								pProgress->_bIsCanceled = TRUE;
+							}
 					}
 				}
-				if (PtrIsValid(pProgress->_pFnCallBack))
-				{
+				if (PtrIsValid(pProgress->_pFnCallBack)) {
 					pProgress->_pFnCallBack(hWnd, uMsg, wParam, lParam, pProgress->_pData);
 				}
 			}
 		}
-		__except(GetExceptionCode()==EXCEPTION_ACCESS_VIOLATION ? 
-						EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) 
+		__except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
+			EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
 		{ // code to handle exception
 			puts("Exception Occurred");
 		}
@@ -89,10 +83,10 @@ protected:
 
 public:
 
-	virtual HWND	Create		(LPCTSTR szTitle, PUpdCallback pFnCallBack) = 0;
-	virtual void	Destroy		(void) {};
-	virtual void	SetTitle	(LPCTSTR szText) = 0;
-	virtual void	SetText		(LPCTSTR szText) = 0;
+	virtual HWND	Create(LPCTSTR szTitle, PUpdCallback pFnCallBack) = 0;
+	virtual void	Destroy(void) {};
+	virtual void	SetTitle(LPCTSTR szText) = 0;
+	virtual void	SetText(LPCTSTR szText) = 0;
 
 	BYTE IsVisible() const
 	{
@@ -113,15 +107,13 @@ public:
 	 **/
 	void SetTitleParam(LPCTSTR szText, ...)
 	{
-		if (szText)
-		{
+		if (szText) {
 			wchar_t buf[MAXDATASIZE];
 			va_list vl;
-			
+
 			va_start(vl, szText);
-			if (mir_vsnwprintf(buf, _countof(buf), szText, vl) != -1)
-			{
-				SetTitle(buf);	 
+			if (mir_vsnwprintf(buf, _countof(buf), szText, vl) != -1) {
+				SetTitle(buf);
 			}
 			va_end(vl);
 		}
@@ -130,7 +122,7 @@ public:
 	/**
 	 * This method is used to set the popups or dialogs message text.
 	 * It takes text with parameters as sprintf does. If bbcodes are
-	 * disabled this method automatically deletes them from the text. 
+	 * disabled this method automatically deletes them from the text.
 	 *
 	 * @param	szText			- the text to display. Can contain formats like
 	 *							  sprintf does.
@@ -141,47 +133,39 @@ public:
 	 **/
 	void SetTextParam(LPCTSTR szText, ...)
 	{
-		if (szText)
-		{
+		if (szText) {
 			INT_PTR cch = mir_wstrlen(szText);
-			LPTSTR	fmt = (LPTSTR) mir_alloc((cch + 1) * sizeof(wchar_t));
-			
-			if (fmt)
-			{
+			LPTSTR	fmt = (LPTSTR)mir_alloc((cch + 1) * sizeof(wchar_t));
+
+			if (fmt) {
 				wchar_t buf[MAXDATASIZE];
 				va_list vl;
 
 				mir_wstrcpy(fmt, szText);
 
 				// delete bbcodes
-				if (!_bBBCode)
-				{
+				if (!_bBBCode) {
 					LPTSTR s, e;
 
-					for (s = fmt, e = fmt + cch; s[0] != 0; s++)
-					{
-						if (s[0] == '[')
-						{
+					for (s = fmt, e = fmt + cch; s[0] != 0; s++) {
+						if (s[0] == '[') {
 							// leading bbcode tag (e.g.: [b], [u], [i])
-							if ((s[1] == 'b' || s[1] == 'u' || s[1] == 'i') && s[2] == ']')
-							{
+							if ((s[1] == 'b' || s[1] == 'u' || s[1] == 'i') && s[2] == ']') {
 								memmove(s, s + 3, (e - s - 2) * sizeof(wchar_t));
 								e -= 3;
 							}
 							// ending bbcode tag (e.g.: [/b], [/u], [/i])
-							else if (s[1] == '/' && (s[2] == 'b' || s[2] == 'u' || s[2] == 'i') && s[3] == ']')
-							{
+							else if (s[1] == '/' && (s[2] == 'b' || s[2] == 'u' || s[2] == 'i') && s[3] == ']') {
 								memmove(s, s + 4, (e - s - 3) * sizeof(wchar_t));
 								e -= 4;
 							}
 						}
 					}
 				}
-			
+
 				va_start(vl, szText);
-				if (mir_vsnwprintf(buf, _countof(buf), fmt, vl) != -1)
-				{
-					SetText(buf);	 
+				if (mir_vsnwprintf(buf, _countof(buf), fmt, vl) != -1) {
+					SetText(buf);
 				}
 				va_end(vl);
 				mir_free(fmt);
@@ -231,7 +215,7 @@ class CDlgUpdProgress : public CUpdProgress
 	 *
 	 *
 	 **/
-	static INT_PTR CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
+	static INT_PTR CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 	{
 		switch (uMsg) {
 		case WM_INITDIALOG:
@@ -242,11 +226,11 @@ class CDlgUpdProgress : public CUpdProgress
 					{ ICO_BTN_CANCEL,		BM_SETIMAGE,	IDCANCEL	}
 				};
 				IcoLib_SetCtrlIcons(hWnd, idIcon, g_plugin.getByte(SET_ICONS_BUTTONS, 1) ? 2 : 1);
-	
-				SendDlgItemMessage(hWnd, IDCANCEL,	BUTTONTRANSLATE, NULL, NULL);
-				SendDlgItemMessage(hWnd, IDSKIP,	BUTTONTRANSLATE, NULL, NULL);
+
+				SendDlgItemMessage(hWnd, IDCANCEL, BUTTONTRANSLATE, NULL, NULL);
+				SendDlgItemMessage(hWnd, IDSKIP, BUTTONTRANSLATE, NULL, NULL);
 				SetUserData(hWnd, lParam);
-				
+
 				TranslateDialogDefault(hWnd);
 			}
 			return TRUE;
@@ -260,7 +244,7 @@ class CDlgUpdProgress : public CUpdProgress
 			}
 			return FALSE;
 		}
-		return CUpdProgress::DefWndProc((CUpdProgress *) GetUserData(hWnd), hWnd, uMsg, wParam, lParam);
+		return CUpdProgress::DefWndProc((CUpdProgress *)GetUserData(hWnd), hWnd, uMsg, wParam, lParam);
 	}
 
 public:
@@ -281,13 +265,12 @@ public:
 	virtual HWND Create(LPCTSTR szTitle, PUpdCallback pFnCallBack)
 	{
 		_pFnCallBack = pFnCallBack;
-		_hWnd = CreateDialogParam(g_plugin.getInst(), 
-							MAKEINTRESOURCE(IDD_REFRESHDETAILS), 
-							nullptr, 
-							CDlgUpdProgress::WndProc, 
-							(LPARAM) this);
-		if (_hWnd)
-		{
+		_hWnd = CreateDialogParam(g_plugin.getInst(),
+			MAKEINTRESOURCE(IDD_REFRESHDETAILS),
+			nullptr,
+			CDlgUpdProgress::WndProc,
+			(LPARAM)this);
+		if (_hWnd) {
 			SetTitle(szTitle);
 			ShowWindow(_hWnd, SW_SHOW);
 		}
@@ -300,8 +283,7 @@ public:
 	 **/
 	virtual void Destroy()
 	{
-		if (_hWnd)
-		{
+		if (_hWnd) {
 			SetUserData(_hWnd, NULL);
 			EndDialog(_hWnd, IDOK);
 			_hWnd = nullptr;
@@ -343,16 +325,14 @@ class CPopupUpdProgress : public CUpdProgress
 	 **/
 	void UpdateText()
 	{
-		if (_szText)
-		{
+		if (_szText) {
 			INT_PTR cb = mir_wstrlen(_szText) + 8;
-			LPTSTR	pb = (LPTSTR) mir_alloc(cb * sizeof(wchar_t));
+			LPTSTR	pb = (LPTSTR)mir_alloc(cb * sizeof(wchar_t));
 
-			if (pb)
-			{
+			if (pb) {
 				mir_wstrcpy(pb, _szText);
 
-				SendMessage(_hWnd, UM_CHANGEPOPUP, CPT_TITLET, (LPARAM) pb);
+				SendMessage(_hWnd, UM_CHANGEPOPUP, CPT_TITLET, (LPARAM)pb);
 			}
 		}
 	}
@@ -364,18 +344,17 @@ class CPopupUpdProgress : public CUpdProgress
 	 * if passed to the default windows procedure.
 	 *
 	 **/
-	static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
+	static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 	{
 		// Filter out messages, which must not be passed to default windows procedure or even
 		// to the callback function!
-		switch (uMsg)
-		{
+		switch (uMsg) {
 		case UM_INITPOPUP:
 		case UM_CHANGEPOPUP:
 		case UM_FREEPLUGINDATA:
 			break;
 		default:
-			CUpdProgress::DefWndProc((CUpdProgress *) PUGetPluginData(hWnd), hWnd, uMsg, wParam, lParam);
+			CUpdProgress::DefWndProc((CUpdProgress *)PUGetPluginData(hWnd), hWnd, uMsg, wParam, lParam);
 		}
 		return DefWindowProc(hWnd, uMsg, wParam, lParam);
 	}
@@ -426,11 +405,11 @@ public:
 		// dummy text
 		_szText = mir_wstrdup(szTitle);
 		mir_wstrcpy(pd.lptzContactName, _szText);
-		
+
 		mir_wstrcpy(pd.lptzText, L" ");
-		
+
 		_pFnCallBack = pFnCallBack;
-		_hWnd = (HWND) CallService(MS_POPUP_ADDPOPUPT, (WPARAM) &pd, APF_RETURN_HWND|APF_NEWDATA);
+		_hWnd = (HWND)CallService(MS_POPUP_ADDPOPUPT, (WPARAM)&pd, APF_RETURN_HWND | APF_NEWDATA);
 		return _hWnd;
 	}
 
@@ -440,8 +419,7 @@ public:
 	 **/
 	virtual void Destroy()
 	{
-		if (_hWnd)
-		{
+		if (_hWnd) {
 			PUDeletePopup(_hWnd);
 			_hWnd = nullptr;
 		}
@@ -465,7 +443,7 @@ public:
 	 **/
 	virtual void SetText(LPCTSTR szText)
 	{
-		SendMessage(_hWnd, UM_CHANGEPOPUP, CPT_TEXTT, (LPARAM) mir_wstrdup(szText));
+		SendMessage(_hWnd, UM_CHANGEPOPUP, CPT_TEXTT, (LPARAM)mir_wstrdup(szText));
 	}
 };
 
@@ -497,25 +475,21 @@ class CContactUpdater : public CContactQueue
 	 *
 	 * @return	This method returns 0.
 	 **/
-	static int DlgProc(HWND, UINT uMsg, WPARAM wParam, LPARAM, CContactUpdater* u) 
+	static int DlgProc(HWND, UINT uMsg, WPARAM wParam, LPARAM, CContactUpdater* u)
 	{
-		switch (uMsg) 
-		{
+		switch (uMsg) {
 
-		/**
-		 * User has clicked on the skip or cancel button.
-		 **/
+			/**
+			 * User has clicked on the skip or cancel button.
+			 **/
 		case UM_POPUPACTION:
-		case WM_COMMAND: 
+		case WM_COMMAND:
 			{
-				if (PtrIsValid(u))
-				{
-					switch (LOWORD(wParam))
-					{
+				if (PtrIsValid(u)) {
+					switch (LOWORD(wParam)) {
 					case IDCANCEL:
 						{
-							if (HIWORD(wParam) == BN_CLICKED) 
-							{
+							if (HIWORD(wParam) == BN_CLICKED) {
 								u->Cancel();
 							}
 						}
@@ -534,7 +508,7 @@ class CContactUpdater : public CContactQueue
 	 * the time is shortend to 4s.
 	 *
 	 * @param	wParam		- not used
-	 * @param	ack			- pointer to an ACKDATA structure containing all 
+	 * @param	ack			- pointer to an ACKDATA structure containing all
 	 *						  data for the acknoledgement.
 	 *
 	 * @return	nothing
@@ -547,7 +521,7 @@ class CContactUpdater : public CContactQueue
 					_nContactAcks = (INT_PTR)ack->hProcess;
 					_hContactAcks = (PBYTE)mir_calloc(sizeof(BYTE) * (INT_PTR)ack->hProcess);
 				}
-				
+
 				if (ack->result == ACKRESULT_SUCCESS || ack->result == ACKRESULT_FAILED)
 					_hContactAcks[ack->lParam] = 1;
 
@@ -569,11 +543,10 @@ class CContactUpdater : public CContactQueue
 	 *
 	 * @return	nothing
 	 **/
-	virtual void OnEmpty() 
+	virtual void OnEmpty()
 	{
 		// This was the last contact, so destroy the progress window.
-		if (_hProtoAckEvent)
-		{
+		if (_hProtoAckEvent) {
 			UnhookEvent(_hProtoAckEvent);
 			_hProtoAckEvent = nullptr;
 		}
@@ -584,8 +557,7 @@ class CContactUpdater : public CContactQueue
 		_hContact = NULL;
 
 		// close progress bar
-		if (_pProgress)
-		{
+		if (_pProgress) {
 			_pProgress->Destroy();
 
 			delete _pProgress;
@@ -606,66 +578,44 @@ class CContactUpdater : public CContactQueue
 	 *
 	 * @return	nothing
 	 **/
+
 	virtual void Callback(MCONTACT hContact, PVOID)
 	{
-		LPSTR	pszProto	= Proto_GetBaseAccountName(hContact);
+		LPSTR	pszProto = Proto_GetBaseAccountName(hContact);
 
-		if (pszProto && pszProto[0])
-		{
+		if (pszProto && pszProto[0]) {
 			MIR_FREE(_hContactAcks);
 			_nContactAcks = 0;
 			_hContact = hContact;
 
 			if (!_hProtoAckEvent)
-			{
-				_hProtoAckEvent = (HANDLE) ThisHookEvent(ME_PROTO_ACK, (EVENTHOOK) &CContactUpdater::OnProtoAck);
-			}
+				_hProtoAckEvent = (HANDLE)ThisHookEvent(ME_PROTO_ACK, (EVENTHOOK)&CContactUpdater::OnProtoAck);
 
 			if (_pProgress)
-			{
-				_pProgress->SetTextParam(TranslateT("[b]%s (%S)...[/b]\n%d Contacts remaining"),
-					Clist_GetContactDisplayName(_hContact), pszProto, Size());
-			}
+				_pProgress->SetTextParam(TranslateT("[b]%s (%S)...[/b]\n%d Contacts remaining"), Clist_GetContactDisplayName(_hContact), pszProto, Size());
+
 			if (IsProtoOnline(pszProto))
-			{
-				int i;
-				for (i = 0; i < 3 && ProtoChainSend(hContact, PSS_GETINFO, 0, 0); i++)
-				{
+				for (int i = 0; i < 3 && ProtoChainSend(hContact, PSS_GETINFO, 0, 0); i++)
 					Sleep(3000);
-				}
-			}
 		}
 	}
 
 public:
-
-	/**
-	 * This is the default constructor
-	 *
-	 **/
 	CContactUpdater() : CContactQueue()
 	{
-		_hContactAcks	= nullptr;
-		_nContactAcks	= 0;
-		_hContact		= NULL;
-		_pProgress		= nullptr;
-		_hProtoAckEvent	= nullptr;
+		_hContactAcks = nullptr;
+		_nContactAcks = 0;
+		_hContact = NULL;
+		_pProgress = nullptr;
+		_hProtoAckEvent = nullptr;
 	}
 
-	/**
-	 *
-	 *
-	 **/
 	~CContactUpdater()
 	{
 		RemoveAll();
 		OnEmpty();
 	}
 
-	/**
-	 *
-	 *
-	 **/
 	BOOL QueueAddRefreshContact(MCONTACT hContact, int iWait)
 	{
 		LPSTR pszProto = Proto_GetBaseAccountName(hContact);
@@ -676,10 +626,6 @@ public:
 		return 0;
 	}
 
-	/**
-	 *
-	 *
-	 **/
 	void RefreshAll()
 	{
 		int iWait = 100;
@@ -688,18 +634,15 @@ public:
 			if (QueueAddRefreshContact(hContact, iWait))
 				iWait += 5000;
 
-		if (Size() && !_pProgress)
-		{
-			if (ServiceExists(MS_POPUP_CHANGETEXTT) && g_plugin.getByte("PopupProgress", FALSE))
-			{
+		if (Size() && !_pProgress) {
+			if (ServiceExists(MS_POPUP_CHANGETEXTT) && g_plugin.getByte("PopupProgress", FALSE)) {
 				_pProgress = new CPopupUpdProgress(this);
 			}
-			else
-			{
+			else {
 				_pProgress = new CDlgUpdProgress(this);
 			}
 
-			_pProgress->Create(TranslateT("Refresh contact details"), (PUpdCallback) CContactUpdater::DlgProc);
+			_pProgress->Create(TranslateT("Refresh contact details"), (PUpdCallback)CContactUpdater::DlgProc);
 			_pProgress->SetText(TranslateT("Preparing..."));
 		}
 
@@ -708,10 +651,6 @@ public:
 			Menu_ModifyItem(hMenuItemRefresh, LPGENW("Abort Refreshing Contact Details"), IcoLib_GetIcon(ICO_BTN_CANCEL));
 	}
 
-	/**
-	 *
-	 *
-	 **/
 	void Cancel()
 	{
 		RemoveAll();
@@ -725,14 +664,15 @@ static CContactUpdater	*ContactUpdater = nullptr;
  * common helper functions
  ***********************************************************************************************************/
 
-/**
- * This function checks, whether at least one protocol is online!
- *
- * @param	none
- *
- * @retval	TRUE		- At least one protocol is online.
- * @retval	FALSE		- All protocols are offline.
- **/
+ /**
+  * This function checks, whether at least one protocol is online!
+  *
+  * @param	none
+  *
+  * @retval	TRUE		- At least one protocol is online.
+  * @retval	FALSE		- All protocols are offline.
+  **/
+
 static BOOL IsMirandaOnline()
 {
 	for (auto &pa : Accounts())
@@ -746,47 +686,35 @@ static BOOL IsMirandaOnline()
  * services
  ***********************************************************************************************************/
 
-/**
- * This is the service function being called by MS_USERINFO_REFRESH.
- * It adds each contact, whose protocol is online, to the queue of contacts to refresh.
- * The queue is running a separate thread, which is responsible for requesting the contact information
- * one after another with a certain time to wait in between.
- *
- * @param	wParam		- not used
- * @param	lParam		- not used
- *
- * @return	This service function always returns 0.
- **/
+ /**
+  * This is the service function being called by MS_USERINFO_REFRESH.
+  * It adds each contact, whose protocol is online, to the queue of contacts to refresh.
+  * The queue is running a separate thread, which is responsible for requesting the contact information
+  * one after another with a certain time to wait in between.
+  *
+  * @param	wParam		- not used
+  * @param	lParam		- not used
+  *
+  * @return	This service function always returns 0.
+  **/
+
 static INT_PTR RefreshService(WPARAM, LPARAM)
 {
-	try
-	{
-		if (IsMirandaOnline())
-		{
-			if (!ContactUpdater)
-			{
-				ContactUpdater = new CContactUpdater();
-			}
-
-			if (ContactUpdater->Size() == 0)
-			{
-				ContactUpdater->RefreshAll();
-			}
-			else if (IDYES == MsgBox(nullptr, MB_YESNO|MB_ICON_QUESTION, LPGENW("Refresh contact details"), nullptr, 
-				LPGENW("Do you want to cancel the current refresh procedure?")))
-			{
-				ContactUpdater->Cancel();
-			}
-		}
-		else
-		{
-			MsgErr(nullptr, LPGENW("Miranda must be online for refreshing contact information!"));
-		}
+	if (!IsMirandaOnline()) {
+		MsgErr(nullptr, LPGENW("Miranda must be online for refreshing contact information!"));
+		return 0;
 	}
-	catch(...)
-	{
-		MsgErr(nullptr, LPGENW("The function caused an exception!"));
+
+	if (!ContactUpdater)
+		ContactUpdater = new CContactUpdater();
+
+	if (ContactUpdater->Size() == 0)
+		ContactUpdater->RefreshAll();
+	else if (IDYES == MsgBox(nullptr, MB_YESNO | MB_ICON_QUESTION, LPGENW("Refresh contact details"), nullptr,
+		LPGENW("Do you want to cancel the current refresh procedure?"))) {
+		ContactUpdater->Cancel();
 	}
+
 	return 0;
 }
 
@@ -794,39 +722,22 @@ static INT_PTR RefreshService(WPARAM, LPARAM)
  * events
  ***********************************************************************************************************/
 
-/**
- *
- *
- **/
 static int OnContactAdded(WPARAM hContact, LPARAM)
 {
-	try
-	{
-		DWORD dwStmp = db_get_dw(hContact, USERINFO, SET_CONTACT_ADDEDTIME, 0);
-		if (!dwStmp)
-		{
-			MTime mt;
-			
-			mt.GetLocalTime();
-			mt.DBWriteStamp(hContact, USERINFO, SET_CONTACT_ADDEDTIME);
-
-			// create updater, if not yet exists
-			if (!ContactUpdater)
-			{
-				ContactUpdater = new CContactUpdater();
-			}
-			
-			// add to the end of the queue
-			ContactUpdater->AddIfDontHave(
-				(ContactUpdater->Size() > 0) 
-					? max(ContactUpdater->Get(ContactUpdater->Size() - 1)->check_time + 15000, 4000) 
-					: 4000, hContact);
-		}
-	}
-	catch(...)
-	{
-		MsgErr(nullptr, LPGENW("The function caused an exception!"));
+	DWORD dwStmp = db_get_dw(hContact, USERINFO, SET_CONTACT_ADDEDTIME, 0);
+	if (!dwStmp) {
+		MTime mt;
+		mt.GetLocalTime();
+		mt.DBWriteStamp(hContact, USERINFO, SET_CONTACT_ADDEDTIME);
+
+		// create updater, if not yet exists
+		if (!ContactUpdater)
+			ContactUpdater = new CContactUpdater();
+
+		// add to the end of the queue
+		ContactUpdater->AddIfDontHave((ContactUpdater->Size() > 0) ? max(ContactUpdater->Get(ContactUpdater->Size() - 1)->check_time + 15000, 4000) : 4000, hContact);
 	}
+
 	return 0;
 }
 
@@ -839,6 +750,7 @@ static int OnContactAdded(WPARAM hContact, LPARAM)
  *
  * @return	This function always returns 0.
  **/
+
 static int OnPreShutdown(WPARAM, LPARAM)
 {
 	if (ContactUpdater) {
@@ -853,9 +765,6 @@ static int OnPreShutdown(WPARAM, LPARAM)
  * initialization
  ***********************************************************************************************************/
 
-/**
- * This function initially loads the module upon startup.
- **/
 void SvcRefreshContactInfoLoadModule(void)
 {
 	CreateServiceFunction(MS_USERINFO_REFRESH, RefreshService);
-- 
cgit v1.2.3