From f04d64869f3b1de54fb343f28f955584780001b8 Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sat, 26 Nov 2011 15:41:10 +0000 Subject: Project folders rename part 3 git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@215 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- ieview/HTMLBuilder.cpp | 522 ------------------------------------------------- 1 file changed, 522 deletions(-) delete mode 100644 ieview/HTMLBuilder.cpp (limited to 'ieview/HTMLBuilder.cpp') diff --git a/ieview/HTMLBuilder.cpp b/ieview/HTMLBuilder.cpp deleted file mode 100644 index 5a1fe08..0000000 --- a/ieview/HTMLBuilder.cpp +++ /dev/null @@ -1,522 +0,0 @@ -/* - -IEView Plugin for Miranda IM -Copyright (C) 2005-2010 Piotr Piastucki - -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 "HTMLBuilder.h" -#include "m_MathModule.h" -#include "m_metacontacts.h" -#include "Utils.h" -//#include "Smiley.h" -#include "Options.h" - - -int HTMLBuilder::mimFlags = 0; - -HTMLBuilder::HTMLBuilder() { - lastIEViewEvent.cbSize = sizeof (IEVIEWEVENT); - lastIEViewEvent.iType = IEE_LOG_MEM_EVENTS; - lastIEViewEvent.codepage = CP_ACP; - lastIEViewEvent.pszProto = NULL; - lastIEViewEvent.count = 0; - lastIEViewEvent.dwFlags = 0; - lastIEViewEvent.hContact = NULL; - lastIEViewEvent.hwnd = NULL; - lastIEViewEvent.eventData = NULL; -} - -HTMLBuilder::~HTMLBuilder() { - if (lastIEViewEvent.pszProto != NULL) { - delete (char*)lastIEViewEvent.pszProto; - } -} - -bool HTMLBuilder::encode(HANDLE hContact, const char *proto, const wchar_t *text, wchar_t **output, int *outputSize, int level, int flags, bool isSent) { - TextToken *token = NULL, *token2; - switch (level) { - case 0: - if (flags & ENF_CHAT_FORMATTING) { - token = TextToken::tokenizeChatFormatting(text); - break; - } - level++; - case 1: - if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_BBCODES) && (flags & ENF_BBCODES)) { - token = TextToken::tokenizeBBCodes(text); - break; - } - level++; - case 2: - if ((Options::getGeneralFlags()&Options::GENERAL_ENABLE_MATHMODULE) && Options::isMathModule()) { - token = TextToken::tokenizeMath(text); - break; - } - level++; - case 3: - token = TextToken::tokenizeLinks(text); - break; - case 4: - if ((flags & ENF_SMILEYS) || - ((Options::getGeneralFlags() & Options::GENERAL_SMILEYINNAMES) && (flags & ENF_NAMESMILEYS))) { - token = TextToken::tokenizeSmileys(hContact, proto, text, isSent); - } - break; - } - if (token!=NULL) { - for (token2 = token;token!=NULL;token=token2) { - bool skip = false; - token2 = token->getNext(); - if (token->getType() == TextToken::TEXT) { - skip = encode(hContact, proto, token->getTextW(), output, outputSize, level+1, flags, isSent); - } - if (!skip) { - token->toString(output, outputSize); - } - delete token; - } - return true; - } - return false; -} - -wchar_t * HTMLBuilder::encode(HANDLE hContact, const char *proto, const wchar_t *text, int flags, bool isSent) { - int outputSize; - wchar_t *output = NULL; - if (text != NULL) { - encode(hContact, proto, text, &output, &outputSize, 0, flags, isSent); - } - return output; -} - - -char * HTMLBuilder::encodeUTF8(HANDLE hContact, const char *proto, const wchar_t *wtext, int flags, bool isSent) { - char *outputStr = NULL; - if (wtext != NULL) { - wchar_t *output = encode(hContact, proto, wtext, flags, isSent); - outputStr = Utils::UTF8Encode(output); - if (output != NULL) { - free(output); - } - } - return outputStr; -} - -char * HTMLBuilder::encodeUTF8(HANDLE hContact, const char *proto, const char *text, int flags, bool isSent) { - char *outputStr = NULL; - if (text != NULL) { - wchar_t *wtext = Utils::convertToWCS(text); - outputStr = encodeUTF8(hContact, proto, wtext, flags, isSent); - delete wtext; - } - return outputStr; -} - -char * HTMLBuilder::encodeUTF8(HANDLE hContact, const char *proto, const char *text, int cp, int flags, bool isSent) { - char * outputStr = NULL; - if (text != NULL) { - wchar_t *wtext = Utils::convertToWCS(text, cp); - outputStr = encodeUTF8(hContact, proto, wtext, flags, isSent); - delete wtext; - } - return outputStr; -} - -char *HTMLBuilder::getProto(HANDLE hContact) { - return Utils::dupString((char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0)); -} - -char *HTMLBuilder::getProto(const char *proto, HANDLE hContact) { - if (proto != NULL) { - return Utils::dupString(proto); - } - return Utils::dupString((char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0)); -} - -char *HTMLBuilder::getRealProto(HANDLE hContact) { - if (hContact != NULL) { - char *szProto = Utils::dupString((char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0)); - if (szProto!=NULL && !strcmp(szProto,"MetaContacts")) { - hContact = (HANDLE) CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM) hContact, 0); - if (hContact!=NULL) { - delete szProto; - szProto = Utils::dupString((char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0)); - } - } - return szProto; - } - return NULL; -} - -char *HTMLBuilder::getRealProto(HANDLE hContact, const char *szProto) { - if (szProto!=NULL && !strcmp(szProto,"MetaContacts")) { - hContact = (HANDLE) CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM) hContact, 0); - if (hContact!=NULL) { - return Utils::dupString((char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0)); - } - } - return Utils::dupString(szProto); -} - -HANDLE HTMLBuilder::getRealContact(HANDLE hContact) { - char *szProto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if (szProto != NULL && !strcmp(szProto,"MetaContacts")) { - hContact = (HANDLE) CallService(MS_MC_GETMOSTONLINECONTACT, (WPARAM) hContact, 0); - } - return hContact; -} - - -int HTMLBuilder::getLastEventType() { - return iLastEventType; -} - -void HTMLBuilder::setLastEventType(int t) { - iLastEventType = t; -} - -DWORD HTMLBuilder::getLastEventTime() { - return lastEventTime; -} - -void HTMLBuilder::setLastEventTime(DWORD t) { - lastEventTime = t; -} - -bool HTMLBuilder::isSameDate(time_t time1, time_t time2) { - struct tm tm_t1, tm_t2; - tm_t1 = *localtime((time_t *)(&time1)); - tm_t2 = *localtime((time_t *)(&time2)); - if (tm_t1.tm_year == tm_t2.tm_year && tm_t1.tm_mon == tm_t2.tm_mon - && tm_t1.tm_mday == tm_t2.tm_mday) { - return true; - } - return false; -} - -void HTMLBuilder::getUINs(HANDLE hContact, char *&uinIn, char *&uinOut) { - CONTACTINFO ci; - char buf[128]; - char *szProto; - hContact = getRealContact(hContact); - szProto = getProto(hContact); - ZeroMemory(&ci, sizeof(ci)); - ci.cbSize = sizeof(ci); - ci.hContact = hContact; - ci.szProto = szProto; - ci.dwFlag = CNF_UNIQUEID; - buf[0] = 0; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci)) { - switch (ci.type) { - case CNFT_ASCIIZ: - mir_snprintf(buf, sizeof(buf), "%s", ci.pszVal); - miranda_sys_free(ci.pszVal); - break; - case CNFT_DWORD: - mir_snprintf(buf, sizeof(buf), "%u", ci.dVal); - break; - } - } - uinIn = Utils::UTF8Encode(buf); - ci.hContact = NULL; - buf[0] = 0; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci)) { - switch (ci.type) { - case CNFT_ASCIIZ: - mir_snprintf(buf, sizeof(buf), "%s", ci.pszVal); - miranda_sys_free(ci.pszVal); - break; - case CNFT_DWORD: - mir_snprintf(buf, sizeof(buf), "%u", ci.dVal); - break; - } - } - uinOut = Utils::UTF8Encode(buf); - delete szProto; -} - -wchar_t *HTMLBuilder::getContactName(HANDLE hContact, const char* szProto) { - CONTACTINFO ci; - wchar_t *szName = NULL; - ZeroMemory(&ci, sizeof(ci)); - ci.cbSize = sizeof(ci); - ci.hContact = hContact; - ci.szProto = (char *)szProto; - ci.dwFlag = CNF_DISPLAY | CNF_UNICODE; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci)) { - if (ci.type == CNFT_ASCIIZ) { - if (ci.pszVal) { - if(!wcscmp((wchar_t *)ci.pszVal, TranslateW(L"'(Unknown Contact)'"))) { - ci.dwFlag &= ~CNF_UNICODE; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci)) { - szName = Utils::convertToWCS((char *)ci.pszVal); - } - } else { - szName = Utils::dupString((wchar_t *)ci.pszVal); - } - miranda_sys_free(ci.pszVal); - } - } - } - if (szName != NULL) return szName; - ci.dwFlag = CNF_UNIQUEID; - if (!CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) & ci)) { - if (ci.type == CNFT_ASCIIZ) { - if (ci.pszVal) { - szName = Utils::convertToWCS((char *)ci.pszVal); - miranda_sys_free(ci.pszVal); - } - } - } - if (szName != NULL) return szName; - char *szNameStr = (char *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, 0); - if (szNameStr != NULL) { - return Utils::convertToWCS(szNameStr); - } - return Utils::dupString(TranslateT("(Unknown Contact)")); -} - -char *HTMLBuilder::getEncodedContactName(HANDLE hContact, const char* szProto, const char* szSmileyProto) { - char *szName = NULL; - wchar_t *name = getContactName(hContact, szProto); - if (name != NULL) { - szName = encodeUTF8(hContact, szSmileyProto, name, ENF_NAMESMILEYS, true); - delete name; - return szName; - } - return encodeUTF8(hContact, szSmileyProto, TranslateT("(Unknown Contact)"), ENF_NAMESMILEYS, true); -} - -void HTMLBuilder::appendEventNew(IEView *view, IEVIEWEVENT *event) { - setLastIEViewEvent(event); - appendEvent(view, event); -} - -void HTMLBuilder::appendEventOld(IEView *view, IEVIEWEVENT *event) { - IEVIEWEVENT newEvent; - IEVIEWEVENTDATA* eventData; - IEVIEWEVENTDATA* prevEventData = NULL; - char *szProto = NULL; - HANDLE hDbEvent = event->hDbEventFirst; - event->hDbEventFirst = NULL; - newEvent.cbSize = sizeof (IEVIEWEVENT); - newEvent.iType = IEE_LOG_MEM_EVENTS; - newEvent.codepage = CP_ACP; - if (event->cbSize >= IEVIEWEVENT_SIZE_V2) { - newEvent.codepage = event->codepage; - } - if (event->cbSize >= IEVIEWEVENT_SIZE_V3 && event->pszProto != NULL) { - szProto = Utils::dupString(event->pszProto); - } else { - szProto = getProto(event->hContact); - } - newEvent.pszProto = szProto; - newEvent.count = 0; - newEvent.dwFlags = event->dwFlags; - newEvent.hContact = event->hContact; - newEvent.hwnd = event->hwnd; - newEvent.eventData = NULL; - for (int eventIdx = 0; hDbEvent!=NULL && (eventIdx < event->count || event->count==-1); eventIdx++) { - DBEVENTINFO dbei = { 0 }; - dbei.cbSize = sizeof(dbei); - dbei.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM) hDbEvent, 0); - if (dbei.cbBlob == 0xFFFFFFFF) { - hDbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDNEXT, (WPARAM) hDbEvent, 0); - continue; - } - dbei.pBlob = (PBYTE) malloc(dbei.cbBlob); - CallService(MS_DB_EVENT_GET, (WPARAM) hDbEvent, (LPARAM) & dbei); - if (!(dbei.flags & DBEF_SENT) && (dbei.eventType == EVENTTYPE_MESSAGE || dbei.eventType == EVENTTYPE_URL)) { - CallService(MS_DB_EVENT_MARKREAD, (WPARAM) event->hContact, (LPARAM) hDbEvent); - CallService(MS_CLIST_REMOVEEVENT, (WPARAM) event->hContact, (LPARAM) hDbEvent); - } else if (dbei.eventType == EVENTTYPE_STATUSCHANGE) { - CallService(MS_DB_EVENT_MARKREAD, (WPARAM) event->hContact, (LPARAM) hDbEvent); - } - if (!isDbEventShown(&dbei)) { - free(dbei.pBlob); - hDbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDNEXT, (WPARAM) hDbEvent, 0); - continue; - } - eventData = new IEVIEWEVENTDATA; - eventData->cbSize = sizeof(IEVIEWEVENTDATA); - eventData->dwFlags = IEEDF_UNICODE_TEXT | IEEDF_UNICODE_NICK | IEEDF_UNICODE_TEXT2 | - (dbei.flags & DBEF_READ ? IEEDF_READ : 0) | (dbei.flags & DBEF_SENT ? IEEDF_SENT : 0) | (dbei.flags & DBEF_RTL ? IEEDF_RTL : 0); - if (event->dwFlags & IEEF_RTL) { - eventData->dwFlags |= IEEDF_RTL; - } - eventData->time = dbei.timestamp; - eventData->pszNickW = NULL; - eventData->pszTextW = NULL; - eventData->pszText2W = NULL; - if (dbei.flags & DBEF_SENT) { - eventData->pszNickW = getContactName(NULL, szProto); - eventData->bIsMe = TRUE; - } else { - eventData->pszNickW = getContactName(event->hContact, szProto); - eventData->bIsMe = FALSE; - } - if (dbei.eventType == EVENTTYPE_MESSAGE || dbei.eventType == EVENTTYPE_URL || dbei.eventType == EVENTTYPE_STATUSCHANGE || dbei.eventType == EVENTTYPE_JABBER_CHATSTATES) { - DBEVENTGETTEXT temp = { &dbei, DBVT_WCHAR + ((event->dwFlags & IEEF_NO_UNICODE) ? DBVTF_DENYUNICODE : 0), newEvent.codepage }; - WCHAR* pwszEventText = (WCHAR*)CallService(MS_DB_EVENT_GETTEXT,0,(LPARAM)&temp); - eventData->pszTextW = Utils::dupString( pwszEventText ); - mir_free( pwszEventText ); - if (dbei.eventType == EVENTTYPE_MESSAGE) { - eventData->iType = IEED_EVENT_MESSAGE; - } else if (dbei.eventType == EVENTTYPE_URL) { - eventData->iType = IEED_EVENT_URL; - } else { - eventData->iType = IEED_EVENT_STATUSCHANGE; - } - } else if (dbei.eventType == EVENTTYPE_FILE) { - //blob is: sequenceid(DWORD),filename(ASCIIZ),description(ASCIIZ) - char* filename = ((char *)dbei.pBlob) + sizeof(DWORD); - char* descr = filename + lstrlenA(filename) + 1; - TCHAR *tStr = DbGetEventStringT(&dbei, filename); - eventData->ptszText = Utils::dupString(tStr); - mir_free(tStr); - if (*descr != '\0') { - tStr = DbGetEventStringT(&dbei, descr); - eventData->ptszText2 = Utils::dupString(tStr); - mir_free(tStr); - } - eventData->iType = IEED_EVENT_FILE; - } else if (dbei.eventType == EVENTTYPE_AUTHREQUEST) { - //blob is: uin(DWORD), hContact(DWORD), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ) - eventData->ptszText = Utils::dupString(TranslateT(" requested authorisation")); - TCHAR *tStr = DbGetEventStringT(&dbei, (char *)dbei.pBlob + 8); - eventData->ptszNick = Utils::dupString(tStr); - mir_free(tStr); - eventData->iType = IEED_EVENT_SYSTEM; - } else if (dbei.eventType == EVENTTYPE_ADDED) { - //blob is: uin(DWORD), hContact(DWORD), nick(ASCIIZ), first(ASCIIZ), last(ASCIIZ), email(ASCIIZ) - eventData->ptszText = Utils::dupString(TranslateT(" was added.")); - TCHAR *tStr = DbGetEventStringT(&dbei, (char *)dbei.pBlob + 8); - eventData->ptszNick = Utils::dupString(tStr); - mir_free(tStr); - eventData->iType = IEED_EVENT_SYSTEM; - } - free(dbei.pBlob); - eventData->next = NULL; - if (prevEventData != NULL) { - prevEventData->next = eventData; - } else { - newEvent.eventData = eventData; - } - prevEventData = eventData; - newEvent.count++; - event->hDbEventFirst = hDbEvent; - hDbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDNEXT, (WPARAM) hDbEvent, 0); - } - appendEventNew(view, &newEvent); - for ( IEVIEWEVENTDATA* eventData2 = newEvent.eventData; eventData2 != NULL; eventData2 = eventData) { - eventData = eventData2->next; - if (eventData2->pszTextW != NULL) { - delete (wchar_t*)eventData2->pszTextW; - } - if (eventData2->pszText2W != NULL) { - delete (wchar_t*)eventData2->pszText2W; - } - if (eventData2->pszNickW != NULL) { - delete (wchar_t*)eventData2->pszNickW; - } - delete eventData2; - } - if (szProto != NULL) { - delete szProto; - } -} - -ProtocolSettings* HTMLBuilder::getSRMMProtocolSettings(const char *protocolName) { - ProtocolSettings *protoSettings = Options::getProtocolSettings(protocolName); - if (protoSettings == NULL || !protoSettings->isSRMMEnable()) { - protoSettings = Options::getProtocolSettings(); - } - return protoSettings; -} - -ProtocolSettings* HTMLBuilder::getSRMMProtocolSettings(HANDLE hContact) { - char *szRealProto = getRealProto(hContact); - ProtocolSettings *protoSettings = getSRMMProtocolSettings(szRealProto); - delete szRealProto; - return protoSettings; -} - -ProtocolSettings* HTMLBuilder::getHistoryProtocolSettings(const char *protocolName) { - ProtocolSettings *protoSettings = Options::getProtocolSettings(protocolName); - if (protoSettings == NULL || !protoSettings->isHistoryEnable()) { - protoSettings = Options::getProtocolSettings(); - } - return protoSettings; -} - -ProtocolSettings* HTMLBuilder::getHistoryProtocolSettings(HANDLE hContact) { - ProtocolSettings *protoSettings; - if (hContact != NULL) { - char *szRealProto = getRealProto(hContact); - protoSettings = getHistoryProtocolSettings(szRealProto); - delete szRealProto; - } else { - protoSettings = Options::getProtocolSettings(); - } - return protoSettings; -} - -ProtocolSettings* HTMLBuilder::getChatProtocolSettings(const char *protocolName) { - ProtocolSettings *protoSettings = Options::getProtocolSettings(protocolName); - if (protoSettings == NULL || !protoSettings->isChatEnable()) { - protoSettings = Options::getProtocolSettings(); - } - return protoSettings; -} - -ProtocolSettings* HTMLBuilder::getChatProtocolSettings(HANDLE hContact) { - char *szRealProto = getRealProto(hContact); - ProtocolSettings *protoSettings = getChatProtocolSettings(szRealProto); - delete szRealProto; - return protoSettings; -} - -void HTMLBuilder::setLastIEViewEvent(IEVIEWEVENT *event) { - lastIEViewEvent.cbSize = sizeof (IEVIEWEVENT); - lastIEViewEvent.iType = event->iType; - lastIEViewEvent.codepage = CP_ACP; - if (event->cbSize >= IEVIEWEVENT_SIZE_V2) { - lastIEViewEvent.codepage = event->codepage; - } - lastIEViewEvent.count = 0; - lastIEViewEvent.dwFlags = event->dwFlags; - lastIEViewEvent.hContact = event->hContact; - lastIEViewEvent.hwnd = event->hwnd; - lastIEViewEvent.eventData = NULL; - if (lastIEViewEvent.pszProto != NULL) { - delete (char *)lastIEViewEvent.pszProto ; - } - if (event->cbSize >= IEVIEWEVENT_SIZE_V3 && event->pszProto != NULL) { - lastIEViewEvent.pszProto = Utils::dupString(event->pszProto); - } else { - lastIEViewEvent.pszProto = getProto(event->hContact); - } -} - -void HTMLBuilder::clear(IEView *view, IEVIEWEVENT *event) { - if (event != NULL) { - setLastIEViewEvent(event); - } - if (lastIEViewEvent.pszProto != NULL || event->hContact == NULL) { - buildHead(view, &lastIEViewEvent); - } -} -- cgit v1.2.3