diff options
author | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-05-15 10:38:20 +0000 |
---|---|---|
committer | Vadim Dashevskiy <watcherhd@gmail.com> | 2012-05-15 10:38:20 +0000 |
commit | 48540940b6c28bb4378abfeb500ec45a625b37b6 (patch) | |
tree | 2ef294c0763e802f91d868bdef4229b6868527de /protocols/IcqOscarJ/log.cpp | |
parent | 5c350913f011e119127baeb32a6aedeb4f0d33bc (diff) |
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/IcqOscarJ/log.cpp')
-rw-r--r-- | protocols/IcqOscarJ/log.cpp | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/protocols/IcqOscarJ/log.cpp b/protocols/IcqOscarJ/log.cpp new file mode 100644 index 0000000000..c6ff958f70 --- /dev/null +++ b/protocols/IcqOscarJ/log.cpp @@ -0,0 +1,170 @@ +// ---------------------------------------------------------------------------80
+// ICQ plugin for Miranda Instant Messenger
+// ________________________________________
+//
+// Copyright © 2000-2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede
+// Copyright © 2001-2002 Jon Keating, Richard Hughes
+// Copyright © 2002-2004 Martin Öberg, Sam Kothari, Robert Rainwater
+// Copyright © 2004-2009 Joe Kucera
+//
+// 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.
+//
+// -----------------------------------------------------------------------------
+//
+// File name : $URL: http://miranda.googlecode.com/svn/trunk/miranda/protocols/IcqOscarJ/log.cpp $
+// Revision : $Revision: 10574 $
+// Last change on : $Date: 2009-08-18 20:20:42 +0300 (Вт, 18 авг 2009) $
+// Last change by : $Author: jokusoftware $
+//
+// DESCRIPTION:
+//
+// Describe me here please...
+//
+// -----------------------------------------------------------------------------
+
+#include "icqoscar.h"
+
+extern BOOL bPopUpService;
+
+static const char *szLevelDescr[] = {LPGEN("ICQ Note"), LPGEN("ICQ Warning"), LPGEN("ICQ Error"), LPGEN("ICQ Fatal")};
+
+struct LogMessageInfo {
+ const char *szMsg;
+ const char *szTitle;
+ BYTE bLevel;
+};
+
+
+void __cdecl CIcqProto::icq_LogMessageThread(void* arg)
+{
+ LogMessageInfo *err = (LogMessageInfo*)arg;
+ if (!err)
+ return;
+
+ if (bPopUpService && getSettingByte(NULL, "PopupsLogEnabled", DEFAULT_LOG_POPUPS_ENABLED))
+ {
+ ShowPopUpMsg(NULL, err->szTitle, err->szMsg, err->bLevel);
+
+ SAFE_FREE((void**)&err->szMsg);
+ SAFE_FREE((void**)&err);
+
+ return;
+ }
+
+ bErrorBoxVisible = TRUE;
+ if (err->szMsg && err->szTitle)
+ MessageBoxUtf(NULL, err->szMsg, err->szTitle, MB_OK);
+ SAFE_FREE((void**)&err->szMsg);
+ SAFE_FREE((void**)&err);
+ bErrorBoxVisible = FALSE;
+}
+
+
+void CIcqProto::icq_LogMessage(int level, const char *szMsg)
+{
+ NetLog_Server("%s", szMsg);
+
+ int displayLevel = getSettingByte(NULL, "ShowLogLevel", LOG_WARNING);
+ if (level >= displayLevel)
+ {
+ if (!bErrorBoxVisible || !getSettingByte(NULL, "IgnoreMultiErrorBox", 0))
+ {
+ // error not shown or allowed multi - show messagebox
+ LogMessageInfo *lmi = (LogMessageInfo*)SAFE_MALLOC(sizeof(LogMessageInfo));
+ lmi->bLevel = (BYTE)level;
+ lmi->szMsg = null_strdup(szMsg);
+ lmi->szTitle = szLevelDescr[level];
+ ForkThread( &CIcqProto::icq_LogMessageThread, lmi);
+ }
+ }
+}
+
+void CIcqProto::icq_LogUsingErrorCode(int level, DWORD dwError, const char *szMsg)
+{
+ char szBuf[1024];
+ char str[1024];
+ char str2[64];
+ char szErrorMsg[512];
+ char *pszErrorMsg = NULL;
+ int bNeedFree = FALSE;
+
+ switch(dwError) {
+ case ERROR_TIMEOUT:
+ case WSAETIMEDOUT:
+ pszErrorMsg = LPGEN("The server did not respond to the connection attempt within a reasonable time, it may be temporarily down. Try again later.");
+ break;
+
+ case ERROR_GEN_FAILURE:
+ pszErrorMsg = LPGEN("The connection with the server was abortively closed during the connection attempt. You may have lost your local network connection.");
+ break;
+
+ case WSAEHOSTUNREACH:
+ case WSAENETUNREACH:
+ pszErrorMsg = LPGEN("Miranda was unable to resolve the name of a server to its numeric address. This is most likely caused by a catastrophic loss of your network connection (for example, your modem has disconnected), but if you are behind a proxy, you may need to use the 'Resolve hostnames through proxy' option in M->Options->Network.");
+ break;
+
+ case WSAEHOSTDOWN:
+ case WSAENETDOWN:
+ case WSAECONNREFUSED:
+ pszErrorMsg = LPGEN("Miranda was unable to make a connection with a server. It is likely that the server is down, in which case you should wait for a while and try again later.");
+ break;
+
+ case ERROR_ACCESS_DENIED:
+ pszErrorMsg = LPGEN("Your proxy rejected the user name and password that you provided. Please check them in M->Options->Network.");
+ break;
+
+ case WSAHOST_NOT_FOUND:
+ case WSANO_DATA:
+ pszErrorMsg = LPGEN("The server to which you are trying to connect does not exist. Check your spelling in M->Options->Network->ICQ.");
+ break;
+
+ default:
+ {
+ TCHAR err[512];
+
+ if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, 0, err, SIZEOF(err), NULL))
+ {
+#if defined( _UNICODE )
+ pszErrorMsg = make_utf8_string(err);
+#else
+ utf8_encode(err, &pszErrorMsg);
+#endif
+ bNeedFree = TRUE;
+ }
+ break;
+ }
+ }
+
+ null_snprintf(szBuf, sizeof(szBuf), "%s%s%s (%s %d)",
+ szMsg ? ICQTranslateUtfStatic(szMsg, str, 1024) : "",
+ szMsg ? "\r\n\r\n" : "",
+ ICQTranslateUtfStatic(pszErrorMsg, szErrorMsg, 512),
+ ICQTranslateUtfStatic(LPGEN("error"), str2, 64),
+ dwError);
+
+ if (bNeedFree)
+ SAFE_FREE(&pszErrorMsg);
+
+ icq_LogMessage(level, szBuf);
+}
+
+void CIcqProto::icq_LogFatalParam(const char *szMsg, WORD wError)
+{
+ char str[MAX_PATH];
+ char buf[MAX_PATH];
+
+ null_snprintf(buf, MAX_PATH, ICQTranslateUtfStatic(szMsg, str, MAX_PATH), wError);
+ icq_LogMessage(LOG_FATAL, buf);
+}
|