From 2bf7e3ba50b1bf547c726523cf842e9263d5db18 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 28 Jul 2013 18:37:34 +0000 Subject: first version of WebView that compiles in Unicode (but certaily doesn't work) git-svn-id: http://svn.miranda-ng.org/main/trunk@5516 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/WebView/src/webview_getdata.cpp | 1479 +++++++++++-------------------- 1 file changed, 532 insertions(+), 947 deletions(-) (limited to 'plugins/WebView/src/webview_getdata.cpp') diff --git a/plugins/WebView/src/webview_getdata.cpp b/plugins/WebView/src/webview_getdata.cpp index dae383ab86..068065d04a 100644 --- a/plugins/WebView/src/webview_getdata.cpp +++ b/plugins/WebView/src/webview_getdata.cpp @@ -1,957 +1,542 @@ /* - * A plugin for Miranda IM which displays web page text in a window Copyright - * (C) 2005 Vincent Joyce. - * - * Miranda IM: the free icq client for MS Windows Copyright (C) 2000-2 - * Richard Hughes, Roland Rabien & Tristan Van de Vreede - * - * 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. - */ +* A plugin for Miranda IM which displays web page text in a window Copyright +* (C) 2005 Vincent Joyce. +* +* Miranda IM: the free icq client for MS Windows Copyright (C) 2000-2 +* Richard Hughes, Roland Rabien & Tristan Van de Vreede +* +* 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" +#include "webview.h" -static HANDLE hNetlibUser = NULL; int Startingup = 1; int AlreadyDownloading = 0; /*******************/ -static void GetData(void *AContact) +void GetData(HANDLE hContact) { - int statpos = 0, dispos = 0, statposend = 0; - char*pos; - DBVARIANT dbv; - NETLIBHTTPREQUEST nlhr = {0} - , *nlhrReply; - NETLIBHTTPHEADER headers[2]; - char tempstring[300], tempstring2[300]; - int MallocSize = 0; - int DownloadSuccess = 0; - char*raw; - char*szInfo; - char truncated[MAXSIZE1]; - char truncated2[MAXSIZE2]; - int trunccount = 0; - char url[300]; - unsigned long downloadsize = 0; - int AmountWspcRem = 0; - static char contactname[100]; - char statustext[200]; - int TherewasAlert = 0; - int PosButnClick = 0; - char tstr[128]; - static char timestring[128]; - int eventIndex = 0; - int location = 0; - int location2 = 0; - - if (Startingup) - Sleep(2000); - - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - Startingup = 0; - - ZeroMemory(&url, sizeof(url)); - ZeroMemory(&contactname, sizeof(contactname)); - ZeroMemory(&tempstring, sizeof(tempstring)); - ZeroMemory(&tempstring2, sizeof(tempstring2)); - ZeroMemory(&szInfo, sizeof(szInfo)); - ZeroMemory(&dbv, sizeof(dbv)); - ZeroMemory(&tstr, sizeof(tstr)); - ZeroMemory(×tring, sizeof(timestring)); - - - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - -// - if (DBGetContactSetting(AContact, MODULENAME, PRESERVE_NAME_KEY, &dbv)) - { - DBFreeVariant(&dbv); - DBGetContactSetting(AContact, "CList", "MyHandle", &dbv); - db_set_s(AContact, MODULENAME, PRESERVE_NAME_KEY, dbv.pszVal); - DBFreeVariant(&dbv); - } - DBGetContactSetting(AContact, MODULENAME, PRESERVE_NAME_KEY, &dbv); - _snprintf(contactname, sizeof(contactname), "%s", dbv.pszVal); - DBFreeVariant(&dbv); - //MessageBox(NULL, contactname, "pro-contname0", MB_OK); -// - - url[0] = '\0'; - - if (!Startingup) - db_set_b(NULL, MODULENAME, HAS_CRASHED_KEY, 1); - - // - DBGetContactSetting(AContact, MODULENAME, START_STRING_KEY, &dbv); - _snprintf(tempstring, sizeof(tempstring), "%s", dbv.pszVal); - DBFreeVariant(&dbv); - // - DBGetContactSetting(AContact, MODULENAME, END_STRING_KEY, &dbv); - _snprintf(tempstring2, sizeof(tempstring2), "%s", dbv.pszVal); - DBFreeVariant(&dbv); - // - DBGetContactSetting(AContact, MODULENAME, URL_KEY, &dbv); - _snprintf(url, sizeof(url), "%s", dbv.pszVal); - DBFreeVariant(&dbv); - - if (strlen(url) < 3) - { - WErrorPopup(contactname, Translate("URL not supplied")); - } - nlhr.cbSize = sizeof(nlhr); - nlhr.requestType = REQUEST_GET; - nlhr.flags = NLHRF_DUMPASTEXT; - nlhr.szUrl = url; - nlhr.headersCount = 2; - - headers[0].szName = "User-Agent"; - headers[0].szValue = "Mozilla/4.0 (compatible; MSIE 6.0; Win32)"; - - headers[1].szName = "Content-Length"; - headers[1].szValue = NULL; - - nlhr.headers = headers; - -// ////// - if ((db_get_b(NULL, MODULENAME, NO_PROTECT_KEY, 0))) // disable - // download - // protection - - AlreadyDownloading = 0; - - // //try site//// - if (!AlreadyDownloading) // not already downloading - - { - - if (IsWindowEnabled(GetDlgItem(hwndDlg, IDC_UPDATE_BUTTON))) - PosButnClick = 0; - else - PosButnClick = 1; - EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATE_BUTTON), 1); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Download in progress, please wait...")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), "%s", Translate("Updating...")); - db_set_s(AContact, "CList", "StatusMsg", statustext); -// / - - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_DND); // download - // and - // processing - // in - // progress - - nlhrReply = (NETLIBHTTPREQUEST *) CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM) hNetlibUser, (LPARAM) & nlhr); - - if (nlhrReply) - { - - if (nlhrReply->resultCode < 200 || nlhrReply->resultCode >= 300) - { - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_AWAY); - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s (%d)", Translate("The server replied with a failure code"), nlhrReply->resultCode); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - WErrorPopup(contactname, statustext); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s (%d)", "HTTP ERROR: ", nlhrReply->resultCode); - db_set_s(AContact, "CList", "StatusMsg", statustext); - } - if (nlhrReply->dataLength) - { - szInfo = malloc(lstrlen(nlhrReply->pData) + 2); - lstrcpyn(szInfo, nlhrReply->pData, lstrlen(nlhrReply->pData)); - downloadsize = lstrlen(nlhrReply->pData); - - trunccount = 0; - lstrcpyn(truncated2, szInfo, MAXSIZE2); - free(szInfo); - -////////////////////////////////////////// - -/* -#ifdef UNICODE_VERISON - -//semi works - - wchar_t tmp2[sizeof(nlhrReply->pData)]; - - - - -MultiByteToWideChar(CP_UTF8, 0, (CHAR *)nlhrReply->pData, -1, tmp2, strlen(nlhrReply->pData)); - -SetDlgItemTextW(hwndDlg, IDC_DATA, (wchar_t *)&tmp2); -//MessageBoxW(NULL, tmp2, L"Umm", MB_OK); - #endif -*/ - - -//////////////////////////////////////////// - sprintf(truncated2, "%s", nlhrReply->pData); - AlreadyDownloading = 1; - } // END DATELENGTH - - } // END REPLY - - if (!(nlhrReply)) - { - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_NA); - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("The server is down or lagging.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - WErrorPopup(contactname, statustext); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), "%s", Translate("The server is down.")); - db_set_s(AContact, "CList", "StatusMsg", statustext); - - - - } - if (!(nlhrReply)) - DownloadSuccess = 0; - - if ((nlhrReply) && (nlhrReply->resultCode < 200 || nlhrReply->resultCode >= 300)) - { - DownloadSuccess = 0; - } else if (nlhrReply) - DownloadSuccess = 1; - - // - - CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM) nlhrReply); - - if (DownloadSuccess) - { - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Download successful; about to process data...")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - // MessageBox(NULL, "Crash", "1", MB_OK); - } -///get data in desired range - - // download successful - if (DownloadSuccess) - { - -// all the site - if (db_get_b(AContact, MODULENAME, U_ALLSITE_KEY, 0) == 1) - { - lstrcpyn(truncated, truncated2, MAXSIZE1); - } else // use start and end string - - { - // putting data into string - if (((strstr(truncated2, tempstring)) != 0) && ((strstr(truncated2, tempstring2)) != 0)) - { - -// start string - pos = strstr(truncated2, tempstring); - statpos = pos - truncated2; -// - ZeroMemory(&pos, sizeof(pos)); -// end string - pos = strstr(truncated2, tempstring2); - statposend = pos - truncated2 + strlen(tempstring2); -// - if (statpos > statposend) - { - memset(&truncated2, ' ', statpos); - ZeroMemory(&pos, sizeof(pos)); - pos = strstr(truncated2, tempstring2); - statposend = pos - truncated2 + strlen(tempstring2); - } - if (statpos < statposend) - { - ZeroMemory(&raw, sizeof(raw)); - -// get size for malloc - //MessageBox(NULL, "Crash", "2", MB_OK); - - MallocSize = statposend - statpos; - raw = (char *) malloc(MallocSize + 1); - -// start string - pos = strstr(truncated2, tempstring); - statpos = pos - truncated2; -// - -// end string - pos = strstr(truncated2, tempstring2); - statposend = pos - truncated2 + strlen(tempstring2); -// - //MessageBox(NULL, "Crash", "3", MB_OK); - - if (statpos > statposend) - { - memset(&truncated2, ' ', statpos); - ZeroMemory(&pos, sizeof(pos)); - pos = strstr(truncated2, tempstring2); - statposend = pos - truncated2 + strlen(tempstring2); - } - dispos = 0; - -// write selected data to string - //MessageBox(NULL, "Crash", "4", MB_OK); - - strncpy(raw, &truncated2[statpos], MallocSize); - raw[MallocSize] = '\0'; - - trunccount = 0; - - lstrcpyn(truncated, raw, MAXSIZE1); - - //MessageBox(NULL, "Crash", "5", MB_OK); - /* -#ifdef UNICODE_VERISON - - - wchar_t tmp2[50]; - - MessageBox(NULL, raw, "raw", MB_OK); - - int c = lstrlenA(raw); -MultiByteToWideChar(CP_ACP, 0, raw, c, tmp2, c); - -//MessageBoxW(NULL, tmp2, MODULENAME, MB_OK); - #endif -*/ - free(raw); - - //MessageBox(NULL, "Crash", "6", MB_OK); - - DownloadSuccess = 1; - - } else if (db_get_b(AContact, MODULENAME, U_ALLSITE_KEY, 0) == 0) - { - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Invalid search parameters.")); - WErrorPopup(contactname, statustext); - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - DownloadSuccess = 0; - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_AWAY); - } - } // end putting data into string - - } // end use start and end strings - - } // end download success - - //MessageBox(NULL, "Crash", "7", MB_OK); - - if (DownloadSuccess) // download success - - { - if (statpos == 0 && statposend == 0) - { - if (db_get_b(AContact, MODULENAME, U_ALLSITE_KEY, 0) == 0) - { - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Both search strings not found or strings not set.")); - WErrorPopup(contactname, statustext); - db_set_s(AContact, "CList", "StatusMsg", statustext); - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - DownloadSuccess = 0; - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - TherewasAlert = ProcessAlerts(AContact, statustext, contactname, contactname, 1); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_AWAY); - } - } - } // end download success - // ////// - //MessageBox(NULL, "Crash", "8", MB_OK); - - if (DownloadSuccess) // download success - - { - - char timeprefix[32]; - char temptime1[32]; - char timeat[16]; - char temptime2[32]; - char temptime[128]; - time_t ftime; - struct tm *nTime; - - setlocale(LC_ALL, ""); - - if (!DBGetContactSetting(AContact, MODULENAME, PRESERVE_NAME_KEY, &dbv)) - { - ZeroMemory(&temptime, sizeof(temptime)); - ZeroMemory(&tstr, sizeof(tstr)); - ftime = time(NULL); - nTime = localtime(&ftime); - // 12 hour - if (db_get_b(AContact, MODULENAME, USE_24_HOUR_KEY, 0) == 0) - strftime(temptime, 128, "(%b %d,%I:%M %p)", nTime); - // 24 hour - if (db_get_b(AContact, MODULENAME, USE_24_HOUR_KEY, 0) == 1) - strftime(temptime, 128, "(%b %d,%H:%M:%S)", nTime); - - if (db_get_b(AContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 1) - _snprintf(tstr, sizeof(tstr), "%s %s", temptime, dbv.pszVal); - if (db_get_b(AContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 0) - _snprintf(tstr, sizeof(tstr), "%s %s", dbv.pszVal, temptime); - DBFreeVariant(&dbv); - } else if (DBGetContactSetting(AContact, MODULENAME, PRESERVE_NAME_KEY, &dbv)) - { - DBFreeVariant(&dbv); - DBGetContactSetting(AContact, "CList", "MyHandle", &dbv); - ZeroMemory(&temptime, sizeof(temptime)); - ZeroMemory(&tstr, sizeof(tstr)); - ftime = time(NULL); - nTime = localtime(&ftime); - // 12 hour - if (db_get_b(AContact, MODULENAME, USE_24_HOUR_KEY, 0) == 0) - strftime(temptime, 128, "(%b %d,%I:%M %p)", nTime); - // 24 hour - if (db_get_b(AContact, MODULENAME, USE_24_HOUR_KEY, 0) == 1) - strftime(temptime, 128, "(%b %d,%H:%M:%S)", nTime); - - db_set_s(AContact, MODULENAME, PRESERVE_NAME_KEY, dbv.pszVal); - if (db_get_b(AContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 1) - _snprintf(tstr, sizeof(tstr), "%s %s", temptime, dbv.pszVal); - if (db_get_b(AContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 0) - _snprintf(tstr, sizeof(tstr), "%s %s", dbv.pszVal, temptime); - DBFreeVariant(&dbv); - } - ZeroMemory(&timeprefix, sizeof(timeprefix)); - ZeroMemory(&temptime1, sizeof(temptime1)); - ZeroMemory(&timeat, sizeof(timeat)); - ZeroMemory(&temptime2, sizeof(temptime2)); - ZeroMemory(×tring, sizeof(timestring)); - - ftime = time(NULL); - nTime = localtime(&ftime); - - _snprintf(timeprefix, sizeof(timeprefix), " %s ", (Translate("Last updated on"))); - strftime(temptime1, 32, " %a, %b %d, %Y ", nTime); - _snprintf(timeat, sizeof(timeat), "%s", (Translate("at the time"))); - strftime(temptime2, 32, " %I:%M %p.", nTime); - _snprintf(timestring, sizeof(timestring), "%s%s%s%s", timeprefix, temptime1, timeat, temptime2); - - } // end download success - - //MessageBox(NULL, "Crash", "9", MB_OK); -//////// - - if (DownloadSuccess) - { - // alertfunc - //MessageBox(NULL, contactname, "pro-contname1", MB_OK); - TherewasAlert = ProcessAlerts(AContact, truncated, tstr, contactname, 0); - - // /////// - /**/ - - // get range of text to be highlighted when part of change changes - // - - if (TherewasAlert) - { - // //////////////////////// - static char buff[MAXSIZE1]; - char Alerttempstring[300], Alerttempstring2[300]; - - eventIndex = db_get_b(AContact, MODULENAME, EVNT_INDEX_KEY, 0); - - if (eventIndex == 2) - { - - strncpy(buff, truncated, sizeof(buff)); - - Filter(buff); - // - - // - DBGetContactSetting(AContact, MODULENAME, ALRT_S_STRING_KEY, &dbv); - _snprintf(Alerttempstring, sizeof(Alerttempstring), "%s", dbv.pszVal); - DBFreeVariant(&dbv); - // - DBGetContactSetting(AContact, MODULENAME, ALRT_E_STRING_KEY, &dbv); - _snprintf(Alerttempstring2, sizeof(Alerttempstring2), "%s", dbv.pszVal); - DBFreeVariant(&dbv); - // - - // putting data into string - if (((strstr(buff, Alerttempstring)) != 0) && ((strstr(buff, Alerttempstring2)) != 0)) - { - - // - location = (strstr(buff, Alerttempstring)) - buff; - location2 = (strstr(buff, Alerttempstring2)) - buff; - // - - } - } - // /////////////////////////// - } - // /////// - // MessageBox(NULL, "Crash", "10", MB_OK); - - if ((((strstr(truncated2, tempstring)) != 0) && ((strstr(truncated2, tempstring2)) != 0) && (db_get_b(AContact, MODULENAME, U_ALLSITE_KEY, 0) == 0)) || (db_get_b(AContact, MODULENAME, U_ALLSITE_KEY, 0) == 1)) - { - // MessageBox(NULL, "Crash", "10a", MB_OK); - RemoveTabs(truncated); - //MessageBox(NULL, "Crash", "10b", MB_OK); - - if ((db_get_b(AContact, MODULENAME, CLEAR_DISPLAY_KEY, 0))) - { - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - // MessageBox(NULL, "Crash", "10c", MB_OK); - - // - ZeroMemory(&statustext, sizeof(statustext)); - // MessageBox(NULL, "Crash", "10d", MB_OK); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 1)")); - //MessageBox(NULL, "Crash", "10e", MB_OK); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/ - SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - ); - /**/ - //MessageBox(NULL, "Crash", "10f", MB_OK); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - CodetoSymbol(truncated); - Sleep(100); // avoid 100% CPU - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 2)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/ - SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - ); - /**/ - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - - EraseBlock(truncated); - Sleep(100); // avoid 100% CPU - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 3)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/ SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - ); - /**/ - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - FastTagFilter(truncated); - Sleep(100); // avoid 100% CPU - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 4)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/ SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - );/**/ - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - - NumSymbols(truncated); - Sleep(100); // avoid 100% CPU - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 5)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - );/**/ - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - EraseSymbols(truncated); - Sleep(100); // avoid 100% CPU - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 6)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - );/**/ - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - AmountWspcRem = db_get_b(AContact, MODULENAME, RWSPACE_KEY, 0); - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - RemoveInvis(truncated, AmountWspcRem); - Sleep(100); // avoid 100% CPU - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 7)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - /**/SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - );/**/ - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - Removewhitespace(truncated); - - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data (Stage 8)")); - //SetDlgItemText(hwndDlg, IDC_DATA, truncated); - SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - ); - // - - #ifdef UNICODE_VERISON - -//semi works - - wchar_t tmp3[strlen(truncated)]; - const char *wobbles; - - int c = lstrlenA(truncated); - //mir_utf8encode(truncated); - //utf8_encode(truncated, tmp3); - //utf8_encode(truncated, wobbles); - - //MessageBox(NULL, utf8encode(truncated),"TEST", MB_OK); - -MultiByteToWideChar(CP_UTF8, 0, truncated, -1, tmp3, strlen(truncated)); -SetDlgItemTextW(hwndDlg, IDC_DATA, (wchar_t *)&tmp3); - #endif - - // - /* SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - );*/ - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - - - //data in popup - #ifdef UNICODE_VERISON - if (TherewasAlert) - { - if ((db_get_b(NULL, MODULENAME, DATA_POPUP_KEY, 0))) - WAlertWPopup((WPARAM)AContact, tmp3); - } - #endif - #ifndef UNICODE_VERISON - if (TherewasAlert) - { - if ((db_get_b(NULL, MODULENAME, DATA_POPUP_KEY, 0))) - WAlertPopup((WPARAM)AContact, truncated); - } - #endif - - - if (db_get_b(AContact, MODULENAME, STOP_KEY, 1) == 1) - { - - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Processing data stopped by user.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - db_set_b(AContact, MODULENAME, STOP_KEY, 0); - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - db_set_s(AContact, "CList", "StatusMsg", statustext); - AlreadyDownloading = 0; - return; - } - // removed any excess characters at the end. - if ((truncated[strlen(truncated) - 1] == truncated[strlen(truncated) - 2]) && (truncated[strlen(truncated) - 2] == truncated[strlen(truncated) - 3])) - { - int counterx = 0; - - while (1) - { - counterx++; - if (truncated[strlen(truncated) - counterx] != truncated[strlen(truncated) - 1]) - { - truncated[(strlen(truncated) - counterx) + 2] = '\0'; - break; - } - } - } - // - - - } - } - if (TherewasAlert) - { - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_OCCUPIED); - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), "%s", Translate("Alert!")); - db_set_s(AContact, "CList", "StatusMsg", statustext); - } - else - { - db_set_w(AContact, MODULENAME, "Status", ID_STATUS_ONLINE); - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), "%s", Translate("Online")); - db_set_s(AContact, "CList", "StatusMsg", statustext); - } - } - // ///// - if (db_get_b(AContact, MODULENAME, U_ALLSITE_KEY, 0) == 0) - { - if (statpos > statposend) - DownloadSuccess = 0; - else if (statpos == 0 && statposend == 0) - DownloadSuccess = 0; - else - DownloadSuccess = 1; - } - // ///// - - AlreadyDownloading = 0; - } // end not already downloading - - if (AlreadyDownloading) - { - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("A site is already downloading, try again in a moment.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - } - if (DownloadSuccess) // download success - - { - - char BytesString[128]; - //char *BytesString; - HWND hwndDlg = (WindowList_Find(hWindowList, AContact)); - - // update window if the update only on alert option isn't ticked or - // there was an alert or the update button was clicked - if ((!(db_get_b(NULL, MODULENAME, UPDATE_ONALERT_KEY, 0))) || (TherewasAlert == 1) || (PosButnClick == 1)) - { -/* -#ifdef UNICODE_VERISON - wchar_t tmp[500]; - - int a = lstrlenA(raw); - -MultiByteToWideChar(CP_ACP, 0, truncated, (lstrlenA(truncated)), tmp, (lstrlenA(truncated))); - -//MessageBoxW(NULL, tmp, "Yeah I know", MB_OK); - - char tempchar1[200]; - - _snprintf(tempchar1, sizeof(tempchar1), "raw strlen is %d, truncated strlen is %d", (lstrlenA(raw)),(lstrlenA(truncated))); - //MessageBox(NULL, tempchar1, MODULENAME, MB_OK); - - // utf8_encode(truncated, &tmp); - - // MessageBox(NULL, tmp, MODULENAME, MB_OK); - - SetDlgItemTextW(hwndDlg, IDC_DATA, tmp); - - - free(tmp); -#endif -*/ - /**/ -#ifndef UNICODE_VERISON - - SendToRichEdit(hwndDlg, - truncated, - TextClr, - BackgoundClr - ); -#endif - - if (TherewasAlert) - { - // highlight text when part of change changes - if (eventIndex == 2) - { - CHARRANGE sel2 = {location, location2}; - - // - SendMessage(GetDlgItem(hwndDlg, IDC_DATA), EM_EXSETSEL, 0, (LPARAM) & sel2); - SetFocus(GetDlgItem(hwndDlg, IDC_DATA)); - - DWORD HiBackgoundClr; - DWORD HiTextClr; - - HiBackgoundClr = db_get_dw(NULL, MODULENAME, BG_COLOR_KEY, 0); - HiTextClr = db_get_dw(NULL, MODULENAME, TXT_COLOR_KEY, 0); - - CHARFORMAT2 Format; - - memset(&Format, 0, sizeof(Format)); - Format.cbSize = sizeof(Format); - Format.dwMask = CFM_BOLD | CFM_COLOR | CFM_BACKCOLOR; - Format.dwEffects = CFE_BOLD; - Format.crBackColor = ((~HiBackgoundClr) & 0x00ffffff); - Format.crTextColor = ((~HiTextClr) & 0x00ffffff); - SendMessage(GetDlgItem(hwndDlg, IDC_DATA), EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) & Format); - - } - } - SetDlgItemText(hwndDlg, IDC_STATUSBAR, timestring); - sprintf(BytesString, "%s: %d | %s: %lu", (Translate("Bytes in display")), (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_DATA))), (Translate("Bytes downloaded")), downloadsize); - -/* - #ifdef UNICODE_VERISON - - wchar_t unicodestr[256]; - - char *ansistr = "Hello"; //works 1 - - -//int a = lstrlenA(ansistr);//works 1 - -//MultiByteToWideChar(CP_ACP, 0, ansistr, a, unicodestr, a); //works 1 -// MessageBoxW(NULL, unicodestr, MODULENAME, MB_OK); //works 1 - - - -int b = lstrlenA(BytesString); - -MultiByteToWideChar(CP_ACP, 0, BytesString, b, unicodestr, b); - - SendMessageW(GetDlgItem(hwndDlg, IDC_STATUSBAR), SB_SETTEXT, 1, (LPARAM)unicodestr); - // free(unicodestr); - #endif -*/ - //#ifndef UNICODE_VERISON - SendMessage(GetDlgItem(hwndDlg, IDC_STATUSBAR), SB_SETTEXT, 1, (LPARAM) BytesString); - //#endif - - } else - { - ZeroMemory(&statustext, sizeof(statustext)); - _snprintf(statustext, sizeof(statustext), " %s", Translate("Alert test conditions not met; press the refresh button to view content.")); - SetDlgItemText(hwndDlg, IDC_STATUSBAR, statustext); - } - - } - EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATE_BUTTON), 1); - - if (!Startingup) - db_set_b(NULL, MODULENAME, HAS_CRASHED_KEY, 0); - + int statpos = 0, dispos = 0, statposend = 0; + char*pos; + DBVARIANT dbv; + NETLIBHTTPREQUEST nlhr = {0} + , *nlhrReply; + NETLIBHTTPHEADER headers[2]; + char tempstring[300], tempstring2[300]; + int MallocSize = 0; + int DownloadSuccess = 0; + char*raw; + char*szInfo; + char truncated[MAXSIZE1]; + char truncated2[MAXSIZE2]; + int trunccount = 0; + char url[300]; + unsigned long downloadsize = 0; + int AmountWspcRem = 0; + static char contactname[100]; + char statustext[200]; + int TherewasAlert = 0; + int PosButnClick = 0; + char tstr[128]; + static char timestring[128]; + int eventIndex = 0; + int location = 0; + int location2 = 0; + + if (Startingup) + Sleep(2000); + + HWND hwndDlg = (WindowList_Find(hWindowList, hContact)); + + Startingup = 0; + + ZeroMemory(&url, sizeof(url)); + ZeroMemory(&contactname, sizeof(contactname)); + ZeroMemory(&tempstring, sizeof(tempstring)); + ZeroMemory(&tempstring2, sizeof(tempstring2)); + ZeroMemory(&szInfo, sizeof(szInfo)); + ZeroMemory(&dbv, sizeof(dbv)); + ZeroMemory(&tstr, sizeof(tstr)); + ZeroMemory(×tring, sizeof(timestring)); + + db_set_b(hContact, MODULENAME, STOP_KEY, 0); + + if (db_get_s(hContact, MODULENAME, PRESERVE_NAME_KEY, &dbv)) { + db_free(&dbv); + db_get_s(hContact, "CList", "MyHandle", &dbv); + db_set_s(hContact, MODULENAME, PRESERVE_NAME_KEY, dbv.pszVal); + db_free(&dbv); + } + db_get_s(hContact, MODULENAME, PRESERVE_NAME_KEY, &dbv); + _snprintf(contactname, sizeof(contactname), "%s", dbv.pszVal); + db_free(&dbv); + + url[0] = '\0'; + + if (!Startingup) + db_set_b(NULL, MODULENAME, HAS_CRASHED_KEY, 1); + + db_get_s(hContact, MODULENAME, START_STRING_KEY, &dbv); + _snprintf(tempstring, sizeof(tempstring), "%s", dbv.pszVal); + db_free(&dbv); + + db_get_s(hContact, MODULENAME, END_STRING_KEY, &dbv); + _snprintf(tempstring2, sizeof(tempstring2), "%s", dbv.pszVal); + db_free(&dbv); + + db_get_s(hContact, MODULENAME, URL_KEY, &dbv); + _snprintf(url, sizeof(url), "%s", dbv.pszVal); + db_free(&dbv); + + if (strlen(url) < 3) + WErrorPopup(hContact, TranslateT("URL not supplied")); + + nlhr.cbSize = sizeof(nlhr); + nlhr.requestType = REQUEST_GET; + nlhr.flags = NLHRF_DUMPASTEXT; + nlhr.szUrl = url; + nlhr.headersCount = 2; + + headers[0].szName = "User-Agent"; + headers[0].szValue = "Mozilla/4.0 (compatible; MSIE 6.0; Win32)"; + + headers[1].szName = "Content-Length"; + headers[1].szValue = NULL; + + nlhr.headers = headers; + + if ( db_get_b(NULL, MODULENAME, NO_PROTECT_KEY, 0)) // disable + AlreadyDownloading = 0; + + // //try site//// + if (!AlreadyDownloading) { // not already downloading + if (IsWindowEnabled(GetDlgItem(hwndDlg, IDC_UPDATE_BUTTON))) + PosButnClick = 0; + else + PosButnClick = 1; + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATE_BUTTON), 1); + + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Download in progress, please wait...")); + + ZeroMemory(&statustext, sizeof(statustext)); + _snprintf(statustext, sizeof(statustext), "%s", Translate("Updating...")); + db_set_s(hContact, "CList", "StatusMsg", statustext); + + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_DND); // download + + nlhrReply = (NETLIBHTTPREQUEST *) CallService(MS_NETLIB_HTTPTRANSACTION, (WPARAM) hNetlibUser, (LPARAM) & nlhr); + if (nlhrReply) { + if (nlhrReply->resultCode < 200 || nlhrReply->resultCode >= 300) { + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_AWAY); + + TCHAR *statusText = TranslateT("The server replied with a failure code"); + HWND hwndDlg = WindowList_Find(hWindowList, hContact); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, statusText); + WErrorPopup(hContact, statusText); + db_set_ts(hContact, "CList", "StatusMsg", statusText); + } + if (nlhrReply->dataLength) { + szInfo = (char*)malloc(lstrlenA(nlhrReply->pData) + 2); + lstrcpynA(szInfo, nlhrReply->pData, lstrlenA(nlhrReply->pData)); + downloadsize = lstrlenA(nlhrReply->pData); + + trunccount = 0; + lstrcpynA(truncated2, szInfo, MAXSIZE2); + free(szInfo); + + //////////////////////////////////////////// + sprintf(truncated2, "%s", nlhrReply->pData); + AlreadyDownloading = 1; + } // END DATELENGTH + } // END REPLY + + if (!nlhrReply) { + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_NA); + HWND hwndDlg = (WindowList_Find(hWindowList, hContact)); + + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("The server is down or lagging.")); + WErrorPopup(hContact, TranslateT("The server is down or lagging.")); + + ZeroMemory(&statustext, sizeof(statustext)); + _snprintf(statustext, sizeof(statustext), "%s", Translate("The server is down.")); + db_set_s(hContact, "CList", "StatusMsg", statustext); + } + + if (!(nlhrReply)) + DownloadSuccess = 0; + + if ((nlhrReply) && (nlhrReply->resultCode < 200 || nlhrReply->resultCode >= 300)) + DownloadSuccess = 0; + else if (nlhrReply) + DownloadSuccess = 1; + + CallService(MS_NETLIB_FREEHTTPREQUESTSTRUCT, 0, (LPARAM) nlhrReply); + + if (DownloadSuccess) { + HWND hwndDlg = (WindowList_Find(hWindowList, hContact)); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Download successful; about to process data...")); + } + ///get data in desired range + + // download successful + if (DownloadSuccess) { + // all the site + if (db_get_b(hContact, MODULENAME, U_ALLSITE_KEY, 0) == 1) + lstrcpynA(truncated, truncated2, MAXSIZE1); + else { // use start and end string + // putting data into string + if (((strstr(truncated2, tempstring)) != 0) && ((strstr(truncated2, tempstring2)) != 0)) { + // start string + pos = strstr(truncated2, tempstring); + statpos = pos - truncated2; + + ZeroMemory(&pos, sizeof(pos)); + // end string + pos = strstr(truncated2, tempstring2); + statposend = pos - truncated2 + (int)strlen(tempstring2); + + if (statpos > statposend) { + memset(&truncated2, ' ', statpos); + ZeroMemory(&pos, sizeof(pos)); + pos = strstr(truncated2, tempstring2); + statposend = pos - truncated2 + (int)strlen(tempstring2); + } + if (statpos < statposend) { + ZeroMemory(&raw, sizeof(raw)); + + // get size for malloc + MallocSize = statposend - statpos; + raw = (char *) malloc(MallocSize + 1); + + // start string + pos = strstr(truncated2, tempstring); + statpos = pos - truncated2; + + // end string + pos = strstr(truncated2, tempstring2); + statposend = pos - truncated2 + (int)strlen(tempstring2); + + if (statpos > statposend) { + memset(&truncated2, ' ', statpos); + ZeroMemory(&pos, sizeof(pos)); + pos = strstr(truncated2, tempstring2); + statposend = pos - truncated2 + (int)strlen(tempstring2); + } + dispos = 0; + + strncpy(raw, &truncated2[statpos], MallocSize); + raw[MallocSize] = '\0'; + + trunccount = 0; + + lstrcpynA(truncated, raw, MAXSIZE1); + + free(raw); + + DownloadSuccess = 1; + } + else if (db_get_b(hContact, MODULENAME, U_ALLSITE_KEY, 0) == 0) { + TCHAR *szStatusText = TranslateT("Invalid search parameters."); + WErrorPopup(hContact, szStatusText); + HWND hwndDlg = WindowList_Find(hWindowList, hContact); + + DownloadSuccess = 0; + SetDlgItemText(hwndDlg, IDC_STATUSBAR, szStatusText); + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_AWAY); + } + } // end putting data into string + } // end use start and end strings + } // end download success + + if (DownloadSuccess) { // download success + if (statpos == 0 && statposend == 0) { + if (db_get_b(hContact, MODULENAME, U_ALLSITE_KEY, 0) == 0) { + TCHAR *statusText = TranslateT("Both search strings not found or strings not set."); + WErrorPopup(hContact, statusText); + db_set_ts(hContact, "CList", "StatusMsg", statusText); + + HWND hwndDlg = WindowList_Find(hWindowList, hContact); + DownloadSuccess = 0; + SetDlgItemText(hwndDlg, IDC_STATUSBAR, statusText); + TherewasAlert = ProcessAlerts(hContact, _T2A(statusText), contactname, contactname, 1); + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_AWAY); + } + } + } // end download success + + if (DownloadSuccess) { // download success + char timeprefix[32]; + char temptime1[32]; + char timeat[16]; + char temptime2[32]; + char temptime[128]; + time_t ftime; + struct tm *nTime; + + setlocale(LC_ALL, ""); + + if (!db_get_s(hContact, MODULENAME, PRESERVE_NAME_KEY, &dbv)) { + ZeroMemory(&temptime, sizeof(temptime)); + ZeroMemory(&tstr, sizeof(tstr)); + ftime = time(NULL); + nTime = localtime(&ftime); + // 12 hour + if (db_get_b(hContact, MODULENAME, USE_24_HOUR_KEY, 0) == 0) + strftime(temptime, 128, "(%b %d,%I:%M %p)", nTime); + // 24 hour + if (db_get_b(hContact, MODULENAME, USE_24_HOUR_KEY, 0) == 1) + strftime(temptime, 128, "(%b %d,%H:%M:%S)", nTime); + + if (db_get_b(hContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 1) + _snprintf(tstr, sizeof(tstr), "%s %s", temptime, dbv.pszVal); + if (db_get_b(hContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 0) + _snprintf(tstr, sizeof(tstr), "%s %s", dbv.pszVal, temptime); + db_free(&dbv); + } + else if (db_get_s(hContact, MODULENAME, PRESERVE_NAME_KEY, &dbv)) { + db_free(&dbv); + db_get_s(hContact, "CList", "MyHandle", &dbv); + ZeroMemory(&temptime, sizeof(temptime)); + ZeroMemory(&tstr, sizeof(tstr)); + ftime = time(NULL); + nTime = localtime(&ftime); + // 12 hour + if (db_get_b(hContact, MODULENAME, USE_24_HOUR_KEY, 0) == 0) + strftime(temptime, 128, "(%b %d,%I:%M %p)", nTime); + // 24 hour + if (db_get_b(hContact, MODULENAME, USE_24_HOUR_KEY, 0) == 1) + strftime(temptime, 128, "(%b %d,%H:%M:%S)", nTime); + + db_set_s(hContact, MODULENAME, PRESERVE_NAME_KEY, dbv.pszVal); + if (db_get_b(hContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 1) + _snprintf(tstr, sizeof(tstr), "%s %s", temptime, dbv.pszVal); + if (db_get_b(hContact, MODULENAME, CONTACT_PREFIX_KEY, 1) == 0) + _snprintf(tstr, sizeof(tstr), "%s %s", dbv.pszVal, temptime); + db_free(&dbv); + } + + ZeroMemory(&timeprefix, sizeof(timeprefix)); + ZeroMemory(&temptime1, sizeof(temptime1)); + ZeroMemory(&timeat, sizeof(timeat)); + ZeroMemory(&temptime2, sizeof(temptime2)); + ZeroMemory(×tring, sizeof(timestring)); + + ftime = time(NULL); + nTime = localtime(&ftime); + + _snprintf(timeprefix, sizeof(timeprefix), " %s ", (Translate("Last updated on"))); + strftime(temptime1, 32, " %a, %b %d, %Y ", nTime); + _snprintf(timeat, sizeof(timeat), "%s", (Translate("at the time"))); + strftime(temptime2, 32, " %I:%M %p.", nTime); + _snprintf(timestring, sizeof(timestring), "%s%s%s%s", timeprefix, temptime1, timeat, temptime2); + + } // end download success + + if (DownloadSuccess) { + TherewasAlert = ProcessAlerts(hContact, truncated, tstr, contactname, 0); + + // get range of text to be highlighted when part of change changes + if (TherewasAlert) { + // //////////////////////// + static char buff[MAXSIZE1]; + char Alerttempstring[300], Alerttempstring2[300]; + + eventIndex = db_get_b(hContact, MODULENAME, EVNT_INDEX_KEY, 0); + if (eventIndex == 2) { + strncpy(buff, truncated, sizeof(buff)); + Filter(buff); + + db_get_s(hContact, MODULENAME, ALRT_S_STRING_KEY, &dbv); + _snprintf(Alerttempstring, sizeof(Alerttempstring), "%s", dbv.pszVal); + db_free(&dbv); + + db_get_s(hContact, MODULENAME, ALRT_E_STRING_KEY, &dbv); + _snprintf(Alerttempstring2, sizeof(Alerttempstring2), "%s", dbv.pszVal); + db_free(&dbv); + + // putting data into string + if (((strstr(buff, Alerttempstring)) != 0) && ((strstr(buff, Alerttempstring2)) != 0)) { + location = (strstr(buff, Alerttempstring)) - buff; + location2 = (strstr(buff, Alerttempstring2)) - buff; + } + } + } + + if ((((strstr(truncated2, tempstring)) != 0) && ((strstr(truncated2, tempstring2)) != 0) && (db_get_b(hContact, MODULENAME, U_ALLSITE_KEY, 0) == 0)) || (db_get_b(hContact, MODULENAME, U_ALLSITE_KEY, 0) == 1)) { + RemoveTabs(truncated); + + if ( db_get_b(hContact, MODULENAME, CLEAR_DISPLAY_KEY, 0)) { + HWND hwndDlg = (WindowList_Find(hWindowList, hContact)); + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 1)")); + + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) { +LBL_Stop: TCHAR *statusText = TranslateT("Processing data stopped by user."); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, statusText); + db_set_b(hContact, MODULENAME, STOP_KEY, 0); + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_ONLINE); + db_set_ts(hContact, "CList", "StatusMsg", statusText); + AlreadyDownloading = 0; + return; + } + + CodetoSymbol(truncated); + Sleep(100); // avoid 100% CPU + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 2)")); + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + EraseBlock(truncated); + Sleep(100); // avoid 100% CPU + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 3)")); + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + FastTagFilter(truncated); + Sleep(100); // avoid 100% CPU + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 4)")); + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + NumSymbols(truncated); + Sleep(100); // avoid 100% CPU + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 5)")); + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + EraseSymbols(truncated); + Sleep(100); // avoid 100% CPU + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 6)")); + + AmountWspcRem = db_get_b(hContact, MODULENAME, RWSPACE_KEY, 0); + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + RemoveInvis(truncated, AmountWspcRem); + Sleep(100); // avoid 100% CPU + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 7)")); + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + Removewhitespace(truncated); + + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Processing data (Stage 8)")); + + //data in popup + if (TherewasAlert) + if ( db_get_b(NULL, MODULENAME, DATA_POPUP_KEY, 0)) + WAlertPopup(hContact, _A2T(truncated)); + + if (db_get_b(hContact, MODULENAME, STOP_KEY, 1) == 1) + goto LBL_Stop; + + // removed any excess characters at the end. + if ((truncated[strlen(truncated) - 1] == truncated[strlen(truncated) - 2]) && (truncated[strlen(truncated) - 2] == truncated[strlen(truncated) - 3])) { + int counterx = 0; + + while (1) { + counterx++; + if (truncated[strlen(truncated) - counterx] != truncated[strlen(truncated) - 1]) { + truncated[(strlen(truncated) - counterx) + 2] = '\0'; + break; + } + } + } + } + } + + if (TherewasAlert) { + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_OCCUPIED); + db_set_ts(hContact, "CList", "StatusMsg", TranslateT("Alert!")); + } + else { + db_set_w(hContact, MODULENAME, "Status", ID_STATUS_ONLINE); + db_set_ts(hContact, "CList", "StatusMsg", TranslateT("Online")); + } + } + + if (db_get_b(hContact, MODULENAME, U_ALLSITE_KEY, 0) == 0) { + if (statpos > statposend) + DownloadSuccess = 0; + else if (statpos == 0 && statposend == 0) + DownloadSuccess = 0; + else + DownloadSuccess = 1; + } + + AlreadyDownloading = 0; + } // end not already downloading + + if (AlreadyDownloading) + SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("A site is already downloading, try again in a moment.")); + + if (DownloadSuccess) { // download success + char BytesString[128]; + HWND hwndDlg = (WindowList_Find(hWindowList, hContact)); + + // update window if the update only on alert option isn't ticked or + // there was an alert or the update button was clicked + if ((!(db_get_b(NULL, MODULENAME, UPDATE_ONALERT_KEY, 0))) || (TherewasAlert == 1) || (PosButnClick == 1)) { + SendToRichEdit(hwndDlg, truncated, TextClr, BackgoundClr); + + if (TherewasAlert) { + // highlight text when part of change changes + if (eventIndex == 2) { + CHARRANGE sel2 = {location, location2}; + + SendMessage(GetDlgItem(hwndDlg, IDC_DATA), EM_EXSETSEL, 0, (LPARAM) & sel2); + SetFocus(GetDlgItem(hwndDlg, IDC_DATA)); + + DWORD HiBackgoundClr = db_get_dw(NULL, MODULENAME, BG_COLOR_KEY, Def_color_bg); + DWORD HiTextClr = db_get_dw(NULL, MODULENAME, TXT_COLOR_KEY, Def_color_txt); + + CHARFORMAT2 Format; + memset(&Format, 0, sizeof(Format)); + Format.cbSize = sizeof(Format); + Format.dwMask = CFM_BOLD | CFM_COLOR | CFM_BACKCOLOR; + Format.dwEffects = CFE_BOLD; + Format.crBackColor = ((~HiBackgoundClr) & 0x00ffffff); + Format.crTextColor = ((~HiTextClr) & 0x00ffffff); + SendMessage(GetDlgItem(hwndDlg, IDC_DATA), EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM) & Format); + } + } + + SetDlgItemTextA(hwndDlg, IDC_STATUSBAR, timestring); + sprintf(BytesString, "%s: %d | %s: %lu", (Translate("Bytes in display")), (GetWindowTextLength(GetDlgItem(hwndDlg, IDC_DATA))), (Translate("Bytes downloaded")), downloadsize); + + SendMessage(GetDlgItem(hwndDlg, IDC_STATUSBAR), SB_SETTEXT, 1, (LPARAM) BytesString); + } + else SetDlgItemText(hwndDlg, IDC_STATUSBAR, TranslateT("Alert test conditions not met; press the refresh button to view content.")); + } + EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATE_BUTTON), 1); + + if (!Startingup) + db_set_b(NULL, MODULENAME, HAS_CRASHED_KEY, 0); } - -/*****************/ - - - -- cgit v1.2.3