From d33b48c34e2ce98bd5a73698006be3859a7dfbc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Sch=C3=BCmann?= Date: Thu, 21 Aug 2014 11:42:10 +0000 Subject: IEHistory: prepared file structure (project file coming with NG compatibility update) git-svn-id: http://svn.miranda-ng.org/main/trunk@10252 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/IEHistory/IEHistory.sln | 26 - plugins/IEHistory/IEHistory.suo | Bin 54272 -> 0 bytes plugins/IEHistory/IEHistory/IEHistory.aps | Bin 23692 -> 0 bytes plugins/IEHistory/IEHistory/IEHistory.cpp | 131 ----- plugins/IEHistory/IEHistory/IEHistory.rc | 162 ------ plugins/IEHistory/IEHistory/IEHistory.vcproj | 465 --------------- plugins/IEHistory/IEHistory/commonheaders.h | 84 --- plugins/IEHistory/IEHistory/dlgHandlers.cpp | 798 -------------------------- plugins/IEHistory/IEHistory/dlgHandlers.h | 50 -- plugins/IEHistory/IEHistory/events.cpp | 88 --- plugins/IEHistory/IEHistory/events.h | 35 -- plugins/IEHistory/IEHistory/history (old).ico | Bin 2238 -> 0 bytes plugins/IEHistory/IEHistory/history.ico | Bin 2550 -> 0 bytes plugins/IEHistory/IEHistory/mirandaMem.cpp | 42 -- plugins/IEHistory/IEHistory/mirandaMem.h | 33 -- plugins/IEHistory/IEHistory/resource.h | 45 -- plugins/IEHistory/IEHistory/services.cpp | 62 -- plugins/IEHistory/IEHistory/services.h | 32 -- plugins/IEHistory/IEHistory/stdafx.cpp | 25 - plugins/IEHistory/IEHistory/stdafx.h | 47 -- plugins/IEHistory/IEHistory/utils.cpp | 330 ----------- plugins/IEHistory/IEHistory/utils.h | 97 ---- plugins/IEHistory/IEHistory/version.aps | Bin 19956 -> 0 bytes plugins/IEHistory/IEHistory/version.h | 53 -- plugins/IEHistory/IEHistory/version.rc | 100 ---- plugins/IEHistory/files_release.txt | 2 - plugins/IEHistory/files_source.txt | 4 - plugins/IEHistory/history.ico | Bin 2238 -> 0 bytes plugins/IEHistory/pack source.bat | 8 - plugins/IEHistory/pack symbols.bat | 8 - plugins/IEHistory/pack.bat | 10 - plugins/IEHistory/res/IEHistory.rc | 162 ++++++ plugins/IEHistory/res/history (old).ico | Bin 0 -> 2238 bytes plugins/IEHistory/res/history.ico | Bin 0 -> 2550 bytes plugins/IEHistory/res/version.rc | 100 ++++ plugins/IEHistory/src/IEHistory.cpp | 131 +++++ plugins/IEHistory/src/commonheaders.h | 84 +++ plugins/IEHistory/src/dlgHandlers.cpp | 798 ++++++++++++++++++++++++++ plugins/IEHistory/src/dlgHandlers.h | 50 ++ plugins/IEHistory/src/events.cpp | 88 +++ plugins/IEHistory/src/events.h | 35 ++ plugins/IEHistory/src/mirandaMem.cpp | 42 ++ plugins/IEHistory/src/mirandaMem.h | 33 ++ plugins/IEHistory/src/resource.h | 45 ++ plugins/IEHistory/src/services.cpp | 62 ++ plugins/IEHistory/src/services.h | 32 ++ plugins/IEHistory/src/stdafx.cpp | 25 + plugins/IEHistory/src/stdafx.h | 47 ++ plugins/IEHistory/src/utils.cpp | 330 +++++++++++ plugins/IEHistory/src/utils.h | 97 ++++ plugins/IEHistory/src/version.h | 53 ++ plugins/IEHistory/symbols_exclude.txt | 1 - 52 files changed, 2214 insertions(+), 2738 deletions(-) delete mode 100644 plugins/IEHistory/IEHistory.sln delete mode 100644 plugins/IEHistory/IEHistory.suo delete mode 100644 plugins/IEHistory/IEHistory/IEHistory.aps delete mode 100644 plugins/IEHistory/IEHistory/IEHistory.cpp delete mode 100644 plugins/IEHistory/IEHistory/IEHistory.rc delete mode 100644 plugins/IEHistory/IEHistory/IEHistory.vcproj delete mode 100644 plugins/IEHistory/IEHistory/commonheaders.h delete mode 100644 plugins/IEHistory/IEHistory/dlgHandlers.cpp delete mode 100644 plugins/IEHistory/IEHistory/dlgHandlers.h delete mode 100644 plugins/IEHistory/IEHistory/events.cpp delete mode 100644 plugins/IEHistory/IEHistory/events.h delete mode 100644 plugins/IEHistory/IEHistory/history (old).ico delete mode 100644 plugins/IEHistory/IEHistory/history.ico delete mode 100644 plugins/IEHistory/IEHistory/mirandaMem.cpp delete mode 100644 plugins/IEHistory/IEHistory/mirandaMem.h delete mode 100644 plugins/IEHistory/IEHistory/resource.h delete mode 100644 plugins/IEHistory/IEHistory/services.cpp delete mode 100644 plugins/IEHistory/IEHistory/services.h delete mode 100644 plugins/IEHistory/IEHistory/stdafx.cpp delete mode 100644 plugins/IEHistory/IEHistory/stdafx.h delete mode 100644 plugins/IEHistory/IEHistory/utils.cpp delete mode 100644 plugins/IEHistory/IEHistory/utils.h delete mode 100644 plugins/IEHistory/IEHistory/version.aps delete mode 100644 plugins/IEHistory/IEHistory/version.h delete mode 100644 plugins/IEHistory/IEHistory/version.rc delete mode 100644 plugins/IEHistory/files_release.txt delete mode 100644 plugins/IEHistory/files_source.txt delete mode 100644 plugins/IEHistory/history.ico delete mode 100644 plugins/IEHistory/pack source.bat delete mode 100644 plugins/IEHistory/pack symbols.bat delete mode 100644 plugins/IEHistory/pack.bat create mode 100644 plugins/IEHistory/res/IEHistory.rc create mode 100644 plugins/IEHistory/res/history (old).ico create mode 100644 plugins/IEHistory/res/history.ico create mode 100644 plugins/IEHistory/res/version.rc create mode 100644 plugins/IEHistory/src/IEHistory.cpp create mode 100644 plugins/IEHistory/src/commonheaders.h create mode 100644 plugins/IEHistory/src/dlgHandlers.cpp create mode 100644 plugins/IEHistory/src/dlgHandlers.h create mode 100644 plugins/IEHistory/src/events.cpp create mode 100644 plugins/IEHistory/src/events.h create mode 100644 plugins/IEHistory/src/mirandaMem.cpp create mode 100644 plugins/IEHistory/src/mirandaMem.h create mode 100644 plugins/IEHistory/src/resource.h create mode 100644 plugins/IEHistory/src/services.cpp create mode 100644 plugins/IEHistory/src/services.h create mode 100644 plugins/IEHistory/src/stdafx.cpp create mode 100644 plugins/IEHistory/src/stdafx.h create mode 100644 plugins/IEHistory/src/utils.cpp create mode 100644 plugins/IEHistory/src/utils.h create mode 100644 plugins/IEHistory/src/version.h delete mode 100644 plugins/IEHistory/symbols_exclude.txt (limited to 'plugins/IEHistory') diff --git a/plugins/IEHistory/IEHistory.sln b/plugins/IEHistory/IEHistory.sln deleted file mode 100644 index a9ac33420a..0000000000 --- a/plugins/IEHistory/IEHistory.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IEHistory", "IEHistory\IEHistory.vcproj", "{7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug UNICODE|Win32 = Debug UNICODE|Win32 - Debug|Win32 = Debug|Win32 - Release UNICODE|Win32 = Release UNICODE|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Debug UNICODE|Win32.ActiveCfg = Debug UNICODE|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Debug UNICODE|Win32.Build.0 = Debug UNICODE|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Debug|Win32.ActiveCfg = Debug|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Debug|Win32.Build.0 = Debug|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Release UNICODE|Win32.ActiveCfg = Release UNICODE|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Release UNICODE|Win32.Build.0 = Release UNICODE|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Release|Win32.ActiveCfg = Release|Win32 - {7F5EA8BC-8F2B-478E-8F05-0ED4B691B776}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/plugins/IEHistory/IEHistory.suo b/plugins/IEHistory/IEHistory.suo deleted file mode 100644 index 507be3ffb8..0000000000 Binary files a/plugins/IEHistory/IEHistory.suo and /dev/null differ diff --git a/plugins/IEHistory/IEHistory/IEHistory.aps b/plugins/IEHistory/IEHistory/IEHistory.aps deleted file mode 100644 index 549106e9ea..0000000000 Binary files a/plugins/IEHistory/IEHistory/IEHistory.aps and /dev/null differ diff --git a/plugins/IEHistory/IEHistory/IEHistory.cpp b/plugins/IEHistory/IEHistory/IEHistory.cpp deleted file mode 100644 index 33e892992f..0000000000 --- a/plugins/IEHistory/IEHistory/IEHistory.cpp +++ /dev/null @@ -1,131 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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 "commonheaders.h" -#include "services.h" - -char ModuleName[] = "IEHistory"; -HICON hIcon; -HINSTANCE hInstance; -HANDLE hOpenWindowsList = NULL; - -PLUGINLINK *pluginLink; - -HMODULE hUxTheme = 0; -BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD) = NULL; - -#ifdef _UNICODE -#define IEHISTORY_PLUGININFO_SUFFIX " (Unicode)" -#else -#define IEHISTORY_PLUGININFO_SUFFIX "" -#endif - -PLUGININFOEX pluginInfo = { - sizeof(PLUGININFOEX), - __PLUGIN_DISPLAY_NAME, - VERSION, - __DESC, - __AUTHOR, - __AUTHOREMAIL, - __COPYRIGHT, - __AUTHORWEB, - UNICODE_AWARE, - DEFMOD_UIHISTORY, -#ifdef _UNICODE - {0x2f093b88, 0xf389, 0x44f1, {0x9e, 0x2a, 0x37, 0xc2, 0x91, 0x94, 0x20, 0x3a}} //{2f093b88-f389-44f1-9e2a-37c29194203a} -#else - {0x2f997250, 0xbc2f, 0x46f0, {0xa3, 0x3e, 0x65, 0xf0, 0x62, 0x83, 0xbe, 0x5d}} //{2f997250-bc2f-46f0-a33e-65f06283be5d} -#endif -}; - -OLD_MIRANDAPLUGININFO_SUPPORT; - -extern "C" __declspec(dllexport) PLUGININFOEX *MirandaPluginInfoEx(DWORD mirandaVersion) -{ - Log("%s", "Entering function " __FUNCTION__); - Log("%s", "Leaving function " __FUNCTION__); - return &pluginInfo; -} - -static const MUUID interfaces[] = {MIID_UIHISTORY, MIID_LAST}; - -extern "C" __declspec(dllexport) const MUUID *MirandaPluginInterfaces() -{ - return interfaces; -} - -#include - -extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) -{ - INITCOMMONCONTROLSEX icex; - - icex.dwSize = sizeof(icex); - icex.dwICC = ICC_DATE_CLASSES; - - InitCommonControlsEx(&icex); - - if((hUxTheme = LoadLibraryA("uxtheme.dll")) != 0) - { - MyEnableThemeDialogTexture = (BOOL (WINAPI *)(HANDLE, DWORD))GetProcAddress(hUxTheme, "EnableThemeDialogTexture"); - } - - Log("%s", "Entering function " __FUNCTION__); - pluginLink = link; - //all initialization here - hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HISTORYICON)); - InitializeMirandaMemFunctions(); - - Log("%s", "Creating service functions ..."); - InitServices(); - - Log("%s", "Hooking events ..."); - HookEvents(); - Log("%s", "Leaving function " __FUNCTION__); - return 0; -} - -extern "C" int __declspec(dllexport) Unload() -{ - Log("%s", "Entering function " __FUNCTION__); - Log("%s", "Unhooking events ..."); - - Log("%s", "Destroying service functions ..."); - DestroyServices(); - - Log("%s", "Closing all open windows ..."); - WindowList_Broadcast(hOpenWindowsList, WM_CLOSE, 0, 0); - - Log("%s", "Leaving function " __FUNCTION__); - return 0; -} - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - hInstance = hinstDLL; - if (fdwReason == DLL_PROCESS_ATTACH) - { - DisableThreadLibraryCalls(hinstDLL); - LogInit(); - } - return TRUE; -} diff --git a/plugins/IEHistory/IEHistory/IEHistory.rc b/plugins/IEHistory/IEHistory/IEHistory.rc deleted file mode 100644 index 91354d63a3..0000000000 --- a/plugins/IEHistory/IEHistory/IEHistory.rc +++ /dev/null @@ -1,162 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_HISTORY DIALOGEX 0, 0, 416, 313 -STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -EXSTYLE WS_EX_APPWINDOW -CAPTION "Dialog" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - PUSHBUTTON "Close",IDC_CLOSE,362,283,50,14 - CONTROL "",IDC_IEVIEW_PLACEHOLDER,"Static",SS_BLACKFRAME,4,4,408,275,WS_EX_TRANSPARENT - PUSHBUTTON "&Prev",IDC_PREV,4,283,50,14 - PUSHBUTTON "&Next",IDC_NEXT,58,283,50,14 - PUSHBUTTON "&Search",IDC_SEARCH,310,283,50,14 -END - -IDD_OPT_HISTORY DIALOGEX 0, 0, 252, 119 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Dialog" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Number of events to load",IDC_EVENTSNO_GROUPBOX,7,7,238,68 - CONTROL "Load all events",IDC_LOAD_ALL,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,22,224,10 - CONTROL "Load only ",IDC_LOAD_NUMBER,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,35,79,10 - EDITTEXT IDC_EVENTS_COUNT,96,33,40,14,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "events per page.",IDC_LOAD_NUMBER_STATIC,143,36,96,8 - CONTROL "Show last page first",IDC_SHOW_LAST_FIRST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,49,214,10 - GROUPBOX "Other options",IDC_MISC_GROUPBOX,7,79,238,33 - CONTROL "Load items in background",IDC_LOAD_BACKGROUND,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,15,63,223,10 - CONTROL "RTL is default text direction.",IDC_ENABLE_RTL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,94,221,10 -END - -IDD_SEARCH DIALOGEX 0, 0, 210, 82 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Search" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - EDITTEXT IDC_SEARCH_TEXT,39,30,155,15,ES_AUTOHSCROLL - DEFPUSHBUTTON "&Find next",IDC_FIND_NEXT,99,64,50,14 - PUSHBUTTON "Cancel",IDCANCEL,153,64,50,14 - CONTROL "",IDC_TABS,"SysTabControl32",0x0,7,7,196,48 - CONTROL "Text :",IDC_SEARCH_TEXT_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,14,33,24,8,WS_EX_TRANSPARENT - GROUPBOX "Direction",IDC_DIRECTION_GROUPBOX,7,57,88,21 - CONTROL "Up",IDC_DIRECTION_UP,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,9,65,34,10 - CONTROL "Down",IDC_DIRECTION_DOWN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,47,65,45,10 - CONTROL "",IDC_SEARCH_DATE,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_SHOWNONE | NOT WS_VISIBLE | WS_TABSTOP,111,30,83,15 - CONTROL "",IDC_SEARCH_TIME,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_UPDOWN | DTS_SHOWNONE | NOT WS_VISIBLE | WS_TABSTOP | 0x8,39,30,69,15 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_HISTORY, DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 412 - TOPMARGIN, 4 - BOTTOMMARGIN, 309 - HORZGUIDE, 283 - END - - IDD_OPT_HISTORY, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 245 - VERTGUIDE, 15 - TOPMARGIN, 7 - BOTTOMMARGIN, 112 - END - - IDD_SEARCH, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 203 - TOPMARGIN, 7 - BOTTOMMARGIN, 78 - HORZGUIDE, 75 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_HISTORYICON ICON "history.ico" -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/IEHistory/IEHistory/IEHistory.vcproj b/plugins/IEHistory/IEHistory/IEHistory.vcproj deleted file mode 100644 index cb488a940f..0000000000 --- a/plugins/IEHistory/IEHistory/IEHistory.vcproj +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/IEHistory/IEHistory/commonheaders.h b/plugins/IEHistory/IEHistory/commonheaders.h deleted file mode 100644 index e687a27f02..0000000000 --- a/plugins/IEHistory/IEHistory/commonheaders.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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. -*/ - -#ifndef M_COMMON_HEADERS_H -#define M_COMMON_HEADERS_H - - -#define EVENTTYPE_STATUS 25368 //tabsrmm status events - -#include "stdafx.h" -#include -#include -#include -#include - -#include "resource.h" -#include "version.h" - -#include "utils.h" -#include "mirandaMem.h" -#include "events.h" -#include "dlgHandlers.h" - -#include "../../../include/newpluginapi.h" -#include "../../../include/m_database.h" -#include "../../../include/m_utils.h" -#include "../../../include/m_system.h" -#include "../../../include/m_skin.h" -#include "../../../include/m_options.h" -#include "../../../include/m_clist.h" -#include "../../../include/m_langpack.h" -#include "../../../include/m_history.h" -#include "../../../include/m_contacts.h" -//#include "../../../include/m_utils.h" -#include "../../../include/m_popup.h" -#include "../../../include/m_ieview.h" -#include "../../../include/m_updater.h" - - -extern HICON hIcon; //history icon -extern char ModuleName[]; -extern HINSTANCE hInstance; //dll instance -extern HANDLE hOpenWindowsList; - -extern PLUGININFOEX pluginInfo; - -extern BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD); - -#define OLD_MIRANDAPLUGININFO_SUPPORT PLUGININFO oldPluginInfo = { \ - sizeof(PLUGININFO), \ - pluginInfo.shortName, \ - pluginInfo.version, \ - pluginInfo.description, \ - pluginInfo.author, \ - pluginInfo.authorEmail, \ - pluginInfo.copyright, \ - pluginInfo.homepage, \ - pluginInfo.flags, \ - pluginInfo.replacesDefaultModule \ -}; \ -\ -extern "C" __declspec(dllexport) PLUGININFO *MirandaPluginInfo(DWORD mirandaVersion) \ -{ \ - return &oldPluginInfo; \ -} - -#endif \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/dlgHandlers.cpp b/plugins/IEHistory/IEHistory/dlgHandlers.cpp deleted file mode 100644 index a9d4734abe..0000000000 --- a/plugins/IEHistory/IEHistory/dlgHandlers.cpp +++ /dev/null @@ -1,798 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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 "dlgHandlers.h" -#include "math.h" -#include - -#define GAP_SIZE 2 -#define MIN_HISTORY_WIDTH 350 -#define MIN_HISTORY_HEIGHT 100 - -struct WorkerThreadData{ - HWND hWnd; - HistoryWindowData *data; - IEVIEWEVENT ieEvent; -}; - -int LoadName(HWND hWnd); -int CalcIEViewPos(IEVIEWWINDOW *ieWnd, HWND hMainWindow); -int LoadIEView(HWND hWnd); -int MoveIEView(HWND hWnd); -int DestroyIEView(HWND hWnd); -int LoadEvents(HWND hWnd); -int LoadPage(HWND hWnd, HANDLE hFirstEvent, long index, long shiftCount, long readCount, int direction); -int LoadNext(HWND hWnd); -int LoadPrev(HWND hWnd); -int ScrollToBottom(HWND hWnd); - -void RefreshButtonStates(HWND hWnd); - -HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int index, int direction); - -int CalcIEViewPos(IEVIEWWINDOW *ieWnd, HWND hMainWindow) -{ - RECT rect; - GetWindowRect(GetDlgItem(hMainWindow, IDC_IEVIEW_PLACEHOLDER), &rect); - ScreenToClient(hMainWindow, &rect); - - ieWnd->x = rect.left + GAP_SIZE; - ieWnd->y = rect.top + GAP_SIZE; - ieWnd->cx = rect.right - rect.left - (2 * GAP_SIZE); - ieWnd->cy = rect.bottom - rect.top - (2 * GAP_SIZE); - return 0; -} - -int LoadName(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - HANDLE hEvent = (HANDLE) CallService(MS_DB_EVENT_FINDFIRST, (WPARAM) data->hContact, 0); - DBEVENTINFO event = {0}; - event.cbSize = sizeof(event); - CallService(MS_DB_EVENT_GET, (WPARAM) hEvent, (LPARAM) &event); //to get the protocol - TCHAR *szOther = GetContactName(data->hContact, event.szModule); - TCHAR buffer[1024]; - _sntprintf(buffer, 1024, _T("%s: IEHistory"), szOther); - SetWindowText(hWnd, buffer); - free(szOther); - return 0; -} - -int LoadIEView(HWND hWnd) -{ - IEVIEWWINDOW ieWnd = {0}; - ieWnd.cbSize = sizeof(ieWnd); - ieWnd.iType = IEW_CREATE; - ieWnd.dwMode = IEWM_HISTORY; - ieWnd.dwFlags = 0; - ieWnd.parent = hWnd; - CalcIEViewPos(&ieWnd, hWnd); - - CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - data->hIEView = ieWnd.hwnd; - SetWindowPos(GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); - //ShowWindow(GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), SW_HIDE); - return 0; -} - -int MoveIeView(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - if (data) - { - IEVIEWWINDOW ieWnd = {0}; - ieWnd.cbSize = sizeof(ieWnd); - ieWnd.parent = hWnd; - ieWnd.hwnd = data->hIEView; - ieWnd.iType = IEW_SETPOS; - CalcIEViewPos(&ieWnd, hWnd); - CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); - } - return 0; -} - -int DestroyIEView(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - IEVIEWWINDOW ieWnd = {0}; - ieWnd.cbSize = sizeof(ieWnd); - ieWnd.parent = hWnd; - ieWnd.hwnd = data->hIEView; - ieWnd.iType = IEW_DESTROY; - CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); - return 0; -} - -void FillIEViewInfo(IEVIEWEVENTDATA *fillData, DBEVENTINFO dbInfo, PBYTE blob) -{ - switch (dbInfo.eventType) - { - case EVENTTYPE_MESSAGE: - fillData->iType = IEED_EVENT_MESSAGE; - break; - case EVENTTYPE_STATUS: - fillData->iType = IEED_EVENT_STATUSCHANGE; - break; - case EVENTTYPE_FILE: - fillData->iType = IEED_EVENT_FILE; - break; - case EVENTTYPE_URL: - fillData->iType = IEED_EVENT_URL; - break; - } - fillData->pszNick = ""; - fillData->bIsMe = (dbInfo.flags & DBEF_SENT); - fillData->dwFlags = (dbInfo.flags & DBEF_SENT) ? IEEDF_SENT : 0; - fillData->time = dbInfo.timestamp; - unsigned int len = strlen((char *) blob) + 1; - PBYTE pos; - - fillData->pszText = (char *) blob; -// fillData.pszText2 = (char *) blob; - if (len < dbInfo.cbBlob) - { - pos = blob + len; - fillData->pszTextW = (wchar_t *) pos; -// fillData->pszText2W = (wchar_t *) pos; - fillData->dwFlags |= IEEDF_UNICODE_TEXT; - } -} - -DWORD WINAPI WorkerThread(LPVOID lpvData) -{ - Log("%s", "Inside worker thread ..."); - WorkerThreadData *data = (WorkerThreadData *) lpvData; - EnableWindow(GetDlgItem(data->hWnd, IDC_CLOSE), FALSE); - const int LOAD_COUNT = 10; - int count = 0; - int target = data->ieEvent.count; - int cLoad = LOAD_COUNT; - int i; - IEVIEWEVENT ieEvent = {0}; - IEVIEWEVENTDATA ieData[LOAD_COUNT] = {0}; - PBYTE messages[LOAD_COUNT] = {0}; - HANDLE dbEvent = data->ieEvent.hDbEventFirst; - for (i = 0; i < LOAD_COUNT; i++) - { - ieData[i].cbSize = sizeof(IEVIEWEVENTDATA); //set the cbsize here, no need to do it every time - ieData[i].next = &ieData[i + 1]; //it's a vector, so v[i]'s next element is v[i + 1] - } - ieData[LOAD_COUNT - 1].next = NULL; - ieEvent = data->ieEvent; - ieEvent.iType = IEE_LOG_MEM_EVENTS; - ieEvent.eventData = ieData; - DBEVENTINFO dbInfo = {0}; - dbInfo.cbSize = sizeof(DBEVENTINFO); - PBYTE buffer = NULL; - int newSize, oldSize = 0; - while (count < target) - { - cLoad = (count + LOAD_COUNT > target) ? target - count : LOAD_COUNT; - ieEvent.count = -1; - - for (i = 0; i < cLoad; i++) - { - newSize = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM) dbEvent, 0); - if (newSize > oldSize) - { - buffer = (PBYTE) realloc(buffer, newSize); - dbInfo.pBlob = buffer; - oldSize = newSize; - } - messages[i] = (PBYTE) realloc(messages[i], newSize); - dbInfo.cbBlob = newSize; - if (!CallService(MS_DB_EVENT_GET, (WPARAM) dbEvent, (LPARAM) &dbInfo)) - { - memmove(messages[i], dbInfo.pBlob, newSize); - FillIEViewInfo(&ieData[i], dbInfo, messages[i]); - } - //FillIEViewEventData(&ieData[i], dbEvent); - dbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDNEXT, (WPARAM) dbEvent, 0); - } - ieData[cLoad - 1].next = NULL; //cLoad < LOAD_COUNT will only happen once, at the end - CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent); - count += cLoad; - } - for (i = 0; i < LOAD_COUNT; i++) - { - free(messages[i]); - } - free(buffer); - EnableWindow(GetDlgItem(data->hWnd, IDC_CLOSE), TRUE); - free(data); - //RefreshButtonStates(data->hWnd); - Log("%s", "WorkerThread finished ... returning"); - return 0; -} - -int DoLoadEvents(HWND hWnd, HistoryWindowData *data, IEVIEWEVENT ieEvent) -{ - ieEvent.iType = IEE_CLEAR_LOG; - CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent); - if (data->loadMethod == LOAD_IN_BACKGROUND) - { - WorkerThreadData *threadData = (WorkerThreadData *) malloc(sizeof(WorkerThreadData)); - threadData->data = data; - threadData->hWnd = hWnd; - threadData->ieEvent = ieEvent; - WorkerThread(threadData); - /* - DWORD threadID; - HANDLE thread = CreateThread(NULL, 0, WorkerThread, threadData, 0, &threadID); - if (!thread) - { - MessageBox(hWnd, TranslateT("An error occured while trying to create the worker thread (%m)"), TranslateT("Error"), MB_OK | MB_ICONERROR); - } */ - } - else{ - ieEvent.iType = IEE_LOG_DB_EVENTS; - CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent); - ScrollToBottom(hWnd); - - TCHAR buffer[256]; - _itot(data->index + 1, buffer, 10); - SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 0 | SBT_POPOUT, (LPARAM) buffer); - _itot(data->index + ieEvent.count, buffer, 10); - SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 1 | SBT_POPOUT, (LPARAM) buffer); - _itot(data->count, buffer, 10); - SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 3 | SBT_POPOUT, (LPARAM) buffer); - RefreshButtonStates(hWnd); - } - return 0; -} - -int LoadEvents(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - int count = CallService(MS_DB_EVENT_GETCOUNT, (WPARAM) data->hContact, 0); - int bLastFirst = DBGetContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", 0); - int bRTL = DBGetContactSettingByte(NULL, ModuleName, "EnableRTL", 0); - bRTL = DBGetContactSettingByte(data->hContact, "Tab_SRMsg", "RTL", bRTL); - data->bEnableRTL = bRTL; - data->count = count; - if (data->itemsPerPage > count) - { - data->itemsPerPage = count; - } - IEVIEWEVENT ieEvent = {0}; - ieEvent.cbSize = sizeof(ieEvent); - ieEvent.hwnd = data->hIEView; - ieEvent.hContact = data->hContact; - ieEvent.count = (data->itemsPerPage <= 0) ? count : data->itemsPerPage; - - HANDLE hFirstEvent = (HANDLE) CallService(MS_DB_EVENT_FINDFIRST, (WPARAM) data->hContact, 0); - int index = 0; - if ((data->itemsPerPage > 0) && (bLastFirst)) - { - index = data->count - data->itemsPerPage; - hFirstEvent = GetNeededEvent(hFirstEvent, index, DIRECTION_FORWARD); - } - data->index = index; - data->hLastFirstEvent = hFirstEvent; - ieEvent.hDbEventFirst = hFirstEvent; - if (data->bEnableRTL) - { - ieEvent.dwFlags |= IEEF_RTL; - } - DoLoadEvents(hWnd, data, ieEvent); - return 0; -} - -int LoadPage(HWND hWnd, HANDLE hFirstEvent, long index, long shiftCount, long readCount, int direction) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - int count = shiftCount; - int newIndex = index; - IEVIEWEVENT ieEvent = {0}; - ieEvent.cbSize = sizeof(ieEvent); - ieEvent.hwnd = data->hIEView; - ieEvent.hContact = data->hContact; - - if (direction == DIRECTION_BACK) - { - newIndex -= shiftCount; - if (newIndex < 0) - { - newIndex = 0; - count = index; - } - } - else{ - newIndex += shiftCount; - if (newIndex + readCount > data->count) - { - count = data->count - newIndex; - newIndex = data->count - readCount; - } - } - data->index = newIndex; - HANDLE hEvent = GetNeededEvent(hFirstEvent, count, direction); - data->hLastFirstEvent = hEvent; - ieEvent.hDbEventFirst = hEvent; - ieEvent.count = readCount; - if (data->bEnableRTL) - { - ieEvent.dwFlags |= IEEF_RTL; - } - DoLoadEvents(hWnd, data, ieEvent); - return 0; -} - -int LoadPrev(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - LoadPage(hWnd, data->hLastFirstEvent, data->index, data->itemsPerPage, data->itemsPerPage, DIRECTION_BACK); - int finish = data->index <= 0; - return finish; -} - -int LoadNext(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - LoadPage(hWnd, data->hLastFirstEvent, data->index, data->itemsPerPage, data->itemsPerPage, DIRECTION_FORWARD); - int finish = data->index + data->itemsPerPage >= data->count; - return finish; -} - -int ScrollToBottom(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - IEVIEWWINDOW ieWnd = {0}; - ieWnd.cbSize = sizeof(ieWnd); - ieWnd.iType = IEW_SCROLLBOTTOM; - ieWnd.hwnd = data->hIEView; - ieWnd.parent = hWnd; - CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); - return 0; -} - -void AddAnchorWindowToDeferList(HDWP &hdWnds, HWND window, RECT *rParent, WINDOWPOS *wndPos, int anchors) -{ - RECT rChild = AnchorCalcPos(window, rParent, wndPos, anchors); - hdWnds = DeferWindowPos(hdWnds, window, HWND_NOTOPMOST, rChild.left, rChild.top, rChild.right - rChild.left, rChild.bottom - rChild.top, SWP_NOZORDER); -} - -void RefreshButtonStates(HWND hWnd) -{ - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - int bPrev = data->index > 0; - int bNext = data->index + data->itemsPerPage < data->count; - EnableWindow(GetDlgItem(hWnd, IDC_PREV), bPrev); - EnableWindow(GetDlgItem(hWnd, IDC_NEXT), bNext); -} - - - -BOOL CALLBACK HistoryDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_INITDIALOG: - { - Log("Inside WM_INITDIALOG ..."); - TranslateDialogDefault(hWnd); - SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM) hIcon); - //SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); - int bRTL = DBGetContactSettingByte(NULL, ModuleName, "EnableRTL", 0); - if (bRTL) - { - SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_RTLREADING); - } - //InitCommonControls(); - HWND hStatusBar = CreateWindow(STATUSCLASSNAME, //class - _T("-"), //title - WS_CHILD | WS_VISIBLE | SBARS_TOOLTIPS | SBARS_SIZEGRIP, //style - 0, 0, //x, y - 0, 0, //width, height - hWnd, //parent - (HMENU) IDC_STATUSBAR, //menu - hInstance, //instance - NULL); //lpParam - int x; - int widths[] = {x = 50, x += 50, x += 150, -1}; - int count = sizeof(widths) / sizeof(widths[0]); - SendMessage(hStatusBar, SB_SETPARTS, count, (LPARAM) widths); - //SendMessage(hStatusBar, SB_SETTIPTEXT, 1, (LPARAM) TranslateT("First event shown in page")); - //SendMessage(hStatusBar, SB_SETTIPTEXT, 2, (LPARAM) TranslateT("Last event shown in page")); - SendMessage(hStatusBar, SB_SETTEXT, 2 | SBT_POPOUT, (LPARAM) TranslateT("Out of a total of")); - return TRUE; - break; - } - case WM_SHOWWINDOW: - { - Log("Inside WM_SHOWWINDOW ..."); - LoadName(hWnd); - LoadIEView(hWnd); - LoadEvents(hWnd); - - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - bool bAll = (data->itemsPerPage <= 0) || (data->itemsPerPage >= data->count); - int bLastFirst = DBGetContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", 0); - if (!bLastFirst) - { - EnableWindow(GetDlgItem(hWnd, IDC_PREV), FALSE); - EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !bAll); - } - else{ - EnableWindow(GetDlgItem(hWnd, IDC_PREV), !bAll); - EnableWindow(GetDlgItem(hWnd, IDC_NEXT), FALSE); - } - //ShowWindow(GetDlgItem(hWnd, IDC_PAGE_NUMBER), !bAll); - EnableWindow(GetDlgItem(hWnd, IDC_SEARCH), !bAll); - - break; - } - case WM_DESTROY: - { - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - DestroyIEView(hWnd); - free(data); - WindowList_Remove(hOpenWindowsList, hWnd); - break; - } - case WM_CLOSE: - { - if (IsWindowEnabled(GetDlgItem(hWnd, IDC_CLOSE))) - { - DestroyWindow(hWnd); - } - else{ - MessageBox(hWnd, TranslateT("You can't close the window now, wait for all events to load."), TranslateT("Error"), MB_OK | MB_ICONERROR); - } - break; - } - case WM_WINDOWPOSCHANGING: - { - HDWP hdWnds = BeginDeferWindowPos(6); - RECT rParent; - HWND hStatusBar = GetDlgItem(hWnd, IDC_STATUSBAR); - WINDOWPOS *wndPos = (WINDOWPOS *) lParam; - GetWindowRect(hWnd, &rParent); - - //hdWnds = DeferWindowPos(hdWnds, hStatusBar, HWND_NOTOPMOST, wndPos->x, wndPos->y + wndPos->cy - statusHeight, statusWidth, statusHeight, SWP_NOZORDER); - SendMessage(hStatusBar, WM_SIZE, 0, 0); - if (wndPos->cx < MIN_HISTORY_WIDTH) - { - wndPos->cx = MIN_HISTORY_WIDTH; - } - if (wndPos->cy < MIN_HISTORY_HEIGHT) - { - wndPos->cy = MIN_HISTORY_HEIGHT; - } - //MoveWindow(hStatusBar, wndPos->x, wndPos->y + wndPos->cy - statusHeight - 2, statusWidth - 2, statusHeight, TRUE); - AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_STATUSBAR), &rParent, wndPos, ANCHOR_BOTTOM); - AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_CLOSE), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM); - AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), &rParent, wndPos, ANCHOR_ALL); - AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PREV), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM); - AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_NEXT), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM); - //AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PAGE_NUMBER), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM); - AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_SEARCH), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM); - - EndDeferWindowPos(hdWnds); - MoveIeView(hWnd); - break; - } - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDC_CLOSE: - { - SendMessage(hWnd, WM_CLOSE, 0, 0); - break; - } - case IDC_PREV: - { - int finished = LoadPrev(hWnd); - //EnableWindow(GetDlgItem(hWnd, IDC_PREV), !finished); - //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), TRUE); - break; - } - case IDC_NEXT: - { - int finished = LoadNext(hWnd); - //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !finished); - //EnableWindow(GetDlgItem(hWnd, IDC_PREV), TRUE); - break; - } - case IDC_SEARCH: - { - HWND hSearch = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_SEARCH), hWnd, SearchDlgProc); - if (hSearch == NULL) - { - char buffer[1024]; - sprintf(buffer, "Error #%d", GetLastError()); - MessageBoxA(0, buffer, "Error", MB_OK); - } - HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); - SearchWindowData *searchData = (SearchWindowData *) malloc(sizeof(SearchWindowData)); - searchData->hContact = data->hContact; - searchData->hHistoryWindow = hWnd; - searchData->hLastFoundEvent = NULL; - searchData->index = 0; - SetWindowLong(hSearch, DWL_USER, (LONG) searchData); - ShowWindow(hSearch, SW_SHOW); - //sprintf(buffer, "Error #%d", GetLastError()); - //MessageBoxA(0, buffer, "Error", MB_OK); - break; - } - } - break; - } - default: - { - break; - } - } - return 0; -} - -#include "prsht.h" //PSN_APPLY - -BOOL CALLBACK OptionsDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_INITDIALOG: - { - TranslateDialogDefault(hWnd); - int count = DBGetContactSettingDword(NULL, ModuleName, "EventsToLoad", 0); - EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), count > 0); - EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), count > 0); - - CheckDlgButton(hWnd, IDC_LOAD_ALL, count <= 0); - CheckDlgButton(hWnd, IDC_LOAD_NUMBER, count > 0); - CheckDlgButton(hWnd, IDC_ENABLE_RTL, (BOOL) DBGetContactSettingByte(NULL, ModuleName, "EnableRTL", 0)); - CheckDlgButton(hWnd, IDC_SHOW_LAST_FIRST, (BOOL) DBGetContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", 0)); - CheckDlgButton(hWnd, IDC_LOAD_BACKGROUND, (BOOL) DBGetContactSettingByte(NULL, ModuleName, "UseWorkerThread", 0)); - TCHAR buffer[1024]; - _itot(count, buffer, 10); - SetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer); - - break; - } - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDC_LOAD_ALL: - { - EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), FALSE); - EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), FALSE); - SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); - break; - } - case IDC_LOAD_NUMBER: - { - EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), TRUE); - EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), TRUE); - SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); - break; - } - case IDC_ENABLE_RTL: - case IDC_SHOW_LAST_FIRST: - case IDC_EVENTS_COUNT: - case IDC_LOAD_BACKGROUND: - { - SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); - break; - } - } - break; - } - case WM_NOTIFY: - { - switch(((LPNMHDR)lParam)->idFrom) - { - case 0: - { - switch (((LPNMHDR)lParam)->code) - { - case PSN_APPLY: - { - long count; - if (IsDlgButtonChecked(hWnd, IDC_LOAD_ALL)) - { - count = 0; - } - else{ - TCHAR buffer[1024]; - GetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer, sizeof(buffer)); - count = _tstol(buffer); - count = (count < 0) ? 0 : count; - } - DBWriteContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", IsDlgButtonChecked(hWnd, IDC_SHOW_LAST_FIRST)); - DBWriteContactSettingByte(NULL, ModuleName, "EnableRTL", IsDlgButtonChecked(hWnd, IDC_ENABLE_RTL)); - DBWriteContactSettingByte(NULL, ModuleName, "UseWorkerThread", IsDlgButtonChecked(hWnd, IDC_LOAD_BACKGROUND)); - DBWriteContactSettingDword(NULL, ModuleName, "EventsToLoad", count); - - break; - } - } - break; - } - } - break; - } - default: - { - break; - } - } - return 0; -} - - -#include "commctrl.h" //tab control - -BOOL CALLBACK SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_INITDIALOG: - { - if (MyEnableThemeDialogTexture) - { - MyEnableThemeDialogTexture((HWND) hWnd, ETDT_ENABLETAB); - } - TranslateDialogDefault(hWnd); - TCITEM tabItem = {0}; - tabItem.pszText = TranslateT("Text search"); - tabItem.mask = TCIF_TEXT; - //MessageBoxA(0, "Before TCM_INSERTITEM 1", "Error", MB_OK); - SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 0, (LPARAM) &tabItem); - tabItem.pszText = TranslateT("Time search"); - //MessageBoxA(0, "Before TCM_INSERTITEM 2", "Error", MB_OK); - SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 1, (LPARAM) &tabItem); - //SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_SETFORMAT, 0, (LPARAM) "HH:mm"); - //MessageBoxA(0, "Before CheckDlgButton", "Error", MB_OK); - CheckDlgButton(hWnd, IDC_DIRECTION_DOWN, TRUE); - return TRUE; - break; - } - case WM_SHOWWINDOW: - { - SetFocus(GetDlgItem(hWnd, IDC_SEARCH_TEXT)); - break; - } - case WM_DESTROY: - { - SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); - free(data); - //DestroyWindow(hWnd); - break; - } - case WM_CLOSE: - { - DestroyWindow(hWnd); - break; - } - case WM_NOTIFY: - { - switch (((LPNMHDR) lParam)->idFrom) - { - case IDC_SEARCH_DATE: - case IDC_SEARCH_TIME: - { - SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); - data->hLastFoundEvent = NULL; //start from top if changes occur - break; - } - case IDC_TABS: - { - switch (((LPNMHDR) lParam)->code) - { - case TCN_SELCHANGE: - { - int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0); - ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_DATE), (tab == 1) ? SW_SHOW : SW_HIDE); - ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TIME), (tab == 1) ? SW_SHOW : SW_HIDE); - ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TEXT), (tab == 0) ? SW_SHOW : SW_HIDE); - SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT_STATIC), WM_SETTEXT, 0, (LPARAM) ((tab == 0) ? _T("Text :") : _T("Time :"))); - break; - } - } - break; - } - } - break; - } - case WM_COMMAND: - { - switch (LOWORD(wParam)) - { - case IDC_SEARCH_TEXT: - { - switch (HIWORD(wParam)) - { - case EN_CHANGE: - { - SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); - data->hLastFoundEvent = NULL; //start from top if changes occur - break; - } - } - break; - } - case IDCANCEL: - { - SendMessage(hWnd, WM_CLOSE, 0, 0); - break; - } - case IDC_FIND_NEXT: - { - SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); - const HistoryWindowData *histData = (HistoryWindowData *) GetWindowLong(data->hHistoryWindow, DWL_USER); - int direction = IsDlgButtonChecked(hWnd, IDC_DIRECTION_UP) ? DIRECTION_BACK : DIRECTION_FORWARD; - int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0); - int type = (tab == 0) ? SEARCH_TEXT : SEARCH_TIME; - SearchResult searchResult; - if (data->hLastFoundEvent == NULL) - { - data->index = (direction == DIRECTION_FORWARD) ? 0 : histData->count; - } - else{ - data->hLastFoundEvent = GetNeededEvent(data->hLastFoundEvent, 1, direction); - } - - if (type == SEARCH_TEXT) //text search - { - TCHAR text[2048]; //TODO buffer overrun - SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT), WM_GETTEXT, 2048, (LPARAM) text); - searchResult = SearchHistory(data->hContact, data->hLastFoundEvent, text, direction, type); - } - else{//time search - TimeSearchData tsData = {0}; - SYSTEMTIME date = {0}, time = {0}; - int res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_DATE), DTM_GETSYSTEMTIME, 0, (LPARAM) &date); - tsData.flags = (res == GDT_VALID) ? TSDF_DATE_SET : 0; - res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_GETSYSTEMTIME, 0, (LPARAM) &time); - if (res == GDT_VALID) - { - tsData.flags |= TSDF_TIME_SET; - date.wHour = time.wHour; - date.wMinute = time.wMinute; - date.wSecond = time.wSecond; - date.wMilliseconds = time.wMilliseconds; - } - tsData.time = date; - searchResult = SearchHistory(data->hContact, data->hLastFoundEvent, &tsData, direction, type); - } - if (searchResult.hEvent) - { - //char buffer[1024]; - //sprintf(buffer, "Found it: index = %ld hEvent = %p", searchResult.index, searchResult.hEvent); - //MessageBox(0, buffer, "Yupppi", 0); - data->index += (direction == DIRECTION_BACK) ? -searchResult.index : searchResult.index; - LoadPage(data->hHistoryWindow, searchResult.hEvent, data->index, histData->itemsPerPage / 2, histData->itemsPerPage, DIRECTION_BACK); - } - else{ - MessageBox(0, TranslateT("Search finished. No more entries ..."), TranslateT("Information"), MB_OK | MB_ICONINFORMATION); - } - data->hLastFoundEvent = searchResult.hEvent; - break; - } - } - break; - } - } - return 0; -} \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/dlgHandlers.h b/plugins/IEHistory/IEHistory/dlgHandlers.h deleted file mode 100644 index 343b208c6e..0000000000 --- a/plugins/IEHistory/IEHistory/dlgHandlers.h +++ /dev/null @@ -1,50 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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. -*/ - -#ifndef M_HISTORY_DLG_HANDLERS_H -#define M_HISTORY_DLG_HANDLERS_H - -#include "commonheaders.h" - -#define LOAD_IN_BACKGROUND 0x00000001 - -struct HistoryWindowData{ - HANDLE hContact; - long count; - long index; - short loadMethod; - int itemsPerPage; - int bEnableRTL; - HWND hIEView; - HANDLE hLastFirstEvent; -}; - -struct SearchWindowData{ - long index; - HANDLE hContact; - HWND hHistoryWindow; - HANDLE hLastFoundEvent; -}; - -BOOL CALLBACK HistoryDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -BOOL CALLBACK OptionsDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -BOOL CALLBACK SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); - -#endif //M_HISTORY_DLG_HANDLERS_H \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/events.cpp b/plugins/IEHistory/IEHistory/events.cpp deleted file mode 100644 index 90b36b1b63..0000000000 --- a/plugins/IEHistory/IEHistory/events.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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 "events.h" - -HANDLE hModulesLoaded; -HANDLE hOptionsInitialize; - -int HookEvents() -{ - hModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); - hOptionsInitialize = HookEvent(ME_OPT_INITIALISE, OnOptionsInitialize); - return 0; -} - -int UnhookEvents() -{ - UnhookEvent(hModulesLoaded); - UnhookEvent(hOptionsInitialize); - return 0; -} - -int OnModulesLoaded(WPARAM wParam, LPARAM lParam) -{ - Log("%s", "Entering function " __FUNCTION__); - CLISTMENUITEM menuItem = {0}; - menuItem.cbSize = sizeof(CLISTMENUITEM); - menuItem.flags = 0; - menuItem.pszContactOwner = NULL; //all contacts - menuItem.hIcon = hIcon; - - menuItem.position = 1000090000; - - menuItem.pszName = Translate("View contact's history"); - menuItem.pszService = MS_HISTORY_SHOWCONTACTHISTORY; - - Log("%s", "Adding first menu (view contact's history)"); - CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (WPARAM) &menuItem); - - menuItem.ptszName = TranslateT("View system history"); - //CallService(MS_CLIST_ADDMAINMENUITEM, 0, (WPARAM) &menuItem); - //PLUGININFO pInfo = pluginInfo; - //pInfo.shortName = "IEView History Viewer"; - Log("%s", "Adding plugin to updater list"); - CallService(MS_UPDATE_REGISTERFL, (WPARAM) 2553, (LPARAM) &pluginInfo); - Log("%s", "Creating the open windows list"); - hOpenWindowsList = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); - - Log("%s", "Leaving function " __FUNCTION__); - return 0; -} - -int OnOptionsInitialize(WPARAM wParam, LPARAM lParam) -{ - Log("%s", "Entering function " __FUNCTION__); - OPTIONSDIALOGPAGE odp = { 0 }; - - odp.cbSize = sizeof(odp); - odp.position = 100000000; - odp.hInstance = hInstance; - odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_HISTORY); - odp.pszTitle = Translate("IEHistory"); - odp.pszGroup = Translate("Message Sessions"); - odp.groupPosition = 910000000; - odp.flags=ODPF_BOLDGROUPS; - odp.pfnDlgProc = OptionsDlgProc; - CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp); - - return 0; - Log("%s", "Leaving function " __FUNCTION__); -} \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/events.h b/plugins/IEHistory/IEHistory/events.h deleted file mode 100644 index b19b14fced..0000000000 --- a/plugins/IEHistory/IEHistory/events.h +++ /dev/null @@ -1,35 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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. -*/ - -#ifndef M_HISTORY_HOOKED_EVENTS_H -#define M_HISTORY_HOOKED_EVENTS_H - -#include "commonheaders.h" - -extern HANDLE hModulesLoaded; -extern HANDLE hOptionsInitialize; - -int HookEvents(); -int UnhookEvents(); - -int OnModulesLoaded(WPARAM wParam, LPARAM lParam); -int OnOptionsInitialize(WPARAM wParam, LPARAM lParam); - -#endif //M_HISTORY_HOOKED_EVENTS_H \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/history (old).ico b/plugins/IEHistory/IEHistory/history (old).ico deleted file mode 100644 index eb627fa6b0..0000000000 Binary files a/plugins/IEHistory/IEHistory/history (old).ico and /dev/null differ diff --git a/plugins/IEHistory/IEHistory/history.ico b/plugins/IEHistory/IEHistory/history.ico deleted file mode 100644 index b85c00bd5e..0000000000 Binary files a/plugins/IEHistory/IEHistory/history.ico and /dev/null differ diff --git a/plugins/IEHistory/IEHistory/mirandaMem.cpp b/plugins/IEHistory/IEHistory/mirandaMem.cpp deleted file mode 100644 index 8ef20cb2e1..0000000000 --- a/plugins/IEHistory/IEHistory/mirandaMem.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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 "mirandaMem.h" - -void *(*MirandaMalloc)(size_t size) = NULL; -void *(*MirandaRealloc)(void *data, size_t newSize) = NULL; -void (*MirandaFree) (void *data) = NULL; - -void InitializeMirandaMemFunctions() -{ - MM_INTERFACE mmi = {0}; - mmi.cbSize = sizeof(MM_INTERFACE); - CallService(MS_SYSTEM_GET_MMI, 0, (LPARAM) &mmi); - MirandaMalloc = mmi.mmi_malloc; - MirandaRealloc = mmi.mmi_realloc; - MirandaFree = mmi.mmi_free; -} - -void DestroyMirandaMemFunctions() -{ - MirandaMalloc = NULL; - MirandaRealloc = NULL; - MirandaFree = NULL; -} \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/mirandaMem.h b/plugins/IEHistory/IEHistory/mirandaMem.h deleted file mode 100644 index 7428278000..0000000000 --- a/plugins/IEHistory/IEHistory/mirandaMem.h +++ /dev/null @@ -1,33 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005 Cristian Libotean - -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. -*/ - -#ifndef M_FOLDERS_MIRANDA_MEM_H -#define M_FOLDERS_MIRANDA_MEM_H - -#include "commonheaders.h" - -extern void *(*MirandaMalloc)(size_t size); -extern void *(*MirandaRealloc)(void *data, size_t newSize); -extern void (*MirandaFree) (void *data); - -void InitializeMirandaMemFunctions(); -void DestroyMirandaMemFunctions(); - -#endif \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/resource.h b/plugins/IEHistory/IEHistory/resource.h deleted file mode 100644 index b240d149db..0000000000 --- a/plugins/IEHistory/IEHistory/resource.h +++ /dev/null @@ -1,45 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by IEHistory.rc -// -#define IDD_HISTORY 101 -#define IDI_HISTORYICON 102 -#define IDD_OPT_HISTORY 103 -#define IDD_SEARCH 104 -#define IDC_CLOSE 1001 -#define IDC_IEVIEW_PLACEHOLDER 1010 -#define IDC_EVENTSNO_GROUPBOX 1011 -#define IDC_LOAD_ALL 1012 -#define IDC_LOAD_NUMBER 1013 -#define IDC_EVENTS_COUNT 1014 -#define IDC_LOAD_NUMBER_STATIC 1015 -#define IDC_PREV 1016 -#define IDC_NEXT 1017 -#define IDC_PAGE_NUMBER 1018 -#define IDC_STATUSBAR 1019 -#define IDC_SHOW_LAST_FIRST 1021 -#define IDC_MISC_GROUPBOX 1022 -#define IDC_ENABLE_RTL 1023 -#define IDC_FIND_NEXT 1024 -#define IDC_TABS 1025 -#define IDC_SEARCH 1026 -#define IDC_SEARCH_TEXT_STATIC 1027 -#define IDC_SEARCH_TEXT 1028 -#define IDC_DIRECTION_GROUPBOX 1032 -#define IDC_DIRECTION_UP 1033 -#define IDC_DIRECTION_DOWN 1034 -#define IDC_SEARCH_DATE 1035 -#define IDC_SEARCH_TIME 1038 -#define IDC_WORKER_THREAD 1039 -#define IDC_LOAD_BACKGROUND 1039 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 105 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1040 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/plugins/IEHistory/IEHistory/services.cpp b/plugins/IEHistory/IEHistory/services.cpp deleted file mode 100644 index 5683eecda8..0000000000 --- a/plugins/IEHistory/IEHistory/services.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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 "services.h" - -HANDLE hShowHistory; - -int InitServices() -{ - hShowHistory = CreateServiceFunction(MS_HISTORY_SHOWCONTACTHISTORY, ShowContactHistoryService); - return 0; -} - -int DestroyServices() -{ - DestroyServiceFunction(hShowHistory); - return 0; -} - -int ShowContactHistoryService(WPARAM wParam, LPARAM lParam) -{ - Log("%s", "Entering function " __FUNCTION__); - HWND historyDlg; - HWND parent = NULL; - historyDlg = WindowList_Find(hOpenWindowsList, (HANDLE) wParam); - if (historyDlg == NULL) - { - int count = DBGetContactSettingDword(NULL, ModuleName, "EventsToLoad", 0); - int loadInBackground = DBGetContactSettingByte(NULL, ModuleName, "UseWorkerThread", 0); - HistoryWindowData *data; - data = (HistoryWindowData *) malloc(sizeof(HistoryWindowData)); - data->hContact = (HANDLE) wParam; - data->hIEView = NULL; - data->itemsPerPage = count; - data->index = 0; - data->count = 0; - data->loadMethod = (loadInBackground) ? LOAD_IN_BACKGROUND : 0; - historyDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_HISTORY), parent, HistoryDlgProc); - SetWindowLong(historyDlg, DWL_USER, (LONG) data); - - WindowList_Add(hOpenWindowsList, historyDlg, (HANDLE) wParam); - } - ShowWindow(historyDlg, SW_SHOW); - return 0; -} \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/services.h b/plugins/IEHistory/IEHistory/services.h deleted file mode 100644 index 40e680a04e..0000000000 --- a/plugins/IEHistory/IEHistory/services.h +++ /dev/null @@ -1,32 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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. -*/ - -#ifndef M_IEHISTORY_PROVIDED_SERVICES_H -#define M_IEHISTORY_PROVIDED_SERVICES_H - -#include "commonheaders.h" -#include "dlgHandlers.h" - -int InitServices(); -int DestroyServices(); - -int ShowContactHistoryService(WPARAM wParam, LPARAM lParam); - -#endif //M_IEHISTORY_PROVIDED_SERVICES_H \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/stdafx.cpp b/plugins/IEHistory/IEHistory/stdafx.cpp deleted file mode 100644 index 2731c2b8c3..0000000000 --- a/plugins/IEHistory/IEHistory/stdafx.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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" - -// TODO: reference any additional headers you need in STDAFX.H -// and not in this file diff --git a/plugins/IEHistory/IEHistory/stdafx.h b/plugins/IEHistory/IEHistory/stdafx.h deleted file mode 100644 index fe90144550..0000000000 --- a/plugins/IEHistory/IEHistory/stdafx.h +++ /dev/null @@ -1,47 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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. -*/ - -#pragma once - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers -// Windows Header Files: -#include - - - -// TODO: reference additional headers your program requires here diff --git a/plugins/IEHistory/IEHistory/utils.cpp b/plugins/IEHistory/IEHistory/utils.cpp deleted file mode 100644 index 91577e698f..0000000000 --- a/plugins/IEHistory/IEHistory/utils.cpp +++ /dev/null @@ -1,330 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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 "commonheaders.h" - -int LogInit() -{ -#ifdef _DEBUG - FILE *fout = fopen("IEHistory.log", "wt"); - fclose(fout); -#endif - return 0; -} - -int Log(char *format, ...) -{ -#ifdef _DEBUG - char str[4096]; - va_list vararg; - int tBytes; - FILE *fout = fopen("IEHistory.log", "at"); - if (!fout) - { -// MessageBox(0, "can't open file", NULL, MB_OK); - } - - va_start(vararg, format); - - tBytes = _vsnprintf(str, sizeof(str), format, vararg); - if (tBytes > 0) - { - str[tBytes] = 0; - } - - va_end(vararg); - if (str[strlen(str) - 1] != '\n') - { - strcat(str, "\n"); - } - fputs(str, fout); - fclose(fout); -#endif - return 0; - -} - - - -int Info(char *title, char *format, ...) -{ - char str[4096]; - va_list vararg; - int tBytes; - va_start(vararg, format); - tBytes = _snprintf(str, sizeof(str), format, vararg); - if (tBytes > 0) - { - str[tBytes] = 0; - } - va_end(vararg); - return MessageBoxA(0, str, title, MB_OK | MB_ICONINFORMATION); -} - -/* -returns the name of a contact -*/ - -#pragma warning (disable: 4312) -TCHAR *GetContactName(HANDLE hContact, char *szProto) -{ - CONTACTINFO ctInfo; - int ret; - - ZeroMemory((void *) &ctInfo, sizeof(ctInfo)); - ctInfo.cbSize = sizeof(ctInfo); - ctInfo.szProto = szProto; - ctInfo.dwFlag = CNF_DISPLAY; -#ifdef _UNICODE - ctInfo.dwFlag += CNF_UNICODE; -#endif - ctInfo.hContact = hContact; - //_debug_message("retrieving contact name for %d", hContact); - ret = CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) &ctInfo); - //_debug_message(" contact name %s", ctInfo.pszVal); - TCHAR *buffer; - if (!ret) - { - buffer = _tcsdup(ctInfo.pszVal); - } - else{ - return NULL; - } - MirandaFree(ctInfo.pszVal); - if (!ret) - { - return buffer; - } - else{ - return NULL; - } - return buffer; -} -#pragma warning (default: 4312) - -/* -Moves a control with regard to certain anchors (like delphi, c#, ...) -Somebody please improve on this code ... -*/ - -void ScreenToClient(HWND hWnd, LPRECT rect) -{ - POINT pt; - int cx = rect->right - rect->left; - int cy = rect->bottom - rect->top; - pt.x = rect->left; - pt.y = rect->top; - ScreenToClient(hWnd, &pt); - rect->left = pt.x; - rect->top = pt.y; - rect->right = pt.x + cx; - rect->bottom = pt.y + cy; -} - -void AnchorMoveWindow(HWND window, const WINDOWPOS *parentPos, int anchors) -{ - RECT rParent; - RECT rChild; - - if (parentPos->flags & SWP_NOSIZE) - { - return; - } - GetWindowRect(parentPos->hwnd, &rParent); - rChild = AnchorCalcPos(window, &rParent, parentPos, anchors); - MoveWindow(window, rChild.left, rChild.top, rChild.right - rChild.left, rChild.bottom - rChild.top, FALSE); -} - -RECT AnchorCalcPos(HWND window, const RECT *rParent, const WINDOWPOS *parentPos, int anchors) -{ - RECT rChild; - RECT rTmp; - - GetWindowRect(window, &rChild); - ScreenToClient(parentPos->hwnd, &rChild); - - int cx = rParent->right - rParent->left; - int cy = rParent->bottom - rParent->top; - if ((cx == parentPos->cx) && (cy == parentPos->cy)) - { - return rChild; - } - if (parentPos->flags & SWP_NOSIZE) - { - return rChild; - } - - rTmp.left = parentPos->x - rParent->left; - rTmp.right = (parentPos->x + parentPos->cx) - rParent->right; - rTmp.bottom = (parentPos->y + parentPos->cy) - rParent->bottom; - rTmp.top = parentPos->y - rParent->top; - - cx = (rTmp.left) ? -rTmp.left : rTmp.right; - cy = (rTmp.top) ? -rTmp.top : rTmp.bottom; - - rChild.right += cx; - rChild.bottom += cy; - //expanded the window accordingly, now we need to enforce the anchors - if ((anchors & ANCHOR_LEFT) && (!(anchors & ANCHOR_RIGHT))) - { - rChild.right -= cx; - } - if ((anchors & ANCHOR_TOP) && (!(anchors & ANCHOR_BOTTOM))) - { - rChild.bottom -= cy; - } - if ((anchors & ANCHOR_RIGHT) && (!(anchors & ANCHOR_LEFT))) - { - rChild.left += cx; - } - if ((anchors & ANCHOR_BOTTOM) && (!(anchors & ANCHOR_TOP))) - { - rChild.top += cy; - } - return rChild; -} - -#pragma warning (disable: 4244) -void UnixTimeToFileTime(time_t t, LPFILETIME pft) -{ - // Note that LONGLONG is a 64-bit value - LONGLONG ll; - - ll = Int32x32To64(t, 10000000) + 116444736000000000; - pft->dwLowDateTime = (DWORD)ll; - pft->dwHighDateTime = ll >> 32; -} -#pragma warning (default: 4244) - -void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst) -{ - FILETIME ft; - SYSTEMTIME st; - UnixTimeToFileTime(t, &ft); - FileTimeToSystemTime(&ft, &st); - SystemTimeToTzSpecificLocalTime(NULL, &st, pst); -} - -HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int index, int direction) -{ - int i; - HANDLE hEvent = hLastFirstEvent; - const char *service; - if (direction == DIRECTION_BACK) - { - service = MS_DB_EVENT_FINDPREV; - } - else{ - service = MS_DB_EVENT_FINDNEXT; - } - - for (i = 0; i < index; i++) - { - hEvent = (HANDLE) CallService(service, (WPARAM) hEvent, 0); - } - return hEvent; -} - -SearchResult SearchHistory(HANDLE hContact, HANDLE hFirstEvent, void *searchData, int direction, int type) -{ - if (hFirstEvent == NULL) - { - const char *service = (direction == DIRECTION_BACK) ? MS_DB_EVENT_FINDLAST : MS_DB_EVENT_FINDFIRST; - hFirstEvent = (HANDLE) CallService(service, (WPARAM) hContact, 0); - } - int index = 0; - HANDLE hEvent = hFirstEvent; - void *buffer = NULL; - TCHAR *search; - wchar_t TEMP[2048]; - bool found = false; - int oldSize, newSize; - oldSize = newSize = 0; - - DBEVENTINFO dbEvent = {0}; - dbEvent.cbSize = sizeof(dbEvent); - - while ((!found) && (hEvent)) - { - newSize = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM) hEvent, 0); - if (newSize > oldSize) - { - buffer = (TCHAR *) realloc(buffer, newSize); - oldSize = newSize; - } - dbEvent.pBlob = (PBYTE) buffer; - dbEvent.cbBlob = newSize; - if (CallService(MS_DB_EVENT_GET, (WPARAM) hEvent, (LPARAM) &dbEvent) == 0) //successful - { - switch (type) - { - case SEARCH_TEXT: - { -#ifdef _UNICODE - unsigned int size = strlen((char *) dbEvent.pBlob) + 1; - if (size < dbEvent.cbBlob) - { - search = (wchar_t *) &dbEvent.pBlob[size]; - } - else{ - MultiByteToWideChar(CP_ACP, 0, (char *) buffer, size, TEMP, 2048); - search = TEMP; - } -#else - search = (char *) buffer; -#endif - TCHAR *data = (TCHAR *) searchData; - TCHAR *tmp = _tcsstr(search, data); - if (tmp) - { - found = true; - } - break; - } - case SEARCH_TIME: - { - SYSTEMTIME time; - TimeSearchData *data = (TimeSearchData *) searchData; - UnixTimeToSystemTime((time_t) dbEvent.timestamp, &time); - found = ((data->flags & TSDF_DATE_SET) || (data->flags & TSDF_TIME_SET)) ? true : false; - if (data->flags & TSDF_DATE_SET) - { - found = ((time.wYear == data->time.wYear) && (time.wMonth == data->time.wMonth) && (time.wDay == data->time.wDay)); - } - if (data->flags & TSDF_TIME_SET) - { - found = found & ((time.wHour == data->time.wHour) && (time.wMinute == data->time.wMinute)); - } - break; - } - } - } - if (!found) - { - hEvent = GetNeededEvent(hEvent, 1, direction); - index++; - } - } - free(buffer); - SearchResult sr; - sr.index = index; - sr.hEvent = hEvent; - return sr; -} \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/utils.h b/plugins/IEHistory/IEHistory/utils.h deleted file mode 100644 index c423b4ede7..0000000000 --- a/plugins/IEHistory/IEHistory/utils.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -IEView history viewer plugin for Miranda IM - -Copyright © 2005-2006 Cristian Libotean - -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. -*/ - -#ifndef M_IEHISTORY_UTILS_H -#define M_IEHISTORY_UTILS_H - -#include "stdafx.h" -#include "time.h" - -#define ANCHOR_LEFT 0x000001 -#define ANCHOR_RIGHT 0x000002 -#define ANCHOR_TOP 0x000004 -#define ANCHOR_BOTTOM 0x000008 -#define ANCHOR_ALL ANCHOR_LEFT | ANCHOR_RIGHT | ANCHOR_TOP | ANCHOR_BOTTOM - -#define DIRECTION_BACK 0x000001 -#define DIRECTION_FORWARD 0x000002 - -#define SEARCH_TEXT 0x000001 -#define SEARCH_TIME 0x000002 - -/* -#define SIDE_LEFT 0x000001 -#define SIDE_TOP 0x000002 -#define SIDE_RIGHT 0x000004 -#define SIDE_BOTTOM 0x000008 -#define SIDE_TOPLEFT SIDE_TOP | SIDE_LEFT -#define SIDE_TOPRIGHT SIDE_TOP | SIDE_RIGHT -#define SIDE_BOTTOMLEFT SIDE_BOTTOM | SIDE_LEFT -#define SIDE_BOTTOMRIGHT SIDE_BOTTOM | SIDE_RIGHT -*/ - -#define TSDF_TIME_SET 0x00000001 -#define TSDF_DATE_SET 0x00000002 - -struct TimeSearchData{ - int flags; - SYSTEMTIME time; -}; - -struct SearchResult{ - long index; - HANDLE hEvent; -}; - -//#ifdef _DEBUG -int LogInit(); -int Log(char *format, ...); -//#endif - -void ScreenToClient(HWND hWnd, LPRECT rect); - -int Info(char *title, char *format, ...); -TCHAR *GetContactName(HANDLE hContact, char *szProto); -void AnchorMoveWindow(HWND window, const WINDOWPOS *parentPos, int anchors); -RECT AnchorCalcPos(HWND window, const RECT *rParent, const WINDOWPOS *parentPos, int anchors); - -void UnixTimeToFileTime(time_t t, LPFILETIME pft); -void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst); - -HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int index, int direction); -SearchResult SearchHistory(HANDLE hContact, HANDLE hFirstEvent, void *searchData, int direction, int type); - -extern void *(*MirandaMalloc)(size_t size); -extern void *(*MirandaRealloc)(void *data, size_t newSize); -extern void (*MirandaFree) (void *data); - -/* -static __inline int mir_snprintf(char *buffer, size_t count, const char* fmt, ...) { - va_list va; - int len; - - va_start(va, fmt); - len = _vsnprintf(buffer, count-1, fmt, va); - va_end(va); - buffer[count-1] = 0; - return len; -} -*/ -#endif \ No newline at end of file diff --git a/plugins/IEHistory/IEHistory/version.aps b/plugins/IEHistory/IEHistory/version.aps deleted file mode 100644 index 00ae066309..0000000000 Binary files a/plugins/IEHistory/IEHistory/version.aps and /dev/null differ diff --git a/plugins/IEHistory/IEHistory/version.h b/plugins/IEHistory/IEHistory/version.h deleted file mode 100644 index 204fd10561..0000000000 --- a/plugins/IEHistory/IEHistory/version.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -Bonsai plugin for Miranda IM - -Copyright © 2006 Cristian Libotean - -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. -*/ - -#ifndef M_IEHISTORY_VERSION_H -#define M_IEHISTORY_VERSION_H - -#define __MAJOR_VERSION 0 -#define __MINOR_VERSION 0 -#define __RELEASE_NUM 1 -#define __BUILD_NUM 4 - -#define VERSION PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM) - -#define __PLUGINVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM -#define __PLUGINVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM -#define __STRINGIFY_(x) #x -#define __STRINGIFY(x) __STRINGIFY_(x) -#define __VERSION_STRING __STRINGIFY(__PLUGINVERSION_STRING_DOTS) - -#ifdef _UNICODE -#define __DESC "IEView history viewer for unicode cores." -#else -#define __DESC "IEView history viewer for non unicode cores." -#endif -#define __AUTHOR "Cristian Libotean" -#define __AUTHOREMAIL "eblis102@yahoo.com" -#define __COPYRIGHT "© 2006 Cristian Libotean" -#define __AUTHORWEB "http://www.miranda-im.org/" - -#ifdef _UNICODE -#define __PLUGIN_DISPLAY_NAME "IEView History Viewer (Unicode)" -#else -#define __PLUGIN_DISPLAY_NAME "IEView History Viewer" -#endif - -#endif //M_IEHISTORY_VERSION_H diff --git a/plugins/IEHistory/IEHistory/version.rc b/plugins/IEHistory/IEHistory/version.rc deleted file mode 100644 index 0bd4ea67f4..0000000000 --- a/plugins/IEHistory/IEHistory/version.rc +++ /dev/null @@ -1,100 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" -#include "version.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -#ifdef _WIN32 -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource1.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION __PLUGINVERSION_STRING - PRODUCTVERSION __PLUGINVERSION_STRING - FILEFLAGSMASK 0x17L -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Author", __AUTHOR - VALUE "FileDescription", __DESC - VALUE "FileVersion", __VERSION_STRING - VALUE "InternalName", __PLUGIN_DISPLAY_NAME - VALUE "LegalCopyright", __COPYRIGHT - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END - -#endif // English (U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/plugins/IEHistory/files_release.txt b/plugins/IEHistory/files_release.txt deleted file mode 100644 index 65a28fcca2..0000000000 --- a/plugins/IEHistory/files_release.txt +++ /dev/null @@ -1,2 +0,0 @@ -IEHistory\Release\IEHistory.dll -IEHistory\Release UNICODE\IEHistoryW.dll diff --git a/plugins/IEHistory/files_source.txt b/plugins/IEHistory/files_source.txt deleted file mode 100644 index f861ea5a25..0000000000 --- a/plugins/IEHistory/files_source.txt +++ /dev/null @@ -1,4 +0,0 @@ -IEHistory\res\*.* -IEHistory\*.* -docs\*.* -*.* \ No newline at end of file diff --git a/plugins/IEHistory/history.ico b/plugins/IEHistory/history.ico deleted file mode 100644 index eb627fa6b0..0000000000 Binary files a/plugins/IEHistory/history.ico and /dev/null differ diff --git a/plugins/IEHistory/pack source.bat b/plugins/IEHistory/pack source.bat deleted file mode 100644 index 2efcf2508e..0000000000 --- a/plugins/IEHistory/pack source.bat +++ /dev/null @@ -1,8 +0,0 @@ -for /F "tokens=5-9* delims=. " %%i in (docs\IEHistory_readme.txt) do (call :Pack %%i %%j %%k %%l; exit) - -:Pack -d:\usr\PowerArchiver\pacl\pacomp.exe -p -a -c2 "IEHistory src %1.%2.%3.%4.zip" @files_source.txt -x*.zip -x*.ncb -x*.user -exit - -error: -echo "Error packing IEHistory" diff --git a/plugins/IEHistory/pack symbols.bat b/plugins/IEHistory/pack symbols.bat deleted file mode 100644 index d6f50920b8..0000000000 --- a/plugins/IEHistory/pack symbols.bat +++ /dev/null @@ -1,8 +0,0 @@ -@echo off -if NOT EXIST "symbols\%1 - %3" ( - mkdir "symbols\%1 - %3" -) -xcopy "%2\Release\*.pdb" "symbols\%1 - %3\*" /EXCLUDE:symbols_exclude.txt /Y - -d:\usr\PowerArchiver\pacl\pacomp.exe -p -a -r -c2 "symbols - %1.zip" "symbols\*.*" -rmdir "symbols\" /Q /S \ No newline at end of file diff --git a/plugins/IEHistory/pack.bat b/plugins/IEHistory/pack.bat deleted file mode 100644 index f14ab0ea53..0000000000 --- a/plugins/IEHistory/pack.bat +++ /dev/null @@ -1,10 +0,0 @@ -for /F "tokens=5-9* delims=. " %%i in (docs\IEHistory_readme.txt) do (call :Pack %%i %%j %%k %%l; exit) - -:Pack -D:\usr\PowerArchiver\pacl\pacomp.exe -a -c2 "IEHistory %1.%2.%3.%4.zip" @files_release.txt -D:\usr\PowerArchiver\pacl\pacomp.exe -p -a -c2 "IEHistory %1.%2.%3.%4.zip" docs\*.* *.caca -call "pack symbols.bat" IEHistory IEHistory %1.%2.%3.%4 -exit - -error: -echo "Error packing IEHistory" \ No newline at end of file diff --git a/plugins/IEHistory/res/IEHistory.rc b/plugins/IEHistory/res/IEHistory.rc new file mode 100644 index 0000000000..91354d63a3 --- /dev/null +++ b/plugins/IEHistory/res/IEHistory.rc @@ -0,0 +1,162 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_HISTORY DIALOGEX 0, 0, 416, 313 +STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_APPWINDOW +CAPTION "Dialog" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + PUSHBUTTON "Close",IDC_CLOSE,362,283,50,14 + CONTROL "",IDC_IEVIEW_PLACEHOLDER,"Static",SS_BLACKFRAME,4,4,408,275,WS_EX_TRANSPARENT + PUSHBUTTON "&Prev",IDC_PREV,4,283,50,14 + PUSHBUTTON "&Next",IDC_NEXT,58,283,50,14 + PUSHBUTTON "&Search",IDC_SEARCH,310,283,50,14 +END + +IDD_OPT_HISTORY DIALOGEX 0, 0, 252, 119 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CONTROL | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Dialog" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Number of events to load",IDC_EVENTSNO_GROUPBOX,7,7,238,68 + CONTROL "Load all events",IDC_LOAD_ALL,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,22,224,10 + CONTROL "Load only ",IDC_LOAD_NUMBER,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,15,35,79,10 + EDITTEXT IDC_EVENTS_COUNT,96,33,40,14,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "events per page.",IDC_LOAD_NUMBER_STATIC,143,36,96,8 + CONTROL "Show last page first",IDC_SHOW_LAST_FIRST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,49,214,10 + GROUPBOX "Other options",IDC_MISC_GROUPBOX,7,79,238,33 + CONTROL "Load items in background",IDC_LOAD_BACKGROUND,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,15,63,223,10 + CONTROL "RTL is default text direction.",IDC_ENABLE_RTL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,15,94,221,10 +END + +IDD_SEARCH DIALOGEX 0, 0, 210, 82 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Search" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + EDITTEXT IDC_SEARCH_TEXT,39,30,155,15,ES_AUTOHSCROLL + DEFPUSHBUTTON "&Find next",IDC_FIND_NEXT,99,64,50,14 + PUSHBUTTON "Cancel",IDCANCEL,153,64,50,14 + CONTROL "",IDC_TABS,"SysTabControl32",0x0,7,7,196,48 + CONTROL "Text :",IDC_SEARCH_TEXT_STATIC,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,14,33,24,8,WS_EX_TRANSPARENT + GROUPBOX "Direction",IDC_DIRECTION_GROUPBOX,7,57,88,21 + CONTROL "Up",IDC_DIRECTION_UP,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,9,65,34,10 + CONTROL "Down",IDC_DIRECTION_DOWN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,47,65,45,10 + CONTROL "",IDC_SEARCH_DATE,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_SHOWNONE | NOT WS_VISIBLE | WS_TABSTOP,111,30,83,15 + CONTROL "",IDC_SEARCH_TIME,"SysDateTimePick32",DTS_RIGHTALIGN | DTS_UPDOWN | DTS_SHOWNONE | NOT WS_VISIBLE | WS_TABSTOP | 0x8,39,30,69,15 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_HISTORY, DIALOG + BEGIN + LEFTMARGIN, 4 + RIGHTMARGIN, 412 + TOPMARGIN, 4 + BOTTOMMARGIN, 309 + HORZGUIDE, 283 + END + + IDD_OPT_HISTORY, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 245 + VERTGUIDE, 15 + TOPMARGIN, 7 + BOTTOMMARGIN, 112 + END + + IDD_SEARCH, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 203 + TOPMARGIN, 7 + BOTTOMMARGIN, 78 + HORZGUIDE, 75 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_HISTORYICON ICON "history.ico" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/IEHistory/res/history (old).ico b/plugins/IEHistory/res/history (old).ico new file mode 100644 index 0000000000..eb627fa6b0 Binary files /dev/null and b/plugins/IEHistory/res/history (old).ico differ diff --git a/plugins/IEHistory/res/history.ico b/plugins/IEHistory/res/history.ico new file mode 100644 index 0000000000..b85c00bd5e Binary files /dev/null and b/plugins/IEHistory/res/history.ico differ diff --git a/plugins/IEHistory/res/version.rc b/plugins/IEHistory/res/version.rc new file mode 100644 index 0000000000..0bd4ea67f4 --- /dev/null +++ b/plugins/IEHistory/res/version.rc @@ -0,0 +1,100 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" +#include "version.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource1.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION __PLUGINVERSION_STRING + PRODUCTVERSION __PLUGINVERSION_STRING + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Author", __AUTHOR + VALUE "FileDescription", __DESC + VALUE "FileVersion", __VERSION_STRING + VALUE "InternalName", __PLUGIN_DISPLAY_NAME + VALUE "LegalCopyright", __COPYRIGHT + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/IEHistory/src/IEHistory.cpp b/plugins/IEHistory/src/IEHistory.cpp new file mode 100644 index 0000000000..33e892992f --- /dev/null +++ b/plugins/IEHistory/src/IEHistory.cpp @@ -0,0 +1,131 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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 "commonheaders.h" +#include "services.h" + +char ModuleName[] = "IEHistory"; +HICON hIcon; +HINSTANCE hInstance; +HANDLE hOpenWindowsList = NULL; + +PLUGINLINK *pluginLink; + +HMODULE hUxTheme = 0; +BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD) = NULL; + +#ifdef _UNICODE +#define IEHISTORY_PLUGININFO_SUFFIX " (Unicode)" +#else +#define IEHISTORY_PLUGININFO_SUFFIX "" +#endif + +PLUGININFOEX pluginInfo = { + sizeof(PLUGININFOEX), + __PLUGIN_DISPLAY_NAME, + VERSION, + __DESC, + __AUTHOR, + __AUTHOREMAIL, + __COPYRIGHT, + __AUTHORWEB, + UNICODE_AWARE, + DEFMOD_UIHISTORY, +#ifdef _UNICODE + {0x2f093b88, 0xf389, 0x44f1, {0x9e, 0x2a, 0x37, 0xc2, 0x91, 0x94, 0x20, 0x3a}} //{2f093b88-f389-44f1-9e2a-37c29194203a} +#else + {0x2f997250, 0xbc2f, 0x46f0, {0xa3, 0x3e, 0x65, 0xf0, 0x62, 0x83, 0xbe, 0x5d}} //{2f997250-bc2f-46f0-a33e-65f06283be5d} +#endif +}; + +OLD_MIRANDAPLUGININFO_SUPPORT; + +extern "C" __declspec(dllexport) PLUGININFOEX *MirandaPluginInfoEx(DWORD mirandaVersion) +{ + Log("%s", "Entering function " __FUNCTION__); + Log("%s", "Leaving function " __FUNCTION__); + return &pluginInfo; +} + +static const MUUID interfaces[] = {MIID_UIHISTORY, MIID_LAST}; + +extern "C" __declspec(dllexport) const MUUID *MirandaPluginInterfaces() +{ + return interfaces; +} + +#include + +extern "C" int __declspec(dllexport) Load(PLUGINLINK *link) +{ + INITCOMMONCONTROLSEX icex; + + icex.dwSize = sizeof(icex); + icex.dwICC = ICC_DATE_CLASSES; + + InitCommonControlsEx(&icex); + + if((hUxTheme = LoadLibraryA("uxtheme.dll")) != 0) + { + MyEnableThemeDialogTexture = (BOOL (WINAPI *)(HANDLE, DWORD))GetProcAddress(hUxTheme, "EnableThemeDialogTexture"); + } + + Log("%s", "Entering function " __FUNCTION__); + pluginLink = link; + //all initialization here + hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_HISTORYICON)); + InitializeMirandaMemFunctions(); + + Log("%s", "Creating service functions ..."); + InitServices(); + + Log("%s", "Hooking events ..."); + HookEvents(); + Log("%s", "Leaving function " __FUNCTION__); + return 0; +} + +extern "C" int __declspec(dllexport) Unload() +{ + Log("%s", "Entering function " __FUNCTION__); + Log("%s", "Unhooking events ..."); + + Log("%s", "Destroying service functions ..."); + DestroyServices(); + + Log("%s", "Closing all open windows ..."); + WindowList_Broadcast(hOpenWindowsList, WM_CLOSE, 0, 0); + + Log("%s", "Leaving function " __FUNCTION__); + return 0; +} + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + hInstance = hinstDLL; + if (fdwReason == DLL_PROCESS_ATTACH) + { + DisableThreadLibraryCalls(hinstDLL); + LogInit(); + } + return TRUE; +} diff --git a/plugins/IEHistory/src/commonheaders.h b/plugins/IEHistory/src/commonheaders.h new file mode 100644 index 0000000000..e687a27f02 --- /dev/null +++ b/plugins/IEHistory/src/commonheaders.h @@ -0,0 +1,84 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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. +*/ + +#ifndef M_COMMON_HEADERS_H +#define M_COMMON_HEADERS_H + + +#define EVENTTYPE_STATUS 25368 //tabsrmm status events + +#include "stdafx.h" +#include +#include +#include +#include + +#include "resource.h" +#include "version.h" + +#include "utils.h" +#include "mirandaMem.h" +#include "events.h" +#include "dlgHandlers.h" + +#include "../../../include/newpluginapi.h" +#include "../../../include/m_database.h" +#include "../../../include/m_utils.h" +#include "../../../include/m_system.h" +#include "../../../include/m_skin.h" +#include "../../../include/m_options.h" +#include "../../../include/m_clist.h" +#include "../../../include/m_langpack.h" +#include "../../../include/m_history.h" +#include "../../../include/m_contacts.h" +//#include "../../../include/m_utils.h" +#include "../../../include/m_popup.h" +#include "../../../include/m_ieview.h" +#include "../../../include/m_updater.h" + + +extern HICON hIcon; //history icon +extern char ModuleName[]; +extern HINSTANCE hInstance; //dll instance +extern HANDLE hOpenWindowsList; + +extern PLUGININFOEX pluginInfo; + +extern BOOL (WINAPI *MyEnableThemeDialogTexture)(HANDLE, DWORD); + +#define OLD_MIRANDAPLUGININFO_SUPPORT PLUGININFO oldPluginInfo = { \ + sizeof(PLUGININFO), \ + pluginInfo.shortName, \ + pluginInfo.version, \ + pluginInfo.description, \ + pluginInfo.author, \ + pluginInfo.authorEmail, \ + pluginInfo.copyright, \ + pluginInfo.homepage, \ + pluginInfo.flags, \ + pluginInfo.replacesDefaultModule \ +}; \ +\ +extern "C" __declspec(dllexport) PLUGININFO *MirandaPluginInfo(DWORD mirandaVersion) \ +{ \ + return &oldPluginInfo; \ +} + +#endif \ No newline at end of file diff --git a/plugins/IEHistory/src/dlgHandlers.cpp b/plugins/IEHistory/src/dlgHandlers.cpp new file mode 100644 index 0000000000..a9d4734abe --- /dev/null +++ b/plugins/IEHistory/src/dlgHandlers.cpp @@ -0,0 +1,798 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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 "dlgHandlers.h" +#include "math.h" +#include + +#define GAP_SIZE 2 +#define MIN_HISTORY_WIDTH 350 +#define MIN_HISTORY_HEIGHT 100 + +struct WorkerThreadData{ + HWND hWnd; + HistoryWindowData *data; + IEVIEWEVENT ieEvent; +}; + +int LoadName(HWND hWnd); +int CalcIEViewPos(IEVIEWWINDOW *ieWnd, HWND hMainWindow); +int LoadIEView(HWND hWnd); +int MoveIEView(HWND hWnd); +int DestroyIEView(HWND hWnd); +int LoadEvents(HWND hWnd); +int LoadPage(HWND hWnd, HANDLE hFirstEvent, long index, long shiftCount, long readCount, int direction); +int LoadNext(HWND hWnd); +int LoadPrev(HWND hWnd); +int ScrollToBottom(HWND hWnd); + +void RefreshButtonStates(HWND hWnd); + +HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int index, int direction); + +int CalcIEViewPos(IEVIEWWINDOW *ieWnd, HWND hMainWindow) +{ + RECT rect; + GetWindowRect(GetDlgItem(hMainWindow, IDC_IEVIEW_PLACEHOLDER), &rect); + ScreenToClient(hMainWindow, &rect); + + ieWnd->x = rect.left + GAP_SIZE; + ieWnd->y = rect.top + GAP_SIZE; + ieWnd->cx = rect.right - rect.left - (2 * GAP_SIZE); + ieWnd->cy = rect.bottom - rect.top - (2 * GAP_SIZE); + return 0; +} + +int LoadName(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + HANDLE hEvent = (HANDLE) CallService(MS_DB_EVENT_FINDFIRST, (WPARAM) data->hContact, 0); + DBEVENTINFO event = {0}; + event.cbSize = sizeof(event); + CallService(MS_DB_EVENT_GET, (WPARAM) hEvent, (LPARAM) &event); //to get the protocol + TCHAR *szOther = GetContactName(data->hContact, event.szModule); + TCHAR buffer[1024]; + _sntprintf(buffer, 1024, _T("%s: IEHistory"), szOther); + SetWindowText(hWnd, buffer); + free(szOther); + return 0; +} + +int LoadIEView(HWND hWnd) +{ + IEVIEWWINDOW ieWnd = {0}; + ieWnd.cbSize = sizeof(ieWnd); + ieWnd.iType = IEW_CREATE; + ieWnd.dwMode = IEWM_HISTORY; + ieWnd.dwFlags = 0; + ieWnd.parent = hWnd; + CalcIEViewPos(&ieWnd, hWnd); + + CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + data->hIEView = ieWnd.hwnd; + SetWindowPos(GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); + //ShowWindow(GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), SW_HIDE); + return 0; +} + +int MoveIeView(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + if (data) + { + IEVIEWWINDOW ieWnd = {0}; + ieWnd.cbSize = sizeof(ieWnd); + ieWnd.parent = hWnd; + ieWnd.hwnd = data->hIEView; + ieWnd.iType = IEW_SETPOS; + CalcIEViewPos(&ieWnd, hWnd); + CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); + } + return 0; +} + +int DestroyIEView(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + IEVIEWWINDOW ieWnd = {0}; + ieWnd.cbSize = sizeof(ieWnd); + ieWnd.parent = hWnd; + ieWnd.hwnd = data->hIEView; + ieWnd.iType = IEW_DESTROY; + CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); + return 0; +} + +void FillIEViewInfo(IEVIEWEVENTDATA *fillData, DBEVENTINFO dbInfo, PBYTE blob) +{ + switch (dbInfo.eventType) + { + case EVENTTYPE_MESSAGE: + fillData->iType = IEED_EVENT_MESSAGE; + break; + case EVENTTYPE_STATUS: + fillData->iType = IEED_EVENT_STATUSCHANGE; + break; + case EVENTTYPE_FILE: + fillData->iType = IEED_EVENT_FILE; + break; + case EVENTTYPE_URL: + fillData->iType = IEED_EVENT_URL; + break; + } + fillData->pszNick = ""; + fillData->bIsMe = (dbInfo.flags & DBEF_SENT); + fillData->dwFlags = (dbInfo.flags & DBEF_SENT) ? IEEDF_SENT : 0; + fillData->time = dbInfo.timestamp; + unsigned int len = strlen((char *) blob) + 1; + PBYTE pos; + + fillData->pszText = (char *) blob; +// fillData.pszText2 = (char *) blob; + if (len < dbInfo.cbBlob) + { + pos = blob + len; + fillData->pszTextW = (wchar_t *) pos; +// fillData->pszText2W = (wchar_t *) pos; + fillData->dwFlags |= IEEDF_UNICODE_TEXT; + } +} + +DWORD WINAPI WorkerThread(LPVOID lpvData) +{ + Log("%s", "Inside worker thread ..."); + WorkerThreadData *data = (WorkerThreadData *) lpvData; + EnableWindow(GetDlgItem(data->hWnd, IDC_CLOSE), FALSE); + const int LOAD_COUNT = 10; + int count = 0; + int target = data->ieEvent.count; + int cLoad = LOAD_COUNT; + int i; + IEVIEWEVENT ieEvent = {0}; + IEVIEWEVENTDATA ieData[LOAD_COUNT] = {0}; + PBYTE messages[LOAD_COUNT] = {0}; + HANDLE dbEvent = data->ieEvent.hDbEventFirst; + for (i = 0; i < LOAD_COUNT; i++) + { + ieData[i].cbSize = sizeof(IEVIEWEVENTDATA); //set the cbsize here, no need to do it every time + ieData[i].next = &ieData[i + 1]; //it's a vector, so v[i]'s next element is v[i + 1] + } + ieData[LOAD_COUNT - 1].next = NULL; + ieEvent = data->ieEvent; + ieEvent.iType = IEE_LOG_MEM_EVENTS; + ieEvent.eventData = ieData; + DBEVENTINFO dbInfo = {0}; + dbInfo.cbSize = sizeof(DBEVENTINFO); + PBYTE buffer = NULL; + int newSize, oldSize = 0; + while (count < target) + { + cLoad = (count + LOAD_COUNT > target) ? target - count : LOAD_COUNT; + ieEvent.count = -1; + + for (i = 0; i < cLoad; i++) + { + newSize = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM) dbEvent, 0); + if (newSize > oldSize) + { + buffer = (PBYTE) realloc(buffer, newSize); + dbInfo.pBlob = buffer; + oldSize = newSize; + } + messages[i] = (PBYTE) realloc(messages[i], newSize); + dbInfo.cbBlob = newSize; + if (!CallService(MS_DB_EVENT_GET, (WPARAM) dbEvent, (LPARAM) &dbInfo)) + { + memmove(messages[i], dbInfo.pBlob, newSize); + FillIEViewInfo(&ieData[i], dbInfo, messages[i]); + } + //FillIEViewEventData(&ieData[i], dbEvent); + dbEvent = (HANDLE) CallService(MS_DB_EVENT_FINDNEXT, (WPARAM) dbEvent, 0); + } + ieData[cLoad - 1].next = NULL; //cLoad < LOAD_COUNT will only happen once, at the end + CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent); + count += cLoad; + } + for (i = 0; i < LOAD_COUNT; i++) + { + free(messages[i]); + } + free(buffer); + EnableWindow(GetDlgItem(data->hWnd, IDC_CLOSE), TRUE); + free(data); + //RefreshButtonStates(data->hWnd); + Log("%s", "WorkerThread finished ... returning"); + return 0; +} + +int DoLoadEvents(HWND hWnd, HistoryWindowData *data, IEVIEWEVENT ieEvent) +{ + ieEvent.iType = IEE_CLEAR_LOG; + CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent); + if (data->loadMethod == LOAD_IN_BACKGROUND) + { + WorkerThreadData *threadData = (WorkerThreadData *) malloc(sizeof(WorkerThreadData)); + threadData->data = data; + threadData->hWnd = hWnd; + threadData->ieEvent = ieEvent; + WorkerThread(threadData); + /* + DWORD threadID; + HANDLE thread = CreateThread(NULL, 0, WorkerThread, threadData, 0, &threadID); + if (!thread) + { + MessageBox(hWnd, TranslateT("An error occured while trying to create the worker thread (%m)"), TranslateT("Error"), MB_OK | MB_ICONERROR); + } */ + } + else{ + ieEvent.iType = IEE_LOG_DB_EVENTS; + CallService(MS_IEVIEW_EVENT, 0, (LPARAM) &ieEvent); + ScrollToBottom(hWnd); + + TCHAR buffer[256]; + _itot(data->index + 1, buffer, 10); + SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 0 | SBT_POPOUT, (LPARAM) buffer); + _itot(data->index + ieEvent.count, buffer, 10); + SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 1 | SBT_POPOUT, (LPARAM) buffer); + _itot(data->count, buffer, 10); + SendDlgItemMessage(hWnd, IDC_STATUSBAR, SB_SETTEXT, 3 | SBT_POPOUT, (LPARAM) buffer); + RefreshButtonStates(hWnd); + } + return 0; +} + +int LoadEvents(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + int count = CallService(MS_DB_EVENT_GETCOUNT, (WPARAM) data->hContact, 0); + int bLastFirst = DBGetContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", 0); + int bRTL = DBGetContactSettingByte(NULL, ModuleName, "EnableRTL", 0); + bRTL = DBGetContactSettingByte(data->hContact, "Tab_SRMsg", "RTL", bRTL); + data->bEnableRTL = bRTL; + data->count = count; + if (data->itemsPerPage > count) + { + data->itemsPerPage = count; + } + IEVIEWEVENT ieEvent = {0}; + ieEvent.cbSize = sizeof(ieEvent); + ieEvent.hwnd = data->hIEView; + ieEvent.hContact = data->hContact; + ieEvent.count = (data->itemsPerPage <= 0) ? count : data->itemsPerPage; + + HANDLE hFirstEvent = (HANDLE) CallService(MS_DB_EVENT_FINDFIRST, (WPARAM) data->hContact, 0); + int index = 0; + if ((data->itemsPerPage > 0) && (bLastFirst)) + { + index = data->count - data->itemsPerPage; + hFirstEvent = GetNeededEvent(hFirstEvent, index, DIRECTION_FORWARD); + } + data->index = index; + data->hLastFirstEvent = hFirstEvent; + ieEvent.hDbEventFirst = hFirstEvent; + if (data->bEnableRTL) + { + ieEvent.dwFlags |= IEEF_RTL; + } + DoLoadEvents(hWnd, data, ieEvent); + return 0; +} + +int LoadPage(HWND hWnd, HANDLE hFirstEvent, long index, long shiftCount, long readCount, int direction) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + int count = shiftCount; + int newIndex = index; + IEVIEWEVENT ieEvent = {0}; + ieEvent.cbSize = sizeof(ieEvent); + ieEvent.hwnd = data->hIEView; + ieEvent.hContact = data->hContact; + + if (direction == DIRECTION_BACK) + { + newIndex -= shiftCount; + if (newIndex < 0) + { + newIndex = 0; + count = index; + } + } + else{ + newIndex += shiftCount; + if (newIndex + readCount > data->count) + { + count = data->count - newIndex; + newIndex = data->count - readCount; + } + } + data->index = newIndex; + HANDLE hEvent = GetNeededEvent(hFirstEvent, count, direction); + data->hLastFirstEvent = hEvent; + ieEvent.hDbEventFirst = hEvent; + ieEvent.count = readCount; + if (data->bEnableRTL) + { + ieEvent.dwFlags |= IEEF_RTL; + } + DoLoadEvents(hWnd, data, ieEvent); + return 0; +} + +int LoadPrev(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + LoadPage(hWnd, data->hLastFirstEvent, data->index, data->itemsPerPage, data->itemsPerPage, DIRECTION_BACK); + int finish = data->index <= 0; + return finish; +} + +int LoadNext(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + LoadPage(hWnd, data->hLastFirstEvent, data->index, data->itemsPerPage, data->itemsPerPage, DIRECTION_FORWARD); + int finish = data->index + data->itemsPerPage >= data->count; + return finish; +} + +int ScrollToBottom(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + IEVIEWWINDOW ieWnd = {0}; + ieWnd.cbSize = sizeof(ieWnd); + ieWnd.iType = IEW_SCROLLBOTTOM; + ieWnd.hwnd = data->hIEView; + ieWnd.parent = hWnd; + CallService(MS_IEVIEW_WINDOW, 0, (LPARAM) &ieWnd); + return 0; +} + +void AddAnchorWindowToDeferList(HDWP &hdWnds, HWND window, RECT *rParent, WINDOWPOS *wndPos, int anchors) +{ + RECT rChild = AnchorCalcPos(window, rParent, wndPos, anchors); + hdWnds = DeferWindowPos(hdWnds, window, HWND_NOTOPMOST, rChild.left, rChild.top, rChild.right - rChild.left, rChild.bottom - rChild.top, SWP_NOZORDER); +} + +void RefreshButtonStates(HWND hWnd) +{ + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + int bPrev = data->index > 0; + int bNext = data->index + data->itemsPerPage < data->count; + EnableWindow(GetDlgItem(hWnd, IDC_PREV), bPrev); + EnableWindow(GetDlgItem(hWnd, IDC_NEXT), bNext); +} + + + +BOOL CALLBACK HistoryDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + Log("Inside WM_INITDIALOG ..."); + TranslateDialogDefault(hWnd); + SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM) hIcon); + //SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); + int bRTL = DBGetContactSettingByte(NULL, ModuleName, "EnableRTL", 0); + if (bRTL) + { + SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_RTLREADING); + } + //InitCommonControls(); + HWND hStatusBar = CreateWindow(STATUSCLASSNAME, //class + _T("-"), //title + WS_CHILD | WS_VISIBLE | SBARS_TOOLTIPS | SBARS_SIZEGRIP, //style + 0, 0, //x, y + 0, 0, //width, height + hWnd, //parent + (HMENU) IDC_STATUSBAR, //menu + hInstance, //instance + NULL); //lpParam + int x; + int widths[] = {x = 50, x += 50, x += 150, -1}; + int count = sizeof(widths) / sizeof(widths[0]); + SendMessage(hStatusBar, SB_SETPARTS, count, (LPARAM) widths); + //SendMessage(hStatusBar, SB_SETTIPTEXT, 1, (LPARAM) TranslateT("First event shown in page")); + //SendMessage(hStatusBar, SB_SETTIPTEXT, 2, (LPARAM) TranslateT("Last event shown in page")); + SendMessage(hStatusBar, SB_SETTEXT, 2 | SBT_POPOUT, (LPARAM) TranslateT("Out of a total of")); + return TRUE; + break; + } + case WM_SHOWWINDOW: + { + Log("Inside WM_SHOWWINDOW ..."); + LoadName(hWnd); + LoadIEView(hWnd); + LoadEvents(hWnd); + + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + bool bAll = (data->itemsPerPage <= 0) || (data->itemsPerPage >= data->count); + int bLastFirst = DBGetContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", 0); + if (!bLastFirst) + { + EnableWindow(GetDlgItem(hWnd, IDC_PREV), FALSE); + EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !bAll); + } + else{ + EnableWindow(GetDlgItem(hWnd, IDC_PREV), !bAll); + EnableWindow(GetDlgItem(hWnd, IDC_NEXT), FALSE); + } + //ShowWindow(GetDlgItem(hWnd, IDC_PAGE_NUMBER), !bAll); + EnableWindow(GetDlgItem(hWnd, IDC_SEARCH), !bAll); + + break; + } + case WM_DESTROY: + { + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + DestroyIEView(hWnd); + free(data); + WindowList_Remove(hOpenWindowsList, hWnd); + break; + } + case WM_CLOSE: + { + if (IsWindowEnabled(GetDlgItem(hWnd, IDC_CLOSE))) + { + DestroyWindow(hWnd); + } + else{ + MessageBox(hWnd, TranslateT("You can't close the window now, wait for all events to load."), TranslateT("Error"), MB_OK | MB_ICONERROR); + } + break; + } + case WM_WINDOWPOSCHANGING: + { + HDWP hdWnds = BeginDeferWindowPos(6); + RECT rParent; + HWND hStatusBar = GetDlgItem(hWnd, IDC_STATUSBAR); + WINDOWPOS *wndPos = (WINDOWPOS *) lParam; + GetWindowRect(hWnd, &rParent); + + //hdWnds = DeferWindowPos(hdWnds, hStatusBar, HWND_NOTOPMOST, wndPos->x, wndPos->y + wndPos->cy - statusHeight, statusWidth, statusHeight, SWP_NOZORDER); + SendMessage(hStatusBar, WM_SIZE, 0, 0); + if (wndPos->cx < MIN_HISTORY_WIDTH) + { + wndPos->cx = MIN_HISTORY_WIDTH; + } + if (wndPos->cy < MIN_HISTORY_HEIGHT) + { + wndPos->cy = MIN_HISTORY_HEIGHT; + } + //MoveWindow(hStatusBar, wndPos->x, wndPos->y + wndPos->cy - statusHeight - 2, statusWidth - 2, statusHeight, TRUE); + AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_STATUSBAR), &rParent, wndPos, ANCHOR_BOTTOM); + AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_CLOSE), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM); + AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_IEVIEW_PLACEHOLDER), &rParent, wndPos, ANCHOR_ALL); + AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PREV), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM); + AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_NEXT), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM); + //AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_PAGE_NUMBER), &rParent, wndPos, ANCHOR_LEFT | ANCHOR_BOTTOM); + AddAnchorWindowToDeferList(hdWnds, GetDlgItem(hWnd, IDC_SEARCH), &rParent, wndPos, ANCHOR_RIGHT | ANCHOR_BOTTOM); + + EndDeferWindowPos(hdWnds); + MoveIeView(hWnd); + break; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_CLOSE: + { + SendMessage(hWnd, WM_CLOSE, 0, 0); + break; + } + case IDC_PREV: + { + int finished = LoadPrev(hWnd); + //EnableWindow(GetDlgItem(hWnd, IDC_PREV), !finished); + //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), TRUE); + break; + } + case IDC_NEXT: + { + int finished = LoadNext(hWnd); + //EnableWindow(GetDlgItem(hWnd, IDC_NEXT), !finished); + //EnableWindow(GetDlgItem(hWnd, IDC_PREV), TRUE); + break; + } + case IDC_SEARCH: + { + HWND hSearch = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_SEARCH), hWnd, SearchDlgProc); + if (hSearch == NULL) + { + char buffer[1024]; + sprintf(buffer, "Error #%d", GetLastError()); + MessageBoxA(0, buffer, "Error", MB_OK); + } + HistoryWindowData *data = (HistoryWindowData *) GetWindowLong(hWnd, DWL_USER); + SearchWindowData *searchData = (SearchWindowData *) malloc(sizeof(SearchWindowData)); + searchData->hContact = data->hContact; + searchData->hHistoryWindow = hWnd; + searchData->hLastFoundEvent = NULL; + searchData->index = 0; + SetWindowLong(hSearch, DWL_USER, (LONG) searchData); + ShowWindow(hSearch, SW_SHOW); + //sprintf(buffer, "Error #%d", GetLastError()); + //MessageBoxA(0, buffer, "Error", MB_OK); + break; + } + } + break; + } + default: + { + break; + } + } + return 0; +} + +#include "prsht.h" //PSN_APPLY + +BOOL CALLBACK OptionsDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + TranslateDialogDefault(hWnd); + int count = DBGetContactSettingDword(NULL, ModuleName, "EventsToLoad", 0); + EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), count > 0); + EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), count > 0); + + CheckDlgButton(hWnd, IDC_LOAD_ALL, count <= 0); + CheckDlgButton(hWnd, IDC_LOAD_NUMBER, count > 0); + CheckDlgButton(hWnd, IDC_ENABLE_RTL, (BOOL) DBGetContactSettingByte(NULL, ModuleName, "EnableRTL", 0)); + CheckDlgButton(hWnd, IDC_SHOW_LAST_FIRST, (BOOL) DBGetContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", 0)); + CheckDlgButton(hWnd, IDC_LOAD_BACKGROUND, (BOOL) DBGetContactSettingByte(NULL, ModuleName, "UseWorkerThread", 0)); + TCHAR buffer[1024]; + _itot(count, buffer, 10); + SetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer); + + break; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_LOAD_ALL: + { + EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), FALSE); + EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), FALSE); + SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); + break; + } + case IDC_LOAD_NUMBER: + { + EnableWindow(GetDlgItem(hWnd, IDC_EVENTS_COUNT), TRUE); + EnableWindow(GetDlgItem(hWnd, IDC_SHOW_LAST_FIRST), TRUE); + SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); + break; + } + case IDC_ENABLE_RTL: + case IDC_SHOW_LAST_FIRST: + case IDC_EVENTS_COUNT: + case IDC_LOAD_BACKGROUND: + { + SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0); + break; + } + } + break; + } + case WM_NOTIFY: + { + switch(((LPNMHDR)lParam)->idFrom) + { + case 0: + { + switch (((LPNMHDR)lParam)->code) + { + case PSN_APPLY: + { + long count; + if (IsDlgButtonChecked(hWnd, IDC_LOAD_ALL)) + { + count = 0; + } + else{ + TCHAR buffer[1024]; + GetWindowText(GetDlgItem(hWnd, IDC_EVENTS_COUNT), buffer, sizeof(buffer)); + count = _tstol(buffer); + count = (count < 0) ? 0 : count; + } + DBWriteContactSettingByte(NULL, ModuleName, "ShowLastPageFirst", IsDlgButtonChecked(hWnd, IDC_SHOW_LAST_FIRST)); + DBWriteContactSettingByte(NULL, ModuleName, "EnableRTL", IsDlgButtonChecked(hWnd, IDC_ENABLE_RTL)); + DBWriteContactSettingByte(NULL, ModuleName, "UseWorkerThread", IsDlgButtonChecked(hWnd, IDC_LOAD_BACKGROUND)); + DBWriteContactSettingDword(NULL, ModuleName, "EventsToLoad", count); + + break; + } + } + break; + } + } + break; + } + default: + { + break; + } + } + return 0; +} + + +#include "commctrl.h" //tab control + +BOOL CALLBACK SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) +{ + switch (msg) + { + case WM_INITDIALOG: + { + if (MyEnableThemeDialogTexture) + { + MyEnableThemeDialogTexture((HWND) hWnd, ETDT_ENABLETAB); + } + TranslateDialogDefault(hWnd); + TCITEM tabItem = {0}; + tabItem.pszText = TranslateT("Text search"); + tabItem.mask = TCIF_TEXT; + //MessageBoxA(0, "Before TCM_INSERTITEM 1", "Error", MB_OK); + SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 0, (LPARAM) &tabItem); + tabItem.pszText = TranslateT("Time search"); + //MessageBoxA(0, "Before TCM_INSERTITEM 2", "Error", MB_OK); + SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_INSERTITEM, 1, (LPARAM) &tabItem); + //SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_SETFORMAT, 0, (LPARAM) "HH:mm"); + //MessageBoxA(0, "Before CheckDlgButton", "Error", MB_OK); + CheckDlgButton(hWnd, IDC_DIRECTION_DOWN, TRUE); + return TRUE; + break; + } + case WM_SHOWWINDOW: + { + SetFocus(GetDlgItem(hWnd, IDC_SEARCH_TEXT)); + break; + } + case WM_DESTROY: + { + SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); + free(data); + //DestroyWindow(hWnd); + break; + } + case WM_CLOSE: + { + DestroyWindow(hWnd); + break; + } + case WM_NOTIFY: + { + switch (((LPNMHDR) lParam)->idFrom) + { + case IDC_SEARCH_DATE: + case IDC_SEARCH_TIME: + { + SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); + data->hLastFoundEvent = NULL; //start from top if changes occur + break; + } + case IDC_TABS: + { + switch (((LPNMHDR) lParam)->code) + { + case TCN_SELCHANGE: + { + int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0); + ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_DATE), (tab == 1) ? SW_SHOW : SW_HIDE); + ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TIME), (tab == 1) ? SW_SHOW : SW_HIDE); + ShowWindow(GetDlgItem(hWnd, IDC_SEARCH_TEXT), (tab == 0) ? SW_SHOW : SW_HIDE); + SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT_STATIC), WM_SETTEXT, 0, (LPARAM) ((tab == 0) ? _T("Text :") : _T("Time :"))); + break; + } + } + break; + } + } + break; + } + case WM_COMMAND: + { + switch (LOWORD(wParam)) + { + case IDC_SEARCH_TEXT: + { + switch (HIWORD(wParam)) + { + case EN_CHANGE: + { + SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); + data->hLastFoundEvent = NULL; //start from top if changes occur + break; + } + } + break; + } + case IDCANCEL: + { + SendMessage(hWnd, WM_CLOSE, 0, 0); + break; + } + case IDC_FIND_NEXT: + { + SearchWindowData *data = (SearchWindowData *) GetWindowLong(hWnd, DWL_USER); + const HistoryWindowData *histData = (HistoryWindowData *) GetWindowLong(data->hHistoryWindow, DWL_USER); + int direction = IsDlgButtonChecked(hWnd, IDC_DIRECTION_UP) ? DIRECTION_BACK : DIRECTION_FORWARD; + int tab = SendMessage(GetDlgItem(hWnd, IDC_TABS), TCM_GETCURSEL, 0, 0); + int type = (tab == 0) ? SEARCH_TEXT : SEARCH_TIME; + SearchResult searchResult; + if (data->hLastFoundEvent == NULL) + { + data->index = (direction == DIRECTION_FORWARD) ? 0 : histData->count; + } + else{ + data->hLastFoundEvent = GetNeededEvent(data->hLastFoundEvent, 1, direction); + } + + if (type == SEARCH_TEXT) //text search + { + TCHAR text[2048]; //TODO buffer overrun + SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TEXT), WM_GETTEXT, 2048, (LPARAM) text); + searchResult = SearchHistory(data->hContact, data->hLastFoundEvent, text, direction, type); + } + else{//time search + TimeSearchData tsData = {0}; + SYSTEMTIME date = {0}, time = {0}; + int res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_DATE), DTM_GETSYSTEMTIME, 0, (LPARAM) &date); + tsData.flags = (res == GDT_VALID) ? TSDF_DATE_SET : 0; + res = SendMessage(GetDlgItem(hWnd, IDC_SEARCH_TIME), DTM_GETSYSTEMTIME, 0, (LPARAM) &time); + if (res == GDT_VALID) + { + tsData.flags |= TSDF_TIME_SET; + date.wHour = time.wHour; + date.wMinute = time.wMinute; + date.wSecond = time.wSecond; + date.wMilliseconds = time.wMilliseconds; + } + tsData.time = date; + searchResult = SearchHistory(data->hContact, data->hLastFoundEvent, &tsData, direction, type); + } + if (searchResult.hEvent) + { + //char buffer[1024]; + //sprintf(buffer, "Found it: index = %ld hEvent = %p", searchResult.index, searchResult.hEvent); + //MessageBox(0, buffer, "Yupppi", 0); + data->index += (direction == DIRECTION_BACK) ? -searchResult.index : searchResult.index; + LoadPage(data->hHistoryWindow, searchResult.hEvent, data->index, histData->itemsPerPage / 2, histData->itemsPerPage, DIRECTION_BACK); + } + else{ + MessageBox(0, TranslateT("Search finished. No more entries ..."), TranslateT("Information"), MB_OK | MB_ICONINFORMATION); + } + data->hLastFoundEvent = searchResult.hEvent; + break; + } + } + break; + } + } + return 0; +} \ No newline at end of file diff --git a/plugins/IEHistory/src/dlgHandlers.h b/plugins/IEHistory/src/dlgHandlers.h new file mode 100644 index 0000000000..343b208c6e --- /dev/null +++ b/plugins/IEHistory/src/dlgHandlers.h @@ -0,0 +1,50 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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. +*/ + +#ifndef M_HISTORY_DLG_HANDLERS_H +#define M_HISTORY_DLG_HANDLERS_H + +#include "commonheaders.h" + +#define LOAD_IN_BACKGROUND 0x00000001 + +struct HistoryWindowData{ + HANDLE hContact; + long count; + long index; + short loadMethod; + int itemsPerPage; + int bEnableRTL; + HWND hIEView; + HANDLE hLastFirstEvent; +}; + +struct SearchWindowData{ + long index; + HANDLE hContact; + HWND hHistoryWindow; + HANDLE hLastFoundEvent; +}; + +BOOL CALLBACK HistoryDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); +BOOL CALLBACK OptionsDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); +BOOL CALLBACK SearchDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); + +#endif //M_HISTORY_DLG_HANDLERS_H \ No newline at end of file diff --git a/plugins/IEHistory/src/events.cpp b/plugins/IEHistory/src/events.cpp new file mode 100644 index 0000000000..90b36b1b63 --- /dev/null +++ b/plugins/IEHistory/src/events.cpp @@ -0,0 +1,88 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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 "events.h" + +HANDLE hModulesLoaded; +HANDLE hOptionsInitialize; + +int HookEvents() +{ + hModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); + hOptionsInitialize = HookEvent(ME_OPT_INITIALISE, OnOptionsInitialize); + return 0; +} + +int UnhookEvents() +{ + UnhookEvent(hModulesLoaded); + UnhookEvent(hOptionsInitialize); + return 0; +} + +int OnModulesLoaded(WPARAM wParam, LPARAM lParam) +{ + Log("%s", "Entering function " __FUNCTION__); + CLISTMENUITEM menuItem = {0}; + menuItem.cbSize = sizeof(CLISTMENUITEM); + menuItem.flags = 0; + menuItem.pszContactOwner = NULL; //all contacts + menuItem.hIcon = hIcon; + + menuItem.position = 1000090000; + + menuItem.pszName = Translate("View contact's history"); + menuItem.pszService = MS_HISTORY_SHOWCONTACTHISTORY; + + Log("%s", "Adding first menu (view contact's history)"); + CallService(MS_CLIST_ADDCONTACTMENUITEM, 0, (WPARAM) &menuItem); + + menuItem.ptszName = TranslateT("View system history"); + //CallService(MS_CLIST_ADDMAINMENUITEM, 0, (WPARAM) &menuItem); + //PLUGININFO pInfo = pluginInfo; + //pInfo.shortName = "IEView History Viewer"; + Log("%s", "Adding plugin to updater list"); + CallService(MS_UPDATE_REGISTERFL, (WPARAM) 2553, (LPARAM) &pluginInfo); + Log("%s", "Creating the open windows list"); + hOpenWindowsList = (HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); + + Log("%s", "Leaving function " __FUNCTION__); + return 0; +} + +int OnOptionsInitialize(WPARAM wParam, LPARAM lParam) +{ + Log("%s", "Entering function " __FUNCTION__); + OPTIONSDIALOGPAGE odp = { 0 }; + + odp.cbSize = sizeof(odp); + odp.position = 100000000; + odp.hInstance = hInstance; + odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPT_HISTORY); + odp.pszTitle = Translate("IEHistory"); + odp.pszGroup = Translate("Message Sessions"); + odp.groupPosition = 910000000; + odp.flags=ODPF_BOLDGROUPS; + odp.pfnDlgProc = OptionsDlgProc; + CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp); + + return 0; + Log("%s", "Leaving function " __FUNCTION__); +} \ No newline at end of file diff --git a/plugins/IEHistory/src/events.h b/plugins/IEHistory/src/events.h new file mode 100644 index 0000000000..b19b14fced --- /dev/null +++ b/plugins/IEHistory/src/events.h @@ -0,0 +1,35 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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. +*/ + +#ifndef M_HISTORY_HOOKED_EVENTS_H +#define M_HISTORY_HOOKED_EVENTS_H + +#include "commonheaders.h" + +extern HANDLE hModulesLoaded; +extern HANDLE hOptionsInitialize; + +int HookEvents(); +int UnhookEvents(); + +int OnModulesLoaded(WPARAM wParam, LPARAM lParam); +int OnOptionsInitialize(WPARAM wParam, LPARAM lParam); + +#endif //M_HISTORY_HOOKED_EVENTS_H \ No newline at end of file diff --git a/plugins/IEHistory/src/mirandaMem.cpp b/plugins/IEHistory/src/mirandaMem.cpp new file mode 100644 index 0000000000..8ef20cb2e1 --- /dev/null +++ b/plugins/IEHistory/src/mirandaMem.cpp @@ -0,0 +1,42 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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 "mirandaMem.h" + +void *(*MirandaMalloc)(size_t size) = NULL; +void *(*MirandaRealloc)(void *data, size_t newSize) = NULL; +void (*MirandaFree) (void *data) = NULL; + +void InitializeMirandaMemFunctions() +{ + MM_INTERFACE mmi = {0}; + mmi.cbSize = sizeof(MM_INTERFACE); + CallService(MS_SYSTEM_GET_MMI, 0, (LPARAM) &mmi); + MirandaMalloc = mmi.mmi_malloc; + MirandaRealloc = mmi.mmi_realloc; + MirandaFree = mmi.mmi_free; +} + +void DestroyMirandaMemFunctions() +{ + MirandaMalloc = NULL; + MirandaRealloc = NULL; + MirandaFree = NULL; +} \ No newline at end of file diff --git a/plugins/IEHistory/src/mirandaMem.h b/plugins/IEHistory/src/mirandaMem.h new file mode 100644 index 0000000000..7428278000 --- /dev/null +++ b/plugins/IEHistory/src/mirandaMem.h @@ -0,0 +1,33 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005 Cristian Libotean + +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. +*/ + +#ifndef M_FOLDERS_MIRANDA_MEM_H +#define M_FOLDERS_MIRANDA_MEM_H + +#include "commonheaders.h" + +extern void *(*MirandaMalloc)(size_t size); +extern void *(*MirandaRealloc)(void *data, size_t newSize); +extern void (*MirandaFree) (void *data); + +void InitializeMirandaMemFunctions(); +void DestroyMirandaMemFunctions(); + +#endif \ No newline at end of file diff --git a/plugins/IEHistory/src/resource.h b/plugins/IEHistory/src/resource.h new file mode 100644 index 0000000000..b240d149db --- /dev/null +++ b/plugins/IEHistory/src/resource.h @@ -0,0 +1,45 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by IEHistory.rc +// +#define IDD_HISTORY 101 +#define IDI_HISTORYICON 102 +#define IDD_OPT_HISTORY 103 +#define IDD_SEARCH 104 +#define IDC_CLOSE 1001 +#define IDC_IEVIEW_PLACEHOLDER 1010 +#define IDC_EVENTSNO_GROUPBOX 1011 +#define IDC_LOAD_ALL 1012 +#define IDC_LOAD_NUMBER 1013 +#define IDC_EVENTS_COUNT 1014 +#define IDC_LOAD_NUMBER_STATIC 1015 +#define IDC_PREV 1016 +#define IDC_NEXT 1017 +#define IDC_PAGE_NUMBER 1018 +#define IDC_STATUSBAR 1019 +#define IDC_SHOW_LAST_FIRST 1021 +#define IDC_MISC_GROUPBOX 1022 +#define IDC_ENABLE_RTL 1023 +#define IDC_FIND_NEXT 1024 +#define IDC_TABS 1025 +#define IDC_SEARCH 1026 +#define IDC_SEARCH_TEXT_STATIC 1027 +#define IDC_SEARCH_TEXT 1028 +#define IDC_DIRECTION_GROUPBOX 1032 +#define IDC_DIRECTION_UP 1033 +#define IDC_DIRECTION_DOWN 1034 +#define IDC_SEARCH_DATE 1035 +#define IDC_SEARCH_TIME 1038 +#define IDC_WORKER_THREAD 1039 +#define IDC_LOAD_BACKGROUND 1039 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 105 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1040 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/plugins/IEHistory/src/services.cpp b/plugins/IEHistory/src/services.cpp new file mode 100644 index 0000000000..5683eecda8 --- /dev/null +++ b/plugins/IEHistory/src/services.cpp @@ -0,0 +1,62 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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 "services.h" + +HANDLE hShowHistory; + +int InitServices() +{ + hShowHistory = CreateServiceFunction(MS_HISTORY_SHOWCONTACTHISTORY, ShowContactHistoryService); + return 0; +} + +int DestroyServices() +{ + DestroyServiceFunction(hShowHistory); + return 0; +} + +int ShowContactHistoryService(WPARAM wParam, LPARAM lParam) +{ + Log("%s", "Entering function " __FUNCTION__); + HWND historyDlg; + HWND parent = NULL; + historyDlg = WindowList_Find(hOpenWindowsList, (HANDLE) wParam); + if (historyDlg == NULL) + { + int count = DBGetContactSettingDword(NULL, ModuleName, "EventsToLoad", 0); + int loadInBackground = DBGetContactSettingByte(NULL, ModuleName, "UseWorkerThread", 0); + HistoryWindowData *data; + data = (HistoryWindowData *) malloc(sizeof(HistoryWindowData)); + data->hContact = (HANDLE) wParam; + data->hIEView = NULL; + data->itemsPerPage = count; + data->index = 0; + data->count = 0; + data->loadMethod = (loadInBackground) ? LOAD_IN_BACKGROUND : 0; + historyDlg = CreateDialog(hInstance, MAKEINTRESOURCE(IDD_HISTORY), parent, HistoryDlgProc); + SetWindowLong(historyDlg, DWL_USER, (LONG) data); + + WindowList_Add(hOpenWindowsList, historyDlg, (HANDLE) wParam); + } + ShowWindow(historyDlg, SW_SHOW); + return 0; +} \ No newline at end of file diff --git a/plugins/IEHistory/src/services.h b/plugins/IEHistory/src/services.h new file mode 100644 index 0000000000..40e680a04e --- /dev/null +++ b/plugins/IEHistory/src/services.h @@ -0,0 +1,32 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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. +*/ + +#ifndef M_IEHISTORY_PROVIDED_SERVICES_H +#define M_IEHISTORY_PROVIDED_SERVICES_H + +#include "commonheaders.h" +#include "dlgHandlers.h" + +int InitServices(); +int DestroyServices(); + +int ShowContactHistoryService(WPARAM wParam, LPARAM lParam); + +#endif //M_IEHISTORY_PROVIDED_SERVICES_H \ No newline at end of file diff --git a/plugins/IEHistory/src/stdafx.cpp b/plugins/IEHistory/src/stdafx.cpp new file mode 100644 index 0000000000..2731c2b8c3 --- /dev/null +++ b/plugins/IEHistory/src/stdafx.cpp @@ -0,0 +1,25 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file diff --git a/plugins/IEHistory/src/stdafx.h b/plugins/IEHistory/src/stdafx.h new file mode 100644 index 0000000000..fe90144550 --- /dev/null +++ b/plugins/IEHistory/src/stdafx.h @@ -0,0 +1,47 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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. +*/ + +#pragma once + +// Modify the following defines if you have to target a platform prior to the ones specified below. +// Refer to MSDN for the latest info on corresponding values for different platforms. +#ifndef WINVER // Allow use of features specific to Windows XP or later. +#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. +#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. +#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. +#endif + +#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. +#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. +#endif + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files: +#include + + + +// TODO: reference additional headers your program requires here diff --git a/plugins/IEHistory/src/utils.cpp b/plugins/IEHistory/src/utils.cpp new file mode 100644 index 0000000000..91577e698f --- /dev/null +++ b/plugins/IEHistory/src/utils.cpp @@ -0,0 +1,330 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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 "commonheaders.h" + +int LogInit() +{ +#ifdef _DEBUG + FILE *fout = fopen("IEHistory.log", "wt"); + fclose(fout); +#endif + return 0; +} + +int Log(char *format, ...) +{ +#ifdef _DEBUG + char str[4096]; + va_list vararg; + int tBytes; + FILE *fout = fopen("IEHistory.log", "at"); + if (!fout) + { +// MessageBox(0, "can't open file", NULL, MB_OK); + } + + va_start(vararg, format); + + tBytes = _vsnprintf(str, sizeof(str), format, vararg); + if (tBytes > 0) + { + str[tBytes] = 0; + } + + va_end(vararg); + if (str[strlen(str) - 1] != '\n') + { + strcat(str, "\n"); + } + fputs(str, fout); + fclose(fout); +#endif + return 0; + +} + + + +int Info(char *title, char *format, ...) +{ + char str[4096]; + va_list vararg; + int tBytes; + va_start(vararg, format); + tBytes = _snprintf(str, sizeof(str), format, vararg); + if (tBytes > 0) + { + str[tBytes] = 0; + } + va_end(vararg); + return MessageBoxA(0, str, title, MB_OK | MB_ICONINFORMATION); +} + +/* +returns the name of a contact +*/ + +#pragma warning (disable: 4312) +TCHAR *GetContactName(HANDLE hContact, char *szProto) +{ + CONTACTINFO ctInfo; + int ret; + + ZeroMemory((void *) &ctInfo, sizeof(ctInfo)); + ctInfo.cbSize = sizeof(ctInfo); + ctInfo.szProto = szProto; + ctInfo.dwFlag = CNF_DISPLAY; +#ifdef _UNICODE + ctInfo.dwFlag += CNF_UNICODE; +#endif + ctInfo.hContact = hContact; + //_debug_message("retrieving contact name for %d", hContact); + ret = CallService(MS_CONTACT_GETCONTACTINFO, 0, (LPARAM) &ctInfo); + //_debug_message(" contact name %s", ctInfo.pszVal); + TCHAR *buffer; + if (!ret) + { + buffer = _tcsdup(ctInfo.pszVal); + } + else{ + return NULL; + } + MirandaFree(ctInfo.pszVal); + if (!ret) + { + return buffer; + } + else{ + return NULL; + } + return buffer; +} +#pragma warning (default: 4312) + +/* +Moves a control with regard to certain anchors (like delphi, c#, ...) +Somebody please improve on this code ... +*/ + +void ScreenToClient(HWND hWnd, LPRECT rect) +{ + POINT pt; + int cx = rect->right - rect->left; + int cy = rect->bottom - rect->top; + pt.x = rect->left; + pt.y = rect->top; + ScreenToClient(hWnd, &pt); + rect->left = pt.x; + rect->top = pt.y; + rect->right = pt.x + cx; + rect->bottom = pt.y + cy; +} + +void AnchorMoveWindow(HWND window, const WINDOWPOS *parentPos, int anchors) +{ + RECT rParent; + RECT rChild; + + if (parentPos->flags & SWP_NOSIZE) + { + return; + } + GetWindowRect(parentPos->hwnd, &rParent); + rChild = AnchorCalcPos(window, &rParent, parentPos, anchors); + MoveWindow(window, rChild.left, rChild.top, rChild.right - rChild.left, rChild.bottom - rChild.top, FALSE); +} + +RECT AnchorCalcPos(HWND window, const RECT *rParent, const WINDOWPOS *parentPos, int anchors) +{ + RECT rChild; + RECT rTmp; + + GetWindowRect(window, &rChild); + ScreenToClient(parentPos->hwnd, &rChild); + + int cx = rParent->right - rParent->left; + int cy = rParent->bottom - rParent->top; + if ((cx == parentPos->cx) && (cy == parentPos->cy)) + { + return rChild; + } + if (parentPos->flags & SWP_NOSIZE) + { + return rChild; + } + + rTmp.left = parentPos->x - rParent->left; + rTmp.right = (parentPos->x + parentPos->cx) - rParent->right; + rTmp.bottom = (parentPos->y + parentPos->cy) - rParent->bottom; + rTmp.top = parentPos->y - rParent->top; + + cx = (rTmp.left) ? -rTmp.left : rTmp.right; + cy = (rTmp.top) ? -rTmp.top : rTmp.bottom; + + rChild.right += cx; + rChild.bottom += cy; + //expanded the window accordingly, now we need to enforce the anchors + if ((anchors & ANCHOR_LEFT) && (!(anchors & ANCHOR_RIGHT))) + { + rChild.right -= cx; + } + if ((anchors & ANCHOR_TOP) && (!(anchors & ANCHOR_BOTTOM))) + { + rChild.bottom -= cy; + } + if ((anchors & ANCHOR_RIGHT) && (!(anchors & ANCHOR_LEFT))) + { + rChild.left += cx; + } + if ((anchors & ANCHOR_BOTTOM) && (!(anchors & ANCHOR_TOP))) + { + rChild.top += cy; + } + return rChild; +} + +#pragma warning (disable: 4244) +void UnixTimeToFileTime(time_t t, LPFILETIME pft) +{ + // Note that LONGLONG is a 64-bit value + LONGLONG ll; + + ll = Int32x32To64(t, 10000000) + 116444736000000000; + pft->dwLowDateTime = (DWORD)ll; + pft->dwHighDateTime = ll >> 32; +} +#pragma warning (default: 4244) + +void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst) +{ + FILETIME ft; + SYSTEMTIME st; + UnixTimeToFileTime(t, &ft); + FileTimeToSystemTime(&ft, &st); + SystemTimeToTzSpecificLocalTime(NULL, &st, pst); +} + +HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int index, int direction) +{ + int i; + HANDLE hEvent = hLastFirstEvent; + const char *service; + if (direction == DIRECTION_BACK) + { + service = MS_DB_EVENT_FINDPREV; + } + else{ + service = MS_DB_EVENT_FINDNEXT; + } + + for (i = 0; i < index; i++) + { + hEvent = (HANDLE) CallService(service, (WPARAM) hEvent, 0); + } + return hEvent; +} + +SearchResult SearchHistory(HANDLE hContact, HANDLE hFirstEvent, void *searchData, int direction, int type) +{ + if (hFirstEvent == NULL) + { + const char *service = (direction == DIRECTION_BACK) ? MS_DB_EVENT_FINDLAST : MS_DB_EVENT_FINDFIRST; + hFirstEvent = (HANDLE) CallService(service, (WPARAM) hContact, 0); + } + int index = 0; + HANDLE hEvent = hFirstEvent; + void *buffer = NULL; + TCHAR *search; + wchar_t TEMP[2048]; + bool found = false; + int oldSize, newSize; + oldSize = newSize = 0; + + DBEVENTINFO dbEvent = {0}; + dbEvent.cbSize = sizeof(dbEvent); + + while ((!found) && (hEvent)) + { + newSize = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM) hEvent, 0); + if (newSize > oldSize) + { + buffer = (TCHAR *) realloc(buffer, newSize); + oldSize = newSize; + } + dbEvent.pBlob = (PBYTE) buffer; + dbEvent.cbBlob = newSize; + if (CallService(MS_DB_EVENT_GET, (WPARAM) hEvent, (LPARAM) &dbEvent) == 0) //successful + { + switch (type) + { + case SEARCH_TEXT: + { +#ifdef _UNICODE + unsigned int size = strlen((char *) dbEvent.pBlob) + 1; + if (size < dbEvent.cbBlob) + { + search = (wchar_t *) &dbEvent.pBlob[size]; + } + else{ + MultiByteToWideChar(CP_ACP, 0, (char *) buffer, size, TEMP, 2048); + search = TEMP; + } +#else + search = (char *) buffer; +#endif + TCHAR *data = (TCHAR *) searchData; + TCHAR *tmp = _tcsstr(search, data); + if (tmp) + { + found = true; + } + break; + } + case SEARCH_TIME: + { + SYSTEMTIME time; + TimeSearchData *data = (TimeSearchData *) searchData; + UnixTimeToSystemTime((time_t) dbEvent.timestamp, &time); + found = ((data->flags & TSDF_DATE_SET) || (data->flags & TSDF_TIME_SET)) ? true : false; + if (data->flags & TSDF_DATE_SET) + { + found = ((time.wYear == data->time.wYear) && (time.wMonth == data->time.wMonth) && (time.wDay == data->time.wDay)); + } + if (data->flags & TSDF_TIME_SET) + { + found = found & ((time.wHour == data->time.wHour) && (time.wMinute == data->time.wMinute)); + } + break; + } + } + } + if (!found) + { + hEvent = GetNeededEvent(hEvent, 1, direction); + index++; + } + } + free(buffer); + SearchResult sr; + sr.index = index; + sr.hEvent = hEvent; + return sr; +} \ No newline at end of file diff --git a/plugins/IEHistory/src/utils.h b/plugins/IEHistory/src/utils.h new file mode 100644 index 0000000000..c423b4ede7 --- /dev/null +++ b/plugins/IEHistory/src/utils.h @@ -0,0 +1,97 @@ +/* +IEView history viewer plugin for Miranda IM + +Copyright © 2005-2006 Cristian Libotean + +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. +*/ + +#ifndef M_IEHISTORY_UTILS_H +#define M_IEHISTORY_UTILS_H + +#include "stdafx.h" +#include "time.h" + +#define ANCHOR_LEFT 0x000001 +#define ANCHOR_RIGHT 0x000002 +#define ANCHOR_TOP 0x000004 +#define ANCHOR_BOTTOM 0x000008 +#define ANCHOR_ALL ANCHOR_LEFT | ANCHOR_RIGHT | ANCHOR_TOP | ANCHOR_BOTTOM + +#define DIRECTION_BACK 0x000001 +#define DIRECTION_FORWARD 0x000002 + +#define SEARCH_TEXT 0x000001 +#define SEARCH_TIME 0x000002 + +/* +#define SIDE_LEFT 0x000001 +#define SIDE_TOP 0x000002 +#define SIDE_RIGHT 0x000004 +#define SIDE_BOTTOM 0x000008 +#define SIDE_TOPLEFT SIDE_TOP | SIDE_LEFT +#define SIDE_TOPRIGHT SIDE_TOP | SIDE_RIGHT +#define SIDE_BOTTOMLEFT SIDE_BOTTOM | SIDE_LEFT +#define SIDE_BOTTOMRIGHT SIDE_BOTTOM | SIDE_RIGHT +*/ + +#define TSDF_TIME_SET 0x00000001 +#define TSDF_DATE_SET 0x00000002 + +struct TimeSearchData{ + int flags; + SYSTEMTIME time; +}; + +struct SearchResult{ + long index; + HANDLE hEvent; +}; + +//#ifdef _DEBUG +int LogInit(); +int Log(char *format, ...); +//#endif + +void ScreenToClient(HWND hWnd, LPRECT rect); + +int Info(char *title, char *format, ...); +TCHAR *GetContactName(HANDLE hContact, char *szProto); +void AnchorMoveWindow(HWND window, const WINDOWPOS *parentPos, int anchors); +RECT AnchorCalcPos(HWND window, const RECT *rParent, const WINDOWPOS *parentPos, int anchors); + +void UnixTimeToFileTime(time_t t, LPFILETIME pft); +void UnixTimeToSystemTime(time_t t, LPSYSTEMTIME pst); + +HANDLE GetNeededEvent(HANDLE hLastFirstEvent, int index, int direction); +SearchResult SearchHistory(HANDLE hContact, HANDLE hFirstEvent, void *searchData, int direction, int type); + +extern void *(*MirandaMalloc)(size_t size); +extern void *(*MirandaRealloc)(void *data, size_t newSize); +extern void (*MirandaFree) (void *data); + +/* +static __inline int mir_snprintf(char *buffer, size_t count, const char* fmt, ...) { + va_list va; + int len; + + va_start(va, fmt); + len = _vsnprintf(buffer, count-1, fmt, va); + va_end(va); + buffer[count-1] = 0; + return len; +} +*/ +#endif \ No newline at end of file diff --git a/plugins/IEHistory/src/version.h b/plugins/IEHistory/src/version.h new file mode 100644 index 0000000000..204fd10561 --- /dev/null +++ b/plugins/IEHistory/src/version.h @@ -0,0 +1,53 @@ +/* +Bonsai plugin for Miranda IM + +Copyright © 2006 Cristian Libotean + +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. +*/ + +#ifndef M_IEHISTORY_VERSION_H +#define M_IEHISTORY_VERSION_H + +#define __MAJOR_VERSION 0 +#define __MINOR_VERSION 0 +#define __RELEASE_NUM 1 +#define __BUILD_NUM 4 + +#define VERSION PLUGIN_MAKE_VERSION(__MAJOR_VERSION, __MINOR_VERSION, __RELEASE_NUM, __BUILD_NUM) + +#define __PLUGINVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM +#define __PLUGINVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM +#define __STRINGIFY_(x) #x +#define __STRINGIFY(x) __STRINGIFY_(x) +#define __VERSION_STRING __STRINGIFY(__PLUGINVERSION_STRING_DOTS) + +#ifdef _UNICODE +#define __DESC "IEView history viewer for unicode cores." +#else +#define __DESC "IEView history viewer for non unicode cores." +#endif +#define __AUTHOR "Cristian Libotean" +#define __AUTHOREMAIL "eblis102@yahoo.com" +#define __COPYRIGHT "© 2006 Cristian Libotean" +#define __AUTHORWEB "http://www.miranda-im.org/" + +#ifdef _UNICODE +#define __PLUGIN_DISPLAY_NAME "IEView History Viewer (Unicode)" +#else +#define __PLUGIN_DISPLAY_NAME "IEView History Viewer" +#endif + +#endif //M_IEHISTORY_VERSION_H diff --git a/plugins/IEHistory/symbols_exclude.txt b/plugins/IEHistory/symbols_exclude.txt deleted file mode 100644 index 361cf2448b..0000000000 --- a/plugins/IEHistory/symbols_exclude.txt +++ /dev/null @@ -1 +0,0 @@ -vc80.pdb \ No newline at end of file -- cgit v1.2.3